mailtrain/client/static/mosaico/vendor/themes/mobile/theme.js
Tomas Bures 63765f7222 Client's public folder renamed to static
Regular campaign sender seems to have most of the code in place. (Not tested.)
2018-09-18 10:30:13 +02:00

14416 lines
487 KiB
JavaScript

(function () {
var mobile = (function () {
'use strict';
var noop = function () {
};
var noarg = function (f) {
return function () {
return f();
};
};
var compose = function (fa, fb) {
return function () {
return fa(fb.apply(null, arguments));
};
};
var constant = function (value) {
return function () {
return value;
};
};
var identity = function (x) {
return x;
};
var tripleEquals = function (a, b) {
return a === b;
};
var curry = function (f) {
var args = new Array(arguments.length - 1);
for (var i = 1; i < arguments.length; i++)
args[i - 1] = arguments[i];
return function () {
var newArgs = new Array(arguments.length);
for (var j = 0; j < newArgs.length; j++)
newArgs[j] = arguments[j];
var all = args.concat(newArgs);
return f.apply(null, all);
};
};
var not = function (f) {
return function () {
return !f.apply(null, arguments);
};
};
var die = function (msg) {
return function () {
throw new Error(msg);
};
};
var apply = function (f) {
return f();
};
var call = function (f) {
f();
};
var never = constant(false);
var always = constant(true);
var $_9njj9iwjjdud7eix = {
noop: noop,
noarg: noarg,
compose: compose,
constant: constant,
identity: identity,
tripleEquals: tripleEquals,
curry: curry,
not: not,
die: die,
apply: apply,
call: call,
never: never,
always: always
};
var $_brmbwvwijdud7eiu = {
contextmenu: $_9njj9iwjjdud7eix.constant('contextmenu'),
touchstart: $_9njj9iwjjdud7eix.constant('touchstart'),
touchmove: $_9njj9iwjjdud7eix.constant('touchmove'),
touchend: $_9njj9iwjjdud7eix.constant('touchend'),
gesturestart: $_9njj9iwjjdud7eix.constant('gesturestart'),
mousedown: $_9njj9iwjjdud7eix.constant('mousedown'),
mousemove: $_9njj9iwjjdud7eix.constant('mousemove'),
mouseout: $_9njj9iwjjdud7eix.constant('mouseout'),
mouseup: $_9njj9iwjjdud7eix.constant('mouseup'),
mouseover: $_9njj9iwjjdud7eix.constant('mouseover'),
focusin: $_9njj9iwjjdud7eix.constant('focusin'),
keydown: $_9njj9iwjjdud7eix.constant('keydown'),
input: $_9njj9iwjjdud7eix.constant('input'),
change: $_9njj9iwjjdud7eix.constant('change'),
focus: $_9njj9iwjjdud7eix.constant('focus'),
click: $_9njj9iwjjdud7eix.constant('click'),
transitionend: $_9njj9iwjjdud7eix.constant('transitionend'),
selectstart: $_9njj9iwjjdud7eix.constant('selectstart')
};
var cached = function (f) {
var called = false;
var r;
return function () {
if (!called) {
called = true;
r = f.apply(null, arguments);
}
return r;
};
};
var $_2nf0bewljdud7ej2 = { cached: cached };
var firstMatch = function (regexes, s) {
for (var i = 0; i < regexes.length; i++) {
var x = regexes[i];
if (x.test(s))
return x;
}
return undefined;
};
var find = function (regexes, agent) {
var r = firstMatch(regexes, agent);
if (!r)
return {
major: 0,
minor: 0
};
var group = function (i) {
return Number(agent.replace(r, '$' + i));
};
return nu(group(1), group(2));
};
var detect = function (versionRegexes, agent) {
var cleanedAgent = String(agent).toLowerCase();
if (versionRegexes.length === 0)
return unknown();
return find(versionRegexes, cleanedAgent);
};
var unknown = function () {
return nu(0, 0);
};
var nu = function (major, minor) {
return {
major: major,
minor: minor
};
};
var $_f0l90ewojdud7ej7 = {
nu: nu,
detect: detect,
unknown: unknown
};
var edge = 'Edge';
var chrome = 'Chrome';
var ie = 'IE';
var opera = 'Opera';
var firefox = 'Firefox';
var safari = 'Safari';
var isBrowser = function (name, current) {
return function () {
return current === name;
};
};
var unknown$1 = function () {
return nu$1({
current: undefined,
version: $_f0l90ewojdud7ej7.unknown()
});
};
var nu$1 = function (info) {
var current = info.current;
var version = info.version;
return {
current: current,
version: version,
isEdge: isBrowser(edge, current),
isChrome: isBrowser(chrome, current),
isIE: isBrowser(ie, current),
isOpera: isBrowser(opera, current),
isFirefox: isBrowser(firefox, current),
isSafari: isBrowser(safari, current)
};
};
var $_b24lawnjdud7ej4 = {
unknown: unknown$1,
nu: nu$1,
edge: $_9njj9iwjjdud7eix.constant(edge),
chrome: $_9njj9iwjjdud7eix.constant(chrome),
ie: $_9njj9iwjjdud7eix.constant(ie),
opera: $_9njj9iwjjdud7eix.constant(opera),
firefox: $_9njj9iwjjdud7eix.constant(firefox),
safari: $_9njj9iwjjdud7eix.constant(safari)
};
var windows = 'Windows';
var ios = 'iOS';
var android = 'Android';
var linux = 'Linux';
var osx = 'OSX';
var solaris = 'Solaris';
var freebsd = 'FreeBSD';
var isOS = function (name, current) {
return function () {
return current === name;
};
};
var unknown$2 = function () {
return nu$2({
current: undefined,
version: $_f0l90ewojdud7ej7.unknown()
});
};
var nu$2 = function (info) {
var current = info.current;
var version = info.version;
return {
current: current,
version: version,
isWindows: isOS(windows, current),
isiOS: isOS(ios, current),
isAndroid: isOS(android, current),
isOSX: isOS(osx, current),
isLinux: isOS(linux, current),
isSolaris: isOS(solaris, current),
isFreeBSD: isOS(freebsd, current)
};
};
var $_7etfbawpjdud7ejh = {
unknown: unknown$2,
nu: nu$2,
windows: $_9njj9iwjjdud7eix.constant(windows),
ios: $_9njj9iwjjdud7eix.constant(ios),
android: $_9njj9iwjjdud7eix.constant(android),
linux: $_9njj9iwjjdud7eix.constant(linux),
osx: $_9njj9iwjjdud7eix.constant(osx),
solaris: $_9njj9iwjjdud7eix.constant(solaris),
freebsd: $_9njj9iwjjdud7eix.constant(freebsd)
};
function DeviceType (os, browser, userAgent) {
var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;
var isiPhone = os.isiOS() && !isiPad;
var isAndroid3 = os.isAndroid() && os.version.major === 3;
var isAndroid4 = os.isAndroid() && os.version.major === 4;
var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;
var isTouch = os.isiOS() || os.isAndroid();
var isPhone = isTouch && !isTablet;
var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;
return {
isiPad: $_9njj9iwjjdud7eix.constant(isiPad),
isiPhone: $_9njj9iwjjdud7eix.constant(isiPhone),
isTablet: $_9njj9iwjjdud7eix.constant(isTablet),
isPhone: $_9njj9iwjjdud7eix.constant(isPhone),
isTouch: $_9njj9iwjjdud7eix.constant(isTouch),
isAndroid: os.isAndroid,
isiOS: os.isiOS,
isWebView: $_9njj9iwjjdud7eix.constant(iOSwebview)
};
}
var never$1 = $_9njj9iwjjdud7eix.never;
var always$1 = $_9njj9iwjjdud7eix.always;
var none = function () {
return NONE;
};
var NONE = function () {
var eq = function (o) {
return o.isNone();
};
var call = function (thunk) {
return thunk();
};
var id = function (n) {
return n;
};
var noop = function () {
};
var me = {
fold: function (n, s) {
return n();
},
is: never$1,
isSome: never$1,
isNone: always$1,
getOr: id,
getOrThunk: call,
getOrDie: function (msg) {
throw new Error(msg || 'error: getOrDie called on none.');
},
or: id,
orThunk: call,
map: none,
ap: none,
each: noop,
bind: none,
flatten: none,
exists: never$1,
forall: always$1,
filter: none,
equals: eq,
equals_: eq,
toArray: function () {
return [];
},
toString: $_9njj9iwjjdud7eix.constant('none()')
};
if (Object.freeze)
Object.freeze(me);
return me;
}();
var some = function (a) {
var constant_a = function () {
return a;
};
var self = function () {
return me;
};
var map = function (f) {
return some(f(a));
};
var bind = function (f) {
return f(a);
};
var me = {
fold: function (n, s) {
return s(a);
},
is: function (v) {
return a === v;
},
isSome: always$1,
isNone: never$1,
getOr: constant_a,
getOrThunk: constant_a,
getOrDie: constant_a,
or: self,
orThunk: self,
map: map,
ap: function (optfab) {
return optfab.fold(none, function (fab) {
return some(fab(a));
});
},
each: function (f) {
f(a);
},
bind: bind,
flatten: constant_a,
exists: bind,
forall: bind,
filter: function (f) {
return f(a) ? me : NONE;
},
equals: function (o) {
return o.is(a);
},
equals_: function (o, elementEq) {
return o.fold(never$1, function (b) {
return elementEq(a, b);
});
},
toArray: function () {
return [a];
},
toString: function () {
return 'some(' + a + ')';
}
};
return me;
};
var from = function (value) {
return value === null || value === undefined ? NONE : some(value);
};
var Option = {
some: some,
none: none,
from: from
};
var rawIndexOf = function () {
var pIndexOf = Array.prototype.indexOf;
var fastIndex = function (xs, x) {
return pIndexOf.call(xs, x);
};
var slowIndex = function (xs, x) {
return slowIndexOf(xs, x);
};
return pIndexOf === undefined ? slowIndex : fastIndex;
}();
var indexOf = function (xs, x) {
var r = rawIndexOf(xs, x);
return r === -1 ? Option.none() : Option.some(r);
};
var contains = function (xs, x) {
return rawIndexOf(xs, x) > -1;
};
var exists = function (xs, pred) {
return findIndex(xs, pred).isSome();
};
var range = function (num, f) {
var r = [];
for (var i = 0; i < num; i++) {
r.push(f(i));
}
return r;
};
var chunk = function (array, size) {
var r = [];
for (var i = 0; i < array.length; i += size) {
var s = array.slice(i, i + size);
r.push(s);
}
return r;
};
var map = function (xs, f) {
var len = xs.length;
var r = new Array(len);
for (var i = 0; i < len; i++) {
var x = xs[i];
r[i] = f(x, i, xs);
}
return r;
};
var each = function (xs, f) {
for (var i = 0, len = xs.length; i < len; i++) {
var x = xs[i];
f(x, i, xs);
}
};
var eachr = function (xs, f) {
for (var i = xs.length - 1; i >= 0; i--) {
var x = xs[i];
f(x, i, xs);
}
};
var partition = function (xs, pred) {
var pass = [];
var fail = [];
for (var i = 0, len = xs.length; i < len; i++) {
var x = xs[i];
var arr = pred(x, i, xs) ? pass : fail;
arr.push(x);
}
return {
pass: pass,
fail: fail
};
};
var filter = function (xs, pred) {
var r = [];
for (var i = 0, len = xs.length; i < len; i++) {
var x = xs[i];
if (pred(x, i, xs)) {
r.push(x);
}
}
return r;
};
var groupBy = function (xs, f) {
if (xs.length === 0) {
return [];
} else {
var wasType = f(xs[0]);
var r = [];
var group = [];
for (var i = 0, len = xs.length; i < len; i++) {
var x = xs[i];
var type = f(x);
if (type !== wasType) {
r.push(group);
group = [];
}
wasType = type;
group.push(x);
}
if (group.length !== 0) {
r.push(group);
}
return r;
}
};
var foldr = function (xs, f, acc) {
eachr(xs, function (x) {
acc = f(acc, x);
});
return acc;
};
var foldl = function (xs, f, acc) {
each(xs, function (x) {
acc = f(acc, x);
});
return acc;
};
var find$1 = function (xs, pred) {
for (var i = 0, len = xs.length; i < len; i++) {
var x = xs[i];
if (pred(x, i, xs)) {
return Option.some(x);
}
}
return Option.none();
};
var findIndex = function (xs, pred) {
for (var i = 0, len = xs.length; i < len; i++) {
var x = xs[i];
if (pred(x, i, xs)) {
return Option.some(i);
}
}
return Option.none();
};
var slowIndexOf = function (xs, x) {
for (var i = 0, len = xs.length; i < len; ++i) {
if (xs[i] === x) {
return i;
}
}
return -1;
};
var push = Array.prototype.push;
var flatten = function (xs) {
var r = [];
for (var i = 0, len = xs.length; i < len; ++i) {
if (!Array.prototype.isPrototypeOf(xs[i]))
throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);
push.apply(r, xs[i]);
}
return r;
};
var bind = function (xs, f) {
var output = map(xs, f);
return flatten(output);
};
var forall = function (xs, pred) {
for (var i = 0, len = xs.length; i < len; ++i) {
var x = xs[i];
if (pred(x, i, xs) !== true) {
return false;
}
}
return true;
};
var equal = function (a1, a2) {
return a1.length === a2.length && forall(a1, function (x, i) {
return x === a2[i];
});
};
var slice = Array.prototype.slice;
var reverse = function (xs) {
var r = slice.call(xs, 0);
r.reverse();
return r;
};
var difference = function (a1, a2) {
return filter(a1, function (x) {
return !contains(a2, x);
});
};
var mapToObject = function (xs, f) {
var r = {};
for (var i = 0, len = xs.length; i < len; i++) {
var x = xs[i];
r[String(x)] = f(x, i);
}
return r;
};
var pure = function (x) {
return [x];
};
var sort = function (xs, comparator) {
var copy = slice.call(xs, 0);
copy.sort(comparator);
return copy;
};
var head = function (xs) {
return xs.length === 0 ? Option.none() : Option.some(xs[0]);
};
var last = function (xs) {
return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]);
};
var $_1g2cevwsjdud7ejp = {
map: map,
each: each,
eachr: eachr,
partition: partition,
filter: filter,
groupBy: groupBy,
indexOf: indexOf,
foldr: foldr,
foldl: foldl,
find: find$1,
findIndex: findIndex,
flatten: flatten,
bind: bind,
forall: forall,
exists: exists,
contains: contains,
equal: equal,
reverse: reverse,
chunk: chunk,
difference: difference,
mapToObject: mapToObject,
pure: pure,
sort: sort,
range: range,
head: head,
last: last
};
var detect$1 = function (candidates, userAgent) {
var agent = String(userAgent).toLowerCase();
return $_1g2cevwsjdud7ejp.find(candidates, function (candidate) {
return candidate.search(agent);
});
};
var detectBrowser = function (browsers, userAgent) {
return detect$1(browsers, userAgent).map(function (browser) {
var version = $_f0l90ewojdud7ej7.detect(browser.versionRegexes, userAgent);
return {
current: browser.name,
version: version
};
});
};
var detectOs = function (oses, userAgent) {
return detect$1(oses, userAgent).map(function (os) {
var version = $_f0l90ewojdud7ej7.detect(os.versionRegexes, userAgent);
return {
current: os.name,
version: version
};
});
};
var $_72dxucwrjdud7ejm = {
detectBrowser: detectBrowser,
detectOs: detectOs
};
var addToStart = function (str, prefix) {
return prefix + str;
};
var addToEnd = function (str, suffix) {
return str + suffix;
};
var removeFromStart = function (str, numChars) {
return str.substring(numChars);
};
var removeFromEnd = function (str, numChars) {
return str.substring(0, str.length - numChars);
};
var $_2u10wgwwjdud7ek7 = {
addToStart: addToStart,
addToEnd: addToEnd,
removeFromStart: removeFromStart,
removeFromEnd: removeFromEnd
};
var first = function (str, count) {
return str.substr(0, count);
};
var last$1 = function (str, count) {
return str.substr(str.length - count, str.length);
};
var head$1 = function (str) {
return str === '' ? Option.none() : Option.some(str.substr(0, 1));
};
var tail = function (str) {
return str === '' ? Option.none() : Option.some(str.substring(1));
};
var $_elr1mrwxjdud7ek8 = {
first: first,
last: last$1,
head: head$1,
tail: tail
};
var checkRange = function (str, substr, start) {
if (substr === '')
return true;
if (str.length < substr.length)
return false;
var x = str.substr(start, start + substr.length);
return x === substr;
};
var supplant = function (str, obj) {
var isStringOrNumber = function (a) {
var t = typeof a;
return t === 'string' || t === 'number';
};
return str.replace(/\${([^{}]*)}/g, function (a, b) {
var value = obj[b];
return isStringOrNumber(value) ? value : a;
});
};
var removeLeading = function (str, prefix) {
return startsWith(str, prefix) ? $_2u10wgwwjdud7ek7.removeFromStart(str, prefix.length) : str;
};
var removeTrailing = function (str, prefix) {
return endsWith(str, prefix) ? $_2u10wgwwjdud7ek7.removeFromEnd(str, prefix.length) : str;
};
var ensureLeading = function (str, prefix) {
return startsWith(str, prefix) ? str : $_2u10wgwwjdud7ek7.addToStart(str, prefix);
};
var ensureTrailing = function (str, prefix) {
return endsWith(str, prefix) ? str : $_2u10wgwwjdud7ek7.addToEnd(str, prefix);
};
var contains$1 = function (str, substr) {
return str.indexOf(substr) !== -1;
};
var capitalize = function (str) {
return $_elr1mrwxjdud7ek8.head(str).bind(function (head) {
return $_elr1mrwxjdud7ek8.tail(str).map(function (tail) {
return head.toUpperCase() + tail;
});
}).getOr(str);
};
var startsWith = function (str, prefix) {
return checkRange(str, prefix, 0);
};
var endsWith = function (str, suffix) {
return checkRange(str, suffix, str.length - suffix.length);
};
var trim = function (str) {
return str.replace(/^\s+|\s+$/g, '');
};
var lTrim = function (str) {
return str.replace(/^\s+/g, '');
};
var rTrim = function (str) {
return str.replace(/\s+$/g, '');
};
var $_2e2eauwvjdud7ek5 = {
supplant: supplant,
startsWith: startsWith,
removeLeading: removeLeading,
removeTrailing: removeTrailing,
ensureLeading: ensureLeading,
ensureTrailing: ensureTrailing,
endsWith: endsWith,
contains: contains$1,
trim: trim,
lTrim: lTrim,
rTrim: rTrim,
capitalize: capitalize
};
var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;
var checkContains = function (target) {
return function (uastring) {
return $_2e2eauwvjdud7ek5.contains(uastring, target);
};
};
var browsers = [
{
name: 'Edge',
versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
search: function (uastring) {
var monstrosity = $_2e2eauwvjdud7ek5.contains(uastring, 'edge/') && $_2e2eauwvjdud7ek5.contains(uastring, 'chrome') && $_2e2eauwvjdud7ek5.contains(uastring, 'safari') && $_2e2eauwvjdud7ek5.contains(uastring, 'applewebkit');
return monstrosity;
}
},
{
name: 'Chrome',
versionRegexes: [
/.*?chrome\/([0-9]+)\.([0-9]+).*/,
normalVersionRegex
],
search: function (uastring) {
return $_2e2eauwvjdud7ek5.contains(uastring, 'chrome') && !$_2e2eauwvjdud7ek5.contains(uastring, 'chromeframe');
}
},
{
name: 'IE',
versionRegexes: [
/.*?msie\ ?([0-9]+)\.([0-9]+).*/,
/.*?rv:([0-9]+)\.([0-9]+).*/
],
search: function (uastring) {
return $_2e2eauwvjdud7ek5.contains(uastring, 'msie') || $_2e2eauwvjdud7ek5.contains(uastring, 'trident');
}
},
{
name: 'Opera',
versionRegexes: [
normalVersionRegex,
/.*?opera\/([0-9]+)\.([0-9]+).*/
],
search: checkContains('opera')
},
{
name: 'Firefox',
versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],
search: checkContains('firefox')
},
{
name: 'Safari',
versionRegexes: [
normalVersionRegex,
/.*?cpu os ([0-9]+)_([0-9]+).*/
],
search: function (uastring) {
return ($_2e2eauwvjdud7ek5.contains(uastring, 'safari') || $_2e2eauwvjdud7ek5.contains(uastring, 'mobile/')) && $_2e2eauwvjdud7ek5.contains(uastring, 'applewebkit');
}
}
];
var oses = [
{
name: 'Windows',
search: checkContains('win'),
versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
},
{
name: 'iOS',
search: function (uastring) {
return $_2e2eauwvjdud7ek5.contains(uastring, 'iphone') || $_2e2eauwvjdud7ek5.contains(uastring, 'ipad');
},
versionRegexes: [
/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
/.*cpu os ([0-9]+)_([0-9]+).*/,
/.*cpu iphone os ([0-9]+)_([0-9]+).*/
]
},
{
name: 'Android',
search: checkContains('android'),
versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]
},
{
name: 'OSX',
search: checkContains('os x'),
versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]
},
{
name: 'Linux',
search: checkContains('linux'),
versionRegexes: []
},
{
name: 'Solaris',
search: checkContains('sunos'),
versionRegexes: []
},
{
name: 'FreeBSD',
search: checkContains('freebsd'),
versionRegexes: []
}
];
var $_96jjecwujdud7ek0 = {
browsers: $_9njj9iwjjdud7eix.constant(browsers),
oses: $_9njj9iwjjdud7eix.constant(oses)
};
var detect$2 = function (userAgent) {
var browsers = $_96jjecwujdud7ek0.browsers();
var oses = $_96jjecwujdud7ek0.oses();
var browser = $_72dxucwrjdud7ejm.detectBrowser(browsers, userAgent).fold($_b24lawnjdud7ej4.unknown, $_b24lawnjdud7ej4.nu);
var os = $_72dxucwrjdud7ejm.detectOs(oses, userAgent).fold($_7etfbawpjdud7ejh.unknown, $_7etfbawpjdud7ejh.nu);
var deviceType = DeviceType(os, browser, userAgent);
return {
browser: browser,
os: os,
deviceType: deviceType
};
};
var $_63bkauwmjdud7ej3 = { detect: detect$2 };
var detect$3 = $_2nf0bewljdud7ej2.cached(function () {
var userAgent = navigator.userAgent;
return $_63bkauwmjdud7ej3.detect(userAgent);
});
var $_chh2cvwkjdud7ej0 = { detect: detect$3 };
var alloy = { tap: $_9njj9iwjjdud7eix.constant('alloy.tap') };
var $_801kkqwhjdud7eiq = {
focus: $_9njj9iwjjdud7eix.constant('alloy.focus'),
postBlur: $_9njj9iwjjdud7eix.constant('alloy.blur.post'),
receive: $_9njj9iwjjdud7eix.constant('alloy.receive'),
execute: $_9njj9iwjjdud7eix.constant('alloy.execute'),
focusItem: $_9njj9iwjjdud7eix.constant('alloy.focus.item'),
tap: alloy.tap,
tapOrClick: $_chh2cvwkjdud7ej0.detect().deviceType.isTouch() ? alloy.tap : $_brmbwvwijdud7eiu.click,
longpress: $_9njj9iwjjdud7eix.constant('alloy.longpress'),
sandboxClose: $_9njj9iwjjdud7eix.constant('alloy.sandbox.close'),
systemInit: $_9njj9iwjjdud7eix.constant('alloy.system.init'),
windowScroll: $_9njj9iwjjdud7eix.constant('alloy.system.scroll'),
attachedToDom: $_9njj9iwjjdud7eix.constant('alloy.system.attached'),
detachedFromDom: $_9njj9iwjjdud7eix.constant('alloy.system.detached'),
changeTab: $_9njj9iwjjdud7eix.constant('alloy.change.tab'),
dismissTab: $_9njj9iwjjdud7eix.constant('alloy.dismiss.tab')
};
var typeOf = function (x) {
if (x === null)
return 'null';
var t = typeof x;
if (t === 'object' && Array.prototype.isPrototypeOf(x))
return 'array';
if (t === 'object' && String.prototype.isPrototypeOf(x))
return 'string';
return t;
};
var isType = function (type) {
return function (value) {
return typeOf(value) === type;
};
};
var $_9rljuwzjdud7ekb = {
isString: isType('string'),
isObject: isType('object'),
isArray: isType('array'),
isNull: isType('null'),
isBoolean: isType('boolean'),
isUndefined: isType('undefined'),
isFunction: isType('function'),
isNumber: isType('number')
};
var shallow = function (old, nu) {
return nu;
};
var deep = function (old, nu) {
var bothObjects = $_9rljuwzjdud7ekb.isObject(old) && $_9rljuwzjdud7ekb.isObject(nu);
return bothObjects ? deepMerge(old, nu) : nu;
};
var baseMerge = function (merger) {
return function () {
var objects = new Array(arguments.length);
for (var i = 0; i < objects.length; i++)
objects[i] = arguments[i];
if (objects.length === 0)
throw new Error('Can\'t merge zero objects');
var ret = {};
for (var j = 0; j < objects.length; j++) {
var curObject = objects[j];
for (var key in curObject)
if (curObject.hasOwnProperty(key)) {
ret[key] = merger(ret[key], curObject[key]);
}
}
return ret;
};
};
var deepMerge = baseMerge(deep);
var merge = baseMerge(shallow);
var $_73qnwowyjdud7ek9 = {
deepMerge: deepMerge,
merge: merge
};
var keys = function () {
var fastKeys = Object.keys;
var slowKeys = function (o) {
var r = [];
for (var i in o) {
if (o.hasOwnProperty(i)) {
r.push(i);
}
}
return r;
};
return fastKeys === undefined ? slowKeys : fastKeys;
}();
var each$1 = function (obj, f) {
var props = keys(obj);
for (var k = 0, len = props.length; k < len; k++) {
var i = props[k];
var x = obj[i];
f(x, i, obj);
}
};
var objectMap = function (obj, f) {
return tupleMap(obj, function (x, i, obj) {
return {
k: i,
v: f(x, i, obj)
};
});
};
var tupleMap = function (obj, f) {
var r = {};
each$1(obj, function (x, i) {
var tuple = f(x, i, obj);
r[tuple.k] = tuple.v;
});
return r;
};
var bifilter = function (obj, pred) {
var t = {};
var f = {};
each$1(obj, function (x, i) {
var branch = pred(x, i) ? t : f;
branch[i] = x;
});
return {
t: t,
f: f
};
};
var mapToArray = function (obj, f) {
var r = [];
each$1(obj, function (value, name) {
r.push(f(value, name));
});
return r;
};
var find$2 = function (obj, pred) {
var props = keys(obj);
for (var k = 0, len = props.length; k < len; k++) {
var i = props[k];
var x = obj[i];
if (pred(x, i, obj)) {
return Option.some(x);
}
}
return Option.none();
};
var values = function (obj) {
return mapToArray(obj, function (v) {
return v;
});
};
var size = function (obj) {
return values(obj).length;
};
var $_2dykn0x0jdud7ekc = {
bifilter: bifilter,
each: each$1,
map: objectMap,
mapToArray: mapToArray,
tupleMap: tupleMap,
find: find$2,
keys: keys,
values: values,
size: size
};
var emit = function (component, event) {
dispatchWith(component, component.element(), event, {});
};
var emitWith = function (component, event, properties) {
dispatchWith(component, component.element(), event, properties);
};
var emitExecute = function (component) {
emit(component, $_801kkqwhjdud7eiq.execute());
};
var dispatch = function (component, target, event) {
dispatchWith(component, target, event, {});
};
var dispatchWith = function (component, target, event, properties) {
var data = $_73qnwowyjdud7ek9.deepMerge({ target: target }, properties);
component.getSystem().triggerEvent(event, target, $_2dykn0x0jdud7ekc.map(data, $_9njj9iwjjdud7eix.constant));
};
var dispatchEvent = function (component, target, event, simulatedEvent) {
component.getSystem().triggerEvent(event, target, simulatedEvent.event());
};
var dispatchFocus = function (component, target) {
component.getSystem().triggerFocus(target, component.element());
};
var $_98da6jwgjdud7eil = {
emit: emit,
emitWith: emitWith,
emitExecute: emitExecute,
dispatch: dispatch,
dispatchWith: dispatchWith,
dispatchEvent: dispatchEvent,
dispatchFocus: dispatchFocus
};
function Immutable () {
var fields = arguments;
return function () {
var values = new Array(arguments.length);
for (var i = 0; i < values.length; i++)
values[i] = arguments[i];
if (fields.length !== values.length)
throw new Error('Wrong number of arguments to struct. Expected "[' + fields.length + ']", got ' + values.length + ' arguments');
var struct = {};
$_1g2cevwsjdud7ejp.each(fields, function (name, i) {
struct[name] = $_9njj9iwjjdud7eix.constant(values[i]);
});
return struct;
};
}
var sort$1 = function (arr) {
return arr.slice(0).sort();
};
var reqMessage = function (required, keys) {
throw new Error('All required keys (' + sort$1(required).join(', ') + ') were not specified. Specified keys were: ' + sort$1(keys).join(', ') + '.');
};
var unsuppMessage = function (unsupported) {
throw new Error('Unsupported keys for object: ' + sort$1(unsupported).join(', '));
};
var validateStrArr = function (label, array) {
if (!$_9rljuwzjdud7ekb.isArray(array))
throw new Error('The ' + label + ' fields must be an array. Was: ' + array + '.');
$_1g2cevwsjdud7ejp.each(array, function (a) {
if (!$_9rljuwzjdud7ekb.isString(a))
throw new Error('The value ' + a + ' in the ' + label + ' fields was not a string.');
});
};
var invalidTypeMessage = function (incorrect, type) {
throw new Error('All values need to be of type: ' + type + '. Keys (' + sort$1(incorrect).join(', ') + ') were not.');
};
var checkDupes = function (everything) {
var sorted = sort$1(everything);
var dupe = $_1g2cevwsjdud7ejp.find(sorted, function (s, i) {
return i < sorted.length - 1 && s === sorted[i + 1];
});
dupe.each(function (d) {
throw new Error('The field: ' + d + ' occurs more than once in the combined fields: [' + sorted.join(', ') + '].');
});
};
var $_1ie102x7jdud7el4 = {
sort: sort$1,
reqMessage: reqMessage,
unsuppMessage: unsuppMessage,
validateStrArr: validateStrArr,
invalidTypeMessage: invalidTypeMessage,
checkDupes: checkDupes
};
function MixedBag (required, optional) {
var everything = required.concat(optional);
if (everything.length === 0)
throw new Error('You must specify at least one required or optional field.');
$_1ie102x7jdud7el4.validateStrArr('required', required);
$_1ie102x7jdud7el4.validateStrArr('optional', optional);
$_1ie102x7jdud7el4.checkDupes(everything);
return function (obj) {
var keys = $_2dykn0x0jdud7ekc.keys(obj);
var allReqd = $_1g2cevwsjdud7ejp.forall(required, function (req) {
return $_1g2cevwsjdud7ejp.contains(keys, req);
});
if (!allReqd)
$_1ie102x7jdud7el4.reqMessage(required, keys);
var unsupported = $_1g2cevwsjdud7ejp.filter(keys, function (key) {
return !$_1g2cevwsjdud7ejp.contains(everything, key);
});
if (unsupported.length > 0)
$_1ie102x7jdud7el4.unsuppMessage(unsupported);
var r = {};
$_1g2cevwsjdud7ejp.each(required, function (req) {
r[req] = $_9njj9iwjjdud7eix.constant(obj[req]);
});
$_1g2cevwsjdud7ejp.each(optional, function (opt) {
r[opt] = $_9njj9iwjjdud7eix.constant(Object.prototype.hasOwnProperty.call(obj, opt) ? Option.some(obj[opt]) : Option.none());
});
return r;
};
}
var $_8o1q69x4jdud7ekz = {
immutable: Immutable,
immutableBag: MixedBag
};
var toArray = function (target, f) {
var r = [];
var recurse = function (e) {
r.push(e);
return f(e);
};
var cur = f(target);
do {
cur = cur.bind(recurse);
} while (cur.isSome());
return r;
};
var $_ajxr2ix8jdud7el6 = { toArray: toArray };
var global = typeof window !== 'undefined' ? window : Function('return this;')();
var path = function (parts, scope) {
var o = scope !== undefined && scope !== null ? scope : global;
for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)
o = o[parts[i]];
return o;
};
var resolve = function (p, scope) {
var parts = p.split('.');
return path(parts, scope);
};
var step = function (o, part) {
if (o[part] === undefined || o[part] === null)
o[part] = {};
return o[part];
};
var forge = function (parts, target) {
var o = target !== undefined ? target : global;
for (var i = 0; i < parts.length; ++i)
o = step(o, parts[i]);
return o;
};
var namespace = function (name, target) {
var parts = name.split('.');
return forge(parts, target);
};
var $_g961dixcjdud7elo = {
path: path,
resolve: resolve,
forge: forge,
namespace: namespace
};
var unsafe = function (name, scope) {
return $_g961dixcjdud7elo.resolve(name, scope);
};
var getOrDie = function (name, scope) {
var actual = unsafe(name, scope);
if (actual === undefined || actual === null)
throw name + ' not available on this browser';
return actual;
};
var $_3ytg1qxbjdud7elm = { getOrDie: getOrDie };
var node = function () {
var f = $_3ytg1qxbjdud7elm.getOrDie('Node');
return f;
};
var compareDocumentPosition = function (a, b, match) {
return (a.compareDocumentPosition(b) & match) !== 0;
};
var documentPositionPreceding = function (a, b) {
return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);
};
var documentPositionContainedBy = function (a, b) {
return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);
};
var $_f2fzzbxajdud7ell = {
documentPositionPreceding: documentPositionPreceding,
documentPositionContainedBy: documentPositionContainedBy
};
var fromHtml = function (html, scope) {
var doc = scope || document;
var div = doc.createElement('div');
div.innerHTML = html;
if (!div.hasChildNodes() || div.childNodes.length > 1) {
console.error('HTML does not have a single root node', html);
throw 'HTML must have a single root node';
}
return fromDom(div.childNodes[0]);
};
var fromTag = function (tag, scope) {
var doc = scope || document;
var node = doc.createElement(tag);
return fromDom(node);
};
var fromText = function (text, scope) {
var doc = scope || document;
var node = doc.createTextNode(text);
return fromDom(node);
};
var fromDom = function (node) {
if (node === null || node === undefined)
throw new Error('Node cannot be null or undefined');
return { dom: $_9njj9iwjjdud7eix.constant(node) };
};
var fromPoint = function (doc, x, y) {
return Option.from(doc.dom().elementFromPoint(x, y)).map(fromDom);
};
var $_eobgtqxfjdud7elu = {
fromHtml: fromHtml,
fromTag: fromTag,
fromText: fromText,
fromDom: fromDom,
fromPoint: fromPoint
};
var $_5jaggbxgjdud7ely = {
ATTRIBUTE: 2,
CDATA_SECTION: 4,
COMMENT: 8,
DOCUMENT: 9,
DOCUMENT_TYPE: 10,
DOCUMENT_FRAGMENT: 11,
ELEMENT: 1,
TEXT: 3,
PROCESSING_INSTRUCTION: 7,
ENTITY_REFERENCE: 5,
ENTITY: 6,
NOTATION: 12
};
var ELEMENT = $_5jaggbxgjdud7ely.ELEMENT;
var DOCUMENT = $_5jaggbxgjdud7ely.DOCUMENT;
var is = function (element, selector) {
var elem = element.dom();
if (elem.nodeType !== ELEMENT)
return false;
else if (elem.matches !== undefined)
return elem.matches(selector);
else if (elem.msMatchesSelector !== undefined)
return elem.msMatchesSelector(selector);
else if (elem.webkitMatchesSelector !== undefined)
return elem.webkitMatchesSelector(selector);
else if (elem.mozMatchesSelector !== undefined)
return elem.mozMatchesSelector(selector);
else
throw new Error('Browser lacks native selectors');
};
var bypassSelector = function (dom) {
return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT || dom.childElementCount === 0;
};
var all = function (selector, scope) {
var base = scope === undefined ? document : scope.dom();
return bypassSelector(base) ? [] : $_1g2cevwsjdud7ejp.map(base.querySelectorAll(selector), $_eobgtqxfjdud7elu.fromDom);
};
var one = function (selector, scope) {
var base = scope === undefined ? document : scope.dom();
return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map($_eobgtqxfjdud7elu.fromDom);
};
var $_1t43jfxejdud7elq = {
all: all,
is: is,
one: one
};
var eq = function (e1, e2) {
return e1.dom() === e2.dom();
};
var isEqualNode = function (e1, e2) {
return e1.dom().isEqualNode(e2.dom());
};
var member = function (element, elements) {
return $_1g2cevwsjdud7ejp.exists(elements, $_9njj9iwjjdud7eix.curry(eq, element));
};
var regularContains = function (e1, e2) {
var d1 = e1.dom(), d2 = e2.dom();
return d1 === d2 ? false : d1.contains(d2);
};
var ieContains = function (e1, e2) {
return $_f2fzzbxajdud7ell.documentPositionContainedBy(e1.dom(), e2.dom());
};
var browser = $_chh2cvwkjdud7ej0.detect().browser;
var contains$2 = browser.isIE() ? ieContains : regularContains;
var $_f1y1rtx9jdud7el7 = {
eq: eq,
isEqualNode: isEqualNode,
member: member,
contains: contains$2,
is: $_1t43jfxejdud7elq.is
};
var owner = function (element) {
return $_eobgtqxfjdud7elu.fromDom(element.dom().ownerDocument);
};
var documentElement = function (element) {
var doc = owner(element);
return $_eobgtqxfjdud7elu.fromDom(doc.dom().documentElement);
};
var defaultView = function (element) {
var el = element.dom();
var defaultView = el.ownerDocument.defaultView;
return $_eobgtqxfjdud7elu.fromDom(defaultView);
};
var parent = function (element) {
var dom = element.dom();
return Option.from(dom.parentNode).map($_eobgtqxfjdud7elu.fromDom);
};
var findIndex$1 = function (element) {
return parent(element).bind(function (p) {
var kin = children(p);
return $_1g2cevwsjdud7ejp.findIndex(kin, function (elem) {
return $_f1y1rtx9jdud7el7.eq(element, elem);
});
});
};
var parents = function (element, isRoot) {
var stop = $_9rljuwzjdud7ekb.isFunction(isRoot) ? isRoot : $_9njj9iwjjdud7eix.constant(false);
var dom = element.dom();
var ret = [];
while (dom.parentNode !== null && dom.parentNode !== undefined) {
var rawParent = dom.parentNode;
var parent = $_eobgtqxfjdud7elu.fromDom(rawParent);
ret.push(parent);
if (stop(parent) === true)
break;
else
dom = rawParent;
}
return ret;
};
var siblings = function (element) {
var filterSelf = function (elements) {
return $_1g2cevwsjdud7ejp.filter(elements, function (x) {
return !$_f1y1rtx9jdud7el7.eq(element, x);
});
};
return parent(element).map(children).map(filterSelf).getOr([]);
};
var offsetParent = function (element) {
var dom = element.dom();
return Option.from(dom.offsetParent).map($_eobgtqxfjdud7elu.fromDom);
};
var prevSibling = function (element) {
var dom = element.dom();
return Option.from(dom.previousSibling).map($_eobgtqxfjdud7elu.fromDom);
};
var nextSibling = function (element) {
var dom = element.dom();
return Option.from(dom.nextSibling).map($_eobgtqxfjdud7elu.fromDom);
};
var prevSiblings = function (element) {
return $_1g2cevwsjdud7ejp.reverse($_ajxr2ix8jdud7el6.toArray(element, prevSibling));
};
var nextSiblings = function (element) {
return $_ajxr2ix8jdud7el6.toArray(element, nextSibling);
};
var children = function (element) {
var dom = element.dom();
return $_1g2cevwsjdud7ejp.map(dom.childNodes, $_eobgtqxfjdud7elu.fromDom);
};
var child = function (element, index) {
var children = element.dom().childNodes;
return Option.from(children[index]).map($_eobgtqxfjdud7elu.fromDom);
};
var firstChild = function (element) {
return child(element, 0);
};
var lastChild = function (element) {
return child(element, element.dom().childNodes.length - 1);
};
var childNodesCount = function (element) {
return element.dom().childNodes.length;
};
var hasChildNodes = function (element) {
return element.dom().hasChildNodes();
};
var spot = $_8o1q69x4jdud7ekz.immutable('element', 'offset');
var leaf = function (element, offset) {
var cs = children(element);
return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset);
};
var $_dekwe2x3jdud7ekr = {
owner: owner,
defaultView: defaultView,
documentElement: documentElement,
parent: parent,
findIndex: findIndex$1,
parents: parents,
siblings: siblings,
prevSibling: prevSibling,
offsetParent: offsetParent,
prevSiblings: prevSiblings,
nextSibling: nextSibling,
nextSiblings: nextSiblings,
children: children,
child: child,
firstChild: firstChild,
lastChild: lastChild,
childNodesCount: childNodesCount,
hasChildNodes: hasChildNodes,
leaf: leaf
};
var before = function (marker, element) {
var parent = $_dekwe2x3jdud7ekr.parent(marker);
parent.each(function (v) {
v.dom().insertBefore(element.dom(), marker.dom());
});
};
var after = function (marker, element) {
var sibling = $_dekwe2x3jdud7ekr.nextSibling(marker);
sibling.fold(function () {
var parent = $_dekwe2x3jdud7ekr.parent(marker);
parent.each(function (v) {
append(v, element);
});
}, function (v) {
before(v, element);
});
};
var prepend = function (parent, element) {
var firstChild = $_dekwe2x3jdud7ekr.firstChild(parent);
firstChild.fold(function () {
append(parent, element);
}, function (v) {
parent.dom().insertBefore(element.dom(), v.dom());
});
};
var append = function (parent, element) {
parent.dom().appendChild(element.dom());
};
var appendAt = function (parent, element, index) {
$_dekwe2x3jdud7ekr.child(parent, index).fold(function () {
append(parent, element);
}, function (v) {
before(v, element);
});
};
var wrap = function (element, wrapper) {
before(element, wrapper);
append(wrapper, element);
};
var $_ftkbb5x2jdud7ekp = {
before: before,
after: after,
prepend: prepend,
append: append,
appendAt: appendAt,
wrap: wrap
};
var before$1 = function (marker, elements) {
$_1g2cevwsjdud7ejp.each(elements, function (x) {
$_ftkbb5x2jdud7ekp.before(marker, x);
});
};
var after$1 = function (marker, elements) {
$_1g2cevwsjdud7ejp.each(elements, function (x, i) {
var e = i === 0 ? marker : elements[i - 1];
$_ftkbb5x2jdud7ekp.after(e, x);
});
};
var prepend$1 = function (parent, elements) {
$_1g2cevwsjdud7ejp.each(elements.slice().reverse(), function (x) {
$_ftkbb5x2jdud7ekp.prepend(parent, x);
});
};
var append$1 = function (parent, elements) {
$_1g2cevwsjdud7ejp.each(elements, function (x) {
$_ftkbb5x2jdud7ekp.append(parent, x);
});
};
var $_alr2vxxijdud7em1 = {
before: before$1,
after: after$1,
prepend: prepend$1,
append: append$1
};
var empty = function (element) {
element.dom().textContent = '';
$_1g2cevwsjdud7ejp.each($_dekwe2x3jdud7ekr.children(element), function (rogue) {
remove(rogue);
});
};
var remove = function (element) {
var dom = element.dom();
if (dom.parentNode !== null)
dom.parentNode.removeChild(dom);
};
var unwrap = function (wrapper) {
var children = $_dekwe2x3jdud7ekr.children(wrapper);
if (children.length > 0)
$_alr2vxxijdud7em1.before(wrapper, children);
remove(wrapper);
};
var $_8d9w48xhjdud7elz = {
empty: empty,
remove: remove,
unwrap: unwrap
};
var name = function (element) {
var r = element.dom().nodeName;
return r.toLowerCase();
};
var type = function (element) {
return element.dom().nodeType;
};
var value = function (element) {
return element.dom().nodeValue;
};
var isType$1 = function (t) {
return function (element) {
return type(element) === t;
};
};
var isComment = function (element) {
return type(element) === $_5jaggbxgjdud7ely.COMMENT || name(element) === '#comment';
};
var isElement = isType$1($_5jaggbxgjdud7ely.ELEMENT);
var isText = isType$1($_5jaggbxgjdud7ely.TEXT);
var isDocument = isType$1($_5jaggbxgjdud7ely.DOCUMENT);
var $_50qkdpxkjdud7em6 = {
name: name,
type: type,
value: value,
isElement: isElement,
isText: isText,
isDocument: isDocument,
isComment: isComment
};
var inBody = function (element) {
var dom = $_50qkdpxkjdud7em6.isText(element) ? element.dom().parentNode : element.dom();
return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);
};
var body = $_2nf0bewljdud7ej2.cached(function () {
return getBody($_eobgtqxfjdud7elu.fromDom(document));
});
var getBody = function (doc) {
var body = doc.dom().body;
if (body === null || body === undefined)
throw 'Body is not available yet';
return $_eobgtqxfjdud7elu.fromDom(body);
};
var $_1tyeizxjjdud7em4 = {
body: body,
getBody: getBody,
inBody: inBody
};
var fireDetaching = function (component) {
$_98da6jwgjdud7eil.emit(component, $_801kkqwhjdud7eiq.detachedFromDom());
var children = component.components();
$_1g2cevwsjdud7ejp.each(children, fireDetaching);
};
var fireAttaching = function (component) {
var children = component.components();
$_1g2cevwsjdud7ejp.each(children, fireAttaching);
$_98da6jwgjdud7eil.emit(component, $_801kkqwhjdud7eiq.attachedToDom());
};
var attach = function (parent, child) {
attachWith(parent, child, $_ftkbb5x2jdud7ekp.append);
};
var attachWith = function (parent, child, insertion) {
parent.getSystem().addToWorld(child);
insertion(parent.element(), child.element());
if ($_1tyeizxjjdud7em4.inBody(parent.element()))
fireAttaching(child);
parent.syncComponents();
};
var doDetach = function (component) {
fireDetaching(component);
$_8d9w48xhjdud7elz.remove(component.element());
component.getSystem().removeFromWorld(component);
};
var detach = function (component) {
var parent = $_dekwe2x3jdud7ekr.parent(component.element()).bind(function (p) {
return component.getSystem().getByDom(p).fold(Option.none, Option.some);
});
doDetach(component);
parent.each(function (p) {
p.syncComponents();
});
};
var detachChildren = function (component) {
var subs = component.components();
$_1g2cevwsjdud7ejp.each(subs, doDetach);
$_8d9w48xhjdud7elz.empty(component.element());
component.syncComponents();
};
var attachSystem = function (element, guiSystem) {
$_ftkbb5x2jdud7ekp.append(element, guiSystem.element());
var children = $_dekwe2x3jdud7ekr.children(guiSystem.element());
$_1g2cevwsjdud7ejp.each(children, function (child) {
guiSystem.getByDom(child).each(fireAttaching);
});
};
var detachSystem = function (guiSystem) {
var children = $_dekwe2x3jdud7ekr.children(guiSystem.element());
$_1g2cevwsjdud7ejp.each(children, function (child) {
guiSystem.getByDom(child).each(fireDetaching);
});
$_8d9w48xhjdud7elz.remove(guiSystem.element());
};
var $_fesilqx1jdud7ekf = {
attach: attach,
attachWith: attachWith,
detach: detach,
detachChildren: detachChildren,
attachSystem: attachSystem,
detachSystem: detachSystem
};
var fromHtml$1 = function (html, scope) {
var doc = scope || document;
var div = doc.createElement('div');
div.innerHTML = html;
return $_dekwe2x3jdud7ekr.children($_eobgtqxfjdud7elu.fromDom(div));
};
var fromTags = function (tags, scope) {
return $_1g2cevwsjdud7ejp.map(tags, function (x) {
return $_eobgtqxfjdud7elu.fromTag(x, scope);
});
};
var fromText$1 = function (texts, scope) {
return $_1g2cevwsjdud7ejp.map(texts, function (x) {
return $_eobgtqxfjdud7elu.fromText(x, scope);
});
};
var fromDom$1 = function (nodes) {
return $_1g2cevwsjdud7ejp.map(nodes, $_eobgtqxfjdud7elu.fromDom);
};
var $_c9k4uxxpjdud7emn = {
fromHtml: fromHtml$1,
fromTags: fromTags,
fromText: fromText$1,
fromDom: fromDom$1
};
var get = function (element) {
return element.dom().innerHTML;
};
var set = function (element, content) {
var owner = $_dekwe2x3jdud7ekr.owner(element);
var docDom = owner.dom();
var fragment = $_eobgtqxfjdud7elu.fromDom(docDom.createDocumentFragment());
var contentElements = $_c9k4uxxpjdud7emn.fromHtml(content, docDom);
$_alr2vxxijdud7em1.append(fragment, contentElements);
$_8d9w48xhjdud7elz.empty(element);
$_ftkbb5x2jdud7ekp.append(element, fragment);
};
var getOuter = function (element) {
var container = $_eobgtqxfjdud7elu.fromTag('div');
var clone = $_eobgtqxfjdud7elu.fromDom(element.dom().cloneNode(true));
$_ftkbb5x2jdud7ekp.append(container, clone);
return get(container);
};
var $_1kv7pfxojdud7emm = {
get: get,
set: set,
getOuter: getOuter
};
var rawSet = function (dom, key, value) {
if ($_9rljuwzjdud7ekb.isString(value) || $_9rljuwzjdud7ekb.isBoolean(value) || $_9rljuwzjdud7ekb.isNumber(value)) {
dom.setAttribute(key, value + '');
} else {
console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value, ':: Element ', dom);
throw new Error('Attribute value was not simple');
}
};
var set$1 = function (element, key, value) {
rawSet(element.dom(), key, value);
};
var setAll = function (element, attrs) {
var dom = element.dom();
$_2dykn0x0jdud7ekc.each(attrs, function (v, k) {
rawSet(dom, k, v);
});
};
var get$1 = function (element, key) {
var v = element.dom().getAttribute(key);
return v === null ? undefined : v;
};
var has = function (element, key) {
var dom = element.dom();
return dom && dom.hasAttribute ? dom.hasAttribute(key) : false;
};
var remove$1 = function (element, key) {
element.dom().removeAttribute(key);
};
var hasNone = function (element) {
var attrs = element.dom().attributes;
return attrs === undefined || attrs === null || attrs.length === 0;
};
var clone = function (element) {
return $_1g2cevwsjdud7ejp.foldl(element.dom().attributes, function (acc, attr) {
acc[attr.name] = attr.value;
return acc;
}, {});
};
var transferOne = function (source, destination, attr) {
if (has(source, attr) && !has(destination, attr))
set$1(destination, attr, get$1(source, attr));
};
var transfer = function (source, destination, attrs) {
if (!$_50qkdpxkjdud7em6.isElement(source) || !$_50qkdpxkjdud7em6.isElement(destination))
return;
$_1g2cevwsjdud7ejp.each(attrs, function (attr) {
transferOne(source, destination, attr);
});
};
var $_2vghk1xrjdud7ems = {
clone: clone,
set: set$1,
setAll: setAll,
get: get$1,
has: has,
remove: remove$1,
hasNone: hasNone,
transfer: transfer
};
var clone$1 = function (original, deep) {
return $_eobgtqxfjdud7elu.fromDom(original.dom().cloneNode(deep));
};
var shallow$1 = function (original) {
return clone$1(original, false);
};
var deep$1 = function (original) {
return clone$1(original, true);
};
var shallowAs = function (original, tag) {
var nu = $_eobgtqxfjdud7elu.fromTag(tag);
var attributes = $_2vghk1xrjdud7ems.clone(original);
$_2vghk1xrjdud7ems.setAll(nu, attributes);
return nu;
};
var copy = function (original, tag) {
var nu = shallowAs(original, tag);
var cloneChildren = $_dekwe2x3jdud7ekr.children(deep$1(original));
$_alr2vxxijdud7em1.append(nu, cloneChildren);
return nu;
};
var mutate = function (original, tag) {
var nu = shallowAs(original, tag);
$_ftkbb5x2jdud7ekp.before(original, nu);
var children = $_dekwe2x3jdud7ekr.children(original);
$_alr2vxxijdud7em1.append(nu, children);
$_8d9w48xhjdud7elz.remove(original);
return nu;
};
var $_1efzt4xqjdud7emq = {
shallow: shallow$1,
shallowAs: shallowAs,
deep: deep$1,
copy: copy,
mutate: mutate
};
var getHtml = function (element) {
var clone = $_1efzt4xqjdud7emq.shallow(element);
return $_1kv7pfxojdud7emm.getOuter(clone);
};
var $_1sgwp2xnjdud7emj = { getHtml: getHtml };
var element = function (elem) {
return $_1sgwp2xnjdud7emj.getHtml(elem);
};
var $_d3f8kuxmjdud7emi = { element: element };
var value$1 = function (o) {
var is = function (v) {
return o === v;
};
var or = function (opt) {
return value$1(o);
};
var orThunk = function (f) {
return value$1(o);
};
var map = function (f) {
return value$1(f(o));
};
var each = function (f) {
f(o);
};
var bind = function (f) {
return f(o);
};
var fold = function (_, onValue) {
return onValue(o);
};
var exists = function (f) {
return f(o);
};
var forall = function (f) {
return f(o);
};
var toOption = function () {
return Option.some(o);
};
return {
is: is,
isValue: $_9njj9iwjjdud7eix.always,
isError: $_9njj9iwjjdud7eix.never,
getOr: $_9njj9iwjjdud7eix.constant(o),
getOrThunk: $_9njj9iwjjdud7eix.constant(o),
getOrDie: $_9njj9iwjjdud7eix.constant(o),
or: or,
orThunk: orThunk,
fold: fold,
map: map,
each: each,
bind: bind,
exists: exists,
forall: forall,
toOption: toOption
};
};
var error = function (message) {
var getOrThunk = function (f) {
return f();
};
var getOrDie = function () {
return $_9njj9iwjjdud7eix.die(message)();
};
var or = function (opt) {
return opt;
};
var orThunk = function (f) {
return f();
};
var map = function (f) {
return error(message);
};
var bind = function (f) {
return error(message);
};
var fold = function (onError, _) {
return onError(message);
};
return {
is: $_9njj9iwjjdud7eix.never,
isValue: $_9njj9iwjjdud7eix.never,
isError: $_9njj9iwjjdud7eix.always,
getOr: $_9njj9iwjjdud7eix.identity,
getOrThunk: getOrThunk,
getOrDie: getOrDie,
or: or,
orThunk: orThunk,
fold: fold,
map: map,
each: $_9njj9iwjjdud7eix.noop,
bind: bind,
exists: $_9njj9iwjjdud7eix.never,
forall: $_9njj9iwjjdud7eix.always,
toOption: Option.none
};
};
var Result = {
value: value$1,
error: error
};
var generate = function (cases) {
if (!$_9rljuwzjdud7ekb.isArray(cases)) {
throw new Error('cases must be an array');
}
if (cases.length === 0) {
throw new Error('there must be at least one case');
}
var constructors = [];
var adt = {};
$_1g2cevwsjdud7ejp.each(cases, function (acase, count) {
var keys = $_2dykn0x0jdud7ekc.keys(acase);
if (keys.length !== 1) {
throw new Error('one and only one name per case');
}
var key = keys[0];
var value = acase[key];
if (adt[key] !== undefined) {
throw new Error('duplicate key detected:' + key);
} else if (key === 'cata') {
throw new Error('cannot have a case named cata (sorry)');
} else if (!$_9rljuwzjdud7ekb.isArray(value)) {
throw new Error('case arguments must be an array');
}
constructors.push(key);
adt[key] = function () {
var argLength = arguments.length;
if (argLength !== value.length) {
throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);
}
var args = new Array(argLength);
for (var i = 0; i < args.length; i++)
args[i] = arguments[i];
var match = function (branches) {
var branchKeys = $_2dykn0x0jdud7ekc.keys(branches);
if (constructors.length !== branchKeys.length) {
throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\nActual: ' + branchKeys.join(','));
}
var allReqd = $_1g2cevwsjdud7ejp.forall(constructors, function (reqKey) {
return $_1g2cevwsjdud7ejp.contains(branchKeys, reqKey);
});
if (!allReqd)
throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\nRequired: ' + constructors.join(', '));
return branches[key].apply(null, args);
};
return {
fold: function () {
if (arguments.length !== cases.length) {
throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + arguments.length);
}
var target = arguments[count];
return target.apply(null, args);
},
match: match,
log: function (label) {
console.log(label, {
constructors: constructors,
constructor: key,
params: args
});
}
};
};
});
return adt;
};
var $_2ytffsxwjdud7ets = { generate: generate };
var comparison = $_2ytffsxwjdud7ets.generate([
{
bothErrors: [
'error1',
'error2'
]
},
{
firstError: [
'error1',
'value2'
]
},
{
secondError: [
'value1',
'error2'
]
},
{
bothValues: [
'value1',
'value2'
]
}
]);
var partition$1 = function (results) {
var errors = [];
var values = [];
$_1g2cevwsjdud7ejp.each(results, function (result) {
result.fold(function (err) {
errors.push(err);
}, function (value) {
values.push(value);
});
});
return {
errors: errors,
values: values
};
};
var compare = function (result1, result2) {
return result1.fold(function (err1) {
return result2.fold(function (err2) {
return comparison.bothErrors(err1, err2);
}, function (val2) {
return comparison.firstError(err1, val2);
});
}, function (val1) {
return result2.fold(function (err2) {
return comparison.secondError(val1, err2);
}, function (val2) {
return comparison.bothValues(val1, val2);
});
});
};
var $_807z09xvjdud7etp = {
partition: partition$1,
compare: compare
};
var mergeValues = function (values, base) {
return Result.value($_73qnwowyjdud7ek9.deepMerge.apply(undefined, [base].concat(values)));
};
var mergeErrors = function (errors) {
return $_9njj9iwjjdud7eix.compose(Result.error, $_1g2cevwsjdud7ejp.flatten)(errors);
};
var consolidateObj = function (objects, base) {
var partitions = $_807z09xvjdud7etp.partition(objects);
return partitions.errors.length > 0 ? mergeErrors(partitions.errors) : mergeValues(partitions.values, base);
};
var consolidateArr = function (objects) {
var partitions = $_807z09xvjdud7etp.partition(objects);
return partitions.errors.length > 0 ? mergeErrors(partitions.errors) : Result.value(partitions.values);
};
var $_fsr4v9xtjdud7en1 = {
consolidateObj: consolidateObj,
consolidateArr: consolidateArr
};
var narrow = function (obj, fields) {
var r = {};
$_1g2cevwsjdud7ejp.each(fields, function (field) {
if (obj[field] !== undefined && obj.hasOwnProperty(field))
r[field] = obj[field];
});
return r;
};
var indexOnKey = function (array, key) {
var obj = {};
$_1g2cevwsjdud7ejp.each(array, function (a) {
var keyValue = a[key];
obj[keyValue] = a;
});
return obj;
};
var exclude = function (obj, fields) {
var r = {};
$_2dykn0x0jdud7ekc.each(obj, function (v, k) {
if (!$_1g2cevwsjdud7ejp.contains(fields, k)) {
r[k] = v;
}
});
return r;
};
var $_b3xxobxxjdud7etv = {
narrow: narrow,
exclude: exclude,
indexOnKey: indexOnKey
};
var readOpt = function (key) {
return function (obj) {
return obj.hasOwnProperty(key) ? Option.from(obj[key]) : Option.none();
};
};
var readOr = function (key, fallback) {
return function (obj) {
return readOpt(key)(obj).getOr(fallback);
};
};
var readOptFrom = function (obj, key) {
return readOpt(key)(obj);
};
var hasKey = function (obj, key) {
return obj.hasOwnProperty(key) && obj[key] !== undefined && obj[key] !== null;
};
var $_37yfftxyjdud7etz = {
readOpt: readOpt,
readOr: readOr,
readOptFrom: readOptFrom,
hasKey: hasKey
};
var wrap$1 = function (key, value) {
var r = {};
r[key] = value;
return r;
};
var wrapAll = function (keyvalues) {
var r = {};
$_1g2cevwsjdud7ejp.each(keyvalues, function (kv) {
r[kv.key] = kv.value;
});
return r;
};
var $_7vvdhixzjdud7eu2 = {
wrap: wrap$1,
wrapAll: wrapAll
};
var narrow$1 = function (obj, fields) {
return $_b3xxobxxjdud7etv.narrow(obj, fields);
};
var exclude$1 = function (obj, fields) {
return $_b3xxobxxjdud7etv.exclude(obj, fields);
};
var readOpt$1 = function (key) {
return $_37yfftxyjdud7etz.readOpt(key);
};
var readOr$1 = function (key, fallback) {
return $_37yfftxyjdud7etz.readOr(key, fallback);
};
var readOptFrom$1 = function (obj, key) {
return $_37yfftxyjdud7etz.readOptFrom(obj, key);
};
var wrap$2 = function (key, value) {
return $_7vvdhixzjdud7eu2.wrap(key, value);
};
var wrapAll$1 = function (keyvalues) {
return $_7vvdhixzjdud7eu2.wrapAll(keyvalues);
};
var indexOnKey$1 = function (array, key) {
return $_b3xxobxxjdud7etv.indexOnKey(array, key);
};
var consolidate = function (objs, base) {
return $_fsr4v9xtjdud7en1.consolidateObj(objs, base);
};
var hasKey$1 = function (obj, key) {
return $_37yfftxyjdud7etz.hasKey(obj, key);
};
var $_ettibkxsjdud7emz = {
narrow: narrow$1,
exclude: exclude$1,
readOpt: readOpt$1,
readOr: readOr$1,
readOptFrom: readOptFrom$1,
wrap: wrap$2,
wrapAll: wrapAll$1,
indexOnKey: indexOnKey$1,
hasKey: hasKey$1,
consolidate: consolidate
};
var cat = function (arr) {
var r = [];
var push = function (x) {
r.push(x);
};
for (var i = 0; i < arr.length; i++) {
arr[i].each(push);
}
return r;
};
var findMap = function (arr, f) {
for (var i = 0; i < arr.length; i++) {
var r = f(arr[i], i);
if (r.isSome()) {
return r;
}
}
return Option.none();
};
var liftN = function (arr, f) {
var r = [];
for (var i = 0; i < arr.length; i++) {
var x = arr[i];
if (x.isSome()) {
r.push(x.getOrDie());
} else {
return Option.none();
}
}
return Option.some(f.apply(null, r));
};
var $_ak7xq9y0jdud7eu4 = {
cat: cat,
findMap: findMap,
liftN: liftN
};
var unknown$3 = 'unknown';
var debugging = true;
var CHROME_INSPECTOR_GLOBAL = '__CHROME_INSPECTOR_CONNECTION_TO_ALLOY__';
var eventsMonitored = [];
var path$1 = [
'alloy/data/Fields',
'alloy/debugging/Debugging'
];
var getTrace = function () {
if (debugging === false)
return unknown$3;
var err = new Error();
if (err.stack !== undefined) {
var lines = err.stack.split('\n');
return $_1g2cevwsjdud7ejp.find(lines, function (line) {
return line.indexOf('alloy') > 0 && !$_1g2cevwsjdud7ejp.exists(path$1, function (p) {
return line.indexOf(p) > -1;
});
}).getOr(unknown$3);
} else {
return unknown$3;
}
};
var logHandler = function (label, handlerName, trace) {
};
var ignoreEvent = {
logEventCut: $_9njj9iwjjdud7eix.noop,
logEventStopped: $_9njj9iwjjdud7eix.noop,
logNoParent: $_9njj9iwjjdud7eix.noop,
logEventNoHandlers: $_9njj9iwjjdud7eix.noop,
logEventResponse: $_9njj9iwjjdud7eix.noop,
write: $_9njj9iwjjdud7eix.noop
};
var monitorEvent = function (eventName, initialTarget, f) {
var logger = debugging && (eventsMonitored === '*' || $_1g2cevwsjdud7ejp.contains(eventsMonitored, eventName)) ? function () {
var sequence = [];
return {
logEventCut: function (name, target, purpose) {
sequence.push({
outcome: 'cut',
target: target,
purpose: purpose
});
},
logEventStopped: function (name, target, purpose) {
sequence.push({
outcome: 'stopped',
target: target,
purpose: purpose
});
},
logNoParent: function (name, target, purpose) {
sequence.push({
outcome: 'no-parent',
target: target,
purpose: purpose
});
},
logEventNoHandlers: function (name, target) {
sequence.push({
outcome: 'no-handlers-left',
target: target
});
},
logEventResponse: function (name, target, purpose) {
sequence.push({
outcome: 'response',
purpose: purpose,
target: target
});
},
write: function () {
if ($_1g2cevwsjdud7ejp.contains([
'mousemove',
'mouseover',
'mouseout',
$_801kkqwhjdud7eiq.systemInit()
], eventName))
return;
console.log(eventName, {
event: eventName,
target: initialTarget.dom(),
sequence: $_1g2cevwsjdud7ejp.map(sequence, function (s) {
if (!$_1g2cevwsjdud7ejp.contains([
'cut',
'stopped',
'response'
], s.outcome))
return s.outcome;
else
return '{' + s.purpose + '} ' + s.outcome + ' at (' + $_d3f8kuxmjdud7emi.element(s.target) + ')';
})
});
}
};
}() : ignoreEvent;
var output = f(logger);
logger.write();
return output;
};
var inspectorInfo = function (comp) {
var go = function (c) {
var cSpec = c.spec();
return {
'(original.spec)': cSpec,
'(dom.ref)': c.element().dom(),
'(element)': $_d3f8kuxmjdud7emi.element(c.element()),
'(initComponents)': $_1g2cevwsjdud7ejp.map(cSpec.components !== undefined ? cSpec.components : [], go),
'(components)': $_1g2cevwsjdud7ejp.map(c.components(), go),
'(bound.events)': $_2dykn0x0jdud7ekc.mapToArray(c.events(), function (v, k) {
return [k];
}).join(', '),
'(behaviours)': cSpec.behaviours !== undefined ? $_2dykn0x0jdud7ekc.map(cSpec.behaviours, function (v, k) {
return v === undefined ? '--revoked--' : {
config: v.configAsRaw(),
'original-config': v.initialConfig,
state: c.readState(k)
};
}) : 'none'
};
};
return go(comp);
};
var getOrInitConnection = function () {
if (window[CHROME_INSPECTOR_GLOBAL] !== undefined)
return window[CHROME_INSPECTOR_GLOBAL];
else {
window[CHROME_INSPECTOR_GLOBAL] = {
systems: {},
lookup: function (uid) {
var systems = window[CHROME_INSPECTOR_GLOBAL].systems;
var connections = $_2dykn0x0jdud7ekc.keys(systems);
return $_ak7xq9y0jdud7eu4.findMap(connections, function (conn) {
var connGui = systems[conn];
return connGui.getByUid(uid).toOption().map(function (comp) {
return $_ettibkxsjdud7emz.wrap($_d3f8kuxmjdud7emi.element(comp.element()), inspectorInfo(comp));
});
});
}
};
return window[CHROME_INSPECTOR_GLOBAL];
}
};
var registerInspector = function (name, gui) {
var connection = getOrInitConnection();
connection.systems[name] = gui;
};
var $_efa715xljdud7em8 = {
logHandler: logHandler,
noLogger: $_9njj9iwjjdud7eix.constant(ignoreEvent),
getTrace: getTrace,
monitorEvent: monitorEvent,
isDebugging: $_9njj9iwjjdud7eix.constant(debugging),
registerInspector: registerInspector
};
var isSource = function (component, simulatedEvent) {
return $_f1y1rtx9jdud7el7.eq(component.element(), simulatedEvent.event().target());
};
var $_3y5zxmy5jdud7euv = { isSource: isSource };
var adt = $_2ytffsxwjdud7ets.generate([
{ strict: [] },
{ defaultedThunk: ['fallbackThunk'] },
{ asOption: [] },
{ asDefaultedOptionThunk: ['fallbackThunk'] },
{ mergeWithThunk: ['baseThunk'] }
]);
var defaulted = function (fallback) {
return adt.defaultedThunk($_9njj9iwjjdud7eix.constant(fallback));
};
var asDefaultedOption = function (fallback) {
return adt.asDefaultedOptionThunk($_9njj9iwjjdud7eix.constant(fallback));
};
var mergeWith = function (base) {
return adt.mergeWithThunk($_9njj9iwjjdud7eix.constant(base));
};
var $_6rbn18y8jdud7evc = {
strict: adt.strict,
asOption: adt.asOption,
defaulted: defaulted,
defaultedThunk: adt.defaultedThunk,
asDefaultedOption: asDefaultedOption,
asDefaultedOptionThunk: adt.asDefaultedOptionThunk,
mergeWith: mergeWith,
mergeWithThunk: adt.mergeWithThunk
};
var typeAdt = $_2ytffsxwjdud7ets.generate([
{
setOf: [
'validator',
'valueType'
]
},
{ arrOf: ['valueType'] },
{ objOf: ['fields'] },
{ itemOf: ['validator'] },
{
choiceOf: [
'key',
'branches'
]
},
{ thunk: ['description'] },
{
func: [
'args',
'outputSchema'
]
}
]);
var fieldAdt = $_2ytffsxwjdud7ets.generate([
{
field: [
'name',
'presence',
'type'
]
},
{ state: ['name'] }
]);
var $_e4kogayajdud7ew8 = {
typeAdt: typeAdt,
fieldAdt: fieldAdt
};
var json = function () {
return $_3ytg1qxbjdud7elm.getOrDie('JSON');
};
var parse = function (obj) {
return json().parse(obj);
};
var stringify = function (obj, replacer, space) {
return json().stringify(obj, replacer, space);
};
var $_crnojnydjdud7ewk = {
parse: parse,
stringify: stringify
};
var formatObj = function (input) {
return $_9rljuwzjdud7ekb.isObject(input) && $_2dykn0x0jdud7ekc.keys(input).length > 100 ? ' removed due to size' : $_crnojnydjdud7ewk.stringify(input, null, 2);
};
var formatErrors = function (errors) {
var es = errors.length > 10 ? errors.slice(0, 10).concat([{
path: [],
getErrorInfo: function () {
return '... (only showing first ten failures)';
}
}]) : errors;
return $_1g2cevwsjdud7ejp.map(es, function (e) {
return 'Failed path: (' + e.path.join(' > ') + ')\n' + e.getErrorInfo();
});
};
var $_5dzg9kycjdud7ewe = {
formatObj: formatObj,
formatErrors: formatErrors
};
var nu$3 = function (path, getErrorInfo) {
return Result.error([{
path: path,
getErrorInfo: getErrorInfo
}]);
};
var missingStrict = function (path, key, obj) {
return nu$3(path, function () {
return 'Could not find valid *strict* value for "' + key + '" in ' + $_5dzg9kycjdud7ewe.formatObj(obj);
});
};
var missingKey = function (path, key) {
return nu$3(path, function () {
return 'Choice schema did not contain choice key: "' + key + '"';
});
};
var missingBranch = function (path, branches, branch) {
return nu$3(path, function () {
return 'The chosen schema: "' + branch + '" did not exist in branches: ' + $_5dzg9kycjdud7ewe.formatObj(branches);
});
};
var unsupportedFields = function (path, unsupported) {
return nu$3(path, function () {
return 'There are unsupported fields: [' + unsupported.join(', ') + '] specified';
});
};
var custom = function (path, err) {
return nu$3(path, function () {
return err;
});
};
var toString = function (error) {
return 'Failed path: (' + error.path.join(' > ') + ')\n' + error.getErrorInfo();
};
var $_a7kucqybjdud7ewb = {
missingStrict: missingStrict,
missingKey: missingKey,
missingBranch: missingBranch,
unsupportedFields: unsupportedFields,
custom: custom,
toString: toString
};
var adt$1 = $_2ytffsxwjdud7ets.generate([
{
field: [
'key',
'okey',
'presence',
'prop'
]
},
{
state: [
'okey',
'instantiator'
]
}
]);
var output = function (okey, value) {
return adt$1.state(okey, $_9njj9iwjjdud7eix.constant(value));
};
var snapshot = function (okey) {
return adt$1.state(okey, $_9njj9iwjjdud7eix.identity);
};
var strictAccess = function (path, obj, key) {
return $_37yfftxyjdud7etz.readOptFrom(obj, key).fold(function () {
return $_a7kucqybjdud7ewb.missingStrict(path, key, obj);
}, Result.value);
};
var fallbackAccess = function (obj, key, fallbackThunk) {
var v = $_37yfftxyjdud7etz.readOptFrom(obj, key).fold(function () {
return fallbackThunk(obj);
}, $_9njj9iwjjdud7eix.identity);
return Result.value(v);
};
var optionAccess = function (obj, key) {
return Result.value($_37yfftxyjdud7etz.readOptFrom(obj, key));
};
var optionDefaultedAccess = function (obj, key, fallback) {
var opt = $_37yfftxyjdud7etz.readOptFrom(obj, key).map(function (val) {
return val === true ? fallback(obj) : val;
});
return Result.value(opt);
};
var cExtractOne = function (path, obj, field, strength) {
return field.fold(function (key, okey, presence, prop) {
var bundle = function (av) {
return prop.extract(path.concat([key]), strength, av).map(function (res) {
return $_7vvdhixzjdud7eu2.wrap(okey, strength(res));
});
};
var bundleAsOption = function (optValue) {
return optValue.fold(function () {
var outcome = $_7vvdhixzjdud7eu2.wrap(okey, strength(Option.none()));
return Result.value(outcome);
}, function (ov) {
return prop.extract(path.concat([key]), strength, ov).map(function (res) {
return $_7vvdhixzjdud7eu2.wrap(okey, strength(Option.some(res)));
});
});
};
return function () {
return presence.fold(function () {
return strictAccess(path, obj, key).bind(bundle);
}, function (fallbackThunk) {
return fallbackAccess(obj, key, fallbackThunk).bind(bundle);
}, function () {
return optionAccess(obj, key).bind(bundleAsOption);
}, function (fallbackThunk) {
return optionDefaultedAccess(obj, key, fallbackThunk).bind(bundleAsOption);
}, function (baseThunk) {
var base = baseThunk(obj);
return fallbackAccess(obj, key, $_9njj9iwjjdud7eix.constant({})).map(function (v) {
return $_73qnwowyjdud7ek9.deepMerge(base, v);
}).bind(bundle);
});
}();
}, function (okey, instantiator) {
var state = instantiator(obj);
return Result.value($_7vvdhixzjdud7eu2.wrap(okey, strength(state)));
});
};
var cExtract = function (path, obj, fields, strength) {
var results = $_1g2cevwsjdud7ejp.map(fields, function (field) {
return cExtractOne(path, obj, field, strength);
});
return $_fsr4v9xtjdud7en1.consolidateObj(results, {});
};
var value$2 = function (validator) {
var extract = function (path, strength, val) {
return validator(val, strength).fold(function (err) {
return $_a7kucqybjdud7ewb.custom(path, err);
}, Result.value);
};
var toString = function () {
return 'val';
};
var toDsl = function () {
return $_e4kogayajdud7ew8.typeAdt.itemOf(validator);
};
return {
extract: extract,
toString: toString,
toDsl: toDsl
};
};
var getSetKeys = function (obj) {
var keys = $_2dykn0x0jdud7ekc.keys(obj);
return $_1g2cevwsjdud7ejp.filter(keys, function (k) {
return $_ettibkxsjdud7emz.hasKey(obj, k);
});
};
var objOnly = function (fields) {
var delegate = obj(fields);
var fieldNames = $_1g2cevwsjdud7ejp.foldr(fields, function (acc, f) {
return f.fold(function (key) {
return $_73qnwowyjdud7ek9.deepMerge(acc, $_ettibkxsjdud7emz.wrap(key, true));
}, $_9njj9iwjjdud7eix.constant(acc));
}, {});
var extract = function (path, strength, o) {
var keys = $_9rljuwzjdud7ekb.isBoolean(o) ? [] : getSetKeys(o);
var extra = $_1g2cevwsjdud7ejp.filter(keys, function (k) {
return !$_ettibkxsjdud7emz.hasKey(fieldNames, k);
});
return extra.length === 0 ? delegate.extract(path, strength, o) : $_a7kucqybjdud7ewb.unsupportedFields(path, extra);
};
return {
extract: extract,
toString: delegate.toString,
toDsl: delegate.toDsl
};
};
var obj = function (fields) {
var extract = function (path, strength, o) {
return cExtract(path, o, fields, strength);
};
var toString = function () {
var fieldStrings = $_1g2cevwsjdud7ejp.map(fields, function (field) {
return field.fold(function (key, okey, presence, prop) {
return key + ' -> ' + prop.toString();
}, function (okey, instantiator) {
return 'state(' + okey + ')';
});
});
return 'obj{\n' + fieldStrings.join('\n') + '}';
};
var toDsl = function () {
return $_e4kogayajdud7ew8.typeAdt.objOf($_1g2cevwsjdud7ejp.map(fields, function (f) {
return f.fold(function (key, okey, presence, prop) {
return $_e4kogayajdud7ew8.fieldAdt.field(key, presence, prop);
}, function (okey, instantiator) {
return $_e4kogayajdud7ew8.fieldAdt.state(okey);
});
}));
};
return {
extract: extract,
toString: toString,
toDsl: toDsl
};
};
var arr = function (prop) {
var extract = function (path, strength, array) {
var results = $_1g2cevwsjdud7ejp.map(array, function (a, i) {
return prop.extract(path.concat(['[' + i + ']']), strength, a);
});
return $_fsr4v9xtjdud7en1.consolidateArr(results);
};
var toString = function () {
return 'array(' + prop.toString() + ')';
};
var toDsl = function () {
return $_e4kogayajdud7ew8.typeAdt.arrOf(prop);
};
return {
extract: extract,
toString: toString,
toDsl: toDsl
};
};
var setOf = function (validator, prop) {
var validateKeys = function (path, keys) {
return arr(value$2(validator)).extract(path, $_9njj9iwjjdud7eix.identity, keys);
};
var extract = function (path, strength, o) {
var keys = $_2dykn0x0jdud7ekc.keys(o);
return validateKeys(path, keys).bind(function (validKeys) {
var schema = $_1g2cevwsjdud7ejp.map(validKeys, function (vk) {
return adt$1.field(vk, vk, $_6rbn18y8jdud7evc.strict(), prop);
});
return obj(schema).extract(path, strength, o);
});
};
var toString = function () {
return 'setOf(' + prop.toString() + ')';
};
var toDsl = function () {
return $_e4kogayajdud7ew8.typeAdt.setOf(validator, prop);
};
return {
extract: extract,
toString: toString,
toDsl: toDsl
};
};
var func = function (args, schema, retriever) {
var delegate = value$2(function (f, strength) {
return $_9rljuwzjdud7ekb.isFunction(f) ? Result.value(function () {
var gArgs = Array.prototype.slice.call(arguments, 0);
var allowedArgs = gArgs.slice(0, args.length);
var o = f.apply(null, allowedArgs);
return retriever(o, strength);
}) : Result.error('Not a function');
});
return {
extract: delegate.extract,
toString: function () {
return 'function';
},
toDsl: function () {
return $_e4kogayajdud7ew8.typeAdt.func(args, schema);
}
};
};
var thunk = function (desc, processor) {
var getP = $_2nf0bewljdud7ej2.cached(function () {
return processor();
});
var extract = function (path, strength, val) {
return getP().extract(path, strength, val);
};
var toString = function () {
return getP().toString();
};
var toDsl = function () {
return $_e4kogayajdud7ew8.typeAdt.thunk(desc);
};
return {
extract: extract,
toString: toString,
toDsl: toDsl
};
};
var anyValue = value$2(Result.value);
var arrOfObj = $_9njj9iwjjdud7eix.compose(arr, obj);
var $_16ghfpy9jdud7evh = {
anyValue: $_9njj9iwjjdud7eix.constant(anyValue),
value: value$2,
obj: obj,
objOnly: objOnly,
arr: arr,
setOf: setOf,
arrOfObj: arrOfObj,
state: adt$1.state,
field: adt$1.field,
output: output,
snapshot: snapshot,
thunk: thunk,
func: func
};
var strict = function (key) {
return $_16ghfpy9jdud7evh.field(key, key, $_6rbn18y8jdud7evc.strict(), $_16ghfpy9jdud7evh.anyValue());
};
var strictOf = function (key, schema) {
return $_16ghfpy9jdud7evh.field(key, key, $_6rbn18y8jdud7evc.strict(), schema);
};
var strictFunction = function (key) {
return $_16ghfpy9jdud7evh.field(key, key, $_6rbn18y8jdud7evc.strict(), $_16ghfpy9jdud7evh.value(function (f) {
return $_9rljuwzjdud7ekb.isFunction(f) ? Result.value(f) : Result.error('Not a function');
}));
};
var forbid = function (key, message) {
return $_16ghfpy9jdud7evh.field(key, key, $_6rbn18y8jdud7evc.asOption(), $_16ghfpy9jdud7evh.value(function (v) {
return Result.error('The field: ' + key + ' is forbidden. ' + message);
}));
};
var strictArrayOf = function (key, prop) {
return strictOf(key, prop);
};
var strictObjOf = function (key, objSchema) {
return $_16ghfpy9jdud7evh.field(key, key, $_6rbn18y8jdud7evc.strict(), $_16ghfpy9jdud7evh.obj(objSchema));
};
var strictArrayOfObj = function (key, objFields) {
return $_16ghfpy9jdud7evh.field(key, key, $_6rbn18y8jdud7evc.strict(), $_16ghfpy9jdud7evh.arrOfObj(objFields));
};
var option = function (key) {
return $_16ghfpy9jdud7evh.field(key, key, $_6rbn18y8jdud7evc.asOption(), $_16ghfpy9jdud7evh.anyValue());
};
var optionOf = function (key, schema) {
return $_16ghfpy9jdud7evh.field(key, key, $_6rbn18y8jdud7evc.asOption(), schema);
};
var optionObjOf = function (key, objSchema) {
return $_16ghfpy9jdud7evh.field(key, key, $_6rbn18y8jdud7evc.asOption(), $_16ghfpy9jdud7evh.obj(objSchema));
};
var optionObjOfOnly = function (key, objSchema) {
return $_16ghfpy9jdud7evh.field(key, key, $_6rbn18y8jdud7evc.asOption(), $_16ghfpy9jdud7evh.objOnly(objSchema));
};
var defaulted$1 = function (key, fallback) {
return $_16ghfpy9jdud7evh.field(key, key, $_6rbn18y8jdud7evc.defaulted(fallback), $_16ghfpy9jdud7evh.anyValue());
};
var defaultedOf = function (key, fallback, schema) {
return $_16ghfpy9jdud7evh.field(key, key, $_6rbn18y8jdud7evc.defaulted(fallback), schema);
};
var defaultedObjOf = function (key, fallback, objSchema) {
return $_16ghfpy9jdud7evh.field(key, key, $_6rbn18y8jdud7evc.defaulted(fallback), $_16ghfpy9jdud7evh.obj(objSchema));
};
var field = function (key, okey, presence, prop) {
return $_16ghfpy9jdud7evh.field(key, okey, presence, prop);
};
var state = function (okey, instantiator) {
return $_16ghfpy9jdud7evh.state(okey, instantiator);
};
var $_euqmtby7jdud7ev7 = {
strict: strict,
strictOf: strictOf,
strictObjOf: strictObjOf,
strictArrayOf: strictArrayOf,
strictArrayOfObj: strictArrayOfObj,
strictFunction: strictFunction,
forbid: forbid,
option: option,
optionOf: optionOf,
optionObjOf: optionObjOf,
optionObjOfOnly: optionObjOfOnly,
defaulted: defaulted$1,
defaultedOf: defaultedOf,
defaultedObjOf: defaultedObjOf,
field: field,
state: state
};
var chooseFrom = function (path, strength, input, branches, ch) {
var fields = $_ettibkxsjdud7emz.readOptFrom(branches, ch);
return fields.fold(function () {
return $_a7kucqybjdud7ewb.missingBranch(path, branches, ch);
}, function (fs) {
return $_16ghfpy9jdud7evh.obj(fs).extract(path.concat(['branch: ' + ch]), strength, input);
});
};
var choose = function (key, branches) {
var extract = function (path, strength, input) {
var choice = $_ettibkxsjdud7emz.readOptFrom(input, key);
return choice.fold(function () {
return $_a7kucqybjdud7ewb.missingKey(path, key);
}, function (chosen) {
return chooseFrom(path, strength, input, branches, chosen);
});
};
var toString = function () {
return 'chooseOn(' + key + '). Possible values: ' + $_2dykn0x0jdud7ekc.keys(branches);
};
var toDsl = function () {
return $_e4kogayajdud7ew8.typeAdt.choiceOf(key, branches);
};
return {
extract: extract,
toString: toString,
toDsl: toDsl
};
};
var $_dhmy12yfjdud7ewr = { choose: choose };
var anyValue$1 = $_16ghfpy9jdud7evh.value(Result.value);
var arrOfObj$1 = function (objFields) {
return $_16ghfpy9jdud7evh.arrOfObj(objFields);
};
var arrOfVal = function () {
return $_16ghfpy9jdud7evh.arr(anyValue$1);
};
var arrOf = $_16ghfpy9jdud7evh.arr;
var objOf = $_16ghfpy9jdud7evh.obj;
var objOfOnly = $_16ghfpy9jdud7evh.objOnly;
var setOf$1 = $_16ghfpy9jdud7evh.setOf;
var valueOf = function (validator) {
return $_16ghfpy9jdud7evh.value(function (v) {
return validator(v);
});
};
var extract = function (label, prop, strength, obj) {
return prop.extract([label], strength, obj).fold(function (errs) {
return Result.error({
input: obj,
errors: errs
});
}, Result.value);
};
var asStruct = function (label, prop, obj) {
return extract(label, prop, $_9njj9iwjjdud7eix.constant, obj);
};
var asRaw = function (label, prop, obj) {
return extract(label, prop, $_9njj9iwjjdud7eix.identity, obj);
};
var getOrDie$1 = function (extraction) {
return extraction.fold(function (errInfo) {
throw new Error(formatError(errInfo));
}, $_9njj9iwjjdud7eix.identity);
};
var asRawOrDie = function (label, prop, obj) {
return getOrDie$1(asRaw(label, prop, obj));
};
var asStructOrDie = function (label, prop, obj) {
return getOrDie$1(asStruct(label, prop, obj));
};
var formatError = function (errInfo) {
return 'Errors: \n' + $_5dzg9kycjdud7ewe.formatErrors(errInfo.errors) + '\n\nInput object: ' + $_5dzg9kycjdud7ewe.formatObj(errInfo.input);
};
var choose$1 = function (key, branches) {
return $_dhmy12yfjdud7ewr.choose(key, branches);
};
var thunkOf = function (desc, schema) {
return $_16ghfpy9jdud7evh.thunk(desc, schema);
};
var funcOrDie = function (args, schema) {
var retriever = function (output, strength) {
return getOrDie$1(extract('()', schema, strength, output));
};
return $_16ghfpy9jdud7evh.func(args, schema, retriever);
};
var $_13hkebyejdud7ewm = {
anyValue: $_9njj9iwjjdud7eix.constant(anyValue$1),
arrOfObj: arrOfObj$1,
arrOf: arrOf,
arrOfVal: arrOfVal,
valueOf: valueOf,
setOf: setOf$1,
objOf: objOf,
objOfOnly: objOfOnly,
asStruct: asStruct,
asRaw: asRaw,
asStructOrDie: asStructOrDie,
asRawOrDie: asRawOrDie,
getOrDie: getOrDie$1,
formatError: formatError,
choose: choose$1,
thunkOf: thunkOf,
funcOrDie: funcOrDie
};
var nu$4 = function (parts) {
if (!$_ettibkxsjdud7emz.hasKey(parts, 'can') && !$_ettibkxsjdud7emz.hasKey(parts, 'abort') && !$_ettibkxsjdud7emz.hasKey(parts, 'run'))
throw new Error('EventHandler defined by: ' + $_crnojnydjdud7ewk.stringify(parts, null, 2) + ' does not have can, abort, or run!');
return $_13hkebyejdud7ewm.asRawOrDie('Extracting event.handler', $_13hkebyejdud7ewm.objOfOnly([
$_euqmtby7jdud7ev7.defaulted('can', $_9njj9iwjjdud7eix.constant(true)),
$_euqmtby7jdud7ev7.defaulted('abort', $_9njj9iwjjdud7eix.constant(false)),
$_euqmtby7jdud7ev7.defaulted('run', $_9njj9iwjjdud7eix.noop)
]), parts);
};
var all$1 = function (handlers, f) {
return function () {
var args = Array.prototype.slice.call(arguments, 0);
return $_1g2cevwsjdud7ejp.foldl(handlers, function (acc, handler) {
return acc && f(handler).apply(undefined, args);
}, true);
};
};
var any = function (handlers, f) {
return function () {
var args = Array.prototype.slice.call(arguments, 0);
return $_1g2cevwsjdud7ejp.foldl(handlers, function (acc, handler) {
return acc || f(handler).apply(undefined, args);
}, false);
};
};
var read = function (handler) {
return $_9rljuwzjdud7ekb.isFunction(handler) ? {
can: $_9njj9iwjjdud7eix.constant(true),
abort: $_9njj9iwjjdud7eix.constant(false),
run: handler
} : handler;
};
var fuse = function (handlers) {
var can = all$1(handlers, function (handler) {
return handler.can;
});
var abort = any(handlers, function (handler) {
return handler.abort;
});
var run = function () {
var args = Array.prototype.slice.call(arguments, 0);
$_1g2cevwsjdud7ejp.each(handlers, function (handler) {
handler.run.apply(undefined, args);
});
};
return nu$4({
can: can,
abort: abort,
run: run
});
};
var $_6jq2azy6jdud7eux = {
read: read,
fuse: fuse,
nu: nu$4
};
var derive = $_ettibkxsjdud7emz.wrapAll;
var abort = function (name, predicate) {
return {
key: name,
value: $_6jq2azy6jdud7eux.nu({ abort: predicate })
};
};
var can = function (name, predicate) {
return {
key: name,
value: $_6jq2azy6jdud7eux.nu({ can: predicate })
};
};
var preventDefault = function (name) {
return {
key: name,
value: $_6jq2azy6jdud7eux.nu({
run: function (component, simulatedEvent) {
simulatedEvent.event().prevent();
}
})
};
};
var run = function (name, handler) {
return {
key: name,
value: $_6jq2azy6jdud7eux.nu({ run: handler })
};
};
var runActionExtra = function (name, action, extra) {
return {
key: name,
value: $_6jq2azy6jdud7eux.nu({
run: function (component) {
action.apply(undefined, [component].concat(extra));
}
})
};
};
var runOnName = function (name) {
return function (handler) {
return run(name, handler);
};
};
var runOnSourceName = function (name) {
return function (handler) {
return {
key: name,
value: $_6jq2azy6jdud7eux.nu({
run: function (component, simulatedEvent) {
if ($_3y5zxmy5jdud7euv.isSource(component, simulatedEvent))
handler(component, simulatedEvent);
}
})
};
};
};
var redirectToUid = function (name, uid) {
return run(name, function (component, simulatedEvent) {
component.getSystem().getByUid(uid).each(function (redirectee) {
$_98da6jwgjdud7eil.dispatchEvent(redirectee, redirectee.element(), name, simulatedEvent);
});
});
};
var redirectToPart = function (name, detail, partName) {
var uid = detail.partUids()[partName];
return redirectToUid(name, uid);
};
var runWithTarget = function (name, f) {
return run(name, function (component, simulatedEvent) {
component.getSystem().getByDom(simulatedEvent.event().target()).each(function (target) {
f(component, target, simulatedEvent);
});
});
};
var cutter = function (name) {
return run(name, function (component, simulatedEvent) {
simulatedEvent.cut();
});
};
var stopper = function (name) {
return run(name, function (component, simulatedEvent) {
simulatedEvent.stop();
});
};
var $_5xcuyiy4jdud7eur = {
derive: derive,
run: run,
preventDefault: preventDefault,
runActionExtra: runActionExtra,
runOnAttached: runOnSourceName($_801kkqwhjdud7eiq.attachedToDom()),
runOnDetached: runOnSourceName($_801kkqwhjdud7eiq.detachedFromDom()),
runOnInit: runOnSourceName($_801kkqwhjdud7eiq.systemInit()),
runOnExecute: runOnName($_801kkqwhjdud7eiq.execute()),
redirectToUid: redirectToUid,
redirectToPart: redirectToPart,
runWithTarget: runWithTarget,
abort: abort,
can: can,
cutter: cutter,
stopper: stopper
};
var markAsBehaviourApi = function (f, apiName, apiFunction) {
return f;
};
var markAsExtraApi = function (f, extraName) {
return f;
};
var markAsSketchApi = function (f, apiFunction) {
return f;
};
var getAnnotation = Option.none;
var $_4nn5bbygjdud7eww = {
markAsBehaviourApi: markAsBehaviourApi,
markAsExtraApi: markAsExtraApi,
markAsSketchApi: markAsSketchApi,
getAnnotation: getAnnotation
};
var nu$5 = $_8o1q69x4jdud7ekz.immutableBag(['tag'], [
'classes',
'attributes',
'styles',
'value',
'innerHtml',
'domChildren',
'defChildren'
]);
var defToStr = function (defn) {
var raw = defToRaw(defn);
return $_crnojnydjdud7ewk.stringify(raw, null, 2);
};
var defToRaw = function (defn) {
return {
tag: defn.tag(),
classes: defn.classes().getOr([]),
attributes: defn.attributes().getOr({}),
styles: defn.styles().getOr({}),
value: defn.value().getOr('<none>'),
innerHtml: defn.innerHtml().getOr('<none>'),
defChildren: defn.defChildren().getOr('<none>'),
domChildren: defn.domChildren().fold(function () {
return '<none>';
}, function (children) {
return children.length === 0 ? '0 children, but still specified' : String(children.length);
})
};
};
var $_cfxlyyyijdud7ex9 = {
nu: nu$5,
defToStr: defToStr,
defToRaw: defToRaw
};
var fields = [
'classes',
'attributes',
'styles',
'value',
'innerHtml',
'defChildren',
'domChildren'
];
var nu$6 = $_8o1q69x4jdud7ekz.immutableBag([], fields);
var derive$1 = function (settings) {
var r = {};
var keys = $_2dykn0x0jdud7ekc.keys(settings);
$_1g2cevwsjdud7ejp.each(keys, function (key) {
settings[key].each(function (v) {
r[key] = v;
});
});
return nu$6(r);
};
var modToStr = function (mod) {
var raw = modToRaw(mod);
return $_crnojnydjdud7ewk.stringify(raw, null, 2);
};
var modToRaw = function (mod) {
return {
classes: mod.classes().getOr('<none>'),
attributes: mod.attributes().getOr('<none>'),
styles: mod.styles().getOr('<none>'),
value: mod.value().getOr('<none>'),
innerHtml: mod.innerHtml().getOr('<none>'),
defChildren: mod.defChildren().getOr('<none>'),
domChildren: mod.domChildren().fold(function () {
return '<none>';
}, function (children) {
return children.length === 0 ? '0 children, but still specified' : String(children.length);
})
};
};
var clashingOptArrays = function (key, oArr1, oArr2) {
return oArr1.fold(function () {
return oArr2.fold(function () {
return {};
}, function (arr2) {
return $_ettibkxsjdud7emz.wrap(key, arr2);
});
}, function (arr1) {
return oArr2.fold(function () {
return $_ettibkxsjdud7emz.wrap(key, arr1);
}, function (arr2) {
return $_ettibkxsjdud7emz.wrap(key, arr2);
});
});
};
var merge$1 = function (defnA, mod) {
var raw = $_73qnwowyjdud7ek9.deepMerge({
tag: defnA.tag(),
classes: mod.classes().getOr([]).concat(defnA.classes().getOr([])),
attributes: $_73qnwowyjdud7ek9.merge(defnA.attributes().getOr({}), mod.attributes().getOr({})),
styles: $_73qnwowyjdud7ek9.merge(defnA.styles().getOr({}), mod.styles().getOr({}))
}, mod.innerHtml().or(defnA.innerHtml()).map(function (innerHtml) {
return $_ettibkxsjdud7emz.wrap('innerHtml', innerHtml);
}).getOr({}), clashingOptArrays('domChildren', mod.domChildren(), defnA.domChildren()), clashingOptArrays('defChildren', mod.defChildren(), defnA.defChildren()), mod.value().or(defnA.value()).map(function (value) {
return $_ettibkxsjdud7emz.wrap('value', value);
}).getOr({}));
return $_cfxlyyyijdud7ex9.nu(raw);
};
var $_biiw3tyhjdud7ewz = {
nu: nu$6,
derive: derive$1,
merge: merge$1,
modToStr: modToStr,
modToRaw: modToRaw
};
var executeEvent = function (bConfig, bState, executor) {
return $_5xcuyiy4jdud7eur.runOnExecute(function (component) {
executor(component, bConfig, bState);
});
};
var loadEvent = function (bConfig, bState, f) {
return $_5xcuyiy4jdud7eur.runOnInit(function (component, simulatedEvent) {
f(component, bConfig, bState);
});
};
var create = function (schema, name, active, apis, extra, state) {
var configSchema = $_13hkebyejdud7ewm.objOfOnly(schema);
var schemaSchema = $_euqmtby7jdud7ev7.optionObjOf(name, [$_euqmtby7jdud7ev7.optionObjOfOnly('config', schema)]);
return doCreate(configSchema, schemaSchema, name, active, apis, extra, state);
};
var createModes = function (modes, name, active, apis, extra, state) {
var configSchema = modes;
var schemaSchema = $_euqmtby7jdud7ev7.optionObjOf(name, [$_euqmtby7jdud7ev7.optionOf('config', modes)]);
return doCreate(configSchema, schemaSchema, name, active, apis, extra, state);
};
var wrapApi = function (bName, apiFunction, apiName) {
var f = function (component) {
var args = arguments;
return component.config({ name: $_9njj9iwjjdud7eix.constant(bName) }).fold(function () {
throw new Error('We could not find any behaviour configuration for: ' + bName + '. Using API: ' + apiName);
}, function (info) {
var rest = Array.prototype.slice.call(args, 1);
return apiFunction.apply(undefined, [
component,
info.config,
info.state
].concat(rest));
});
};
return $_4nn5bbygjdud7eww.markAsBehaviourApi(f, apiName, apiFunction);
};
var revokeBehaviour = function (name) {
return {
key: name,
value: undefined
};
};
var doCreate = function (configSchema, schemaSchema, name, active, apis, extra, state) {
var getConfig = function (info) {
return $_ettibkxsjdud7emz.hasKey(info, name) ? info[name]() : Option.none();
};
var wrappedApis = $_2dykn0x0jdud7ekc.map(apis, function (apiF, apiName) {
return wrapApi(name, apiF, apiName);
});
var wrappedExtra = $_2dykn0x0jdud7ekc.map(extra, function (extraF, extraName) {
return $_4nn5bbygjdud7eww.markAsExtraApi(extraF, extraName);
});
var me = $_73qnwowyjdud7ek9.deepMerge(wrappedExtra, wrappedApis, {
revoke: $_9njj9iwjjdud7eix.curry(revokeBehaviour, name),
config: function (spec) {
var prepared = $_13hkebyejdud7ewm.asStructOrDie(name + '-config', configSchema, spec);
return {
key: name,
value: {
config: prepared,
me: me,
configAsRaw: $_2nf0bewljdud7ej2.cached(function () {
return $_13hkebyejdud7ewm.asRawOrDie(name + '-config', configSchema, spec);
}),
initialConfig: spec,
state: state
}
};
},
schema: function () {
return schemaSchema;
},
exhibit: function (info, base) {
return getConfig(info).bind(function (behaviourInfo) {
return $_ettibkxsjdud7emz.readOptFrom(active, 'exhibit').map(function (exhibitor) {
return exhibitor(base, behaviourInfo.config, behaviourInfo.state);
});
}).getOr($_biiw3tyhjdud7ewz.nu({}));
},
name: function () {
return name;
},
handlers: function (info) {
return getConfig(info).bind(function (behaviourInfo) {
return $_ettibkxsjdud7emz.readOptFrom(active, 'events').map(function (events) {
return events(behaviourInfo.config, behaviourInfo.state);
});
}).getOr({});
}
});
return me;
};
var $_1t33c1y3jdud7euf = {
executeEvent: executeEvent,
loadEvent: loadEvent,
create: create,
createModes: createModes
};
var base = function (handleUnsupported, required) {
return baseWith(handleUnsupported, required, {
validate: $_9rljuwzjdud7ekb.isFunction,
label: 'function'
});
};
var baseWith = function (handleUnsupported, required, pred) {
if (required.length === 0)
throw new Error('You must specify at least one required field.');
$_1ie102x7jdud7el4.validateStrArr('required', required);
$_1ie102x7jdud7el4.checkDupes(required);
return function (obj) {
var keys = $_2dykn0x0jdud7ekc.keys(obj);
var allReqd = $_1g2cevwsjdud7ejp.forall(required, function (req) {
return $_1g2cevwsjdud7ejp.contains(keys, req);
});
if (!allReqd)
$_1ie102x7jdud7el4.reqMessage(required, keys);
handleUnsupported(required, keys);
var invalidKeys = $_1g2cevwsjdud7ejp.filter(required, function (key) {
return !pred.validate(obj[key], key);
});
if (invalidKeys.length > 0)
$_1ie102x7jdud7el4.invalidTypeMessage(invalidKeys, pred.label);
return obj;
};
};
var handleExact = function (required, keys) {
var unsupported = $_1g2cevwsjdud7ejp.filter(keys, function (key) {
return !$_1g2cevwsjdud7ejp.contains(required, key);
});
if (unsupported.length > 0)
$_1ie102x7jdud7el4.unsuppMessage(unsupported);
};
var allowExtra = $_9njj9iwjjdud7eix.noop;
var $_cmsqfeyljdud7exh = {
exactly: $_9njj9iwjjdud7eix.curry(base, handleExact),
ensure: $_9njj9iwjjdud7eix.curry(base, allowExtra),
ensureWith: $_9njj9iwjjdud7eix.curry(baseWith, allowExtra)
};
var BehaviourState = $_cmsqfeyljdud7exh.ensure(['readState']);
var init = function () {
return BehaviourState({
readState: function () {
return 'No State required';
}
});
};
var $_71cmtkyjjdud7exe = { init: init };
var derive$2 = function (capabilities) {
return $_ettibkxsjdud7emz.wrapAll(capabilities);
};
var simpleSchema = $_13hkebyejdud7ewm.objOfOnly([
$_euqmtby7jdud7ev7.strict('fields'),
$_euqmtby7jdud7ev7.strict('name'),
$_euqmtby7jdud7ev7.defaulted('active', {}),
$_euqmtby7jdud7ev7.defaulted('apis', {}),
$_euqmtby7jdud7ev7.defaulted('extra', {}),
$_euqmtby7jdud7ev7.defaulted('state', $_71cmtkyjjdud7exe)
]);
var create$1 = function (data) {
var value = $_13hkebyejdud7ewm.asRawOrDie('Creating behaviour: ' + data.name, simpleSchema, data);
return $_1t33c1y3jdud7euf.create(value.fields, value.name, value.active, value.apis, value.extra, value.state);
};
var modeSchema = $_13hkebyejdud7ewm.objOfOnly([
$_euqmtby7jdud7ev7.strict('branchKey'),
$_euqmtby7jdud7ev7.strict('branches'),
$_euqmtby7jdud7ev7.strict('name'),
$_euqmtby7jdud7ev7.defaulted('active', {}),
$_euqmtby7jdud7ev7.defaulted('apis', {}),
$_euqmtby7jdud7ev7.defaulted('extra', {}),
$_euqmtby7jdud7ev7.defaulted('state', $_71cmtkyjjdud7exe)
]);
var createModes$1 = function (data) {
var value = $_13hkebyejdud7ewm.asRawOrDie('Creating behaviour: ' + data.name, modeSchema, data);
return $_1t33c1y3jdud7euf.createModes($_13hkebyejdud7ewm.choose(value.branchKey, value.branches), value.name, value.active, value.apis, value.extra, value.state);
};
var $_ax1gfoy2jdud7eu7 = {
derive: derive$2,
revoke: $_9njj9iwjjdud7eix.constant(undefined),
noActive: $_9njj9iwjjdud7eix.constant({}),
noApis: $_9njj9iwjjdud7eix.constant({}),
noExtra: $_9njj9iwjjdud7eix.constant({}),
noState: $_9njj9iwjjdud7eix.constant($_71cmtkyjjdud7exe),
create: create$1,
createModes: createModes$1
};
function Toggler (turnOff, turnOn, initial) {
var active = initial || false;
var on = function () {
turnOn();
active = true;
};
var off = function () {
turnOff();
active = false;
};
var toggle = function () {
var f = active ? off : on;
f();
};
var isOn = function () {
return active;
};
return {
on: on,
off: off,
toggle: toggle,
isOn: isOn
};
}
var read$1 = function (element, attr) {
var value = $_2vghk1xrjdud7ems.get(element, attr);
return value === undefined || value === '' ? [] : value.split(' ');
};
var add = function (element, attr, id) {
var old = read$1(element, attr);
var nu = old.concat([id]);
$_2vghk1xrjdud7ems.set(element, attr, nu.join(' '));
};
var remove$2 = function (element, attr, id) {
var nu = $_1g2cevwsjdud7ejp.filter(read$1(element, attr), function (v) {
return v !== id;
});
if (nu.length > 0)
$_2vghk1xrjdud7ems.set(element, attr, nu.join(' '));
else
$_2vghk1xrjdud7ems.remove(element, attr);
};
var $_5hcec2yqjdud7ey0 = {
read: read$1,
add: add,
remove: remove$2
};
var supports = function (element) {
return element.dom().classList !== undefined;
};
var get$2 = function (element) {
return $_5hcec2yqjdud7ey0.read(element, 'class');
};
var add$1 = function (element, clazz) {
return $_5hcec2yqjdud7ey0.add(element, 'class', clazz);
};
var remove$3 = function (element, clazz) {
return $_5hcec2yqjdud7ey0.remove(element, 'class', clazz);
};
var toggle = function (element, clazz) {
if ($_1g2cevwsjdud7ejp.contains(get$2(element), clazz)) {
remove$3(element, clazz);
} else {
add$1(element, clazz);
}
};
var $_fxl75vypjdud7exy = {
get: get$2,
add: add$1,
remove: remove$3,
toggle: toggle,
supports: supports
};
var add$2 = function (element, clazz) {
if ($_fxl75vypjdud7exy.supports(element))
element.dom().classList.add(clazz);
else
$_fxl75vypjdud7exy.add(element, clazz);
};
var cleanClass = function (element) {
var classList = $_fxl75vypjdud7exy.supports(element) ? element.dom().classList : $_fxl75vypjdud7exy.get(element);
if (classList.length === 0) {
$_2vghk1xrjdud7ems.remove(element, 'class');
}
};
var remove$4 = function (element, clazz) {
if ($_fxl75vypjdud7exy.supports(element)) {
var classList = element.dom().classList;
classList.remove(clazz);
} else
$_fxl75vypjdud7exy.remove(element, clazz);
cleanClass(element);
};
var toggle$1 = function (element, clazz) {
return $_fxl75vypjdud7exy.supports(element) ? element.dom().classList.toggle(clazz) : $_fxl75vypjdud7exy.toggle(element, clazz);
};
var toggler = function (element, clazz) {
var hasClasslist = $_fxl75vypjdud7exy.supports(element);
var classList = element.dom().classList;
var off = function () {
if (hasClasslist)
classList.remove(clazz);
else
$_fxl75vypjdud7exy.remove(element, clazz);
};
var on = function () {
if (hasClasslist)
classList.add(clazz);
else
$_fxl75vypjdud7exy.add(element, clazz);
};
return Toggler(off, on, has$1(element, clazz));
};
var has$1 = function (element, clazz) {
return $_fxl75vypjdud7exy.supports(element) && element.dom().classList.contains(clazz);
};
var $_1x3ogvynjdud7exn = {
add: add$2,
remove: remove$4,
toggle: toggle$1,
toggler: toggler,
has: has$1
};
var swap = function (element, addCls, removeCls) {
$_1x3ogvynjdud7exn.remove(element, removeCls);
$_1x3ogvynjdud7exn.add(element, addCls);
};
var toAlpha = function (component, swapConfig, swapState) {
swap(component.element(), swapConfig.alpha(), swapConfig.omega());
};
var toOmega = function (component, swapConfig, swapState) {
swap(component.element(), swapConfig.omega(), swapConfig.alpha());
};
var clear = function (component, swapConfig, swapState) {
$_1x3ogvynjdud7exn.remove(component.element(), swapConfig.alpha());
$_1x3ogvynjdud7exn.remove(component.element(), swapConfig.omega());
};
var isAlpha = function (component, swapConfig, swapState) {
return $_1x3ogvynjdud7exn.has(component.element(), swapConfig.alpha());
};
var isOmega = function (component, swapConfig, swapState) {
return $_1x3ogvynjdud7exn.has(component.element(), swapConfig.omega());
};
var $_8vr1mzymjdud7exk = {
toAlpha: toAlpha,
toOmega: toOmega,
isAlpha: isAlpha,
isOmega: isOmega,
clear: clear
};
var SwapSchema = [
$_euqmtby7jdud7ev7.strict('alpha'),
$_euqmtby7jdud7ev7.strict('omega')
];
var Swapping = $_ax1gfoy2jdud7eu7.create({
fields: SwapSchema,
name: 'swapping',
apis: $_8vr1mzymjdud7exk
});
var Cell = function (initial) {
var value = initial;
var get = function () {
return value;
};
var set = function (v) {
value = v;
};
var clone = function () {
return Cell(get());
};
return {
get: get,
set: set,
clone: clone
};
};
function ClosestOrAncestor (is, ancestor, scope, a, isRoot) {
return is(scope, a) ? Option.some(scope) : $_9rljuwzjdud7ekb.isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot);
}
var first$1 = function (predicate) {
return descendant($_1tyeizxjjdud7em4.body(), predicate);
};
var ancestor = function (scope, predicate, isRoot) {
var element = scope.dom();
var stop = $_9rljuwzjdud7ekb.isFunction(isRoot) ? isRoot : $_9njj9iwjjdud7eix.constant(false);
while (element.parentNode) {
element = element.parentNode;
var el = $_eobgtqxfjdud7elu.fromDom(element);
if (predicate(el))
return Option.some(el);
else if (stop(el))
break;
}
return Option.none();
};
var closest = function (scope, predicate, isRoot) {
var is = function (scope) {
return predicate(scope);
};
return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot);
};
var sibling = function (scope, predicate) {
var element = scope.dom();
if (!element.parentNode)
return Option.none();
return child$1($_eobgtqxfjdud7elu.fromDom(element.parentNode), function (x) {
return !$_f1y1rtx9jdud7el7.eq(scope, x) && predicate(x);
});
};
var child$1 = function (scope, predicate) {
var result = $_1g2cevwsjdud7ejp.find(scope.dom().childNodes, $_9njj9iwjjdud7eix.compose(predicate, $_eobgtqxfjdud7elu.fromDom));
return result.map($_eobgtqxfjdud7elu.fromDom);
};
var descendant = function (scope, predicate) {
var descend = function (element) {
for (var i = 0; i < element.childNodes.length; i++) {
if (predicate($_eobgtqxfjdud7elu.fromDom(element.childNodes[i])))
return Option.some($_eobgtqxfjdud7elu.fromDom(element.childNodes[i]));
var res = descend(element.childNodes[i]);
if (res.isSome())
return res;
}
return Option.none();
};
return descend(scope.dom());
};
var $_4j5kdsyvjdud7eyd = {
first: first$1,
ancestor: ancestor,
closest: closest,
sibling: sibling,
child: child$1,
descendant: descendant
};
var any$1 = function (predicate) {
return $_4j5kdsyvjdud7eyd.first(predicate).isSome();
};
var ancestor$1 = function (scope, predicate, isRoot) {
return $_4j5kdsyvjdud7eyd.ancestor(scope, predicate, isRoot).isSome();
};
var closest$1 = function (scope, predicate, isRoot) {
return $_4j5kdsyvjdud7eyd.closest(scope, predicate, isRoot).isSome();
};
var sibling$1 = function (scope, predicate) {
return $_4j5kdsyvjdud7eyd.sibling(scope, predicate).isSome();
};
var child$2 = function (scope, predicate) {
return $_4j5kdsyvjdud7eyd.child(scope, predicate).isSome();
};
var descendant$1 = function (scope, predicate) {
return $_4j5kdsyvjdud7eyd.descendant(scope, predicate).isSome();
};
var $_89ls8oyujdud7eyb = {
any: any$1,
ancestor: ancestor$1,
closest: closest$1,
sibling: sibling$1,
child: child$2,
descendant: descendant$1
};
var focus = function (element) {
element.dom().focus();
};
var blur = function (element) {
element.dom().blur();
};
var hasFocus = function (element) {
var doc = $_dekwe2x3jdud7ekr.owner(element).dom();
return element.dom() === doc.activeElement;
};
var active = function (_doc) {
var doc = _doc !== undefined ? _doc.dom() : document;
return Option.from(doc.activeElement).map($_eobgtqxfjdud7elu.fromDom);
};
var focusInside = function (element) {
var doc = $_dekwe2x3jdud7ekr.owner(element);
var inside = active(doc).filter(function (a) {
return $_89ls8oyujdud7eyb.closest(a, $_9njj9iwjjdud7eix.curry($_f1y1rtx9jdud7el7.eq, element));
});
inside.fold(function () {
focus(element);
}, $_9njj9iwjjdud7eix.noop);
};
var search = function (element) {
return active($_dekwe2x3jdud7ekr.owner(element)).filter(function (e) {
return element.dom().contains(e.dom());
});
};
var $_25580rytjdud7ey7 = {
hasFocus: hasFocus,
focus: focus,
blur: blur,
active: active,
search: search,
focusInside: focusInside
};
var DOMUtils = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
var ThemeManager = tinymce.util.Tools.resolve('tinymce.ThemeManager');
var openLink = function (target) {
var link = document.createElement('a');
link.target = '_blank';
link.href = target.href;
link.rel = 'noreferrer noopener';
var nuEvt = document.createEvent('MouseEvents');
nuEvt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
document.body.appendChild(link);
link.dispatchEvent(nuEvt);
document.body.removeChild(link);
};
var $_6cir74yzjdud7eyp = { openLink: openLink };
var isSkinDisabled = function (editor) {
return editor.settings.skin === false;
};
var $_1ue238z0jdud7eyq = { isSkinDisabled: isSkinDisabled };
var formatChanged = 'formatChanged';
var orientationChanged = 'orientationChanged';
var dropupDismissed = 'dropupDismissed';
var $_dlmrcrz1jdud7eyr = {
formatChanged: $_9njj9iwjjdud7eix.constant(formatChanged),
orientationChanged: $_9njj9iwjjdud7eix.constant(orientationChanged),
dropupDismissed: $_9njj9iwjjdud7eix.constant(dropupDismissed)
};
var chooseChannels = function (channels, message) {
return message.universal() ? channels : $_1g2cevwsjdud7ejp.filter(channels, function (ch) {
return $_1g2cevwsjdud7ejp.contains(message.channels(), ch);
});
};
var events = function (receiveConfig) {
return $_5xcuyiy4jdud7eur.derive([$_5xcuyiy4jdud7eur.run($_801kkqwhjdud7eiq.receive(), function (component, message) {
var channelMap = receiveConfig.channels();
var channels = $_2dykn0x0jdud7ekc.keys(channelMap);
var targetChannels = chooseChannels(channels, message);
$_1g2cevwsjdud7ejp.each(targetChannels, function (ch) {
var channelInfo = channelMap[ch]();
var channelSchema = channelInfo.schema();
var data = $_13hkebyejdud7ewm.asStructOrDie('channel[' + ch + '] data\nReceiver: ' + $_d3f8kuxmjdud7emi.element(component.element()), channelSchema, message.data());
channelInfo.onReceive()(component, data);
});
})]);
};
var $_cvbaslz4jdud7ez5 = { events: events };
var menuFields = [
$_euqmtby7jdud7ev7.strict('menu'),
$_euqmtby7jdud7ev7.strict('selectedMenu')
];
var itemFields = [
$_euqmtby7jdud7ev7.strict('item'),
$_euqmtby7jdud7ev7.strict('selectedItem')
];
var schema = $_13hkebyejdud7ewm.objOfOnly(itemFields.concat(menuFields));
var itemSchema = $_13hkebyejdud7ewm.objOfOnly(itemFields);
var $_7x0bkgz7jdud7ezs = {
menuFields: $_9njj9iwjjdud7eix.constant(menuFields),
itemFields: $_9njj9iwjjdud7eix.constant(itemFields),
schema: $_9njj9iwjjdud7eix.constant(schema),
itemSchema: $_9njj9iwjjdud7eix.constant(itemSchema)
};
var initSize = $_euqmtby7jdud7ev7.strictObjOf('initSize', [
$_euqmtby7jdud7ev7.strict('numColumns'),
$_euqmtby7jdud7ev7.strict('numRows')
]);
var itemMarkers = function () {
return $_euqmtby7jdud7ev7.strictOf('markers', $_7x0bkgz7jdud7ezs.itemSchema());
};
var menuMarkers = function () {
return $_euqmtby7jdud7ev7.strictOf('markers', $_7x0bkgz7jdud7ezs.schema());
};
var tieredMenuMarkers = function () {
return $_euqmtby7jdud7ev7.strictObjOf('markers', [$_euqmtby7jdud7ev7.strict('backgroundMenu')].concat($_7x0bkgz7jdud7ezs.menuFields()).concat($_7x0bkgz7jdud7ezs.itemFields()));
};
var markers = function (required) {
return $_euqmtby7jdud7ev7.strictObjOf('markers', $_1g2cevwsjdud7ejp.map(required, $_euqmtby7jdud7ev7.strict));
};
var onPresenceHandler = function (label, fieldName, presence) {
var trace = $_efa715xljdud7em8.getTrace();
return $_euqmtby7jdud7ev7.field(fieldName, fieldName, presence, $_13hkebyejdud7ewm.valueOf(function (f) {
return Result.value(function () {
$_efa715xljdud7em8.logHandler(label, fieldName, trace);
return f.apply(undefined, arguments);
});
}));
};
var onHandler = function (fieldName) {
return onPresenceHandler('onHandler', fieldName, $_6rbn18y8jdud7evc.defaulted($_9njj9iwjjdud7eix.noop));
};
var onKeyboardHandler = function (fieldName) {
return onPresenceHandler('onKeyboardHandler', fieldName, $_6rbn18y8jdud7evc.defaulted(Option.none));
};
var onStrictHandler = function (fieldName) {
return onPresenceHandler('onHandler', fieldName, $_6rbn18y8jdud7evc.strict());
};
var onStrictKeyboardHandler = function (fieldName) {
return onPresenceHandler('onKeyboardHandler', fieldName, $_6rbn18y8jdud7evc.strict());
};
var output$1 = function (name, value) {
return $_euqmtby7jdud7ev7.state(name, $_9njj9iwjjdud7eix.constant(value));
};
var snapshot$1 = function (name) {
return $_euqmtby7jdud7ev7.state(name, $_9njj9iwjjdud7eix.identity);
};
var $_etkinez6jdud7ezi = {
initSize: $_9njj9iwjjdud7eix.constant(initSize),
itemMarkers: itemMarkers,
menuMarkers: menuMarkers,
tieredMenuMarkers: tieredMenuMarkers,
markers: markers,
onHandler: onHandler,
onKeyboardHandler: onKeyboardHandler,
onStrictHandler: onStrictHandler,
onStrictKeyboardHandler: onStrictKeyboardHandler,
output: output$1,
snapshot: snapshot$1
};
var ReceivingSchema = [$_euqmtby7jdud7ev7.strictOf('channels', $_13hkebyejdud7ewm.setOf(Result.value, $_13hkebyejdud7ewm.objOfOnly([
$_etkinez6jdud7ezi.onStrictHandler('onReceive'),
$_euqmtby7jdud7ev7.defaulted('schema', $_13hkebyejdud7ewm.anyValue())
])))];
var Receiving = $_ax1gfoy2jdud7eu7.create({
fields: ReceivingSchema,
name: 'receiving',
active: $_cvbaslz4jdud7ez5
});
var updateAriaState = function (component, toggleConfig) {
var pressed = isOn(component, toggleConfig);
var ariaInfo = toggleConfig.aria();
ariaInfo.update()(component, ariaInfo, pressed);
};
var toggle$2 = function (component, toggleConfig, toggleState) {
$_1x3ogvynjdud7exn.toggle(component.element(), toggleConfig.toggleClass());
updateAriaState(component, toggleConfig);
};
var on = function (component, toggleConfig, toggleState) {
$_1x3ogvynjdud7exn.add(component.element(), toggleConfig.toggleClass());
updateAriaState(component, toggleConfig);
};
var off = function (component, toggleConfig, toggleState) {
$_1x3ogvynjdud7exn.remove(component.element(), toggleConfig.toggleClass());
updateAriaState(component, toggleConfig);
};
var isOn = function (component, toggleConfig) {
return $_1x3ogvynjdud7exn.has(component.element(), toggleConfig.toggleClass());
};
var onLoad = function (component, toggleConfig, toggleState) {
var api = toggleConfig.selected() ? on : off;
api(component, toggleConfig, toggleState);
};
var $_2x2xhizajdud7f0b = {
onLoad: onLoad,
toggle: toggle$2,
isOn: isOn,
on: on,
off: off
};
var exhibit = function (base, toggleConfig, toggleState) {
return $_biiw3tyhjdud7ewz.nu({});
};
var events$1 = function (toggleConfig, toggleState) {
var execute = $_1t33c1y3jdud7euf.executeEvent(toggleConfig, toggleState, $_2x2xhizajdud7f0b.toggle);
var load = $_1t33c1y3jdud7euf.loadEvent(toggleConfig, toggleState, $_2x2xhizajdud7f0b.onLoad);
return $_5xcuyiy4jdud7eur.derive($_1g2cevwsjdud7ejp.flatten([
toggleConfig.toggleOnExecute() ? [execute] : [],
[load]
]));
};
var $_bu8r8rz9jdud7f08 = {
exhibit: exhibit,
events: events$1
};
var updatePressed = function (component, ariaInfo, status) {
$_2vghk1xrjdud7ems.set(component.element(), 'aria-pressed', status);
if (ariaInfo.syncWithExpanded())
updateExpanded(component, ariaInfo, status);
};
var updateSelected = function (component, ariaInfo, status) {
$_2vghk1xrjdud7ems.set(component.element(), 'aria-selected', status);
};
var updateChecked = function (component, ariaInfo, status) {
$_2vghk1xrjdud7ems.set(component.element(), 'aria-checked', status);
};
var updateExpanded = function (component, ariaInfo, status) {
$_2vghk1xrjdud7ems.set(component.element(), 'aria-expanded', status);
};
var tagAttributes = {
button: ['aria-pressed'],
'input:checkbox': ['aria-checked']
};
var roleAttributes = {
'button': ['aria-pressed'],
'listbox': [
'aria-pressed',
'aria-expanded'
],
'menuitemcheckbox': ['aria-checked']
};
var detectFromTag = function (component) {
var elem = component.element();
var rawTag = $_50qkdpxkjdud7em6.name(elem);
var suffix = rawTag === 'input' && $_2vghk1xrjdud7ems.has(elem, 'type') ? ':' + $_2vghk1xrjdud7ems.get(elem, 'type') : '';
return $_ettibkxsjdud7emz.readOptFrom(tagAttributes, rawTag + suffix);
};
var detectFromRole = function (component) {
var elem = component.element();
if (!$_2vghk1xrjdud7ems.has(elem, 'role'))
return Option.none();
else {
var role = $_2vghk1xrjdud7ems.get(elem, 'role');
return $_ettibkxsjdud7emz.readOptFrom(roleAttributes, role);
}
};
var updateAuto = function (component, ariaInfo, status) {
var attributes = detectFromRole(component).orThunk(function () {
return detectFromTag(component);
}).getOr([]);
$_1g2cevwsjdud7ejp.each(attributes, function (attr) {
$_2vghk1xrjdud7ems.set(component.element(), attr, status);
});
};
var $_6a43yqzcjdud7f0l = {
updatePressed: updatePressed,
updateSelected: updateSelected,
updateChecked: updateChecked,
updateExpanded: updateExpanded,
updateAuto: updateAuto
};
var ToggleSchema = [
$_euqmtby7jdud7ev7.defaulted('selected', false),
$_euqmtby7jdud7ev7.strict('toggleClass'),
$_euqmtby7jdud7ev7.defaulted('toggleOnExecute', true),
$_euqmtby7jdud7ev7.defaultedOf('aria', { mode: 'none' }, $_13hkebyejdud7ewm.choose('mode', {
'pressed': [
$_euqmtby7jdud7ev7.defaulted('syncWithExpanded', false),
$_etkinez6jdud7ezi.output('update', $_6a43yqzcjdud7f0l.updatePressed)
],
'checked': [$_etkinez6jdud7ezi.output('update', $_6a43yqzcjdud7f0l.updateChecked)],
'expanded': [$_etkinez6jdud7ezi.output('update', $_6a43yqzcjdud7f0l.updateExpanded)],
'selected': [$_etkinez6jdud7ezi.output('update', $_6a43yqzcjdud7f0l.updateSelected)],
'none': [$_etkinez6jdud7ezi.output('update', $_9njj9iwjjdud7eix.noop)]
}))
];
var Toggling = $_ax1gfoy2jdud7eu7.create({
fields: ToggleSchema,
name: 'toggling',
active: $_bu8r8rz9jdud7f08,
apis: $_2x2xhizajdud7f0b
});
var format = function (command, update) {
return Receiving.config({
channels: $_ettibkxsjdud7emz.wrap($_dlmrcrz1jdud7eyr.formatChanged(), {
onReceive: function (button, data) {
if (data.command === command) {
update(button, data.state);
}
}
})
});
};
var orientation = function (onReceive) {
return Receiving.config({ channels: $_ettibkxsjdud7emz.wrap($_dlmrcrz1jdud7eyr.orientationChanged(), { onReceive: onReceive }) });
};
var receive = function (channel, onReceive) {
return {
key: channel,
value: { onReceive: onReceive }
};
};
var $_nw25bzdjdud7f0v = {
format: format,
orientation: orientation,
receive: receive
};
var prefix = 'tinymce-mobile';
var resolve$1 = function (p) {
return prefix + '-' + p;
};
var $_5qzh4bzejdud7f0y = {
resolve: resolve$1,
prefix: $_9njj9iwjjdud7eix.constant(prefix)
};
var focus$1 = function (component, focusConfig) {
if (!focusConfig.ignore()) {
$_25580rytjdud7ey7.focus(component.element());
focusConfig.onFocus()(component);
}
};
var blur$1 = function (component, focusConfig) {
if (!focusConfig.ignore()) {
$_25580rytjdud7ey7.blur(component.element());
}
};
var isFocused = function (component) {
return $_25580rytjdud7ey7.hasFocus(component.element());
};
var $_arynz0zjjdud7f1h = {
focus: focus$1,
blur: blur$1,
isFocused: isFocused
};
var exhibit$1 = function (base, focusConfig) {
if (focusConfig.ignore())
return $_biiw3tyhjdud7ewz.nu({});
else
return $_biiw3tyhjdud7ewz.nu({ attributes: { 'tabindex': '-1' } });
};
var events$2 = function (focusConfig) {
return $_5xcuyiy4jdud7eur.derive([$_5xcuyiy4jdud7eur.run($_801kkqwhjdud7eiq.focus(), function (component, simulatedEvent) {
$_arynz0zjjdud7f1h.focus(component, focusConfig);
simulatedEvent.stop();
})]);
};
var $_5fj8t7zijdud7f1g = {
exhibit: exhibit$1,
events: events$2
};
var FocusSchema = [
$_etkinez6jdud7ezi.onHandler('onFocus'),
$_euqmtby7jdud7ev7.defaulted('ignore', false)
];
var Focusing = $_ax1gfoy2jdud7eu7.create({
fields: FocusSchema,
name: 'focusing',
active: $_5fj8t7zijdud7f1g,
apis: $_arynz0zjjdud7f1h
});
var $_8y8vdkzpjdud7f2d = {
BACKSPACE: $_9njj9iwjjdud7eix.constant([8]),
TAB: $_9njj9iwjjdud7eix.constant([9]),
ENTER: $_9njj9iwjjdud7eix.constant([13]),
SHIFT: $_9njj9iwjjdud7eix.constant([16]),
CTRL: $_9njj9iwjjdud7eix.constant([17]),
ALT: $_9njj9iwjjdud7eix.constant([18]),
CAPSLOCK: $_9njj9iwjjdud7eix.constant([20]),
ESCAPE: $_9njj9iwjjdud7eix.constant([27]),
SPACE: $_9njj9iwjjdud7eix.constant([32]),
PAGEUP: $_9njj9iwjjdud7eix.constant([33]),
PAGEDOWN: $_9njj9iwjjdud7eix.constant([34]),
END: $_9njj9iwjjdud7eix.constant([35]),
HOME: $_9njj9iwjjdud7eix.constant([36]),
LEFT: $_9njj9iwjjdud7eix.constant([37]),
UP: $_9njj9iwjjdud7eix.constant([38]),
RIGHT: $_9njj9iwjjdud7eix.constant([39]),
DOWN: $_9njj9iwjjdud7eix.constant([40]),
INSERT: $_9njj9iwjjdud7eix.constant([45]),
DEL: $_9njj9iwjjdud7eix.constant([46]),
META: $_9njj9iwjjdud7eix.constant([
91,
93,
224
]),
F10: $_9njj9iwjjdud7eix.constant([121])
};
var cycleBy = function (value, delta, min, max) {
var r = value + delta;
if (r > max)
return min;
else
return r < min ? max : r;
};
var cap = function (value, min, max) {
if (value <= min)
return min;
else
return value >= max ? max : value;
};
var $_b3gjjrzujdud7f38 = {
cycleBy: cycleBy,
cap: cap
};
var all$2 = function (predicate) {
return descendants($_1tyeizxjjdud7em4.body(), predicate);
};
var ancestors = function (scope, predicate, isRoot) {
return $_1g2cevwsjdud7ejp.filter($_dekwe2x3jdud7ekr.parents(scope, isRoot), predicate);
};
var siblings$1 = function (scope, predicate) {
return $_1g2cevwsjdud7ejp.filter($_dekwe2x3jdud7ekr.siblings(scope), predicate);
};
var children$1 = function (scope, predicate) {
return $_1g2cevwsjdud7ejp.filter($_dekwe2x3jdud7ekr.children(scope), predicate);
};
var descendants = function (scope, predicate) {
var result = [];
$_1g2cevwsjdud7ejp.each($_dekwe2x3jdud7ekr.children(scope), function (x) {
if (predicate(x)) {
result = result.concat([x]);
}
result = result.concat(descendants(x, predicate));
});
return result;
};
var $_4ec18vzwjdud7f3b = {
all: all$2,
ancestors: ancestors,
siblings: siblings$1,
children: children$1,
descendants: descendants
};
var all$3 = function (selector) {
return $_1t43jfxejdud7elq.all(selector);
};
var ancestors$1 = function (scope, selector, isRoot) {
return $_4ec18vzwjdud7f3b.ancestors(scope, function (e) {
return $_1t43jfxejdud7elq.is(e, selector);
}, isRoot);
};
var siblings$2 = function (scope, selector) {
return $_4ec18vzwjdud7f3b.siblings(scope, function (e) {
return $_1t43jfxejdud7elq.is(e, selector);
});
};
var children$2 = function (scope, selector) {
return $_4ec18vzwjdud7f3b.children(scope, function (e) {
return $_1t43jfxejdud7elq.is(e, selector);
});
};
var descendants$1 = function (scope, selector) {
return $_1t43jfxejdud7elq.all(selector, scope);
};
var $_df6s98zvjdud7f39 = {
all: all$3,
ancestors: ancestors$1,
siblings: siblings$2,
children: children$2,
descendants: descendants$1
};
var first$2 = function (selector) {
return $_1t43jfxejdud7elq.one(selector);
};
var ancestor$2 = function (scope, selector, isRoot) {
return $_4j5kdsyvjdud7eyd.ancestor(scope, function (e) {
return $_1t43jfxejdud7elq.is(e, selector);
}, isRoot);
};
var sibling$2 = function (scope, selector) {
return $_4j5kdsyvjdud7eyd.sibling(scope, function (e) {
return $_1t43jfxejdud7elq.is(e, selector);
});
};
var child$3 = function (scope, selector) {
return $_4j5kdsyvjdud7eyd.child(scope, function (e) {
return $_1t43jfxejdud7elq.is(e, selector);
});
};
var descendant$2 = function (scope, selector) {
return $_1t43jfxejdud7elq.one(selector, scope);
};
var closest$2 = function (scope, selector, isRoot) {
return ClosestOrAncestor($_1t43jfxejdud7elq.is, ancestor$2, scope, selector, isRoot);
};
var $_a3quyizxjdud7f3e = {
first: first$2,
ancestor: ancestor$2,
sibling: sibling$2,
child: child$3,
descendant: descendant$2,
closest: closest$2
};
var dehighlightAll = function (component, hConfig, hState) {
var highlighted = $_df6s98zvjdud7f39.descendants(component.element(), '.' + hConfig.highlightClass());
$_1g2cevwsjdud7ejp.each(highlighted, function (h) {
$_1x3ogvynjdud7exn.remove(h, hConfig.highlightClass());
component.getSystem().getByDom(h).each(function (target) {
hConfig.onDehighlight()(component, target);
});
});
};
var dehighlight = function (component, hConfig, hState, target) {
var wasHighlighted = isHighlighted(component, hConfig, hState, target);
$_1x3ogvynjdud7exn.remove(target.element(), hConfig.highlightClass());
if (wasHighlighted)
hConfig.onDehighlight()(component, target);
};
var highlight = function (component, hConfig, hState, target) {
var wasHighlighted = isHighlighted(component, hConfig, hState, target);
dehighlightAll(component, hConfig, hState);
$_1x3ogvynjdud7exn.add(target.element(), hConfig.highlightClass());
if (!wasHighlighted)
hConfig.onHighlight()(component, target);
};
var highlightFirst = function (component, hConfig, hState) {
getFirst(component, hConfig, hState).each(function (firstComp) {
highlight(component, hConfig, hState, firstComp);
});
};
var highlightLast = function (component, hConfig, hState) {
getLast(component, hConfig, hState).each(function (lastComp) {
highlight(component, hConfig, hState, lastComp);
});
};
var highlightAt = function (component, hConfig, hState, index) {
getByIndex(component, hConfig, hState, index).fold(function (err) {
throw new Error(err);
}, function (firstComp) {
highlight(component, hConfig, hState, firstComp);
});
};
var highlightBy = function (component, hConfig, hState, predicate) {
var items = $_df6s98zvjdud7f39.descendants(component.element(), '.' + hConfig.itemClass());
var itemComps = $_ak7xq9y0jdud7eu4.cat($_1g2cevwsjdud7ejp.map(items, function (i) {
return component.getSystem().getByDom(i).toOption();
}));
var targetComp = $_1g2cevwsjdud7ejp.find(itemComps, predicate);
targetComp.each(function (c) {
highlight(component, hConfig, hState, c);
});
};
var isHighlighted = function (component, hConfig, hState, queryTarget) {
return $_1x3ogvynjdud7exn.has(queryTarget.element(), hConfig.highlightClass());
};
var getHighlighted = function (component, hConfig, hState) {
return $_a3quyizxjdud7f3e.descendant(component.element(), '.' + hConfig.highlightClass()).bind(component.getSystem().getByDom);
};
var getByIndex = function (component, hConfig, hState, index) {
var items = $_df6s98zvjdud7f39.descendants(component.element(), '.' + hConfig.itemClass());
return Option.from(items[index]).fold(function () {
return Result.error('No element found with index ' + index);
}, component.getSystem().getByDom);
};
var getFirst = function (component, hConfig, hState) {
return $_a3quyizxjdud7f3e.descendant(component.element(), '.' + hConfig.itemClass()).bind(component.getSystem().getByDom);
};
var getLast = function (component, hConfig, hState) {
var items = $_df6s98zvjdud7f39.descendants(component.element(), '.' + hConfig.itemClass());
var last = items.length > 0 ? Option.some(items[items.length - 1]) : Option.none();
return last.bind(component.getSystem().getByDom);
};
var getDelta = function (component, hConfig, hState, delta) {
var items = $_df6s98zvjdud7f39.descendants(component.element(), '.' + hConfig.itemClass());
var current = $_1g2cevwsjdud7ejp.findIndex(items, function (item) {
return $_1x3ogvynjdud7exn.has(item, hConfig.highlightClass());
});
return current.bind(function (selected) {
var dest = $_b3gjjrzujdud7f38.cycleBy(selected, delta, 0, items.length - 1);
return component.getSystem().getByDom(items[dest]);
});
};
var getPrevious = function (component, hConfig, hState) {
return getDelta(component, hConfig, hState, -1);
};
var getNext = function (component, hConfig, hState) {
return getDelta(component, hConfig, hState, +1);
};
var $_6qqyvsztjdud7f2r = {
dehighlightAll: dehighlightAll,
dehighlight: dehighlight,
highlight: highlight,
highlightFirst: highlightFirst,
highlightLast: highlightLast,
highlightAt: highlightAt,
highlightBy: highlightBy,
isHighlighted: isHighlighted,
getHighlighted: getHighlighted,
getFirst: getFirst,
getLast: getLast,
getPrevious: getPrevious,
getNext: getNext
};
var HighlightSchema = [
$_euqmtby7jdud7ev7.strict('highlightClass'),
$_euqmtby7jdud7ev7.strict('itemClass'),
$_etkinez6jdud7ezi.onHandler('onHighlight'),
$_etkinez6jdud7ezi.onHandler('onDehighlight')
];
var Highlighting = $_ax1gfoy2jdud7eu7.create({
fields: HighlightSchema,
name: 'highlighting',
apis: $_6qqyvsztjdud7f2r
});
var dom = function () {
var get = function (component) {
return $_25580rytjdud7ey7.search(component.element());
};
var set = function (component, focusee) {
component.getSystem().triggerFocus(focusee, component.element());
};
return {
get: get,
set: set
};
};
var highlights = function () {
var get = function (component) {
return Highlighting.getHighlighted(component).map(function (item) {
return item.element();
});
};
var set = function (component, element) {
component.getSystem().getByDom(element).fold($_9njj9iwjjdud7eix.noop, function (item) {
Highlighting.highlight(component, item);
});
};
return {
get: get,
set: set
};
};
var $_cic9p1zrjdud7f2l = {
dom: dom,
highlights: highlights
};
var inSet = function (keys) {
return function (event) {
return $_1g2cevwsjdud7ejp.contains(keys, event.raw().which);
};
};
var and = function (preds) {
return function (event) {
return $_1g2cevwsjdud7ejp.forall(preds, function (pred) {
return pred(event);
});
};
};
var is$1 = function (key) {
return function (event) {
return event.raw().which === key;
};
};
var isShift = function (event) {
return event.raw().shiftKey === true;
};
var isControl = function (event) {
return event.raw().ctrlKey === true;
};
var $_7ccsxg100jdud7f3k = {
inSet: inSet,
and: and,
is: is$1,
isShift: isShift,
isNotShift: $_9njj9iwjjdud7eix.not(isShift),
isControl: isControl,
isNotControl: $_9njj9iwjjdud7eix.not(isControl)
};
var basic = function (key, action) {
return {
matches: $_7ccsxg100jdud7f3k.is(key),
classification: action
};
};
var rule = function (matches, action) {
return {
matches: matches,
classification: action
};
};
var choose$2 = function (transitions, event) {
var transition = $_1g2cevwsjdud7ejp.find(transitions, function (t) {
return t.matches(event);
});
return transition.map(function (t) {
return t.classification;
});
};
var $_33m1mtzzjdud7f3i = {
basic: basic,
rule: rule,
choose: choose$2
};
var typical = function (infoSchema, stateInit, getRules, getEvents, getApis, optFocusIn) {
var schema = function () {
return infoSchema.concat([
$_euqmtby7jdud7ev7.defaulted('focusManager', $_cic9p1zrjdud7f2l.dom()),
$_etkinez6jdud7ezi.output('handler', me),
$_etkinez6jdud7ezi.output('state', stateInit)
]);
};
var processKey = function (component, simulatedEvent, keyingConfig, keyingState) {
var rules = getRules(component, simulatedEvent, keyingConfig, keyingState);
return $_33m1mtzzjdud7f3i.choose(rules, simulatedEvent.event()).bind(function (rule) {
return rule(component, simulatedEvent, keyingConfig, keyingState);
});
};
var toEvents = function (keyingConfig, keyingState) {
var otherEvents = getEvents(keyingConfig, keyingState);
var keyEvents = $_5xcuyiy4jdud7eur.derive(optFocusIn.map(function (focusIn) {
return $_5xcuyiy4jdud7eur.run($_801kkqwhjdud7eiq.focus(), function (component, simulatedEvent) {
focusIn(component, keyingConfig, keyingState, simulatedEvent);
simulatedEvent.stop();
});
}).toArray().concat([$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.keydown(), function (component, simulatedEvent) {
processKey(component, simulatedEvent, keyingConfig, keyingState).each(function (_) {
simulatedEvent.stop();
});
})]));
return $_73qnwowyjdud7ek9.deepMerge(otherEvents, keyEvents);
};
var me = {
schema: schema,
processKey: processKey,
toEvents: toEvents,
toApis: getApis
};
return me;
};
var $_3ktlz9zqjdud7f2g = { typical: typical };
var cyclePrev = function (values, index, predicate) {
var before = $_1g2cevwsjdud7ejp.reverse(values.slice(0, index));
var after = $_1g2cevwsjdud7ejp.reverse(values.slice(index + 1));
return $_1g2cevwsjdud7ejp.find(before.concat(after), predicate);
};
var tryPrev = function (values, index, predicate) {
var before = $_1g2cevwsjdud7ejp.reverse(values.slice(0, index));
return $_1g2cevwsjdud7ejp.find(before, predicate);
};
var cycleNext = function (values, index, predicate) {
var before = values.slice(0, index);
var after = values.slice(index + 1);
return $_1g2cevwsjdud7ejp.find(after.concat(before), predicate);
};
var tryNext = function (values, index, predicate) {
var after = values.slice(index + 1);
return $_1g2cevwsjdud7ejp.find(after, predicate);
};
var $_ccuwl6101jdud7f3o = {
cyclePrev: cyclePrev,
cycleNext: cycleNext,
tryPrev: tryPrev,
tryNext: tryNext
};
var isSupported = function (dom) {
return dom.style !== undefined;
};
var $_e1lc9g104jdud7f43 = { isSupported: isSupported };
var internalSet = function (dom, property, value) {
if (!$_9rljuwzjdud7ekb.isString(value)) {
console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);
throw new Error('CSS value must be a string: ' + value);
}
if ($_e1lc9g104jdud7f43.isSupported(dom))
dom.style.setProperty(property, value);
};
var internalRemove = function (dom, property) {
if ($_e1lc9g104jdud7f43.isSupported(dom))
dom.style.removeProperty(property);
};
var set$2 = function (element, property, value) {
var dom = element.dom();
internalSet(dom, property, value);
};
var setAll$1 = function (element, css) {
var dom = element.dom();
$_2dykn0x0jdud7ekc.each(css, function (v, k) {
internalSet(dom, k, v);
});
};
var setOptions = function (element, css) {
var dom = element.dom();
$_2dykn0x0jdud7ekc.each(css, function (v, k) {
v.fold(function () {
internalRemove(dom, k);
}, function (value) {
internalSet(dom, k, value);
});
});
};
var get$3 = function (element, property) {
var dom = element.dom();
var styles = window.getComputedStyle(dom);
var r = styles.getPropertyValue(property);
var v = r === '' && !$_1tyeizxjjdud7em4.inBody(element) ? getUnsafeProperty(dom, property) : r;
return v === null ? undefined : v;
};
var getUnsafeProperty = function (dom, property) {
return $_e1lc9g104jdud7f43.isSupported(dom) ? dom.style.getPropertyValue(property) : '';
};
var getRaw = function (element, property) {
var dom = element.dom();
var raw = getUnsafeProperty(dom, property);
return Option.from(raw).filter(function (r) {
return r.length > 0;
});
};
var getAllRaw = function (element) {
var css = {};
var dom = element.dom();
if ($_e1lc9g104jdud7f43.isSupported(dom)) {
for (var i = 0; i < dom.style.length; i++) {
var ruleName = dom.style.item(i);
css[ruleName] = dom.style[ruleName];
}
}
return css;
};
var isValidValue = function (tag, property, value) {
var element = $_eobgtqxfjdud7elu.fromTag(tag);
set$2(element, property, value);
var style = getRaw(element, property);
return style.isSome();
};
var remove$5 = function (element, property) {
var dom = element.dom();
internalRemove(dom, property);
if ($_2vghk1xrjdud7ems.has(element, 'style') && $_2e2eauwvjdud7ek5.trim($_2vghk1xrjdud7ems.get(element, 'style')) === '') {
$_2vghk1xrjdud7ems.remove(element, 'style');
}
};
var preserve = function (element, f) {
var oldStyles = $_2vghk1xrjdud7ems.get(element, 'style');
var result = f(element);
var restore = oldStyles === undefined ? $_2vghk1xrjdud7ems.remove : $_2vghk1xrjdud7ems.set;
restore(element, 'style', oldStyles);
return result;
};
var copy$1 = function (source, target) {
var sourceDom = source.dom();
var targetDom = target.dom();
if ($_e1lc9g104jdud7f43.isSupported(sourceDom) && $_e1lc9g104jdud7f43.isSupported(targetDom)) {
targetDom.style.cssText = sourceDom.style.cssText;
}
};
var reflow = function (e) {
return e.dom().offsetWidth;
};
var transferOne$1 = function (source, destination, style) {
getRaw(source, style).each(function (value) {
if (getRaw(destination, style).isNone())
set$2(destination, style, value);
});
};
var transfer$1 = function (source, destination, styles) {
if (!$_50qkdpxkjdud7em6.isElement(source) || !$_50qkdpxkjdud7em6.isElement(destination))
return;
$_1g2cevwsjdud7ejp.each(styles, function (style) {
transferOne$1(source, destination, style);
});
};
var $_btgbcy103jdud7f3t = {
copy: copy$1,
set: set$2,
preserve: preserve,
setAll: setAll$1,
setOptions: setOptions,
remove: remove$5,
get: get$3,
getRaw: getRaw,
getAllRaw: getAllRaw,
isValidValue: isValidValue,
reflow: reflow,
transfer: transfer$1
};
function Dimension (name, getOffset) {
var set = function (element, h) {
if (!$_9rljuwzjdud7ekb.isNumber(h) && !h.match(/^[0-9]+$/))
throw name + '.set accepts only positive integer values. Value was ' + h;
var dom = element.dom();
if ($_e1lc9g104jdud7f43.isSupported(dom))
dom.style[name] = h + 'px';
};
var get = function (element) {
var r = getOffset(element);
if (r <= 0 || r === null) {
var css = $_btgbcy103jdud7f3t.get(element, name);
return parseFloat(css) || 0;
}
return r;
};
var getOuter = get;
var aggregate = function (element, properties) {
return $_1g2cevwsjdud7ejp.foldl(properties, function (acc, property) {
var val = $_btgbcy103jdud7f3t.get(element, property);
var value = val === undefined ? 0 : parseInt(val, 10);
return isNaN(value) ? acc : acc + value;
}, 0);
};
var max = function (element, value, properties) {
var cumulativeInclusions = aggregate(element, properties);
var absoluteMax = value > cumulativeInclusions ? value - cumulativeInclusions : 0;
return absoluteMax;
};
return {
set: set,
get: get,
getOuter: getOuter,
aggregate: aggregate,
max: max
};
}
var api = Dimension('height', function (element) {
return $_1tyeizxjjdud7em4.inBody(element) ? element.dom().getBoundingClientRect().height : element.dom().offsetHeight;
});
var set$3 = function (element, h) {
api.set(element, h);
};
var get$4 = function (element) {
return api.get(element);
};
var getOuter$1 = function (element) {
return api.getOuter(element);
};
var setMax = function (element, value) {
var inclusions = [
'margin-top',
'border-top-width',
'padding-top',
'padding-bottom',
'border-bottom-width',
'margin-bottom'
];
var absMax = api.max(element, value, inclusions);
$_btgbcy103jdud7f3t.set(element, 'max-height', absMax + 'px');
};
var $_q9861102jdud7f3r = {
set: set$3,
get: get$4,
getOuter: getOuter$1,
setMax: setMax
};
var create$2 = function (cyclicField) {
var schema = [
$_euqmtby7jdud7ev7.option('onEscape'),
$_euqmtby7jdud7ev7.option('onEnter'),
$_euqmtby7jdud7ev7.defaulted('selector', '[data-alloy-tabstop="true"]'),
$_euqmtby7jdud7ev7.defaulted('firstTabstop', 0),
$_euqmtby7jdud7ev7.defaulted('useTabstopAt', $_9njj9iwjjdud7eix.constant(true)),
$_euqmtby7jdud7ev7.option('visibilitySelector')
].concat([cyclicField]);
var isVisible = function (tabbingConfig, element) {
var target = tabbingConfig.visibilitySelector().bind(function (sel) {
return $_a3quyizxjdud7f3e.closest(element, sel);
}).getOr(element);
return $_q9861102jdud7f3r.get(target) > 0;
};
var findInitial = function (component, tabbingConfig) {
var tabstops = $_df6s98zvjdud7f39.descendants(component.element(), tabbingConfig.selector());
var visibles = $_1g2cevwsjdud7ejp.filter(tabstops, function (elem) {
return isVisible(tabbingConfig, elem);
});
return Option.from(visibles[tabbingConfig.firstTabstop()]);
};
var findCurrent = function (component, tabbingConfig) {
return tabbingConfig.focusManager().get(component).bind(function (elem) {
return $_a3quyizxjdud7f3e.closest(elem, tabbingConfig.selector());
});
};
var isTabstop = function (tabbingConfig, element) {
return isVisible(tabbingConfig, element) && tabbingConfig.useTabstopAt()(element);
};
var focusIn = function (component, tabbingConfig, tabbingState) {
findInitial(component, tabbingConfig).each(function (target) {
tabbingConfig.focusManager().set(component, target);
});
};
var goFromTabstop = function (component, tabstops, stopIndex, tabbingConfig, cycle) {
return cycle(tabstops, stopIndex, function (elem) {
return isTabstop(tabbingConfig, elem);
}).fold(function () {
return tabbingConfig.cyclic() ? Option.some(true) : Option.none();
}, function (target) {
tabbingConfig.focusManager().set(component, target);
return Option.some(true);
});
};
var go = function (component, simulatedEvent, tabbingConfig, cycle) {
var tabstops = $_df6s98zvjdud7f39.descendants(component.element(), tabbingConfig.selector());
return findCurrent(component, tabbingConfig).bind(function (tabstop) {
var optStopIndex = $_1g2cevwsjdud7ejp.findIndex(tabstops, $_9njj9iwjjdud7eix.curry($_f1y1rtx9jdud7el7.eq, tabstop));
return optStopIndex.bind(function (stopIndex) {
return goFromTabstop(component, tabstops, stopIndex, tabbingConfig, cycle);
});
});
};
var goBackwards = function (component, simulatedEvent, tabbingConfig, tabbingState) {
var navigate = tabbingConfig.cyclic() ? $_ccuwl6101jdud7f3o.cyclePrev : $_ccuwl6101jdud7f3o.tryPrev;
return go(component, simulatedEvent, tabbingConfig, navigate);
};
var goForwards = function (component, simulatedEvent, tabbingConfig, tabbingState) {
var navigate = tabbingConfig.cyclic() ? $_ccuwl6101jdud7f3o.cycleNext : $_ccuwl6101jdud7f3o.tryNext;
return go(component, simulatedEvent, tabbingConfig, navigate);
};
var execute = function (component, simulatedEvent, tabbingConfig, tabbingState) {
return tabbingConfig.onEnter().bind(function (f) {
return f(component, simulatedEvent);
});
};
var exit = function (component, simulatedEvent, tabbingConfig, tabbingState) {
return tabbingConfig.onEscape().bind(function (f) {
return f(component, simulatedEvent);
});
};
var getRules = $_9njj9iwjjdud7eix.constant([
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.and([
$_7ccsxg100jdud7f3k.isShift,
$_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.TAB())
]), goBackwards),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.TAB()), goForwards),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.ESCAPE()), exit),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.and([
$_7ccsxg100jdud7f3k.isNotShift,
$_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.ENTER())
]), execute)
]);
var getEvents = $_9njj9iwjjdud7eix.constant({});
var getApis = $_9njj9iwjjdud7eix.constant({});
return $_3ktlz9zqjdud7f2g.typical(schema, $_71cmtkyjjdud7exe.init, getRules, getEvents, getApis, Option.some(focusIn));
};
var $_5orss7zojdud7f1v = { create: create$2 };
var AcyclicType = $_5orss7zojdud7f1v.create($_euqmtby7jdud7ev7.state('cyclic', $_9njj9iwjjdud7eix.constant(false)));
var CyclicType = $_5orss7zojdud7f1v.create($_euqmtby7jdud7ev7.state('cyclic', $_9njj9iwjjdud7eix.constant(true)));
var inside = function (target) {
return $_50qkdpxkjdud7em6.name(target) === 'input' && $_2vghk1xrjdud7ems.get(target, 'type') !== 'radio' || $_50qkdpxkjdud7em6.name(target) === 'textarea';
};
var $_ddk3fu108jdud7f4o = { inside: inside };
var doDefaultExecute = function (component, simulatedEvent, focused) {
$_98da6jwgjdud7eil.dispatch(component, focused, $_801kkqwhjdud7eiq.execute());
return Option.some(true);
};
var defaultExecute = function (component, simulatedEvent, focused) {
return $_ddk3fu108jdud7f4o.inside(focused) && $_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.SPACE())(simulatedEvent.event()) ? Option.none() : doDefaultExecute(component, simulatedEvent, focused);
};
var $_afxwya109jdud7f4r = { defaultExecute: defaultExecute };
var schema$1 = [
$_euqmtby7jdud7ev7.defaulted('execute', $_afxwya109jdud7f4r.defaultExecute),
$_euqmtby7jdud7ev7.defaulted('useSpace', false),
$_euqmtby7jdud7ev7.defaulted('useEnter', true),
$_euqmtby7jdud7ev7.defaulted('useControlEnter', false),
$_euqmtby7jdud7ev7.defaulted('useDown', false)
];
var execute = function (component, simulatedEvent, executeConfig, executeState) {
return executeConfig.execute()(component, simulatedEvent, component.element());
};
var getRules = function (component, simulatedEvent, executeConfig, executeState) {
var spaceExec = executeConfig.useSpace() && !$_ddk3fu108jdud7f4o.inside(component.element()) ? $_8y8vdkzpjdud7f2d.SPACE() : [];
var enterExec = executeConfig.useEnter() ? $_8y8vdkzpjdud7f2d.ENTER() : [];
var downExec = executeConfig.useDown() ? $_8y8vdkzpjdud7f2d.DOWN() : [];
var execKeys = spaceExec.concat(enterExec).concat(downExec);
return [$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet(execKeys), execute)].concat(executeConfig.useControlEnter() ? [$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.and([
$_7ccsxg100jdud7f3k.isControl,
$_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.ENTER())
]), execute)] : []);
};
var getEvents = $_9njj9iwjjdud7eix.constant({});
var getApis = $_9njj9iwjjdud7eix.constant({});
var ExecutionType = $_3ktlz9zqjdud7f2g.typical(schema$1, $_71cmtkyjjdud7exe.init, getRules, getEvents, getApis, Option.none());
var flatgrid = function (spec) {
var dimensions = Cell(Option.none());
var setGridSize = function (numRows, numColumns) {
dimensions.set(Option.some({
numRows: $_9njj9iwjjdud7eix.constant(numRows),
numColumns: $_9njj9iwjjdud7eix.constant(numColumns)
}));
};
var getNumRows = function () {
return dimensions.get().map(function (d) {
return d.numRows();
});
};
var getNumColumns = function () {
return dimensions.get().map(function (d) {
return d.numColumns();
});
};
return BehaviourState({
readState: $_9njj9iwjjdud7eix.constant({}),
setGridSize: setGridSize,
getNumRows: getNumRows,
getNumColumns: getNumColumns
});
};
var init$1 = function (spec) {
return spec.state()(spec);
};
var $_a1e0cn10bjdud7f52 = {
flatgrid: flatgrid,
init: init$1
};
var onDirection = function (isLtr, isRtl) {
return function (element) {
return getDirection(element) === 'rtl' ? isRtl : isLtr;
};
};
var getDirection = function (element) {
return $_btgbcy103jdud7f3t.get(element, 'direction') === 'rtl' ? 'rtl' : 'ltr';
};
var $_6dinub10djdud7f5a = {
onDirection: onDirection,
getDirection: getDirection
};
var useH = function (movement) {
return function (component, simulatedEvent, config, state) {
var move = movement(component.element());
return use(move, component, simulatedEvent, config, state);
};
};
var west = function (moveLeft, moveRight) {
var movement = $_6dinub10djdud7f5a.onDirection(moveLeft, moveRight);
return useH(movement);
};
var east = function (moveLeft, moveRight) {
var movement = $_6dinub10djdud7f5a.onDirection(moveRight, moveLeft);
return useH(movement);
};
var useV = function (move) {
return function (component, simulatedEvent, config, state) {
return use(move, component, simulatedEvent, config, state);
};
};
var use = function (move, component, simulatedEvent, config, state) {
var outcome = config.focusManager().get(component).bind(function (focused) {
return move(component.element(), focused, config, state);
});
return outcome.map(function (newFocus) {
config.focusManager().set(component, newFocus);
return true;
});
};
var $_ev1k2410cjdud7f58 = {
east: east,
west: west,
north: useV,
south: useV,
move: useV
};
var indexInfo = $_8o1q69x4jdud7ekz.immutableBag([
'index',
'candidates'
], []);
var locate = function (candidates, predicate) {
return $_1g2cevwsjdud7ejp.findIndex(candidates, predicate).map(function (index) {
return indexInfo({
index: index,
candidates: candidates
});
});
};
var $_7l3fto10fjdud7f5i = { locate: locate };
var visibilityToggler = function (element, property, hiddenValue, visibleValue) {
var initial = $_btgbcy103jdud7f3t.get(element, property);
if (initial === undefined)
initial = '';
var value = initial === hiddenValue ? visibleValue : hiddenValue;
var off = $_9njj9iwjjdud7eix.curry($_btgbcy103jdud7f3t.set, element, property, initial);
var on = $_9njj9iwjjdud7eix.curry($_btgbcy103jdud7f3t.set, element, property, value);
return Toggler(off, on, false);
};
var toggler$1 = function (element) {
return visibilityToggler(element, 'visibility', 'hidden', 'visible');
};
var displayToggler = function (element, value) {
return visibilityToggler(element, 'display', 'none', value);
};
var isHidden = function (dom) {
return dom.offsetWidth <= 0 && dom.offsetHeight <= 0;
};
var isVisible = function (element) {
var dom = element.dom();
return !isHidden(dom);
};
var $_dbpb0m10gjdud7f5m = {
toggler: toggler$1,
displayToggler: displayToggler,
isVisible: isVisible
};
var locateVisible = function (container, current, selector) {
var filter = $_dbpb0m10gjdud7f5m.isVisible;
return locateIn(container, current, selector, filter);
};
var locateIn = function (container, current, selector, filter) {
var predicate = $_9njj9iwjjdud7eix.curry($_f1y1rtx9jdud7el7.eq, current);
var candidates = $_df6s98zvjdud7f39.descendants(container, selector);
var visible = $_1g2cevwsjdud7ejp.filter(candidates, $_dbpb0m10gjdud7f5m.isVisible);
return $_7l3fto10fjdud7f5i.locate(visible, predicate);
};
var findIndex$2 = function (elements, target) {
return $_1g2cevwsjdud7ejp.findIndex(elements, function (elem) {
return $_f1y1rtx9jdud7el7.eq(target, elem);
});
};
var $_80m1p210ejdud7f5c = {
locateVisible: locateVisible,
locateIn: locateIn,
findIndex: findIndex$2
};
var withGrid = function (values, index, numCols, f) {
var oldRow = Math.floor(index / numCols);
var oldColumn = index % numCols;
return f(oldRow, oldColumn).bind(function (address) {
var newIndex = address.row() * numCols + address.column();
return newIndex >= 0 && newIndex < values.length ? Option.some(values[newIndex]) : Option.none();
});
};
var cycleHorizontal = function (values, index, numRows, numCols, delta) {
return withGrid(values, index, numCols, function (oldRow, oldColumn) {
var onLastRow = oldRow === numRows - 1;
var colsInRow = onLastRow ? values.length - oldRow * numCols : numCols;
var newColumn = $_b3gjjrzujdud7f38.cycleBy(oldColumn, delta, 0, colsInRow - 1);
return Option.some({
row: $_9njj9iwjjdud7eix.constant(oldRow),
column: $_9njj9iwjjdud7eix.constant(newColumn)
});
});
};
var cycleVertical = function (values, index, numRows, numCols, delta) {
return withGrid(values, index, numCols, function (oldRow, oldColumn) {
var newRow = $_b3gjjrzujdud7f38.cycleBy(oldRow, delta, 0, numRows - 1);
var onLastRow = newRow === numRows - 1;
var colsInRow = onLastRow ? values.length - newRow * numCols : numCols;
var newCol = $_b3gjjrzujdud7f38.cap(oldColumn, 0, colsInRow - 1);
return Option.some({
row: $_9njj9iwjjdud7eix.constant(newRow),
column: $_9njj9iwjjdud7eix.constant(newCol)
});
});
};
var cycleRight = function (values, index, numRows, numCols) {
return cycleHorizontal(values, index, numRows, numCols, +1);
};
var cycleLeft = function (values, index, numRows, numCols) {
return cycleHorizontal(values, index, numRows, numCols, -1);
};
var cycleUp = function (values, index, numRows, numCols) {
return cycleVertical(values, index, numRows, numCols, -1);
};
var cycleDown = function (values, index, numRows, numCols) {
return cycleVertical(values, index, numRows, numCols, +1);
};
var $_7hyrk410hjdud7f5p = {
cycleDown: cycleDown,
cycleUp: cycleUp,
cycleLeft: cycleLeft,
cycleRight: cycleRight
};
var schema$2 = [
$_euqmtby7jdud7ev7.strict('selector'),
$_euqmtby7jdud7ev7.defaulted('execute', $_afxwya109jdud7f4r.defaultExecute),
$_etkinez6jdud7ezi.onKeyboardHandler('onEscape'),
$_euqmtby7jdud7ev7.defaulted('captureTab', false),
$_etkinez6jdud7ezi.initSize()
];
var focusIn = function (component, gridConfig, gridState) {
$_a3quyizxjdud7f3e.descendant(component.element(), gridConfig.selector()).each(function (first) {
gridConfig.focusManager().set(component, first);
});
};
var findCurrent = function (component, gridConfig) {
return gridConfig.focusManager().get(component).bind(function (elem) {
return $_a3quyizxjdud7f3e.closest(elem, gridConfig.selector());
});
};
var execute$1 = function (component, simulatedEvent, gridConfig, gridState) {
return findCurrent(component, gridConfig).bind(function (focused) {
return gridConfig.execute()(component, simulatedEvent, focused);
});
};
var doMove = function (cycle) {
return function (element, focused, gridConfig, gridState) {
return $_80m1p210ejdud7f5c.locateVisible(element, focused, gridConfig.selector()).bind(function (identified) {
return cycle(identified.candidates(), identified.index(), gridState.getNumRows().getOr(gridConfig.initSize().numRows()), gridState.getNumColumns().getOr(gridConfig.initSize().numColumns()));
});
};
};
var handleTab = function (component, simulatedEvent, gridConfig, gridState) {
return gridConfig.captureTab() ? Option.some(true) : Option.none();
};
var doEscape = function (component, simulatedEvent, gridConfig, gridState) {
return gridConfig.onEscape()(component, simulatedEvent);
};
var moveLeft = doMove($_7hyrk410hjdud7f5p.cycleLeft);
var moveRight = doMove($_7hyrk410hjdud7f5p.cycleRight);
var moveNorth = doMove($_7hyrk410hjdud7f5p.cycleUp);
var moveSouth = doMove($_7hyrk410hjdud7f5p.cycleDown);
var getRules$1 = $_9njj9iwjjdud7eix.constant([
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.LEFT()), $_ev1k2410cjdud7f58.west(moveLeft, moveRight)),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.RIGHT()), $_ev1k2410cjdud7f58.east(moveLeft, moveRight)),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.UP()), $_ev1k2410cjdud7f58.north(moveNorth)),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.DOWN()), $_ev1k2410cjdud7f58.south(moveSouth)),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.and([
$_7ccsxg100jdud7f3k.isShift,
$_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.TAB())
]), handleTab),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.and([
$_7ccsxg100jdud7f3k.isNotShift,
$_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.TAB())
]), handleTab),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.ESCAPE()), doEscape),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.SPACE().concat($_8y8vdkzpjdud7f2d.ENTER())), execute$1)
]);
var getEvents$1 = $_9njj9iwjjdud7eix.constant({});
var getApis$1 = {};
var FlatgridType = $_3ktlz9zqjdud7f2g.typical(schema$2, $_a1e0cn10bjdud7f52.flatgrid, getRules$1, getEvents$1, getApis$1, Option.some(focusIn));
var horizontal = function (container, selector, current, delta) {
return $_80m1p210ejdud7f5c.locateVisible(container, current, selector, $_9njj9iwjjdud7eix.constant(true)).bind(function (identified) {
var index = identified.index();
var candidates = identified.candidates();
var newIndex = $_b3gjjrzujdud7f38.cycleBy(index, delta, 0, candidates.length - 1);
return Option.from(candidates[newIndex]);
});
};
var $_9mpzr710jjdud7f61 = { horizontal: horizontal };
var schema$3 = [
$_euqmtby7jdud7ev7.strict('selector'),
$_euqmtby7jdud7ev7.defaulted('getInitial', Option.none),
$_euqmtby7jdud7ev7.defaulted('execute', $_afxwya109jdud7f4r.defaultExecute),
$_euqmtby7jdud7ev7.defaulted('executeOnMove', false)
];
var findCurrent$1 = function (component, flowConfig) {
return flowConfig.focusManager().get(component).bind(function (elem) {
return $_a3quyizxjdud7f3e.closest(elem, flowConfig.selector());
});
};
var execute$2 = function (component, simulatedEvent, flowConfig) {
return findCurrent$1(component, flowConfig).bind(function (focused) {
return flowConfig.execute()(component, simulatedEvent, focused);
});
};
var focusIn$1 = function (component, flowConfig) {
flowConfig.getInitial()(component).or($_a3quyizxjdud7f3e.descendant(component.element(), flowConfig.selector())).each(function (first) {
flowConfig.focusManager().set(component, first);
});
};
var moveLeft$1 = function (element, focused, info) {
return $_9mpzr710jjdud7f61.horizontal(element, info.selector(), focused, -1);
};
var moveRight$1 = function (element, focused, info) {
return $_9mpzr710jjdud7f61.horizontal(element, info.selector(), focused, +1);
};
var doMove$1 = function (movement) {
return function (component, simulatedEvent, flowConfig) {
return movement(component, simulatedEvent, flowConfig).bind(function () {
return flowConfig.executeOnMove() ? execute$2(component, simulatedEvent, flowConfig) : Option.some(true);
});
};
};
var getRules$2 = function (_) {
return [
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.LEFT().concat($_8y8vdkzpjdud7f2d.UP())), doMove$1($_ev1k2410cjdud7f58.west(moveLeft$1, moveRight$1))),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.RIGHT().concat($_8y8vdkzpjdud7f2d.DOWN())), doMove$1($_ev1k2410cjdud7f58.east(moveLeft$1, moveRight$1))),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.ENTER()), execute$2),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.SPACE()), execute$2)
];
};
var getEvents$2 = $_9njj9iwjjdud7eix.constant({});
var getApis$2 = $_9njj9iwjjdud7eix.constant({});
var FlowType = $_3ktlz9zqjdud7f2g.typical(schema$3, $_71cmtkyjjdud7exe.init, getRules$2, getEvents$2, getApis$2, Option.some(focusIn$1));
var outcome = $_8o1q69x4jdud7ekz.immutableBag([
'rowIndex',
'columnIndex',
'cell'
], []);
var toCell = function (matrix, rowIndex, columnIndex) {
return Option.from(matrix[rowIndex]).bind(function (row) {
return Option.from(row[columnIndex]).map(function (cell) {
return outcome({
rowIndex: rowIndex,
columnIndex: columnIndex,
cell: cell
});
});
});
};
var cycleHorizontal$1 = function (matrix, rowIndex, startCol, deltaCol) {
var row = matrix[rowIndex];
var colsInRow = row.length;
var newColIndex = $_b3gjjrzujdud7f38.cycleBy(startCol, deltaCol, 0, colsInRow - 1);
return toCell(matrix, rowIndex, newColIndex);
};
var cycleVertical$1 = function (matrix, colIndex, startRow, deltaRow) {
var nextRowIndex = $_b3gjjrzujdud7f38.cycleBy(startRow, deltaRow, 0, matrix.length - 1);
var colsInNextRow = matrix[nextRowIndex].length;
var nextColIndex = $_b3gjjrzujdud7f38.cap(colIndex, 0, colsInNextRow - 1);
return toCell(matrix, nextRowIndex, nextColIndex);
};
var moveHorizontal = function (matrix, rowIndex, startCol, deltaCol) {
var row = matrix[rowIndex];
var colsInRow = row.length;
var newColIndex = $_b3gjjrzujdud7f38.cap(startCol + deltaCol, 0, colsInRow - 1);
return toCell(matrix, rowIndex, newColIndex);
};
var moveVertical = function (matrix, colIndex, startRow, deltaRow) {
var nextRowIndex = $_b3gjjrzujdud7f38.cap(startRow + deltaRow, 0, matrix.length - 1);
var colsInNextRow = matrix[nextRowIndex].length;
var nextColIndex = $_b3gjjrzujdud7f38.cap(colIndex, 0, colsInNextRow - 1);
return toCell(matrix, nextRowIndex, nextColIndex);
};
var cycleRight$1 = function (matrix, startRow, startCol) {
return cycleHorizontal$1(matrix, startRow, startCol, +1);
};
var cycleLeft$1 = function (matrix, startRow, startCol) {
return cycleHorizontal$1(matrix, startRow, startCol, -1);
};
var cycleUp$1 = function (matrix, startRow, startCol) {
return cycleVertical$1(matrix, startCol, startRow, -1);
};
var cycleDown$1 = function (matrix, startRow, startCol) {
return cycleVertical$1(matrix, startCol, startRow, +1);
};
var moveLeft$2 = function (matrix, startRow, startCol) {
return moveHorizontal(matrix, startRow, startCol, -1);
};
var moveRight$2 = function (matrix, startRow, startCol) {
return moveHorizontal(matrix, startRow, startCol, +1);
};
var moveUp = function (matrix, startRow, startCol) {
return moveVertical(matrix, startCol, startRow, -1);
};
var moveDown = function (matrix, startRow, startCol) {
return moveVertical(matrix, startCol, startRow, +1);
};
var $_arz1zn10ljdud7f6n = {
cycleRight: cycleRight$1,
cycleLeft: cycleLeft$1,
cycleUp: cycleUp$1,
cycleDown: cycleDown$1,
moveLeft: moveLeft$2,
moveRight: moveRight$2,
moveUp: moveUp,
moveDown: moveDown
};
var schema$4 = [
$_euqmtby7jdud7ev7.strictObjOf('selectors', [
$_euqmtby7jdud7ev7.strict('row'),
$_euqmtby7jdud7ev7.strict('cell')
]),
$_euqmtby7jdud7ev7.defaulted('cycles', true),
$_euqmtby7jdud7ev7.defaulted('previousSelector', Option.none),
$_euqmtby7jdud7ev7.defaulted('execute', $_afxwya109jdud7f4r.defaultExecute)
];
var focusIn$2 = function (component, matrixConfig) {
var focused = matrixConfig.previousSelector()(component).orThunk(function () {
var selectors = matrixConfig.selectors();
return $_a3quyizxjdud7f3e.descendant(component.element(), selectors.cell());
});
focused.each(function (cell) {
matrixConfig.focusManager().set(component, cell);
});
};
var execute$3 = function (component, simulatedEvent, matrixConfig) {
return $_25580rytjdud7ey7.search(component.element()).bind(function (focused) {
return matrixConfig.execute()(component, simulatedEvent, focused);
});
};
var toMatrix = function (rows, matrixConfig) {
return $_1g2cevwsjdud7ejp.map(rows, function (row) {
return $_df6s98zvjdud7f39.descendants(row, matrixConfig.selectors().cell());
});
};
var doMove$2 = function (ifCycle, ifMove) {
return function (element, focused, matrixConfig) {
var move = matrixConfig.cycles() ? ifCycle : ifMove;
return $_a3quyizxjdud7f3e.closest(focused, matrixConfig.selectors().row()).bind(function (inRow) {
var cellsInRow = $_df6s98zvjdud7f39.descendants(inRow, matrixConfig.selectors().cell());
return $_80m1p210ejdud7f5c.findIndex(cellsInRow, focused).bind(function (colIndex) {
var allRows = $_df6s98zvjdud7f39.descendants(element, matrixConfig.selectors().row());
return $_80m1p210ejdud7f5c.findIndex(allRows, inRow).bind(function (rowIndex) {
var matrix = toMatrix(allRows, matrixConfig);
return move(matrix, rowIndex, colIndex).map(function (next) {
return next.cell();
});
});
});
});
};
};
var moveLeft$3 = doMove$2($_arz1zn10ljdud7f6n.cycleLeft, $_arz1zn10ljdud7f6n.moveLeft);
var moveRight$3 = doMove$2($_arz1zn10ljdud7f6n.cycleRight, $_arz1zn10ljdud7f6n.moveRight);
var moveNorth$1 = doMove$2($_arz1zn10ljdud7f6n.cycleUp, $_arz1zn10ljdud7f6n.moveUp);
var moveSouth$1 = doMove$2($_arz1zn10ljdud7f6n.cycleDown, $_arz1zn10ljdud7f6n.moveDown);
var getRules$3 = $_9njj9iwjjdud7eix.constant([
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.LEFT()), $_ev1k2410cjdud7f58.west(moveLeft$3, moveRight$3)),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.RIGHT()), $_ev1k2410cjdud7f58.east(moveLeft$3, moveRight$3)),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.UP()), $_ev1k2410cjdud7f58.north(moveNorth$1)),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.DOWN()), $_ev1k2410cjdud7f58.south(moveSouth$1)),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.SPACE().concat($_8y8vdkzpjdud7f2d.ENTER())), execute$3)
]);
var getEvents$3 = $_9njj9iwjjdud7eix.constant({});
var getApis$3 = $_9njj9iwjjdud7eix.constant({});
var MatrixType = $_3ktlz9zqjdud7f2g.typical(schema$4, $_71cmtkyjjdud7exe.init, getRules$3, getEvents$3, getApis$3, Option.some(focusIn$2));
var schema$5 = [
$_euqmtby7jdud7ev7.strict('selector'),
$_euqmtby7jdud7ev7.defaulted('execute', $_afxwya109jdud7f4r.defaultExecute),
$_euqmtby7jdud7ev7.defaulted('moveOnTab', false)
];
var execute$4 = function (component, simulatedEvent, menuConfig) {
return menuConfig.focusManager().get(component).bind(function (focused) {
return menuConfig.execute()(component, simulatedEvent, focused);
});
};
var focusIn$3 = function (component, menuConfig, simulatedEvent) {
$_a3quyizxjdud7f3e.descendant(component.element(), menuConfig.selector()).each(function (first) {
menuConfig.focusManager().set(component, first);
});
};
var moveUp$1 = function (element, focused, info) {
return $_9mpzr710jjdud7f61.horizontal(element, info.selector(), focused, -1);
};
var moveDown$1 = function (element, focused, info) {
return $_9mpzr710jjdud7f61.horizontal(element, info.selector(), focused, +1);
};
var fireShiftTab = function (component, simulatedEvent, menuConfig) {
return menuConfig.moveOnTab() ? $_ev1k2410cjdud7f58.move(moveUp$1)(component, simulatedEvent, menuConfig) : Option.none();
};
var fireTab = function (component, simulatedEvent, menuConfig) {
return menuConfig.moveOnTab() ? $_ev1k2410cjdud7f58.move(moveDown$1)(component, simulatedEvent, menuConfig) : Option.none();
};
var getRules$4 = $_9njj9iwjjdud7eix.constant([
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.UP()), $_ev1k2410cjdud7f58.move(moveUp$1)),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.DOWN()), $_ev1k2410cjdud7f58.move(moveDown$1)),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.and([
$_7ccsxg100jdud7f3k.isShift,
$_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.TAB())
]), fireShiftTab),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.and([
$_7ccsxg100jdud7f3k.isNotShift,
$_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.TAB())
]), fireTab),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.ENTER()), execute$4),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.SPACE()), execute$4)
]);
var getEvents$4 = $_9njj9iwjjdud7eix.constant({});
var getApis$4 = $_9njj9iwjjdud7eix.constant({});
var MenuType = $_3ktlz9zqjdud7f2g.typical(schema$5, $_71cmtkyjjdud7exe.init, getRules$4, getEvents$4, getApis$4, Option.some(focusIn$3));
var schema$6 = [
$_etkinez6jdud7ezi.onKeyboardHandler('onSpace'),
$_etkinez6jdud7ezi.onKeyboardHandler('onEnter'),
$_etkinez6jdud7ezi.onKeyboardHandler('onShiftEnter'),
$_etkinez6jdud7ezi.onKeyboardHandler('onLeft'),
$_etkinez6jdud7ezi.onKeyboardHandler('onRight'),
$_etkinez6jdud7ezi.onKeyboardHandler('onTab'),
$_etkinez6jdud7ezi.onKeyboardHandler('onShiftTab'),
$_etkinez6jdud7ezi.onKeyboardHandler('onUp'),
$_etkinez6jdud7ezi.onKeyboardHandler('onDown'),
$_etkinez6jdud7ezi.onKeyboardHandler('onEscape'),
$_euqmtby7jdud7ev7.option('focusIn')
];
var getRules$5 = function (component, simulatedEvent, executeInfo) {
return [
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.SPACE()), executeInfo.onSpace()),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.and([
$_7ccsxg100jdud7f3k.isNotShift,
$_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.ENTER())
]), executeInfo.onEnter()),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.and([
$_7ccsxg100jdud7f3k.isShift,
$_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.ENTER())
]), executeInfo.onShiftEnter()),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.and([
$_7ccsxg100jdud7f3k.isShift,
$_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.TAB())
]), executeInfo.onShiftTab()),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.and([
$_7ccsxg100jdud7f3k.isNotShift,
$_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.TAB())
]), executeInfo.onTab()),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.UP()), executeInfo.onUp()),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.DOWN()), executeInfo.onDown()),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.LEFT()), executeInfo.onLeft()),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.RIGHT()), executeInfo.onRight()),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.SPACE()), executeInfo.onSpace()),
$_33m1mtzzjdud7f3i.rule($_7ccsxg100jdud7f3k.inSet($_8y8vdkzpjdud7f2d.ESCAPE()), executeInfo.onEscape())
];
};
var focusIn$4 = function (component, executeInfo) {
return executeInfo.focusIn().bind(function (f) {
return f(component, executeInfo);
});
};
var getEvents$5 = $_9njj9iwjjdud7eix.constant({});
var getApis$5 = $_9njj9iwjjdud7eix.constant({});
var SpecialType = $_3ktlz9zqjdud7f2g.typical(schema$6, $_71cmtkyjjdud7exe.init, getRules$5, getEvents$5, getApis$5, Option.some(focusIn$4));
var $_bkuaf5zmjdud7f1q = {
acyclic: AcyclicType.schema(),
cyclic: CyclicType.schema(),
flow: FlowType.schema(),
flatgrid: FlatgridType.schema(),
matrix: MatrixType.schema(),
execution: ExecutionType.schema(),
menu: MenuType.schema(),
special: SpecialType.schema()
};
var Keying = $_ax1gfoy2jdud7eu7.createModes({
branchKey: 'mode',
branches: $_bkuaf5zmjdud7f1q,
name: 'keying',
active: {
events: function (keyingConfig, keyingState) {
var handler = keyingConfig.handler();
return handler.toEvents(keyingConfig, keyingState);
}
},
apis: {
focusIn: function (component) {
component.getSystem().triggerFocus(component.element(), component.element());
},
setGridSize: function (component, keyConfig, keyState, numRows, numColumns) {
if (!$_ettibkxsjdud7emz.hasKey(keyState, 'setGridSize')) {
console.error('Layout does not support setGridSize');
} else {
keyState.setGridSize(numRows, numColumns);
}
}
},
state: $_a1e0cn10bjdud7f52
});
var field$1 = function (name, forbidden) {
return $_euqmtby7jdud7ev7.defaultedObjOf(name, {}, $_1g2cevwsjdud7ejp.map(forbidden, function (f) {
return $_euqmtby7jdud7ev7.forbid(f.name(), 'Cannot configure ' + f.name() + ' for ' + name);
}).concat([$_euqmtby7jdud7ev7.state('dump', $_9njj9iwjjdud7eix.identity)]));
};
var get$5 = function (data) {
return data.dump();
};
var $_c7jpu210ojdud7f7a = {
field: field$1,
get: get$5
};
var unique = 0;
var generate$1 = function (prefix) {
var date = new Date();
var time = date.getTime();
var random = Math.floor(Math.random() * 1000000000);
unique++;
return prefix + '_' + random + unique + String(time);
};
var $_3k9wwu10rjdud7f7t = { generate: generate$1 };
var premadeTag = $_3k9wwu10rjdud7f7t.generate('alloy-premade');
var apiConfig = $_3k9wwu10rjdud7f7t.generate('api');
var premade = function (comp) {
return $_ettibkxsjdud7emz.wrap(premadeTag, comp);
};
var getPremade = function (spec) {
return $_ettibkxsjdud7emz.readOptFrom(spec, premadeTag);
};
var makeApi = function (f) {
return $_4nn5bbygjdud7eww.markAsSketchApi(function (component) {
var args = Array.prototype.slice.call(arguments, 0);
var spi = component.config(apiConfig);
return f.apply(undefined, [spi].concat(args));
}, f);
};
var $_37ypl510qjdud7f7n = {
apiConfig: $_9njj9iwjjdud7eix.constant(apiConfig),
makeApi: makeApi,
premade: premade,
getPremade: getPremade
};
var adt$2 = $_2ytffsxwjdud7ets.generate([
{ required: ['data'] },
{ external: ['data'] },
{ optional: ['data'] },
{ group: ['data'] }
]);
var fFactory = $_euqmtby7jdud7ev7.defaulted('factory', { sketch: $_9njj9iwjjdud7eix.identity });
var fSchema = $_euqmtby7jdud7ev7.defaulted('schema', []);
var fName = $_euqmtby7jdud7ev7.strict('name');
var fPname = $_euqmtby7jdud7ev7.field('pname', 'pname', $_6rbn18y8jdud7evc.defaultedThunk(function (typeSpec) {
return '<alloy.' + $_3k9wwu10rjdud7f7t.generate(typeSpec.name) + '>';
}), $_13hkebyejdud7ewm.anyValue());
var fDefaults = $_euqmtby7jdud7ev7.defaulted('defaults', $_9njj9iwjjdud7eix.constant({}));
var fOverrides = $_euqmtby7jdud7ev7.defaulted('overrides', $_9njj9iwjjdud7eix.constant({}));
var requiredSpec = $_13hkebyejdud7ewm.objOf([
fFactory,
fSchema,
fName,
fPname,
fDefaults,
fOverrides
]);
var externalSpec = $_13hkebyejdud7ewm.objOf([
fFactory,
fSchema,
fName,
fDefaults,
fOverrides
]);
var optionalSpec = $_13hkebyejdud7ewm.objOf([
fFactory,
fSchema,
fName,
fPname,
fDefaults,
fOverrides
]);
var groupSpec = $_13hkebyejdud7ewm.objOf([
fFactory,
fSchema,
fName,
$_euqmtby7jdud7ev7.strict('unit'),
fPname,
fDefaults,
fOverrides
]);
var asNamedPart = function (part) {
return part.fold(Option.some, Option.none, Option.some, Option.some);
};
var name$1 = function (part) {
var get = function (data) {
return data.name();
};
return part.fold(get, get, get, get);
};
var asCommon = function (part) {
return part.fold($_9njj9iwjjdud7eix.identity, $_9njj9iwjjdud7eix.identity, $_9njj9iwjjdud7eix.identity, $_9njj9iwjjdud7eix.identity);
};
var convert = function (adtConstructor, partSpec) {
return function (spec) {
var data = $_13hkebyejdud7ewm.asStructOrDie('Converting part type', partSpec, spec);
return adtConstructor(data);
};
};
var $_7938qf10vjdud7f8n = {
required: convert(adt$2.required, requiredSpec),
external: convert(adt$2.external, externalSpec),
optional: convert(adt$2.optional, optionalSpec),
group: convert(adt$2.group, groupSpec),
asNamedPart: asNamedPart,
name: name$1,
asCommon: asCommon,
original: $_9njj9iwjjdud7eix.constant('entirety')
};
var placeholder = 'placeholder';
var adt$3 = $_2ytffsxwjdud7ets.generate([
{
single: [
'required',
'valueThunk'
]
},
{
multiple: [
'required',
'valueThunks'
]
}
]);
var isSubstitute = function (uiType) {
return $_1g2cevwsjdud7ejp.contains([placeholder], uiType);
};
var subPlaceholder = function (owner, detail, compSpec, placeholders) {
if (owner.exists(function (o) {
return o !== compSpec.owner;
}))
return adt$3.single(true, $_9njj9iwjjdud7eix.constant(compSpec));
return $_ettibkxsjdud7emz.readOptFrom(placeholders, compSpec.name).fold(function () {
throw new Error('Unknown placeholder component: ' + compSpec.name + '\nKnown: [' + $_2dykn0x0jdud7ekc.keys(placeholders) + ']\nNamespace: ' + owner.getOr('none') + '\nSpec: ' + $_crnojnydjdud7ewk.stringify(compSpec, null, 2));
}, function (newSpec) {
return newSpec.replace();
});
};
var scan = function (owner, detail, compSpec, placeholders) {
if (compSpec.uiType === placeholder)
return subPlaceholder(owner, detail, compSpec, placeholders);
else
return adt$3.single(false, $_9njj9iwjjdud7eix.constant(compSpec));
};
var substitute = function (owner, detail, compSpec, placeholders) {
var base = scan(owner, detail, compSpec, placeholders);
return base.fold(function (req, valueThunk) {
var value = valueThunk(detail, compSpec.config, compSpec.validated);
var childSpecs = $_ettibkxsjdud7emz.readOptFrom(value, 'components').getOr([]);
var substituted = $_1g2cevwsjdud7ejp.bind(childSpecs, function (c) {
return substitute(owner, detail, c, placeholders);
});
return [$_73qnwowyjdud7ek9.deepMerge(value, { components: substituted })];
}, function (req, valuesThunk) {
var values = valuesThunk(detail, compSpec.config, compSpec.validated);
return values;
});
};
var substituteAll = function (owner, detail, components, placeholders) {
return $_1g2cevwsjdud7ejp.bind(components, function (c) {
return substitute(owner, detail, c, placeholders);
});
};
var oneReplace = function (label, replacements) {
var called = false;
var used = function () {
return called;
};
var replace = function () {
if (called === true)
throw new Error('Trying to use the same placeholder more than once: ' + label);
called = true;
return replacements;
};
var required = function () {
return replacements.fold(function (req, _) {
return req;
}, function (req, _) {
return req;
});
};
return {
name: $_9njj9iwjjdud7eix.constant(label),
required: required,
used: used,
replace: replace
};
};
var substitutePlaces = function (owner, detail, components, placeholders) {
var ps = $_2dykn0x0jdud7ekc.map(placeholders, function (ph, name) {
return oneReplace(name, ph);
});
var outcome = substituteAll(owner, detail, components, ps);
$_2dykn0x0jdud7ekc.each(ps, function (p) {
if (p.used() === false && p.required()) {
throw new Error('Placeholder: ' + p.name() + ' was not found in components list\nNamespace: ' + owner.getOr('none') + '\nComponents: ' + $_crnojnydjdud7ewk.stringify(detail.components(), null, 2));
}
});
return outcome;
};
var singleReplace = function (detail, p) {
var replacement = p;
return replacement.fold(function (req, valueThunk) {
return [valueThunk(detail)];
}, function (req, valuesThunk) {
return valuesThunk(detail);
});
};
var $_1ipz1n10wjdud7f8y = {
single: adt$3.single,
multiple: adt$3.multiple,
isSubstitute: isSubstitute,
placeholder: $_9njj9iwjjdud7eix.constant(placeholder),
substituteAll: substituteAll,
substitutePlaces: substitutePlaces,
singleReplace: singleReplace
};
var combine = function (detail, data, partSpec, partValidated) {
var spec = partSpec;
return $_73qnwowyjdud7ek9.deepMerge(data.defaults()(detail, partSpec, partValidated), partSpec, { uid: detail.partUids()[data.name()] }, data.overrides()(detail, partSpec, partValidated), { 'debug.sketcher': $_ettibkxsjdud7emz.wrap('part-' + data.name(), spec) });
};
var subs = function (owner, detail, parts) {
var internals = {};
var externals = {};
$_1g2cevwsjdud7ejp.each(parts, function (part) {
part.fold(function (data) {
internals[data.pname()] = $_1ipz1n10wjdud7f8y.single(true, function (detail, partSpec, partValidated) {
return data.factory().sketch(combine(detail, data, partSpec, partValidated));
});
}, function (data) {
var partSpec = detail.parts()[data.name()]();
externals[data.name()] = $_9njj9iwjjdud7eix.constant(combine(detail, data, partSpec[$_7938qf10vjdud7f8n.original()]()));
}, function (data) {
internals[data.pname()] = $_1ipz1n10wjdud7f8y.single(false, function (detail, partSpec, partValidated) {
return data.factory().sketch(combine(detail, data, partSpec, partValidated));
});
}, function (data) {
internals[data.pname()] = $_1ipz1n10wjdud7f8y.multiple(true, function (detail, _partSpec, _partValidated) {
var units = detail[data.name()]();
return $_1g2cevwsjdud7ejp.map(units, function (u) {
return data.factory().sketch($_73qnwowyjdud7ek9.deepMerge(data.defaults()(detail, u), u, data.overrides()(detail, u)));
});
});
});
});
return {
internals: $_9njj9iwjjdud7eix.constant(internals),
externals: $_9njj9iwjjdud7eix.constant(externals)
};
};
var $_pp6pv10ujdud7f8h = { subs: subs };
var generate$2 = function (owner, parts) {
var r = {};
$_1g2cevwsjdud7ejp.each(parts, function (part) {
$_7938qf10vjdud7f8n.asNamedPart(part).each(function (np) {
var g = doGenerateOne(owner, np.pname());
r[np.name()] = function (config) {
var validated = $_13hkebyejdud7ewm.asRawOrDie('Part: ' + np.name() + ' in ' + owner, $_13hkebyejdud7ewm.objOf(np.schema()), config);
return $_73qnwowyjdud7ek9.deepMerge(g, {
config: config,
validated: validated
});
};
});
});
return r;
};
var doGenerateOne = function (owner, pname) {
return {
uiType: $_1ipz1n10wjdud7f8y.placeholder(),
owner: owner,
name: pname
};
};
var generateOne = function (owner, pname, config) {
return {
uiType: $_1ipz1n10wjdud7f8y.placeholder(),
owner: owner,
name: pname,
config: config,
validated: {}
};
};
var schemas = function (parts) {
return $_1g2cevwsjdud7ejp.bind(parts, function (part) {
return part.fold(Option.none, Option.some, Option.none, Option.none).map(function (data) {
return $_euqmtby7jdud7ev7.strictObjOf(data.name(), data.schema().concat([$_etkinez6jdud7ezi.snapshot($_7938qf10vjdud7f8n.original())]));
}).toArray();
});
};
var names = function (parts) {
return $_1g2cevwsjdud7ejp.map(parts, $_7938qf10vjdud7f8n.name);
};
var substitutes = function (owner, detail, parts) {
return $_pp6pv10ujdud7f8h.subs(owner, detail, parts);
};
var components = function (owner, detail, internals) {
return $_1ipz1n10wjdud7f8y.substitutePlaces(Option.some(owner), detail, detail.components(), internals);
};
var getPart = function (component, detail, partKey) {
var uid = detail.partUids()[partKey];
return component.getSystem().getByUid(uid).toOption();
};
var getPartOrDie = function (component, detail, partKey) {
return getPart(component, detail, partKey).getOrDie('Could not find part: ' + partKey);
};
var getParts = function (component, detail, partKeys) {
var r = {};
var uids = detail.partUids();
var system = component.getSystem();
$_1g2cevwsjdud7ejp.each(partKeys, function (pk) {
r[pk] = system.getByUid(uids[pk]);
});
return $_2dykn0x0jdud7ekc.map(r, $_9njj9iwjjdud7eix.constant);
};
var getAllParts = function (component, detail) {
var system = component.getSystem();
return $_2dykn0x0jdud7ekc.map(detail.partUids(), function (pUid, k) {
return $_9njj9iwjjdud7eix.constant(system.getByUid(pUid));
});
};
var getPartsOrDie = function (component, detail, partKeys) {
var r = {};
var uids = detail.partUids();
var system = component.getSystem();
$_1g2cevwsjdud7ejp.each(partKeys, function (pk) {
r[pk] = system.getByUid(uids[pk]).getOrDie();
});
return $_2dykn0x0jdud7ekc.map(r, $_9njj9iwjjdud7eix.constant);
};
var defaultUids = function (baseUid, partTypes) {
var partNames = names(partTypes);
return $_ettibkxsjdud7emz.wrapAll($_1g2cevwsjdud7ejp.map(partNames, function (pn) {
return {
key: pn,
value: baseUid + '-' + pn
};
}));
};
var defaultUidsSchema = function (partTypes) {
return $_euqmtby7jdud7ev7.field('partUids', 'partUids', $_6rbn18y8jdud7evc.mergeWithThunk(function (spec) {
return defaultUids(spec.uid, partTypes);
}), $_13hkebyejdud7ewm.anyValue());
};
var $_436kgb10tjdud7f7y = {
generate: generate$2,
generateOne: generateOne,
schemas: schemas,
names: names,
substitutes: substitutes,
components: components,
defaultUids: defaultUids,
defaultUidsSchema: defaultUidsSchema,
getAllParts: getAllParts,
getPart: getPart,
getPartOrDie: getPartOrDie,
getParts: getParts,
getPartsOrDie: getPartsOrDie
};
var prefix$1 = 'alloy-id-';
var idAttr = 'data-alloy-id';
var $_d587rf10yjdud7f9j = {
prefix: $_9njj9iwjjdud7eix.constant(prefix$1),
idAttr: $_9njj9iwjjdud7eix.constant(idAttr)
};
var prefix$2 = $_d587rf10yjdud7f9j.prefix();
var idAttr$1 = $_d587rf10yjdud7f9j.idAttr();
var write = function (label, elem) {
var id = $_3k9wwu10rjdud7f7t.generate(prefix$2 + label);
$_2vghk1xrjdud7ems.set(elem, idAttr$1, id);
return id;
};
var writeOnly = function (elem, uid) {
$_2vghk1xrjdud7ems.set(elem, idAttr$1, uid);
};
var read$2 = function (elem) {
var id = $_50qkdpxkjdud7em6.isElement(elem) ? $_2vghk1xrjdud7ems.get(elem, idAttr$1) : null;
return Option.from(id);
};
var find$3 = function (container, id) {
return $_a3quyizxjdud7f3e.descendant(container, id);
};
var generate$3 = function (prefix) {
return $_3k9wwu10rjdud7f7t.generate(prefix);
};
var revoke = function (elem) {
$_2vghk1xrjdud7ems.remove(elem, idAttr$1);
};
var $_4mrseh10xjdud7f9b = {
revoke: revoke,
write: write,
writeOnly: writeOnly,
read: read$2,
find: find$3,
generate: generate$3,
attribute: $_9njj9iwjjdud7eix.constant(idAttr$1)
};
var getPartsSchema = function (partNames, _optPartNames, _owner) {
var owner = _owner !== undefined ? _owner : 'Unknown owner';
var fallbackThunk = function () {
return [$_etkinez6jdud7ezi.output('partUids', {})];
};
var optPartNames = _optPartNames !== undefined ? _optPartNames : fallbackThunk();
if (partNames.length === 0 && optPartNames.length === 0)
return fallbackThunk();
var partsSchema = $_euqmtby7jdud7ev7.strictObjOf('parts', $_1g2cevwsjdud7ejp.flatten([
$_1g2cevwsjdud7ejp.map(partNames, $_euqmtby7jdud7ev7.strict),
$_1g2cevwsjdud7ejp.map(optPartNames, function (optPart) {
return $_euqmtby7jdud7ev7.defaulted(optPart, $_1ipz1n10wjdud7f8y.single(false, function () {
throw new Error('The optional part: ' + optPart + ' was not specified in the config, but it was used in components');
}));
})
]));
var partUidsSchema = $_euqmtby7jdud7ev7.state('partUids', function (spec) {
if (!$_ettibkxsjdud7emz.hasKey(spec, 'parts')) {
throw new Error('Part uid definition for owner: ' + owner + ' requires "parts"\nExpected parts: ' + partNames.join(', ') + '\nSpec: ' + $_crnojnydjdud7ewk.stringify(spec, null, 2));
}
var uids = $_2dykn0x0jdud7ekc.map(spec.parts, function (v, k) {
return $_ettibkxsjdud7emz.readOptFrom(v, 'uid').getOrThunk(function () {
return spec.uid + '-' + k;
});
});
return uids;
});
return [
partsSchema,
partUidsSchema
];
};
var base$1 = function (label, partSchemas, partUidsSchemas, spec) {
var ps = partSchemas.length > 0 ? [$_euqmtby7jdud7ev7.strictObjOf('parts', partSchemas)] : [];
return ps.concat([
$_euqmtby7jdud7ev7.strict('uid'),
$_euqmtby7jdud7ev7.defaulted('dom', {}),
$_euqmtby7jdud7ev7.defaulted('components', []),
$_etkinez6jdud7ezi.snapshot('originalSpec'),
$_euqmtby7jdud7ev7.defaulted('debug.sketcher', {})
]).concat(partUidsSchemas);
};
var asRawOrDie$1 = function (label, schema, spec, partSchemas, partUidsSchemas) {
var baseS = base$1(label, partSchemas, spec, partUidsSchemas);
return $_13hkebyejdud7ewm.asRawOrDie(label + ' [SpecSchema]', $_13hkebyejdud7ewm.objOfOnly(baseS.concat(schema)), spec);
};
var asStructOrDie$1 = function (label, schema, spec, partSchemas, partUidsSchemas) {
var baseS = base$1(label, partSchemas, partUidsSchemas, spec);
return $_13hkebyejdud7ewm.asStructOrDie(label + ' [SpecSchema]', $_13hkebyejdud7ewm.objOfOnly(baseS.concat(schema)), spec);
};
var extend = function (builder, original, nu) {
var newSpec = $_73qnwowyjdud7ek9.deepMerge(original, nu);
return builder(newSpec);
};
var addBehaviours = function (original, behaviours) {
return $_73qnwowyjdud7ek9.deepMerge(original, behaviours);
};
var $_5cn1o510zjdud7f9m = {
asRawOrDie: asRawOrDie$1,
asStructOrDie: asStructOrDie$1,
addBehaviours: addBehaviours,
getPartsSchema: getPartsSchema,
extend: extend
};
var single = function (owner, schema, factory, spec) {
var specWithUid = supplyUid(spec);
var detail = $_5cn1o510zjdud7f9m.asStructOrDie(owner, schema, specWithUid, [], []);
return $_73qnwowyjdud7ek9.deepMerge(factory(detail, specWithUid), { 'debug.sketcher': $_ettibkxsjdud7emz.wrap(owner, spec) });
};
var composite = function (owner, schema, partTypes, factory, spec) {
var specWithUid = supplyUid(spec);
var partSchemas = $_436kgb10tjdud7f7y.schemas(partTypes);
var partUidsSchema = $_436kgb10tjdud7f7y.defaultUidsSchema(partTypes);
var detail = $_5cn1o510zjdud7f9m.asStructOrDie(owner, schema, specWithUid, partSchemas, [partUidsSchema]);
var subs = $_436kgb10tjdud7f7y.substitutes(owner, detail, partTypes);
var components = $_436kgb10tjdud7f7y.components(owner, detail, subs.internals());
return $_73qnwowyjdud7ek9.deepMerge(factory(detail, components, specWithUid, subs.externals()), { 'debug.sketcher': $_ettibkxsjdud7emz.wrap(owner, spec) });
};
var supplyUid = function (spec) {
return $_73qnwowyjdud7ek9.deepMerge({ uid: $_4mrseh10xjdud7f9b.generate('uid') }, spec);
};
var $_dsxxyk10sjdud7f7u = {
supplyUid: supplyUid,
single: single,
composite: composite
};
var singleSchema = $_13hkebyejdud7ewm.objOfOnly([
$_euqmtby7jdud7ev7.strict('name'),
$_euqmtby7jdud7ev7.strict('factory'),
$_euqmtby7jdud7ev7.strict('configFields'),
$_euqmtby7jdud7ev7.defaulted('apis', {}),
$_euqmtby7jdud7ev7.defaulted('extraApis', {})
]);
var compositeSchema = $_13hkebyejdud7ewm.objOfOnly([
$_euqmtby7jdud7ev7.strict('name'),
$_euqmtby7jdud7ev7.strict('factory'),
$_euqmtby7jdud7ev7.strict('configFields'),
$_euqmtby7jdud7ev7.strict('partFields'),
$_euqmtby7jdud7ev7.defaulted('apis', {}),
$_euqmtby7jdud7ev7.defaulted('extraApis', {})
]);
var single$1 = function (rawConfig) {
var config = $_13hkebyejdud7ewm.asRawOrDie('Sketcher for ' + rawConfig.name, singleSchema, rawConfig);
var sketch = function (spec) {
return $_dsxxyk10sjdud7f7u.single(config.name, config.configFields, config.factory, spec);
};
var apis = $_2dykn0x0jdud7ekc.map(config.apis, $_37ypl510qjdud7f7n.makeApi);
var extraApis = $_2dykn0x0jdud7ekc.map(config.extraApis, function (f, k) {
return $_4nn5bbygjdud7eww.markAsExtraApi(f, k);
});
return $_73qnwowyjdud7ek9.deepMerge({
name: $_9njj9iwjjdud7eix.constant(config.name),
partFields: $_9njj9iwjjdud7eix.constant([]),
configFields: $_9njj9iwjjdud7eix.constant(config.configFields),
sketch: sketch
}, apis, extraApis);
};
var composite$1 = function (rawConfig) {
var config = $_13hkebyejdud7ewm.asRawOrDie('Sketcher for ' + rawConfig.name, compositeSchema, rawConfig);
var sketch = function (spec) {
return $_dsxxyk10sjdud7f7u.composite(config.name, config.configFields, config.partFields, config.factory, spec);
};
var parts = $_436kgb10tjdud7f7y.generate(config.name, config.partFields);
var apis = $_2dykn0x0jdud7ekc.map(config.apis, $_37ypl510qjdud7f7n.makeApi);
var extraApis = $_2dykn0x0jdud7ekc.map(config.extraApis, function (f, k) {
return $_4nn5bbygjdud7eww.markAsExtraApi(f, k);
});
return $_73qnwowyjdud7ek9.deepMerge({
name: $_9njj9iwjjdud7eix.constant(config.name),
partFields: $_9njj9iwjjdud7eix.constant(config.partFields),
configFields: $_9njj9iwjjdud7eix.constant(config.configFields),
sketch: sketch,
parts: $_9njj9iwjjdud7eix.constant(parts)
}, apis, extraApis);
};
var $_3inyq310pjdud7f7f = {
single: single$1,
composite: composite$1
};
var events$3 = function (optAction) {
var executeHandler = function (action) {
return $_5xcuyiy4jdud7eur.run($_801kkqwhjdud7eiq.execute(), function (component, simulatedEvent) {
action(component);
simulatedEvent.stop();
});
};
var onClick = function (component, simulatedEvent) {
simulatedEvent.stop();
$_98da6jwgjdud7eil.emitExecute(component);
};
var onMousedown = function (component, simulatedEvent) {
simulatedEvent.cut();
};
var pointerEvents = $_chh2cvwkjdud7ej0.detect().deviceType.isTouch() ? [$_5xcuyiy4jdud7eur.run($_801kkqwhjdud7eiq.tap(), onClick)] : [
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.click(), onClick),
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.mousedown(), onMousedown)
];
return $_5xcuyiy4jdud7eur.derive($_1g2cevwsjdud7ejp.flatten([
optAction.map(executeHandler).toArray(),
pointerEvents
]));
};
var $_aznso2110jdud7f9y = { events: events$3 };
var factory = function (detail, spec) {
var events = $_aznso2110jdud7f9y.events(detail.action());
var optType = $_ettibkxsjdud7emz.readOptFrom(detail.dom(), 'attributes').bind($_ettibkxsjdud7emz.readOpt('type'));
var optTag = $_ettibkxsjdud7emz.readOptFrom(detail.dom(), 'tag');
return {
uid: detail.uid(),
dom: detail.dom(),
components: detail.components(),
events: events,
behaviours: $_73qnwowyjdud7ek9.deepMerge($_ax1gfoy2jdud7eu7.derive([
Focusing.config({}),
Keying.config({
mode: 'execution',
useSpace: true,
useEnter: true
})
]), $_c7jpu210ojdud7f7a.get(detail.buttonBehaviours())),
domModification: {
attributes: $_73qnwowyjdud7ek9.deepMerge(optType.fold(function () {
return optTag.is('button') ? { type: 'button' } : {};
}, function (t) {
return {};
}), { role: detail.role().getOr('button') })
},
eventOrder: detail.eventOrder()
};
};
var Button = $_3inyq310pjdud7f7f.single({
name: 'Button',
factory: factory,
configFields: [
$_euqmtby7jdud7ev7.defaulted('uid', undefined),
$_euqmtby7jdud7ev7.strict('dom'),
$_euqmtby7jdud7ev7.defaulted('components', []),
$_c7jpu210ojdud7f7a.field('buttonBehaviours', [
Focusing,
Keying
]),
$_euqmtby7jdud7ev7.option('action'),
$_euqmtby7jdud7ev7.option('role'),
$_euqmtby7jdud7ev7.defaulted('eventOrder', {})
]
});
var exhibit$2 = function (base, unselectConfig) {
return $_biiw3tyhjdud7ewz.nu({
styles: {
'-webkit-user-select': 'none',
'user-select': 'none',
'-ms-user-select': 'none',
'-moz-user-select': '-moz-none'
},
attributes: { 'unselectable': 'on' }
});
};
var events$4 = function (unselectConfig) {
return $_5xcuyiy4jdud7eur.derive([$_5xcuyiy4jdud7eur.abort($_brmbwvwijdud7eiu.selectstart(), $_9njj9iwjjdud7eix.constant(true))]);
};
var $_f4i72r112jdud7fa8 = {
events: events$4,
exhibit: exhibit$2
};
var Unselecting = $_ax1gfoy2jdud7eu7.create({
fields: [],
name: 'unselecting',
active: $_f4i72r112jdud7fa8
});
var getAttrs = function (elem) {
var attributes = elem.dom().attributes !== undefined ? elem.dom().attributes : [];
return $_1g2cevwsjdud7ejp.foldl(attributes, function (b, attr) {
if (attr.name === 'class')
return b;
else
return $_73qnwowyjdud7ek9.deepMerge(b, $_ettibkxsjdud7emz.wrap(attr.name, attr.value));
}, {});
};
var getClasses = function (elem) {
return Array.prototype.slice.call(elem.dom().classList, 0);
};
var fromHtml$2 = function (html) {
var elem = $_eobgtqxfjdud7elu.fromHtml(html);
var children = $_dekwe2x3jdud7ekr.children(elem);
var attrs = getAttrs(elem);
var classes = getClasses(elem);
var contents = children.length === 0 ? {} : { innerHtml: $_1kv7pfxojdud7emm.get(elem) };
return $_73qnwowyjdud7ek9.deepMerge({
tag: $_50qkdpxkjdud7em6.name(elem),
classes: classes,
attributes: attrs
}, contents);
};
var sketch = function (sketcher, html, config) {
return sketcher.sketch($_73qnwowyjdud7ek9.deepMerge({ dom: fromHtml$2(html) }, config));
};
var $_75qh6t114jdud7fae = {
fromHtml: fromHtml$2,
sketch: sketch
};
var dom$1 = function (rawHtml) {
var html = $_2e2eauwvjdud7ek5.supplant(rawHtml, { prefix: $_5qzh4bzejdud7f0y.prefix() });
return $_75qh6t114jdud7fae.fromHtml(html);
};
var spec = function (rawHtml) {
var sDom = dom$1(rawHtml);
return { dom: sDom };
};
var $_5oi2c7113jdud7fab = {
dom: dom$1,
spec: spec
};
var forToolbarCommand = function (editor, command) {
return forToolbar(command, function () {
editor.execCommand(command);
}, {});
};
var getToggleBehaviours = function (command) {
return $_ax1gfoy2jdud7eu7.derive([
Toggling.config({
toggleClass: $_5qzh4bzejdud7f0y.resolve('toolbar-button-selected'),
toggleOnExecute: false,
aria: { mode: 'pressed' }
}),
$_nw25bzdjdud7f0v.format(command, function (button, status) {
var toggle = status ? Toggling.on : Toggling.off;
toggle(button);
})
]);
};
var forToolbarStateCommand = function (editor, command) {
var extraBehaviours = getToggleBehaviours(command);
return forToolbar(command, function () {
editor.execCommand(command);
}, extraBehaviours);
};
var forToolbarStateAction = function (editor, clazz, command, action) {
var extraBehaviours = getToggleBehaviours(command);
return forToolbar(clazz, action, extraBehaviours);
};
var forToolbar = function (clazz, action, extraBehaviours) {
return Button.sketch({
dom: $_5oi2c7113jdud7fab.dom('<span class="${prefix}-toolbar-button ${prefix}-icon-' + clazz + ' ${prefix}-icon"></span>'),
action: action,
buttonBehaviours: $_73qnwowyjdud7ek9.deepMerge($_ax1gfoy2jdud7eu7.derive([Unselecting.config({})]), extraBehaviours)
});
};
var $_d0l7buzfjdud7f11 = {
forToolbar: forToolbar,
forToolbarCommand: forToolbarCommand,
forToolbarStateAction: forToolbarStateAction,
forToolbarStateCommand: forToolbarStateCommand
};
var reduceBy = function (value, min, max, step) {
if (value < min)
return value;
else if (value > max)
return max;
else if (value === min)
return min - 1;
else
return Math.max(min, value - step);
};
var increaseBy = function (value, min, max, step) {
if (value > max)
return value;
else if (value < min)
return min;
else if (value === max)
return max + 1;
else
return Math.min(max, value + step);
};
var capValue = function (value, min, max) {
return Math.max(min, Math.min(max, value));
};
var snapValueOfX = function (bounds, value, min, max, step, snapStart) {
return snapStart.fold(function () {
var initValue = value - min;
var extraValue = Math.round(initValue / step) * step;
return capValue(min + extraValue, min - 1, max + 1);
}, function (start) {
var remainder = (value - start) % step;
var adjustment = Math.round(remainder / step);
var rawSteps = Math.floor((value - start) / step);
var maxSteps = Math.floor((max - start) / step);
var numSteps = Math.min(maxSteps, rawSteps + adjustment);
var r = start + numSteps * step;
return Math.max(start, r);
});
};
var findValueOfX = function (bounds, min, max, xValue, step, snapToGrid, snapStart) {
var range = max - min;
if (xValue < bounds.left)
return min - 1;
else if (xValue > bounds.right)
return max + 1;
else {
var xOffset = Math.min(bounds.right, Math.max(xValue, bounds.left)) - bounds.left;
var newValue = capValue(xOffset / bounds.width * range + min, min - 1, max + 1);
var roundedValue = Math.round(newValue);
return snapToGrid && newValue >= min && newValue <= max ? snapValueOfX(bounds, newValue, min, max, step, snapStart) : roundedValue;
}
};
var $_3n27hj119jdud7fbg = {
reduceBy: reduceBy,
increaseBy: increaseBy,
findValueOfX: findValueOfX
};
var changeEvent = 'slider.change.value';
var isTouch = $_chh2cvwkjdud7ej0.detect().deviceType.isTouch();
var getEventSource = function (simulatedEvent) {
var evt = simulatedEvent.event().raw();
if (isTouch && evt.touches !== undefined && evt.touches.length === 1)
return Option.some(evt.touches[0]);
else if (isTouch && evt.touches !== undefined)
return Option.none();
else if (!isTouch && evt.clientX !== undefined)
return Option.some(evt);
else
return Option.none();
};
var getEventX = function (simulatedEvent) {
var spot = getEventSource(simulatedEvent);
return spot.map(function (s) {
return s.clientX;
});
};
var fireChange = function (component, value) {
$_98da6jwgjdud7eil.emitWith(component, changeEvent, { value: value });
};
var moveRightFromLedge = function (ledge, detail) {
fireChange(ledge, detail.min());
};
var moveLeftFromRedge = function (redge, detail) {
fireChange(redge, detail.max());
};
var setToRedge = function (redge, detail) {
fireChange(redge, detail.max() + 1);
};
var setToLedge = function (ledge, detail) {
fireChange(ledge, detail.min() - 1);
};
var setToX = function (spectrum, spectrumBounds, detail, xValue) {
var value = $_3n27hj119jdud7fbg.findValueOfX(spectrumBounds, detail.min(), detail.max(), xValue, detail.stepSize(), detail.snapToGrid(), detail.snapStart());
fireChange(spectrum, value);
};
var setXFromEvent = function (spectrum, detail, spectrumBounds, simulatedEvent) {
return getEventX(simulatedEvent).map(function (xValue) {
setToX(spectrum, spectrumBounds, detail, xValue);
return xValue;
});
};
var moveLeft$4 = function (spectrum, detail) {
var newValue = $_3n27hj119jdud7fbg.reduceBy(detail.value().get(), detail.min(), detail.max(), detail.stepSize());
fireChange(spectrum, newValue);
};
var moveRight$4 = function (spectrum, detail) {
var newValue = $_3n27hj119jdud7fbg.increaseBy(detail.value().get(), detail.min(), detail.max(), detail.stepSize());
fireChange(spectrum, newValue);
};
var $_edvvhp118jdud7fba = {
setXFromEvent: setXFromEvent,
setToLedge: setToLedge,
setToRedge: setToRedge,
moveLeftFromRedge: moveLeftFromRedge,
moveRightFromLedge: moveRightFromLedge,
moveLeft: moveLeft$4,
moveRight: moveRight$4,
changeEvent: $_9njj9iwjjdud7eix.constant(changeEvent)
};
var platform = $_chh2cvwkjdud7ej0.detect();
var isTouch$1 = platform.deviceType.isTouch();
var edgePart = function (name, action) {
return $_7938qf10vjdud7f8n.optional({
name: '' + name + '-edge',
overrides: function (detail) {
var touchEvents = $_5xcuyiy4jdud7eur.derive([$_5xcuyiy4jdud7eur.runActionExtra($_brmbwvwijdud7eiu.touchstart(), action, [detail])]);
var mouseEvents = $_5xcuyiy4jdud7eur.derive([
$_5xcuyiy4jdud7eur.runActionExtra($_brmbwvwijdud7eiu.mousedown(), action, [detail]),
$_5xcuyiy4jdud7eur.runActionExtra($_brmbwvwijdud7eiu.mousemove(), function (l, det) {
if (det.mouseIsDown().get())
action(l, det);
}, [detail])
]);
return { events: isTouch$1 ? touchEvents : mouseEvents };
}
});
};
var ledgePart = edgePart('left', $_edvvhp118jdud7fba.setToLedge);
var redgePart = edgePart('right', $_edvvhp118jdud7fba.setToRedge);
var thumbPart = $_7938qf10vjdud7f8n.required({
name: 'thumb',
defaults: $_9njj9iwjjdud7eix.constant({ dom: { styles: { position: 'absolute' } } }),
overrides: function (detail) {
return {
events: $_5xcuyiy4jdud7eur.derive([
$_5xcuyiy4jdud7eur.redirectToPart($_brmbwvwijdud7eiu.touchstart(), detail, 'spectrum'),
$_5xcuyiy4jdud7eur.redirectToPart($_brmbwvwijdud7eiu.touchmove(), detail, 'spectrum'),
$_5xcuyiy4jdud7eur.redirectToPart($_brmbwvwijdud7eiu.touchend(), detail, 'spectrum')
])
};
}
});
var spectrumPart = $_7938qf10vjdud7f8n.required({
schema: [$_euqmtby7jdud7ev7.state('mouseIsDown', function () {
return Cell(false);
})],
name: 'spectrum',
overrides: function (detail) {
var moveToX = function (spectrum, simulatedEvent) {
var spectrumBounds = spectrum.element().dom().getBoundingClientRect();
$_edvvhp118jdud7fba.setXFromEvent(spectrum, detail, spectrumBounds, simulatedEvent);
};
var touchEvents = $_5xcuyiy4jdud7eur.derive([
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.touchstart(), moveToX),
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.touchmove(), moveToX)
]);
var mouseEvents = $_5xcuyiy4jdud7eur.derive([
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.mousedown(), moveToX),
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.mousemove(), function (spectrum, se) {
if (detail.mouseIsDown().get())
moveToX(spectrum, se);
})
]);
return {
behaviours: $_ax1gfoy2jdud7eu7.derive(isTouch$1 ? [] : [
Keying.config({
mode: 'special',
onLeft: function (spectrum) {
$_edvvhp118jdud7fba.moveLeft(spectrum, detail);
return Option.some(true);
},
onRight: function (spectrum) {
$_edvvhp118jdud7fba.moveRight(spectrum, detail);
return Option.some(true);
}
}),
Focusing.config({})
]),
events: isTouch$1 ? touchEvents : mouseEvents
};
}
});
var SliderParts = [
ledgePart,
redgePart,
thumbPart,
spectrumPart
];
var onLoad$1 = function (component, repConfig, repState) {
repConfig.store().manager().onLoad(component, repConfig, repState);
};
var onUnload = function (component, repConfig, repState) {
repConfig.store().manager().onUnload(component, repConfig, repState);
};
var setValue = function (component, repConfig, repState, data) {
repConfig.store().manager().setValue(component, repConfig, repState, data);
};
var getValue = function (component, repConfig, repState) {
return repConfig.store().manager().getValue(component, repConfig, repState);
};
var $_v97r211djdud7fbs = {
onLoad: onLoad$1,
onUnload: onUnload,
setValue: setValue,
getValue: getValue
};
var events$5 = function (repConfig, repState) {
var es = repConfig.resetOnDom() ? [
$_5xcuyiy4jdud7eur.runOnAttached(function (comp, se) {
$_v97r211djdud7fbs.onLoad(comp, repConfig, repState);
}),
$_5xcuyiy4jdud7eur.runOnDetached(function (comp, se) {
$_v97r211djdud7fbs.onUnload(comp, repConfig, repState);
})
] : [$_1t33c1y3jdud7euf.loadEvent(repConfig, repState, $_v97r211djdud7fbs.onLoad)];
return $_5xcuyiy4jdud7eur.derive(es);
};
var $_9y5frt11cjdud7fbq = { events: events$5 };
var memory = function () {
var data = Cell(null);
var readState = function () {
return {
mode: 'memory',
value: data.get()
};
};
var isNotSet = function () {
return data.get() === null;
};
var clear = function () {
data.set(null);
};
return BehaviourState({
set: data.set,
get: data.get,
isNotSet: isNotSet,
clear: clear,
readState: readState
});
};
var manual = function () {
var readState = function () {
};
return BehaviourState({ readState: readState });
};
var dataset = function () {
var data = Cell({});
var readState = function () {
return {
mode: 'dataset',
dataset: data.get()
};
};
return BehaviourState({
readState: readState,
set: data.set,
get: data.get
});
};
var init$2 = function (spec) {
return spec.store().manager().state(spec);
};
var $_1f27yj11gjdud7fc1 = {
memory: memory,
dataset: dataset,
manual: manual,
init: init$2
};
var setValue$1 = function (component, repConfig, repState, data) {
var dataKey = repConfig.store().getDataKey();
repState.set({});
repConfig.store().setData()(component, data);
repConfig.onSetValue()(component, data);
};
var getValue$1 = function (component, repConfig, repState) {
var key = repConfig.store().getDataKey()(component);
var dataset = repState.get();
return $_ettibkxsjdud7emz.readOptFrom(dataset, key).fold(function () {
return repConfig.store().getFallbackEntry()(key);
}, function (data) {
return data;
});
};
var onLoad$2 = function (component, repConfig, repState) {
repConfig.store().initialValue().each(function (data) {
setValue$1(component, repConfig, repState, data);
});
};
var onUnload$1 = function (component, repConfig, repState) {
repState.set({});
};
var DatasetStore = [
$_euqmtby7jdud7ev7.option('initialValue'),
$_euqmtby7jdud7ev7.strict('getFallbackEntry'),
$_euqmtby7jdud7ev7.strict('getDataKey'),
$_euqmtby7jdud7ev7.strict('setData'),
$_etkinez6jdud7ezi.output('manager', {
setValue: setValue$1,
getValue: getValue$1,
onLoad: onLoad$2,
onUnload: onUnload$1,
state: $_1f27yj11gjdud7fc1.dataset
})
];
var getValue$2 = function (component, repConfig, repState) {
return repConfig.store().getValue()(component);
};
var setValue$2 = function (component, repConfig, repState, data) {
repConfig.store().setValue()(component, data);
repConfig.onSetValue()(component, data);
};
var onLoad$3 = function (component, repConfig, repState) {
repConfig.store().initialValue().each(function (data) {
repConfig.store().setValue()(component, data);
});
};
var ManualStore = [
$_euqmtby7jdud7ev7.strict('getValue'),
$_euqmtby7jdud7ev7.defaulted('setValue', $_9njj9iwjjdud7eix.noop),
$_euqmtby7jdud7ev7.option('initialValue'),
$_etkinez6jdud7ezi.output('manager', {
setValue: setValue$2,
getValue: getValue$2,
onLoad: onLoad$3,
onUnload: $_9njj9iwjjdud7eix.noop,
state: $_71cmtkyjjdud7exe.init
})
];
var setValue$3 = function (component, repConfig, repState, data) {
repState.set(data);
repConfig.onSetValue()(component, data);
};
var getValue$3 = function (component, repConfig, repState) {
return repState.get();
};
var onLoad$4 = function (component, repConfig, repState) {
repConfig.store().initialValue().each(function (initVal) {
if (repState.isNotSet())
repState.set(initVal);
});
};
var onUnload$2 = function (component, repConfig, repState) {
repState.clear();
};
var MemoryStore = [
$_euqmtby7jdud7ev7.option('initialValue'),
$_etkinez6jdud7ezi.output('manager', {
setValue: setValue$3,
getValue: getValue$3,
onLoad: onLoad$4,
onUnload: onUnload$2,
state: $_1f27yj11gjdud7fc1.memory
})
];
var RepresentSchema = [
$_euqmtby7jdud7ev7.defaultedOf('store', { mode: 'memory' }, $_13hkebyejdud7ewm.choose('mode', {
memory: MemoryStore,
manual: ManualStore,
dataset: DatasetStore
})),
$_etkinez6jdud7ezi.onHandler('onSetValue'),
$_euqmtby7jdud7ev7.defaulted('resetOnDom', false)
];
var me = $_ax1gfoy2jdud7eu7.create({
fields: RepresentSchema,
name: 'representing',
active: $_9y5frt11cjdud7fbq,
apis: $_v97r211djdud7fbs,
extra: {
setValueFrom: function (component, source) {
var value = me.getValue(source);
me.setValue(component, value);
}
},
state: $_1f27yj11gjdud7fc1
});
var isTouch$2 = $_chh2cvwkjdud7ej0.detect().deviceType.isTouch();
var SliderSchema = [
$_euqmtby7jdud7ev7.strict('min'),
$_euqmtby7jdud7ev7.strict('max'),
$_euqmtby7jdud7ev7.defaulted('stepSize', 1),
$_euqmtby7jdud7ev7.defaulted('onChange', $_9njj9iwjjdud7eix.noop),
$_euqmtby7jdud7ev7.defaulted('onInit', $_9njj9iwjjdud7eix.noop),
$_euqmtby7jdud7ev7.defaulted('onDragStart', $_9njj9iwjjdud7eix.noop),
$_euqmtby7jdud7ev7.defaulted('onDragEnd', $_9njj9iwjjdud7eix.noop),
$_euqmtby7jdud7ev7.defaulted('snapToGrid', false),
$_euqmtby7jdud7ev7.option('snapStart'),
$_euqmtby7jdud7ev7.strict('getInitialValue'),
$_c7jpu210ojdud7f7a.field('sliderBehaviours', [
Keying,
me
]),
$_euqmtby7jdud7ev7.state('value', function (spec) {
return Cell(spec.min);
})
].concat(!isTouch$2 ? [$_euqmtby7jdud7ev7.state('mouseIsDown', function () {
return Cell(false);
})] : []);
var api$1 = Dimension('width', function (element) {
return element.dom().offsetWidth;
});
var set$4 = function (element, h) {
api$1.set(element, h);
};
var get$6 = function (element) {
return api$1.get(element);
};
var getOuter$2 = function (element) {
return api$1.getOuter(element);
};
var setMax$1 = function (element, value) {
var inclusions = [
'margin-left',
'border-left-width',
'padding-left',
'padding-right',
'border-right-width',
'margin-right'
];
var absMax = api$1.max(element, value, inclusions);
$_btgbcy103jdud7f3t.set(element, 'max-width', absMax + 'px');
};
var $_6chz3611kjdud7fcw = {
set: set$4,
get: get$6,
getOuter: getOuter$2,
setMax: setMax$1
};
var isTouch$3 = $_chh2cvwkjdud7ej0.detect().deviceType.isTouch();
var sketch$1 = function (detail, components, spec, externals) {
var range = detail.max() - detail.min();
var getXCentre = function (component) {
var rect = component.element().dom().getBoundingClientRect();
return (rect.left + rect.right) / 2;
};
var getThumb = function (component) {
return $_436kgb10tjdud7f7y.getPartOrDie(component, detail, 'thumb');
};
var getXOffset = function (slider, spectrumBounds, detail) {
var v = detail.value().get();
if (v < detail.min()) {
return $_436kgb10tjdud7f7y.getPart(slider, detail, 'left-edge').fold(function () {
return 0;
}, function (ledge) {
return getXCentre(ledge) - spectrumBounds.left;
});
} else if (v > detail.max()) {
return $_436kgb10tjdud7f7y.getPart(slider, detail, 'right-edge').fold(function () {
return spectrumBounds.width;
}, function (redge) {
return getXCentre(redge) - spectrumBounds.left;
});
} else {
return (detail.value().get() - detail.min()) / range * spectrumBounds.width;
}
};
var getXPos = function (slider) {
var spectrum = $_436kgb10tjdud7f7y.getPartOrDie(slider, detail, 'spectrum');
var spectrumBounds = spectrum.element().dom().getBoundingClientRect();
var sliderBounds = slider.element().dom().getBoundingClientRect();
var xOffset = getXOffset(slider, spectrumBounds, detail);
return spectrumBounds.left - sliderBounds.left + xOffset;
};
var refresh = function (component) {
var pos = getXPos(component);
var thumb = getThumb(component);
var thumbRadius = $_6chz3611kjdud7fcw.get(thumb.element()) / 2;
$_btgbcy103jdud7f3t.set(thumb.element(), 'left', pos - thumbRadius + 'px');
};
var changeValue = function (component, newValue) {
var oldValue = detail.value().get();
var thumb = getThumb(component);
if (oldValue !== newValue || $_btgbcy103jdud7f3t.getRaw(thumb.element(), 'left').isNone()) {
detail.value().set(newValue);
refresh(component);
detail.onChange()(component, thumb, newValue);
return Option.some(true);
} else {
return Option.none();
}
};
var resetToMin = function (slider) {
changeValue(slider, detail.min());
};
var resetToMax = function (slider) {
changeValue(slider, detail.max());
};
var uiEventsArr = isTouch$3 ? [
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.touchstart(), function (slider, simulatedEvent) {
detail.onDragStart()(slider, getThumb(slider));
}),
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.touchend(), function (slider, simulatedEvent) {
detail.onDragEnd()(slider, getThumb(slider));
})
] : [
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.mousedown(), function (slider, simulatedEvent) {
simulatedEvent.stop();
detail.onDragStart()(slider, getThumb(slider));
detail.mouseIsDown().set(true);
}),
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.mouseup(), function (slider, simulatedEvent) {
detail.onDragEnd()(slider, getThumb(slider));
detail.mouseIsDown().set(false);
})
];
return {
uid: detail.uid(),
dom: detail.dom(),
components: components,
behaviours: $_73qnwowyjdud7ek9.deepMerge($_ax1gfoy2jdud7eu7.derive($_1g2cevwsjdud7ejp.flatten([
!isTouch$3 ? [Keying.config({
mode: 'special',
focusIn: function (slider) {
return $_436kgb10tjdud7f7y.getPart(slider, detail, 'spectrum').map(Keying.focusIn).map($_9njj9iwjjdud7eix.constant(true));
}
})] : [],
[me.config({
store: {
mode: 'manual',
getValue: function (_) {
return detail.value().get();
}
}
})]
])), $_c7jpu210ojdud7f7a.get(detail.sliderBehaviours())),
events: $_5xcuyiy4jdud7eur.derive([
$_5xcuyiy4jdud7eur.run($_edvvhp118jdud7fba.changeEvent(), function (slider, simulatedEvent) {
changeValue(slider, simulatedEvent.event().value());
}),
$_5xcuyiy4jdud7eur.runOnAttached(function (slider, simulatedEvent) {
detail.value().set(detail.getInitialValue()());
var thumb = getThumb(slider);
refresh(slider);
detail.onInit()(slider, thumb, detail.value().get());
})
].concat(uiEventsArr)),
apis: {
resetToMin: resetToMin,
resetToMax: resetToMax,
refresh: refresh
},
domModification: { styles: { position: 'relative' } }
};
};
var $_5vf75e11jjdud7fci = { sketch: sketch$1 };
var Slider = $_3inyq310pjdud7f7f.composite({
name: 'Slider',
configFields: SliderSchema,
partFields: SliderParts,
factory: $_5vf75e11jjdud7fci.sketch,
apis: {
resetToMin: function (apis, slider) {
apis.resetToMin(slider);
},
resetToMax: function (apis, slider) {
apis.resetToMax(slider);
},
refresh: function (apis, slider) {
apis.refresh(slider);
}
}
});
var button = function (realm, clazz, makeItems) {
return $_d0l7buzfjdud7f11.forToolbar(clazz, function () {
var items = makeItems();
realm.setContextToolbar([{
label: clazz + ' group',
items: items
}]);
}, {});
};
var $_247awl11ljdud7fcy = { button: button };
var BLACK = -1;
var makeSlider = function (spec) {
var getColor = function (hue) {
if (hue < 0) {
return 'black';
} else if (hue > 360) {
return 'white';
} else {
return 'hsl(' + hue + ', 100%, 50%)';
}
};
var onInit = function (slider, thumb, value) {
var color = getColor(value);
$_btgbcy103jdud7f3t.set(thumb.element(), 'background-color', color);
};
var onChange = function (slider, thumb, value) {
var color = getColor(value);
$_btgbcy103jdud7f3t.set(thumb.element(), 'background-color', color);
spec.onChange(slider, thumb, color);
};
return Slider.sketch({
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-slider ${prefix}-hue-slider-container"></div>'),
components: [
Slider.parts()['left-edge']($_5oi2c7113jdud7fab.spec('<div class="${prefix}-hue-slider-black"></div>')),
Slider.parts().spectrum({
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-slider-gradient-container"></div>'),
components: [$_5oi2c7113jdud7fab.spec('<div class="${prefix}-slider-gradient"></div>')],
behaviours: $_ax1gfoy2jdud7eu7.derive([Toggling.config({ toggleClass: $_5qzh4bzejdud7f0y.resolve('thumb-active') })])
}),
Slider.parts()['right-edge']($_5oi2c7113jdud7fab.spec('<div class="${prefix}-hue-slider-white"></div>')),
Slider.parts().thumb({
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-slider-thumb"></div>'),
behaviours: $_ax1gfoy2jdud7eu7.derive([Toggling.config({ toggleClass: $_5qzh4bzejdud7f0y.resolve('thumb-active') })])
})
],
onChange: onChange,
onDragStart: function (slider, thumb) {
Toggling.on(thumb);
},
onDragEnd: function (slider, thumb) {
Toggling.off(thumb);
},
onInit: onInit,
stepSize: 10,
min: 0,
max: 360,
getInitialValue: spec.getInitialValue,
sliderBehaviours: $_ax1gfoy2jdud7eu7.derive([$_nw25bzdjdud7f0v.orientation(Slider.refresh)])
});
};
var makeItems = function (spec) {
return [makeSlider(spec)];
};
var sketch$2 = function (realm, editor) {
var spec = {
onChange: function (slider, thumb, color) {
editor.undoManager.transact(function () {
editor.formatter.apply('forecolor', { value: color });
editor.nodeChanged();
});
},
getInitialValue: function () {
return BLACK;
}
};
return $_247awl11ljdud7fcy.button(realm, 'color', function () {
return makeItems(spec);
});
};
var $_2q53pp115jdud7fap = {
makeItems: makeItems,
sketch: sketch$2
};
var schema$7 = $_13hkebyejdud7ewm.objOfOnly([
$_euqmtby7jdud7ev7.strict('getInitialValue'),
$_euqmtby7jdud7ev7.strict('onChange'),
$_euqmtby7jdud7ev7.strict('category'),
$_euqmtby7jdud7ev7.strict('sizes')
]);
var sketch$3 = function (rawSpec) {
var spec = $_13hkebyejdud7ewm.asRawOrDie('SizeSlider', schema$7, rawSpec);
var isValidValue = function (valueIndex) {
return valueIndex >= 0 && valueIndex < spec.sizes.length;
};
var onChange = function (slider, thumb, valueIndex) {
if (isValidValue(valueIndex)) {
spec.onChange(valueIndex);
}
};
return Slider.sketch({
dom: {
tag: 'div',
classes: [
$_5qzh4bzejdud7f0y.resolve('slider-' + spec.category + '-size-container'),
$_5qzh4bzejdud7f0y.resolve('slider'),
$_5qzh4bzejdud7f0y.resolve('slider-size-container')
]
},
onChange: onChange,
onDragStart: function (slider, thumb) {
Toggling.on(thumb);
},
onDragEnd: function (slider, thumb) {
Toggling.off(thumb);
},
min: 0,
max: spec.sizes.length - 1,
stepSize: 1,
getInitialValue: spec.getInitialValue,
snapToGrid: true,
sliderBehaviours: $_ax1gfoy2jdud7eu7.derive([$_nw25bzdjdud7f0v.orientation(Slider.refresh)]),
components: [
Slider.parts().spectrum({
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-slider-size-container"></div>'),
components: [$_5oi2c7113jdud7fab.spec('<div class="${prefix}-slider-size-line"></div>')]
}),
Slider.parts().thumb({
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-slider-thumb"></div>'),
behaviours: $_ax1gfoy2jdud7eu7.derive([Toggling.config({ toggleClass: $_5qzh4bzejdud7f0y.resolve('thumb-active') })])
})
]
});
};
var $_a4vyig11njdud7fd0 = { sketch: sketch$3 };
var ancestor$3 = function (scope, transform, isRoot) {
var element = scope.dom();
var stop = $_9rljuwzjdud7ekb.isFunction(isRoot) ? isRoot : $_9njj9iwjjdud7eix.constant(false);
while (element.parentNode) {
element = element.parentNode;
var el = $_eobgtqxfjdud7elu.fromDom(element);
var transformed = transform(el);
if (transformed.isSome())
return transformed;
else if (stop(el))
break;
}
return Option.none();
};
var closest$3 = function (scope, transform, isRoot) {
var current = transform(scope);
return current.orThunk(function () {
return isRoot(scope) ? Option.none() : ancestor$3(scope, transform, isRoot);
});
};
var $_9mj1j411pjdud7fdi = {
ancestor: ancestor$3,
closest: closest$3
};
var candidates = [
'9px',
'10px',
'11px',
'12px',
'14px',
'16px',
'18px',
'20px',
'24px',
'32px',
'36px'
];
var defaultSize = 'medium';
var defaultIndex = 2;
var indexToSize = function (index) {
return Option.from(candidates[index]);
};
var sizeToIndex = function (size) {
return $_1g2cevwsjdud7ejp.findIndex(candidates, function (v) {
return v === size;
});
};
var getRawOrComputed = function (isRoot, rawStart) {
var optStart = $_50qkdpxkjdud7em6.isElement(rawStart) ? Option.some(rawStart) : $_dekwe2x3jdud7ekr.parent(rawStart);
return optStart.map(function (start) {
var inline = $_9mj1j411pjdud7fdi.closest(start, function (elem) {
return $_btgbcy103jdud7f3t.getRaw(elem, 'font-size');
}, isRoot);
return inline.getOrThunk(function () {
return $_btgbcy103jdud7f3t.get(start, 'font-size');
});
}).getOr('');
};
var getSize = function (editor) {
var node = editor.selection.getStart();
var elem = $_eobgtqxfjdud7elu.fromDom(node);
var root = $_eobgtqxfjdud7elu.fromDom(editor.getBody());
var isRoot = function (e) {
return $_f1y1rtx9jdud7el7.eq(root, e);
};
var elemSize = getRawOrComputed(isRoot, elem);
return $_1g2cevwsjdud7ejp.find(candidates, function (size) {
return elemSize === size;
}).getOr(defaultSize);
};
var applySize = function (editor, value) {
var currentValue = getSize(editor);
if (currentValue !== value) {
editor.execCommand('fontSize', false, value);
}
};
var get$7 = function (editor) {
var size = getSize(editor);
return sizeToIndex(size).getOr(defaultIndex);
};
var apply$1 = function (editor, index) {
indexToSize(index).each(function (size) {
applySize(editor, size);
});
};
var $_f22pa511ojdud7fd8 = {
candidates: $_9njj9iwjjdud7eix.constant(candidates),
get: get$7,
apply: apply$1
};
var sizes = $_f22pa511ojdud7fd8.candidates();
var makeSlider$1 = function (spec) {
return $_a4vyig11njdud7fd0.sketch({
onChange: spec.onChange,
sizes: sizes,
category: 'font',
getInitialValue: spec.getInitialValue
});
};
var makeItems$1 = function (spec) {
return [
$_5oi2c7113jdud7fab.spec('<span class="${prefix}-toolbar-button ${prefix}-icon-small-font ${prefix}-icon"></span>'),
makeSlider$1(spec),
$_5oi2c7113jdud7fab.spec('<span class="${prefix}-toolbar-button ${prefix}-icon-large-font ${prefix}-icon"></span>')
];
};
var sketch$4 = function (realm, editor) {
var spec = {
onChange: function (value) {
$_f22pa511ojdud7fd8.apply(editor, value);
},
getInitialValue: function () {
return $_f22pa511ojdud7fd8.get(editor);
}
};
return $_247awl11ljdud7fcy.button(realm, 'font-size', function () {
return makeItems$1(spec);
});
};
var $_8r2dx911mjdud7fcz = {
makeItems: makeItems$1,
sketch: sketch$4
};
var record = function (spec) {
var uid = $_ettibkxsjdud7emz.hasKey(spec, 'uid') ? spec.uid : $_4mrseh10xjdud7f9b.generate('memento');
var get = function (any) {
return any.getSystem().getByUid(uid).getOrDie();
};
var getOpt = function (any) {
return any.getSystem().getByUid(uid).fold(Option.none, Option.some);
};
var asSpec = function () {
return $_73qnwowyjdud7ek9.deepMerge(spec, { uid: uid });
};
return {
get: get,
getOpt: getOpt,
asSpec: asSpec
};
};
var $_81ial811rjdud7fdw = { record: record };
function create$3(width, height) {
return resize(document.createElement('canvas'), width, height);
}
function clone$2(canvas) {
var tCanvas, ctx;
tCanvas = create$3(canvas.width, canvas.height);
ctx = get2dContext(tCanvas);
ctx.drawImage(canvas, 0, 0);
return tCanvas;
}
function get2dContext(canvas) {
return canvas.getContext('2d');
}
function get3dContext(canvas) {
var gl = null;
try {
gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
} catch (e) {
}
if (!gl) {
gl = null;
}
return gl;
}
function resize(canvas, width, height) {
canvas.width = width;
canvas.height = height;
return canvas;
}
var $_92yes011ujdud7fek = {
create: create$3,
clone: clone$2,
resize: resize,
get2dContext: get2dContext,
get3dContext: get3dContext
};
function getWidth(image) {
return image.naturalWidth || image.width;
}
function getHeight(image) {
return image.naturalHeight || image.height;
}
var $_a084qb11vjdud7fel = {
getWidth: getWidth,
getHeight: getHeight
};
var promise = function () {
var Promise = function (fn) {
if (typeof this !== 'object')
throw new TypeError('Promises must be constructed via new');
if (typeof fn !== 'function')
throw new TypeError('not a function');
this._state = null;
this._value = null;
this._deferreds = [];
doResolve(fn, bind(resolve, this), bind(reject, this));
};
var asap = Promise.immediateFn || typeof setImmediate === 'function' && setImmediate || function (fn) {
setTimeout(fn, 1);
};
function bind(fn, thisArg) {
return function () {
fn.apply(thisArg, arguments);
};
}
var isArray = Array.isArray || function (value) {
return Object.prototype.toString.call(value) === '[object Array]';
};
function handle(deferred) {
var me = this;
if (this._state === null) {
this._deferreds.push(deferred);
return;
}
asap(function () {
var cb = me._state ? deferred.onFulfilled : deferred.onRejected;
if (cb === null) {
(me._state ? deferred.resolve : deferred.reject)(me._value);
return;
}
var ret;
try {
ret = cb(me._value);
} catch (e) {
deferred.reject(e);
return;
}
deferred.resolve(ret);
});
}
function resolve(newValue) {
try {
if (newValue === this)
throw new TypeError('A promise cannot be resolved with itself.');
if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
var then = newValue.then;
if (typeof then === 'function') {
doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));
return;
}
}
this._state = true;
this._value = newValue;
finale.call(this);
} catch (e) {
reject.call(this, e);
}
}
function reject(newValue) {
this._state = false;
this._value = newValue;
finale.call(this);
}
function finale() {
for (var i = 0, len = this._deferreds.length; i < len; i++) {
handle.call(this, this._deferreds[i]);
}
this._deferreds = null;
}
function Handler(onFulfilled, onRejected, resolve, reject) {
this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
this.onRejected = typeof onRejected === 'function' ? onRejected : null;
this.resolve = resolve;
this.reject = reject;
}
function doResolve(fn, onFulfilled, onRejected) {
var done = false;
try {
fn(function (value) {
if (done)
return;
done = true;
onFulfilled(value);
}, function (reason) {
if (done)
return;
done = true;
onRejected(reason);
});
} catch (ex) {
if (done)
return;
done = true;
onRejected(ex);
}
}
Promise.prototype['catch'] = function (onRejected) {
return this.then(null, onRejected);
};
Promise.prototype.then = function (onFulfilled, onRejected) {
var me = this;
return new Promise(function (resolve, reject) {
handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));
});
};
Promise.all = function () {
var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);
return new Promise(function (resolve, reject) {
if (args.length === 0)
return resolve([]);
var remaining = args.length;
function res(i, val) {
try {
if (val && (typeof val === 'object' || typeof val === 'function')) {
var then = val.then;
if (typeof then === 'function') {
then.call(val, function (val) {
res(i, val);
}, reject);
return;
}
}
args[i] = val;
if (--remaining === 0) {
resolve(args);
}
} catch (ex) {
reject(ex);
}
}
for (var i = 0; i < args.length; i++) {
res(i, args[i]);
}
});
};
Promise.resolve = function (value) {
if (value && typeof value === 'object' && value.constructor === Promise) {
return value;
}
return new Promise(function (resolve) {
resolve(value);
});
};
Promise.reject = function (value) {
return new Promise(function (resolve, reject) {
reject(value);
});
};
Promise.race = function (values) {
return new Promise(function (resolve, reject) {
for (var i = 0, len = values.length; i < len; i++) {
values[i].then(resolve, reject);
}
});
};
return Promise;
};
var Promise = window.Promise ? window.Promise : promise();
function Blob (parts, properties) {
var f = $_3ytg1qxbjdud7elm.getOrDie('Blob');
return new f(parts, properties);
}
function FileReader () {
var f = $_3ytg1qxbjdud7elm.getOrDie('FileReader');
return new f();
}
function Uint8Array (arr) {
var f = $_3ytg1qxbjdud7elm.getOrDie('Uint8Array');
return new f(arr);
}
var requestAnimationFrame = function (callback) {
var f = $_3ytg1qxbjdud7elm.getOrDie('requestAnimationFrame');
f(callback);
};
var atob = function (base64) {
var f = $_3ytg1qxbjdud7elm.getOrDie('atob');
return f(base64);
};
var $_b8ho8s120jdud7ff0 = {
atob: atob,
requestAnimationFrame: requestAnimationFrame
};
function loadImage(image) {
return new Promise(function (resolve) {
function loaded() {
image.removeEventListener('load', loaded);
resolve(image);
}
if (image.complete) {
resolve(image);
} else {
image.addEventListener('load', loaded);
}
});
}
function imageToBlob(image) {
return loadImage(image).then(function (image) {
var src = image.src;
if (src.indexOf('blob:') === 0) {
return anyUriToBlob(src);
}
if (src.indexOf('data:') === 0) {
return dataUriToBlob(src);
}
return anyUriToBlob(src);
});
}
function blobToImage(blob) {
return new Promise(function (resolve, reject) {
var blobUrl = URL.createObjectURL(blob);
var image = new Image();
var removeListeners = function () {
image.removeEventListener('load', loaded);
image.removeEventListener('error', error);
};
function loaded() {
removeListeners();
resolve(image);
}
function error() {
removeListeners();
reject('Unable to load data of type ' + blob.type + ': ' + blobUrl);
}
image.addEventListener('load', loaded);
image.addEventListener('error', error);
image.src = blobUrl;
if (image.complete) {
loaded();
}
});
}
function anyUriToBlob(url) {
return new Promise(function (resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function () {
if (this.status == 200) {
resolve(this.response);
}
};
xhr.onerror = function () {
var _this = this;
var corsError = function () {
var obj = new Error('No access to download image');
obj.code = 18;
obj.name = 'SecurityError';
return obj;
};
var genericError = function () {
return new Error('Error ' + _this.status + ' downloading image');
};
reject(this.status === 0 ? corsError() : genericError());
};
xhr.send();
});
}
function dataUriToBlobSync(uri) {
var data = uri.split(',');
var matches = /data:([^;]+)/.exec(data[0]);
if (!matches)
return Option.none();
var mimetype = matches[1];
var base64 = data[1];
var sliceSize = 1024;
var byteCharacters = $_b8ho8s120jdud7ff0.atob(base64);
var bytesLength = byteCharacters.length;
var slicesCount = Math.ceil(bytesLength / sliceSize);
var byteArrays = new Array(slicesCount);
for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {
var begin = sliceIndex * sliceSize;
var end = Math.min(begin + sliceSize, bytesLength);
var bytes = new Array(end - begin);
for (var offset = begin, i = 0; offset < end; ++i, ++offset) {
bytes[i] = byteCharacters[offset].charCodeAt(0);
}
byteArrays[sliceIndex] = Uint8Array(bytes);
}
return Option.some(Blob(byteArrays, { type: mimetype }));
}
function dataUriToBlob(uri) {
return new Promise(function (resolve, reject) {
dataUriToBlobSync(uri).fold(function () {
reject('uri is not base64: ' + uri);
}, resolve);
});
}
function uriToBlob(url) {
if (url.indexOf('blob:') === 0) {
return anyUriToBlob(url);
}
if (url.indexOf('data:') === 0) {
return dataUriToBlob(url);
}
return null;
}
function canvasToBlob(canvas, type, quality) {
type = type || 'image/png';
if (HTMLCanvasElement.prototype.toBlob) {
return new Promise(function (resolve) {
canvas.toBlob(function (blob) {
resolve(blob);
}, type, quality);
});
} else {
return dataUriToBlob(canvas.toDataURL(type, quality));
}
}
function canvasToDataURL(getCanvas, type, quality) {
type = type || 'image/png';
return getCanvas.then(function (canvas) {
return canvas.toDataURL(type, quality);
});
}
function blobToCanvas(blob) {
return blobToImage(blob).then(function (image) {
revokeImageUrl(image);
var context, canvas;
canvas = $_92yes011ujdud7fek.create($_a084qb11vjdud7fel.getWidth(image), $_a084qb11vjdud7fel.getHeight(image));
context = $_92yes011ujdud7fek.get2dContext(canvas);
context.drawImage(image, 0, 0);
return canvas;
});
}
function blobToDataUri(blob) {
return new Promise(function (resolve) {
var reader = new FileReader();
reader.onloadend = function () {
resolve(reader.result);
};
reader.readAsDataURL(blob);
});
}
function blobToBase64(blob) {
return blobToDataUri(blob).then(function (dataUri) {
return dataUri.split(',')[1];
});
}
function revokeImageUrl(image) {
URL.revokeObjectURL(image.src);
}
var $_fcfj4d11tjdud7fea = {
blobToImage: blobToImage,
imageToBlob: imageToBlob,
blobToDataUri: blobToDataUri,
blobToBase64: blobToBase64,
dataUriToBlobSync: dataUriToBlobSync,
canvasToBlob: canvasToBlob,
canvasToDataURL: canvasToDataURL,
blobToCanvas: blobToCanvas,
uriToBlob: uriToBlob
};
var blobToImage$1 = function (image) {
return $_fcfj4d11tjdud7fea.blobToImage(image);
};
var imageToBlob$1 = function (blob) {
return $_fcfj4d11tjdud7fea.imageToBlob(blob);
};
var blobToDataUri$1 = function (blob) {
return $_fcfj4d11tjdud7fea.blobToDataUri(blob);
};
var blobToBase64$1 = function (blob) {
return $_fcfj4d11tjdud7fea.blobToBase64(blob);
};
var dataUriToBlobSync$1 = function (uri) {
return $_fcfj4d11tjdud7fea.dataUriToBlobSync(uri);
};
var uriToBlob$1 = function (uri) {
return Option.from($_fcfj4d11tjdud7fea.uriToBlob(uri));
};
var $_28p52q11sjdud7fe7 = {
blobToImage: blobToImage$1,
imageToBlob: imageToBlob$1,
blobToDataUri: blobToDataUri$1,
blobToBase64: blobToBase64$1,
dataUriToBlobSync: dataUriToBlobSync$1,
uriToBlob: uriToBlob$1
};
var addImage = function (editor, blob) {
$_28p52q11sjdud7fe7.blobToBase64(blob).then(function (base64) {
editor.undoManager.transact(function () {
var cache = editor.editorUpload.blobCache;
var info = cache.create($_3k9wwu10rjdud7f7t.generate('mceu'), blob, base64);
cache.add(info);
var img = editor.dom.createHTML('img', { src: info.blobUri() });
editor.insertContent(img);
});
});
};
var extractBlob = function (simulatedEvent) {
var event = simulatedEvent.event();
var files = event.raw().target.files || event.raw().dataTransfer.files;
return Option.from(files[0]);
};
var sketch$5 = function (editor) {
var pickerDom = {
tag: 'input',
attributes: {
accept: 'image/*',
type: 'file',
title: ''
},
styles: {
visibility: 'hidden',
position: 'absolute'
}
};
var memPicker = $_81ial811rjdud7fdw.record({
dom: pickerDom,
events: $_5xcuyiy4jdud7eur.derive([
$_5xcuyiy4jdud7eur.cutter($_brmbwvwijdud7eiu.click()),
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.change(), function (picker, simulatedEvent) {
extractBlob(simulatedEvent).each(function (blob) {
addImage(editor, blob);
});
})
])
});
return Button.sketch({
dom: $_5oi2c7113jdud7fab.dom('<span class="${prefix}-toolbar-button ${prefix}-icon-image ${prefix}-icon"></span>'),
components: [memPicker.asSpec()],
action: function (button) {
var picker = memPicker.get(button);
picker.element().dom().click();
}
});
};
var $_sv17x11qjdud7fdo = { sketch: sketch$5 };
var get$8 = function (element) {
return element.dom().textContent;
};
var set$5 = function (element, value) {
element.dom().textContent = value;
};
var $_4cmh4e123jdud7fff = {
get: get$8,
set: set$5
};
var isNotEmpty = function (val) {
return val.length > 0;
};
var defaultToEmpty = function (str) {
return str === undefined || str === null ? '' : str;
};
var noLink = function (editor) {
var text = editor.selection.getContent({ format: 'text' });
return {
url: '',
text: text,
title: '',
target: '',
link: Option.none()
};
};
var fromLink = function (link) {
var text = $_4cmh4e123jdud7fff.get(link);
var url = $_2vghk1xrjdud7ems.get(link, 'href');
var title = $_2vghk1xrjdud7ems.get(link, 'title');
var target = $_2vghk1xrjdud7ems.get(link, 'target');
return {
url: defaultToEmpty(url),
text: text !== url ? defaultToEmpty(text) : '',
title: defaultToEmpty(title),
target: defaultToEmpty(target),
link: Option.some(link)
};
};
var getInfo = function (editor) {
return query(editor).fold(function () {
return noLink(editor);
}, function (link) {
return fromLink(link);
});
};
var wasSimple = function (link) {
var prevHref = $_2vghk1xrjdud7ems.get(link, 'href');
var prevText = $_4cmh4e123jdud7fff.get(link);
return prevHref === prevText;
};
var getTextToApply = function (link, url, info) {
return info.text.filter(isNotEmpty).fold(function () {
return wasSimple(link) ? Option.some(url) : Option.none();
}, Option.some);
};
var unlinkIfRequired = function (editor, info) {
var activeLink = info.link.bind($_9njj9iwjjdud7eix.identity);
activeLink.each(function (link) {
editor.execCommand('unlink');
});
};
var getAttrs$1 = function (url, info) {
var attrs = {};
attrs.href = url;
info.title.filter(isNotEmpty).each(function (title) {
attrs.title = title;
});
info.target.filter(isNotEmpty).each(function (target) {
attrs.target = target;
});
return attrs;
};
var applyInfo = function (editor, info) {
info.url.filter(isNotEmpty).fold(function () {
unlinkIfRequired(editor, info);
}, function (url) {
var attrs = getAttrs$1(url, info);
var activeLink = info.link.bind($_9njj9iwjjdud7eix.identity);
activeLink.fold(function () {
var text = info.text.filter(isNotEmpty).getOr(url);
editor.insertContent(editor.dom.createHTML('a', attrs, editor.dom.encode(text)));
}, function (link) {
var text = getTextToApply(link, url, info);
$_2vghk1xrjdud7ems.setAll(link, attrs);
text.each(function (newText) {
$_4cmh4e123jdud7fff.set(link, newText);
});
});
});
};
var query = function (editor) {
var start = $_eobgtqxfjdud7elu.fromDom(editor.selection.getStart());
return $_a3quyizxjdud7f3e.closest(start, 'a');
};
var $_ee8359122jdud7ff7 = {
getInfo: getInfo,
applyInfo: applyInfo,
query: query
};
var platform$1 = $_chh2cvwkjdud7ej0.detect();
var preserve$1 = function (f, editor) {
var rng = editor.selection.getRng();
f();
editor.selection.setRng(rng);
};
var forAndroid = function (editor, f) {
var wrapper = platform$1.os.isAndroid() ? preserve$1 : $_9njj9iwjjdud7eix.apply;
wrapper(f, editor);
};
var $_bmumk0124jdud7ffg = { forAndroid: forAndroid };
var events$6 = function (name, eventHandlers) {
var events = $_5xcuyiy4jdud7eur.derive(eventHandlers);
return $_ax1gfoy2jdud7eu7.create({
fields: [$_euqmtby7jdud7ev7.strict('enabled')],
name: name,
active: { events: $_9njj9iwjjdud7eix.constant(events) }
});
};
var config = function (name, eventHandlers) {
var me = events$6(name, eventHandlers);
return {
key: name,
value: {
config: {},
me: me,
configAsRaw: $_9njj9iwjjdud7eix.constant({}),
initialConfig: {},
state: $_ax1gfoy2jdud7eu7.noState()
}
};
};
var $_6jfkt3126jdud7ffy = {
events: events$6,
config: config
};
var getCurrent = function (component, composeConfig, composeState) {
return composeConfig.find()(component);
};
var $_bwstl9128jdud7fg3 = { getCurrent: getCurrent };
var ComposeSchema = [$_euqmtby7jdud7ev7.strict('find')];
var Composing = $_ax1gfoy2jdud7eu7.create({
fields: ComposeSchema,
name: 'composing',
apis: $_bwstl9128jdud7fg3
});
var factory$1 = function (detail, spec) {
return {
uid: detail.uid(),
dom: $_73qnwowyjdud7ek9.deepMerge({
tag: 'div',
attributes: { role: 'presentation' }
}, detail.dom()),
components: detail.components(),
behaviours: $_c7jpu210ojdud7f7a.get(detail.containerBehaviours()),
events: detail.events(),
domModification: detail.domModification(),
eventOrder: detail.eventOrder()
};
};
var Container = $_3inyq310pjdud7f7f.single({
name: 'Container',
factory: factory$1,
configFields: [
$_euqmtby7jdud7ev7.defaulted('components', []),
$_c7jpu210ojdud7f7a.field('containerBehaviours', []),
$_euqmtby7jdud7ev7.defaulted('events', {}),
$_euqmtby7jdud7ev7.defaulted('domModification', {}),
$_euqmtby7jdud7ev7.defaulted('eventOrder', {})
]
});
var factory$2 = function (detail, spec) {
return {
uid: detail.uid(),
dom: detail.dom(),
behaviours: $_73qnwowyjdud7ek9.deepMerge($_ax1gfoy2jdud7eu7.derive([
me.config({
store: {
mode: 'memory',
initialValue: detail.getInitialValue()()
}
}),
Composing.config({ find: Option.some })
]), $_c7jpu210ojdud7f7a.get(detail.dataBehaviours())),
events: $_5xcuyiy4jdud7eur.derive([$_5xcuyiy4jdud7eur.runOnAttached(function (component, simulatedEvent) {
me.setValue(component, detail.getInitialValue()());
})])
};
};
var DataField = $_3inyq310pjdud7f7f.single({
name: 'DataField',
factory: factory$2,
configFields: [
$_euqmtby7jdud7ev7.strict('uid'),
$_euqmtby7jdud7ev7.strict('dom'),
$_euqmtby7jdud7ev7.strict('getInitialValue'),
$_c7jpu210ojdud7f7a.field('dataBehaviours', [
me,
Composing
])
]
});
var get$9 = function (element) {
return element.dom().value;
};
var set$6 = function (element, value) {
if (value === undefined)
throw new Error('Value.set was undefined');
element.dom().value = value;
};
var $_2itxad12ejdud7fgx = {
set: set$6,
get: get$9
};
var schema$8 = [
$_euqmtby7jdud7ev7.option('data'),
$_euqmtby7jdud7ev7.defaulted('inputAttributes', {}),
$_euqmtby7jdud7ev7.defaulted('inputStyles', {}),
$_euqmtby7jdud7ev7.defaulted('type', 'input'),
$_euqmtby7jdud7ev7.defaulted('tag', 'input'),
$_euqmtby7jdud7ev7.defaulted('inputClasses', []),
$_etkinez6jdud7ezi.onHandler('onSetValue'),
$_euqmtby7jdud7ev7.defaulted('styles', {}),
$_euqmtby7jdud7ev7.option('placeholder'),
$_euqmtby7jdud7ev7.defaulted('eventOrder', {}),
$_c7jpu210ojdud7f7a.field('inputBehaviours', [
me,
Focusing
]),
$_euqmtby7jdud7ev7.defaulted('selectOnFocus', true)
];
var behaviours = function (detail) {
return $_73qnwowyjdud7ek9.deepMerge($_ax1gfoy2jdud7eu7.derive([
me.config({
store: {
mode: 'manual',
initialValue: detail.data().getOr(undefined),
getValue: function (input) {
return $_2itxad12ejdud7fgx.get(input.element());
},
setValue: function (input, data) {
var current = $_2itxad12ejdud7fgx.get(input.element());
if (current !== data) {
$_2itxad12ejdud7fgx.set(input.element(), data);
}
}
},
onSetValue: detail.onSetValue()
}),
Focusing.config({
onFocus: detail.selectOnFocus() === false ? $_9njj9iwjjdud7eix.noop : function (component) {
var input = component.element();
var value = $_2itxad12ejdud7fgx.get(input);
input.dom().setSelectionRange(0, value.length);
}
})
]), $_c7jpu210ojdud7f7a.get(detail.inputBehaviours()));
};
var dom$2 = function (detail) {
return {
tag: detail.tag(),
attributes: $_73qnwowyjdud7ek9.deepMerge($_ettibkxsjdud7emz.wrapAll([{
key: 'type',
value: detail.type()
}].concat(detail.placeholder().map(function (pc) {
return {
key: 'placeholder',
value: pc
};
}).toArray())), detail.inputAttributes()),
styles: detail.inputStyles(),
classes: detail.inputClasses()
};
};
var $_93oz4o12djdud7fgo = {
schema: $_9njj9iwjjdud7eix.constant(schema$8),
behaviours: behaviours,
dom: dom$2
};
var factory$3 = function (detail, spec) {
return {
uid: detail.uid(),
dom: $_93oz4o12djdud7fgo.dom(detail),
components: [],
behaviours: $_93oz4o12djdud7fgo.behaviours(detail),
eventOrder: detail.eventOrder()
};
};
var Input = $_3inyq310pjdud7f7f.single({
name: 'Input',
configFields: $_93oz4o12djdud7fgo.schema(),
factory: factory$3
});
var exhibit$3 = function (base, tabConfig) {
return $_biiw3tyhjdud7ewz.nu({
attributes: $_ettibkxsjdud7emz.wrapAll([{
key: tabConfig.tabAttr(),
value: 'true'
}])
});
};
var $_7pfhbw12gjdud7fh0 = { exhibit: exhibit$3 };
var TabstopSchema = [$_euqmtby7jdud7ev7.defaulted('tabAttr', 'data-alloy-tabstop')];
var Tabstopping = $_ax1gfoy2jdud7eu7.create({
fields: TabstopSchema,
name: 'tabstopping',
active: $_7pfhbw12gjdud7fh0
});
var clearInputBehaviour = 'input-clearing';
var field$2 = function (name, placeholder) {
var inputSpec = $_81ial811rjdud7fdw.record(Input.sketch({
placeholder: placeholder,
onSetValue: function (input, data) {
$_98da6jwgjdud7eil.emit(input, $_brmbwvwijdud7eiu.input());
},
inputBehaviours: $_ax1gfoy2jdud7eu7.derive([
Composing.config({ find: Option.some }),
Tabstopping.config({}),
Keying.config({ mode: 'execution' })
]),
selectOnFocus: false
}));
var buttonSpec = $_81ial811rjdud7fdw.record(Button.sketch({
dom: $_5oi2c7113jdud7fab.dom('<button class="${prefix}-input-container-x ${prefix}-icon-cancel-circle ${prefix}-icon"></button>'),
action: function (button) {
var input = inputSpec.get(button);
me.setValue(input, '');
}
}));
return {
name: name,
spec: Container.sketch({
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-input-container"></div>'),
components: [
inputSpec.asSpec(),
buttonSpec.asSpec()
],
containerBehaviours: $_ax1gfoy2jdud7eu7.derive([
Toggling.config({ toggleClass: $_5qzh4bzejdud7f0y.resolve('input-container-empty') }),
Composing.config({
find: function (comp) {
return Option.some(inputSpec.get(comp));
}
}),
$_6jfkt3126jdud7ffy.config(clearInputBehaviour, [$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.input(), function (iContainer) {
var input = inputSpec.get(iContainer);
var val = me.getValue(input);
var f = val.length > 0 ? Toggling.off : Toggling.on;
f(iContainer);
})])
])
})
};
};
var hidden = function (name) {
return {
name: name,
spec: DataField.sketch({
dom: {
tag: 'span',
styles: { display: 'none' }
},
getInitialValue: function () {
return Option.none();
}
})
};
};
var $_dqko3j125jdud7ffj = {
field: field$2,
hidden: hidden
};
var nativeDisabled = [
'input',
'button',
'textarea'
];
var onLoad$5 = function (component, disableConfig, disableState) {
if (disableConfig.disabled())
disable(component, disableConfig, disableState);
};
var hasNative = function (component) {
return $_1g2cevwsjdud7ejp.contains(nativeDisabled, $_50qkdpxkjdud7em6.name(component.element()));
};
var nativeIsDisabled = function (component) {
return $_2vghk1xrjdud7ems.has(component.element(), 'disabled');
};
var nativeDisable = function (component) {
$_2vghk1xrjdud7ems.set(component.element(), 'disabled', 'disabled');
};
var nativeEnable = function (component) {
$_2vghk1xrjdud7ems.remove(component.element(), 'disabled');
};
var ariaIsDisabled = function (component) {
return $_2vghk1xrjdud7ems.get(component.element(), 'aria-disabled') === 'true';
};
var ariaDisable = function (component) {
$_2vghk1xrjdud7ems.set(component.element(), 'aria-disabled', 'true');
};
var ariaEnable = function (component) {
$_2vghk1xrjdud7ems.set(component.element(), 'aria-disabled', 'false');
};
var disable = function (component, disableConfig, disableState) {
disableConfig.disableClass().each(function (disableClass) {
$_1x3ogvynjdud7exn.add(component.element(), disableClass);
});
var f = hasNative(component) ? nativeDisable : ariaDisable;
f(component);
};
var enable = function (component, disableConfig, disableState) {
disableConfig.disableClass().each(function (disableClass) {
$_1x3ogvynjdud7exn.remove(component.element(), disableClass);
});
var f = hasNative(component) ? nativeEnable : ariaEnable;
f(component);
};
var isDisabled = function (component) {
return hasNative(component) ? nativeIsDisabled(component) : ariaIsDisabled(component);
};
var $_qq2li12ljdud7fhv = {
enable: enable,
disable: disable,
isDisabled: isDisabled,
onLoad: onLoad$5
};
var exhibit$4 = function (base, disableConfig, disableState) {
return $_biiw3tyhjdud7ewz.nu({ classes: disableConfig.disabled() ? disableConfig.disableClass().map($_1g2cevwsjdud7ejp.pure).getOr([]) : [] });
};
var events$7 = function (disableConfig, disableState) {
return $_5xcuyiy4jdud7eur.derive([
$_5xcuyiy4jdud7eur.abort($_801kkqwhjdud7eiq.execute(), function (component, simulatedEvent) {
return $_qq2li12ljdud7fhv.isDisabled(component, disableConfig, disableState);
}),
$_1t33c1y3jdud7euf.loadEvent(disableConfig, disableState, $_qq2li12ljdud7fhv.onLoad)
]);
};
var $_3yxxg12kjdud7fhs = {
exhibit: exhibit$4,
events: events$7
};
var DisableSchema = [
$_euqmtby7jdud7ev7.defaulted('disabled', false),
$_euqmtby7jdud7ev7.option('disableClass')
];
var Disabling = $_ax1gfoy2jdud7eu7.create({
fields: DisableSchema,
name: 'disabling',
active: $_3yxxg12kjdud7fhs,
apis: $_qq2li12ljdud7fhv
});
var owner$1 = 'form';
var schema$9 = [$_c7jpu210ojdud7f7a.field('formBehaviours', [me])];
var getPartName = function (name) {
return '<alloy.field.' + name + '>';
};
var sketch$6 = function (fSpec) {
var parts = function () {
var record = [];
var field = function (name, config) {
record.push(name);
return $_436kgb10tjdud7f7y.generateOne(owner$1, getPartName(name), config);
};
return {
field: field,
record: function () {
return record;
}
};
}();
var spec = fSpec(parts);
var partNames = parts.record();
var fieldParts = $_1g2cevwsjdud7ejp.map(partNames, function (n) {
return $_7938qf10vjdud7f8n.required({
name: n,
pname: getPartName(n)
});
});
return $_dsxxyk10sjdud7f7u.composite(owner$1, schema$9, fieldParts, make, spec);
};
var make = function (detail, components, spec) {
return $_73qnwowyjdud7ek9.deepMerge({
'debug.sketcher': { 'Form': spec },
uid: detail.uid(),
dom: detail.dom(),
components: components,
behaviours: $_73qnwowyjdud7ek9.deepMerge($_ax1gfoy2jdud7eu7.derive([me.config({
store: {
mode: 'manual',
getValue: function (form) {
var optPs = $_436kgb10tjdud7f7y.getAllParts(form, detail);
return $_2dykn0x0jdud7ekc.map(optPs, function (optPThunk, pName) {
return optPThunk().bind(Composing.getCurrent).map(me.getValue);
});
},
setValue: function (form, values) {
$_2dykn0x0jdud7ekc.each(values, function (newValue, key) {
$_436kgb10tjdud7f7y.getPart(form, detail, key).each(function (wrapper) {
Composing.getCurrent(wrapper).each(function (field) {
me.setValue(field, newValue);
});
});
});
}
}
})]), $_c7jpu210ojdud7f7a.get(detail.formBehaviours())),
apis: {
getField: function (form, key) {
return $_436kgb10tjdud7f7y.getPart(form, detail, key).bind(Composing.getCurrent);
}
}
});
};
var $_1cu1pe12njdud7fib = {
getField: $_37ypl510qjdud7f7n.makeApi(function (apis, component, key) {
return apis.getField(component, key);
}),
sketch: sketch$6
};
var revocable = function (doRevoke) {
var subject = Cell(Option.none());
var revoke = function () {
subject.get().each(doRevoke);
};
var clear = function () {
revoke();
subject.set(Option.none());
};
var set = function (s) {
revoke();
subject.set(Option.some(s));
};
var isSet = function () {
return subject.get().isSome();
};
return {
clear: clear,
isSet: isSet,
set: set
};
};
var destroyable = function () {
return revocable(function (s) {
s.destroy();
});
};
var unbindable = function () {
return revocable(function (s) {
s.unbind();
});
};
var api$2 = function () {
var subject = Cell(Option.none());
var revoke = function () {
subject.get().each(function (s) {
s.destroy();
});
};
var clear = function () {
revoke();
subject.set(Option.none());
};
var set = function (s) {
revoke();
subject.set(Option.some(s));
};
var run = function (f) {
subject.get().each(f);
};
var isSet = function () {
return subject.get().isSome();
};
return {
clear: clear,
isSet: isSet,
set: set,
run: run
};
};
var value$3 = function () {
var subject = Cell(Option.none());
var clear = function () {
subject.set(Option.none());
};
var set = function (s) {
subject.set(Option.some(s));
};
var on = function (f) {
subject.get().each(f);
};
var isSet = function () {
return subject.get().isSome();
};
return {
clear: clear,
set: set,
isSet: isSet,
on: on
};
};
var $_9fhyae12ojdud7fij = {
destroyable: destroyable,
unbindable: unbindable,
api: api$2,
value: value$3
};
var SWIPING_LEFT = 1;
var SWIPING_RIGHT = -1;
var SWIPING_NONE = 0;
var init$3 = function (xValue) {
return {
xValue: xValue,
points: []
};
};
var move = function (model, xValue) {
if (xValue === model.xValue) {
return model;
}
var currentDirection = xValue - model.xValue > 0 ? SWIPING_LEFT : SWIPING_RIGHT;
var newPoint = {
direction: currentDirection,
xValue: xValue
};
var priorPoints = function () {
if (model.points.length === 0) {
return [];
} else {
var prev = model.points[model.points.length - 1];
return prev.direction === currentDirection ? model.points.slice(0, model.points.length - 1) : model.points;
}
}();
return {
xValue: xValue,
points: priorPoints.concat([newPoint])
};
};
var complete = function (model) {
if (model.points.length === 0) {
return SWIPING_NONE;
} else {
var firstDirection = model.points[0].direction;
var lastDirection = model.points[model.points.length - 1].direction;
return firstDirection === SWIPING_RIGHT && lastDirection === SWIPING_RIGHT ? SWIPING_RIGHT : firstDirection === SWIPING_LEFT && lastDirection === SWIPING_LEFT ? SWIPING_LEFT : SWIPING_NONE;
}
};
var $_1u15ok12pjdud7fim = {
init: init$3,
move: move,
complete: complete
};
var sketch$7 = function (rawSpec) {
var navigateEvent = 'navigateEvent';
var wrapperAdhocEvents = 'serializer-wrapper-events';
var formAdhocEvents = 'form-events';
var schema = $_13hkebyejdud7ewm.objOf([
$_euqmtby7jdud7ev7.strict('fields'),
$_euqmtby7jdud7ev7.defaulted('maxFieldIndex', rawSpec.fields.length - 1),
$_euqmtby7jdud7ev7.strict('onExecute'),
$_euqmtby7jdud7ev7.strict('getInitialValue'),
$_euqmtby7jdud7ev7.state('state', function () {
return {
dialogSwipeState: $_9fhyae12ojdud7fij.value(),
currentScreen: Cell(0)
};
})
]);
var spec = $_13hkebyejdud7ewm.asRawOrDie('SerialisedDialog', schema, rawSpec);
var navigationButton = function (direction, directionName, enabled) {
return Button.sketch({
dom: $_5oi2c7113jdud7fab.dom('<span class="${prefix}-icon-' + directionName + ' ${prefix}-icon"></span>'),
action: function (button) {
$_98da6jwgjdud7eil.emitWith(button, navigateEvent, { direction: direction });
},
buttonBehaviours: $_ax1gfoy2jdud7eu7.derive([Disabling.config({
disableClass: $_5qzh4bzejdud7f0y.resolve('toolbar-navigation-disabled'),
disabled: !enabled
})])
});
};
var reposition = function (dialog, message) {
$_a3quyizxjdud7f3e.descendant(dialog.element(), '.' + $_5qzh4bzejdud7f0y.resolve('serialised-dialog-chain')).each(function (parent) {
$_btgbcy103jdud7f3t.set(parent, 'left', -spec.state.currentScreen.get() * message.width + 'px');
});
};
var navigate = function (dialog, direction) {
var screens = $_df6s98zvjdud7f39.descendants(dialog.element(), '.' + $_5qzh4bzejdud7f0y.resolve('serialised-dialog-screen'));
$_a3quyizxjdud7f3e.descendant(dialog.element(), '.' + $_5qzh4bzejdud7f0y.resolve('serialised-dialog-chain')).each(function (parent) {
if (spec.state.currentScreen.get() + direction >= 0 && spec.state.currentScreen.get() + direction < screens.length) {
$_btgbcy103jdud7f3t.getRaw(parent, 'left').each(function (left) {
var currentLeft = parseInt(left, 10);
var w = $_6chz3611kjdud7fcw.get(screens[0]);
$_btgbcy103jdud7f3t.set(parent, 'left', currentLeft - direction * w + 'px');
});
spec.state.currentScreen.set(spec.state.currentScreen.get() + direction);
}
});
};
var focusInput = function (dialog) {
var inputs = $_df6s98zvjdud7f39.descendants(dialog.element(), 'input');
var optInput = Option.from(inputs[spec.state.currentScreen.get()]);
optInput.each(function (input) {
dialog.getSystem().getByDom(input).each(function (inputComp) {
$_98da6jwgjdud7eil.dispatchFocus(dialog, inputComp.element());
});
});
var dotitems = memDots.get(dialog);
Highlighting.highlightAt(dotitems, spec.state.currentScreen.get());
};
var resetState = function () {
spec.state.currentScreen.set(0);
spec.state.dialogSwipeState.clear();
};
var memForm = $_81ial811rjdud7fdw.record($_1cu1pe12njdud7fib.sketch(function (parts) {
return {
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-serialised-dialog"></div>'),
components: [Container.sketch({
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-serialised-dialog-chain" style="left: 0px; position: absolute;"></div>'),
components: $_1g2cevwsjdud7ejp.map(spec.fields, function (field, i) {
return i <= spec.maxFieldIndex ? Container.sketch({
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-serialised-dialog-screen"></div>'),
components: $_1g2cevwsjdud7ejp.flatten([
[navigationButton(-1, 'previous', i > 0)],
[parts.field(field.name, field.spec)],
[navigationButton(+1, 'next', i < spec.maxFieldIndex)]
])
}) : parts.field(field.name, field.spec);
})
})],
formBehaviours: $_ax1gfoy2jdud7eu7.derive([
$_nw25bzdjdud7f0v.orientation(function (dialog, message) {
reposition(dialog, message);
}),
Keying.config({
mode: 'special',
focusIn: function (dialog) {
focusInput(dialog);
},
onTab: function (dialog) {
navigate(dialog, +1);
return Option.some(true);
},
onShiftTab: function (dialog) {
navigate(dialog, -1);
return Option.some(true);
}
}),
$_6jfkt3126jdud7ffy.config(formAdhocEvents, [
$_5xcuyiy4jdud7eur.runOnAttached(function (dialog, simulatedEvent) {
resetState();
var dotitems = memDots.get(dialog);
Highlighting.highlightFirst(dotitems);
spec.getInitialValue(dialog).each(function (v) {
me.setValue(dialog, v);
});
}),
$_5xcuyiy4jdud7eur.runOnExecute(spec.onExecute),
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.transitionend(), function (dialog, simulatedEvent) {
if (simulatedEvent.event().raw().propertyName === 'left') {
focusInput(dialog);
}
}),
$_5xcuyiy4jdud7eur.run(navigateEvent, function (dialog, simulatedEvent) {
var direction = simulatedEvent.event().direction();
navigate(dialog, direction);
})
])
])
};
}));
var memDots = $_81ial811rjdud7fdw.record({
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-dot-container"></div>'),
behaviours: $_ax1gfoy2jdud7eu7.derive([Highlighting.config({
highlightClass: $_5qzh4bzejdud7f0y.resolve('dot-active'),
itemClass: $_5qzh4bzejdud7f0y.resolve('dot-item')
})]),
components: $_1g2cevwsjdud7ejp.bind(spec.fields, function (_f, i) {
return i <= spec.maxFieldIndex ? [$_5oi2c7113jdud7fab.spec('<div class="${prefix}-dot-item ${prefix}-icon-full-dot ${prefix}-icon"></div>')] : [];
})
});
return {
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-serializer-wrapper"></div>'),
components: [
memForm.asSpec(),
memDots.asSpec()
],
behaviours: $_ax1gfoy2jdud7eu7.derive([
Keying.config({
mode: 'special',
focusIn: function (wrapper) {
var form = memForm.get(wrapper);
Keying.focusIn(form);
}
}),
$_6jfkt3126jdud7ffy.config(wrapperAdhocEvents, [
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.touchstart(), function (wrapper, simulatedEvent) {
spec.state.dialogSwipeState.set($_1u15ok12pjdud7fim.init(simulatedEvent.event().raw().touches[0].clientX));
}),
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.touchmove(), function (wrapper, simulatedEvent) {
spec.state.dialogSwipeState.on(function (state) {
simulatedEvent.event().prevent();
spec.state.dialogSwipeState.set($_1u15ok12pjdud7fim.move(state, simulatedEvent.event().raw().touches[0].clientX));
});
}),
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.touchend(), function (wrapper) {
spec.state.dialogSwipeState.on(function (state) {
var dialog = memForm.get(wrapper);
var direction = -1 * $_1u15ok12pjdud7fim.complete(state);
navigate(dialog, direction);
});
})
])
])
};
};
var $_6vo93712ijdud7fh6 = { sketch: sketch$7 };
var getGroups = $_2nf0bewljdud7ej2.cached(function (realm, editor) {
return [{
label: 'the link group',
items: [$_6vo93712ijdud7fh6.sketch({
fields: [
$_dqko3j125jdud7ffj.field('url', 'Type or paste URL'),
$_dqko3j125jdud7ffj.field('text', 'Link text'),
$_dqko3j125jdud7ffj.field('title', 'Link title'),
$_dqko3j125jdud7ffj.field('target', 'Link target'),
$_dqko3j125jdud7ffj.hidden('link')
],
maxFieldIndex: [
'url',
'text',
'title',
'target'
].length - 1,
getInitialValue: function () {
return Option.some($_ee8359122jdud7ff7.getInfo(editor));
},
onExecute: function (dialog) {
var info = me.getValue(dialog);
$_ee8359122jdud7ff7.applyInfo(editor, info);
realm.restoreToolbar();
editor.focus();
}
})]
}];
});
var sketch$8 = function (realm, editor) {
return $_d0l7buzfjdud7f11.forToolbarStateAction(editor, 'link', 'link', function () {
var groups = getGroups(realm, editor);
realm.setContextToolbar(groups);
$_bmumk0124jdud7ffg.forAndroid(editor, function () {
realm.focusToolbar();
});
$_ee8359122jdud7ff7.query(editor).each(function (link) {
editor.selection.select(link.dom());
});
});
};
var $_20tbzu121jdud7ff2 = { sketch: sketch$8 };
var DefaultStyleFormats = [
{
title: 'Headings',
items: [
{
title: 'Heading 1',
format: 'h1'
},
{
title: 'Heading 2',
format: 'h2'
},
{
title: 'Heading 3',
format: 'h3'
},
{
title: 'Heading 4',
format: 'h4'
},
{
title: 'Heading 5',
format: 'h5'
},
{
title: 'Heading 6',
format: 'h6'
}
]
},
{
title: 'Inline',
items: [
{
title: 'Bold',
icon: 'bold',
format: 'bold'
},
{
title: 'Italic',
icon: 'italic',
format: 'italic'
},
{
title: 'Underline',
icon: 'underline',
format: 'underline'
},
{
title: 'Strikethrough',
icon: 'strikethrough',
format: 'strikethrough'
},
{
title: 'Superscript',
icon: 'superscript',
format: 'superscript'
},
{
title: 'Subscript',
icon: 'subscript',
format: 'subscript'
},
{
title: 'Code',
icon: 'code',
format: 'code'
}
]
},
{
title: 'Blocks',
items: [
{
title: 'Paragraph',
format: 'p'
},
{
title: 'Blockquote',
format: 'blockquote'
},
{
title: 'Div',
format: 'div'
},
{
title: 'Pre',
format: 'pre'
}
]
},
{
title: 'Alignment',
items: [
{
title: 'Left',
icon: 'alignleft',
format: 'alignleft'
},
{
title: 'Center',
icon: 'aligncenter',
format: 'aligncenter'
},
{
title: 'Right',
icon: 'alignright',
format: 'alignright'
},
{
title: 'Justify',
icon: 'alignjustify',
format: 'alignjustify'
}
]
}
];
var generateFrom = function (spec, all) {
var schema = $_1g2cevwsjdud7ejp.map(all, function (a) {
return $_euqmtby7jdud7ev7.field(a.name(), a.name(), $_6rbn18y8jdud7evc.asOption(), $_13hkebyejdud7ewm.objOf([
$_euqmtby7jdud7ev7.strict('config'),
$_euqmtby7jdud7ev7.defaulted('state', $_71cmtkyjjdud7exe)
]));
});
var validated = $_13hkebyejdud7ewm.asStruct('component.behaviours', $_13hkebyejdud7ewm.objOf(schema), spec.behaviours).fold(function (errInfo) {
throw new Error($_13hkebyejdud7ewm.formatError(errInfo) + '\nComplete spec:\n' + $_crnojnydjdud7ewk.stringify(spec, null, 2));
}, $_9njj9iwjjdud7eix.identity);
return {
list: all,
data: $_2dykn0x0jdud7ekc.map(validated, function (blobOptionThunk) {
var blobOption = blobOptionThunk();
return $_9njj9iwjjdud7eix.constant(blobOption.map(function (blob) {
return {
config: blob.config(),
state: blob.state().init(blob.config())
};
}));
})
};
};
var getBehaviours = function (bData) {
return bData.list;
};
var getData = function (bData) {
return bData.data;
};
var $_9q6ztw12wjdud7fkm = {
generateFrom: generateFrom,
getBehaviours: getBehaviours,
getData: getData
};
var getBehaviours$1 = function (spec) {
var behaviours = $_ettibkxsjdud7emz.readOptFrom(spec, 'behaviours').getOr({});
var keys = $_1g2cevwsjdud7ejp.filter($_2dykn0x0jdud7ekc.keys(behaviours), function (k) {
return behaviours[k] !== undefined;
});
return $_1g2cevwsjdud7ejp.map(keys, function (k) {
return spec.behaviours[k].me;
});
};
var generateFrom$1 = function (spec, all) {
return $_9q6ztw12wjdud7fkm.generateFrom(spec, all);
};
var generate$4 = function (spec) {
var all = getBehaviours$1(spec);
return generateFrom$1(spec, all);
};
var $_9vg7um12vjdud7fkh = {
generate: generate$4,
generateFrom: generateFrom$1
};
var ComponentApi = $_cmsqfeyljdud7exh.exactly([
'getSystem',
'config',
'hasConfigured',
'spec',
'connect',
'disconnect',
'element',
'syncComponents',
'readState',
'components',
'events'
]);
var SystemApi = $_cmsqfeyljdud7exh.exactly([
'debugInfo',
'triggerFocus',
'triggerEvent',
'triggerEscape',
'addToWorld',
'removeFromWorld',
'addToGui',
'removeFromGui',
'build',
'getByUid',
'getByDom',
'broadcast',
'broadcastOn'
]);
function NoContextApi (getComp) {
var fail = function (event) {
return function () {
throw new Error('The component must be in a context to send: ' + event + '\n' + $_d3f8kuxmjdud7emi.element(getComp().element()) + ' is not in context.');
};
};
return SystemApi({
debugInfo: $_9njj9iwjjdud7eix.constant('fake'),
triggerEvent: fail('triggerEvent'),
triggerFocus: fail('triggerFocus'),
triggerEscape: fail('triggerEscape'),
build: fail('build'),
addToWorld: fail('addToWorld'),
removeFromWorld: fail('removeFromWorld'),
addToGui: fail('addToGui'),
removeFromGui: fail('removeFromGui'),
getByUid: fail('getByUid'),
getByDom: fail('getByDom'),
broadcast: fail('broadcast'),
broadcastOn: fail('broadcastOn')
});
}
var byInnerKey = function (data, tuple) {
var r = {};
$_2dykn0x0jdud7ekc.each(data, function (detail, key) {
$_2dykn0x0jdud7ekc.each(detail, function (value, indexKey) {
var chain = $_ettibkxsjdud7emz.readOr(indexKey, [])(r);
r[indexKey] = chain.concat([tuple(key, value)]);
});
});
return r;
};
var $_5gdyb2131jdud7fle = { byInnerKey: byInnerKey };
var behaviourDom = function (name, modification) {
return {
name: $_9njj9iwjjdud7eix.constant(name),
modification: modification
};
};
var concat = function (chain, aspect) {
var values = $_1g2cevwsjdud7ejp.bind(chain, function (c) {
return c.modification().getOr([]);
});
return Result.value($_ettibkxsjdud7emz.wrap(aspect, values));
};
var onlyOne = function (chain, aspect, order) {
if (chain.length > 1)
return Result.error('Multiple behaviours have tried to change DOM "' + aspect + '". The guilty behaviours are: ' + $_crnojnydjdud7ewk.stringify($_1g2cevwsjdud7ejp.map(chain, function (b) {
return b.name();
})) + '. At this stage, this ' + 'is not supported. Future releases might provide strategies for resolving this.');
else if (chain.length === 0)
return Result.value({});
else
return Result.value(chain[0].modification().fold(function () {
return {};
}, function (m) {
return $_ettibkxsjdud7emz.wrap(aspect, m);
}));
};
var duplicate = function (aspect, k, obj, behaviours) {
return Result.error('Mulitple behaviours have tried to change the _' + k + '_ "' + aspect + '"' + '. The guilty behaviours are: ' + $_crnojnydjdud7ewk.stringify($_1g2cevwsjdud7ejp.bind(behaviours, function (b) {
return b.modification().getOr({})[k] !== undefined ? [b.name()] : [];
}), null, 2) + '. This is not currently supported.');
};
var safeMerge = function (chain, aspect) {
var y = $_1g2cevwsjdud7ejp.foldl(chain, function (acc, c) {
var obj = c.modification().getOr({});
return acc.bind(function (accRest) {
var parts = $_2dykn0x0jdud7ekc.mapToArray(obj, function (v, k) {
return accRest[k] !== undefined ? duplicate(aspect, k, obj, chain) : Result.value($_ettibkxsjdud7emz.wrap(k, v));
});
return $_ettibkxsjdud7emz.consolidate(parts, accRest);
});
}, Result.value({}));
return y.map(function (yValue) {
return $_ettibkxsjdud7emz.wrap(aspect, yValue);
});
};
var mergeTypes = {
classes: concat,
attributes: safeMerge,
styles: safeMerge,
domChildren: onlyOne,
defChildren: onlyOne,
innerHtml: onlyOne,
value: onlyOne
};
var combine$1 = function (info, baseMod, behaviours, base) {
var behaviourDoms = $_73qnwowyjdud7ek9.deepMerge({}, baseMod);
$_1g2cevwsjdud7ejp.each(behaviours, function (behaviour) {
behaviourDoms[behaviour.name()] = behaviour.exhibit(info, base);
});
var byAspect = $_5gdyb2131jdud7fle.byInnerKey(behaviourDoms, behaviourDom);
var usedAspect = $_2dykn0x0jdud7ekc.map(byAspect, function (values, aspect) {
return $_1g2cevwsjdud7ejp.bind(values, function (value) {
return value.modification().fold(function () {
return [];
}, function (v) {
return [value];
});
});
});
var modifications = $_2dykn0x0jdud7ekc.mapToArray(usedAspect, function (values, aspect) {
return $_ettibkxsjdud7emz.readOptFrom(mergeTypes, aspect).fold(function () {
return Result.error('Unknown field type: ' + aspect);
}, function (merger) {
return merger(values, aspect);
});
});
var consolidated = $_ettibkxsjdud7emz.consolidate(modifications, {});
return consolidated.map($_biiw3tyhjdud7ewz.nu);
};
var $_57i0zb130jdud7fl4 = { combine: combine$1 };
var sortKeys = function (label, keyName, array, order) {
var sliced = array.slice(0);
try {
var sorted = sliced.sort(function (a, b) {
var aKey = a[keyName]();
var bKey = b[keyName]();
var aIndex = order.indexOf(aKey);
var bIndex = order.indexOf(bKey);
if (aIndex === -1)
throw new Error('The ordering for ' + label + ' does not have an entry for ' + aKey + '.\nOrder specified: ' + $_crnojnydjdud7ewk.stringify(order, null, 2));
if (bIndex === -1)
throw new Error('The ordering for ' + label + ' does not have an entry for ' + bKey + '.\nOrder specified: ' + $_crnojnydjdud7ewk.stringify(order, null, 2));
if (aIndex < bIndex)
return -1;
else if (bIndex < aIndex)
return 1;
else
return 0;
});
return Result.value(sorted);
} catch (err) {
return Result.error([err]);
}
};
var $_1ppdst133jdud7flt = { sortKeys: sortKeys };
var nu$7 = function (handler, purpose) {
return {
handler: handler,
purpose: $_9njj9iwjjdud7eix.constant(purpose)
};
};
var curryArgs = function (descHandler, extraArgs) {
return {
handler: $_9njj9iwjjdud7eix.curry.apply(undefined, [descHandler.handler].concat(extraArgs)),
purpose: descHandler.purpose
};
};
var getHandler = function (descHandler) {
return descHandler.handler;
};
var $_6lldf5134jdud7flx = {
nu: nu$7,
curryArgs: curryArgs,
getHandler: getHandler
};
var behaviourTuple = function (name, handler) {
return {
name: $_9njj9iwjjdud7eix.constant(name),
handler: $_9njj9iwjjdud7eix.constant(handler)
};
};
var nameToHandlers = function (behaviours, info) {
var r = {};
$_1g2cevwsjdud7ejp.each(behaviours, function (behaviour) {
r[behaviour.name()] = behaviour.handlers(info);
});
return r;
};
var groupByEvents = function (info, behaviours, base) {
var behaviourEvents = $_73qnwowyjdud7ek9.deepMerge(base, nameToHandlers(behaviours, info));
return $_5gdyb2131jdud7fle.byInnerKey(behaviourEvents, behaviourTuple);
};
var combine$2 = function (info, eventOrder, behaviours, base) {
var byEventName = groupByEvents(info, behaviours, base);
return combineGroups(byEventName, eventOrder);
};
var assemble = function (rawHandler) {
var handler = $_6jq2azy6jdud7eux.read(rawHandler);
return function (component, simulatedEvent) {
var args = Array.prototype.slice.call(arguments, 0);
if (handler.abort.apply(undefined, args)) {
simulatedEvent.stop();
} else if (handler.can.apply(undefined, args)) {
handler.run.apply(undefined, args);
}
};
};
var missingOrderError = function (eventName, tuples) {
return Result.error(['The event (' + eventName + ') has more than one behaviour that listens to it.\nWhen this occurs, you must ' + 'specify an event ordering for the behaviours in your spec (e.g. [ "listing", "toggling" ]).\nThe behaviours that ' + 'can trigger it are: ' + $_crnojnydjdud7ewk.stringify($_1g2cevwsjdud7ejp.map(tuples, function (c) {
return c.name();
}), null, 2)]);
};
var fuse$1 = function (tuples, eventOrder, eventName) {
var order = eventOrder[eventName];
if (!order)
return missingOrderError(eventName, tuples);
else
return $_1ppdst133jdud7flt.sortKeys('Event: ' + eventName, 'name', tuples, order).map(function (sortedTuples) {
var handlers = $_1g2cevwsjdud7ejp.map(sortedTuples, function (tuple) {
return tuple.handler();
});
return $_6jq2azy6jdud7eux.fuse(handlers);
});
};
var combineGroups = function (byEventName, eventOrder) {
var r = $_2dykn0x0jdud7ekc.mapToArray(byEventName, function (tuples, eventName) {
var combined = tuples.length === 1 ? Result.value(tuples[0].handler()) : fuse$1(tuples, eventOrder, eventName);
return combined.map(function (handler) {
var assembled = assemble(handler);
var purpose = tuples.length > 1 ? $_1g2cevwsjdud7ejp.filter(eventOrder, function (o) {
return $_1g2cevwsjdud7ejp.contains(tuples, function (t) {
return t.name() === o;
});
}).join(' > ') : tuples[0].name();
return $_ettibkxsjdud7emz.wrap(eventName, $_6lldf5134jdud7flx.nu(assembled, purpose));
});
});
return $_ettibkxsjdud7emz.consolidate(r, {});
};
var $_e28r99132jdud7flj = { combine: combine$2 };
var toInfo = function (spec) {
return $_13hkebyejdud7ewm.asStruct('custom.definition', $_13hkebyejdud7ewm.objOfOnly([
$_euqmtby7jdud7ev7.field('dom', 'dom', $_6rbn18y8jdud7evc.strict(), $_13hkebyejdud7ewm.objOfOnly([
$_euqmtby7jdud7ev7.strict('tag'),
$_euqmtby7jdud7ev7.defaulted('styles', {}),
$_euqmtby7jdud7ev7.defaulted('classes', []),
$_euqmtby7jdud7ev7.defaulted('attributes', {}),
$_euqmtby7jdud7ev7.option('value'),
$_euqmtby7jdud7ev7.option('innerHtml')
])),
$_euqmtby7jdud7ev7.strict('components'),
$_euqmtby7jdud7ev7.strict('uid'),
$_euqmtby7jdud7ev7.defaulted('events', {}),
$_euqmtby7jdud7ev7.defaulted('apis', $_9njj9iwjjdud7eix.constant({})),
$_euqmtby7jdud7ev7.field('eventOrder', 'eventOrder', $_6rbn18y8jdud7evc.mergeWith({
'alloy.execute': [
'disabling',
'alloy.base.behaviour',
'toggling'
],
'alloy.focus': [
'alloy.base.behaviour',
'focusing',
'keying'
],
'alloy.system.init': [
'alloy.base.behaviour',
'disabling',
'toggling',
'representing'
],
'input': [
'alloy.base.behaviour',
'representing',
'streaming',
'invalidating'
],
'alloy.system.detached': [
'alloy.base.behaviour',
'representing'
]
}), $_13hkebyejdud7ewm.anyValue()),
$_euqmtby7jdud7ev7.option('domModification'),
$_etkinez6jdud7ezi.snapshot('originalSpec'),
$_euqmtby7jdud7ev7.defaulted('debug.sketcher', 'unknown')
]), spec);
};
var getUid = function (info) {
return $_ettibkxsjdud7emz.wrap($_d587rf10yjdud7f9j.idAttr(), info.uid());
};
var toDefinition = function (info) {
var base = {
tag: info.dom().tag(),
classes: info.dom().classes(),
attributes: $_73qnwowyjdud7ek9.deepMerge(getUid(info), info.dom().attributes()),
styles: info.dom().styles(),
domChildren: $_1g2cevwsjdud7ejp.map(info.components(), function (comp) {
return comp.element();
})
};
return $_cfxlyyyijdud7ex9.nu($_73qnwowyjdud7ek9.deepMerge(base, info.dom().innerHtml().map(function (h) {
return $_ettibkxsjdud7emz.wrap('innerHtml', h);
}).getOr({}), info.dom().value().map(function (h) {
return $_ettibkxsjdud7emz.wrap('value', h);
}).getOr({})));
};
var toModification = function (info) {
return info.domModification().fold(function () {
return $_biiw3tyhjdud7ewz.nu({});
}, $_biiw3tyhjdud7ewz.nu);
};
var toApis = function (info) {
return info.apis();
};
var toEvents = function (info) {
return info.events();
};
var $_derq1l135jdud7fm6 = {
toInfo: toInfo,
toDefinition: toDefinition,
toModification: toModification,
toApis: toApis,
toEvents: toEvents
};
var add$3 = function (element, classes) {
$_1g2cevwsjdud7ejp.each(classes, function (x) {
$_1x3ogvynjdud7exn.add(element, x);
});
};
var remove$6 = function (element, classes) {
$_1g2cevwsjdud7ejp.each(classes, function (x) {
$_1x3ogvynjdud7exn.remove(element, x);
});
};
var toggle$3 = function (element, classes) {
$_1g2cevwsjdud7ejp.each(classes, function (x) {
$_1x3ogvynjdud7exn.toggle(element, x);
});
};
var hasAll = function (element, classes) {
return $_1g2cevwsjdud7ejp.forall(classes, function (clazz) {
return $_1x3ogvynjdud7exn.has(element, clazz);
});
};
var hasAny = function (element, classes) {
return $_1g2cevwsjdud7ejp.exists(classes, function (clazz) {
return $_1x3ogvynjdud7exn.has(element, clazz);
});
};
var getNative = function (element) {
var classList = element.dom().classList;
var r = new Array(classList.length);
for (var i = 0; i < classList.length; i++) {
r[i] = classList.item(i);
}
return r;
};
var get$10 = function (element) {
return $_fxl75vypjdud7exy.supports(element) ? getNative(element) : $_fxl75vypjdud7exy.get(element);
};
var $_af5dkc137jdud7fms = {
add: add$3,
remove: remove$6,
toggle: toggle$3,
hasAll: hasAll,
hasAny: hasAny,
get: get$10
};
var getChildren = function (definition) {
if (definition.domChildren().isSome() && definition.defChildren().isSome()) {
throw new Error('Cannot specify children and child specs! Must be one or the other.\nDef: ' + $_cfxlyyyijdud7ex9.defToStr(definition));
} else {
return definition.domChildren().fold(function () {
var defChildren = definition.defChildren().getOr([]);
return $_1g2cevwsjdud7ejp.map(defChildren, renderDef);
}, function (domChildren) {
return domChildren;
});
}
};
var renderToDom = function (definition) {
var subject = $_eobgtqxfjdud7elu.fromTag(definition.tag());
$_2vghk1xrjdud7ems.setAll(subject, definition.attributes().getOr({}));
$_af5dkc137jdud7fms.add(subject, definition.classes().getOr([]));
$_btgbcy103jdud7f3t.setAll(subject, definition.styles().getOr({}));
$_1kv7pfxojdud7emm.set(subject, definition.innerHtml().getOr(''));
var children = getChildren(definition);
$_alr2vxxijdud7em1.append(subject, children);
definition.value().each(function (value) {
$_2itxad12ejdud7fgx.set(subject, value);
});
return subject;
};
var renderDef = function (spec) {
var definition = $_cfxlyyyijdud7ex9.nu(spec);
return renderToDom(definition);
};
var $_46rnsn136jdud7fmh = { renderToDom: renderToDom };
var build = function (spec) {
var getMe = function () {
return me;
};
var systemApi = Cell(NoContextApi(getMe));
var info = $_13hkebyejdud7ewm.getOrDie($_derq1l135jdud7fm6.toInfo($_73qnwowyjdud7ek9.deepMerge(spec, { behaviours: undefined })));
var bBlob = $_9vg7um12vjdud7fkh.generate(spec);
var bList = $_9q6ztw12wjdud7fkm.getBehaviours(bBlob);
var bData = $_9q6ztw12wjdud7fkm.getData(bBlob);
var definition = $_derq1l135jdud7fm6.toDefinition(info);
var baseModification = { 'alloy.base.modification': $_derq1l135jdud7fm6.toModification(info) };
var modification = $_57i0zb130jdud7fl4.combine(bData, baseModification, bList, definition).getOrDie();
var modDefinition = $_biiw3tyhjdud7ewz.merge(definition, modification);
var item = $_46rnsn136jdud7fmh.renderToDom(modDefinition);
var baseEvents = { 'alloy.base.behaviour': $_derq1l135jdud7fm6.toEvents(info) };
var events = $_e28r99132jdud7flj.combine(bData, info.eventOrder(), bList, baseEvents).getOrDie();
var subcomponents = Cell(info.components());
var connect = function (newApi) {
systemApi.set(newApi);
};
var disconnect = function () {
systemApi.set(NoContextApi(getMe));
};
var syncComponents = function () {
var children = $_dekwe2x3jdud7ekr.children(item);
var subs = $_1g2cevwsjdud7ejp.bind(children, function (child) {
return systemApi.get().getByDom(child).fold(function () {
return [];
}, function (c) {
return [c];
});
});
subcomponents.set(subs);
};
var config = function (behaviour) {
if (behaviour === $_37ypl510qjdud7f7n.apiConfig())
return info.apis();
var b = bData;
var f = $_9rljuwzjdud7ekb.isFunction(b[behaviour.name()]) ? b[behaviour.name()] : function () {
throw new Error('Could not find ' + behaviour.name() + ' in ' + $_crnojnydjdud7ewk.stringify(spec, null, 2));
};
return f();
};
var hasConfigured = function (behaviour) {
return $_9rljuwzjdud7ekb.isFunction(bData[behaviour.name()]);
};
var readState = function (behaviourName) {
return bData[behaviourName]().map(function (b) {
return b.state.readState();
}).getOr('not enabled');
};
var me = ComponentApi({
getSystem: systemApi.get,
config: config,
hasConfigured: hasConfigured,
spec: $_9njj9iwjjdud7eix.constant(spec),
readState: readState,
connect: connect,
disconnect: disconnect,
element: $_9njj9iwjjdud7eix.constant(item),
syncComponents: syncComponents,
components: subcomponents.get,
events: $_9njj9iwjjdud7eix.constant(events)
});
return me;
};
var $_4n786712ujdud7fjz = { build: build };
var isRecursive = function (component, originator, target) {
return $_f1y1rtx9jdud7el7.eq(originator, component.element()) && !$_f1y1rtx9jdud7el7.eq(originator, target);
};
var $_5qg91m138jdud7fmw = {
events: $_5xcuyiy4jdud7eur.derive([$_5xcuyiy4jdud7eur.can($_801kkqwhjdud7eiq.focus(), function (component, simulatedEvent) {
var originator = simulatedEvent.event().originator();
var target = simulatedEvent.event().target();
if (isRecursive(component, originator, target)) {
console.warn($_801kkqwhjdud7eiq.focus() + ' did not get interpreted by the desired target. ' + '\nOriginator: ' + $_d3f8kuxmjdud7emi.element(originator) + '\nTarget: ' + $_d3f8kuxmjdud7emi.element(target) + '\nCheck the ' + $_801kkqwhjdud7eiq.focus() + ' event handlers');
return false;
} else {
return true;
}
})])
};
var make$1 = function (spec) {
return spec;
};
var $_5ltf8m139jdud7fmz = { make: make$1 };
var buildSubcomponents = function (spec) {
var components = $_ettibkxsjdud7emz.readOr('components', [])(spec);
return $_1g2cevwsjdud7ejp.map(components, build$1);
};
var buildFromSpec = function (userSpec) {
var spec = $_5ltf8m139jdud7fmz.make(userSpec);
var components = buildSubcomponents(spec);
var completeSpec = $_73qnwowyjdud7ek9.deepMerge($_5qg91m138jdud7fmw, spec, $_ettibkxsjdud7emz.wrap('components', components));
return Result.value($_4n786712ujdud7fjz.build(completeSpec));
};
var text = function (textContent) {
var element = $_eobgtqxfjdud7elu.fromText(textContent);
return external({ element: element });
};
var external = function (spec) {
var extSpec = $_13hkebyejdud7ewm.asStructOrDie('external.component', $_13hkebyejdud7ewm.objOfOnly([
$_euqmtby7jdud7ev7.strict('element'),
$_euqmtby7jdud7ev7.option('uid')
]), spec);
var systemApi = Cell(NoContextApi());
var connect = function (newApi) {
systemApi.set(newApi);
};
var disconnect = function () {
systemApi.set(NoContextApi(function () {
return me;
}));
};
extSpec.uid().each(function (uid) {
$_4mrseh10xjdud7f9b.writeOnly(extSpec.element(), uid);
});
var me = ComponentApi({
getSystem: systemApi.get,
config: Option.none,
hasConfigured: $_9njj9iwjjdud7eix.constant(false),
connect: connect,
disconnect: disconnect,
element: $_9njj9iwjjdud7eix.constant(extSpec.element()),
spec: $_9njj9iwjjdud7eix.constant(spec),
readState: $_9njj9iwjjdud7eix.constant('No state'),
syncComponents: $_9njj9iwjjdud7eix.noop,
components: $_9njj9iwjjdud7eix.constant([]),
events: $_9njj9iwjjdud7eix.constant({})
});
return $_37ypl510qjdud7f7n.premade(me);
};
var build$1 = function (rawUserSpec) {
return $_37ypl510qjdud7f7n.getPremade(rawUserSpec).fold(function () {
var userSpecWithUid = $_73qnwowyjdud7ek9.deepMerge({ uid: $_4mrseh10xjdud7f9b.generate('') }, rawUserSpec);
return buildFromSpec(userSpecWithUid).getOrDie();
}, function (prebuilt) {
return prebuilt;
});
};
var $_ap2ej712tjdud7fjl = {
build: build$1,
premade: $_37ypl510qjdud7f7n.premade,
external: external,
text: text
};
var hoverEvent = 'alloy.item-hover';
var focusEvent = 'alloy.item-focus';
var onHover = function (item) {
if ($_25580rytjdud7ey7.search(item.element()).isNone() || Focusing.isFocused(item)) {
if (!Focusing.isFocused(item))
Focusing.focus(item);
$_98da6jwgjdud7eil.emitWith(item, hoverEvent, { item: item });
}
};
var onFocus = function (item) {
$_98da6jwgjdud7eil.emitWith(item, focusEvent, { item: item });
};
var $_8ru1bo13djdud7fnf = {
hover: $_9njj9iwjjdud7eix.constant(hoverEvent),
focus: $_9njj9iwjjdud7eix.constant(focusEvent),
onHover: onHover,
onFocus: onFocus
};
var builder = function (info) {
return {
dom: $_73qnwowyjdud7ek9.deepMerge(info.dom(), { attributes: { role: info.toggling().isSome() ? 'menuitemcheckbox' : 'menuitem' } }),
behaviours: $_73qnwowyjdud7ek9.deepMerge($_ax1gfoy2jdud7eu7.derive([
info.toggling().fold(Toggling.revoke, function (tConfig) {
return Toggling.config($_73qnwowyjdud7ek9.deepMerge({ aria: { mode: 'checked' } }, tConfig));
}),
Focusing.config({
ignore: info.ignoreFocus(),
onFocus: function (component) {
$_8ru1bo13djdud7fnf.onFocus(component);
}
}),
Keying.config({ mode: 'execution' }),
me.config({
store: {
mode: 'memory',
initialValue: info.data()
}
})
]), info.itemBehaviours()),
events: $_5xcuyiy4jdud7eur.derive([
$_5xcuyiy4jdud7eur.runWithTarget($_801kkqwhjdud7eiq.tapOrClick(), $_98da6jwgjdud7eil.emitExecute),
$_5xcuyiy4jdud7eur.cutter($_brmbwvwijdud7eiu.mousedown()),
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.mouseover(), $_8ru1bo13djdud7fnf.onHover),
$_5xcuyiy4jdud7eur.run($_801kkqwhjdud7eiq.focusItem(), Focusing.focus)
]),
components: info.components(),
domModification: info.domModification()
};
};
var schema$10 = [
$_euqmtby7jdud7ev7.strict('data'),
$_euqmtby7jdud7ev7.strict('components'),
$_euqmtby7jdud7ev7.strict('dom'),
$_euqmtby7jdud7ev7.option('toggling'),
$_euqmtby7jdud7ev7.defaulted('itemBehaviours', {}),
$_euqmtby7jdud7ev7.defaulted('ignoreFocus', false),
$_euqmtby7jdud7ev7.defaulted('domModification', {}),
$_etkinez6jdud7ezi.output('builder', builder)
];
var builder$1 = function (detail) {
return {
dom: detail.dom(),
components: detail.components(),
events: $_5xcuyiy4jdud7eur.derive([$_5xcuyiy4jdud7eur.stopper($_801kkqwhjdud7eiq.focusItem())])
};
};
var schema$11 = [
$_euqmtby7jdud7ev7.strict('dom'),
$_euqmtby7jdud7ev7.strict('components'),
$_etkinez6jdud7ezi.output('builder', builder$1)
];
var owner$2 = 'item-widget';
var partTypes = [$_7938qf10vjdud7f8n.required({
name: 'widget',
overrides: function (detail) {
return {
behaviours: $_ax1gfoy2jdud7eu7.derive([me.config({
store: {
mode: 'manual',
getValue: function (component) {
return detail.data();
},
setValue: function () {
}
}
})])
};
}
})];
var $_bqteuv13gjdud7fny = {
owner: $_9njj9iwjjdud7eix.constant(owner$2),
parts: $_9njj9iwjjdud7eix.constant(partTypes)
};
var builder$2 = function (info) {
var subs = $_436kgb10tjdud7f7y.substitutes($_bqteuv13gjdud7fny.owner(), info, $_bqteuv13gjdud7fny.parts());
var components = $_436kgb10tjdud7f7y.components($_bqteuv13gjdud7fny.owner(), info, subs.internals());
var focusWidget = function (component) {
return $_436kgb10tjdud7f7y.getPart(component, info, 'widget').map(function (widget) {
Keying.focusIn(widget);
return widget;
});
};
var onHorizontalArrow = function (component, simulatedEvent) {
return $_ddk3fu108jdud7f4o.inside(simulatedEvent.event().target()) ? Option.none() : function () {
if (info.autofocus()) {
simulatedEvent.setSource(component.element());
return Option.none();
} else {
return Option.none();
}
}();
};
return $_73qnwowyjdud7ek9.deepMerge({
dom: info.dom(),
components: components,
domModification: info.domModification(),
events: $_5xcuyiy4jdud7eur.derive([
$_5xcuyiy4jdud7eur.runOnExecute(function (component, simulatedEvent) {
focusWidget(component).each(function (widget) {
simulatedEvent.stop();
});
}),
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.mouseover(), $_8ru1bo13djdud7fnf.onHover),
$_5xcuyiy4jdud7eur.run($_801kkqwhjdud7eiq.focusItem(), function (component, simulatedEvent) {
if (info.autofocus())
focusWidget(component);
else
Focusing.focus(component);
})
]),
behaviours: $_ax1gfoy2jdud7eu7.derive([
me.config({
store: {
mode: 'memory',
initialValue: info.data()
}
}),
Focusing.config({
onFocus: function (component) {
$_8ru1bo13djdud7fnf.onFocus(component);
}
}),
Keying.config({
mode: 'special',
onLeft: onHorizontalArrow,
onRight: onHorizontalArrow,
onEscape: function (component, simulatedEvent) {
if (!Focusing.isFocused(component) && !info.autofocus()) {
Focusing.focus(component);
return Option.some(true);
} else if (info.autofocus()) {
simulatedEvent.setSource(component.element());
return Option.none();
} else {
return Option.none();
}
}
})
])
});
};
var schema$12 = [
$_euqmtby7jdud7ev7.strict('uid'),
$_euqmtby7jdud7ev7.strict('data'),
$_euqmtby7jdud7ev7.strict('components'),
$_euqmtby7jdud7ev7.strict('dom'),
$_euqmtby7jdud7ev7.defaulted('autofocus', false),
$_euqmtby7jdud7ev7.defaulted('domModification', {}),
$_436kgb10tjdud7f7y.defaultUidsSchema($_bqteuv13gjdud7fny.parts()),
$_etkinez6jdud7ezi.output('builder', builder$2)
];
var itemSchema$1 = $_13hkebyejdud7ewm.choose('type', {
widget: schema$12,
item: schema$10,
separator: schema$11
});
var configureGrid = function (detail, movementInfo) {
return {
mode: 'flatgrid',
selector: '.' + detail.markers().item(),
initSize: {
numColumns: movementInfo.initSize().numColumns(),
numRows: movementInfo.initSize().numRows()
},
focusManager: detail.focusManager()
};
};
var configureMenu = function (detail, movementInfo) {
return {
mode: 'menu',
selector: '.' + detail.markers().item(),
moveOnTab: movementInfo.moveOnTab(),
focusManager: detail.focusManager()
};
};
var parts = [$_7938qf10vjdud7f8n.group({
factory: {
sketch: function (spec) {
var itemInfo = $_13hkebyejdud7ewm.asStructOrDie('menu.spec item', itemSchema$1, spec);
return itemInfo.builder()(itemInfo);
}
},
name: 'items',
unit: 'item',
defaults: function (detail, u) {
var fallbackUid = $_4mrseh10xjdud7f9b.generate('');
return $_73qnwowyjdud7ek9.deepMerge({ uid: fallbackUid }, u);
},
overrides: function (detail, u) {
return {
type: u.type,
ignoreFocus: detail.fakeFocus(),
domModification: { classes: [detail.markers().item()] }
};
}
})];
var schema$13 = [
$_euqmtby7jdud7ev7.strict('value'),
$_euqmtby7jdud7ev7.strict('items'),
$_euqmtby7jdud7ev7.strict('dom'),
$_euqmtby7jdud7ev7.strict('components'),
$_euqmtby7jdud7ev7.defaulted('eventOrder', {}),
$_c7jpu210ojdud7f7a.field('menuBehaviours', [
Highlighting,
me,
Composing,
Keying
]),
$_euqmtby7jdud7ev7.defaultedOf('movement', {
mode: 'menu',
moveOnTab: true
}, $_13hkebyejdud7ewm.choose('mode', {
grid: [
$_etkinez6jdud7ezi.initSize(),
$_etkinez6jdud7ezi.output('config', configureGrid)
],
menu: [
$_euqmtby7jdud7ev7.defaulted('moveOnTab', true),
$_etkinez6jdud7ezi.output('config', configureMenu)
]
})),
$_etkinez6jdud7ezi.itemMarkers(),
$_euqmtby7jdud7ev7.defaulted('fakeFocus', false),
$_euqmtby7jdud7ev7.defaulted('focusManager', $_cic9p1zrjdud7f2l.dom()),
$_etkinez6jdud7ezi.onHandler('onHighlight')
];
var $_8okyr013bjdud7fn2 = {
name: $_9njj9iwjjdud7eix.constant('Menu'),
schema: $_9njj9iwjjdud7eix.constant(schema$13),
parts: $_9njj9iwjjdud7eix.constant(parts)
};
var focusEvent$1 = 'alloy.menu-focus';
var $_4itv8s13ijdud7fo7 = { focus: $_9njj9iwjjdud7eix.constant(focusEvent$1) };
var make$2 = function (detail, components, spec, externals) {
return $_73qnwowyjdud7ek9.deepMerge({
dom: $_73qnwowyjdud7ek9.deepMerge(detail.dom(), { attributes: { role: 'menu' } }),
uid: detail.uid(),
behaviours: $_73qnwowyjdud7ek9.deepMerge($_ax1gfoy2jdud7eu7.derive([
Highlighting.config({
highlightClass: detail.markers().selectedItem(),
itemClass: detail.markers().item(),
onHighlight: detail.onHighlight()
}),
me.config({
store: {
mode: 'memory',
initialValue: detail.value()
}
}),
Composing.config({ find: $_9njj9iwjjdud7eix.identity }),
Keying.config(detail.movement().config()(detail, detail.movement()))
]), $_c7jpu210ojdud7f7a.get(detail.menuBehaviours())),
events: $_5xcuyiy4jdud7eur.derive([
$_5xcuyiy4jdud7eur.run($_8ru1bo13djdud7fnf.focus(), function (menu, simulatedEvent) {
var event = simulatedEvent.event();
menu.getSystem().getByDom(event.target()).each(function (item) {
Highlighting.highlight(menu, item);
simulatedEvent.stop();
$_98da6jwgjdud7eil.emitWith(menu, $_4itv8s13ijdud7fo7.focus(), {
menu: menu,
item: item
});
});
}),
$_5xcuyiy4jdud7eur.run($_8ru1bo13djdud7fnf.hover(), function (menu, simulatedEvent) {
var item = simulatedEvent.event().item();
Highlighting.highlight(menu, item);
})
]),
components: components,
eventOrder: detail.eventOrder()
});
};
var $_99di413hjdud7fo2 = { make: make$2 };
var Menu = $_3inyq310pjdud7f7f.composite({
name: 'Menu',
configFields: $_8okyr013bjdud7fn2.schema(),
partFields: $_8okyr013bjdud7fn2.parts(),
factory: $_99di413hjdud7fo2.make
});
var preserve$2 = function (f, container) {
var ownerDoc = $_dekwe2x3jdud7ekr.owner(container);
var refocus = $_25580rytjdud7ey7.active(ownerDoc).bind(function (focused) {
var hasFocus = function (elem) {
return $_f1y1rtx9jdud7el7.eq(focused, elem);
};
return hasFocus(container) ? Option.some(container) : $_4j5kdsyvjdud7eyd.descendant(container, hasFocus);
});
var result = f(container);
refocus.each(function (oldFocus) {
$_25580rytjdud7ey7.active(ownerDoc).filter(function (newFocus) {
return $_f1y1rtx9jdud7el7.eq(newFocus, oldFocus);
}).orThunk(function () {
$_25580rytjdud7ey7.focus(oldFocus);
});
});
return result;
};
var $_7yrff213mjdud7fol = { preserve: preserve$2 };
var set$7 = function (component, replaceConfig, replaceState, data) {
$_fesilqx1jdud7ekf.detachChildren(component);
$_7yrff213mjdud7fol.preserve(function () {
var children = $_1g2cevwsjdud7ejp.map(data, component.getSystem().build);
$_1g2cevwsjdud7ejp.each(children, function (l) {
$_fesilqx1jdud7ekf.attach(component, l);
});
}, component.element());
};
var insert = function (component, replaceConfig, insertion, childSpec) {
var child = component.getSystem().build(childSpec);
$_fesilqx1jdud7ekf.attachWith(component, child, insertion);
};
var append$2 = function (component, replaceConfig, replaceState, appendee) {
insert(component, replaceConfig, $_ftkbb5x2jdud7ekp.append, appendee);
};
var prepend$2 = function (component, replaceConfig, replaceState, prependee) {
insert(component, replaceConfig, $_ftkbb5x2jdud7ekp.prepend, prependee);
};
var remove$7 = function (component, replaceConfig, replaceState, removee) {
var children = contents(component, replaceConfig);
var foundChild = $_1g2cevwsjdud7ejp.find(children, function (child) {
return $_f1y1rtx9jdud7el7.eq(removee.element(), child.element());
});
foundChild.each($_fesilqx1jdud7ekf.detach);
};
var contents = function (component, replaceConfig) {
return component.components();
};
var $_1r1wx913ljdud7fog = {
append: append$2,
prepend: prepend$2,
remove: remove$7,
set: set$7,
contents: contents
};
var Replacing = $_ax1gfoy2jdud7eu7.create({
fields: [],
name: 'replacing',
apis: $_1r1wx913ljdud7fog
});
var transpose = function (obj) {
return $_2dykn0x0jdud7ekc.tupleMap(obj, function (v, k) {
return {
k: v,
v: k
};
});
};
var trace = function (items, byItem, byMenu, finish) {
return $_ettibkxsjdud7emz.readOptFrom(byMenu, finish).bind(function (triggerItem) {
return $_ettibkxsjdud7emz.readOptFrom(items, triggerItem).bind(function (triggerMenu) {
var rest = trace(items, byItem, byMenu, triggerMenu);
return Option.some([triggerMenu].concat(rest));
});
}).getOr([]);
};
var generate$5 = function (menus, expansions) {
var items = {};
$_2dykn0x0jdud7ekc.each(menus, function (menuItems, menu) {
$_1g2cevwsjdud7ejp.each(menuItems, function (item) {
items[item] = menu;
});
});
var byItem = expansions;
var byMenu = transpose(expansions);
var menuPaths = $_2dykn0x0jdud7ekc.map(byMenu, function (triggerItem, submenu) {
return [submenu].concat(trace(items, byItem, byMenu, submenu));
});
return $_2dykn0x0jdud7ekc.map(items, function (path) {
return $_ettibkxsjdud7emz.readOptFrom(menuPaths, path).getOr([path]);
});
};
var $_41e4h513pjdud7fpr = { generate: generate$5 };
function LayeredState () {
var expansions = Cell({});
var menus = Cell({});
var paths = Cell({});
var primary = Cell(Option.none());
var toItemValues = Cell($_9njj9iwjjdud7eix.constant([]));
var clear = function () {
expansions.set({});
menus.set({});
paths.set({});
primary.set(Option.none());
};
var isClear = function () {
return primary.get().isNone();
};
var setContents = function (sPrimary, sMenus, sExpansions, sToItemValues) {
primary.set(Option.some(sPrimary));
expansions.set(sExpansions);
menus.set(sMenus);
toItemValues.set(sToItemValues);
var menuValues = sToItemValues(sMenus);
var sPaths = $_41e4h513pjdud7fpr.generate(menuValues, sExpansions);
paths.set(sPaths);
};
var expand = function (itemValue) {
return $_ettibkxsjdud7emz.readOptFrom(expansions.get(), itemValue).map(function (menu) {
var current = $_ettibkxsjdud7emz.readOptFrom(paths.get(), itemValue).getOr([]);
return [menu].concat(current);
});
};
var collapse = function (itemValue) {
return $_ettibkxsjdud7emz.readOptFrom(paths.get(), itemValue).bind(function (path) {
return path.length > 1 ? Option.some(path.slice(1)) : Option.none();
});
};
var refresh = function (itemValue) {
return $_ettibkxsjdud7emz.readOptFrom(paths.get(), itemValue);
};
var lookupMenu = function (menuValue) {
return $_ettibkxsjdud7emz.readOptFrom(menus.get(), menuValue);
};
var otherMenus = function (path) {
var menuValues = toItemValues.get()(menus.get());
return $_1g2cevwsjdud7ejp.difference($_2dykn0x0jdud7ekc.keys(menuValues), path);
};
var getPrimary = function () {
return primary.get().bind(lookupMenu);
};
var getMenus = function () {
return menus.get();
};
return {
setContents: setContents,
expand: expand,
refresh: refresh,
collapse: collapse,
lookupMenu: lookupMenu,
otherMenus: otherMenus,
getPrimary: getPrimary,
getMenus: getMenus,
clear: clear,
isClear: isClear
};
}
var make$3 = function (detail, rawUiSpec) {
var buildMenus = function (container, menus) {
return $_2dykn0x0jdud7ekc.map(menus, function (spec, name) {
var data = Menu.sketch($_73qnwowyjdud7ek9.deepMerge(spec, {
value: name,
items: spec.items,
markers: $_ettibkxsjdud7emz.narrow(rawUiSpec.markers, [
'item',
'selectedItem'
]),
fakeFocus: detail.fakeFocus(),
onHighlight: detail.onHighlight(),
focusManager: detail.fakeFocus() ? $_cic9p1zrjdud7f2l.highlights() : $_cic9p1zrjdud7f2l.dom()
}));
return container.getSystem().build(data);
});
};
var state = LayeredState();
var setup = function (container) {
var componentMap = buildMenus(container, detail.data().menus());
state.setContents(detail.data().primary(), componentMap, detail.data().expansions(), function (sMenus) {
return toMenuValues(container, sMenus);
});
return state.getPrimary();
};
var getItemValue = function (item) {
return me.getValue(item).value;
};
var toMenuValues = function (container, sMenus) {
return $_2dykn0x0jdud7ekc.map(detail.data().menus(), function (data, menuName) {
return $_1g2cevwsjdud7ejp.bind(data.items, function (item) {
return item.type === 'separator' ? [] : [item.data.value];
});
});
};
var setActiveMenu = function (container, menu) {
Highlighting.highlight(container, menu);
Highlighting.getHighlighted(menu).orThunk(function () {
return Highlighting.getFirst(menu);
}).each(function (item) {
$_98da6jwgjdud7eil.dispatch(container, item.element(), $_801kkqwhjdud7eiq.focusItem());
});
};
var getMenus = function (state, menuValues) {
return $_ak7xq9y0jdud7eu4.cat($_1g2cevwsjdud7ejp.map(menuValues, state.lookupMenu));
};
var updateMenuPath = function (container, state, path) {
return Option.from(path[0]).bind(state.lookupMenu).map(function (activeMenu) {
var rest = getMenus(state, path.slice(1));
$_1g2cevwsjdud7ejp.each(rest, function (r) {
$_1x3ogvynjdud7exn.add(r.element(), detail.markers().backgroundMenu());
});
if (!$_1tyeizxjjdud7em4.inBody(activeMenu.element())) {
Replacing.append(container, $_ap2ej712tjdud7fjl.premade(activeMenu));
}
$_af5dkc137jdud7fms.remove(activeMenu.element(), [detail.markers().backgroundMenu()]);
setActiveMenu(container, activeMenu);
var others = getMenus(state, state.otherMenus(path));
$_1g2cevwsjdud7ejp.each(others, function (o) {
$_af5dkc137jdud7fms.remove(o.element(), [detail.markers().backgroundMenu()]);
if (!detail.stayInDom())
Replacing.remove(container, o);
});
return activeMenu;
});
};
var expandRight = function (container, item) {
var value = getItemValue(item);
return state.expand(value).bind(function (path) {
Option.from(path[0]).bind(state.lookupMenu).each(function (activeMenu) {
if (!$_1tyeizxjjdud7em4.inBody(activeMenu.element())) {
Replacing.append(container, $_ap2ej712tjdud7fjl.premade(activeMenu));
}
detail.onOpenSubmenu()(container, item, activeMenu);
Highlighting.highlightFirst(activeMenu);
});
return updateMenuPath(container, state, path);
});
};
var collapseLeft = function (container, item) {
var value = getItemValue(item);
return state.collapse(value).bind(function (path) {
return updateMenuPath(container, state, path).map(function (activeMenu) {
detail.onCollapseMenu()(container, item, activeMenu);
return activeMenu;
});
});
};
var updateView = function (container, item) {
var value = getItemValue(item);
return state.refresh(value).bind(function (path) {
return updateMenuPath(container, state, path);
});
};
var onRight = function (container, item) {
return $_ddk3fu108jdud7f4o.inside(item.element()) ? Option.none() : expandRight(container, item);
};
var onLeft = function (container, item) {
return $_ddk3fu108jdud7f4o.inside(item.element()) ? Option.none() : collapseLeft(container, item);
};
var onEscape = function (container, item) {
return collapseLeft(container, item).orThunk(function () {
return detail.onEscape()(container, item);
});
};
var keyOnItem = function (f) {
return function (container, simulatedEvent) {
return $_a3quyizxjdud7f3e.closest(simulatedEvent.getSource(), '.' + detail.markers().item()).bind(function (target) {
return container.getSystem().getByDom(target).bind(function (item) {
return f(container, item);
});
});
};
};
var events = $_5xcuyiy4jdud7eur.derive([
$_5xcuyiy4jdud7eur.run($_4itv8s13ijdud7fo7.focus(), function (sandbox, simulatedEvent) {
var menu = simulatedEvent.event().menu();
Highlighting.highlight(sandbox, menu);
}),
$_5xcuyiy4jdud7eur.runOnExecute(function (sandbox, simulatedEvent) {
var target = simulatedEvent.event().target();
return sandbox.getSystem().getByDom(target).bind(function (item) {
var itemValue = getItemValue(item);
if (itemValue.indexOf('collapse-item') === 0) {
return collapseLeft(sandbox, item);
}
return expandRight(sandbox, item).orThunk(function () {
return detail.onExecute()(sandbox, item);
});
});
}),
$_5xcuyiy4jdud7eur.runOnAttached(function (container, simulatedEvent) {
setup(container).each(function (primary) {
Replacing.append(container, $_ap2ej712tjdud7fjl.premade(primary));
if (detail.openImmediately()) {
setActiveMenu(container, primary);
detail.onOpenMenu()(container, primary);
}
});
})
].concat(detail.navigateOnHover() ? [$_5xcuyiy4jdud7eur.run($_8ru1bo13djdud7fnf.hover(), function (sandbox, simulatedEvent) {
var item = simulatedEvent.event().item();
updateView(sandbox, item);
expandRight(sandbox, item);
detail.onHover()(sandbox, item);
})] : []));
var collapseMenuApi = function (container) {
Highlighting.getHighlighted(container).each(function (currentMenu) {
Highlighting.getHighlighted(currentMenu).each(function (currentItem) {
collapseLeft(container, currentItem);
});
});
};
return {
uid: detail.uid(),
dom: detail.dom(),
behaviours: $_73qnwowyjdud7ek9.deepMerge($_ax1gfoy2jdud7eu7.derive([
Keying.config({
mode: 'special',
onRight: keyOnItem(onRight),
onLeft: keyOnItem(onLeft),
onEscape: keyOnItem(onEscape),
focusIn: function (container, keyInfo) {
state.getPrimary().each(function (primary) {
$_98da6jwgjdud7eil.dispatch(container, primary.element(), $_801kkqwhjdud7eiq.focusItem());
});
}
}),
Highlighting.config({
highlightClass: detail.markers().selectedMenu(),
itemClass: detail.markers().menu()
}),
Composing.config({
find: function (container) {
return Highlighting.getHighlighted(container);
}
}),
Replacing.config({})
]), $_c7jpu210ojdud7f7a.get(detail.tmenuBehaviours())),
eventOrder: detail.eventOrder(),
apis: { collapseMenu: collapseMenuApi },
events: events
};
};
var $_5tcqz613njdud7fou = {
make: make$3,
collapseItem: $_9njj9iwjjdud7eix.constant('collapse-item')
};
var tieredData = function (primary, menus, expansions) {
return {
primary: primary,
menus: menus,
expansions: expansions
};
};
var singleData = function (name, menu) {
return {
primary: name,
menus: $_ettibkxsjdud7emz.wrap(name, menu),
expansions: {}
};
};
var collapseItem = function (text) {
return {
value: $_3k9wwu10rjdud7f7t.generate($_5tcqz613njdud7fou.collapseItem()),
text: text
};
};
var TieredMenu = $_3inyq310pjdud7f7f.single({
name: 'TieredMenu',
configFields: [
$_etkinez6jdud7ezi.onStrictKeyboardHandler('onExecute'),
$_etkinez6jdud7ezi.onStrictKeyboardHandler('onEscape'),
$_etkinez6jdud7ezi.onStrictHandler('onOpenMenu'),
$_etkinez6jdud7ezi.onStrictHandler('onOpenSubmenu'),
$_etkinez6jdud7ezi.onHandler('onCollapseMenu'),
$_euqmtby7jdud7ev7.defaulted('openImmediately', true),
$_euqmtby7jdud7ev7.strictObjOf('data', [
$_euqmtby7jdud7ev7.strict('primary'),
$_euqmtby7jdud7ev7.strict('menus'),
$_euqmtby7jdud7ev7.strict('expansions')
]),
$_euqmtby7jdud7ev7.defaulted('fakeFocus', false),
$_etkinez6jdud7ezi.onHandler('onHighlight'),
$_etkinez6jdud7ezi.onHandler('onHover'),
$_etkinez6jdud7ezi.tieredMenuMarkers(),
$_euqmtby7jdud7ev7.strict('dom'),
$_euqmtby7jdud7ev7.defaulted('navigateOnHover', true),
$_euqmtby7jdud7ev7.defaulted('stayInDom', false),
$_c7jpu210ojdud7f7a.field('tmenuBehaviours', [
Keying,
Highlighting,
Composing,
Replacing
]),
$_euqmtby7jdud7ev7.defaulted('eventOrder', {})
],
apis: {
collapseMenu: function (apis, tmenu) {
apis.collapseMenu(tmenu);
}
},
factory: $_5tcqz613njdud7fou.make,
extraApis: {
tieredData: tieredData,
singleData: singleData,
collapseItem: collapseItem
}
});
var findRoute = function (component, transConfig, transState, route) {
return $_ettibkxsjdud7emz.readOptFrom(transConfig.routes(), route.start()).map($_9njj9iwjjdud7eix.apply).bind(function (sConfig) {
return $_ettibkxsjdud7emz.readOptFrom(sConfig, route.destination()).map($_9njj9iwjjdud7eix.apply);
});
};
var getTransition = function (comp, transConfig, transState) {
var route = getCurrentRoute(comp, transConfig, transState);
return route.bind(function (r) {
return getTransitionOf(comp, transConfig, transState, r);
});
};
var getTransitionOf = function (comp, transConfig, transState, route) {
return findRoute(comp, transConfig, transState, route).bind(function (r) {
return r.transition().map(function (t) {
return {
transition: $_9njj9iwjjdud7eix.constant(t),
route: $_9njj9iwjjdud7eix.constant(r)
};
});
});
};
var disableTransition = function (comp, transConfig, transState) {
getTransition(comp, transConfig, transState).each(function (routeTransition) {
var t = routeTransition.transition();
$_1x3ogvynjdud7exn.remove(comp.element(), t.transitionClass());
$_2vghk1xrjdud7ems.remove(comp.element(), transConfig.destinationAttr());
});
};
var getNewRoute = function (comp, transConfig, transState, destination) {
return {
start: $_9njj9iwjjdud7eix.constant($_2vghk1xrjdud7ems.get(comp.element(), transConfig.stateAttr())),
destination: $_9njj9iwjjdud7eix.constant(destination)
};
};
var getCurrentRoute = function (comp, transConfig, transState) {
var el = comp.element();
return $_2vghk1xrjdud7ems.has(el, transConfig.destinationAttr()) ? Option.some({
start: $_9njj9iwjjdud7eix.constant($_2vghk1xrjdud7ems.get(comp.element(), transConfig.stateAttr())),
destination: $_9njj9iwjjdud7eix.constant($_2vghk1xrjdud7ems.get(comp.element(), transConfig.destinationAttr()))
}) : Option.none();
};
var jumpTo = function (comp, transConfig, transState, destination) {
disableTransition(comp, transConfig, transState);
if ($_2vghk1xrjdud7ems.has(comp.element(), transConfig.stateAttr()) && $_2vghk1xrjdud7ems.get(comp.element(), transConfig.stateAttr()) !== destination)
transConfig.onFinish()(comp, destination);
$_2vghk1xrjdud7ems.set(comp.element(), transConfig.stateAttr(), destination);
};
var fasttrack = function (comp, transConfig, transState, destination) {
if ($_2vghk1xrjdud7ems.has(comp.element(), transConfig.destinationAttr())) {
$_2vghk1xrjdud7ems.set(comp.element(), transConfig.stateAttr(), $_2vghk1xrjdud7ems.get(comp.element(), transConfig.destinationAttr()));
$_2vghk1xrjdud7ems.remove(comp.element(), transConfig.destinationAttr());
}
};
var progressTo = function (comp, transConfig, transState, destination) {
fasttrack(comp, transConfig, transState, destination);
var route = getNewRoute(comp, transConfig, transState, destination);
getTransitionOf(comp, transConfig, transState, route).fold(function () {
jumpTo(comp, transConfig, transState, destination);
}, function (routeTransition) {
disableTransition(comp, transConfig, transState);
var t = routeTransition.transition();
$_1x3ogvynjdud7exn.add(comp.element(), t.transitionClass());
$_2vghk1xrjdud7ems.set(comp.element(), transConfig.destinationAttr(), destination);
});
};
var getState = function (comp, transConfig, transState) {
var e = comp.element();
return $_2vghk1xrjdud7ems.has(e, transConfig.stateAttr()) ? Option.some($_2vghk1xrjdud7ems.get(e, transConfig.stateAttr())) : Option.none();
};
var $_7wpzrk13sjdud7fq5 = {
findRoute: findRoute,
disableTransition: disableTransition,
getCurrentRoute: getCurrentRoute,
jumpTo: jumpTo,
progressTo: progressTo,
getState: getState
};
var events$8 = function (transConfig, transState) {
return $_5xcuyiy4jdud7eur.derive([
$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.transitionend(), function (component, simulatedEvent) {
var raw = simulatedEvent.event().raw();
$_7wpzrk13sjdud7fq5.getCurrentRoute(component, transConfig, transState).each(function (route) {
$_7wpzrk13sjdud7fq5.findRoute(component, transConfig, transState, route).each(function (rInfo) {
rInfo.transition().each(function (rTransition) {
if (raw.propertyName === rTransition.property()) {
$_7wpzrk13sjdud7fq5.jumpTo(component, transConfig, transState, route.destination());
transConfig.onTransition()(component, route);
}
});
});
});
}),
$_5xcuyiy4jdud7eur.runOnAttached(function (comp, se) {
$_7wpzrk13sjdud7fq5.jumpTo(comp, transConfig, transState, transConfig.initialState());
})
]);
};
var $_4zcx6q13rjdud7fq3 = { events: events$8 };
var TransitionSchema = [
$_euqmtby7jdud7ev7.defaulted('destinationAttr', 'data-transitioning-destination'),
$_euqmtby7jdud7ev7.defaulted('stateAttr', 'data-transitioning-state'),
$_euqmtby7jdud7ev7.strict('initialState'),
$_etkinez6jdud7ezi.onHandler('onTransition'),
$_etkinez6jdud7ezi.onHandler('onFinish'),
$_euqmtby7jdud7ev7.strictOf('routes', $_13hkebyejdud7ewm.setOf(Result.value, $_13hkebyejdud7ewm.setOf(Result.value, $_13hkebyejdud7ewm.objOfOnly([$_euqmtby7jdud7ev7.optionObjOfOnly('transition', [
$_euqmtby7jdud7ev7.strict('property'),
$_euqmtby7jdud7ev7.strict('transitionClass')
])]))))
];
var createRoutes = function (routes) {
var r = {};
$_2dykn0x0jdud7ekc.each(routes, function (v, k) {
var waypoints = k.split('<->');
r[waypoints[0]] = $_ettibkxsjdud7emz.wrap(waypoints[1], v);
r[waypoints[1]] = $_ettibkxsjdud7emz.wrap(waypoints[0], v);
});
return r;
};
var createBistate = function (first, second, transitions) {
return $_ettibkxsjdud7emz.wrapAll([
{
key: first,
value: $_ettibkxsjdud7emz.wrap(second, transitions)
},
{
key: second,
value: $_ettibkxsjdud7emz.wrap(first, transitions)
}
]);
};
var createTristate = function (first, second, third, transitions) {
return $_ettibkxsjdud7emz.wrapAll([
{
key: first,
value: $_ettibkxsjdud7emz.wrapAll([
{
key: second,
value: transitions
},
{
key: third,
value: transitions
}
])
},
{
key: second,
value: $_ettibkxsjdud7emz.wrapAll([
{
key: first,
value: transitions
},
{
key: third,
value: transitions
}
])
},
{
key: third,
value: $_ettibkxsjdud7emz.wrapAll([
{
key: first,
value: transitions
},
{
key: second,
value: transitions
}
])
}
]);
};
var Transitioning = $_ax1gfoy2jdud7eu7.create({
fields: TransitionSchema,
name: 'transitioning',
active: $_4zcx6q13rjdud7fq3,
apis: $_7wpzrk13sjdud7fq5,
extra: {
createRoutes: createRoutes,
createBistate: createBistate,
createTristate: createTristate
}
});
var scrollable = $_5qzh4bzejdud7f0y.resolve('scrollable');
var register = function (element) {
$_1x3ogvynjdud7exn.add(element, scrollable);
};
var deregister = function (element) {
$_1x3ogvynjdud7exn.remove(element, scrollable);
};
var $_bhtyzh13ujdud7fqk = {
register: register,
deregister: deregister,
scrollable: $_9njj9iwjjdud7eix.constant(scrollable)
};
var getValue$4 = function (item) {
return $_ettibkxsjdud7emz.readOptFrom(item, 'format').getOr(item.title);
};
var convert$1 = function (formats, memMenuThunk) {
var mainMenu = makeMenu('Styles', [].concat($_1g2cevwsjdud7ejp.map(formats.items, function (k) {
return makeItem(getValue$4(k), k.title, k.isSelected(), k.getPreview(), $_ettibkxsjdud7emz.hasKey(formats.expansions, getValue$4(k)));
})), memMenuThunk, false);
var submenus = $_2dykn0x0jdud7ekc.map(formats.menus, function (menuItems, menuName) {
var items = $_1g2cevwsjdud7ejp.map(menuItems, function (item) {
return makeItem(getValue$4(item), item.title, item.isSelected !== undefined ? item.isSelected() : false, item.getPreview !== undefined ? item.getPreview() : '', $_ettibkxsjdud7emz.hasKey(formats.expansions, getValue$4(item)));
});
return makeMenu(menuName, items, memMenuThunk, true);
});
var menus = $_73qnwowyjdud7ek9.deepMerge(submenus, $_ettibkxsjdud7emz.wrap('styles', mainMenu));
var tmenu = TieredMenu.tieredData('styles', menus, formats.expansions);
return { tmenu: tmenu };
};
var makeItem = function (value, text, selected, preview, isMenu) {
return {
data: {
value: value,
text: text
},
type: 'item',
dom: {
tag: 'div',
classes: isMenu ? [$_5qzh4bzejdud7f0y.resolve('styles-item-is-menu')] : []
},
toggling: {
toggleOnExecute: false,
toggleClass: $_5qzh4bzejdud7f0y.resolve('format-matches'),
selected: selected
},
itemBehaviours: $_ax1gfoy2jdud7eu7.derive(isMenu ? [] : [$_nw25bzdjdud7f0v.format(value, function (comp, status) {
var toggle = status ? Toggling.on : Toggling.off;
toggle(comp);
})]),
components: [{
dom: {
tag: 'div',
attributes: { style: preview },
innerHtml: text
}
}]
};
};
var makeMenu = function (value, items, memMenuThunk, collapsable) {
return {
value: value,
dom: { tag: 'div' },
components: [
Button.sketch({
dom: {
tag: 'div',
classes: [$_5qzh4bzejdud7f0y.resolve('styles-collapser')]
},
components: collapsable ? [
{
dom: {
tag: 'span',
classes: [$_5qzh4bzejdud7f0y.resolve('styles-collapse-icon')]
}
},
$_ap2ej712tjdud7fjl.text(value)
] : [$_ap2ej712tjdud7fjl.text(value)],
action: function (item) {
if (collapsable) {
var comp = memMenuThunk().get(item);
TieredMenu.collapseMenu(comp);
}
}
}),
{
dom: {
tag: 'div',
classes: [$_5qzh4bzejdud7f0y.resolve('styles-menu-items-container')]
},
components: [Menu.parts().items({})],
behaviours: $_ax1gfoy2jdud7eu7.derive([$_6jfkt3126jdud7ffy.config('adhoc-scrollable-menu', [
$_5xcuyiy4jdud7eur.runOnAttached(function (component, simulatedEvent) {
$_btgbcy103jdud7f3t.set(component.element(), 'overflow-y', 'auto');
$_btgbcy103jdud7f3t.set(component.element(), '-webkit-overflow-scrolling', 'touch');
$_bhtyzh13ujdud7fqk.register(component.element());
}),
$_5xcuyiy4jdud7eur.runOnDetached(function (component) {
$_btgbcy103jdud7f3t.remove(component.element(), 'overflow-y');
$_btgbcy103jdud7f3t.remove(component.element(), '-webkit-overflow-scrolling');
$_bhtyzh13ujdud7fqk.deregister(component.element());
})
])])
}
],
items: items,
menuBehaviours: $_ax1gfoy2jdud7eu7.derive([Transitioning.config({
initialState: 'after',
routes: Transitioning.createTristate('before', 'current', 'after', {
transition: {
property: 'transform',
transitionClass: 'transitioning'
}
})
})])
};
};
var sketch$9 = function (settings) {
var dataset = convert$1(settings.formats, function () {
return memMenu;
});
var memMenu = $_81ial811rjdud7fdw.record(TieredMenu.sketch({
dom: {
tag: 'div',
classes: [$_5qzh4bzejdud7f0y.resolve('styles-menu')]
},
components: [],
fakeFocus: true,
stayInDom: true,
onExecute: function (tmenu, item) {
var v = me.getValue(item);
settings.handle(item, v.value);
},
onEscape: function () {
},
onOpenMenu: function (container, menu) {
var w = $_6chz3611kjdud7fcw.get(container.element());
$_6chz3611kjdud7fcw.set(menu.element(), w);
Transitioning.jumpTo(menu, 'current');
},
onOpenSubmenu: function (container, item, submenu) {
var w = $_6chz3611kjdud7fcw.get(container.element());
var menu = $_a3quyizxjdud7f3e.ancestor(item.element(), '[role="menu"]').getOrDie('hacky');
var menuComp = container.getSystem().getByDom(menu).getOrDie();
$_6chz3611kjdud7fcw.set(submenu.element(), w);
Transitioning.progressTo(menuComp, 'before');
Transitioning.jumpTo(submenu, 'after');
Transitioning.progressTo(submenu, 'current');
},
onCollapseMenu: function (container, item, menu) {
var submenu = $_a3quyizxjdud7f3e.ancestor(item.element(), '[role="menu"]').getOrDie('hacky');
var submenuComp = container.getSystem().getByDom(submenu).getOrDie();
Transitioning.progressTo(submenuComp, 'after');
Transitioning.progressTo(menu, 'current');
},
navigateOnHover: false,
openImmediately: true,
data: dataset.tmenu,
markers: {
backgroundMenu: $_5qzh4bzejdud7f0y.resolve('styles-background-menu'),
menu: $_5qzh4bzejdud7f0y.resolve('styles-menu'),
selectedMenu: $_5qzh4bzejdud7f0y.resolve('styles-selected-menu'),
item: $_5qzh4bzejdud7f0y.resolve('styles-item'),
selectedItem: $_5qzh4bzejdud7f0y.resolve('styles-selected-item')
}
}));
return memMenu.asSpec();
};
var $_8232q612sjdud7fix = { sketch: sketch$9 };
var getFromExpandingItem = function (item) {
var newItem = $_73qnwowyjdud7ek9.deepMerge($_ettibkxsjdud7emz.exclude(item, ['items']), { menu: true });
var rest = expand(item.items);
var newMenus = $_73qnwowyjdud7ek9.deepMerge(rest.menus, $_ettibkxsjdud7emz.wrap(item.title, rest.items));
var newExpansions = $_73qnwowyjdud7ek9.deepMerge(rest.expansions, $_ettibkxsjdud7emz.wrap(item.title, item.title));
return {
item: newItem,
menus: newMenus,
expansions: newExpansions
};
};
var getFromItem = function (item) {
return $_ettibkxsjdud7emz.hasKey(item, 'items') ? getFromExpandingItem(item) : {
item: item,
menus: {},
expansions: {}
};
};
var expand = function (items) {
return $_1g2cevwsjdud7ejp.foldr(items, function (acc, item) {
var newData = getFromItem(item);
return {
menus: $_73qnwowyjdud7ek9.deepMerge(acc.menus, newData.menus),
items: [newData.item].concat(acc.items),
expansions: $_73qnwowyjdud7ek9.deepMerge(acc.expansions, newData.expansions)
};
}, {
menus: {},
expansions: {},
items: []
});
};
var $_2318xp13vjdud7fqo = { expand: expand };
var register$1 = function (editor, settings) {
var isSelectedFor = function (format) {
return function () {
return editor.formatter.match(format);
};
};
var getPreview = function (format) {
return function () {
var styles = editor.formatter.getCssText(format);
return styles;
};
};
var enrichSupported = function (item) {
return $_73qnwowyjdud7ek9.deepMerge(item, {
isSelected: isSelectedFor(item.format),
getPreview: getPreview(item.format)
});
};
var enrichMenu = function (item) {
return $_73qnwowyjdud7ek9.deepMerge(item, {
isSelected: $_9njj9iwjjdud7eix.constant(false),
getPreview: $_9njj9iwjjdud7eix.constant('')
});
};
var enrichCustom = function (item) {
var formatName = $_3k9wwu10rjdud7f7t.generate(item.title);
var newItem = $_73qnwowyjdud7ek9.deepMerge(item, {
format: formatName,
isSelected: isSelectedFor(formatName),
getPreview: getPreview(formatName)
});
editor.formatter.register(formatName, newItem);
return newItem;
};
var formats = $_ettibkxsjdud7emz.readOptFrom(settings, 'style_formats').getOr(DefaultStyleFormats);
var doEnrich = function (items) {
return $_1g2cevwsjdud7ejp.map(items, function (item) {
if ($_ettibkxsjdud7emz.hasKey(item, 'items')) {
var newItems = doEnrich(item.items);
return $_73qnwowyjdud7ek9.deepMerge(enrichMenu(item), { items: newItems });
} else if ($_ettibkxsjdud7emz.hasKey(item, 'format')) {
return enrichSupported(item);
} else {
return enrichCustom(item);
}
});
};
return doEnrich(formats);
};
var prune = function (editor, formats) {
var doPrune = function (items) {
return $_1g2cevwsjdud7ejp.bind(items, function (item) {
if (item.items !== undefined) {
var newItems = doPrune(item.items);
return newItems.length > 0 ? [item] : [];
} else {
var keep = $_ettibkxsjdud7emz.hasKey(item, 'format') ? editor.formatter.canApply(item.format) : true;
return keep ? [item] : [];
}
});
};
var prunedItems = doPrune(formats);
return $_2318xp13vjdud7fqo.expand(prunedItems);
};
var ui = function (editor, formats, onDone) {
var pruned = prune(editor, formats);
return $_8232q612sjdud7fix.sketch({
formats: pruned,
handle: function (item, value) {
editor.undoManager.transact(function () {
if (Toggling.isOn(item)) {
editor.formatter.remove(value);
} else {
editor.formatter.apply(value);
}
});
onDone();
}
});
};
var $_2m4bmu12qjdud7fio = {
register: register$1,
ui: ui
};
var defaults = [
'undo',
'bold',
'italic',
'link',
'image',
'bullist',
'styleselect'
];
var extract$1 = function (rawToolbar) {
var toolbar = rawToolbar.replace(/\|/g, ' ').trim();
return toolbar.length > 0 ? toolbar.split(/\s+/) : [];
};
var identifyFromArray = function (toolbar) {
return $_1g2cevwsjdud7ejp.bind(toolbar, function (item) {
return $_9rljuwzjdud7ekb.isArray(item) ? identifyFromArray(item) : extract$1(item);
});
};
var identify = function (settings) {
var toolbar = settings.toolbar !== undefined ? settings.toolbar : defaults;
return $_9rljuwzjdud7ekb.isArray(toolbar) ? identifyFromArray(toolbar) : extract$1(toolbar);
};
var setup = function (realm, editor) {
var commandSketch = function (name) {
return function () {
return $_d0l7buzfjdud7f11.forToolbarCommand(editor, name);
};
};
var stateCommandSketch = function (name) {
return function () {
return $_d0l7buzfjdud7f11.forToolbarStateCommand(editor, name);
};
};
var actionSketch = function (name, query, action) {
return function () {
return $_d0l7buzfjdud7f11.forToolbarStateAction(editor, name, query, action);
};
};
var undo = commandSketch('undo');
var redo = commandSketch('redo');
var bold = stateCommandSketch('bold');
var italic = stateCommandSketch('italic');
var underline = stateCommandSketch('underline');
var removeformat = commandSketch('removeformat');
var link = function () {
return $_20tbzu121jdud7ff2.sketch(realm, editor);
};
var unlink = actionSketch('unlink', 'link', function () {
editor.execCommand('unlink', null, false);
});
var image = function () {
return $_sv17x11qjdud7fdo.sketch(editor);
};
var bullist = actionSketch('unordered-list', 'ul', function () {
editor.execCommand('InsertUnorderedList', null, false);
});
var numlist = actionSketch('ordered-list', 'ol', function () {
editor.execCommand('InsertOrderedList', null, false);
});
var fontsizeselect = function () {
return $_8r2dx911mjdud7fcz.sketch(realm, editor);
};
var forecolor = function () {
return $_2q53pp115jdud7fap.sketch(realm, editor);
};
var styleFormats = $_2m4bmu12qjdud7fio.register(editor, editor.settings);
var styleFormatsMenu = function () {
return $_2m4bmu12qjdud7fio.ui(editor, styleFormats, function () {
editor.fire('scrollIntoView');
});
};
var styleselect = function () {
return $_d0l7buzfjdud7f11.forToolbar('style-formats', function (button) {
editor.fire('toReading');
realm.dropup().appear(styleFormatsMenu, Toggling.on, button);
}, $_ax1gfoy2jdud7eu7.derive([
Toggling.config({
toggleClass: $_5qzh4bzejdud7f0y.resolve('toolbar-button-selected'),
toggleOnExecute: false,
aria: { mode: 'pressed' }
}),
Receiving.config({
channels: $_ettibkxsjdud7emz.wrapAll([
$_nw25bzdjdud7f0v.receive($_dlmrcrz1jdud7eyr.orientationChanged(), Toggling.off),
$_nw25bzdjdud7f0v.receive($_dlmrcrz1jdud7eyr.dropupDismissed(), Toggling.off)
])
})
]));
};
var feature = function (prereq, sketch) {
return {
isSupported: function () {
return prereq.forall(function (p) {
return $_ettibkxsjdud7emz.hasKey(editor.buttons, p);
});
},
sketch: sketch
};
};
return {
undo: feature(Option.none(), undo),
redo: feature(Option.none(), redo),
bold: feature(Option.none(), bold),
italic: feature(Option.none(), italic),
underline: feature(Option.none(), underline),
removeformat: feature(Option.none(), removeformat),
link: feature(Option.none(), link),
unlink: feature(Option.none(), unlink),
image: feature(Option.none(), image),
bullist: feature(Option.some('bullist'), bullist),
numlist: feature(Option.some('numlist'), numlist),
fontsizeselect: feature(Option.none(), fontsizeselect),
forecolor: feature(Option.none(), forecolor),
styleselect: feature(Option.none(), styleselect)
};
};
var detect$4 = function (settings, features) {
var itemNames = identify(settings);
var present = {};
return $_1g2cevwsjdud7ejp.bind(itemNames, function (iName) {
var r = !$_ettibkxsjdud7emz.hasKey(present, iName) && $_ettibkxsjdud7emz.hasKey(features, iName) && features[iName].isSupported() ? [features[iName].sketch()] : [];
present[iName] = true;
return r;
});
};
var $_44tgozz2jdud7eyu = {
identify: identify,
setup: setup,
detect: detect$4
};
var mkEvent = function (target, x, y, stop, prevent, kill, raw) {
return {
'target': $_9njj9iwjjdud7eix.constant(target),
'x': $_9njj9iwjjdud7eix.constant(x),
'y': $_9njj9iwjjdud7eix.constant(y),
'stop': stop,
'prevent': prevent,
'kill': kill,
'raw': $_9njj9iwjjdud7eix.constant(raw)
};
};
var handle = function (filter, handler) {
return function (rawEvent) {
if (!filter(rawEvent))
return;
var target = $_eobgtqxfjdud7elu.fromDom(rawEvent.target);
var stop = function () {
rawEvent.stopPropagation();
};
var prevent = function () {
rawEvent.preventDefault();
};
var kill = $_9njj9iwjjdud7eix.compose(prevent, stop);
var evt = mkEvent(target, rawEvent.clientX, rawEvent.clientY, stop, prevent, kill, rawEvent);
handler(evt);
};
};
var binder = function (element, event, filter, handler, useCapture) {
var wrapped = handle(filter, handler);
element.dom().addEventListener(event, wrapped, useCapture);
return { unbind: $_9njj9iwjjdud7eix.curry(unbind, element, event, wrapped, useCapture) };
};
var bind$1 = function (element, event, filter, handler) {
return binder(element, event, filter, handler, false);
};
var capture = function (element, event, filter, handler) {
return binder(element, event, filter, handler, true);
};
var unbind = function (element, event, handler, useCapture) {
element.dom().removeEventListener(event, handler, useCapture);
};
var $_4i64fg13yjdud7fr2 = {
bind: bind$1,
capture: capture
};
var filter$1 = $_9njj9iwjjdud7eix.constant(true);
var bind$2 = function (element, event, handler) {
return $_4i64fg13yjdud7fr2.bind(element, event, filter$1, handler);
};
var capture$1 = function (element, event, handler) {
return $_4i64fg13yjdud7fr2.capture(element, event, filter$1, handler);
};
var $_5x7hr513xjdud7fqz = {
bind: bind$2,
capture: capture$1
};
var INTERVAL = 50;
var INSURANCE = 1000 / INTERVAL;
var get$11 = function (outerWindow) {
var isPortrait = outerWindow.matchMedia('(orientation: portrait)').matches;
return { isPortrait: $_9njj9iwjjdud7eix.constant(isPortrait) };
};
var getActualWidth = function (outerWindow) {
var isIos = $_chh2cvwkjdud7ej0.detect().os.isiOS();
var isPortrait = get$11(outerWindow).isPortrait();
return isIos && !isPortrait ? outerWindow.screen.height : outerWindow.screen.width;
};
var onChange = function (outerWindow, listeners) {
var win = $_eobgtqxfjdud7elu.fromDom(outerWindow);
var poller = null;
var change = function () {
clearInterval(poller);
var orientation = get$11(outerWindow);
listeners.onChange(orientation);
onAdjustment(function () {
listeners.onReady(orientation);
});
};
var orientationHandle = $_5x7hr513xjdud7fqz.bind(win, 'orientationchange', change);
var onAdjustment = function (f) {
clearInterval(poller);
var flag = outerWindow.innerHeight;
var insurance = 0;
poller = setInterval(function () {
if (flag !== outerWindow.innerHeight) {
clearInterval(poller);
f(Option.some(outerWindow.innerHeight));
} else if (insurance > INSURANCE) {
clearInterval(poller);
f(Option.none());
}
insurance++;
}, INTERVAL);
};
var destroy = function () {
orientationHandle.unbind();
};
return {
onAdjustment: onAdjustment,
destroy: destroy
};
};
var $_9zlehr13wjdud7fqs = {
get: get$11,
onChange: onChange,
getActualWidth: getActualWidth
};
function DelayedFunction (fun, delay) {
var ref = null;
var schedule = function () {
var args = arguments;
ref = setTimeout(function () {
fun.apply(null, args);
ref = null;
}, delay);
};
var cancel = function () {
if (ref !== null) {
clearTimeout(ref);
ref = null;
}
};
return {
cancel: cancel,
schedule: schedule
};
}
var SIGNIFICANT_MOVE = 5;
var LONGPRESS_DELAY = 400;
var getTouch = function (event) {
if (event.raw().touches === undefined || event.raw().touches.length !== 1)
return Option.none();
return Option.some(event.raw().touches[0]);
};
var isFarEnough = function (touch, data) {
var distX = Math.abs(touch.clientX - data.x());
var distY = Math.abs(touch.clientY - data.y());
return distX > SIGNIFICANT_MOVE || distY > SIGNIFICANT_MOVE;
};
var monitor = function (settings) {
var startData = Cell(Option.none());
var longpress = DelayedFunction(function (event) {
startData.set(Option.none());
settings.triggerEvent($_801kkqwhjdud7eiq.longpress(), event);
}, LONGPRESS_DELAY);
var handleTouchstart = function (event) {
getTouch(event).each(function (touch) {
longpress.cancel();
var data = {
x: $_9njj9iwjjdud7eix.constant(touch.clientX),
y: $_9njj9iwjjdud7eix.constant(touch.clientY),
target: event.target
};
longpress.schedule(data);
startData.set(Option.some(data));
});
return Option.none();
};
var handleTouchmove = function (event) {
longpress.cancel();
getTouch(event).each(function (touch) {
startData.get().each(function (data) {
if (isFarEnough(touch, data))
startData.set(Option.none());
});
});
return Option.none();
};
var handleTouchend = function (event) {
longpress.cancel();
var isSame = function (data) {
return $_f1y1rtx9jdud7el7.eq(data.target(), event.target());
};
return startData.get().filter(isSame).map(function (data) {
return settings.triggerEvent($_801kkqwhjdud7eiq.tap(), event);
});
};
var handlers = $_ettibkxsjdud7emz.wrapAll([
{
key: $_brmbwvwijdud7eiu.touchstart(),
value: handleTouchstart
},
{
key: $_brmbwvwijdud7eiu.touchmove(),
value: handleTouchmove
},
{
key: $_brmbwvwijdud7eiu.touchend(),
value: handleTouchend
}
]);
var fireIfReady = function (event, type) {
return $_ettibkxsjdud7emz.readOptFrom(handlers, type).bind(function (handler) {
return handler(event);
});
};
return { fireIfReady: fireIfReady };
};
var $_civf8z144jdud7fs6 = { monitor: monitor };
var monitor$1 = function (editorApi) {
var tapEvent = $_civf8z144jdud7fs6.monitor({
triggerEvent: function (type, evt) {
editorApi.onTapContent(evt);
}
});
var onTouchend = function () {
return $_5x7hr513xjdud7fqz.bind(editorApi.body(), 'touchend', function (evt) {
tapEvent.fireIfReady(evt, 'touchend');
});
};
var onTouchmove = function () {
return $_5x7hr513xjdud7fqz.bind(editorApi.body(), 'touchmove', function (evt) {
tapEvent.fireIfReady(evt, 'touchmove');
});
};
var fireTouchstart = function (evt) {
tapEvent.fireIfReady(evt, 'touchstart');
};
return {
fireTouchstart: fireTouchstart,
onTouchend: onTouchend,
onTouchmove: onTouchmove
};
};
var $_cza229143jdud7fs3 = { monitor: monitor$1 };
var isAndroid6 = $_chh2cvwkjdud7ej0.detect().os.version.major >= 6;
var initEvents = function (editorApi, toolstrip, alloy) {
var tapping = $_cza229143jdud7fs3.monitor(editorApi);
var outerDoc = $_dekwe2x3jdud7ekr.owner(toolstrip);
var isRanged = function (sel) {
return !$_f1y1rtx9jdud7el7.eq(sel.start(), sel.finish()) || sel.soffset() !== sel.foffset();
};
var hasRangeInUi = function () {
return $_25580rytjdud7ey7.active(outerDoc).filter(function (input) {
return $_50qkdpxkjdud7em6.name(input) === 'input';
}).exists(function (input) {
return input.dom().selectionStart !== input.dom().selectionEnd;
});
};
var updateMargin = function () {
var rangeInContent = editorApi.doc().dom().hasFocus() && editorApi.getSelection().exists(isRanged);
alloy.getByDom(toolstrip).each((rangeInContent || hasRangeInUi()) === true ? Toggling.on : Toggling.off);
};
var listeners = [
$_5x7hr513xjdud7fqz.bind(editorApi.body(), 'touchstart', function (evt) {
editorApi.onTouchContent();
tapping.fireTouchstart(evt);
}),
tapping.onTouchmove(),
tapping.onTouchend(),
$_5x7hr513xjdud7fqz.bind(toolstrip, 'touchstart', function (evt) {
editorApi.onTouchToolstrip();
}),
editorApi.onToReading(function () {
$_25580rytjdud7ey7.blur(editorApi.body());
}),
editorApi.onToEditing($_9njj9iwjjdud7eix.noop),
editorApi.onScrollToCursor(function (tinyEvent) {
tinyEvent.preventDefault();
editorApi.getCursorBox().each(function (bounds) {
var cWin = editorApi.win();
var isOutside = bounds.top() > cWin.innerHeight || bounds.bottom() > cWin.innerHeight;
var cScrollBy = isOutside ? bounds.bottom() - cWin.innerHeight + 50 : 0;
if (cScrollBy !== 0) {
cWin.scrollTo(cWin.pageXOffset, cWin.pageYOffset + cScrollBy);
}
});
})
].concat(isAndroid6 === true ? [] : [
$_5x7hr513xjdud7fqz.bind($_eobgtqxfjdud7elu.fromDom(editorApi.win()), 'blur', function () {
alloy.getByDom(toolstrip).each(Toggling.off);
}),
$_5x7hr513xjdud7fqz.bind(outerDoc, 'select', updateMargin),
$_5x7hr513xjdud7fqz.bind(editorApi.doc(), 'selectionchange', updateMargin)
]);
var destroy = function () {
$_1g2cevwsjdud7ejp.each(listeners, function (l) {
l.unbind();
});
};
return { destroy: destroy };
};
var $_bywc5s142jdud7frq = { initEvents: initEvents };
var safeParse = function (element, attribute) {
var parsed = parseInt($_2vghk1xrjdud7ems.get(element, attribute), 10);
return isNaN(parsed) ? 0 : parsed;
};
var $_1bs4n9147jdud7fsm = { safeParse: safeParse };
function NodeValue (is, name) {
var get = function (element) {
if (!is(element))
throw new Error('Can only get ' + name + ' value of a ' + name + ' node');
return getOption(element).getOr('');
};
var getOptionIE10 = function (element) {
try {
return getOptionSafe(element);
} catch (e) {
return Option.none();
}
};
var getOptionSafe = function (element) {
return is(element) ? Option.from(element.dom().nodeValue) : Option.none();
};
var browser = $_chh2cvwkjdud7ej0.detect().browser;
var getOption = browser.isIE() && browser.version.major === 10 ? getOptionIE10 : getOptionSafe;
var set = function (element, value) {
if (!is(element))
throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');
element.dom().nodeValue = value;
};
return {
get: get,
getOption: getOption,
set: set
};
}
var api$3 = NodeValue($_50qkdpxkjdud7em6.isText, 'text');
var get$12 = function (element) {
return api$3.get(element);
};
var getOption = function (element) {
return api$3.getOption(element);
};
var set$8 = function (element, value) {
api$3.set(element, value);
};
var $_3k83ka14ajdud7fsz = {
get: get$12,
getOption: getOption,
set: set$8
};
var getEnd = function (element) {
return $_50qkdpxkjdud7em6.name(element) === 'img' ? 1 : $_3k83ka14ajdud7fsz.getOption(element).fold(function () {
return $_dekwe2x3jdud7ekr.children(element).length;
}, function (v) {
return v.length;
});
};
var isEnd = function (element, offset) {
return getEnd(element) === offset;
};
var isStart = function (element, offset) {
return offset === 0;
};
var NBSP = '\xA0';
var isTextNodeWithCursorPosition = function (el) {
return $_3k83ka14ajdud7fsz.getOption(el).filter(function (text) {
return text.trim().length !== 0 || text.indexOf(NBSP) > -1;
}).isSome();
};
var elementsWithCursorPosition = [
'img',
'br'
];
var isCursorPosition = function (elem) {
var hasCursorPosition = isTextNodeWithCursorPosition(elem);
return hasCursorPosition || $_1g2cevwsjdud7ejp.contains(elementsWithCursorPosition, $_50qkdpxkjdud7em6.name(elem));
};
var $_68us7a149jdud7fsw = {
getEnd: getEnd,
isEnd: isEnd,
isStart: isStart,
isCursorPosition: isCursorPosition
};
var adt$4 = $_2ytffsxwjdud7ets.generate([
{ 'before': ['element'] },
{
'on': [
'element',
'offset'
]
},
{ after: ['element'] }
]);
var cata = function (subject, onBefore, onOn, onAfter) {
return subject.fold(onBefore, onOn, onAfter);
};
var getStart = function (situ) {
return situ.fold($_9njj9iwjjdud7eix.identity, $_9njj9iwjjdud7eix.identity, $_9njj9iwjjdud7eix.identity);
};
var $_45626b14djdud7ft8 = {
before: adt$4.before,
on: adt$4.on,
after: adt$4.after,
cata: cata,
getStart: getStart
};
var type$1 = $_2ytffsxwjdud7ets.generate([
{ domRange: ['rng'] },
{
relative: [
'startSitu',
'finishSitu'
]
},
{
exact: [
'start',
'soffset',
'finish',
'foffset'
]
}
]);
var range$1 = $_8o1q69x4jdud7ekz.immutable('start', 'soffset', 'finish', 'foffset');
var exactFromRange = function (simRange) {
return type$1.exact(simRange.start(), simRange.soffset(), simRange.finish(), simRange.foffset());
};
var getStart$1 = function (selection) {
return selection.match({
domRange: function (rng) {
return $_eobgtqxfjdud7elu.fromDom(rng.startContainer);
},
relative: function (startSitu, finishSitu) {
return $_45626b14djdud7ft8.getStart(startSitu);
},
exact: function (start, soffset, finish, foffset) {
return start;
}
});
};
var getWin = function (selection) {
var start = getStart$1(selection);
return $_dekwe2x3jdud7ekr.defaultView(start);
};
var $_fmfln914cjdud7ft5 = {
domRange: type$1.domRange,
relative: type$1.relative,
exact: type$1.exact,
exactFromRange: exactFromRange,
range: range$1,
getWin: getWin
};
var makeRange = function (start, soffset, finish, foffset) {
var doc = $_dekwe2x3jdud7ekr.owner(start);
var rng = doc.dom().createRange();
rng.setStart(start.dom(), soffset);
rng.setEnd(finish.dom(), foffset);
return rng;
};
var commonAncestorContainer = function (start, soffset, finish, foffset) {
var r = makeRange(start, soffset, finish, foffset);
return $_eobgtqxfjdud7elu.fromDom(r.commonAncestorContainer);
};
var after$2 = function (start, soffset, finish, foffset) {
var r = makeRange(start, soffset, finish, foffset);
var same = $_f1y1rtx9jdud7el7.eq(start, finish) && soffset === foffset;
return r.collapsed && !same;
};
var $_ye0rw14fjdud7ftn = {
after: after$2,
commonAncestorContainer: commonAncestorContainer
};
var fromElements = function (elements, scope) {
var doc = scope || document;
var fragment = doc.createDocumentFragment();
$_1g2cevwsjdud7ejp.each(elements, function (element) {
fragment.appendChild(element.dom());
});
return $_eobgtqxfjdud7elu.fromDom(fragment);
};
var $_cknvaa14gjdud7ftp = { fromElements: fromElements };
var selectNodeContents = function (win, element) {
var rng = win.document.createRange();
selectNodeContentsUsing(rng, element);
return rng;
};
var selectNodeContentsUsing = function (rng, element) {
rng.selectNodeContents(element.dom());
};
var isWithin = function (outerRange, innerRange) {
return innerRange.compareBoundaryPoints(outerRange.END_TO_START, outerRange) < 1 && innerRange.compareBoundaryPoints(outerRange.START_TO_END, outerRange) > -1;
};
var create$4 = function (win) {
return win.document.createRange();
};
var setStart = function (rng, situ) {
situ.fold(function (e) {
rng.setStartBefore(e.dom());
}, function (e, o) {
rng.setStart(e.dom(), o);
}, function (e) {
rng.setStartAfter(e.dom());
});
};
var setFinish = function (rng, situ) {
situ.fold(function (e) {
rng.setEndBefore(e.dom());
}, function (e, o) {
rng.setEnd(e.dom(), o);
}, function (e) {
rng.setEndAfter(e.dom());
});
};
var replaceWith = function (rng, fragment) {
deleteContents(rng);
rng.insertNode(fragment.dom());
};
var relativeToNative = function (win, startSitu, finishSitu) {
var range = win.document.createRange();
setStart(range, startSitu);
setFinish(range, finishSitu);
return range;
};
var exactToNative = function (win, start, soffset, finish, foffset) {
var rng = win.document.createRange();
rng.setStart(start.dom(), soffset);
rng.setEnd(finish.dom(), foffset);
return rng;
};
var deleteContents = function (rng) {
rng.deleteContents();
};
var cloneFragment = function (rng) {
var fragment = rng.cloneContents();
return $_eobgtqxfjdud7elu.fromDom(fragment);
};
var toRect = function (rect) {
return {
left: $_9njj9iwjjdud7eix.constant(rect.left),
top: $_9njj9iwjjdud7eix.constant(rect.top),
right: $_9njj9iwjjdud7eix.constant(rect.right),
bottom: $_9njj9iwjjdud7eix.constant(rect.bottom),
width: $_9njj9iwjjdud7eix.constant(rect.width),
height: $_9njj9iwjjdud7eix.constant(rect.height)
};
};
var getFirstRect = function (rng) {
var rects = rng.getClientRects();
var rect = rects.length > 0 ? rects[0] : rng.getBoundingClientRect();
return rect.width > 0 || rect.height > 0 ? Option.some(rect).map(toRect) : Option.none();
};
var getBounds = function (rng) {
var rect = rng.getBoundingClientRect();
return rect.width > 0 || rect.height > 0 ? Option.some(rect).map(toRect) : Option.none();
};
var toString$1 = function (rng) {
return rng.toString();
};
var $_5e0i8014hjdud7fts = {
create: create$4,
replaceWith: replaceWith,
selectNodeContents: selectNodeContents,
selectNodeContentsUsing: selectNodeContentsUsing,
relativeToNative: relativeToNative,
exactToNative: exactToNative,
deleteContents: deleteContents,
cloneFragment: cloneFragment,
getFirstRect: getFirstRect,
getBounds: getBounds,
isWithin: isWithin,
toString: toString$1
};
var adt$5 = $_2ytffsxwjdud7ets.generate([
{
ltr: [
'start',
'soffset',
'finish',
'foffset'
]
},
{
rtl: [
'start',
'soffset',
'finish',
'foffset'
]
}
]);
var fromRange = function (win, type, range) {
return type($_eobgtqxfjdud7elu.fromDom(range.startContainer), range.startOffset, $_eobgtqxfjdud7elu.fromDom(range.endContainer), range.endOffset);
};
var getRanges = function (win, selection) {
return selection.match({
domRange: function (rng) {
return {
ltr: $_9njj9iwjjdud7eix.constant(rng),
rtl: Option.none
};
},
relative: function (startSitu, finishSitu) {
return {
ltr: $_2nf0bewljdud7ej2.cached(function () {
return $_5e0i8014hjdud7fts.relativeToNative(win, startSitu, finishSitu);
}),
rtl: $_2nf0bewljdud7ej2.cached(function () {
return Option.some($_5e0i8014hjdud7fts.relativeToNative(win, finishSitu, startSitu));
})
};
},
exact: function (start, soffset, finish, foffset) {
return {
ltr: $_2nf0bewljdud7ej2.cached(function () {
return $_5e0i8014hjdud7fts.exactToNative(win, start, soffset, finish, foffset);
}),
rtl: $_2nf0bewljdud7ej2.cached(function () {
return Option.some($_5e0i8014hjdud7fts.exactToNative(win, finish, foffset, start, soffset));
})
};
}
});
};
var doDiagnose = function (win, ranges) {
var rng = ranges.ltr();
if (rng.collapsed) {
var reversed = ranges.rtl().filter(function (rev) {
return rev.collapsed === false;
});
return reversed.map(function (rev) {
return adt$5.rtl($_eobgtqxfjdud7elu.fromDom(rev.endContainer), rev.endOffset, $_eobgtqxfjdud7elu.fromDom(rev.startContainer), rev.startOffset);
}).getOrThunk(function () {
return fromRange(win, adt$5.ltr, rng);
});
} else {
return fromRange(win, adt$5.ltr, rng);
}
};
var diagnose = function (win, selection) {
var ranges = getRanges(win, selection);
return doDiagnose(win, ranges);
};
var asLtrRange = function (win, selection) {
var diagnosis = diagnose(win, selection);
return diagnosis.match({
ltr: function (start, soffset, finish, foffset) {
var rng = win.document.createRange();
rng.setStart(start.dom(), soffset);
rng.setEnd(finish.dom(), foffset);
return rng;
},
rtl: function (start, soffset, finish, foffset) {
var rng = win.document.createRange();
rng.setStart(finish.dom(), foffset);
rng.setEnd(start.dom(), soffset);
return rng;
}
});
};
var $_76ojt714ijdud7ftx = {
ltr: adt$5.ltr,
rtl: adt$5.rtl,
diagnose: diagnose,
asLtrRange: asLtrRange
};
var searchForPoint = function (rectForOffset, x, y, maxX, length) {
if (length === 0)
return 0;
else if (x === maxX)
return length - 1;
var xDelta = maxX;
for (var i = 1; i < length; i++) {
var rect = rectForOffset(i);
var curDeltaX = Math.abs(x - rect.left);
if (y > rect.bottom) {
} else if (y < rect.top || curDeltaX > xDelta) {
return i - 1;
} else {
xDelta = curDeltaX;
}
}
return 0;
};
var inRect = function (rect, x, y) {
return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;
};
var $_bqzywk14ljdud7fuc = {
inRect: inRect,
searchForPoint: searchForPoint
};
var locateOffset = function (doc, textnode, x, y, rect) {
var rangeForOffset = function (offset) {
var r = doc.dom().createRange();
r.setStart(textnode.dom(), offset);
r.collapse(true);
return r;
};
var rectForOffset = function (offset) {
var r = rangeForOffset(offset);
return r.getBoundingClientRect();
};
var length = $_3k83ka14ajdud7fsz.get(textnode).length;
var offset = $_bqzywk14ljdud7fuc.searchForPoint(rectForOffset, x, y, rect.right, length);
return rangeForOffset(offset);
};
var locate$1 = function (doc, node, x, y) {
var r = doc.dom().createRange();
r.selectNode(node.dom());
var rects = r.getClientRects();
var foundRect = $_ak7xq9y0jdud7eu4.findMap(rects, function (rect) {
return $_bqzywk14ljdud7fuc.inRect(rect, x, y) ? Option.some(rect) : Option.none();
});
return foundRect.map(function (rect) {
return locateOffset(doc, node, x, y, rect);
});
};
var $_c6oh7z14mjdud7fue = { locate: locate$1 };
var searchInChildren = function (doc, node, x, y) {
var r = doc.dom().createRange();
var nodes = $_dekwe2x3jdud7ekr.children(node);
return $_ak7xq9y0jdud7eu4.findMap(nodes, function (n) {
r.selectNode(n.dom());
return $_bqzywk14ljdud7fuc.inRect(r.getBoundingClientRect(), x, y) ? locateNode(doc, n, x, y) : Option.none();
});
};
var locateNode = function (doc, node, x, y) {
var locator = $_50qkdpxkjdud7em6.isText(node) ? $_c6oh7z14mjdud7fue.locate : searchInChildren;
return locator(doc, node, x, y);
};
var locate$2 = function (doc, node, x, y) {
var r = doc.dom().createRange();
r.selectNode(node.dom());
var rect = r.getBoundingClientRect();
var boundedX = Math.max(rect.left, Math.min(rect.right, x));
var boundedY = Math.max(rect.top, Math.min(rect.bottom, y));
return locateNode(doc, node, boundedX, boundedY);
};
var $_fsgwi914kjdud7fu8 = { locate: locate$2 };
var first$3 = function (element) {
return $_4j5kdsyvjdud7eyd.descendant(element, $_68us7a149jdud7fsw.isCursorPosition);
};
var last$2 = function (element) {
return descendantRtl(element, $_68us7a149jdud7fsw.isCursorPosition);
};
var descendantRtl = function (scope, predicate) {
var descend = function (element) {
var children = $_dekwe2x3jdud7ekr.children(element);
for (var i = children.length - 1; i >= 0; i--) {
var child = children[i];
if (predicate(child))
return Option.some(child);
var res = descend(child);
if (res.isSome())
return res;
}
return Option.none();
};
return descend(scope);
};
var $_he1hx14ojdud7ful = {
first: first$3,
last: last$2
};
var COLLAPSE_TO_LEFT = true;
var COLLAPSE_TO_RIGHT = false;
var getCollapseDirection = function (rect, x) {
return x - rect.left < rect.right - x ? COLLAPSE_TO_LEFT : COLLAPSE_TO_RIGHT;
};
var createCollapsedNode = function (doc, target, collapseDirection) {
var r = doc.dom().createRange();
r.selectNode(target.dom());
r.collapse(collapseDirection);
return r;
};
var locateInElement = function (doc, node, x) {
var cursorRange = doc.dom().createRange();
cursorRange.selectNode(node.dom());
var rect = cursorRange.getBoundingClientRect();
var collapseDirection = getCollapseDirection(rect, x);
var f = collapseDirection === COLLAPSE_TO_LEFT ? $_he1hx14ojdud7ful.first : $_he1hx14ojdud7ful.last;
return f(node).map(function (target) {
return createCollapsedNode(doc, target, collapseDirection);
});
};
var locateInEmpty = function (doc, node, x) {
var rect = node.dom().getBoundingClientRect();
var collapseDirection = getCollapseDirection(rect, x);
return Option.some(createCollapsedNode(doc, node, collapseDirection));
};
var search$1 = function (doc, node, x) {
var f = $_dekwe2x3jdud7ekr.children(node).length === 0 ? locateInEmpty : locateInElement;
return f(doc, node, x);
};
var $_gcpi5c14njdud7fui = { search: search$1 };
var caretPositionFromPoint = function (doc, x, y) {
return Option.from(doc.dom().caretPositionFromPoint(x, y)).bind(function (pos) {
if (pos.offsetNode === null)
return Option.none();
var r = doc.dom().createRange();
r.setStart(pos.offsetNode, pos.offset);
r.collapse();
return Option.some(r);
});
};
var caretRangeFromPoint = function (doc, x, y) {
return Option.from(doc.dom().caretRangeFromPoint(x, y));
};
var searchTextNodes = function (doc, node, x, y) {
var r = doc.dom().createRange();
r.selectNode(node.dom());
var rect = r.getBoundingClientRect();
var boundedX = Math.max(rect.left, Math.min(rect.right, x));
var boundedY = Math.max(rect.top, Math.min(rect.bottom, y));
return $_fsgwi914kjdud7fu8.locate(doc, node, boundedX, boundedY);
};
var searchFromPoint = function (doc, x, y) {
return $_eobgtqxfjdud7elu.fromPoint(doc, x, y).bind(function (elem) {
var fallback = function () {
return $_gcpi5c14njdud7fui.search(doc, elem, x);
};
return $_dekwe2x3jdud7ekr.children(elem).length === 0 ? fallback() : searchTextNodes(doc, elem, x, y).orThunk(fallback);
});
};
var availableSearch = document.caretPositionFromPoint ? caretPositionFromPoint : document.caretRangeFromPoint ? caretRangeFromPoint : searchFromPoint;
var fromPoint$1 = function (win, x, y) {
var doc = $_eobgtqxfjdud7elu.fromDom(win.document);
return availableSearch(doc, x, y).map(function (rng) {
return $_fmfln914cjdud7ft5.range($_eobgtqxfjdud7elu.fromDom(rng.startContainer), rng.startOffset, $_eobgtqxfjdud7elu.fromDom(rng.endContainer), rng.endOffset);
});
};
var $_6sjtn814jjdud7fu4 = { fromPoint: fromPoint$1 };
var withinContainer = function (win, ancestor, outerRange, selector) {
var innerRange = $_5e0i8014hjdud7fts.create(win);
var self = $_1t43jfxejdud7elq.is(ancestor, selector) ? [ancestor] : [];
var elements = self.concat($_df6s98zvjdud7f39.descendants(ancestor, selector));
return $_1g2cevwsjdud7ejp.filter(elements, function (elem) {
$_5e0i8014hjdud7fts.selectNodeContentsUsing(innerRange, elem);
return $_5e0i8014hjdud7fts.isWithin(outerRange, innerRange);
});
};
var find$4 = function (win, selection, selector) {
var outerRange = $_76ojt714ijdud7ftx.asLtrRange(win, selection);
var ancestor = $_eobgtqxfjdud7elu.fromDom(outerRange.commonAncestorContainer);
return $_50qkdpxkjdud7em6.isElement(ancestor) ? withinContainer(win, ancestor, outerRange, selector) : [];
};
var $_cjqhl14pjdud7fun = { find: find$4 };
var beforeSpecial = function (element, offset) {
var name = $_50qkdpxkjdud7em6.name(element);
if ('input' === name)
return $_45626b14djdud7ft8.after(element);
else if (!$_1g2cevwsjdud7ejp.contains([
'br',
'img'
], name))
return $_45626b14djdud7ft8.on(element, offset);
else
return offset === 0 ? $_45626b14djdud7ft8.before(element) : $_45626b14djdud7ft8.after(element);
};
var preprocessRelative = function (startSitu, finishSitu) {
var start = startSitu.fold($_45626b14djdud7ft8.before, beforeSpecial, $_45626b14djdud7ft8.after);
var finish = finishSitu.fold($_45626b14djdud7ft8.before, beforeSpecial, $_45626b14djdud7ft8.after);
return $_fmfln914cjdud7ft5.relative(start, finish);
};
var preprocessExact = function (start, soffset, finish, foffset) {
var startSitu = beforeSpecial(start, soffset);
var finishSitu = beforeSpecial(finish, foffset);
return $_fmfln914cjdud7ft5.relative(startSitu, finishSitu);
};
var preprocess = function (selection) {
return selection.match({
domRange: function (rng) {
var start = $_eobgtqxfjdud7elu.fromDom(rng.startContainer);
var finish = $_eobgtqxfjdud7elu.fromDom(rng.endContainer);
return preprocessExact(start, rng.startOffset, finish, rng.endOffset);
},
relative: preprocessRelative,
exact: preprocessExact
});
};
var $_dz1q1l14qjdud7fur = {
beforeSpecial: beforeSpecial,
preprocess: preprocess,
preprocessRelative: preprocessRelative,
preprocessExact: preprocessExact
};
var doSetNativeRange = function (win, rng) {
Option.from(win.getSelection()).each(function (selection) {
selection.removeAllRanges();
selection.addRange(rng);
});
};
var doSetRange = function (win, start, soffset, finish, foffset) {
var rng = $_5e0i8014hjdud7fts.exactToNative(win, start, soffset, finish, foffset);
doSetNativeRange(win, rng);
};
var findWithin = function (win, selection, selector) {
return $_cjqhl14pjdud7fun.find(win, selection, selector);
};
var setRangeFromRelative = function (win, relative) {
return $_76ojt714ijdud7ftx.diagnose(win, relative).match({
ltr: function (start, soffset, finish, foffset) {
doSetRange(win, start, soffset, finish, foffset);
},
rtl: function (start, soffset, finish, foffset) {
var selection = win.getSelection();
if (selection.extend) {
selection.collapse(start.dom(), soffset);
selection.extend(finish.dom(), foffset);
} else {
doSetRange(win, finish, foffset, start, soffset);
}
}
});
};
var setExact = function (win, start, soffset, finish, foffset) {
var relative = $_dz1q1l14qjdud7fur.preprocessExact(start, soffset, finish, foffset);
setRangeFromRelative(win, relative);
};
var setRelative = function (win, startSitu, finishSitu) {
var relative = $_dz1q1l14qjdud7fur.preprocessRelative(startSitu, finishSitu);
setRangeFromRelative(win, relative);
};
var toNative = function (selection) {
var win = $_fmfln914cjdud7ft5.getWin(selection).dom();
var getDomRange = function (start, soffset, finish, foffset) {
return $_5e0i8014hjdud7fts.exactToNative(win, start, soffset, finish, foffset);
};
var filtered = $_dz1q1l14qjdud7fur.preprocess(selection);
return $_76ojt714ijdud7ftx.diagnose(win, filtered).match({
ltr: getDomRange,
rtl: getDomRange
});
};
var readRange = function (selection) {
if (selection.rangeCount > 0) {
var firstRng = selection.getRangeAt(0);
var lastRng = selection.getRangeAt(selection.rangeCount - 1);
return Option.some($_fmfln914cjdud7ft5.range($_eobgtqxfjdud7elu.fromDom(firstRng.startContainer), firstRng.startOffset, $_eobgtqxfjdud7elu.fromDom(lastRng.endContainer), lastRng.endOffset));
} else {
return Option.none();
}
};
var doGetExact = function (selection) {
var anchorNode = $_eobgtqxfjdud7elu.fromDom(selection.anchorNode);
var focusNode = $_eobgtqxfjdud7elu.fromDom(selection.focusNode);
return $_ye0rw14fjdud7ftn.after(anchorNode, selection.anchorOffset, focusNode, selection.focusOffset) ? Option.some($_fmfln914cjdud7ft5.range($_eobgtqxfjdud7elu.fromDom(selection.anchorNode), selection.anchorOffset, $_eobgtqxfjdud7elu.fromDom(selection.focusNode), selection.focusOffset)) : readRange(selection);
};
var setToElement = function (win, element) {
var rng = $_5e0i8014hjdud7fts.selectNodeContents(win, element);
doSetNativeRange(win, rng);
};
var forElement = function (win, element) {
var rng = $_5e0i8014hjdud7fts.selectNodeContents(win, element);
return $_fmfln914cjdud7ft5.range($_eobgtqxfjdud7elu.fromDom(rng.startContainer), rng.startOffset, $_eobgtqxfjdud7elu.fromDom(rng.endContainer), rng.endOffset);
};
var getExact = function (win) {
var selection = win.getSelection();
return selection.rangeCount > 0 ? doGetExact(selection) : Option.none();
};
var get$13 = function (win) {
return getExact(win).map(function (range) {
return $_fmfln914cjdud7ft5.exact(range.start(), range.soffset(), range.finish(), range.foffset());
});
};
var getFirstRect$1 = function (win, selection) {
var rng = $_76ojt714ijdud7ftx.asLtrRange(win, selection);
return $_5e0i8014hjdud7fts.getFirstRect(rng);
};
var getBounds$1 = function (win, selection) {
var rng = $_76ojt714ijdud7ftx.asLtrRange(win, selection);
return $_5e0i8014hjdud7fts.getBounds(rng);
};
var getAtPoint = function (win, x, y) {
return $_6sjtn814jjdud7fu4.fromPoint(win, x, y);
};
var getAsString = function (win, selection) {
var rng = $_76ojt714ijdud7ftx.asLtrRange(win, selection);
return $_5e0i8014hjdud7fts.toString(rng);
};
var clear$1 = function (win) {
var selection = win.getSelection();
selection.removeAllRanges();
};
var clone$3 = function (win, selection) {
var rng = $_76ojt714ijdud7ftx.asLtrRange(win, selection);
return $_5e0i8014hjdud7fts.cloneFragment(rng);
};
var replace = function (win, selection, elements) {
var rng = $_76ojt714ijdud7ftx.asLtrRange(win, selection);
var fragment = $_cknvaa14gjdud7ftp.fromElements(elements, win.document);
$_5e0i8014hjdud7fts.replaceWith(rng, fragment);
};
var deleteAt = function (win, selection) {
var rng = $_76ojt714ijdud7ftx.asLtrRange(win, selection);
$_5e0i8014hjdud7fts.deleteContents(rng);
};
var isCollapsed = function (start, soffset, finish, foffset) {
return $_f1y1rtx9jdud7el7.eq(start, finish) && soffset === foffset;
};
var $_af4mx314ejdud7ftd = {
setExact: setExact,
getExact: getExact,
get: get$13,
setRelative: setRelative,
toNative: toNative,
setToElement: setToElement,
clear: clear$1,
clone: clone$3,
replace: replace,
deleteAt: deleteAt,
forElement: forElement,
getFirstRect: getFirstRect$1,
getBounds: getBounds$1,
getAtPoint: getAtPoint,
findWithin: findWithin,
getAsString: getAsString,
isCollapsed: isCollapsed
};
var COLLAPSED_WIDTH = 2;
var collapsedRect = function (rect) {
return {
left: rect.left,
top: rect.top,
right: rect.right,
bottom: rect.bottom,
width: $_9njj9iwjjdud7eix.constant(COLLAPSED_WIDTH),
height: rect.height
};
};
var toRect$1 = function (rawRect) {
return {
left: $_9njj9iwjjdud7eix.constant(rawRect.left),
top: $_9njj9iwjjdud7eix.constant(rawRect.top),
right: $_9njj9iwjjdud7eix.constant(rawRect.right),
bottom: $_9njj9iwjjdud7eix.constant(rawRect.bottom),
width: $_9njj9iwjjdud7eix.constant(rawRect.width),
height: $_9njj9iwjjdud7eix.constant(rawRect.height)
};
};
var getRectsFromRange = function (range) {
if (!range.collapsed) {
return $_1g2cevwsjdud7ejp.map(range.getClientRects(), toRect$1);
} else {
var start_1 = $_eobgtqxfjdud7elu.fromDom(range.startContainer);
return $_dekwe2x3jdud7ekr.parent(start_1).bind(function (parent) {
var selection = $_fmfln914cjdud7ft5.exact(start_1, range.startOffset, parent, $_68us7a149jdud7fsw.getEnd(parent));
var optRect = $_af4mx314ejdud7ftd.getFirstRect(range.startContainer.ownerDocument.defaultView, selection);
return optRect.map(collapsedRect).map($_1g2cevwsjdud7ejp.pure);
}).getOr([]);
}
};
var getRectangles = function (cWin) {
var sel = cWin.getSelection();
return sel !== undefined && sel.rangeCount > 0 ? getRectsFromRange(sel.getRangeAt(0)) : [];
};
var $_5lp8kt148jdud7fso = { getRectangles: getRectangles };
var autocompleteHack = function () {
return function (f) {
setTimeout(function () {
f();
}, 0);
};
};
var resume = function (cWin) {
cWin.focus();
var iBody = $_eobgtqxfjdud7elu.fromDom(cWin.document.body);
var inInput = $_25580rytjdud7ey7.active().exists(function (elem) {
return $_1g2cevwsjdud7ejp.contains([
'input',
'textarea'
], $_50qkdpxkjdud7em6.name(elem));
});
var transaction = inInput ? autocompleteHack() : $_9njj9iwjjdud7eix.apply;
transaction(function () {
$_25580rytjdud7ey7.active().each($_25580rytjdud7ey7.blur);
$_25580rytjdud7ey7.focus(iBody);
});
};
var $_5gl66x14rjdud7fuu = { resume: resume };
var EXTRA_SPACING = 50;
var data = 'data-' + $_5qzh4bzejdud7f0y.resolve('last-outer-height');
var setLastHeight = function (cBody, value) {
$_2vghk1xrjdud7ems.set(cBody, data, value);
};
var getLastHeight = function (cBody) {
return $_1bs4n9147jdud7fsm.safeParse(cBody, data);
};
var getBoundsFrom = function (rect) {
return {
top: $_9njj9iwjjdud7eix.constant(rect.top()),
bottom: $_9njj9iwjjdud7eix.constant(rect.top() + rect.height())
};
};
var getBounds$2 = function (cWin) {
var rects = $_5lp8kt148jdud7fso.getRectangles(cWin);
return rects.length > 0 ? Option.some(rects[0]).map(getBoundsFrom) : Option.none();
};
var findDelta = function (outerWindow, cBody) {
var last = getLastHeight(cBody);
var current = outerWindow.innerHeight;
return last > current ? Option.some(last - current) : Option.none();
};
var calculate = function (cWin, bounds, delta) {
var isOutside = bounds.top() > cWin.innerHeight || bounds.bottom() > cWin.innerHeight;
return isOutside ? Math.min(delta, bounds.bottom() - cWin.innerHeight + EXTRA_SPACING) : 0;
};
var setup$1 = function (outerWindow, cWin) {
var cBody = $_eobgtqxfjdud7elu.fromDom(cWin.document.body);
var toEditing = function () {
$_5gl66x14rjdud7fuu.resume(cWin);
};
var onResize = $_5x7hr513xjdud7fqz.bind($_eobgtqxfjdud7elu.fromDom(outerWindow), 'resize', function () {
findDelta(outerWindow, cBody).each(function (delta) {
getBounds$2(cWin).each(function (bounds) {
var cScrollBy = calculate(cWin, bounds, delta);
if (cScrollBy !== 0) {
cWin.scrollTo(cWin.pageXOffset, cWin.pageYOffset + cScrollBy);
}
});
});
setLastHeight(cBody, outerWindow.innerHeight);
});
setLastHeight(cBody, outerWindow.innerHeight);
var destroy = function () {
onResize.unbind();
};
return {
toEditing: toEditing,
destroy: destroy
};
};
var $_d23om146jdud7fsf = { setup: setup$1 };
var getBodyFromFrame = function (frame) {
return Option.some($_eobgtqxfjdud7elu.fromDom(frame.dom().contentWindow.document.body));
};
var getDocFromFrame = function (frame) {
return Option.some($_eobgtqxfjdud7elu.fromDom(frame.dom().contentWindow.document));
};
var getWinFromFrame = function (frame) {
return Option.from(frame.dom().contentWindow);
};
var getSelectionFromFrame = function (frame) {
var optWin = getWinFromFrame(frame);
return optWin.bind($_af4mx314ejdud7ftd.getExact);
};
var getFrame = function (editor) {
return editor.getFrame();
};
var getOrDerive = function (name, f) {
return function (editor) {
var g = editor[name].getOrThunk(function () {
var frame = getFrame(editor);
return function () {
return f(frame);
};
});
return g();
};
};
var getOrListen = function (editor, doc, name, type) {
return editor[name].getOrThunk(function () {
return function (handler) {
return $_5x7hr513xjdud7fqz.bind(doc, type, handler);
};
});
};
var toRect$2 = function (rect) {
return {
left: $_9njj9iwjjdud7eix.constant(rect.left),
top: $_9njj9iwjjdud7eix.constant(rect.top),
right: $_9njj9iwjjdud7eix.constant(rect.right),
bottom: $_9njj9iwjjdud7eix.constant(rect.bottom),
width: $_9njj9iwjjdud7eix.constant(rect.width),
height: $_9njj9iwjjdud7eix.constant(rect.height)
};
};
var getActiveApi = function (editor) {
var frame = getFrame(editor);
var tryFallbackBox = function (win) {
var isCollapsed = function (sel) {
return $_f1y1rtx9jdud7el7.eq(sel.start(), sel.finish()) && sel.soffset() === sel.foffset();
};
var toStartRect = function (sel) {
var rect = sel.start().dom().getBoundingClientRect();
return rect.width > 0 || rect.height > 0 ? Option.some(rect).map(toRect$2) : Option.none();
};
return $_af4mx314ejdud7ftd.getExact(win).filter(isCollapsed).bind(toStartRect);
};
return getBodyFromFrame(frame).bind(function (body) {
return getDocFromFrame(frame).bind(function (doc) {
return getWinFromFrame(frame).map(function (win) {
var html = $_eobgtqxfjdud7elu.fromDom(doc.dom().documentElement);
var getCursorBox = editor.getCursorBox.getOrThunk(function () {
return function () {
return $_af4mx314ejdud7ftd.get(win).bind(function (sel) {
return $_af4mx314ejdud7ftd.getFirstRect(win, sel).orThunk(function () {
return tryFallbackBox(win);
});
});
};
});
var setSelection = editor.setSelection.getOrThunk(function () {
return function (start, soffset, finish, foffset) {
$_af4mx314ejdud7ftd.setExact(win, start, soffset, finish, foffset);
};
});
var clearSelection = editor.clearSelection.getOrThunk(function () {
return function () {
$_af4mx314ejdud7ftd.clear(win);
};
});
return {
body: $_9njj9iwjjdud7eix.constant(body),
doc: $_9njj9iwjjdud7eix.constant(doc),
win: $_9njj9iwjjdud7eix.constant(win),
html: $_9njj9iwjjdud7eix.constant(html),
getSelection: $_9njj9iwjjdud7eix.curry(getSelectionFromFrame, frame),
setSelection: setSelection,
clearSelection: clearSelection,
frame: $_9njj9iwjjdud7eix.constant(frame),
onKeyup: getOrListen(editor, doc, 'onKeyup', 'keyup'),
onNodeChanged: getOrListen(editor, doc, 'onNodeChanged', 'selectionchange'),
onDomChanged: editor.onDomChanged,
onScrollToCursor: editor.onScrollToCursor,
onScrollToElement: editor.onScrollToElement,
onToReading: editor.onToReading,
onToEditing: editor.onToEditing,
onToolbarScrollStart: editor.onToolbarScrollStart,
onTouchContent: editor.onTouchContent,
onTapContent: editor.onTapContent,
onTouchToolstrip: editor.onTouchToolstrip,
getCursorBox: getCursorBox
};
});
});
});
};
var $_8faw2r14sjdud7fv0 = {
getBody: getOrDerive('getBody', getBodyFromFrame),
getDoc: getOrDerive('getDoc', getDocFromFrame),
getWin: getOrDerive('getWin', getWinFromFrame),
getSelection: getOrDerive('getSelection', getSelectionFromFrame),
getFrame: getFrame,
getActiveApi: getActiveApi
};
var attr = 'data-ephox-mobile-fullscreen-style';
var siblingStyles = 'display:none!important;';
var ancestorPosition = 'position:absolute!important;';
var ancestorStyles = 'top:0!important;left:0!important;margin:0' + '!important;padding:0!important;width:100%!important;';
var bgFallback = 'background-color:rgb(255,255,255)!important;';
var isAndroid = $_chh2cvwkjdud7ej0.detect().os.isAndroid();
var matchColor = function (editorBody) {
var color = $_btgbcy103jdud7f3t.get(editorBody, 'background-color');
return color !== undefined && color !== '' ? 'background-color:' + color + '!important' : bgFallback;
};
var clobberStyles = function (container, editorBody) {
var gatherSibilings = function (element) {
var siblings = $_df6s98zvjdud7f39.siblings(element, '*');
return siblings;
};
var clobber = function (clobberStyle) {
return function (element) {
var styles = $_2vghk1xrjdud7ems.get(element, 'style');
var backup = styles === undefined ? 'no-styles' : styles.trim();
if (backup === clobberStyle) {
return;
} else {
$_2vghk1xrjdud7ems.set(element, attr, backup);
$_2vghk1xrjdud7ems.set(element, 'style', clobberStyle);
}
};
};
var ancestors = $_df6s98zvjdud7f39.ancestors(container, '*');
var siblings = $_1g2cevwsjdud7ejp.bind(ancestors, gatherSibilings);
var bgColor = matchColor(editorBody);
$_1g2cevwsjdud7ejp.each(siblings, clobber(siblingStyles));
$_1g2cevwsjdud7ejp.each(ancestors, clobber(ancestorPosition + ancestorStyles + bgColor));
var containerStyles = isAndroid === true ? '' : ancestorPosition;
clobber(containerStyles + ancestorStyles + bgColor)(container);
};
var restoreStyles = function () {
var clobberedEls = $_df6s98zvjdud7f39.all('[' + attr + ']');
$_1g2cevwsjdud7ejp.each(clobberedEls, function (element) {
var restore = $_2vghk1xrjdud7ems.get(element, attr);
if (restore !== 'no-styles') {
$_2vghk1xrjdud7ems.set(element, 'style', restore);
} else {
$_2vghk1xrjdud7ems.remove(element, 'style');
}
$_2vghk1xrjdud7ems.remove(element, attr);
});
};
var $_fjm65f14tjdud7fv9 = {
clobberStyles: clobberStyles,
restoreStyles: restoreStyles
};
var tag = function () {
var head = $_a3quyizxjdud7f3e.first('head').getOrDie();
var nu = function () {
var meta = $_eobgtqxfjdud7elu.fromTag('meta');
$_2vghk1xrjdud7ems.set(meta, 'name', 'viewport');
$_ftkbb5x2jdud7ekp.append(head, meta);
return meta;
};
var element = $_a3quyizxjdud7f3e.first('meta[name="viewport"]').getOrThunk(nu);
var backup = $_2vghk1xrjdud7ems.get(element, 'content');
var maximize = function () {
$_2vghk1xrjdud7ems.set(element, 'content', 'width=device-width, initial-scale=1.0, user-scalable=no, maximum-scale=1.0');
};
var restore = function () {
if (backup !== undefined && backup !== null && backup.length > 0) {
$_2vghk1xrjdud7ems.set(element, 'content', backup);
} else {
$_2vghk1xrjdud7ems.set(element, 'content', 'user-scalable=yes');
}
};
return {
maximize: maximize,
restore: restore
};
};
var $_9dstax14ujdud7fvm = { tag: tag };
var create$5 = function (platform, mask) {
var meta = $_9dstax14ujdud7fvm.tag();
var androidApi = $_9fhyae12ojdud7fij.api();
var androidEvents = $_9fhyae12ojdud7fij.api();
var enter = function () {
mask.hide();
$_1x3ogvynjdud7exn.add(platform.container, $_5qzh4bzejdud7f0y.resolve('fullscreen-maximized'));
$_1x3ogvynjdud7exn.add(platform.container, $_5qzh4bzejdud7f0y.resolve('android-maximized'));
meta.maximize();
$_1x3ogvynjdud7exn.add(platform.body, $_5qzh4bzejdud7f0y.resolve('android-scroll-reload'));
androidApi.set($_d23om146jdud7fsf.setup(platform.win, $_8faw2r14sjdud7fv0.getWin(platform.editor).getOrDie('no')));
$_8faw2r14sjdud7fv0.getActiveApi(platform.editor).each(function (editorApi) {
$_fjm65f14tjdud7fv9.clobberStyles(platform.container, editorApi.body());
androidEvents.set($_bywc5s142jdud7frq.initEvents(editorApi, platform.toolstrip, platform.alloy));
});
};
var exit = function () {
meta.restore();
mask.show();
$_1x3ogvynjdud7exn.remove(platform.container, $_5qzh4bzejdud7f0y.resolve('fullscreen-maximized'));
$_1x3ogvynjdud7exn.remove(platform.container, $_5qzh4bzejdud7f0y.resolve('android-maximized'));
$_fjm65f14tjdud7fv9.restoreStyles();
$_1x3ogvynjdud7exn.remove(platform.body, $_5qzh4bzejdud7f0y.resolve('android-scroll-reload'));
androidEvents.clear();
androidApi.clear();
};
return {
enter: enter,
exit: exit
};
};
var $_zs0oa141jdud7frl = { create: create$5 };
var adaptable = function (fn, rate) {
var timer = null;
var args = null;
var cancel = function () {
if (timer !== null) {
clearTimeout(timer);
timer = null;
args = null;
}
};
var throttle = function () {
args = arguments;
if (timer === null) {
timer = setTimeout(function () {
fn.apply(null, args);
timer = null;
args = null;
}, rate);
}
};
return {
cancel: cancel,
throttle: throttle
};
};
var first$4 = function (fn, rate) {
var timer = null;
var cancel = function () {
if (timer !== null) {
clearTimeout(timer);
timer = null;
}
};
var throttle = function () {
var args = arguments;
if (timer === null) {
timer = setTimeout(function () {
fn.apply(null, args);
timer = null;
args = null;
}, rate);
}
};
return {
cancel: cancel,
throttle: throttle
};
};
var last$3 = function (fn, rate) {
var timer = null;
var cancel = function () {
if (timer !== null) {
clearTimeout(timer);
timer = null;
}
};
var throttle = function () {
var args = arguments;
if (timer !== null)
clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(null, args);
timer = null;
args = null;
}, rate);
};
return {
cancel: cancel,
throttle: throttle
};
};
var $_dfio3v14wjdud7fvy = {
adaptable: adaptable,
first: first$4,
last: last$3
};
var sketch$10 = function (onView, translate) {
var memIcon = $_81ial811rjdud7fdw.record(Container.sketch({
dom: $_5oi2c7113jdud7fab.dom('<div aria-hidden="true" class="${prefix}-mask-tap-icon"></div>'),
containerBehaviours: $_ax1gfoy2jdud7eu7.derive([Toggling.config({
toggleClass: $_5qzh4bzejdud7f0y.resolve('mask-tap-icon-selected'),
toggleOnExecute: false
})])
}));
var onViewThrottle = $_dfio3v14wjdud7fvy.first(onView, 200);
return Container.sketch({
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-disabled-mask"></div>'),
components: [Container.sketch({
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-content-container"></div>'),
components: [Button.sketch({
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-content-tap-section"></div>'),
components: [memIcon.asSpec()],
action: function (button) {
onViewThrottle.throttle();
},
buttonBehaviours: $_ax1gfoy2jdud7eu7.derive([Toggling.config({ toggleClass: $_5qzh4bzejdud7f0y.resolve('mask-tap-icon-selected') })])
})]
})]
});
};
var $_ddqihl14vjdud7fvr = { sketch: sketch$10 };
var MobileSchema = $_13hkebyejdud7ewm.objOf([
$_euqmtby7jdud7ev7.strictObjOf('editor', [
$_euqmtby7jdud7ev7.strict('getFrame'),
$_euqmtby7jdud7ev7.option('getBody'),
$_euqmtby7jdud7ev7.option('getDoc'),
$_euqmtby7jdud7ev7.option('getWin'),
$_euqmtby7jdud7ev7.option('getSelection'),
$_euqmtby7jdud7ev7.option('setSelection'),
$_euqmtby7jdud7ev7.option('clearSelection'),
$_euqmtby7jdud7ev7.option('cursorSaver'),
$_euqmtby7jdud7ev7.option('onKeyup'),
$_euqmtby7jdud7ev7.option('onNodeChanged'),
$_euqmtby7jdud7ev7.option('getCursorBox'),
$_euqmtby7jdud7ev7.strict('onDomChanged'),
$_euqmtby7jdud7ev7.defaulted('onTouchContent', $_9njj9iwjjdud7eix.noop),
$_euqmtby7jdud7ev7.defaulted('onTapContent', $_9njj9iwjjdud7eix.noop),
$_euqmtby7jdud7ev7.defaulted('onTouchToolstrip', $_9njj9iwjjdud7eix.noop),
$_euqmtby7jdud7ev7.defaulted('onScrollToCursor', $_9njj9iwjjdud7eix.constant({ unbind: $_9njj9iwjjdud7eix.noop })),
$_euqmtby7jdud7ev7.defaulted('onScrollToElement', $_9njj9iwjjdud7eix.constant({ unbind: $_9njj9iwjjdud7eix.noop })),
$_euqmtby7jdud7ev7.defaulted('onToEditing', $_9njj9iwjjdud7eix.constant({ unbind: $_9njj9iwjjdud7eix.noop })),
$_euqmtby7jdud7ev7.defaulted('onToReading', $_9njj9iwjjdud7eix.constant({ unbind: $_9njj9iwjjdud7eix.noop })),
$_euqmtby7jdud7ev7.defaulted('onToolbarScrollStart', $_9njj9iwjjdud7eix.identity)
]),
$_euqmtby7jdud7ev7.strict('socket'),
$_euqmtby7jdud7ev7.strict('toolstrip'),
$_euqmtby7jdud7ev7.strict('dropup'),
$_euqmtby7jdud7ev7.strict('toolbar'),
$_euqmtby7jdud7ev7.strict('container'),
$_euqmtby7jdud7ev7.strict('alloy'),
$_euqmtby7jdud7ev7.state('win', function (spec) {
return $_dekwe2x3jdud7ekr.owner(spec.socket).dom().defaultView;
}),
$_euqmtby7jdud7ev7.state('body', function (spec) {
return $_eobgtqxfjdud7elu.fromDom(spec.socket.dom().ownerDocument.body);
}),
$_euqmtby7jdud7ev7.defaulted('translate', $_9njj9iwjjdud7eix.identity),
$_euqmtby7jdud7ev7.defaulted('setReadOnly', $_9njj9iwjjdud7eix.noop)
]);
var produce = function (raw) {
var mobile = $_13hkebyejdud7ewm.asRawOrDie('Getting AndroidWebapp schema', MobileSchema, raw);
$_btgbcy103jdud7f3t.set(mobile.toolstrip, 'width', '100%');
var onTap = function () {
mobile.setReadOnly(true);
mode.enter();
};
var mask = $_ap2ej712tjdud7fjl.build($_ddqihl14vjdud7fvr.sketch(onTap, mobile.translate));
mobile.alloy.add(mask);
var maskApi = {
show: function () {
mobile.alloy.add(mask);
},
hide: function () {
mobile.alloy.remove(mask);
}
};
$_ftkbb5x2jdud7ekp.append(mobile.container, mask.element());
var mode = $_zs0oa141jdud7frl.create(mobile, maskApi);
return {
setReadOnly: mobile.setReadOnly,
refreshStructure: $_9njj9iwjjdud7eix.noop,
enter: mode.enter,
exit: mode.exit,
destroy: $_9njj9iwjjdud7eix.noop
};
};
var $_bip6sv140jdud7fra = { produce: produce };
var schema$14 = [
$_euqmtby7jdud7ev7.defaulted('shell', true),
$_c7jpu210ojdud7f7a.field('toolbarBehaviours', [Replacing])
];
var enhanceGroups = function (detail) {
return { behaviours: $_ax1gfoy2jdud7eu7.derive([Replacing.config({})]) };
};
var partTypes$1 = [$_7938qf10vjdud7f8n.optional({
name: 'groups',
overrides: enhanceGroups
})];
var $_u7c81150jdud7fwn = {
name: $_9njj9iwjjdud7eix.constant('Toolbar'),
schema: $_9njj9iwjjdud7eix.constant(schema$14),
parts: $_9njj9iwjjdud7eix.constant(partTypes$1)
};
var factory$4 = function (detail, components, spec, _externals) {
var setGroups = function (toolbar, groups) {
getGroupContainer(toolbar).fold(function () {
console.error('Toolbar was defined to not be a shell, but no groups container was specified in components');
throw new Error('Toolbar was defined to not be a shell, but no groups container was specified in components');
}, function (container) {
Replacing.set(container, groups);
});
};
var getGroupContainer = function (component) {
return detail.shell() ? Option.some(component) : $_436kgb10tjdud7f7y.getPart(component, detail, 'groups');
};
var extra = detail.shell() ? {
behaviours: [Replacing.config({})],
components: []
} : {
behaviours: [],
components: components
};
return {
uid: detail.uid(),
dom: detail.dom(),
components: extra.components,
behaviours: $_73qnwowyjdud7ek9.deepMerge($_ax1gfoy2jdud7eu7.derive(extra.behaviours), $_c7jpu210ojdud7f7a.get(detail.toolbarBehaviours())),
apis: { setGroups: setGroups },
domModification: { attributes: { role: 'group' } }
};
};
var Toolbar = $_3inyq310pjdud7f7f.composite({
name: 'Toolbar',
configFields: $_u7c81150jdud7fwn.schema(),
partFields: $_u7c81150jdud7fwn.parts(),
factory: factory$4,
apis: {
setGroups: function (apis, toolbar, groups) {
apis.setGroups(toolbar, groups);
}
}
});
var schema$15 = [
$_euqmtby7jdud7ev7.strict('items'),
$_etkinez6jdud7ezi.markers(['itemClass']),
$_c7jpu210ojdud7f7a.field('tgroupBehaviours', [Keying])
];
var partTypes$2 = [$_7938qf10vjdud7f8n.group({
name: 'items',
unit: 'item',
overrides: function (detail) {
return { domModification: { classes: [detail.markers().itemClass()] } };
}
})];
var $_3to63152jdud7fwu = {
name: $_9njj9iwjjdud7eix.constant('ToolbarGroup'),
schema: $_9njj9iwjjdud7eix.constant(schema$15),
parts: $_9njj9iwjjdud7eix.constant(partTypes$2)
};
var factory$5 = function (detail, components, spec, _externals) {
return $_73qnwowyjdud7ek9.deepMerge({ dom: { attributes: { role: 'toolbar' } } }, {
uid: detail.uid(),
dom: detail.dom(),
components: components,
behaviours: $_73qnwowyjdud7ek9.deepMerge($_ax1gfoy2jdud7eu7.derive([Keying.config({
mode: 'flow',
selector: '.' + detail.markers().itemClass()
})]), $_c7jpu210ojdud7f7a.get(detail.tgroupBehaviours())),
'debug.sketcher': spec['debug.sketcher']
});
};
var ToolbarGroup = $_3inyq310pjdud7f7f.composite({
name: 'ToolbarGroup',
configFields: $_3to63152jdud7fwu.schema(),
partFields: $_3to63152jdud7fwu.parts(),
factory: factory$5
});
var dataHorizontal = 'data-' + $_5qzh4bzejdud7f0y.resolve('horizontal-scroll');
var canScrollVertically = function (container) {
container.dom().scrollTop = 1;
var result = container.dom().scrollTop !== 0;
container.dom().scrollTop = 0;
return result;
};
var canScrollHorizontally = function (container) {
container.dom().scrollLeft = 1;
var result = container.dom().scrollLeft !== 0;
container.dom().scrollLeft = 0;
return result;
};
var hasVerticalScroll = function (container) {
return container.dom().scrollTop > 0 || canScrollVertically(container);
};
var hasHorizontalScroll = function (container) {
return container.dom().scrollLeft > 0 || canScrollHorizontally(container);
};
var markAsHorizontal = function (container) {
$_2vghk1xrjdud7ems.set(container, dataHorizontal, 'true');
};
var hasScroll = function (container) {
return $_2vghk1xrjdud7ems.get(container, dataHorizontal) === 'true' ? hasHorizontalScroll : hasVerticalScroll;
};
var exclusive = function (scope, selector) {
return $_5x7hr513xjdud7fqz.bind(scope, 'touchmove', function (event) {
$_a3quyizxjdud7f3e.closest(event.target(), selector).filter(hasScroll).fold(function () {
event.raw().preventDefault();
}, $_9njj9iwjjdud7eix.noop);
});
};
var $_dvdycr153jdud7fwy = {
exclusive: exclusive,
markAsHorizontal: markAsHorizontal
};
function ScrollingToolbar () {
var makeGroup = function (gSpec) {
var scrollClass = gSpec.scrollable === true ? '${prefix}-toolbar-scrollable-group' : '';
return {
dom: $_5oi2c7113jdud7fab.dom('<div aria-label="' + gSpec.label + '" class="${prefix}-toolbar-group ' + scrollClass + '"></div>'),
tgroupBehaviours: $_ax1gfoy2jdud7eu7.derive([$_6jfkt3126jdud7ffy.config('adhoc-scrollable-toolbar', gSpec.scrollable === true ? [$_5xcuyiy4jdud7eur.runOnInit(function (component, simulatedEvent) {
$_btgbcy103jdud7f3t.set(component.element(), 'overflow-x', 'auto');
$_dvdycr153jdud7fwy.markAsHorizontal(component.element());
$_bhtyzh13ujdud7fqk.register(component.element());
})] : [])]),
components: [Container.sketch({ components: [ToolbarGroup.parts().items({})] })],
markers: { itemClass: $_5qzh4bzejdud7f0y.resolve('toolbar-group-item') },
items: gSpec.items
};
};
var toolbar = $_ap2ej712tjdud7fjl.build(Toolbar.sketch({
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-toolbar"></div>'),
components: [Toolbar.parts().groups({})],
toolbarBehaviours: $_ax1gfoy2jdud7eu7.derive([
Toggling.config({
toggleClass: $_5qzh4bzejdud7f0y.resolve('context-toolbar'),
toggleOnExecute: false,
aria: { mode: 'none' }
}),
Keying.config({ mode: 'cyclic' })
]),
shell: true
}));
var wrapper = $_ap2ej712tjdud7fjl.build(Container.sketch({
dom: { classes: [$_5qzh4bzejdud7f0y.resolve('toolstrip')] },
components: [$_ap2ej712tjdud7fjl.premade(toolbar)],
containerBehaviours: $_ax1gfoy2jdud7eu7.derive([Toggling.config({
toggleClass: $_5qzh4bzejdud7f0y.resolve('android-selection-context-toolbar'),
toggleOnExecute: false
})])
}));
var resetGroups = function () {
Toolbar.setGroups(toolbar, initGroups.get());
Toggling.off(toolbar);
};
var initGroups = Cell([]);
var setGroups = function (gs) {
initGroups.set(gs);
resetGroups();
};
var createGroups = function (gs) {
return $_1g2cevwsjdud7ejp.map(gs, $_9njj9iwjjdud7eix.compose(ToolbarGroup.sketch, makeGroup));
};
var refresh = function () {
Toolbar.refresh(toolbar);
};
var setContextToolbar = function (gs) {
Toggling.on(toolbar);
Toolbar.setGroups(toolbar, gs);
};
var restoreToolbar = function () {
if (Toggling.isOn(toolbar)) {
resetGroups();
}
};
var focus = function () {
Keying.focusIn(toolbar);
};
return {
wrapper: $_9njj9iwjjdud7eix.constant(wrapper),
toolbar: $_9njj9iwjjdud7eix.constant(toolbar),
createGroups: createGroups,
setGroups: setGroups,
setContextToolbar: setContextToolbar,
restoreToolbar: restoreToolbar,
refresh: refresh,
focus: focus
};
}
var makeEditSwitch = function (webapp) {
return $_ap2ej712tjdud7fjl.build(Button.sketch({
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-mask-edit-icon ${prefix}-icon"></div>'),
action: function () {
webapp.run(function (w) {
w.setReadOnly(false);
});
}
}));
};
var makeSocket = function () {
return $_ap2ej712tjdud7fjl.build(Container.sketch({
dom: $_5oi2c7113jdud7fab.dom('<div class="${prefix}-editor-socket"></div>'),
components: [],
containerBehaviours: $_ax1gfoy2jdud7eu7.derive([Replacing.config({})])
}));
};
var showEdit = function (socket, switchToEdit) {
Replacing.append(socket, $_ap2ej712tjdud7fjl.premade(switchToEdit));
};
var hideEdit = function (socket, switchToEdit) {
Replacing.remove(socket, switchToEdit);
};
var updateMode = function (socket, switchToEdit, readOnly, root) {
var swap = readOnly === true ? Swapping.toAlpha : Swapping.toOmega;
swap(root);
var f = readOnly ? showEdit : hideEdit;
f(socket, switchToEdit);
};
var $_enp5ds154jdud7fxb = {
makeEditSwitch: makeEditSwitch,
makeSocket: makeSocket,
updateMode: updateMode
};
var getAnimationRoot = function (component, slideConfig) {
return slideConfig.getAnimationRoot().fold(function () {
return component.element();
}, function (get) {
return get(component);
});
};
var getDimensionProperty = function (slideConfig) {
return slideConfig.dimension().property();
};
var getDimension = function (slideConfig, elem) {
return slideConfig.dimension().getDimension()(elem);
};
var disableTransitions = function (component, slideConfig) {
var root = getAnimationRoot(component, slideConfig);
$_af5dkc137jdud7fms.remove(root, [
slideConfig.shrinkingClass(),
slideConfig.growingClass()
]);
};
var setShrunk = function (component, slideConfig) {
$_1x3ogvynjdud7exn.remove(component.element(), slideConfig.openClass());
$_1x3ogvynjdud7exn.add(component.element(), slideConfig.closedClass());
$_btgbcy103jdud7f3t.set(component.element(), getDimensionProperty(slideConfig), '0px');
$_btgbcy103jdud7f3t.reflow(component.element());
};
var measureTargetSize = function (component, slideConfig) {
setGrown(component, slideConfig);
var expanded = getDimension(slideConfig, component.element());
setShrunk(component, slideConfig);
return expanded;
};
var setGrown = function (component, slideConfig) {
$_1x3ogvynjdud7exn.remove(component.element(), slideConfig.closedClass());
$_1x3ogvynjdud7exn.add(component.element(), slideConfig.openClass());
$_btgbcy103jdud7f3t.remove(component.element(), getDimensionProperty(slideConfig));
};
var doImmediateShrink = function (component, slideConfig, slideState) {
slideState.setCollapsed();
$_btgbcy103jdud7f3t.set(component.element(), getDimensionProperty(slideConfig), getDimension(slideConfig, component.element()));
$_btgbcy103jdud7f3t.reflow(component.element());
disableTransitions(component, slideConfig);
setShrunk(component, slideConfig);
slideConfig.onStartShrink()(component);
slideConfig.onShrunk()(component);
};
var doStartShrink = function (component, slideConfig, slideState) {
slideState.setCollapsed();
$_btgbcy103jdud7f3t.set(component.element(), getDimensionProperty(slideConfig), getDimension(slideConfig, component.element()));
$_btgbcy103jdud7f3t.reflow(component.element());
var root = getAnimationRoot(component, slideConfig);
$_1x3ogvynjdud7exn.add(root, slideConfig.shrinkingClass());
setShrunk(component, slideConfig);
slideConfig.onStartShrink()(component);
};
var doStartGrow = function (component, slideConfig, slideState) {
var fullSize = measureTargetSize(component, slideConfig);
var root = getAnimationRoot(component, slideConfig);
$_1x3ogvynjdud7exn.add(root, slideConfig.growingClass());
setGrown(component, slideConfig);
$_btgbcy103jdud7f3t.set(component.element(), getDimensionProperty(slideConfig), fullSize);
slideState.setExpanded();
slideConfig.onStartGrow()(component);
};
var grow = function (component, slideConfig, slideState) {
if (!slideState.isExpanded())
doStartGrow(component, slideConfig, slideState);
};
var shrink = function (component, slideConfig, slideState) {
if (slideState.isExpanded())
doStartShrink(component, slideConfig, slideState);
};
var immediateShrink = function (component, slideConfig, slideState) {
if (slideState.isExpanded())
doImmediateShrink(component, slideConfig, slideState);
};
var hasGrown = function (component, slideConfig, slideState) {
return slideState.isExpanded();
};
var hasShrunk = function (component, slideConfig, slideState) {
return slideState.isCollapsed();
};
var isGrowing = function (component, slideConfig, slideState) {
var root = getAnimationRoot(component, slideConfig);
return $_1x3ogvynjdud7exn.has(root, slideConfig.growingClass()) === true;
};
var isShrinking = function (component, slideConfig, slideState) {
var root = getAnimationRoot(component, slideConfig);
return $_1x3ogvynjdud7exn.has(root, slideConfig.shrinkingClass()) === true;
};
var isTransitioning = function (component, slideConfig, slideState) {
return isGrowing(component, slideConfig, slideState) === true || isShrinking(component, slideConfig, slideState) === true;
};
var toggleGrow = function (component, slideConfig, slideState) {
var f = slideState.isExpanded() ? doStartShrink : doStartGrow;
f(component, slideConfig, slideState);
};
var $_47f52a158jdud7fxy = {
grow: grow,
shrink: shrink,
immediateShrink: immediateShrink,
hasGrown: hasGrown,
hasShrunk: hasShrunk,
isGrowing: isGrowing,
isShrinking: isShrinking,
isTransitioning: isTransitioning,
toggleGrow: toggleGrow,
disableTransitions: disableTransitions
};
var exhibit$5 = function (base, slideConfig) {
var expanded = slideConfig.expanded();
return expanded ? $_biiw3tyhjdud7ewz.nu({
classes: [slideConfig.openClass()],
styles: {}
}) : $_biiw3tyhjdud7ewz.nu({
classes: [slideConfig.closedClass()],
styles: $_ettibkxsjdud7emz.wrap(slideConfig.dimension().property(), '0px')
});
};
var events$9 = function (slideConfig, slideState) {
return $_5xcuyiy4jdud7eur.derive([$_5xcuyiy4jdud7eur.run($_brmbwvwijdud7eiu.transitionend(), function (component, simulatedEvent) {
var raw = simulatedEvent.event().raw();
if (raw.propertyName === slideConfig.dimension().property()) {
$_47f52a158jdud7fxy.disableTransitions(component, slideConfig, slideState);
if (slideState.isExpanded())
$_btgbcy103jdud7f3t.remove(component.element(), slideConfig.dimension().property());
var notify = slideState.isExpanded() ? slideConfig.onGrown() : slideConfig.onShrunk();
notify(component, simulatedEvent);
}
})]);
};
var $_ao9shj157jdud7fxr = {
exhibit: exhibit$5,
events: events$9
};
var SlidingSchema = [
$_euqmtby7jdud7ev7.strict('closedClass'),
$_euqmtby7jdud7ev7.strict('openClass'),
$_euqmtby7jdud7ev7.strict('shrinkingClass'),
$_euqmtby7jdud7ev7.strict('growingClass'),
$_euqmtby7jdud7ev7.option('getAnimationRoot'),
$_etkinez6jdud7ezi.onHandler('onShrunk'),
$_etkinez6jdud7ezi.onHandler('onStartShrink'),
$_etkinez6jdud7ezi.onHandler('onGrown'),
$_etkinez6jdud7ezi.onHandler('onStartGrow'),
$_euqmtby7jdud7ev7.defaulted('expanded', false),
$_euqmtby7jdud7ev7.strictOf('dimension', $_13hkebyejdud7ewm.choose('property', {
width: [
$_etkinez6jdud7ezi.output('property', 'width'),
$_etkinez6jdud7ezi.output('getDimension', function (elem) {
return $_6chz3611kjdud7fcw.get(elem) + 'px';
})
],
height: [
$_etkinez6jdud7ezi.output('property', 'height'),
$_etkinez6jdud7ezi.output('getDimension', function (elem) {
return $_q9861102jdud7f3r.get(elem) + 'px';
})
]
}))
];
var init$4 = function (spec) {
var state = Cell(spec.expanded());
var readState = function () {
return 'expanded: ' + state.get();
};
return BehaviourState({
isExpanded: function () {
return state.get() === true;
},
isCollapsed: function () {
return state.get() === false;
},
setCollapsed: $_9njj9iwjjdud7eix.curry(state.set, false),
setExpanded: $_9njj9iwjjdud7eix.curry(state.set, true),
readState: readState
});
};
var $_f26cpi15ajdud7fyb = { init: init$4 };
var Sliding = $_ax1gfoy2jdud7eu7.create({
fields: SlidingSchema,
name: 'sliding',
active: $_ao9shj157jdud7fxr,
apis: $_47f52a158jdud7fxy,
state: $_f26cpi15ajdud7fyb
});
var build$2 = function (refresh, scrollIntoView) {
var dropup = $_ap2ej712tjdud7fjl.build(Container.sketch({
dom: {
tag: 'div',
classes: $_5qzh4bzejdud7f0y.resolve('dropup')
},
components: [],
containerBehaviours: $_ax1gfoy2jdud7eu7.derive([
Replacing.config({}),
Sliding.config({
closedClass: $_5qzh4bzejdud7f0y.resolve('dropup-closed'),
openClass: $_5qzh4bzejdud7f0y.resolve('dropup-open'),
shrinkingClass: $_5qzh4bzejdud7f0y.resolve('dropup-shrinking'),
growingClass: $_5qzh4bzejdud7f0y.resolve('dropup-growing'),
dimension: { property: 'height' },
onShrunk: function (component) {
refresh();
scrollIntoView();
Replacing.set(component, []);
},
onGrown: function (component) {
refresh();
scrollIntoView();
}
}),
$_nw25bzdjdud7f0v.orientation(function (component, data) {
disappear($_9njj9iwjjdud7eix.noop);
})
])
}));
var appear = function (menu, update, component) {
if (Sliding.hasShrunk(dropup) === true && Sliding.isTransitioning(dropup) === false) {
window.requestAnimationFrame(function () {
update(component);
Replacing.set(dropup, [menu()]);
Sliding.grow(dropup);
});
}
};
var disappear = function (onReadyToShrink) {
window.requestAnimationFrame(function () {
onReadyToShrink();
Sliding.shrink(dropup);
});
};
return {
appear: appear,
disappear: disappear,
component: $_9njj9iwjjdud7eix.constant(dropup),
element: dropup.element
};
};
var $_9ihizd155jdud7fxi = { build: build$2 };
var isDangerous = function (event) {
return event.raw().which === $_8y8vdkzpjdud7f2d.BACKSPACE()[0] && !$_1g2cevwsjdud7ejp.contains([
'input',
'textarea'
], $_50qkdpxkjdud7em6.name(event.target()));
};
var isFirefox = $_chh2cvwkjdud7ej0.detect().browser.isFirefox();
var settingsSchema = $_13hkebyejdud7ewm.objOfOnly([
$_euqmtby7jdud7ev7.strictFunction('triggerEvent'),
$_euqmtby7jdud7ev7.strictFunction('broadcastEvent'),
$_euqmtby7jdud7ev7.defaulted('stopBackspace', true)
]);
var bindFocus = function (container, handler) {
if (isFirefox) {
return $_5x7hr513xjdud7fqz.capture(container, 'focus', handler);
} else {
return $_5x7hr513xjdud7fqz.bind(container, 'focusin', handler);
}
};
var bindBlur = function (container, handler) {
if (isFirefox) {
return $_5x7hr513xjdud7fqz.capture(container, 'blur', handler);
} else {
return $_5x7hr513xjdud7fqz.bind(container, 'focusout', handler);
}
};
var setup$2 = function (container, rawSettings) {
var settings = $_13hkebyejdud7ewm.asRawOrDie('Getting GUI events settings', settingsSchema, rawSettings);
var pointerEvents = $_chh2cvwkjdud7ej0.detect().deviceType.isTouch() ? [
'touchstart',
'touchmove',
'touchend',
'gesturestart'
] : [
'mousedown',
'mouseup',
'mouseover',
'mousemove',
'mouseout',
'click'
];
var tapEvent = $_civf8z144jdud7fs6.monitor(settings);
var simpleEvents = $_1g2cevwsjdud7ejp.map(pointerEvents.concat([
'selectstart',
'input',
'contextmenu',
'change',
'transitionend',
'dragstart',
'dragover',
'drop'
]), function (type) {
return $_5x7hr513xjdud7fqz.bind(container, type, function (event) {
tapEvent.fireIfReady(event, type).each(function (tapStopped) {
if (tapStopped)
event.kill();
});
var stopped = settings.triggerEvent(type, event);
if (stopped)
event.kill();
});
});
var onKeydown = $_5x7hr513xjdud7fqz.bind(container, 'keydown', function (event) {
var stopped = settings.triggerEvent('keydown', event);
if (stopped)
event.kill();
else if (settings.stopBackspace === true && isDangerous(event)) {
event.prevent();
}
});
var onFocusIn = bindFocus(container, function (event) {
var stopped = settings.triggerEvent('focusin', event);
if (stopped)
event.kill();
});
var onFocusOut = bindBlur(container, function (event) {
var stopped = settings.triggerEvent('focusout', event);
if (stopped)
event.kill();
setTimeout(function () {
settings.triggerEvent($_801kkqwhjdud7eiq.postBlur(), event);
}, 0);
});
var defaultView = $_dekwe2x3jdud7ekr.defaultView(container);
var onWindowScroll = $_5x7hr513xjdud7fqz.bind(defaultView, 'scroll', function (event) {
var stopped = settings.broadcastEvent($_801kkqwhjdud7eiq.windowScroll(), event);
if (stopped)
event.kill();
});
var unbind = function () {
$_1g2cevwsjdud7ejp.each(simpleEvents, function (e) {
e.unbind();
});
onKeydown.unbind();
onFocusIn.unbind();
onFocusOut.unbind();
onWindowScroll.unbind();
};
return { unbind: unbind };
};
var $_kt4rz15djdud7fz0 = { setup: setup$2 };
var derive$3 = function (rawEvent, rawTarget) {
var source = $_ettibkxsjdud7emz.readOptFrom(rawEvent, 'target').map(function (getTarget) {
return getTarget();
}).getOr(rawTarget);
return Cell(source);
};
var $_ervjm915fjdud7fzm = { derive: derive$3 };
var fromSource = function (event, source) {
var stopper = Cell(false);
var cutter = Cell(false);
var stop = function () {
stopper.set(true);
};
var cut = function () {
cutter.set(true);
};
return {
stop: stop,
cut: cut,
isStopped: stopper.get,
isCut: cutter.get,
event: $_9njj9iwjjdud7eix.constant(event),
setSource: source.set,
getSource: source.get
};
};
var fromExternal = function (event) {
var stopper = Cell(false);
var stop = function () {
stopper.set(true);
};
return {
stop: stop,
cut: $_9njj9iwjjdud7eix.noop,
isStopped: stopper.get,
isCut: $_9njj9iwjjdud7eix.constant(false),
event: $_9njj9iwjjdud7eix.constant(event),
setTarget: $_9njj9iwjjdud7eix.die(new Error('Cannot set target of a broadcasted event')),
getTarget: $_9njj9iwjjdud7eix.die(new Error('Cannot get target of a broadcasted event'))
};
};
var fromTarget = function (event, target) {
var source = Cell(target);
return fromSource(event, source);
};
var $_a4g5815gjdud7fzp = {
fromSource: fromSource,
fromExternal: fromExternal,
fromTarget: fromTarget
};
var adt$6 = $_2ytffsxwjdud7ets.generate([
{ stopped: [] },
{ resume: ['element'] },
{ complete: [] }
]);
var doTriggerHandler = function (lookup, eventType, rawEvent, target, source, logger) {
var handler = lookup(eventType, target);
var simulatedEvent = $_a4g5815gjdud7fzp.fromSource(rawEvent, source);
return handler.fold(function () {
logger.logEventNoHandlers(eventType, target);
return adt$6.complete();
}, function (handlerInfo) {
var descHandler = handlerInfo.descHandler();
var eventHandler = $_6lldf5134jdud7flx.getHandler(descHandler);
eventHandler(simulatedEvent);
if (simulatedEvent.isStopped()) {
logger.logEventStopped(eventType, handlerInfo.element(), descHandler.purpose());
return adt$6.stopped();
} else if (simulatedEvent.isCut()) {
logger.logEventCut(eventType, handlerInfo.element(), descHandler.purpose());
return adt$6.complete();
} else
return $_dekwe2x3jdud7ekr.parent(handlerInfo.element()).fold(function () {
logger.logNoParent(eventType, handlerInfo.element(), descHandler.purpose());
return adt$6.complete();
}, function (parent) {
logger.logEventResponse(eventType, handlerInfo.element(), descHandler.purpose());
return adt$6.resume(parent);
});
});
};
var doTriggerOnUntilStopped = function (lookup, eventType, rawEvent, rawTarget, source, logger) {
return doTriggerHandler(lookup, eventType, rawEvent, rawTarget, source, logger).fold(function () {
return true;
}, function (parent) {
return doTriggerOnUntilStopped(lookup, eventType, rawEvent, parent, source, logger);
}, function () {
return false;
});
};
var triggerHandler = function (lookup, eventType, rawEvent, target, logger) {
var source = $_ervjm915fjdud7fzm.derive(rawEvent, target);
return doTriggerHandler(lookup, eventType, rawEvent, target, source, logger);
};
var broadcast = function (listeners, rawEvent, logger) {
var simulatedEvent = $_a4g5815gjdud7fzp.fromExternal(rawEvent);
$_1g2cevwsjdud7ejp.each(listeners, function (listener) {
var descHandler = listener.descHandler();
var handler = $_6lldf5134jdud7flx.getHandler(descHandler);
handler(simulatedEvent);
});
return simulatedEvent.isStopped();
};
var triggerUntilStopped = function (lookup, eventType, rawEvent, logger) {
var rawTarget = rawEvent.target();
return triggerOnUntilStopped(lookup, eventType, rawEvent, rawTarget, logger);
};
var triggerOnUntilStopped = function (lookup, eventType, rawEvent, rawTarget, logger) {
var source = $_ervjm915fjdud7fzm.derive(rawEvent, rawTarget);
return doTriggerOnUntilStopped(lookup, eventType, rawEvent, rawTarget, source, logger);
};
var $_fisgeg15ejdud7fzg = {
triggerHandler: triggerHandler,
triggerUntilStopped: triggerUntilStopped,
triggerOnUntilStopped: triggerOnUntilStopped,
broadcast: broadcast
};
var closest$4 = function (target, transform, isRoot) {
var delegate = $_4j5kdsyvjdud7eyd.closest(target, function (elem) {
return transform(elem).isSome();
}, isRoot);
return delegate.bind(transform);
};
var $_6iub0g15jjdud7g05 = { closest: closest$4 };
var eventHandler = $_8o1q69x4jdud7ekz.immutable('element', 'descHandler');
var messageHandler = function (id, handler) {
return {
id: $_9njj9iwjjdud7eix.constant(id),
descHandler: $_9njj9iwjjdud7eix.constant(handler)
};
};
function EventRegistry () {
var registry = {};
var registerId = function (extraArgs, id, events) {
$_2dykn0x0jdud7ekc.each(events, function (v, k) {
var handlers = registry[k] !== undefined ? registry[k] : {};
handlers[id] = $_6lldf5134jdud7flx.curryArgs(v, extraArgs);
registry[k] = handlers;
});
};
var findHandler = function (handlers, elem) {
return $_4mrseh10xjdud7f9b.read(elem).fold(function (err) {
return Option.none();
}, function (id) {
var reader = $_ettibkxsjdud7emz.readOpt(id);
return handlers.bind(reader).map(function (descHandler) {
return eventHandler(elem, descHandler);
});
});
};
var filterByType = function (type) {
return $_ettibkxsjdud7emz.readOptFrom(registry, type).map(function (handlers) {
return $_2dykn0x0jdud7ekc.mapToArray(handlers, function (f, id) {
return messageHandler(id, f);
});
}).getOr([]);
};
var find = function (isAboveRoot, type, target) {
var readType = $_ettibkxsjdud7emz.readOpt(type);
var handlers = readType(registry);
return $_6iub0g15jjdud7g05.closest(target, function (elem) {
return findHandler(handlers, elem);
}, isAboveRoot);
};
var unregisterId = function (id) {
$_2dykn0x0jdud7ekc.each(registry, function (handlersById, eventName) {
if (handlersById.hasOwnProperty(id))
delete handlersById[id];
});
};
return {
registerId: registerId,
unregisterId: unregisterId,
filterByType: filterByType,
find: find
};
}
function Registry () {
var events = EventRegistry();
var components = {};
var readOrTag = function (component) {
var elem = component.element();
return $_4mrseh10xjdud7f9b.read(elem).fold(function () {
return $_4mrseh10xjdud7f9b.write('uid-', component.element());
}, function (uid) {
return uid;
});
};
var failOnDuplicate = function (component, tagId) {
var conflict = components[tagId];
if (conflict === component)
unregister(component);
else
throw new Error('The tagId "' + tagId + '" is already used by: ' + $_d3f8kuxmjdud7emi.element(conflict.element()) + '\nCannot use it for: ' + $_d3f8kuxmjdud7emi.element(component.element()) + '\n' + 'The conflicting element is' + ($_1tyeizxjjdud7em4.inBody(conflict.element()) ? ' ' : ' not ') + 'already in the DOM');
};
var register = function (component) {
var tagId = readOrTag(component);
if ($_ettibkxsjdud7emz.hasKey(components, tagId))
failOnDuplicate(component, tagId);
var extraArgs = [component];
events.registerId(extraArgs, tagId, component.events());
components[tagId] = component;
};
var unregister = function (component) {
$_4mrseh10xjdud7f9b.read(component.element()).each(function (tagId) {
components[tagId] = undefined;
events.unregisterId(tagId);
});
};
var filter = function (type) {
return events.filterByType(type);
};
var find = function (isAboveRoot, type, target) {
return events.find(isAboveRoot, type, target);
};
var getById = function (id) {
return $_ettibkxsjdud7emz.readOpt(id)(components);
};
return {
find: find,
filter: filter,
register: register,
unregister: unregister,
getById: getById
};
}
var create$6 = function () {
var root = $_ap2ej712tjdud7fjl.build(Container.sketch({ dom: { tag: 'div' } }));
return takeover(root);
};
var takeover = function (root) {
var isAboveRoot = function (el) {
return $_dekwe2x3jdud7ekr.parent(root.element()).fold(function () {
return true;
}, function (parent) {
return $_f1y1rtx9jdud7el7.eq(el, parent);
});
};
var registry = Registry();
var lookup = function (eventName, target) {
return registry.find(isAboveRoot, eventName, target);
};
var domEvents = $_kt4rz15djdud7fz0.setup(root.element(), {
triggerEvent: function (eventName, event) {
return $_efa715xljdud7em8.monitorEvent(eventName, event.target(), function (logger) {
return $_fisgeg15ejdud7fzg.triggerUntilStopped(lookup, eventName, event, logger);
});
},
broadcastEvent: function (eventName, event) {
var listeners = registry.filter(eventName);
return $_fisgeg15ejdud7fzg.broadcast(listeners, event);
}
});
var systemApi = SystemApi({
debugInfo: $_9njj9iwjjdud7eix.constant('real'),
triggerEvent: function (customType, target, data) {
$_efa715xljdud7em8.monitorEvent(customType, target, function (logger) {
$_fisgeg15ejdud7fzg.triggerOnUntilStopped(lookup, customType, data, target, logger);
});
},
triggerFocus: function (target, originator) {
$_4mrseh10xjdud7f9b.read(target).fold(function () {
$_25580rytjdud7ey7.focus(target);
}, function (_alloyId) {
$_efa715xljdud7em8.monitorEvent($_801kkqwhjdud7eiq.focus(), target, function (logger) {
$_fisgeg15ejdud7fzg.triggerHandler(lookup, $_801kkqwhjdud7eiq.focus(), {
originator: $_9njj9iwjjdud7eix.constant(originator),
target: $_9njj9iwjjdud7eix.constant(target)
}, target, logger);
});
});
},
triggerEscape: function (comp, simulatedEvent) {
systemApi.triggerEvent('keydown', comp.element(), simulatedEvent.event());
},
getByUid: function (uid) {
return getByUid(uid);
},
getByDom: function (elem) {
return getByDom(elem);
},
build: $_ap2ej712tjdud7fjl.build,
addToGui: function (c) {
add(c);
},
removeFromGui: function (c) {
remove(c);
},
addToWorld: function (c) {
addToWorld(c);
},
removeFromWorld: function (c) {
removeFromWorld(c);
},
broadcast: function (message) {
broadcast(message);
},
broadcastOn: function (channels, message) {
broadcastOn(channels, message);
}
});
var addToWorld = function (component) {
component.connect(systemApi);
if (!$_50qkdpxkjdud7em6.isText(component.element())) {
registry.register(component);
$_1g2cevwsjdud7ejp.each(component.components(), addToWorld);
systemApi.triggerEvent($_801kkqwhjdud7eiq.systemInit(), component.element(), { target: $_9njj9iwjjdud7eix.constant(component.element()) });
}
};
var removeFromWorld = function (component) {
if (!$_50qkdpxkjdud7em6.isText(component.element())) {
$_1g2cevwsjdud7ejp.each(component.components(), removeFromWorld);
registry.unregister(component);
}
component.disconnect();
};
var add = function (component) {
$_fesilqx1jdud7ekf.attach(root, component);
};
var remove = function (component) {
$_fesilqx1jdud7ekf.detach(component);
};
var destroy = function () {
domEvents.unbind();
$_8d9w48xhjdud7elz.remove(root.element());
};
var broadcastData = function (data) {
var receivers = registry.filter($_801kkqwhjdud7eiq.receive());
$_1g2cevwsjdud7ejp.each(receivers, function (receiver) {
var descHandler = receiver.descHandler();
var handler = $_6lldf5134jdud7flx.getHandler(descHandler);
handler(data);
});
};
var broadcast = function (message) {
broadcastData({
universal: $_9njj9iwjjdud7eix.constant(true),
data: $_9njj9iwjjdud7eix.constant(message)
});
};
var broadcastOn = function (channels, message) {
broadcastData({
universal: $_9njj9iwjjdud7eix.constant(false),
channels: $_9njj9iwjjdud7eix.constant(channels),
data: $_9njj9iwjjdud7eix.constant(message)
});
};
var getByUid = function (uid) {
return registry.getById(uid).fold(function () {
return Result.error(new Error('Could not find component with uid: "' + uid + '" in system.'));
}, Result.value);
};
var getByDom = function (elem) {
return $_4mrseh10xjdud7f9b.read(elem).bind(getByUid);
};
addToWorld(root);
return {
root: $_9njj9iwjjdud7eix.constant(root),
element: root.element,
destroy: destroy,
add: add,
remove: remove,
getByUid: getByUid,
getByDom: getByDom,
addToWorld: addToWorld,
removeFromWorld: removeFromWorld,
broadcast: broadcast,
broadcastOn: broadcastOn
};
};
var $_22oc0y15cjdud7fym = {
create: create$6,
takeover: takeover
};
var READ_ONLY_MODE_CLASS = $_9njj9iwjjdud7eix.constant($_5qzh4bzejdud7f0y.resolve('readonly-mode'));
var EDIT_MODE_CLASS = $_9njj9iwjjdud7eix.constant($_5qzh4bzejdud7f0y.resolve('edit-mode'));
function OuterContainer (spec) {
var root = $_ap2ej712tjdud7fjl.build(Container.sketch({
dom: { classes: [$_5qzh4bzejdud7f0y.resolve('outer-container')].concat(spec.classes) },
containerBehaviours: $_ax1gfoy2jdud7eu7.derive([Swapping.config({
alpha: READ_ONLY_MODE_CLASS(),
omega: EDIT_MODE_CLASS()
})])
}));
return $_22oc0y15cjdud7fym.takeover(root);
}
function AndroidRealm (scrollIntoView) {
var alloy = OuterContainer({ classes: [$_5qzh4bzejdud7f0y.resolve('android-container')] });
var toolbar = ScrollingToolbar();
var webapp = $_9fhyae12ojdud7fij.api();
var switchToEdit = $_enp5ds154jdud7fxb.makeEditSwitch(webapp);
var socket = $_enp5ds154jdud7fxb.makeSocket();
var dropup = $_9ihizd155jdud7fxi.build($_9njj9iwjjdud7eix.noop, scrollIntoView);
alloy.add(toolbar.wrapper());
alloy.add(socket);
alloy.add(dropup.component());
var setToolbarGroups = function (rawGroups) {
var groups = toolbar.createGroups(rawGroups);
toolbar.setGroups(groups);
};
var setContextToolbar = function (rawGroups) {
var groups = toolbar.createGroups(rawGroups);
toolbar.setContextToolbar(groups);
};
var focusToolbar = function () {
toolbar.focus();
};
var restoreToolbar = function () {
toolbar.restoreToolbar();
};
var init = function (spec) {
webapp.set($_bip6sv140jdud7fra.produce(spec));
};
var exit = function () {
webapp.run(function (w) {
w.exit();
Replacing.remove(socket, switchToEdit);
});
};
var updateMode = function (readOnly) {
$_enp5ds154jdud7fxb.updateMode(socket, switchToEdit, readOnly, alloy.root());
};
return {
system: $_9njj9iwjjdud7eix.constant(alloy),
element: alloy.element,
init: init,
exit: exit,
setToolbarGroups: setToolbarGroups,
setContextToolbar: setContextToolbar,
focusToolbar: focusToolbar,
restoreToolbar: restoreToolbar,
updateMode: updateMode,
socket: $_9njj9iwjjdud7eix.constant(socket),
dropup: $_9njj9iwjjdud7eix.constant(dropup)
};
}
var input = function (parent, operation) {
var input = $_eobgtqxfjdud7elu.fromTag('input');
$_btgbcy103jdud7f3t.setAll(input, {
opacity: '0',
position: 'absolute',
top: '-1000px',
left: '-1000px'
});
$_ftkbb5x2jdud7ekp.append(parent, input);
$_25580rytjdud7ey7.focus(input);
operation(input);
$_8d9w48xhjdud7elz.remove(input);
};
var $_6rnw9j15ojdud7g16 = { input: input };
var refreshInput = function (input) {
var start = input.dom().selectionStart;
var end = input.dom().selectionEnd;
var dir = input.dom().selectionDirection;
setTimeout(function () {
input.dom().setSelectionRange(start, end, dir);
$_25580rytjdud7ey7.focus(input);
}, 50);
};
var refresh = function (winScope) {
var sel = winScope.getSelection();
if (sel.rangeCount > 0) {
var br = sel.getRangeAt(0);
var r = winScope.document.createRange();
r.setStart(br.startContainer, br.startOffset);
r.setEnd(br.endContainer, br.endOffset);
sel.removeAllRanges();
sel.addRange(r);
}
};
var $_2v0qs115qjdud7g1f = {
refreshInput: refreshInput,
refresh: refresh
};
var resume$1 = function (cWin, frame) {
$_25580rytjdud7ey7.active().each(function (active) {
if (!$_f1y1rtx9jdud7el7.eq(active, frame)) {
$_25580rytjdud7ey7.blur(active);
}
});
cWin.focus();
$_25580rytjdud7ey7.focus($_eobgtqxfjdud7elu.fromDom(cWin.document.body));
$_2v0qs115qjdud7g1f.refresh(cWin);
};
var $_7n4y0915pjdud7g1b = { resume: resume$1 };
var stubborn = function (outerBody, cWin, page, frame) {
var toEditing = function () {
$_7n4y0915pjdud7g1b.resume(cWin, frame);
};
var toReading = function () {
$_6rnw9j15ojdud7g16.input(outerBody, $_25580rytjdud7ey7.blur);
};
var captureInput = $_5x7hr513xjdud7fqz.bind(page, 'keydown', function (evt) {
if (!$_1g2cevwsjdud7ejp.contains([
'input',
'textarea'
], $_50qkdpxkjdud7em6.name(evt.target()))) {
toEditing();
}
});
var onToolbarTouch = function () {
};
var destroy = function () {
captureInput.unbind();
};
return {
toReading: toReading,
toEditing: toEditing,
onToolbarTouch: onToolbarTouch,
destroy: destroy
};
};
var timid = function (outerBody, cWin, page, frame) {
var dismissKeyboard = function () {
$_25580rytjdud7ey7.blur(frame);
};
var onToolbarTouch = function () {
dismissKeyboard();
};
var toReading = function () {
dismissKeyboard();
};
var toEditing = function () {
$_7n4y0915pjdud7g1b.resume(cWin, frame);
};
return {
toReading: toReading,
toEditing: toEditing,
onToolbarTouch: onToolbarTouch,
destroy: $_9njj9iwjjdud7eix.noop
};
};
var $_fx7jg115njdud7g0u = {
stubborn: stubborn,
timid: timid
};
var initEvents$1 = function (editorApi, iosApi, toolstrip, socket, dropup) {
var saveSelectionFirst = function () {
iosApi.run(function (api) {
api.highlightSelection();
});
};
var refreshIosSelection = function () {
iosApi.run(function (api) {
api.refreshSelection();
});
};
var scrollToY = function (yTop, height) {
var y = yTop - socket.dom().scrollTop;
iosApi.run(function (api) {
api.scrollIntoView(y, y + height);
});
};
var scrollToElement = function (target) {
scrollToY(iosApi, socket);
};
var scrollToCursor = function () {
editorApi.getCursorBox().each(function (box) {
scrollToY(box.top(), box.height());
});
};
var clearSelection = function () {
iosApi.run(function (api) {
api.clearSelection();
});
};
var clearAndRefresh = function () {
clearSelection();
refreshThrottle.throttle();
};
var refreshView = function () {
scrollToCursor();
iosApi.run(function (api) {
api.syncHeight();
});
};
var reposition = function () {
var toolbarHeight = $_q9861102jdud7f3r.get(toolstrip);
iosApi.run(function (api) {
api.setViewportOffset(toolbarHeight);
});
refreshIosSelection();
refreshView();
};
var toEditing = function () {
iosApi.run(function (api) {
api.toEditing();
});
};
var toReading = function () {
iosApi.run(function (api) {
api.toReading();
});
};
var onToolbarTouch = function (event) {
iosApi.run(function (api) {
api.onToolbarTouch(event);
});
};
var tapping = $_cza229143jdud7fs3.monitor(editorApi);
var refreshThrottle = $_dfio3v14wjdud7fvy.last(refreshView, 300);
var listeners = [
editorApi.onKeyup(clearAndRefresh),
editorApi.onNodeChanged(refreshIosSelection),
editorApi.onDomChanged(refreshThrottle.throttle),
editorApi.onDomChanged(refreshIosSelection),
editorApi.onScrollToCursor(function (tinyEvent) {
tinyEvent.preventDefault();
refreshThrottle.throttle();
}),
editorApi.onScrollToElement(function (event) {
scrollToElement(event.element());
}),
editorApi.onToEditing(toEditing),
editorApi.onToReading(toReading),
$_5x7hr513xjdud7fqz.bind(editorApi.doc(), 'touchend', function (touchEvent) {
if ($_f1y1rtx9jdud7el7.eq(editorApi.html(), touchEvent.target()) || $_f1y1rtx9jdud7el7.eq(editorApi.body(), touchEvent.target())) {
}
}),
$_5x7hr513xjdud7fqz.bind(toolstrip, 'transitionend', function (transitionEvent) {
if (transitionEvent.raw().propertyName === 'height') {
reposition();
}
}),
$_5x7hr513xjdud7fqz.capture(toolstrip, 'touchstart', function (touchEvent) {
saveSelectionFirst();
onToolbarTouch(touchEvent);
editorApi.onTouchToolstrip();
}),
$_5x7hr513xjdud7fqz.bind(editorApi.body(), 'touchstart', function (evt) {
clearSelection();
editorApi.onTouchContent();
tapping.fireTouchstart(evt);
}),
tapping.onTouchmove(),
tapping.onTouchend(),
$_5x7hr513xjdud7fqz.bind(editorApi.body(), 'click', function (event) {
event.kill();
}),
$_5x7hr513xjdud7fqz.bind(toolstrip, 'touchmove', function () {
editorApi.onToolbarScrollStart();
})
];
var destroy = function () {
$_1g2cevwsjdud7ejp.each(listeners, function (l) {
l.unbind();
});
};
return { destroy: destroy };
};
var $_1nj2i15rjdud7g1i = { initEvents: initEvents$1 };
function FakeSelection (win, frame) {
var doc = win.document;
var container = $_eobgtqxfjdud7elu.fromTag('div');
$_1x3ogvynjdud7exn.add(container, $_5qzh4bzejdud7f0y.resolve('unfocused-selections'));
$_ftkbb5x2jdud7ekp.append($_eobgtqxfjdud7elu.fromDom(doc.documentElement), container);
var onTouch = $_5x7hr513xjdud7fqz.bind(container, 'touchstart', function (event) {
event.prevent();
$_7n4y0915pjdud7g1b.resume(win, frame);
clear();
});
var make = function (rectangle) {
var span = $_eobgtqxfjdud7elu.fromTag('span');
$_af5dkc137jdud7fms.add(span, [
$_5qzh4bzejdud7f0y.resolve('layer-editor'),
$_5qzh4bzejdud7f0y.resolve('unfocused-selection')
]);
$_btgbcy103jdud7f3t.setAll(span, {
left: rectangle.left() + 'px',
top: rectangle.top() + 'px',
width: rectangle.width() + 'px',
height: rectangle.height() + 'px'
});
return span;
};
var update = function () {
clear();
var rectangles = $_5lp8kt148jdud7fso.getRectangles(win);
var spans = $_1g2cevwsjdud7ejp.map(rectangles, make);
$_alr2vxxijdud7em1.append(container, spans);
};
var clear = function () {
$_8d9w48xhjdud7elz.empty(container);
};
var destroy = function () {
onTouch.unbind();
$_8d9w48xhjdud7elz.remove(container);
};
var isActive = function () {
return $_dekwe2x3jdud7ekr.children(container).length > 0;
};
return {
update: update,
isActive: isActive,
destroy: destroy,
clear: clear
};
}
var nu$8 = function (baseFn) {
var data = Option.none();
var callbacks = [];
var map = function (f) {
return nu$8(function (nCallback) {
get(function (data) {
nCallback(f(data));
});
});
};
var get = function (nCallback) {
if (isReady())
call(nCallback);
else
callbacks.push(nCallback);
};
var set = function (x) {
data = Option.some(x);
run(callbacks);
callbacks = [];
};
var isReady = function () {
return data.isSome();
};
var run = function (cbs) {
$_1g2cevwsjdud7ejp.each(cbs, call);
};
var call = function (cb) {
data.each(function (x) {
setTimeout(function () {
cb(x);
}, 0);
});
};
baseFn(set);
return {
get: get,
map: map,
isReady: isReady
};
};
var pure$1 = function (a) {
return nu$8(function (callback) {
callback(a);
});
};
var LazyValue = {
nu: nu$8,
pure: pure$1
};
var bounce = function (f) {
return function () {
var args = Array.prototype.slice.call(arguments);
var me = this;
setTimeout(function () {
f.apply(me, args);
}, 0);
};
};
var $_9k4fhx15xjdud7g2p = { bounce: bounce };
var nu$9 = function (baseFn) {
var get = function (callback) {
baseFn($_9k4fhx15xjdud7g2p.bounce(callback));
};
var map = function (fab) {
return nu$9(function (callback) {
get(function (a) {
var value = fab(a);
callback(value);
});
});
};
var bind = function (aFutureB) {
return nu$9(function (callback) {
get(function (a) {
aFutureB(a).get(callback);
});
});
};
var anonBind = function (futureB) {
return nu$9(function (callback) {
get(function (a) {
futureB.get(callback);
});
});
};
var toLazy = function () {
return LazyValue.nu(get);
};
return {
map: map,
bind: bind,
anonBind: anonBind,
toLazy: toLazy,
get: get
};
};
var pure$2 = function (a) {
return nu$9(function (callback) {
callback(a);
});
};
var Future = {
nu: nu$9,
pure: pure$2
};
var adjust = function (value, destination, amount) {
if (Math.abs(value - destination) <= amount) {
return Option.none();
} else if (value < destination) {
return Option.some(value + amount);
} else {
return Option.some(value - amount);
}
};
var create$7 = function () {
var interval = null;
var animate = function (getCurrent, destination, amount, increment, doFinish, rate) {
var finished = false;
var finish = function (v) {
finished = true;
doFinish(v);
};
clearInterval(interval);
var abort = function (v) {
clearInterval(interval);
finish(v);
};
interval = setInterval(function () {
var value = getCurrent();
adjust(value, destination, amount).fold(function () {
clearInterval(interval);
finish(destination);
}, function (s) {
increment(s, abort);
if (!finished) {
var newValue = getCurrent();
if (newValue !== s || Math.abs(newValue - destination) > Math.abs(value - destination)) {
clearInterval(interval);
finish(destination);
}
}
});
}, rate);
};
return { animate: animate };
};
var $_d1o46j15yjdud7g2r = {
create: create$7,
adjust: adjust
};
var findDevice = function (deviceWidth, deviceHeight) {
var devices = [
{
width: 320,
height: 480,
keyboard: {
portrait: 300,
landscape: 240
}
},
{
width: 320,
height: 568,
keyboard: {
portrait: 300,
landscape: 240
}
},
{
width: 375,
height: 667,
keyboard: {
portrait: 305,
landscape: 240
}
},
{
width: 414,
height: 736,
keyboard: {
portrait: 320,
landscape: 240
}
},
{
width: 768,
height: 1024,
keyboard: {
portrait: 320,
landscape: 400
}
},
{
width: 1024,
height: 1366,
keyboard: {
portrait: 380,
landscape: 460
}
}
];
return $_ak7xq9y0jdud7eu4.findMap(devices, function (device) {
return deviceWidth <= device.width && deviceHeight <= device.height ? Option.some(device.keyboard) : Option.none();
}).getOr({
portrait: deviceHeight / 5,
landscape: deviceWidth / 4
});
};
var $_ejdhod161jdud7g3j = { findDevice: findDevice };
var softKeyboardLimits = function (outerWindow) {
return $_ejdhod161jdud7g3j.findDevice(outerWindow.screen.width, outerWindow.screen.height);
};
var accountableKeyboardHeight = function (outerWindow) {
var portrait = $_9zlehr13wjdud7fqs.get(outerWindow).isPortrait();
var limits = softKeyboardLimits(outerWindow);
var keyboard = portrait ? limits.portrait : limits.landscape;
var visualScreenHeight = portrait ? outerWindow.screen.height : outerWindow.screen.width;
return visualScreenHeight - outerWindow.innerHeight > keyboard ? 0 : keyboard;
};
var getGreenzone = function (socket, dropup) {
var outerWindow = $_dekwe2x3jdud7ekr.owner(socket).dom().defaultView;
var viewportHeight = $_q9861102jdud7f3r.get(socket) + $_q9861102jdud7f3r.get(dropup);
var acc = accountableKeyboardHeight(outerWindow);
return viewportHeight - acc;
};
var updatePadding = function (contentBody, socket, dropup) {
var greenzoneHeight = getGreenzone(socket, dropup);
var deltaHeight = $_q9861102jdud7f3r.get(socket) + $_q9861102jdud7f3r.get(dropup) - greenzoneHeight;
$_btgbcy103jdud7f3t.set(contentBody, 'padding-bottom', deltaHeight + 'px');
};
var $_alvh5y160jdud7g3e = {
getGreenzone: getGreenzone,
updatePadding: updatePadding
};
var fixture = $_2ytffsxwjdud7ets.generate([
{
fixed: [
'element',
'property',
'offsetY'
]
},
{
scroller: [
'element',
'offsetY'
]
}
]);
var yFixedData = 'data-' + $_5qzh4bzejdud7f0y.resolve('position-y-fixed');
var yFixedProperty = 'data-' + $_5qzh4bzejdud7f0y.resolve('y-property');
var yScrollingData = 'data-' + $_5qzh4bzejdud7f0y.resolve('scrolling');
var windowSizeData = 'data-' + $_5qzh4bzejdud7f0y.resolve('last-window-height');
var getYFixedData = function (element) {
return $_1bs4n9147jdud7fsm.safeParse(element, yFixedData);
};
var getYFixedProperty = function (element) {
return $_2vghk1xrjdud7ems.get(element, yFixedProperty);
};
var getLastWindowSize = function (element) {
return $_1bs4n9147jdud7fsm.safeParse(element, windowSizeData);
};
var classifyFixed = function (element, offsetY) {
var prop = getYFixedProperty(element);
return fixture.fixed(element, prop, offsetY);
};
var classifyScrolling = function (element, offsetY) {
return fixture.scroller(element, offsetY);
};
var classify = function (element) {
var offsetY = getYFixedData(element);
var classifier = $_2vghk1xrjdud7ems.get(element, yScrollingData) === 'true' ? classifyScrolling : classifyFixed;
return classifier(element, offsetY);
};
var findFixtures = function (container) {
var candidates = $_df6s98zvjdud7f39.descendants(container, '[' + yFixedData + ']');
return $_1g2cevwsjdud7ejp.map(candidates, classify);
};
var takeoverToolbar = function (toolbar) {
var oldToolbarStyle = $_2vghk1xrjdud7ems.get(toolbar, 'style');
$_btgbcy103jdud7f3t.setAll(toolbar, {
position: 'absolute',
top: '0px'
});
$_2vghk1xrjdud7ems.set(toolbar, yFixedData, '0px');
$_2vghk1xrjdud7ems.set(toolbar, yFixedProperty, 'top');
var restore = function () {
$_2vghk1xrjdud7ems.set(toolbar, 'style', oldToolbarStyle || '');
$_2vghk1xrjdud7ems.remove(toolbar, yFixedData);
$_2vghk1xrjdud7ems.remove(toolbar, yFixedProperty);
};
return { restore: restore };
};
var takeoverViewport = function (toolbarHeight, height, viewport) {
var oldViewportStyle = $_2vghk1xrjdud7ems.get(viewport, 'style');
$_bhtyzh13ujdud7fqk.register(viewport);
$_btgbcy103jdud7f3t.setAll(viewport, {
position: 'absolute',
height: height + 'px',
width: '100%',
top: toolbarHeight + 'px'
});
$_2vghk1xrjdud7ems.set(viewport, yFixedData, toolbarHeight + 'px');
$_2vghk1xrjdud7ems.set(viewport, yScrollingData, 'true');
$_2vghk1xrjdud7ems.set(viewport, yFixedProperty, 'top');
var restore = function () {
$_bhtyzh13ujdud7fqk.deregister(viewport);
$_2vghk1xrjdud7ems.set(viewport, 'style', oldViewportStyle || '');
$_2vghk1xrjdud7ems.remove(viewport, yFixedData);
$_2vghk1xrjdud7ems.remove(viewport, yScrollingData);
$_2vghk1xrjdud7ems.remove(viewport, yFixedProperty);
};
return { restore: restore };
};
var takeoverDropup = function (dropup, toolbarHeight, viewportHeight) {
var oldDropupStyle = $_2vghk1xrjdud7ems.get(dropup, 'style');
$_btgbcy103jdud7f3t.setAll(dropup, {
position: 'absolute',
bottom: '0px'
});
$_2vghk1xrjdud7ems.set(dropup, yFixedData, '0px');
$_2vghk1xrjdud7ems.set(dropup, yFixedProperty, 'bottom');
var restore = function () {
$_2vghk1xrjdud7ems.set(dropup, 'style', oldDropupStyle || '');
$_2vghk1xrjdud7ems.remove(dropup, yFixedData);
$_2vghk1xrjdud7ems.remove(dropup, yFixedProperty);
};
return { restore: restore };
};
var deriveViewportHeight = function (viewport, toolbarHeight, dropupHeight) {
var outerWindow = $_dekwe2x3jdud7ekr.owner(viewport).dom().defaultView;
var winH = outerWindow.innerHeight;
$_2vghk1xrjdud7ems.set(viewport, windowSizeData, winH + 'px');
return winH - toolbarHeight - dropupHeight;
};
var takeover$1 = function (viewport, contentBody, toolbar, dropup) {
var outerWindow = $_dekwe2x3jdud7ekr.owner(viewport).dom().defaultView;
var toolbarSetup = takeoverToolbar(toolbar);
var toolbarHeight = $_q9861102jdud7f3r.get(toolbar);
var dropupHeight = $_q9861102jdud7f3r.get(dropup);
var viewportHeight = deriveViewportHeight(viewport, toolbarHeight, dropupHeight);
var viewportSetup = takeoverViewport(toolbarHeight, viewportHeight, viewport);
var dropupSetup = takeoverDropup(dropup, toolbarHeight, viewportHeight);
var isActive = true;
var restore = function () {
isActive = false;
toolbarSetup.restore();
viewportSetup.restore();
dropupSetup.restore();
};
var isExpanding = function () {
var currentWinHeight = outerWindow.innerHeight;
var lastWinHeight = getLastWindowSize(viewport);
return currentWinHeight > lastWinHeight;
};
var refresh = function () {
if (isActive) {
var newToolbarHeight = $_q9861102jdud7f3r.get(toolbar);
var dropupHeight_1 = $_q9861102jdud7f3r.get(dropup);
var newHeight = deriveViewportHeight(viewport, newToolbarHeight, dropupHeight_1);
$_2vghk1xrjdud7ems.set(viewport, yFixedData, newToolbarHeight + 'px');
$_btgbcy103jdud7f3t.set(viewport, 'height', newHeight + 'px');
$_btgbcy103jdud7f3t.set(dropup, 'bottom', -(newToolbarHeight + newHeight + dropupHeight_1) + 'px');
$_alvh5y160jdud7g3e.updatePadding(contentBody, viewport, dropup);
}
};
var setViewportOffset = function (newYOffset) {
var offsetPx = newYOffset + 'px';
$_2vghk1xrjdud7ems.set(viewport, yFixedData, offsetPx);
refresh();
};
$_alvh5y160jdud7g3e.updatePadding(contentBody, viewport, dropup);
return {
setViewportOffset: setViewportOffset,
isExpanding: isExpanding,
isShrinking: $_9njj9iwjjdud7eix.not(isExpanding),
refresh: refresh,
restore: restore
};
};
var $_efto7m15zjdud7g31 = {
findFixtures: findFixtures,
takeover: takeover$1,
getYFixedData: getYFixedData
};
var animator = $_d1o46j15yjdud7g2r.create();
var ANIMATION_STEP = 15;
var NUM_TOP_ANIMATION_FRAMES = 10;
var ANIMATION_RATE = 10;
var lastScroll = 'data-' + $_5qzh4bzejdud7f0y.resolve('last-scroll-top');
var getTop = function (element) {
var raw = $_btgbcy103jdud7f3t.getRaw(element, 'top').getOr(0);
return parseInt(raw, 10);
};
var getScrollTop = function (element) {
return parseInt(element.dom().scrollTop, 10);
};
var moveScrollAndTop = function (element, destination, finalTop) {
return Future.nu(function (callback) {
var getCurrent = $_9njj9iwjjdud7eix.curry(getScrollTop, element);
var update = function (newScroll) {
element.dom().scrollTop = newScroll;
$_btgbcy103jdud7f3t.set(element, 'top', getTop(element) + ANIMATION_STEP + 'px');
};
var finish = function () {
element.dom().scrollTop = destination;
$_btgbcy103jdud7f3t.set(element, 'top', finalTop + 'px');
callback(destination);
};
animator.animate(getCurrent, destination, ANIMATION_STEP, update, finish, ANIMATION_RATE);
});
};
var moveOnlyScroll = function (element, destination) {
return Future.nu(function (callback) {
var getCurrent = $_9njj9iwjjdud7eix.curry(getScrollTop, element);
$_2vghk1xrjdud7ems.set(element, lastScroll, getCurrent());
var update = function (newScroll, abort) {
var previous = $_1bs4n9147jdud7fsm.safeParse(element, lastScroll);
if (previous !== element.dom().scrollTop) {
abort(element.dom().scrollTop);
} else {
element.dom().scrollTop = newScroll;
$_2vghk1xrjdud7ems.set(element, lastScroll, newScroll);
}
};
var finish = function () {
element.dom().scrollTop = destination;
$_2vghk1xrjdud7ems.set(element, lastScroll, destination);
callback(destination);
};
var distance = Math.abs(destination - getCurrent());
var step = Math.ceil(distance / NUM_TOP_ANIMATION_FRAMES);
animator.animate(getCurrent, destination, step, update, finish, ANIMATION_RATE);
});
};
var moveOnlyTop = function (element, destination) {
return Future.nu(function (callback) {
var getCurrent = $_9njj9iwjjdud7eix.curry(getTop, element);
var update = function (newTop) {
$_btgbcy103jdud7f3t.set(element, 'top', newTop + 'px');
};
var finish = function () {
update(destination);
callback(destination);
};
var distance = Math.abs(destination - getCurrent());
var step = Math.ceil(distance / NUM_TOP_ANIMATION_FRAMES);
animator.animate(getCurrent, destination, step, update, finish, ANIMATION_RATE);
});
};
var updateTop = function (element, amount) {
var newTop = amount + $_efto7m15zjdud7g31.getYFixedData(element) + 'px';
$_btgbcy103jdud7f3t.set(element, 'top', newTop);
};
var moveWindowScroll = function (toolbar, viewport, destY) {
var outerWindow = $_dekwe2x3jdud7ekr.owner(toolbar).dom().defaultView;
return Future.nu(function (callback) {
updateTop(toolbar, destY);
updateTop(viewport, destY);
outerWindow.scrollTo(0, destY);
callback(destY);
});
};
var $_daro4h15ujdud7g2d = {
moveScrollAndTop: moveScrollAndTop,
moveOnlyScroll: moveOnlyScroll,
moveOnlyTop: moveOnlyTop,
moveWindowScroll: moveWindowScroll
};
function BackgroundActivity (doAction) {
var action = Cell(LazyValue.pure({}));
var start = function (value) {
var future = LazyValue.nu(function (callback) {
return doAction(value).get(callback);
});
action.set(future);
};
var idle = function (g) {
action.get().get(function () {
g();
});
};
return {
start: start,
idle: idle
};
}
var scrollIntoView = function (cWin, socket, dropup, top, bottom) {
var greenzone = $_alvh5y160jdud7g3e.getGreenzone(socket, dropup);
var refreshCursor = $_9njj9iwjjdud7eix.curry($_2v0qs115qjdud7g1f.refresh, cWin);
if (top > greenzone || bottom > greenzone) {
$_daro4h15ujdud7g2d.moveOnlyScroll(socket, socket.dom().scrollTop - greenzone + bottom).get(refreshCursor);
} else if (top < 0) {
$_daro4h15ujdud7g2d.moveOnlyScroll(socket, socket.dom().scrollTop + top).get(refreshCursor);
} else {
}
};
var $_4fyqnl163jdud7g3q = { scrollIntoView: scrollIntoView };
var par = function (asyncValues, nu) {
return nu(function (callback) {
var r = [];
var count = 0;
var cb = function (i) {
return function (value) {
r[i] = value;
count++;
if (count >= asyncValues.length) {
callback(r);
}
};
};
if (asyncValues.length === 0) {
callback([]);
} else {
$_1g2cevwsjdud7ejp.each(asyncValues, function (asyncValue, i) {
asyncValue.get(cb(i));
});
}
});
};
var $_8gmqij166jdud7g40 = { par: par };
var par$1 = function (futures) {
return $_8gmqij166jdud7g40.par(futures, Future.nu);
};
var mapM = function (array, fn) {
var futures = $_1g2cevwsjdud7ejp.map(array, fn);
return par$1(futures);
};
var compose$1 = function (f, g) {
return function (a) {
return g(a).bind(f);
};
};
var $_9xg2nn165jdud7g3z = {
par: par$1,
mapM: mapM,
compose: compose$1
};
var updateFixed = function (element, property, winY, offsetY) {
var destination = winY + offsetY;
$_btgbcy103jdud7f3t.set(element, property, destination + 'px');
return Future.pure(offsetY);
};
var updateScrollingFixed = function (element, winY, offsetY) {
var destTop = winY + offsetY;
var oldProp = $_btgbcy103jdud7f3t.getRaw(element, 'top').getOr(offsetY);
var delta = destTop - parseInt(oldProp, 10);
var destScroll = element.dom().scrollTop + delta;
return $_daro4h15ujdud7g2d.moveScrollAndTop(element, destScroll, destTop);
};
var updateFixture = function (fixture, winY) {
return fixture.fold(function (element, property, offsetY) {
return updateFixed(element, property, winY, offsetY);
}, function (element, offsetY) {
return updateScrollingFixed(element, winY, offsetY);
});
};
var updatePositions = function (container, winY) {
var fixtures = $_efto7m15zjdud7g31.findFixtures(container);
var updates = $_1g2cevwsjdud7ejp.map(fixtures, function (fixture) {
return updateFixture(fixture, winY);
});
return $_9xg2nn165jdud7g3z.par(updates);
};
var $_3kanae164jdud7g3u = { updatePositions: updatePositions };
var VIEW_MARGIN = 5;
var register$2 = function (toolstrip, socket, container, outerWindow, structure, cWin) {
var scroller = BackgroundActivity(function (y) {
return $_daro4h15ujdud7g2d.moveWindowScroll(toolstrip, socket, y);
});
var scrollBounds = function () {
var rects = $_5lp8kt148jdud7fso.getRectangles(cWin);
return Option.from(rects[0]).bind(function (rect) {
var viewTop = rect.top() - socket.dom().scrollTop;
var outside = viewTop > outerWindow.innerHeight + VIEW_MARGIN || viewTop < -VIEW_MARGIN;
return outside ? Option.some({
top: $_9njj9iwjjdud7eix.constant(viewTop),
bottom: $_9njj9iwjjdud7eix.constant(viewTop + rect.height())
}) : Option.none();
});
};
var scrollThrottle = $_dfio3v14wjdud7fvy.last(function () {
scroller.idle(function () {
$_3kanae164jdud7g3u.updatePositions(container, outerWindow.pageYOffset).get(function () {
var extraScroll = scrollBounds();
extraScroll.each(function (extra) {
socket.dom().scrollTop = socket.dom().scrollTop + extra.top();
});
scroller.start(0);
structure.refresh();
});
});
}, 1000);
var onScroll = $_5x7hr513xjdud7fqz.bind($_eobgtqxfjdud7elu.fromDom(outerWindow), 'scroll', function () {
if (outerWindow.pageYOffset < 0) {
return;
}
scrollThrottle.throttle();
});
$_3kanae164jdud7g3u.updatePositions(container, outerWindow.pageYOffset).get($_9njj9iwjjdud7eix.identity);
return { unbind: onScroll.unbind };
};
var setup$3 = function (bag) {
var cWin = bag.cWin();
var ceBody = bag.ceBody();
var socket = bag.socket();
var toolstrip = bag.toolstrip();
var toolbar = bag.toolbar();
var contentElement = bag.contentElement();
var keyboardType = bag.keyboardType();
var outerWindow = bag.outerWindow();
var dropup = bag.dropup();
var structure = $_efto7m15zjdud7g31.takeover(socket, ceBody, toolstrip, dropup);
var keyboardModel = keyboardType(bag.outerBody(), cWin, $_1tyeizxjjdud7em4.body(), contentElement, toolstrip, toolbar);
var toEditing = function () {
keyboardModel.toEditing();
clearSelection();
};
var toReading = function () {
keyboardModel.toReading();
};
var onToolbarTouch = function (event) {
keyboardModel.onToolbarTouch(event);
};
var onOrientation = $_9zlehr13wjdud7fqs.onChange(outerWindow, {
onChange: $_9njj9iwjjdud7eix.noop,
onReady: structure.refresh
});
onOrientation.onAdjustment(function () {
structure.refresh();
});
var onResize = $_5x7hr513xjdud7fqz.bind($_eobgtqxfjdud7elu.fromDom(outerWindow), 'resize', function () {
if (structure.isExpanding()) {
structure.refresh();
}
});
var onScroll = register$2(toolstrip, socket, bag.outerBody(), outerWindow, structure, cWin);
var unfocusedSelection = FakeSelection(cWin, contentElement);
var refreshSelection = function () {
if (unfocusedSelection.isActive()) {
unfocusedSelection.update();
}
};
var highlightSelection = function () {
unfocusedSelection.update();
};
var clearSelection = function () {
unfocusedSelection.clear();
};
var scrollIntoView = function (top, bottom) {
$_4fyqnl163jdud7g3q.scrollIntoView(cWin, socket, dropup, top, bottom);
};
var syncHeight = function () {
$_btgbcy103jdud7f3t.set(contentElement, 'height', contentElement.dom().contentWindow.document.body.scrollHeight + 'px');
};
var setViewportOffset = function (newYOffset) {
structure.setViewportOffset(newYOffset);
$_daro4h15ujdud7g2d.moveOnlyTop(socket, newYOffset).get($_9njj9iwjjdud7eix.identity);
};
var destroy = function () {
structure.restore();
onOrientation.destroy();
onScroll.unbind();
onResize.unbind();
keyboardModel.destroy();
unfocusedSelection.destroy();
$_6rnw9j15ojdud7g16.input($_1tyeizxjjdud7em4.body(), $_25580rytjdud7ey7.blur);
};
return {
toEditing: toEditing,
toReading: toReading,
onToolbarTouch: onToolbarTouch,
refreshSelection: refreshSelection,
clearSelection: clearSelection,
highlightSelection: highlightSelection,
scrollIntoView: scrollIntoView,
updateToolbarPadding: $_9njj9iwjjdud7eix.noop,
setViewportOffset: setViewportOffset,
syncHeight: syncHeight,
refreshStructure: structure.refresh,
destroy: destroy
};
};
var $_1f632615sjdud7g1q = { setup: setup$3 };
var create$8 = function (platform, mask) {
var meta = $_9dstax14ujdud7fvm.tag();
var priorState = $_9fhyae12ojdud7fij.value();
var scrollEvents = $_9fhyae12ojdud7fij.value();
var iosApi = $_9fhyae12ojdud7fij.api();
var iosEvents = $_9fhyae12ojdud7fij.api();
var enter = function () {
mask.hide();
var doc = $_eobgtqxfjdud7elu.fromDom(document);
$_8faw2r14sjdud7fv0.getActiveApi(platform.editor).each(function (editorApi) {
priorState.set({
socketHeight: $_btgbcy103jdud7f3t.getRaw(platform.socket, 'height'),
iframeHeight: $_btgbcy103jdud7f3t.getRaw(editorApi.frame(), 'height'),
outerScroll: document.body.scrollTop
});
scrollEvents.set({ exclusives: $_dvdycr153jdud7fwy.exclusive(doc, '.' + $_bhtyzh13ujdud7fqk.scrollable()) });
$_1x3ogvynjdud7exn.add(platform.container, $_5qzh4bzejdud7f0y.resolve('fullscreen-maximized'));
$_fjm65f14tjdud7fv9.clobberStyles(platform.container, editorApi.body());
meta.maximize();
$_btgbcy103jdud7f3t.set(platform.socket, 'overflow', 'scroll');
$_btgbcy103jdud7f3t.set(platform.socket, '-webkit-overflow-scrolling', 'touch');
$_25580rytjdud7ey7.focus(editorApi.body());
var setupBag = $_8o1q69x4jdud7ekz.immutableBag([
'cWin',
'ceBody',
'socket',
'toolstrip',
'toolbar',
'dropup',
'contentElement',
'cursor',
'keyboardType',
'isScrolling',
'outerWindow',
'outerBody'
], []);
iosApi.set($_1f632615sjdud7g1q.setup(setupBag({
cWin: editorApi.win(),
ceBody: editorApi.body(),
socket: platform.socket,
toolstrip: platform.toolstrip,
toolbar: platform.toolbar,
dropup: platform.dropup.element(),
contentElement: editorApi.frame(),
cursor: $_9njj9iwjjdud7eix.noop,
outerBody: platform.body,
outerWindow: platform.win,
keyboardType: $_fx7jg115njdud7g0u.stubborn,
isScrolling: function () {
return scrollEvents.get().exists(function (s) {
return s.socket.isScrolling();
});
}
})));
iosApi.run(function (api) {
api.syncHeight();
});
iosEvents.set($_1nj2i15rjdud7g1i.initEvents(editorApi, iosApi, platform.toolstrip, platform.socket, platform.dropup));
});
};
var exit = function () {
meta.restore();
iosEvents.clear();
iosApi.clear();
mask.show();
priorState.on(function (s) {
s.socketHeight.each(function (h) {
$_btgbcy103jdud7f3t.set(platform.socket, 'height', h);
});
s.iframeHeight.each(function (h) {
$_btgbcy103jdud7f3t.set(platform.editor.getFrame(), 'height', h);
});
document.body.scrollTop = s.scrollTop;
});
priorState.clear();
scrollEvents.on(function (s) {
s.exclusives.unbind();
});
scrollEvents.clear();
$_1x3ogvynjdud7exn.remove(platform.container, $_5qzh4bzejdud7f0y.resolve('fullscreen-maximized'));
$_fjm65f14tjdud7fv9.restoreStyles();
$_bhtyzh13ujdud7fqk.deregister(platform.toolbar);
$_btgbcy103jdud7f3t.remove(platform.socket, 'overflow');
$_btgbcy103jdud7f3t.remove(platform.socket, '-webkit-overflow-scrolling');
$_25580rytjdud7ey7.blur(platform.editor.getFrame());
$_8faw2r14sjdud7fv0.getActiveApi(platform.editor).each(function (editorApi) {
editorApi.clearSelection();
});
};
var refreshStructure = function () {
iosApi.run(function (api) {
api.refreshStructure();
});
};
return {
enter: enter,
refreshStructure: refreshStructure,
exit: exit
};
};
var $_39i30915mjdud7g0i = { create: create$8 };
var produce$1 = function (raw) {
var mobile = $_13hkebyejdud7ewm.asRawOrDie('Getting IosWebapp schema', MobileSchema, raw);
$_btgbcy103jdud7f3t.set(mobile.toolstrip, 'width', '100%');
$_btgbcy103jdud7f3t.set(mobile.container, 'position', 'relative');
var onView = function () {
mobile.setReadOnly(true);
mode.enter();
};
var mask = $_ap2ej712tjdud7fjl.build($_ddqihl14vjdud7fvr.sketch(onView, mobile.translate));
mobile.alloy.add(mask);
var maskApi = {
show: function () {
mobile.alloy.add(mask);
},
hide: function () {
mobile.alloy.remove(mask);
}
};
var mode = $_39i30915mjdud7g0i.create(mobile, maskApi);
return {
setReadOnly: mobile.setReadOnly,
refreshStructure: mode.refreshStructure,
enter: mode.enter,
exit: mode.exit,
destroy: $_9njj9iwjjdud7eix.noop
};
};
var $_bg5sjd15ljdud7g0d = { produce: produce$1 };
function IosRealm (scrollIntoView) {
var alloy = OuterContainer({ classes: [$_5qzh4bzejdud7f0y.resolve('ios-container')] });
var toolbar = ScrollingToolbar();
var webapp = $_9fhyae12ojdud7fij.api();
var switchToEdit = $_enp5ds154jdud7fxb.makeEditSwitch(webapp);
var socket = $_enp5ds154jdud7fxb.makeSocket();
var dropup = $_9ihizd155jdud7fxi.build(function () {
webapp.run(function (w) {
w.refreshStructure();
});
}, scrollIntoView);
alloy.add(toolbar.wrapper());
alloy.add(socket);
alloy.add(dropup.component());
var setToolbarGroups = function (rawGroups) {
var groups = toolbar.createGroups(rawGroups);
toolbar.setGroups(groups);
};
var setContextToolbar = function (rawGroups) {
var groups = toolbar.createGroups(rawGroups);
toolbar.setContextToolbar(groups);
};
var focusToolbar = function () {
toolbar.focus();
};
var restoreToolbar = function () {
toolbar.restoreToolbar();
};
var init = function (spec) {
webapp.set($_bg5sjd15ljdud7g0d.produce(spec));
};
var exit = function () {
webapp.run(function (w) {
Replacing.remove(socket, switchToEdit);
w.exit();
});
};
var updateMode = function (readOnly) {
$_enp5ds154jdud7fxb.updateMode(socket, switchToEdit, readOnly, alloy.root());
};
return {
system: $_9njj9iwjjdud7eix.constant(alloy),
element: alloy.element,
init: init,
exit: exit,
setToolbarGroups: setToolbarGroups,
setContextToolbar: setContextToolbar,
focusToolbar: focusToolbar,
restoreToolbar: restoreToolbar,
updateMode: updateMode,
socket: $_9njj9iwjjdud7eix.constant(socket),
dropup: $_9njj9iwjjdud7eix.constant(dropup)
};
}
var EditorManager = tinymce.util.Tools.resolve('tinymce.EditorManager');
var derive$4 = function (editor) {
var base = $_ettibkxsjdud7emz.readOptFrom(editor.settings, 'skin_url').fold(function () {
return EditorManager.baseURL + '/skins/' + 'lightgray';
}, function (url) {
return url;
});
return {
content: base + '/content.mobile.min.css',
ui: base + '/skin.mobile.min.css'
};
};
var $_59h54f167jdud7g42 = { derive: derive$4 };
var fontSizes = [
'x-small',
'small',
'medium',
'large',
'x-large'
];
var fireChange$1 = function (realm, command, state) {
realm.system().broadcastOn([$_dlmrcrz1jdud7eyr.formatChanged()], {
command: command,
state: state
});
};
var init$5 = function (realm, editor) {
var allFormats = $_2dykn0x0jdud7ekc.keys(editor.formatter.get());
$_1g2cevwsjdud7ejp.each(allFormats, function (command) {
editor.formatter.formatChanged(command, function (state) {
fireChange$1(realm, command, state);
});
});
$_1g2cevwsjdud7ejp.each([
'ul',
'ol'
], function (command) {
editor.selection.selectorChanged(command, function (state, data) {
fireChange$1(realm, command, state);
});
});
};
var $_3v45zx169jdud7g45 = {
init: init$5,
fontSizes: $_9njj9iwjjdud7eix.constant(fontSizes)
};
var fireSkinLoaded = function (editor) {
var done = function () {
editor._skinLoaded = true;
editor.fire('SkinLoaded');
};
return function () {
if (editor.initialized) {
done();
} else {
editor.on('init', done);
}
};
};
var $_51lca516ajdud7g48 = { fireSkinLoaded: fireSkinLoaded };
var READING = $_9njj9iwjjdud7eix.constant('toReading');
var EDITING = $_9njj9iwjjdud7eix.constant('toEditing');
ThemeManager.add('mobile', function (editor) {
var renderUI = function (args) {
var cssUrls = $_59h54f167jdud7g42.derive(editor);
if ($_1ue238z0jdud7eyq.isSkinDisabled(editor) === false) {
editor.contentCSS.push(cssUrls.content);
DOMUtils.DOM.styleSheetLoader.load(cssUrls.ui, $_51lca516ajdud7g48.fireSkinLoaded(editor));
} else {
$_51lca516ajdud7g48.fireSkinLoaded(editor)();
}
var doScrollIntoView = function () {
editor.fire('scrollIntoView');
};
var wrapper = $_eobgtqxfjdud7elu.fromTag('div');
var realm = $_chh2cvwkjdud7ej0.detect().os.isAndroid() ? AndroidRealm(doScrollIntoView) : IosRealm(doScrollIntoView);
var original = $_eobgtqxfjdud7elu.fromDom(args.targetNode);
$_ftkbb5x2jdud7ekp.after(original, wrapper);
$_fesilqx1jdud7ekf.attachSystem(wrapper, realm.system());
var findFocusIn = function (elem) {
return $_25580rytjdud7ey7.search(elem).bind(function (focused) {
return realm.system().getByDom(focused).toOption();
});
};
var outerWindow = args.targetNode.ownerDocument.defaultView;
var orientation = $_9zlehr13wjdud7fqs.onChange(outerWindow, {
onChange: function () {
var alloy = realm.system();
alloy.broadcastOn([$_dlmrcrz1jdud7eyr.orientationChanged()], { width: $_9zlehr13wjdud7fqs.getActualWidth(outerWindow) });
},
onReady: $_9njj9iwjjdud7eix.noop
});
var setReadOnly = function (readOnlyGroups, mainGroups, ro) {
if (ro === false) {
editor.selection.collapse();
}
realm.setToolbarGroups(ro ? readOnlyGroups.get() : mainGroups.get());
editor.setMode(ro === true ? 'readonly' : 'design');
editor.fire(ro === true ? READING() : EDITING());
realm.updateMode(ro);
};
var bindHandler = function (label, handler) {
editor.on(label, handler);
return {
unbind: function () {
editor.off(label);
}
};
};
editor.on('init', function () {
realm.init({
editor: {
getFrame: function () {
return $_eobgtqxfjdud7elu.fromDom(editor.contentAreaContainer.querySelector('iframe'));
},
onDomChanged: function () {
return { unbind: $_9njj9iwjjdud7eix.noop };
},
onToReading: function (handler) {
return bindHandler(READING(), handler);
},
onToEditing: function (handler) {
return bindHandler(EDITING(), handler);
},
onScrollToCursor: function (handler) {
editor.on('scrollIntoView', function (tinyEvent) {
handler(tinyEvent);
});
var unbind = function () {
editor.off('scrollIntoView');
orientation.destroy();
};
return { unbind: unbind };
},
onTouchToolstrip: function () {
hideDropup();
},
onTouchContent: function () {
var toolbar = $_eobgtqxfjdud7elu.fromDom(editor.editorContainer.querySelector('.' + $_5qzh4bzejdud7f0y.resolve('toolbar')));
findFocusIn(toolbar).each($_98da6jwgjdud7eil.emitExecute);
realm.restoreToolbar();
hideDropup();
},
onTapContent: function (evt) {
var target = evt.target();
if ($_50qkdpxkjdud7em6.name(target) === 'img') {
editor.selection.select(target.dom());
evt.kill();
} else if ($_50qkdpxkjdud7em6.name(target) === 'a') {
var component = realm.system().getByDom($_eobgtqxfjdud7elu.fromDom(editor.editorContainer));
component.each(function (container) {
if (Swapping.isAlpha(container)) {
$_6cir74yzjdud7eyp.openLink(target.dom());
}
});
}
}
},
container: $_eobgtqxfjdud7elu.fromDom(editor.editorContainer),
socket: $_eobgtqxfjdud7elu.fromDom(editor.contentAreaContainer),
toolstrip: $_eobgtqxfjdud7elu.fromDom(editor.editorContainer.querySelector('.' + $_5qzh4bzejdud7f0y.resolve('toolstrip'))),
toolbar: $_eobgtqxfjdud7elu.fromDom(editor.editorContainer.querySelector('.' + $_5qzh4bzejdud7f0y.resolve('toolbar'))),
dropup: realm.dropup(),
alloy: realm.system(),
translate: $_9njj9iwjjdud7eix.noop,
setReadOnly: function (ro) {
setReadOnly(readOnlyGroups, mainGroups, ro);
}
});
var hideDropup = function () {
realm.dropup().disappear(function () {
realm.system().broadcastOn([$_dlmrcrz1jdud7eyr.dropupDismissed()], {});
});
};
$_efa715xljdud7em8.registerInspector('remove this', realm.system());
var backToMaskGroup = {
label: 'The first group',
scrollable: false,
items: [$_d0l7buzfjdud7f11.forToolbar('back', function () {
editor.selection.collapse();
realm.exit();
}, {})]
};
var backToReadOnlyGroup = {
label: 'Back to read only',
scrollable: false,
items: [$_d0l7buzfjdud7f11.forToolbar('readonly-back', function () {
setReadOnly(readOnlyGroups, mainGroups, true);
}, {})]
};
var readOnlyGroup = {
label: 'The read only mode group',
scrollable: true,
items: []
};
var features = $_44tgozz2jdud7eyu.setup(realm, editor);
var items = $_44tgozz2jdud7eyu.detect(editor.settings, features);
var actionGroup = {
label: 'the action group',
scrollable: true,
items: items
};
var extraGroup = {
label: 'The extra group',
scrollable: false,
items: []
};
var mainGroups = Cell([
backToReadOnlyGroup,
actionGroup,
extraGroup
]);
var readOnlyGroups = Cell([
backToMaskGroup,
readOnlyGroup,
extraGroup
]);
$_3v45zx169jdud7g45.init(realm, editor);
});
return {
iframeContainer: realm.socket().element().dom(),
editorContainer: realm.element().dom()
};
};
return {
getNotificationManagerImpl: function () {
return {
open: $_9njj9iwjjdud7eix.identity,
close: $_9njj9iwjjdud7eix.noop,
reposition: $_9njj9iwjjdud7eix.noop,
getArgs: $_9njj9iwjjdud7eix.identity
};
},
renderUI: renderUI
};
});
function Theme () {
}
return Theme;
}());
})();