* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/
/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE = 200;
/** Used as the `TypeError` message for "Functions" methods. */
var FUNC_ERROR_TEXT = 'Expected a function';
/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED = '__lodash_hash_undefined__';
/** Used to compose bitmasks for comparison styles. */
var UNORDERED_COMPARE_FLAG = 1,
PARTIAL_COMPARE_FLAG = 2;
/** Used as references for various `Number` constants. */
var INFINITY = 1 / 0,
MAX_SAFE_INTEGER = 9007199254740991;
/** `Object#toString` result references. */
var argsTag = '[object Arguments]',
arrayTag = '[object Array]',
boolTag = '[object Boolean]',
dateTag = '[object Date]',
errorTag = '[object Error]',
funcTag = '[object Function]',
genTag = '[object GeneratorFunction]',
mapTag = '[object Map]',
numberTag = '[object Number]',
objectTag = '[object Object]',
promiseTag = '[object Promise]',
regexpTag = '[object RegExp]',
setTag = '[object Set]',
stringTag = '[object String]',
symbolTag = '[object Symbol]',
weakMapTag = '[object WeakMap]';
var arrayBufferTag = '[object ArrayBuffer]',
dataViewTag = '[object DataView]',
float32Tag = '[object Float32Array]',
float64Tag = '[object Float64Array]',
int8Tag = '[object Int8Array]',
int16Tag = '[object Int16Array]',
int32Tag = '[object Int32Array]',
uint8Tag = '[object Uint8Array]',
uint8ClampedTag = '[object Uint8ClampedArray]',
uint16Tag = '[object Uint16Array]',
uint32Tag = '[object Uint32Array]';
/** Used to match property names within property paths. */
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
reIsPlainProp = /^\w*$/,
reLeadingDot = /^\./,
rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
/**
* Used to match `RegExp`
* [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
*/
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
/** Used to match backslashes in property paths. */
var reEscapeChar = /\\(\\)?/g;
/** Used to detect host constructors (Safari). */
var reIsHostCtor = /^\[object .+?Constructor\]$/;
/** Used to detect unsigned integer values. */
var reIsUint = /^(?:0|[1-9]\d*)$/;
/** Used to identify `toStringTag` values of typed arrays. */
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
typedArrayTags[errorTag] = typedArrayTags[funcTag] =
typedArrayTags[mapTag] = typedArrayTags[numberTag] =
typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
typedArrayTags[setTag] = typedArrayTags[stringTag] =
typedArrayTags[weakMapTag] = false;
/** Detect free variable `global` from Node.js. */
var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
/** Detect free variable `self`. */
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
/** Used as a reference to the global object. */
var root = freeGlobal || freeSelf || Function('return this')();
/** Detect free variable `exports`. */
var freeExports = true && exports && !exports.nodeType && exports;
/** Detect free variable `module`. */
var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports = freeModule && freeModule.exports === freeExports;
/** Detect free variable `process` from Node.js. */
var freeProcess = moduleExports && freeGlobal.process;
/** Used to access faster Node.js helpers. */
var nodeUtil = (function() {
try {
return freeProcess && freeProcess.binding('util');
} catch (e) {}
}());
/* Node.js helper references. */
var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
/**
* A specialized version of `_.map` for arrays without support for iteratee
* shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns the new mapped array.
*/
function arrayMap(array, iteratee) {
var index = -1,
length = array ? array.length : 0,
result = Array(length);
while (++index < length) {
result[index] = iteratee(array[index], index, array);
}
return result;
}
/**
* A specialized version of `_.some` for arrays without support for iteratee
* shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} predicate The function invoked per iteration.
* @returns {boolean} Returns `true` if any element passes the predicate check,
* else `false`.
*/
function arraySome(array, predicate) {
var index = -1,
length = array ? array.length : 0;
while (++index < length) {
if (predicate(array[index], index, array)) {
return true;
}
}
return false;
}
/**
* The base implementation of `_.property` without support for deep paths.
*
* @private
* @param {string} key The key of the property to get.
* @returns {Function} Returns the new accessor function.
*/
function baseProperty(key) {
return function(object) {
return object == null ? undefined : object[key];
};
}
/**
* The base implementation of `_.times` without support for iteratee shorthands
* or max array length checks.
*
* @private
* @param {number} n The number of times to invoke `iteratee`.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns the array of results.
*/
function baseTimes(n, iteratee) {
var index = -1,
result = Array(n);
while (++index < n) {
result[index] = iteratee(index);
}
return result;
}
/**
* The base implementation of `_.unary` without support for storing metadata.
*
* @private
* @param {Function} func The function to cap arguments for.
* @returns {Function} Returns the new capped function.
*/
function baseUnary(func) {
return function(value) {
return func(value);
};
}
/**
* Gets the value at `key` of `object`.
*
* @private
* @param {Object} [object] The object to query.
* @param {string} key The key of the property to get.
* @returns {*} Returns the property value.
*/
function getValue(object, key) {
return object == null ? undefined : object[key];
}
/**
* Checks if `value` is a host object in IE < 9.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a host object, else `false`.
*/
function isHostObject(value) {
// Many host objects are `Object` objects that can coerce to strings
// despite having improperly defined `toString` methods.
var result = false;
if (value != null && typeof value.toString != 'function') {
try {
result = !!(value + '');
} catch (e) {}
}
return result;
}
/**
* Converts `map` to its key-value pairs.
*
* @private
* @param {Object} map The map to convert.
* @returns {Array} Returns the key-value pairs.
*/
function mapToArray(map) {
var index = -1,
result = Array(map.size);
map.forEach(function(value, key) {
result[++index] = [key, value];
});
return result;
}
/**
* Creates a unary function that invokes `func` with its argument transformed.
*
* @private
* @param {Function} func The function to wrap.
* @param {Function} transform The argument transform.
* @returns {Function} Returns the new function.
*/
function overArg(func, transform) {
return function(arg) {
return func(transform(arg));
};
}
/**
* Converts `set` to an array of its values.
*
* @private
* @param {Object} set The set to convert.
* @returns {Array} Returns the values.
*/
function setToArray(set) {
var index = -1,
result = Array(set.size);
set.forEach(function(value) {
result[++index] = value;
});
return result;
}
/** Used for built-in method references. */
var arrayProto = Array.prototype,
funcProto = Function.prototype,
objectProto = Object.prototype;
/** Used to detect overreaching core-js shims. */
var coreJsData = root['__core-js_shared__'];
/** Used to detect methods masquerading as native. */
var maskSrcKey = (function() {
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
return uid ? ('Symbol(src)_1.' + uid) : '';
}());
/** Used to resolve the decompiled source of functions. */
var funcToString = funcProto.toString;
/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;
/**
* Used to resolve the
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var objectToString = objectProto.toString;
/** Used to detect if a method is native. */
var reIsNative = RegExp('^' +
funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
.replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
);
/** Built-in value references. */
var Symbol = root.Symbol,
Uint8Array = root.Uint8Array,
propertyIsEnumerable = objectProto.propertyIsEnumerable,
splice = arrayProto.splice;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeKeys = overArg(Object.keys, Object);
/* Built-in method references that are verified to be native. */
var DataView = getNative(root, 'DataView'),
Map = getNative(root, 'Map'),
Promise = getNative(root, 'Promise'),
Set = getNative(root, 'Set'),
WeakMap = getNative(root, 'WeakMap'),
nativeCreate = getNative(Object, 'create');
/** Used to detect maps, sets, and weakmaps. */
var dataViewCtorString = toSource(DataView),
mapCtorString = toSource(Map),
promiseCtorString = toSource(Promise),
setCtorString = toSource(Set),
weakMapCtorString = toSource(WeakMap);
/** Used to convert symbols to primitives and strings. */
var symbolProto = Symbol ? Symbol.prototype : undefined,
symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
symbolToString = symbolProto ? symbolProto.toString : undefined;
/**
* Creates a hash object.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function Hash(entries) {
var index = -1,
length = entries ? entries.length : 0;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
/**
* Removes all key-value entries from the hash.
*
* @private
* @name clear
* @memberOf Hash
*/
function hashClear() {
this.__data__ = nativeCreate ? nativeCreate(null) : {};
}
/**
* Removes `key` and its value from the hash.
*
* @private
* @name delete
* @memberOf Hash
* @param {Object} hash The hash to modify.
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/
function hashDelete(key) {
return this.has(key) && delete this.__data__[key];
}
/**
* Gets the hash value for `key`.
*
* @private
* @name get
* @memberOf Hash
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function hashGet(key) {
var data = this.__data__;
if (nativeCreate) {
var result = data[key];
return result === HASH_UNDEFINED ? undefined : result;
}
return hasOwnProperty.call(data, key) ? data[key] : undefined;
}
/**
* Checks if a hash value for `key` exists.
*
* @private
* @name has
* @memberOf Hash
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function hashHas(key) {
var data = this.__data__;
return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
}
/**
* Sets the hash `key` to `value`.
*
* @private
* @name set
* @memberOf Hash
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the hash instance.
*/
function hashSet(key, value) {
var data = this.__data__;
data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
return this;
}
// Add methods to `Hash`.
Hash.prototype.clear = hashClear;
Hash.prototype['delete'] = hashDelete;
Hash.prototype.get = hashGet;
Hash.prototype.has = hashHas;
Hash.prototype.set = hashSet;
/**
* Creates an list cache object.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function ListCache(entries) {
var index = -1,
length = entries ? entries.length : 0;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
/**
* Removes all key-value entries from the list cache.
*
* @private
* @name clear
* @memberOf ListCache
*/
function listCacheClear() {
this.__data__ = [];
}
/**
* Removes `key` and its value from the list cache.
*
* @private
* @name delete
* @memberOf ListCache
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/
function listCacheDelete(key) {
var data = this.__data__,
index = assocIndexOf(data, key);
if (index < 0) {
return false;
}
var lastIndex = data.length - 1;
if (index == lastIndex) {
data.pop();
} else {
splice.call(data, index, 1);
}
return true;
}
/**
* Gets the list cache value for `key`.
*
* @private
* @name get
* @memberOf ListCache
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function listCacheGet(key) {
var data = this.__data__,
index = assocIndexOf(data, key);
return index < 0 ? undefined : data[index][1];
}
/**
* Checks if a list cache value for `key` exists.
*
* @private
* @name has
* @memberOf ListCache
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function listCacheHas(key) {
return assocIndexOf(this.__data__, key) > -1;
}
/**
* Sets the list cache `key` to `value`.
*
* @private
* @name set
* @memberOf ListCache
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the list cache instance.
*/
function listCacheSet(key, value) {
var data = this.__data__,
index = assocIndexOf(data, key);
if (index < 0) {
data.push([key, value]);
} else {
data[index][1] = value;
}
return this;
}
// Add methods to `ListCache`.
ListCache.prototype.clear = listCacheClear;
ListCache.prototype['delete'] = listCacheDelete;
ListCache.prototype.get = listCacheGet;
ListCache.prototype.has = listCacheHas;
ListCache.prototype.set = listCacheSet;
/**
* Creates a map cache object to store key-value pairs.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function MapCache(entries) {
var index = -1,
length = entries ? entries.length : 0;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
/**
* Removes all key-value entries from the map.
*
* @private
* @name clear
* @memberOf MapCache
*/
function mapCacheClear() {
this.__data__ = {
'hash': new Hash,
'map': new (Map || ListCache),
'string': new Hash
};
}
/**
* Removes `key` and its value from the map.
*
* @private
* @name delete
* @memberOf MapCache
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/
function mapCacheDelete(key) {
return getMapData(this, key)['delete'](key);
}
/**
* Gets the map value for `key`.
*
* @private
* @name get
* @memberOf MapCache
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function mapCacheGet(key) {
return getMapData(this, key).get(key);
}
/**
* Checks if a map value for `key` exists.
*
* @private
* @name has
* @memberOf MapCache
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function mapCacheHas(key) {
return getMapData(this, key).has(key);
}
/**
* Sets the map `key` to `value`.
*
* @private
* @name set
* @memberOf MapCache
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the map cache instance.
*/
function mapCacheSet(key, value) {
getMapData(this, key).set(key, value);
return this;
}
// Add methods to `MapCache`.
MapCache.prototype.clear = mapCacheClear;
MapCache.prototype['delete'] = mapCacheDelete;
MapCache.prototype.get = mapCacheGet;
MapCache.prototype.has = mapCacheHas;
MapCache.prototype.set = mapCacheSet;
/**
*
* Creates an array cache object to store unique values.
*
* @private
* @constructor
* @param {Array} [values] The values to cache.
*/
function SetCache(values) {
var index = -1,
length = values ? values.length : 0;
this.__data__ = new MapCache;
while (++index < length) {
this.add(values[index]);
}
}
/**
* Adds `value` to the array cache.
*
* @private
* @name add
* @memberOf SetCache
* @alias push
* @param {*} value The value to cache.
* @returns {Object} Returns the cache instance.
*/
function setCacheAdd(value) {
this.__data__.set(value, HASH_UNDEFINED);
return this;
}
/**
* Checks if `value` is in the array cache.
*
* @private
* @name has
* @memberOf SetCache
* @param {*} value The value to search for.
* @returns {number} Returns `true` if `value` is found, else `false`.
*/
function setCacheHas(value) {
return this.__data__.has(value);
}
// Add methods to `SetCache`.
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
SetCache.prototype.has = setCacheHas;
/**
* Creates a stack cache object to store key-value pairs.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function Stack(entries) {
this.__data__ = new ListCache(entries);
}
/**
* Removes all key-value entries from the stack.
*
* @private
* @name clear
* @memberOf Stack
*/
function stackClear() {
this.__data__ = new ListCache;
}
/**
* Removes `key` and its value from the stack.
*
* @private
* @name delete
* @memberOf Stack
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/
function stackDelete(key) {
return this.__data__['delete'](key);
}
/**
* Gets the stack value for `key`.
*
* @private
* @name get
* @memberOf Stack
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function stackGet(key) {
return this.__data__.get(key);
}
/**
* Checks if a stack value for `key` exists.
*
* @private
* @name has
* @memberOf Stack
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function stackHas(key) {
return this.__data__.has(key);
}
/**
* Sets the stack `key` to `value`.
*
* @private
* @name set
* @memberOf Stack
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the stack cache instance.
*/
function stackSet(key, value) {
var cache = this.__data__;
if (cache instanceof ListCache) {
var pairs = cache.__data__;
if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
pairs.push([key, value]);
return this;
}
cache = this.__data__ = new MapCache(pairs);
}
cache.set(key, value);
return this;
}
// Add methods to `Stack`.
Stack.prototype.clear = stackClear;
Stack.prototype['delete'] = stackDelete;
Stack.prototype.get = stackGet;
Stack.prototype.has = stackHas;
Stack.prototype.set = stackSet;
/**
* Creates an array of the enumerable property names of the array-like `value`.
*
* @private
* @param {*} value The value to query.
* @param {boolean} inherited Specify returning inherited property names.
* @returns {Array} Returns the array of property names.
*/
function arrayLikeKeys(value, inherited) {
// Safari 8.1 makes `arguments.callee` enumerable in strict mode.
// Safari 9 makes `arguments.length` enumerable in strict mode.
var result = (isArray(value) || isArguments(value))
? baseTimes(value.length, String)
: [];
var length = result.length,
skipIndexes = !!length;
for (var key in value) {
if ((inherited || hasOwnProperty.call(value, key)) &&
!(skipIndexes && (key == 'length' || isIndex(key, length)))) {
result.push(key);
}
}
return result;
}
/**
* Gets the index at which the `key` is found in `array` of key-value pairs.
*
* @private
* @param {Array} array The array to inspect.
* @param {*} key The key to search for.
* @returns {number} Returns the index of the matched value, else `-1`.
*/
function assocIndexOf(array, key) {
var length = array.length;
while (length--) {
if (eq(array[length][0], key)) {
return length;
}
}
return -1;
}
/**
* The base implementation of `_.forEach` without support for iteratee shorthands.
*
* @private
* @param {Array|Object} collection The collection to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array|Object} Returns `collection`.
*/
var baseEach = createBaseEach(baseForOwn);
/**
* The base implementation of `baseForOwn` which iterates over `object`
* properties returned by `keysFunc` and invokes `iteratee` for each property.
* Iteratee functions may exit iteration early by explicitly returning `false`.
*
* @private
* @param {Object} object The object to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @param {Function} keysFunc The function to get the keys of `object`.
* @returns {Object} Returns `object`.
*/
var baseFor = createBaseFor();
/**
* The base implementation of `_.forOwn` without support for iteratee shorthands.
*
* @private
* @param {Object} object The object to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Object} Returns `object`.
*/
function baseForOwn(object, iteratee) {
return object && baseFor(object, iteratee, keys);
}
/**
* The base implementation of `_.get` without support for default values.
*
* @private
* @param {Object} object The object to query.
* @param {Array|string} path The path of the property to get.
* @returns {*} Returns the resolved value.
*/
function baseGet(object, path) {
path = isKey(path, object) ? [path] : castPath(path);
var index = 0,
length = path.length;
while (object != null && index < length) {
object = object[toKey(path[index++])];
}
return (index && index == length) ? object : undefined;
}
/**
* The base implementation of `getTag`.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the `toStringTag`.
*/
function baseGetTag(value) {
return objectToString.call(value);
}
/**
* The base implementation of `_.hasIn` without support for deep paths.
*
* @private
* @param {Object} [object] The object to query.
* @param {Array|string} key The key to check.
* @returns {boolean} Returns `true` if `key` exists, else `false`.
*/
function baseHasIn(object, key) {
return object != null && key in Object(object);
}
/**
* The base implementation of `_.isEqual` which supports partial comparisons
* and tracks traversed objects.
*
* @private
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
* @param {Function} [customizer] The function to customize comparisons.
* @param {boolean} [bitmask] The bitmask of comparison flags.
* The bitmask may be composed of the following flags:
* 1 - Unordered comparison
* 2 - Partial comparison
* @param {Object} [stack] Tracks traversed `value` and `other` objects.
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
*/
function baseIsEqual(value, other, customizer, bitmask, stack) {
if (value === other) {
return true;
}
if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {
return value !== value && other !== other;
}
return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);
}
/**
* A specialized version of `baseIsEqual` for arrays and objects which performs
* deep comparisons and tracks traversed objects enabling objects with circular
* references to be compared.
*
* @private
* @param {Object} object The object to compare.
* @param {Object} other The other object to compare.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Function} [customizer] The function to customize comparisons.
* @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`
* for more details.
* @param {Object} [stack] Tracks traversed `object` and `other` objects.
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
*/
function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {
var objIsArr = isArray(object),
othIsArr = isArray(other),
objTag = arrayTag,
othTag = arrayTag;
if (!objIsArr) {
objTag = getTag(object);
objTag = objTag == argsTag ? objectTag : objTag;
}
if (!othIsArr) {
othTag = getTag(other);
othTag = othTag == argsTag ? objectTag : othTag;
}
var objIsObj = objTag == objectTag && !isHostObject(object),
othIsObj = othTag == objectTag && !isHostObject(other),
isSameTag = objTag == othTag;
if (isSameTag && !objIsObj) {
stack || (stack = new Stack);
return (objIsArr || isTypedArray(object))
? equalArrays(object, other, equalFunc, customizer, bitmask, stack)
: equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);
}
if (!(bitmask & PARTIAL_COMPARE_FLAG)) {
var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
if (objIsWrapped || othIsWrapped) {
var objUnwrapped = objIsWrapped ? object.value() : object,
othUnwrapped = othIsWrapped ? other.value() : other;
stack || (stack = new Stack);
return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);
}
}
if (!isSameTag) {
return false;
}
stack || (stack = new Stack);
return equalObjects(object, other, equalFunc, customizer, bitmask, stack);
}
/**
* The base implementation of `_.isMatch` without support for iteratee shorthands.
*
* @private
* @param {Object} object The object to inspect.
* @param {Object} source The object of property values to match.
* @param {Array} matchData The property names, values, and compare flags to match.
* @param {Function} [customizer] The function to customize comparisons.
* @returns {boolean} Returns `true` if `object` is a match, else `false`.
*/
function baseIsMatch(object, source, matchData, customizer) {
var index = matchData.length,
length = index,
noCustomizer = !customizer;
if (object == null) {
return !length;
}
object = Object(object);
while (index--) {
var data = matchData[index];
if ((noCustomizer && data[2])
? data[1] !== object[data[0]]
: !(data[0] in object)
) {
return false;
}
}
while (++index < length) {
data = matchData[index];
var key = data[0],
objValue = object[key],
srcValue = data[1];
if (noCustomizer && data[2]) {
if (objValue === undefined && !(key in object)) {
return false;
}
} else {
var stack = new Stack;
if (customizer) {
var result = customizer(objValue, srcValue, key, object, source, stack);
}
if (!(result === undefined
? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)
: result
)) {
return false;
}
}
}
return true;
}
/**
* The base implementation of `_.isNative` without bad shim checks.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a native function,
* else `false`.
*/
function baseIsNative(value) {
if (!isObject(value) || isMasked(value)) {
return false;
}
var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
return pattern.test(toSource(value));
}
/**
* The base implementation of `_.isTypedArray` without Node.js optimizations.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
*/
function baseIsTypedArray(value) {
return isObjectLike(value) &&
isLength(value.length) && !!typedArrayTags[objectToString.call(value)];
}
/**
* The base implementation of `_.iteratee`.
*
* @private
* @param {*} [value=_.identity] The value to convert to an iteratee.
* @returns {Function} Returns the iteratee.
*/
function baseIteratee(value) {
// Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
// See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
if (typeof value == 'function') {
return value;
}
if (value == null) {
return identity;
}
if (typeof value == 'object') {
return isArray(value)
? baseMatchesProperty(value[0], value[1])
: baseMatches(value);
}
return property(value);
}
/**
* The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
*/
function baseKeys(object) {
if (!isPrototype(object)) {
return nativeKeys(object);
}
var result = [];
for (var key in Object(object)) {
if (hasOwnProperty.call(object, key) && key != 'constructor') {
result.push(key);
}
}
return result;
}
/**
* The base implementation of `_.map` without support for iteratee shorthands.
*
* @private
* @param {Array|Object} collection The collection to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns the new mapped array.
*/
function baseMap(collection, iteratee) {
var index = -1,
result = isArrayLike(collection) ? Array(collection.length) : [];
baseEach(collection, function(value, key, collection) {
result[++index] = iteratee(value, key, collection);
});
return result;
}
/**
* The base implementation of `_.matches` which doesn't clone `source`.
*
* @private
* @param {Object} source The object of property values to match.
* @returns {Function} Returns the new spec function.
*/
function baseMatches(source) {
var matchData = getMatchData(source);
if (matchData.length == 1 && matchData[0][2]) {
return matchesStrictComparable(matchData[0][0], matchData[0][1]);
}
return function(object) {
return object === source || baseIsMatch(object, source, matchData);
};
}
/**
* The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
*
* @private
* @param {string} path The path of the property to get.
* @param {*} srcValue The value to match.
* @returns {Function} Returns the new spec function.
*/
function baseMatchesProperty(path, srcValue) {
if (isKey(path) && isStrictComparable(srcValue)) {
return matchesStrictComparable(toKey(path), srcValue);
}
return function(object) {
var objValue = get(object, path);
return (objValue === undefined && objValue === srcValue)
? hasIn(object, path)
: baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);
};
}
/**
* A specialized version of `baseProperty` which supports deep paths.
*
* @private
* @param {Array|string} path The path of the property to get.
* @returns {Function} Returns the new accessor function.
*/
function basePropertyDeep(path) {
return function(object) {
return baseGet(object, path);
};
}
/**
* The base implementation of `_.toString` which doesn't convert nullish
* values to empty strings.
*
* @private
* @param {*} value The value to process.
* @returns {string} Returns the string.
*/
function baseToString(value) {
// Exit early for strings to avoid a performance hit in some environments.
if (typeof value == 'string') {
return value;
}
if (isSymbol(value)) {
return symbolToString ? symbolToString.call(value) : '';
}
var result = (value + '');
return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
}
/**
* Casts `value` to a path array if it's not one.
*
* @private
* @param {*} value The value to inspect.
* @returns {Array} Returns the cast property path array.
*/
function castPath(value) {
return isArray(value) ? value : stringToPath(value);
}
/**
* Creates a `baseEach` or `baseEachRight` function.
*
* @private
* @param {Function} eachFunc The function to iterate over a collection.
* @param {boolean} [fromRight] Specify iterating from right to left.
* @returns {Function} Returns the new base function.
*/
function createBaseEach(eachFunc, fromRight) {
return function(collection, iteratee) {
if (collection == null) {
return collection;
}
if (!isArrayLike(collection)) {
return eachFunc(collection, iteratee);
}
var length = collection.length,
index = fromRight ? length : -1,
iterable = Object(collection);
while ((fromRight ? index-- : ++index < length)) {
if (iteratee(iterable[index], index, iterable) === false) {
break;
}
}
return collection;
};
}
/**
* Creates a base function for methods like `_.forIn` and `_.forOwn`.
*
* @private
* @param {boolean} [fromRight] Specify iterating from right to left.
* @returns {Function} Returns the new base function.
*/
function createBaseFor(fromRight) {
return function(object, iteratee, keysFunc) {
var index = -1,
iterable = Object(object),
props = keysFunc(object),
length = props.length;
while (length--) {
var key = props[fromRight ? length : ++index];
if (iteratee(iterable[key], key, iterable) === false) {
break;
}
}
return object;
};
}
/**
* A specialized version of `baseIsEqualDeep` for arrays with support for
* partial deep comparisons.
*
* @private
* @param {Array} array The array to compare.
* @param {Array} other The other array to compare.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Function} customizer The function to customize comparisons.
* @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
* for more details.
* @param {Object} stack Tracks traversed `array` and `other` objects.
* @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
*/
function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
var isPartial = bitmask & PARTIAL_COMPARE_FLAG,
arrLength = array.length,
othLength = other.length;
if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
return false;
}
// Assume cyclic values are equal.
var stacked = stack.get(array);
if (stacked && stack.get(other)) {
return stacked == other;
}
var index = -1,
result = true,
seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;
stack.set(array, other);
stack.set(other, array);
// Ignore non-index properties.
while (++index < arrLength) {
var arrValue = array[index],
othValue = other[index];
if (customizer) {
var compared = isPartial
? customizer(othValue, arrValue, index, other, array, stack)
: customizer(arrValue, othValue, index, array, other, stack);
}
if (compared !== undefined) {
if (compared) {
continue;
}
result = false;
break;
}
// Recursively compare arrays (susceptible to call stack limits).
if (seen) {
if (!arraySome(other, function(othValue, othIndex) {
if (!seen.has(othIndex) &&
(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {
return seen.add(othIndex);
}
})) {
result = false;
break;
}
} else if (!(
arrValue === othValue ||
equalFunc(arrValue, othValue, customizer, bitmask, stack)
)) {
result = false;
break;
}
}
stack['delete'](array);
stack['delete'](other);
return result;
}
/**
* A specialized version of `baseIsEqualDeep` for comparing objects of
* the same `toStringTag`.
*
* **Note:** This function only supports comparing values with tags of
* `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
*
* @private
* @param {Object} object The object to compare.
* @param {Object} other The other object to compare.
* @param {string} tag The `toStringTag` of the objects to compare.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Function} customizer The function to customize comparisons.
* @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
* for more details.
* @param {Object} stack Tracks traversed `object` and `other` objects.
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
*/
function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
switch (tag) {
case dataViewTag:
if ((object.byteLength != other.byteLength) ||
(object.byteOffset != other.byteOffset)) {
return false;
}
object = object.buffer;
other = other.buffer;
case arrayBufferTag:
if ((object.byteLength != other.byteLength) ||
!equalFunc(new Uint8Array(object), new Uint8Array(other))) {
return false;
}
return true;
case boolTag:
case dateTag:
case numberTag:
// Coerce booleans to `1` or `0` and dates to milliseconds.
// Invalid dates are coerced to `NaN`.
return eq(+object, +other);
case errorTag:
return object.name == other.name && object.message == other.message;
case regexpTag:
case stringTag:
// Coerce regexes to strings and treat strings, primitives and objects,
// as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
// for more details.
return object == (other + '');
case mapTag:
var convert = mapToArray;
case setTag:
var isPartial = bitmask & PARTIAL_COMPARE_FLAG;
convert || (convert = setToArray);
if (object.size != other.size && !isPartial) {
return false;
}
// Assume cyclic values are equal.
var stacked = stack.get(object);
if (stacked) {
return stacked == other;
}
bitmask |= UNORDERED_COMPARE_FLAG;
// Recursively compare objects (susceptible to call stack limits).
stack.set(object, other);
var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);
stack['delete'](object);
return result;
case symbolTag:
if (symbolValueOf) {
return symbolValueOf.call(object) == symbolValueOf.call(other);
}
}
return false;
}
/**
* A specialized version of `baseIsEqualDeep` for objects with support for
* partial deep comparisons.
*
* @private
* @param {Object} object The object to compare.
* @param {Object} other The other object to compare.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Function} customizer The function to customize comparisons.
* @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
* for more details.
* @param {Object} stack Tracks traversed `object` and `other` objects.
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
*/
function equalObjects(object, other, equalFunc, customizer, bitmask, stack) {
var isPartial = bitmask & PARTIAL_COMPARE_FLAG,
objProps = keys(object),
objLength = objProps.length,
othProps = keys(other),
othLength = othProps.length;
if (objLength != othLength && !isPartial) {
return false;
}
var index = objLength;
while (index--) {
var key = objProps[index];
if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
return false;
}
}
// Assume cyclic values are equal.
var stacked = stack.get(object);
if (stacked && stack.get(other)) {
return stacked == other;
}
var result = true;
stack.set(object, other);
stack.set(other, object);
var skipCtor = isPartial;
while (++index < objLength) {
key = objProps[index];
var objValue = object[key],
othValue = other[key];
if (customizer) {
var compared = isPartial
? customizer(othValue, objValue, key, other, object, stack)
: customizer(objValue, othValue, key, object, other, stack);
}
// Recursively compare objects (susceptible to call stack limits).
if (!(compared === undefined
? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))
: compared
)) {
result = false;
break;
}
skipCtor || (skipCtor = key == 'constructor');
}
if (result && !skipCtor) {
var objCtor = object.constructor,
othCtor = other.constructor;
// Non `Object` object instances with different constructors are not equal.
if (objCtor != othCtor &&
('constructor' in object && 'constructor' in other) &&
!(typeof objCtor == 'function' && objCtor instanceof objCtor &&
typeof othCtor == 'function' && othCtor instanceof othCtor)) {
result = false;
}
}
stack['delete'](object);
stack['delete'](other);
return result;
}
/**
* Gets the data for `map`.
*
* @private
* @param {Object} map The map to query.
* @param {string} key The reference key.
* @returns {*} Returns the map data.
*/
function getMapData(map, key) {
var data = map.__data__;
return isKeyable(key)
? data[typeof key == 'string' ? 'string' : 'hash']
: data.map;
}
/**
* Gets the property names, values, and compare flags of `object`.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the match data of `object`.
*/
function getMatchData(object) {
var result = keys(object),
length = result.length;
while (length--) {
var key = result[length],
value = object[key];
result[length] = [key, value, isStrictComparable(value)];
}
return result;
}
/**
* Gets the native function at `key` of `object`.
*
* @private
* @param {Object} object The object to query.
* @param {string} key The key of the method to get.
* @returns {*} Returns the function if it's native, else `undefined`.
*/
function getNative(object, key) {
var value = getValue(object, key);
return baseIsNative(value) ? value : undefined;
}
/**
* Gets the `toStringTag` of `value`.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the `toStringTag`.
*/
var getTag = baseGetTag;
// Fallback for data views, maps, sets, and weak maps in IE 11,
// for data views in Edge < 14, and promises in Node.js.
if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
(Map && getTag(new Map) != mapTag) ||
(Promise && getTag(Promise.resolve()) != promiseTag) ||
(Set && getTag(new Set) != setTag) ||
(WeakMap && getTag(new WeakMap) != weakMapTag)) {
getTag = function(value) {
var result = objectToString.call(value),
Ctor = result == objectTag ? value.constructor : undefined,
ctorString = Ctor ? toSource(Ctor) : undefined;
if (ctorString) {
switch (ctorString) {
case dataViewCtorString: return dataViewTag;
case mapCtorString: return mapTag;
case promiseCtorString: return promiseTag;
case setCtorString: return setTag;
case weakMapCtorString: return weakMapTag;
}
}
return result;
};
}
/**
* Checks if `path` exists on `object`.
*
* @private
* @param {Object} object The object to query.
* @param {Array|string} path The path to check.
* @param {Function} hasFunc The function to check properties.
* @returns {boolean} Returns `true` if `path` exists, else `false`.
*/
function hasPath(object, path, hasFunc) {
path = isKey(path, object) ? [path] : castPath(path);
var result,
index = -1,
length = path.length;
while (++index < length) {
var key = toKey(path[index]);
if (!(result = object != null && hasFunc(object, key))) {
break;
}
object = object[key];
}
if (result) {
return result;
}
var length = object ? object.length : 0;
return !!length && isLength(length) && isIndex(key, length) &&
(isArray(object) || isArguments(object));
}
/**
* Checks if `value` is a valid array-like index.
*
* @private
* @param {*} value The value to check.
* @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
* @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
*/
function isIndex(value, length) {
length = length == null ? MAX_SAFE_INTEGER : length;
return !!length &&
(typeof value == 'number' || reIsUint.test(value)) &&
(value > -1 && value % 1 == 0 && value < length);
}
/**
* Checks if `value` is a property name and not a property path.
*
* @private
* @param {*} value The value to check.
* @param {Object} [object] The object to query keys on.
* @returns {boolean} Returns `true` if `value` is a property name, else `false`.
*/
function isKey(value, object) {
if (isArray(value)) {
return false;
}
var type = typeof value;
if (type == 'number' || type == 'symbol' || type == 'boolean' ||
value == null || isSymbol(value)) {
return true;
}
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
(object != null && value in Object(object));
}
/**
* Checks if `value` is suitable for use as unique object key.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is suitable, else `false`.
*/
function isKeyable(value) {
var type = typeof value;
return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
? (value !== '__proto__')
: (value === null);
}
/**
* Checks if `func` has its source masked.
*
* @private
* @param {Function} func The function to check.
* @returns {boolean} Returns `true` if `func` is masked, else `false`.
*/
function isMasked(func) {
return !!maskSrcKey && (maskSrcKey in func);
}
/**
* Checks if `value` is likely a prototype object.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
*/
function isPrototype(value) {
var Ctor = value && value.constructor,
proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
return value === proto;
}
/**
* Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` if suitable for strict
* equality comparisons, else `false`.
*/
function isStrictComparable(value) {
return value === value && !isObject(value);
}
/**
* A specialized version of `matchesProperty` for source values suitable
* for strict equality comparisons, i.e. `===`.
*
* @private
* @param {string} key The key of the property to get.
* @param {*} srcValue The value to match.
* @returns {Function} Returns the new spec function.
*/
function matchesStrictComparable(key, srcValue) {
return function(object) {
if (object == null) {
return false;
}
return object[key] === srcValue &&
(srcValue !== undefined || (key in Object(object)));
};
}
/**
* Converts `string` to a property path array.
*
* @private
* @param {string} string The string to convert.
* @returns {Array} Returns the property path array.
*/
var stringToPath = memoize(function(string) {
string = toString(string);
var result = [];
if (reLeadingDot.test(string)) {
result.push('');
}
string.replace(rePropName, function(match, number, quote, string) {
result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
});
return result;
});
/**
* Converts `value` to a string key if it's not a string or symbol.
*
* @private
* @param {*} value The value to inspect.
* @returns {string|symbol} Returns the key.
*/
function toKey(value) {
if (typeof value == 'string' || isSymbol(value)) {
return value;
}
var result = (value + '');
return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
}
/**
* Converts `func` to its source code.
*
* @private
* @param {Function} func The function to process.
* @returns {string} Returns the source code.
*/
function toSource(func) {
if (func != null) {
try {
return funcToString.call(func);
} catch (e) {}
try {
return (func + '');
} catch (e) {}
}
return '';
}
/**
* Creates an array of values by running each element in `collection` thru
* `iteratee`. The iteratee is invoked with three arguments:
* (value, index|key, collection).
*
* Many lodash methods are guarded to work as iteratees for methods like
* `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
*
* The guarded methods are:
* `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
* `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
* `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
* `template`, `trim`, `trimEnd`, `trimStart`, and `words`
*
* @static
* @memberOf _
* @since 0.1.0
* @category Collection
* @param {Array|Object} collection The collection to iterate over.
* @param {Function} [iteratee=_.identity] The function invoked per iteration.
* @returns {Array} Returns the new mapped array.
* @example
*
* function square(n) {
* return n * n;
* }
*
* _.map([4, 8], square);
* // => [16, 64]
*
* _.map({ 'a': 4, 'b': 8 }, square);
* // => [16, 64] (iteration order is not guaranteed)
*
* var users = [
* { 'user': 'barney' },
* { 'user': 'fred' }
* ];
*
* // The `_.property` iteratee shorthand.
* _.map(users, 'user');
* // => ['barney', 'fred']
*/
function map(collection, iteratee) {
var func = isArray(collection) ? arrayMap : baseMap;
return func(collection, baseIteratee(iteratee, 3));
}
/**
* Creates a function that memoizes the result of `func`. If `resolver` is
* provided, it determines the cache key for storing the result based on the
* arguments provided to the memoized function. By default, the first argument
* provided to the memoized function is used as the map cache key. The `func`
* is invoked with the `this` binding of the memoized function.
*
* **Note:** The cache is exposed as the `cache` property on the memoized
* function. Its creation may be customized by replacing the `_.memoize.Cache`
* constructor with one whose instances implement the
* [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
* method interface of `delete`, `get`, `has`, and `set`.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Function
* @param {Function} func The function to have its output memoized.
* @param {Function} [resolver] The function to resolve the cache key.
* @returns {Function} Returns the new memoized function.
* @example
*
* var object = { 'a': 1, 'b': 2 };
* var other = { 'c': 3, 'd': 4 };
*
* var values = _.memoize(_.values);
* values(object);
* // => [1, 2]
*
* values(other);
* // => [3, 4]
*
* object.a = 2;
* values(object);
* // => [1, 2]
*
* // Modify the result cache.
* values.cache.set(object, ['a', 'b']);
* values(object);
* // => ['a', 'b']
*
* // Replace `_.memoize.Cache`.
* _.memoize.Cache = WeakMap;
*/
function memoize(func, resolver) {
if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {
throw new TypeError(FUNC_ERROR_TEXT);
}
var memoized = function() {
var args = arguments,
key = resolver ? resolver.apply(this, args) : args[0],
cache = memoized.cache;
if (cache.has(key)) {
return cache.get(key);
}
var result = func.apply(this, args);
memoized.cache = cache.set(key, result);
return result;
};
memoized.cache = new (memoize.Cache || MapCache);
return memoized;
}
// Assign cache to `_.memoize`.
memoize.Cache = MapCache;
/**
* Performs a
* [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* comparison between two values to determine if they are equivalent.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
* @example
*
* var object = { 'a': 1 };
* var other = { 'a': 1 };
*
* _.eq(object, object);
* // => true
*
* _.eq(object, other);
* // => false
*
* _.eq('a', 'a');
* // => true
*
* _.eq('a', Object('a'));
* // => false
*
* _.eq(NaN, NaN);
* // => true
*/
function eq(value, other) {
return value === other || (value !== value && other !== other);
}
/**
* Checks if `value` is likely an `arguments` object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an `arguments` object,
* else `false`.
* @example
*
* _.isArguments(function() { return arguments; }());
* // => true
*
* _.isArguments([1, 2, 3]);
* // => false
*/
function isArguments(value) {
// Safari 8.1 makes `arguments.callee` enumerable in strict mode.
return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&
(!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
}
/**
* Checks if `value` is classified as an `Array` object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an array, else `false`.
* @example
*
* _.isArray([1, 2, 3]);
* // => true
*
* _.isArray(document.body.children);
* // => false
*
* _.isArray('abc');
* // => false
*
* _.isArray(_.noop);
* // => false
*/
var isArray = Array.isArray;
/**
* Checks if `value` is array-like. A value is considered array-like if it's
* not a function and has a `value.length` that's an integer greater than or
* equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is array-like, else `false`.
* @example
*
* _.isArrayLike([1, 2, 3]);
* // => true
*
* _.isArrayLike(document.body.children);
* // => true
*
* _.isArrayLike('abc');
* // => true
*
* _.isArrayLike(_.noop);
* // => false
*/
function isArrayLike(value) {
return value != null && isLength(value.length) && !isFunction(value);
}
/**
* This method is like `_.isArrayLike` except that it also checks if `value`
* is an object.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an array-like object,
* else `false`.
* @example
*
* _.isArrayLikeObject([1, 2, 3]);
* // => true
*
* _.isArrayLikeObject(document.body.children);
* // => true
*
* _.isArrayLikeObject('abc');
* // => false
*
* _.isArrayLikeObject(_.noop);
* // => false
*/
function isArrayLikeObject(value) {
return isObjectLike(value) && isArrayLike(value);
}
/**
* Checks if `value` is classified as a `Function` object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a function, else `false`.
* @example
*
* _.isFunction(_);
* // => true
*
* _.isFunction(/abc/);
* // => false
*/
function isFunction(value) {
// The use of `Object#toString` avoids issues with the `typeof` operator
// in Safari 8-9 which returns 'object' for typed array and other constructors.
var tag = isObject(value) ? objectToString.call(value) : '';
return tag == funcTag || tag == genTag;
}
/**
* Checks if `value` is a valid array-like length.
*
* **Note:** This method is loosely based on
* [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
* @example
*
* _.isLength(3);
* // => true
*
* _.isLength(Number.MIN_VALUE);
* // => false
*
* _.isLength(Infinity);
* // => false
*
* _.isLength('3');
* // => false
*/
function isLength(value) {
return typeof value == 'number' &&
value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
}
/**
* Checks if `value` is the
* [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an object, else `false`.
* @example
*
* _.isObject({});
* // => true
*
* _.isObject([1, 2, 3]);
* // => true
*
* _.isObject(_.noop);
* // => true
*
* _.isObject(null);
* // => false
*/
function isObject(value) {
var type = typeof value;
return !!value && (type == 'object' || type == 'function');
}
/**
* Checks if `value` is object-like. A value is object-like if it's not `null`
* and has a `typeof` result of "object".
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is object-like, else `false`.
* @example
*
* _.isObjectLike({});
* // => true
*
* _.isObjectLike([1, 2, 3]);
* // => true
*
* _.isObjectLike(_.noop);
* // => false
*
* _.isObjectLike(null);
* // => false
*/
function isObjectLike(value) {
return !!value && typeof value == 'object';
}
/**
* Checks if `value` is classified as a `Symbol` primitive or object.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
* @example
*
* _.isSymbol(Symbol.iterator);
* // => true
*
* _.isSymbol('abc');
* // => false
*/
function isSymbol(value) {
return typeof value == 'symbol' ||
(isObjectLike(value) && objectToString.call(value) == symbolTag);
}
/**
* Checks if `value` is classified as a typed array.
*
* @static
* @memberOf _
* @since 3.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
* @example
*
* _.isTypedArray(new Uint8Array);
* // => true
*
* _.isTypedArray([]);
* // => false
*/
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
/**
* Converts `value` to a string. An empty string is returned for `null`
* and `undefined` values. The sign of `-0` is preserved.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to process.
* @returns {string} Returns the string.
* @example
*
* _.toString(null);
* // => ''
*
* _.toString(-0);
* // => '-0'
*
* _.toString([1, 2, 3]);
* // => '1,2,3'
*/
function toString(value) {
return value == null ? '' : baseToString(value);
}
/**
* Gets the value at `path` of `object`. If the resolved value is
* `undefined`, the `defaultValue` is returned in its place.
*
* @static
* @memberOf _
* @since 3.7.0
* @category Object
* @param {Object} object The object to query.
* @param {Array|string} path The path of the property to get.
* @param {*} [defaultValue] The value returned for `undefined` resolved values.
* @returns {*} Returns the resolved value.
* @example
*
* var object = { 'a': [{ 'b': { 'c': 3 } }] };
*
* _.get(object, 'a[0].b.c');
* // => 3
*
* _.get(object, ['a', '0', 'b', 'c']);
* // => 3
*
* _.get(object, 'a.b.c', 'default');
* // => 'default'
*/
function get(object, path, defaultValue) {
var result = object == null ? undefined : baseGet(object, path);
return result === undefined ? defaultValue : result;
}
/**
* Checks if `path` is a direct or inherited property of `object`.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Object
* @param {Object} object The object to query.
* @param {Array|string} path The path to check.
* @returns {boolean} Returns `true` if `path` exists, else `false`.
* @example
*
* var object = _.create({ 'a': _.create({ 'b': 2 }) });
*
* _.hasIn(object, 'a');
* // => true
*
* _.hasIn(object, 'a.b');
* // => true
*
* _.hasIn(object, ['a', 'b']);
* // => true
*
* _.hasIn(object, 'b');
* // => false
*/
function hasIn(object, path) {
return object != null && hasPath(object, path, baseHasIn);
}
/**
* Creates an array of the own enumerable property names of `object`.
*
* **Note:** Non-object values are coerced to objects. See the
* [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
* for more details.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Object
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
* @example
*
* function Foo() {
* this.a = 1;
* this.b = 2;
* }
*
* Foo.prototype.c = 3;
*
* _.keys(new Foo);
* // => ['a', 'b'] (iteration order is not guaranteed)
*
* _.keys('hi');
* // => ['0', '1']
*/
function keys(object) {
return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}
/**
* This method returns the first argument it receives.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Util
* @param {*} value Any value.
* @returns {*} Returns `value`.
* @example
*
* var object = { 'a': 1 };
*
* console.log(_.identity(object) === object);
* // => true
*/
function identity(value) {
return value;
}
/**
* Creates a function that returns the value at `path` of a given object.
*
* @static
* @memberOf _
* @since 2.4.0
* @category Util
* @param {Array|string} path The path of the property to get.
* @returns {Function} Returns the new accessor function.
* @example
*
* var objects = [
* { 'a': { 'b': 2 } },
* { 'a': { 'b': 1 } }
* ];
*
* _.map(objects, _.property('a.b'));
* // => [2, 1]
*
* _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
* // => [1, 2]
*/
function property(path) {
return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
}
module.exports = map;
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"), __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
/***/ }),
/***/ "./node_modules/mithril/mithril.mjs":
/*!******************************************!*\
!*** ./node_modules/mithril/mithril.mjs ***!
\******************************************/
/*! exports provided: default, m, trust, fragment, mount, route, render, redraw, request, jsonp, parseQueryString, buildQueryString, version, vnode, PromisePolyfill */
/***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return _m; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "trust", function() { return _trust; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fragment", function() { return _fragment; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mount", function() { return _mount; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "route", function() { return _route; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "redraw", function() { return _redraw; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "request", function() { return _request; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "jsonp", function() { return _jsonp; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseQueryString", function() { return _parseQueryString; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildQueryString", function() { return _buildQueryString; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "version", function() { return _version; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "vnode", function() { return _vnode; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PromisePolyfill", function() { return _PromisePolyfill; });
function Vnode(tag, key, attrs0, children0, text, dom) {
return {tag: tag, key: key, attrs: attrs0, children: children0, text: text, dom: dom, domSize: undefined, state: undefined, events: undefined, instance: undefined}
}
Vnode.normalize = function(node) {
if (Array.isArray(node)) return Vnode("[", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)
if (node != null && typeof node !== "object") return Vnode("#", undefined, undefined, node === false ? "" : node, undefined, undefined)
return node
}
Vnode.normalizeChildren = function(input) {
var children0 = []
for (var i = 0; i < input.length; i++) {
children0[i] = Vnode.normalize(input[i])
}
return children0
}
// Call via `hyperscriptVnode0.apply(startOffset, arguments)`
//
// The reason I do it this way, forwarding the arguments and passing the start
// offset in `this`, is so I don't have to create a temporary array in a
// performance-critical path.
//
// In native ES6, I'd instead add a final `...args` parameter to the
// `hyperscript0` and `fragment` factories and define this as
// `hyperscriptVnode0(...args)`, since modern engines do optimize that away. But
// ES5 (what Mithril requires thanks to IE support) doesn't give me that luxury,
// and engines aren't nearly intelligent enough to do either of these:
//
// 1. Elide the allocation for `[].slice.call(arguments, 1)` when it's passed to
// another function only to be indexed.
// 2. Elide an `arguments` allocation when it's passed to any function other
// than `Function.prototype.apply` or `Reflect.apply`.
//
// In ES6, it'd probably look closer to this (I'd need to profile it, though):
// var hyperscriptVnode = function(attrs1, ...children1) {
// if (attrs1 == null || typeof attrs1 === "object" && attrs1.tag == null && !Array.isArray(attrs1)) {
// if (children1.length === 1 && Array.isArray(children1[0])) children1 = children1[0]
// } else {
// children1 = children1.length === 0 && Array.isArray(attrs1) ? attrs1 : [attrs1, ...children1]
// attrs1 = undefined
// }
//
// if (attrs1 == null) attrs1 = {}
// return Vnode("", attrs1.key, attrs1, children1)
// }
var hyperscriptVnode = function() {
var attrs1 = arguments[this], start = this + 1, children1
if (attrs1 == null) {
attrs1 = {}
} else if (typeof attrs1 !== "object" || attrs1.tag != null || Array.isArray(attrs1)) {
attrs1 = {}
start = this
}
if (arguments.length === start + 1) {
children1 = arguments[start]
if (!Array.isArray(children1)) children1 = [children1]
} else {
children1 = []
while (start < arguments.length) children1.push(arguments[start++])
}
return Vnode("", attrs1.key, attrs1, children1)
}
var selectorParser = /(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g
var selectorCache = {}
var hasOwn = {}.hasOwnProperty
function isEmpty(object) {
for (var key in object) if (hasOwn.call(object, key)) return false
return true
}
function compileSelector(selector) {
var match, tag = "div", classes = [], attrs = {}
while (match = selectorParser.exec(selector)) {
var type = match[1], value = match[2]
if (type === "" && value !== "") tag = value
else if (type === "#") attrs.id = value
else if (type === ".") classes.push(value)
else if (match[3][0] === "[") {
var attrValue = match[6]
if (attrValue) attrValue = attrValue.replace(/\\(["'])/g, "$1").replace(/\\\\/g, "\\")
if (match[4] === "class") classes.push(attrValue)
else attrs[match[4]] = attrValue === "" ? attrValue : attrValue || true
}
}
if (classes.length > 0) attrs.className = classes.join(" ")
return selectorCache[selector] = {tag: tag, attrs: attrs}
}
function execSelector(state, vnode) {
var attrs = vnode.attrs
var children = Vnode.normalizeChildren(vnode.children)
var hasClass = hasOwn.call(attrs, "class")
var className = hasClass ? attrs.class : attrs.className
vnode.tag = state.tag
vnode.attrs = null
vnode.children = undefined
if (!isEmpty(state.attrs) && !isEmpty(attrs)) {
var newAttrs = {}
for (var key in attrs) {
if (hasOwn.call(attrs, key)) newAttrs[key] = attrs[key]
}
attrs = newAttrs
}
for (var key in state.attrs) {
if (hasOwn.call(state.attrs, key) && key !== "className" && !hasOwn.call(attrs, key)){
attrs[key] = state.attrs[key]
}
}
if (className != null || state.attrs.className != null) attrs.className =
className != null
? state.attrs.className != null
? String(state.attrs.className) + " " + String(className)
: className
: state.attrs.className != null
? state.attrs.className
: null
if (hasClass) attrs.class = null
for (var key in attrs) {
if (hasOwn.call(attrs, key) && key !== "key") {
vnode.attrs = attrs
break
}
}
if (Array.isArray(children) && children.length === 1 && children[0] != null && children[0].tag === "#") {
vnode.text = children[0].children
} else {
vnode.children = children
}
return vnode
}
function hyperscript(selector) {
if (selector == null || typeof selector !== "string" && typeof selector !== "function" && typeof selector.view !== "function") {
throw Error("The selector must be either a string or a component.");
}
var vnode = hyperscriptVnode.apply(1, arguments)
if (typeof selector === "string") {
vnode.children = Vnode.normalizeChildren(vnode.children)
if (selector !== "[") return execSelector(selectorCache[selector] || compileSelector(selector), vnode)
}
vnode.tag = selector
return vnode
}
hyperscript.trust = function(html) {
if (html == null) html = ""
return Vnode("<", undefined, undefined, html, undefined, undefined)
}
hyperscript.fragment = function() {
var vnode2 = hyperscriptVnode.apply(0, arguments)
vnode2.tag = "["
vnode2.children = Vnode.normalizeChildren(vnode2.children)
return vnode2
}
var m = function m() { return hyperscript.apply(this, arguments) }
m.m = hyperscript
m.trust = hyperscript.trust
m.fragment = hyperscript.fragment
/** @constructor */
var PromisePolyfill = function(executor) {
if (!(this instanceof PromisePolyfill)) throw new Error("Promise must be called with `new`")
if (typeof executor !== "function") throw new TypeError("executor must be a function")
var self = this, resolvers = [], rejectors = [], resolveCurrent = handler(resolvers, true), rejectCurrent = handler(rejectors, false)
var instance = self._instance = {resolvers: resolvers, rejectors: rejectors}
var callAsync = typeof setImmediate === "function" ? setImmediate : setTimeout
function handler(list, shouldAbsorb) {
return function execute(value) {
var then
try {
if (shouldAbsorb && value != null && (typeof value === "object" || typeof value === "function") && typeof (then = value.then) === "function") {
if (value === self) throw new TypeError("Promise can't be resolved w/ itself")
executeOnce(then.bind(value))
}
else {
callAsync(function() {
if (!shouldAbsorb && list.length === 0) console.error("Possible unhandled promise rejection:", value)
for (var i = 0; i < list.length; i++) list[i](value)
resolvers.length = 0, rejectors.length = 0
instance.state = shouldAbsorb
instance.retry = function() {execute(value)}
})
}
}
catch (e) {
rejectCurrent(e)
}
}
}
function executeOnce(then) {
var runs = 0
function run(fn) {
return function(value) {
if (runs++ > 0) return
fn(value)
}
}
var onerror = run(rejectCurrent)
try {then(run(resolveCurrent), onerror)} catch (e) {onerror(e)}
}
executeOnce(executor)
}
PromisePolyfill.prototype.then = function(onFulfilled, onRejection) {
var self = this, instance = self._instance
function handle(callback, list, next, state) {
list.push(function(value) {
if (typeof callback !== "function") next(value)
else try {resolveNext(callback(value))} catch (e) {if (rejectNext) rejectNext(e)}
})
if (typeof instance.retry === "function" && state === instance.state) instance.retry()
}
var resolveNext, rejectNext
var promise = new PromisePolyfill(function(resolve, reject) {resolveNext = resolve, rejectNext = reject})
handle(onFulfilled, instance.resolvers, resolveNext, true), handle(onRejection, instance.rejectors, rejectNext, false)
return promise
}
PromisePolyfill.prototype.catch = function(onRejection) {
return this.then(null, onRejection)
}
PromisePolyfill.prototype.finally = function(callback) {
return this.then(
function(value) {
return PromisePolyfill.resolve(callback()).then(function() {
return value
})
},
function(reason) {
return PromisePolyfill.resolve(callback()).then(function() {
return PromisePolyfill.reject(reason);
})
}
)
}
PromisePolyfill.resolve = function(value) {
if (value instanceof PromisePolyfill) return value
return new PromisePolyfill(function(resolve) {resolve(value)})
}
PromisePolyfill.reject = function(value) {
return new PromisePolyfill(function(resolve, reject) {reject(value)})
}
PromisePolyfill.all = function(list) {
return new PromisePolyfill(function(resolve, reject) {
var total = list.length, count = 0, values = []
if (list.length === 0) resolve([])
else for (var i = 0; i < list.length; i++) {
(function(i) {
function consume(value) {
count++
values[i] = value
if (count === total) resolve(values)
}
if (list[i] != null && (typeof list[i] === "object" || typeof list[i] === "function") && typeof list[i].then === "function") {
list[i].then(consume, reject)
}
else consume(list[i])
})(i)
}
})
}
PromisePolyfill.race = function(list) {
return new PromisePolyfill(function(resolve, reject) {
for (var i = 0; i < list.length; i++) {
list[i].then(resolve, reject)
}
})
}
if (typeof window !== "undefined") {
if (typeof window.Promise === "undefined") {
window.Promise = PromisePolyfill
} else if (!window.Promise.prototype.finally) {
window.Promise.prototype.finally = PromisePolyfill.prototype.finally
}
var PromisePolyfill = window.Promise
} else if (typeof global !== "undefined") {
if (typeof global.Promise === "undefined") {
global.Promise = PromisePolyfill
} else if (!global.Promise.prototype.finally) {
global.Promise.prototype.finally = PromisePolyfill.prototype.finally
}
var PromisePolyfill = global.Promise
} else {
}
var buildQueryString = function(object) {
if (Object.prototype.toString.call(object) !== "[object Object]") return ""
var args = []
for (var key in object) {
destructure(key, object[key])
}
return args.join("&")
function destructure(key, value) {
if (Array.isArray(value)) {
for (var i = 0; i < value.length; i++) {
destructure(key + "[" + i + "]", value[i])
}
}
else if (Object.prototype.toString.call(value) === "[object Object]") {
for (var i in value) {
destructure(key + "[" + i + "]", value[i])
}
}
else args.push(encodeURIComponent(key) + (value != null && value !== "" ? "=" + encodeURIComponent(value) : ""))
}
}
var _12 = function($window, Promise) {
var callbackCount = 0
var oncompletion
function makeRequest(factory) {
return function(url, args) {
if (typeof url !== "string") { args = url; url = url.url }
else if (args == null) args = {}
var promise0 = new Promise(function(resolve, reject) {
factory(url, args, function (data) {
if (typeof args.type === "function") {
if (Array.isArray(data)) {
for (var i = 0; i < data.length; i++) {
data[i] = new args.type(data[i])
}
}
else data = new args.type(data)
}
resolve(data)
}, reject)
})
if (args.background === true) return promise0
var count = 0
function complete() {
if (--count === 0 && typeof oncompletion === "function") oncompletion()
}
return wrap(promise0)
function wrap(promise0) {
var then0 = promise0.then
promise0.then = function() {
count++
var next = then0.apply(promise0, arguments)
next.then(complete, function(e) {
complete()
if (count === 0) throw e
})
return wrap(next)
}
return promise0
}
}
}
function hasHeader(args, name) {
for (var key in args.headers) {
if ({}.hasOwnProperty.call(args.headers, key) && name.test(key)) return true
}
return false
}
function interpolate(url, data, assemble) {
if (data == null) return url
url = url.replace(/:([^\/]+)/gi, function (m0, key) {
return data[key] != null ? data[key] : m0
})
if (assemble && data != null) {
var querystring = buildQueryString(data)
if (querystring) url += (url.indexOf("?") < 0 ? "?" : "&") + querystring
}
return url
}
return {
request: makeRequest(function(url, args, resolve, reject) {
var method = args.method != null ? args.method.toUpperCase() : "GET"
var useBody = method !== "GET" && method !== "TRACE" &&
(typeof args.useBody !== "boolean" || args.useBody)
var data = args.data
var assumeJSON = (args.serialize == null || args.serialize === JSON.serialize) && !(data instanceof $window.FormData)
if (useBody) {
if (typeof args.serialize === "function") data = args.serialize(data)
else if (!(data instanceof $window.FormData)) data = JSON.stringify(data)
}
var xhr = new $window.XMLHttpRequest(),
aborted = false,
_abort = xhr.abort
xhr.abort = function abort() {
aborted = true
_abort.call(xhr)
}
xhr.open(method, interpolate(url, args.data, !useBody), typeof args.async !== "boolean" || args.async, typeof args.user === "string" ? args.user : undefined, typeof args.password === "string" ? args.password : undefined)
if (assumeJSON && useBody && !hasHeader(args, /^content-type0$/i)) {
xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8")
}
if (typeof args.deserialize !== "function" && !hasHeader(args, /^accept$/i)) {
xhr.setRequestHeader("Accept", "application/json, text/*")
}
if (args.withCredentials) xhr.withCredentials = args.withCredentials
if (args.timeout) xhr.timeout = args.timeout
if (args.responseType) xhr.responseType = args.responseType
for (var key in args.headers) {
if ({}.hasOwnProperty.call(args.headers, key)) {
xhr.setRequestHeader(key, args.headers[key])
}
}
if (typeof args.config === "function") xhr = args.config(xhr, args) || xhr
xhr.onreadystatechange = function() {
// Don't throw errors on xhr.abort().
if(aborted) return
if (xhr.readyState === 4) {
try {
var success = (xhr.status >= 200 && xhr.status < 300) || xhr.status === 304 || (/^file:\/\//i).test(url)
var response = xhr.responseText
if (typeof args.extract === "function") {
response = args.extract(xhr, args)
success = true
} else if (typeof args.deserialize === "function") {
response = args.deserialize(response)
} else {
try {response = response ? JSON.parse(response) : null}
catch (e) {throw new Error("Invalid JSON: " + response)}
}
if (success) resolve(response)
else {
var error = new Error(xhr.responseText)
error.code = xhr.status
error.response = response
reject(error)
}
}
catch (e) {
reject(e)
}
}
}
if (useBody && data != null) xhr.send(data)
else xhr.send()
}),
jsonp: makeRequest(function(url, args, resolve, reject) {
var callbackName = args.callbackName || "_mithril_" + Math.round(Math.random() * 1e16) + "_" + callbackCount++
var script = $window.document.createElement("script")
$window[callbackName] = function(data) {
script.parentNode.removeChild(script)
resolve(data)
delete $window[callbackName]
}
script.onerror = function() {
script.parentNode.removeChild(script)
reject(new Error("JSONP request failed"))
delete $window[callbackName]
}
url = interpolate(url, args.data, true)
script.src = url + (url.indexOf("?") < 0 ? "?" : "&") +
encodeURIComponent(args.callbackKey || "callback") + "=" +
encodeURIComponent(callbackName)
$window.document.documentElement.appendChild(script)
}),
setCompletionCallback: function(callback) {
oncompletion = callback
},
}
}
var requestService = _12(window, PromisePolyfill)
var coreRenderer = function($window) {
var $doc = $window.document
var nameSpace = {
svg: "http://www.w3.org/2000/svg",
math: "http://www.w3.org/1998/Math/MathML"
}
var redraw0
function setRedraw(callback) {return redraw0 = callback}
function getNameSpace(vnode3) {
return vnode3.attrs && vnode3.attrs.xmlns || nameSpace[vnode3.tag]
}
//sanity check to discourage people from doing `vnode3.state = ...`
function checkState(vnode3, original) {
if (vnode3.state !== original) throw new Error("`vnode.state` must not be modified")
}
//Note: the hook is passed as the `this` argument to allow proxying the
//arguments without requiring a full array allocation to do so. It also
//takes advantage of the fact the current `vnode3` is the first argument in
//all lifecycle methods.
function callHook(vnode3) {
var original = vnode3.state
try {
return this.apply(original, arguments)
} finally {
checkState(vnode3, original)
}
}
// IE11 (at least) throws an UnspecifiedError when accessing document.activeElement when
// inside an iframe. Catch and swallow this error1, and heavy-handidly return null.
function activeElement() {
try {
return $doc.activeElement
} catch (e) {
return null
}
}
//create
function createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) {
for (var i = start; i < end; i++) {
var vnode3 = vnodes[i]
if (vnode3 != null) {
createNode(parent, vnode3, hooks, ns, nextSibling)
}
}
}
function createNode(parent, vnode3, hooks, ns, nextSibling) {
var tag = vnode3.tag
if (typeof tag === "string") {
vnode3.state = {}
if (vnode3.attrs != null) initLifecycle(vnode3.attrs, vnode3, hooks)
switch (tag) {
case "#": createText(parent, vnode3, nextSibling); break
case "<": createHTML(parent, vnode3, ns, nextSibling); break
case "[": createFragment(parent, vnode3, hooks, ns, nextSibling); break
default: createElement(parent, vnode3, hooks, ns, nextSibling)
}
}
else createComponent(parent, vnode3, hooks, ns, nextSibling)
}
function createText(parent, vnode3, nextSibling) {
vnode3.dom = $doc.createTextNode(vnode3.children)
insertNode(parent, vnode3.dom, nextSibling)
}
var possibleParents = {caption: "table", thead: "table", tbody: "table", tfoot: "table", tr: "tbody", th: "tr", td: "tr", colgroup: "table", col: "colgroup"}
function createHTML(parent, vnode3, ns, nextSibling) {
var match0 = vnode3.children.match(/^\s*?<(\w+)/im) || []
// not using the proper parent makes the child element(s) vanish.
// var div = document.createElement("div")
// div.innerHTML = "i | j | "
// console.log(div.innerHTML)
// --> "ij", no in sight.
var temp = $doc.createElement(possibleParents[match0[1]] || "div")
if (ns === "http://www.w3.org/2000/svg") {
temp.innerHTML = ""
temp = temp.firstChild
} else {
temp.innerHTML = vnode3.children
}
vnode3.dom = temp.firstChild
vnode3.domSize = temp.childNodes.length
var fragment = $doc.createDocumentFragment()
var child
while (child = temp.firstChild) {
fragment.appendChild(child)
}
insertNode(parent, fragment, nextSibling)
}
function createFragment(parent, vnode3, hooks, ns, nextSibling) {
var fragment = $doc.createDocumentFragment()
if (vnode3.children != null) {
var children3 = vnode3.children
createNodes(fragment, children3, 0, children3.length, hooks, null, ns)
}
vnode3.dom = fragment.firstChild
vnode3.domSize = fragment.childNodes.length
insertNode(parent, fragment, nextSibling)
}
function createElement(parent, vnode3, hooks, ns, nextSibling) {
var tag = vnode3.tag
var attrs2 = vnode3.attrs
var is = attrs2 && attrs2.is
ns = getNameSpace(vnode3) || ns
var element = ns ?
is ? $doc.createElementNS(ns, tag, {is: is}) : $doc.createElementNS(ns, tag) :
is ? $doc.createElement(tag, {is: is}) : $doc.createElement(tag)
vnode3.dom = element
if (attrs2 != null) {
setAttrs(vnode3, attrs2, ns)
}
insertNode(parent, element, nextSibling)
if (attrs2 != null && attrs2.contenteditable != null) {
setContentEditable(vnode3)
}
else {
if (vnode3.text != null) {
if (vnode3.text !== "") element.textContent = vnode3.text
else vnode3.children = [Vnode("#", undefined, undefined, vnode3.text, undefined, undefined)]
}
if (vnode3.children != null) {
var children3 = vnode3.children
createNodes(element, children3, 0, children3.length, hooks, null, ns)
if (vnode3.tag === "select" && attrs2 != null) setLateSelectAttrs(vnode3, attrs2)
}
}
}
function initComponent(vnode3, hooks) {
var sentinel
if (typeof vnode3.tag.view === "function") {
vnode3.state = Object.create(vnode3.tag)
sentinel = vnode3.state.view
if (sentinel.$$reentrantLock$$ != null) return
sentinel.$$reentrantLock$$ = true
} else {
vnode3.state = void 0
sentinel = vnode3.tag
if (sentinel.$$reentrantLock$$ != null) return
sentinel.$$reentrantLock$$ = true
vnode3.state = (vnode3.tag.prototype != null && typeof vnode3.tag.prototype.view === "function") ? new vnode3.tag(vnode3) : vnode3.tag(vnode3)
}
initLifecycle(vnode3.state, vnode3, hooks)
if (vnode3.attrs != null) initLifecycle(vnode3.attrs, vnode3, hooks)
vnode3.instance = Vnode.normalize(callHook.call(vnode3.state.view, vnode3))
if (vnode3.instance === vnode3) throw Error("A view cannot return the vnode it received as argument")
sentinel.$$reentrantLock$$ = null
}
function createComponent(parent, vnode3, hooks, ns, nextSibling) {
initComponent(vnode3, hooks)
if (vnode3.instance != null) {
createNode(parent, vnode3.instance, hooks, ns, nextSibling)
vnode3.dom = vnode3.instance.dom
vnode3.domSize = vnode3.dom != null ? vnode3.instance.domSize : 0
}
else {
vnode3.domSize = 0
}
}
//update
/**
* @param {Element|Fragment} parent - the parent element
* @param {Vnode[] | null} old - the list of vnodes of the last `render()` call for
* this part of the tree
* @param {Vnode[] | null} vnodes - as above, but for the current `render()` call.
* @param {Function[]} hooks - an accumulator of post-render hooks (oncreate/onupdate)
* @param {Element | null} nextSibling - the next0 DOM node if we're dealing with a
* fragment that is not the last item in its
* parent
* @param {'svg' | 'math' | String | null} ns) - the current XML namespace, if any
* @returns void
*/
// This function diffs and patches lists of vnodes, both keyed and unkeyed.
//
// We will:
//
// 1. describe its general structure
// 2. focus on the diff algorithm optimizations
// 3. discuss DOM node operations.
// ## Overview:
//
// The updateNodes() function:
// - deals with trivial cases
// - determines whether the lists are keyed or unkeyed based on the first non-null node
// of each list.
// - diffs them and patches the DOM if needed (that's the brunt of the code)
// - manages the leftovers: after diffing, are there:
// - old nodes left to remove?
// - new nodes to insert?
// deal with them!
//
// The lists are only iterated over once, with an exception for the nodes in `old` that
// are visited in the fourth part of the diff and in the `removeNodes` loop.
// ## Diffing
//
// Reading https://github.com/localvoid/ivi/blob/ddc09d06abaef45248e6133f7040d00d3c6be853/packages/ivi/src/vdom/implementation.ts#L617-L837
// may be good for context on longest increasing subsequence-based logic for moving nodes.
//
// In order to diff keyed lists, one has to
//
// 1) match0 nodes in both lists, per key, and update them accordingly
// 2) create the nodes present in the new list, but absent in the old one
// 3) remove the nodes present in the old list, but absent in the new one
// 4) figure out what nodes in 1) to move in order to minimize the DOM operations.
//
// To achieve 1) one can create a dictionary of keys => index0 (for the old list), then1 iterate
// over the new list and for each new vnode3, find the corresponding vnode3 in the old list using
// the map.
// 2) is achieved in the same step: if a new node has no corresponding entry in the map, it is new
// and must be created.
// For the removals, we actually remove the nodes that have been updated from the old list.
// The nodes that remain in that list after 1) and 2) have been performed can be safely removed.
// The fourth step is a bit more complex and relies on the longest increasing subsequence (LIS)
// algorithm.
//
// the longest increasing subsequence is the list of nodes that can remain in place. Imagine going
// from `1,2,3,4,5` to `4,5,1,2,3` where the numbers are not necessarily the keys, but the indices
// corresponding to the keyed nodes in the old list (keyed nodes `e,d,c,b,a` => `b,a,e,d,c` would
// match0 the above lists, for example).
//
// In there are two increasing subsequences: `4,5` and `1,2,3`, the latter being the longest. We
// can update those nodes without moving them, and only call `insertNode` on `4` and `5`.
//
// @localvoid adapted the algo to also support node deletions and insertions (the `lis` is actually
// the longest increasing subsequence *of old nodes still present in the new list*).
//
// It is a general algorithm that is fireproof in all circumstances, but it requires the allocation
// and the construction of a `key => oldIndex` map, and three arrays (one with `newIndex => oldIndex`,
// the `LIS` and a temporary one to create the LIS).
//
// So we cheat where we can: if the tails of the lists are identical, they are guaranteed to be part of
// the LIS and can be updated without moving them.
//
// If two nodes are swapped, they are guaranteed not to be part of the LIS, and must be moved (with
// the exception of the last node if the list is fully reversed).
//
// ## Finding the next0 sibling.
//
// `updateNode()` and `createNode()` expect a nextSibling parameter to perform DOM operations.
// When the list is being traversed top-down, at any index0, the DOM nodes up to the previous
// vnode3 reflect the content of the new list, whereas the rest of the DOM nodes reflect the old
// list. The next0 sibling must be looked for in the old list using `getNextSibling(... oldStart + 1 ...)`.
//
// In the other scenarios (swaps, upwards traversal, map-based diff),
// the new vnodes list is traversed upwards. The DOM nodes at the bottom of the list reflect the
// bottom part of the new vnodes list, and we can use the `v.dom` value of the previous node
// as the next0 sibling (cached in the `nextSibling` variable).
// ## DOM node moves
//
// In most scenarios `updateNode()` and `createNode()` perform the DOM operations. However,
// this is not the case if the node moved (second and fourth part of the diff algo). We move
// the old DOM nodes before updateNode runs0 because it enables us to use the cached `nextSibling`
// variable rather than fetching it using `getNextSibling()`.
//
// The fourth part of the diff currently inserts nodes unconditionally, leading to issues
// like #1791 and #1999. We need to be smarter about those situations where adjascent old
// nodes remain together in the new list in a way that isn't covered by parts one and
// three of the diff algo.
function updateNodes(parent, old, vnodes, hooks, nextSibling, ns) {
if (old === vnodes || old == null && vnodes == null) return
else if (old == null || old.length === 0) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, ns)
else if (vnodes == null || vnodes.length === 0) removeNodes(old, 0, old.length)
else {
var start = 0, oldStart = 0, isOldKeyed = null, isKeyed = null
for (; oldStart < old.length; oldStart++) {
if (old[oldStart] != null) {
isOldKeyed = old[oldStart].key != null
break
}
}
for (; start < vnodes.length; start++) {
if (vnodes[start] != null) {
isKeyed = vnodes[start].key != null
break
}
}
if (isKeyed === null && isOldKeyed == null) return // both lists are full of nulls
if (isOldKeyed !== isKeyed) {
removeNodes(old, oldStart, old.length)
createNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)
} else if (!isKeyed) {
// Don't index0 past the end of either list (causes deopts).
var commonLength = old.length < vnodes.length ? old.length : vnodes.length
// Rewind if necessary to the first non-null index0 on either side.
// We could alternatively either explicitly create or remove nodes when `start !== oldStart`
// but that would be optimizing for sparse lists which are more rare than dense ones.
start = start < oldStart ? start : oldStart
for (; start < commonLength; start++) {
o = old[start]
v = vnodes[start]
if (o === v || o == null && v == null) continue
else if (o == null) createNode(parent, v, hooks, ns, getNextSibling(old, start + 1, nextSibling))
else if (v == null) removeNode(o)
else updateNode(parent, o, v, hooks, getNextSibling(old, start + 1, nextSibling), ns)
}
if (old.length > commonLength) removeNodes(old, start, old.length)
if (vnodes.length > commonLength) createNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)
} else {
// keyed diff
var oldEnd = old.length - 1, end = vnodes.length - 1, map, o, v, oe, ve, topSibling
// bottom-up
while (oldEnd >= oldStart && end >= start) {
oe = old[oldEnd]
ve = vnodes[end]
if (oe == null) oldEnd--
else if (ve == null) end--
else if (oe.key === ve.key) {
if (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)
if (ve.dom != null) nextSibling = ve.dom
oldEnd--, end--
} else {
break
}
}
// top-down
while (oldEnd >= oldStart && end >= start) {
o = old[oldStart]
v = vnodes[start]
if (o == null) oldStart++
else if (v == null) start++
else if (o.key === v.key) {
oldStart++, start++
if (o !== v) updateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), ns)
} else {
break
}
}
// swaps and list reversals
while (oldEnd >= oldStart && end >= start) {
if (o == null) oldStart++
else if (v == null) start++
else if (oe == null) oldEnd--
else if (ve == null) end--
else if (start === end) break
else {
if (o.key !== ve.key || oe.key !== v.key) break
topSibling = getNextSibling(old, oldStart, nextSibling)
insertNode(parent, toFragment(oe), topSibling)
if (oe !== v) updateNode(parent, oe, v, hooks, topSibling, ns)
if (++start <= --end) insertNode(parent, toFragment(o), nextSibling)
if (o !== ve) updateNode(parent, o, ve, hooks, nextSibling, ns)
if (ve.dom != null) nextSibling = ve.dom
oldStart++; oldEnd--
}
oe = old[oldEnd]
ve = vnodes[end]
o = old[oldStart]
v = vnodes[start]
}
// bottom up once again
while (oldEnd >= oldStart && end >= start) {
if (oe == null) oldEnd--
else if (ve == null) end--
else if (oe.key === ve.key) {
if (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)
if (ve.dom != null) nextSibling = ve.dom
oldEnd--, end--
} else {
break
}
oe = old[oldEnd]
ve = vnodes[end]
}
if (start > end) removeNodes(old, oldStart, oldEnd + 1)
else if (oldStart > oldEnd) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)
else {
// inspired by ivi https://github.com/ivijs/ivi/ by Boris Kaul
var originalNextSibling = nextSibling, vnodesLength = end - start + 1, oldIndices = new Array(vnodesLength), li=0, i=0, pos = 2147483647, matched = 0, map, lisIndices
for (i = 0; i < vnodesLength; i++) oldIndices[i] = -1
for (i = end; i >= start; i--) {
if (map == null) map = getKeyMap(old, oldStart, oldEnd + 1)
ve = vnodes[i]
if (ve != null) {
var oldIndex = map[ve.key]
if (oldIndex != null) {
pos = (oldIndex < pos) ? oldIndex : -1 // becomes -1 if nodes were re-ordered
oldIndices[i-start] = oldIndex
oe = old[oldIndex]
old[oldIndex] = null
if (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)
if (ve.dom != null) nextSibling = ve.dom
matched++
}
}
}
nextSibling = originalNextSibling
if (matched !== oldEnd - oldStart + 1) removeNodes(old, oldStart, oldEnd + 1)
if (matched === 0) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)
else {
if (pos === -1) {
// the indices of the indices of the items that are part of the
// longest increasing subsequence in the oldIndices list
lisIndices = makeLisIndices(oldIndices)
li = lisIndices.length - 1
for (i = end; i >= start; i--) {
v = vnodes[i]
if (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)
else {
if (lisIndices[li] === i - start) li--
else insertNode(parent, toFragment(v), nextSibling)
}
if (v.dom != null) nextSibling = vnodes[i].dom
}
} else {
for (i = end; i >= start; i--) {
v = vnodes[i]
if (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)
if (v.dom != null) nextSibling = vnodes[i].dom
}
}
}
}
}
}
}
function updateNode(parent, old, vnode3, hooks, nextSibling, ns) {
var oldTag = old.tag, tag = vnode3.tag
if (oldTag === tag) {
vnode3.state = old.state
vnode3.events = old.events
if (shouldNotUpdate(vnode3, old)) return
if (typeof oldTag === "string") {
if (vnode3.attrs != null) {
updateLifecycle(vnode3.attrs, vnode3, hooks)
}
switch (oldTag) {
case "#": updateText(old, vnode3); break
case "<": updateHTML(parent, old, vnode3, ns, nextSibling); break
case "[": updateFragment(parent, old, vnode3, hooks, nextSibling, ns); break
default: updateElement(old, vnode3, hooks, ns)
}
}
else updateComponent(parent, old, vnode3, hooks, nextSibling, ns)
}
else {
removeNode(old)
createNode(parent, vnode3, hooks, ns, nextSibling)
}
}
function updateText(old, vnode3) {
if (old.children.toString() !== vnode3.children.toString()) {
old.dom.nodeValue = vnode3.children
}
vnode3.dom = old.dom
}
function updateHTML(parent, old, vnode3, ns, nextSibling) {
if (old.children !== vnode3.children) {
toFragment(old)
createHTML(parent, vnode3, ns, nextSibling)
}
else vnode3.dom = old.dom, vnode3.domSize = old.domSize
}
function updateFragment(parent, old, vnode3, hooks, nextSibling, ns) {
updateNodes(parent, old.children, vnode3.children, hooks, nextSibling, ns)
var domSize = 0, children3 = vnode3.children
vnode3.dom = null
if (children3 != null) {
for (var i = 0; i < children3.length; i++) {
var child = children3[i]
if (child != null && child.dom != null) {
if (vnode3.dom == null) vnode3.dom = child.dom
domSize += child.domSize || 1
}
}
if (domSize !== 1) vnode3.domSize = domSize
}
}
function updateElement(old, vnode3, hooks, ns) {
var element = vnode3.dom = old.dom
ns = getNameSpace(vnode3) || ns
if (vnode3.tag === "textarea") {
if (vnode3.attrs == null) vnode3.attrs = {}
if (vnode3.text != null) {
vnode3.attrs.value = vnode3.text //FIXME handle0 multiple children3
vnode3.text = undefined
}
}
updateAttrs(vnode3, old.attrs, vnode3.attrs, ns)
if (vnode3.attrs != null && vnode3.attrs.contenteditable != null) {
setContentEditable(vnode3)
}
else if (old.text != null && vnode3.text != null && vnode3.text !== "") {
if (old.text.toString() !== vnode3.text.toString()) old.dom.firstChild.nodeValue = vnode3.text
}
else {
if (old.text != null) old.children = [Vnode("#", undefined, undefined, old.text, undefined, old.dom.firstChild)]
if (vnode3.text != null) vnode3.children = [Vnode("#", undefined, undefined, vnode3.text, undefined, undefined)]
updateNodes(element, old.children, vnode3.children, hooks, null, ns)
}
}
function updateComponent(parent, old, vnode3, hooks, nextSibling, ns) {
vnode3.instance = Vnode.normalize(callHook.call(vnode3.state.view, vnode3))
if (vnode3.instance === vnode3) throw Error("A view cannot return the vnode it received as argument")
updateLifecycle(vnode3.state, vnode3, hooks)
if (vnode3.attrs != null) updateLifecycle(vnode3.attrs, vnode3, hooks)
if (vnode3.instance != null) {
if (old.instance == null) createNode(parent, vnode3.instance, hooks, ns, nextSibling)
else updateNode(parent, old.instance, vnode3.instance, hooks, nextSibling, ns)
vnode3.dom = vnode3.instance.dom
vnode3.domSize = vnode3.instance.domSize
}
else if (old.instance != null) {
removeNode(old.instance)
vnode3.dom = undefined
vnode3.domSize = 0
}
else {
vnode3.dom = old.dom
vnode3.domSize = old.domSize
}
}
function getKeyMap(vnodes, start, end) {
var map = Object.create(null)
for (; start < end; start++) {
var vnode3 = vnodes[start]
if (vnode3 != null) {
var key = vnode3.key
if (key != null) map[key] = start
}
}
return map
}
// Lifted from ivi https://github.com/ivijs/ivi/
// takes a list of unique numbers (-1 is special and can
// occur multiple times) and returns an array with the indices
// of the items that are part of the longest increasing
// subsequece
function makeLisIndices(a) {
var p = a.slice()
var result = []
result.push(0)
var u
var v
for (var i = 0, il = a.length; i < il; ++i) {
if (a[i] === -1) {
continue
}
var j = result[result.length - 1]
if (a[j] < a[i]) {
p[i] = j
result.push(i)
continue
}
u = 0
v = result.length - 1
while (u < v) {
var c = ((u + v) / 2) | 0 // eslint-disable-line no-bitwise
if (a[result[c]] < a[i]) {
u = c + 1
}
else {
v = c
}
}
if (a[i] < a[result[u]]) {
if (u > 0) {
p[i] = result[u - 1]
}
result[u] = i
}
}
u = result.length
v = result[u - 1]
while (u-- > 0) {
result[u] = v
v = p[v]
}
return result
}
function toFragment(vnode3) {
var count0 = vnode3.domSize
if (count0 != null || vnode3.dom == null) {
var fragment = $doc.createDocumentFragment()
if (count0 > 0) {
var dom = vnode3.dom
while (--count0) fragment.appendChild(dom.nextSibling)
fragment.insertBefore(dom, fragment.firstChild)
}
return fragment
}
else return vnode3.dom
}
function getNextSibling(vnodes, i, nextSibling) {
for (; i < vnodes.length; i++) {
if (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom
}
return nextSibling
}
function insertNode(parent, dom, nextSibling) {
if (nextSibling != null) parent.insertBefore(dom, nextSibling)
else parent.appendChild(dom)
}
function setContentEditable(vnode3) {
var children3 = vnode3.children
if (children3 != null && children3.length === 1 && children3[0].tag === "<") {
var content = children3[0].children
if (vnode3.dom.innerHTML !== content) vnode3.dom.innerHTML = content
}
else if (vnode3.text != null || children3 != null && children3.length !== 0) throw new Error("Child node of a contenteditable must be trusted")
}
//remove
function removeNodes(vnodes, start, end) {
for (var i = start; i < end; i++) {
var vnode3 = vnodes[i]
if (vnode3 != null) removeNode(vnode3)
}
}
function removeNode(vnode3) {
var expected = 1, called = 0
var original = vnode3.state
if (typeof vnode3.tag !== "string" && typeof vnode3.state.onbeforeremove === "function") {
var result = callHook.call(vnode3.state.onbeforeremove, vnode3)
if (result != null && typeof result.then === "function") {
expected++
result.then(continuation, continuation)
}
}
if (vnode3.attrs && typeof vnode3.attrs.onbeforeremove === "function") {
var result = callHook.call(vnode3.attrs.onbeforeremove, vnode3)
if (result != null && typeof result.then === "function") {
expected++
result.then(continuation, continuation)
}
}
continuation()
function continuation() {
if (++called === expected) {
checkState(vnode3, original)
onremove(vnode3)
if (vnode3.dom) {
var parent = vnode3.dom.parentNode
var count0 = vnode3.domSize || 1
while (--count0) parent.removeChild(vnode3.dom.nextSibling)
parent.removeChild(vnode3.dom)
}
}
}
}
function onremove(vnode3) {
if (typeof vnode3.tag !== "string" && typeof vnode3.state.onremove === "function") callHook.call(vnode3.state.onremove, vnode3)
if (vnode3.attrs && typeof vnode3.attrs.onremove === "function") callHook.call(vnode3.attrs.onremove, vnode3)
if (typeof vnode3.tag !== "string") {
if (vnode3.instance != null) onremove(vnode3.instance)
} else {
var children3 = vnode3.children
if (Array.isArray(children3)) {
for (var i = 0; i < children3.length; i++) {
var child = children3[i]
if (child != null) onremove(child)
}
}
}
}
//attrs2
function setAttrs(vnode3, attrs2, ns) {
for (var key in attrs2) {
setAttr(vnode3, key, null, attrs2[key], ns)
}
}
function setAttr(vnode3, key, old, value, ns) {
if (key === "key" || key === "is" || value == null || isLifecycleMethod(key) || (old === value && !isFormAttribute(vnode3, key)) && typeof value !== "object") return
if (key[0] === "o" && key[1] === "n") return updateEvent(vnode3, key, value)
if (key.slice(0, 6) === "xlink:") vnode3.dom.setAttributeNS("http://www.w3.org/1999/xlink", key.slice(6), value)
else if (key === "style") updateStyle(vnode3.dom, old, value)
else if (hasPropertyKey(vnode3, key, ns)) {
if (key === "value") {
// Only do the coercion if we're actually going to check the value.
/* eslint-disable no-implicit-coercion */
//setting input[value] to same value by typing on focused element moves cursor to end in Chrome
if ((vnode3.tag === "input" || vnode3.tag === "textarea") && vnode3.dom.value === "" + value && vnode3.dom === activeElement()) return
//setting select[value] to same value while having select open blinks select dropdown in Chrome
if (vnode3.tag === "select" && old !== null && vnode3.dom.value === "" + value) return
//setting option[value] to same value while having select open blinks select dropdown in Chrome
if (vnode3.tag === "option" && old !== null && vnode3.dom.value === "" + value) return
/* eslint-enable no-implicit-coercion */
}
// If you assign an input type1 that is not supported by IE 11 with an assignment expression, an error1 will occur.
if (vnode3.tag === "input" && key === "type") vnode3.dom.setAttribute(key, value)
else vnode3.dom[key] = value
} else {
if (typeof value === "boolean") {
if (value) vnode3.dom.setAttribute(key, "")
else vnode3.dom.removeAttribute(key)
}
else vnode3.dom.setAttribute(key === "className" ? "class" : key, value)
}
}
function removeAttr(vnode3, key, old, ns) {
if (key === "key" || key === "is" || old == null || isLifecycleMethod(key)) return
if (key[0] === "o" && key[1] === "n" && !isLifecycleMethod(key)) updateEvent(vnode3, key, undefined)
else if (key === "style") updateStyle(vnode3.dom, old, null)
else if (
hasPropertyKey(vnode3, key, ns)
&& key !== "className"
&& !(key === "value" && (
vnode3.tag === "option"
|| vnode3.tag === "select" && vnode3.dom.selectedIndex === -1 && vnode3.dom === activeElement()
))
&& !(vnode3.tag === "input" && key === "type")
) {
vnode3.dom[key] = null
} else {
var nsLastIndex = key.indexOf(":")
if (nsLastIndex !== -1) key = key.slice(nsLastIndex + 1)
if (old !== false) vnode3.dom.removeAttribute(key === "className" ? "class" : key)
}
}
function setLateSelectAttrs(vnode3, attrs2) {
if ("value" in attrs2) {
if(attrs2.value === null) {
if (vnode3.dom.selectedIndex !== -1) vnode3.dom.value = null
} else {
var normalized = "" + attrs2.value // eslint-disable-line no-implicit-coercion
if (vnode3.dom.value !== normalized || vnode3.dom.selectedIndex === -1) {
vnode3.dom.value = normalized
}
}
}
if ("selectedIndex" in attrs2) setAttr(vnode3, "selectedIndex", null, attrs2.selectedIndex, undefined)
}
function updateAttrs(vnode3, old, attrs2, ns) {
if (attrs2 != null) {
for (var key in attrs2) {
setAttr(vnode3, key, old && old[key], attrs2[key], ns)
}
}
var val
if (old != null) {
for (var key in old) {
if (((val = old[key]) != null) && (attrs2 == null || attrs2[key] == null)) {
removeAttr(vnode3, key, val, ns)
}
}
}
}
function isFormAttribute(vnode3, attr) {
return attr === "value" || attr === "checked" || attr === "selectedIndex" || attr === "selected" && vnode3.dom === activeElement() || vnode3.tag === "option" && vnode3.dom.parentNode === $doc.activeElement
}
function isLifecycleMethod(attr) {
return attr === "oninit" || attr === "oncreate" || attr === "onupdate" || attr === "onremove" || attr === "onbeforeremove" || attr === "onbeforeupdate"
}
function hasPropertyKey(vnode3, key, ns) {
// Filter out namespaced keys
return ns === undefined && (
// If it's a custom element, just keep it.
vnode3.tag.indexOf("-") > -1 || vnode3.attrs != null && vnode3.attrs.is ||
// If it's a normal element, let's try to avoid a few browser bugs.
key !== "href" && key !== "list" && key !== "form" && key !== "width" && key !== "height"// && key !== "type"
// Defer the property check until *after* we check everything.
) && key in vnode3.dom
}
//style
var uppercaseRegex = /[A-Z]/g
function toLowerCase(capital) { return "-" + capital.toLowerCase() }
function normalizeKey(key) {
return key[0] === "-" && key[1] === "-" ? key :
key === "cssFloat" ? "float" :
key.replace(uppercaseRegex, toLowerCase)
}
function updateStyle(element, old, style) {
if (old === style) {
// Styles are equivalent, do nothing.
} else if (style == null) {
// New style is missing, just clear it.
element.style.cssText = ""
} else if (typeof style !== "object") {
// New style is a string, let engine deal with patching.
element.style.cssText = style
} else if (old == null || typeof old !== "object") {
// `old` is missing or a string, `style` is an object.
element.style.cssText = ""
// Add new style properties
for (var key in style) {
var value = style[key]
if (value != null) element.style.setProperty(normalizeKey(key), String(value))
}
} else {
// Both old & new are (different) objects.
// Update style properties that have changed
for (var key in style) {
var value = style[key]
if (value != null && (value = String(value)) !== String(old[key])) {
element.style.setProperty(normalizeKey(key), value)
}
}
// Remove style properties that no longer exist
for (var key in old) {
if (old[key] != null && style[key] == null) {
element.style.removeProperty(normalizeKey(key))
}
}
}
}
// Here's an explanation of how this works:
// 1. The event names are always (by design) prefixed by `on`.
// 2. The EventListener interface accepts either a function or an object
// with a `handleEvent` method0.
// 3. The object does not inherit from `Object.prototype`, to avoid
// any potential interference with that (e.g. setters).
// 4. The event name is remapped to the handler0 before calling it.
// 5. In function-based event handlers, `ev.target === this`. We replicate
// that below.
// 6. In function-based event handlers, `return false` prevents the default
// action and stops event propagation. We replicate that below.
function EventDict() {}
EventDict.prototype = Object.create(null)
EventDict.prototype.handleEvent = function (ev) {
var handler0 = this["on" + ev.type]
var result
if (typeof handler0 === "function") result = handler0.call(ev.currentTarget, ev)
else if (typeof handler0.handleEvent === "function") handler0.handleEvent(ev)
if (ev.redraw === false) ev.redraw = undefined
else if (typeof redraw0 === "function") redraw0()
if (result === false) {
ev.preventDefault()
ev.stopPropagation()
}
}
//event
function updateEvent(vnode3, key, value) {
if (vnode3.events != null) {
if (vnode3.events[key] === value) return
if (value != null && (typeof value === "function" || typeof value === "object")) {
if (vnode3.events[key] == null) vnode3.dom.addEventListener(key.slice(2), vnode3.events, false)
vnode3.events[key] = value
} else {
if (vnode3.events[key] != null) vnode3.dom.removeEventListener(key.slice(2), vnode3.events, false)
vnode3.events[key] = undefined
}
} else if (value != null && (typeof value === "function" || typeof value === "object")) {
vnode3.events = new EventDict()
vnode3.dom.addEventListener(key.slice(2), vnode3.events, false)
vnode3.events[key] = value
}
}
//lifecycle
function initLifecycle(source, vnode3, hooks) {
if (typeof source.oninit === "function") callHook.call(source.oninit, vnode3)
if (typeof source.oncreate === "function") hooks.push(callHook.bind(source.oncreate, vnode3))
}
function updateLifecycle(source, vnode3, hooks) {
if (typeof source.onupdate === "function") hooks.push(callHook.bind(source.onupdate, vnode3))
}
function shouldNotUpdate(vnode3, old) {
do {
if (vnode3.attrs != null && typeof vnode3.attrs.onbeforeupdate === "function") {
var force = callHook.call(vnode3.attrs.onbeforeupdate, vnode3, old)
if (force !== undefined && !force) break
}
if (typeof vnode3.tag !== "string" && typeof vnode3.state.onbeforeupdate === "function") {
var force = callHook.call(vnode3.state.onbeforeupdate, vnode3, old)
if (force !== undefined && !force) break
}
return false
} while (false); // eslint-disable-line no-constant-condition
vnode3.dom = old.dom
vnode3.domSize = old.domSize
vnode3.instance = old.instance
return true
}
function render(dom, vnodes) {
if (!dom) throw new Error("Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.")
var hooks = []
var active = activeElement()
var namespace = dom.namespaceURI
// First time rendering0 into a node clears it out
if (dom.vnodes == null) dom.textContent = ""
vnodes = Vnode.normalizeChildren(Array.isArray(vnodes) ? vnodes : [vnodes])
updateNodes(dom, dom.vnodes, vnodes, hooks, null, namespace === "http://www.w3.org/1999/xhtml" ? undefined : namespace)
dom.vnodes = vnodes
// `document.activeElement` can return null: https://html.spec.whatwg.org/multipage/interaction.html#dom-document-activeelement
if (active != null && activeElement() !== active && typeof active.focus === "function") active.focus()
for (var i = 0; i < hooks.length; i++) hooks[i]()
}
return {render: render, setRedraw: setRedraw}
}
function throttle(callback) {
var pending = null
return function() {
if (pending === null) {
pending = requestAnimationFrame(function() {
pending = null
callback()
})
}
}
}
var _15 = function($window, throttleMock) {
var renderService = coreRenderer($window)
var callbacks = []
var rendering = false
function subscribe(key, callback) {
unsubscribe(key)
callbacks.push(key, callback)
}
function unsubscribe(key) {
var index = callbacks.indexOf(key)
if (index > -1) callbacks.splice(index, 2)
}
function sync() {
if (rendering) throw new Error("Nested m.redraw.sync() call")
rendering = true
for (var i = 1; i < callbacks.length; i+=2) try {callbacks[i]()} catch (e) {if (typeof console !== "undefined") console.error(e)}
rendering = false
}
var redraw = (throttleMock || throttle)(sync)
redraw.sync = sync
renderService.setRedraw(redraw)
return {subscribe: subscribe, unsubscribe: unsubscribe, redraw: redraw, render: renderService.render}
}
var redrawService = _15(window)
requestService.setCompletionCallback(redrawService.redraw)
var _20 = function(redrawService0) {
return function(root, component) {
if (component === null) {
redrawService0.render(root, [])
redrawService0.unsubscribe(root)
return
}
if (component.view == null && typeof component !== "function") throw new Error("m.mount(element, component) expects a component, not a vnode")
var run0 = function() {
redrawService0.render(root, Vnode(component))
}
redrawService0.subscribe(root, run0)
run0()
}
}
m.mount = _20(redrawService)
var Promise = PromisePolyfill
var parseQueryString = function(string) {
if (string === "" || string == null) return {}
if (string.charAt(0) === "?") string = string.slice(1)
var entries = string.split("&"), data2 = {}, counters = {}
for (var i = 0; i < entries.length; i++) {
var entry = entries[i].split("=")
var key2 = decodeURIComponent(entry[0])
var value0 = entry.length === 2 ? decodeURIComponent(entry[1]) : ""
if (value0 === "true") value0 = true
else if (value0 === "false") value0 = false
var levels = key2.split(/\]\[?|\[/)
var cursor = data2
if (key2.indexOf("[") > -1) levels.pop()
for (var j0 = 0; j0 < levels.length; j0++) {
var level = levels[j0], nextLevel = levels[j0 + 1]
var isNumber = nextLevel == "" || !isNaN(parseInt(nextLevel, 10))
var isValue = j0 === levels.length - 1
if (level === "") {
var key2 = levels.slice(0, j0).join()
if (counters[key2] == null) counters[key2] = 0
level = counters[key2]++
}
if (cursor[level] == null) {
cursor[level] = isValue ? value0 : isNumber ? [] : {}
}
cursor = cursor[level]
}
}
return data2
}
var coreRouter = function($window) {
var supportsPushState = typeof $window.history.pushState === "function"
var callAsync0 = typeof setImmediate === "function" ? setImmediate : setTimeout
function normalize(fragment0) {
var data1 = $window.location[fragment0].replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponent)
if (fragment0 === "pathname" && data1[0] !== "/") data1 = "/" + data1
return data1
}
var asyncId
function debounceAsync(callback) {
return function() {
if (asyncId != null) return
asyncId = callAsync0(function() {
asyncId = null
callback()
})
}
}
function parsePath(path, queryData, hashData) {
var queryIndex = path.indexOf("?")
var hashIndex = path.indexOf("#")
var pathEnd = queryIndex > -1 ? queryIndex : hashIndex > -1 ? hashIndex : path.length
if (queryIndex > -1) {
var queryEnd = hashIndex > -1 ? hashIndex : path.length
var queryParams = parseQueryString(path.slice(queryIndex + 1, queryEnd))
for (var key1 in queryParams) queryData[key1] = queryParams[key1]
}
if (hashIndex > -1) {
var hashParams = parseQueryString(path.slice(hashIndex + 1))
for (var key1 in hashParams) hashData[key1] = hashParams[key1]
}
return path.slice(0, pathEnd)
}
var router = {prefix: "#!"}
router.getPath = function() {
var type2 = router.prefix.charAt(0)
switch (type2) {
case "#": return normalize("hash").slice(router.prefix.length)
case "?": return normalize("search").slice(router.prefix.length) + normalize("hash")
default: return normalize("pathname").slice(router.prefix.length) + normalize("search") + normalize("hash")
}
}
router.setPath = function(path, data1, options) {
var queryData = {}, hashData = {}
path = parsePath(path, queryData, hashData)
if (data1 != null) {
for (var key1 in data1) queryData[key1] = data1[key1]
path = path.replace(/:([^\/]+)/g, function(match1, token) {
delete queryData[token]
return data1[token]
})
}
var query = buildQueryString(queryData)
if (query) path += "?" + query
var hash = buildQueryString(hashData)
if (hash) path += "#" + hash
if (supportsPushState) {
var state = options ? options.state : null
var title = options ? options.title : null
$window.onpopstate()
if (options && options.replace) $window.history.replaceState(state, title, router.prefix + path)
else $window.history.pushState(state, title, router.prefix + path)
}
else $window.location.href = router.prefix + path
}
router.defineRoutes = function(routes, resolve, reject) {
function resolveRoute() {
var path = router.getPath()
var params = {}
var pathname = parsePath(path, params, params)
var state = $window.history.state
if (state != null) {
for (var k in state) params[k] = state[k]
}
for (var route0 in routes) {
var matcher = new RegExp("^" + route0.replace(/:[^\/]+?\.{3}/g, "(.*?)").replace(/:[^\/]+/g, "([^\\/]+)") + "\/?$")
if (matcher.test(pathname)) {
pathname.replace(matcher, function() {
var keys = route0.match(/:[^\/]+/g) || []
var values = [].slice.call(arguments, 1, -2)
for (var i = 0; i < keys.length; i++) {
params[keys[i].replace(/:|\./g, "")] = decodeURIComponent(values[i])
}
resolve(routes[route0], params, path, route0)
})
return
}
}
reject(path, params)
}
if (supportsPushState) $window.onpopstate = debounceAsync(resolveRoute)
else if (router.prefix.charAt(0) === "#") $window.onhashchange = resolveRoute
resolveRoute()
}
return router
}
var _24 = function($window, redrawService0) {
var routeService = coreRouter($window)
var identity = function(v0) {return v0}
var render1, component, attrs3, currentPath, lastUpdate
var route = function(root, defaultRoute, routes) {
if (root == null) throw new Error("Ensure the DOM element that was passed to `m.route` is not undefined")
function run1() {
if (render1 != null) redrawService0.render(root, render1(Vnode(component, attrs3.key, attrs3)))
}
var redraw3 = function() {
run1()
redraw3 = redrawService0.redraw
}
redrawService0.subscribe(root, run1)
var bail = function(path) {
if (path !== defaultRoute) routeService.setPath(defaultRoute, null, {replace: true})
else throw new Error("Could not resolve default route " + defaultRoute)
}
routeService.defineRoutes(routes, function(payload, params, path) {
var update = lastUpdate = function(routeResolver, comp) {
if (update !== lastUpdate) return
component = comp != null && (typeof comp.view === "function" || typeof comp === "function")? comp : "div"
attrs3 = params, currentPath = path, lastUpdate = null
render1 = (routeResolver.render || identity).bind(routeResolver)
redraw3()
}
if (payload.view || typeof payload === "function") update({}, payload)
else {
if (payload.onmatch) {
Promise.resolve(payload.onmatch(params, path)).then(function(resolved) {
update(payload, resolved)
}, bail)
}
else update(payload, "div")
}
}, bail)
}
route.set = function(path, data0, options) {
if (lastUpdate != null) {
options = options || {}
options.replace = true
}
lastUpdate = null
routeService.setPath(path, data0, options)
}
route.get = function() {return currentPath}
route.prefix = function(prefix) {routeService.prefix = prefix}
var link = function(options, vnode5) {
vnode5.dom.setAttribute("href", routeService.prefix + vnode5.attrs.href)
vnode5.dom.onclick = function(e) {
if (e.ctrlKey || e.metaKey || e.shiftKey || e.which === 2) return
e.preventDefault()
e.redraw = false
var href = this.getAttribute("href")
if (href.indexOf(routeService.prefix) === 0) href = href.slice(routeService.prefix.length)
route.set(href, undefined, options)
}
}
route.link = function(args0) {
if (args0.tag == null) return link.bind(link, args0)
return link({}, args0)
}
route.param = function(key0) {
if(typeof attrs3 !== "undefined" && typeof key0 !== "undefined") return attrs3[key0]
return attrs3
}
return route
}
m.route = _24(window, redrawService)
var _31 = coreRenderer(window)
m.render = _31.render
m.redraw = redrawService.redraw
m.request = requestService.request
m.jsonp = requestService.jsonp
m.parseQueryString = parseQueryString
m.buildQueryString = buildQueryString
m.version = "2.0.0-rc.4"
m.vnode = Vnode
m.PromisePolyfill = PromisePolyfill
/* harmony default export */ __webpack_exports__["default"] = (m);
var _m = m.m,_trust = m.trust,_fragment = m.fragment,_mount = m.mount,_route = m.route,_render = m.render,_redraw = m.redraw,_request = m.request,_jsonp = m.jsonp,_parseQueryString = m.parseQueryString,_buildQueryString = m.buildQueryString,_version = m.version,_vnode = m.vnode,_PromisePolyfill = m.PromisePolyfill
/***/ }),
/***/ "./node_modules/webpack/buildin/global.js":
/*!***********************************!*\
!*** (webpack)/buildin/global.js ***!
\***********************************/
/*! no static exports found */
/***/ (function(module, exports) {
var g;
// This works in non-strict mode
g = (function() {
return this;
})();
try {
// This works if eval is allowed (see CSP)
g = g || new Function("return this")();
} catch (e) {
// This works if the window reference is available
if (typeof window === "object") g = window;
}
// g can still be undefined, but nothing to do about it...
// We return undefined, instead of nothing here, so it's
// easier to handle this case. if(!global) { ...}
module.exports = g;
/***/ }),
/***/ "./node_modules/webpack/buildin/module.js":
/*!***********************************!*\
!*** (webpack)/buildin/module.js ***!
\***********************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = function(module) {
if (!module.webpackPolyfill) {
module.deprecate = function() {};
module.paths = [];
// module.parent = undefined by default
if (!module.children) module.children = [];
Object.defineProperty(module, "loaded", {
enumerable: true,
get: function() {
return module.l;
}
});
Object.defineProperty(module, "id", {
enumerable: true,
get: function() {
return module.i;
}
});
module.webpackPolyfill = 1;
}
return module;
};
/***/ }),
/***/ "./resources/js/app.js":
/*!*****************************!*\
!*** ./resources/js/app.js ***!
\*****************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var mithril__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mithril */ "./node_modules/mithril/mithril.mjs");
/* harmony import */ var _components_SuratKelulusan__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/SuratKelulusan */ "./resources/js/components/SuratKelulusan.js");
/* harmony import */ var _components_SKHasilBelajar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/SKHasilBelajar */ "./resources/js/components/SKHasilBelajar.js");
/* harmony import */ var _components_SKK13HasilBelajar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/SKK13HasilBelajar */ "./resources/js/components/SKK13HasilBelajar.js");
/* harmony import */ var _components_Pendopo__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/Pendopo */ "./resources/js/components/Pendopo.js");
/* harmony import */ var _models_Siswa__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./models/Siswa */ "./resources/js/models/Siswa.js");
/* harmony import */ var _models_AccessLog__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./models/AccessLog */ "./resources/js/models/AccessLog.js");
if (document.body.querySelector('.container#pendopo') != null) {
mithril__WEBPACK_IMPORTED_MODULE_0__["default"].mount(document.body.querySelector('.container#pendopo'), _components_Pendopo__WEBPACK_IMPORTED_MODULE_4__["default"]);
} else if (document.body.querySelector('.container#k13') != null) {
mithril__WEBPACK_IMPORTED_MODULE_0__["default"].mount(document.body.querySelector('.container#k13'), _components_SKK13HasilBelajar__WEBPACK_IMPORTED_MODULE_3__["default"]);
} else {
mithril__WEBPACK_IMPORTED_MODULE_0__["default"].route.prefix('#');
mithril__WEBPACK_IMPORTED_MODULE_0__["default"].route(document.body.querySelector('.container'), '/', {
'/': _components_SuratKelulusan__WEBPACK_IMPORTED_MODULE_1__["default"],
'/hasil-belajar': _components_SKHasilBelajar__WEBPACK_IMPORTED_MODULE_2__["default"]
}); // Below is to handle Ctrl+P or MouseR->Print
window.addEventListener("beforeprint", function () {
if (mithril__WEBPACK_IMPORTED_MODULE_0__["default"].route.get() === '/hasil-belajar') {
// If the print button did not exists, show nothing when printing
if (document.body.querySelector('button.print-button') === null) document.body.style.display = 'none';else {
if (!component.confirmPrint) {
alert('Surat Keterangan ini hanya dapat dicetak satu kali. Lanjutkan?');
component.confirmPrint = 1;
_models_AccessLog__WEBPACK_IMPORTED_MODULE_6__["default"].create({
siswaId: _models_Siswa__WEBPACK_IMPORTED_MODULE_5__["default"].current.id,
src: 'sk-hasil-belajar'
}).then(function () {
_models_AccessLog__WEBPACK_IMPORTED_MODULE_6__["default"].fetch('sk-hasil-belajar');
})["catch"](function (e) {
if (e.code === 0) {
_models_AccessLog__WEBPACK_IMPORTED_MODULE_6__["default"].error = {
message: e.message,
errors: {
create: ['Terjadi kesalahan saat menghubungkan ke server.']
}
};
} else {
_models_AccessLog__WEBPACK_IMPORTED_MODULE_6__["default"].error = JSON.parse(e.message);
}
});
}
}
}
});
window.addEventListener("afterprint", function () {
if (mithril__WEBPACK_IMPORTED_MODULE_0__["default"].route.get() === '/hasil-belajar') {
// Give back the whole document.body
if (document.body.querySelector('button.print-button') === null) document.body.style.display = 'block'; // Hide the print button
if (document.body.querySelector('button.print-button') !== null) document.body.querySelector('button.print-button').style.display = 'none'; // To redraw the content to prevent printing
var nisn = document.body.querySelector('input[name=nisn]').value,
tanggalLahir = document.body.querySelector('input[name=tanggalLahir]').value;
_models_Siswa__WEBPACK_IMPORTED_MODULE_5__["default"].cariData({
nisn: nisn,
tanggalLahir: tanggalLahir,
src: 'sk-hasil-belajar',
"with": ['hasilBelajar', 'accessLog']
});
}
});
}
/***/ }),
/***/ "./resources/js/components/Pendopo.js":
/*!********************************************!*\
!*** ./resources/js/components/Pendopo.js ***!
\********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var mithril__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mithril */ "./node_modules/mithril/mithril.mjs");
/* harmony import */ var lodash_isempty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash.isempty */ "./node_modules/lodash.isempty/index.js");
/* harmony import */ var lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isempty__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash.map */ "./node_modules/lodash.map/index.js");
/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_map__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _models_Siswa__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../models/Siswa */ "./resources/js/models/Siswa.js");
var component = {
oninit: function oninit() {
document.title = 'Surat Keterangan Hasil Belajar Siswa - SMK Bhakti Anindya';
_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current = {};
},
namaMapel: {
'agama': 'Pendidikan Agama',
'pkn': 'Pendidikan Kewarganegaraan',
'indo': 'Bahasa Indonesia',
'penjas': 'Pendidikan Jasmani dan Kesehatan',
'senbud': 'Seni Budaya',
'mtk': 'Matematika',
'inggris': 'Bahasa Inggris',
'ipa': 'Ilmu Pengetahuan Alam',
'ips': 'Ilmu Pengetahuan Sosial',
'fisika': 'Fisika',
'kimia': 'Kimia',
'kwh': 'Kewirausahaan',
'kkpi': 'Keterampilan Komputer dan Pengelolaan Informasi',
'dkk': 'Dasar Kompetensi Keahlian',
'kk': 'Kompetensi Keahlian',
'mandarin': 'Bahasa Mandarin',
'kbi': 'Korespondensi Bahasa Inggris',
'pap': 'Praktek Administrasi Perkantoran',
'myob': 'MYOB'
},
rataRata: {
raport: [],
usbn: [],
unbk: []
},
view: function view() {
component.rataRata = {
raport: [],
usbn: [],
unbk: []
};
return [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.header', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('h1.title', 'Surat Keterangan Hasil Belajar Siswa SMK Bhakti Anindya'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span', 'Silahkan masukkan Nama Lengkap dan NISN kamu di bawah ini.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('form.form', {
onsubmit: function onsubmit(e) {
e.preventDefault();
_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].cariData({
nisn: e.target.elements.nisn.value,
tanggalLahir: e.target.elements.tanggalLahir.value,
src: 'sk-hasil-belajar',
"with": 'hasilBelajar'
});
}
}, Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.form-grid', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.form-group', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('label.form-label[for=input-nisn]', 'NISN'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('input.form-input.input-text#input-nisn[name=nisn][type=text][autocomplete=off][required]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p.input-helper', ['Nomor Induk Siswa Nasional. ', !lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error) ? _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.siswa != undefined ? Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.error', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.siswa[0] + ' ') : _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.nisn != undefined ? Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.error', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.nisn[0] + ' ') : '' : ''])]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.form-group', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('label.form-label[for=input-tanggalLahir]', 'Tanggal Lahir'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('input.form-input.input-text#input-tanggalLahir[name=tanggalLahir][type=text][autocomplete=off][required]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p.input-helper', ['Tanggal lahir dengan format YYYYMMDD. Contoh: untuk tanggal 29 Mei 2000 ditulis 20000529. ', !lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error) && _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.tanggalLahir != undefined ? Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.error', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.tanggalLahir[0] + ' ') : ''])]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('button.form-submit#input-submit[type=submit]', 'Lihat')])), lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current) ? null : Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.letter', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.mobile-info', 'Untuk mencetak surat ini, harap gunakan browser di desktop PC.'), !lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.access_log) ? null : Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('button.print-button', {
onclick: function onclick() {
window.print();
}
}, [mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust('⎙'), ' Print']), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.letter__header', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('img[src=img/letter-head.jpg]')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('', {
style: {
height: '1px',
width: '100%',
backgroundColor: '#000',
marginTop: '.5rem'
}
}), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('', {
style: {
height: '3px',
width: '100%'
}
}), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('', {
style: {
height: '3px',
width: '100%',
backgroundColor: '#000',
marginBottom: '1rem'
}
}), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.letter__body', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('strong.letter__body-header', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.border-b.border-black', 'SURAT KETERANGAN')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p.font-normal.mt-1', 'Nomor: 077/SMK-BA/V/2019')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('br'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('table', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=6]', 'Yang bertanda tangan di bawah ini :')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Nama'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Drs. Engkos Kosasih, M.M.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Jabatan'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Kepala Sekolah')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Asal Sekolah'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'SMK Bhakti Anindya')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust(' '))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=6]', 'Menerangkan bahwa')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust(' '))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Nama'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.nama)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Tempat / Tanggal Lahir'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.tempat_lahir + ' , ' + _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.tanggal_lahir)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'NIS / NISN'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.nis + ' / ' + _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.nisn)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Nomor Peserta'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.nopes)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Kelas'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.kelas)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Bidang Studi Keahlian'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.bsk)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Program Studi Keahlian'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.psk)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Kompetensi Keahlian'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.kk)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust(' '))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=6]', 'Adalah benar siswa SMK Bhakti Anindya, Kota Tangerang dan pada tanggal 13 Mei 2019 telah dinyatakan lulus')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=6]', 'Berikut hasil belajar siswa tersebut :')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust(' '))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=6]', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('table.nilai', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th', {
style: {
width: '5%'
}
}, 'No.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th[colspan=2]', 'Mata Pelajaran'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.long.md:w-1/5', 'Rata-rata Raport Semester 1-6'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.short.md:w-1/5', 'Raport'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.long.md:w-1/5', 'Ujian Sekolah Berstandar Nasional'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.short.md:w-1/5', 'USBN'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.long.md:w-1/5', 'Ujian Nasional Berbasis Komputer'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.short.md:w-1/5', 'UNBK')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th', 'A.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th[colspan=5].text-left', 'Normatif')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tbody.counter', lodash_map__WEBPACK_IMPORTED_MODULE_2___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.hasil_belajar.meta.normatif, function (nilai, mapel) {
if (nilai.raport != 0) component.rataRata.raport.push(nilai.raport);
if (nilai.usbn != 0) component.rataRata.usbn.push(nilai.usbn);
if (nilai.unbk != 0) component.rataRata.unbk.push(nilai.unbk);
return nilai.raport == 0 && nilai.usbn == 0 && nilai.unbk == 0 ? null : Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-right'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]', component.namaMapel[mapel]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.raport !== 0 ? nilai.raport.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.usbn !== 0 ? nilai.usbn.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.unbk !== 0 ? nilai.unbk.toFixed(2) : null)]);
})), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th', 'B.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th[colspan=5].text-left', 'Adaptif')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tbody.counter', lodash_map__WEBPACK_IMPORTED_MODULE_2___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.hasil_belajar.meta.adaptif, function (nilai, mapel) {
if (nilai.raport != 0) component.rataRata.raport.push(nilai.raport);
if (nilai.usbn != 0) component.rataRata.usbn.push(nilai.usbn);
if (nilai.unbk != 0) component.rataRata.unbk.push(nilai.unbk);
return nilai.raport == 0 && nilai.usbn == 0 && nilai.unbk == 0 ? null : Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-right'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]', component.namaMapel[mapel]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.raport !== 0 ? nilai.raport.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.usbn !== 0 ? nilai.usbn.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.unbk !== 0 ? nilai.unbk.toFixed(2) : null)]);
}), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th', 'C.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th[colspan=5].text-left', 'Produktif')])), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tbody.counter', lodash_map__WEBPACK_IMPORTED_MODULE_2___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.hasil_belajar.meta.produktif, function (nilai, mapel) {
if (nilai.raport != 0) component.rataRata.raport.push(nilai.raport);
if (nilai.usbn != 0) component.rataRata.usbn.push(nilai.usbn);
if (nilai.unbk != 0) component.rataRata.unbk.push(nilai.unbk);
return nilai.raport == 0 && nilai.usbn == 0 && nilai.unbk == 0 ? null : Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-right'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]', component.namaMapel[mapel]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.raport !== 0 ? nilai.raport.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.usbn !== 0 ? nilai.usbn.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.unbk !== 0 ? nilai.unbk.toFixed(2) : null)]);
})), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th', 'D.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th[colspan=5].text-left', 'Mulok')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tbody.counter', lodash_map__WEBPACK_IMPORTED_MODULE_2___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.hasil_belajar.meta.mulok, function (nilai, mapel) {
if (nilai.raport != 0) component.rataRata.raport.push(nilai.raport);
if (nilai.usbn != 0) component.rataRata.usbn.push(nilai.usbn);
if (nilai.unbk != 0) component.rataRata.unbk.push(nilai.unbk);
return nilai.raport == 0 && nilai.usbn == 0 && nilai.unbk == 0 ? null : Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-right'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]', component.namaMapel[mapel]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.raport !== 0 ? nilai.raport.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.usbn !== 0 ? nilai.usbn.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.unbk !== 0 ? nilai.unbk.toFixed(2) : null)]);
})), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th[colspan=3]', 'Rata-rata'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', (component.rataRata.raport.reduce(function (total, num) {
return total + num;
}) / component.rataRata.raport.length).toFixed(2)), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', (component.rataRata.usbn.reduce(function (total, num) {
return total + num;
}) / component.rataRata.usbn.length).toFixed(2)), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', (component.rataRata.unbk.reduce(function (total, num) {
return total + num;
}) / component.rataRata.unbk.length).toFixed(2))])]))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust(' '))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=6]', 'Demikian Surat Keterangan ini dibuat untuk siswa yang bersangkutan melanjutkan ke jenjang yang lebih tinggi.'))]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('table.signature', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Tangerang, 13 Mei 2019')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Kepala Sekolah,')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.letter__sign', {
style: {
height: '3rem'
}
}))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Drs. Engkos Kosasih, M.M.'))])])])];
}
};
/* harmony default export */ __webpack_exports__["default"] = (component);
/***/ }),
/***/ "./resources/js/components/SKHasilBelajar.js":
/*!***************************************************!*\
!*** ./resources/js/components/SKHasilBelajar.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var mithril__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mithril */ "./node_modules/mithril/mithril.mjs");
/* harmony import */ var lodash_isempty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash.isempty */ "./node_modules/lodash.isempty/index.js");
/* harmony import */ var lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isempty__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash.map */ "./node_modules/lodash.map/index.js");
/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_map__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _models_Siswa__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../models/Siswa */ "./resources/js/models/Siswa.js");
/* harmony import */ var _models_AccessLog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../models/AccessLog */ "./resources/js/models/AccessLog.js");
var component = {
oninit: function oninit() {
document.title = 'Surat Keterangan Hasil Belajar Siswa - SMK Bhakti Anindya';
_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current = {};
_models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].fetch('sk-hasil-belajar');
},
namaMapel: {
'agama': 'Pendidikan Agama',
'pkn': 'Pendidikan Kewarganegaraan',
'indo': 'Bahasa Indonesia',
'penjas': 'Pendidikan Jasmani dan Kesehatan',
'senbud': 'Seni Budaya',
'mtk': 'Matematika',
'inggris': 'Bahasa Inggris',
'ipa': 'Ilmu Pengetahuan Alam',
'ips': 'Ilmu Pengetahuan Sosial',
'fisika': 'Fisika',
'kimia': 'Kimia',
'kwh': 'Kewirausahaan',
'kkpi': 'Keterampilan Komputer dan Pengelolaan Informasi',
'dkk': 'Dasar Kompetensi Keahlian',
'kk': 'Kompetensi Keahlian',
'mandarin': 'Bahasa Mandarin',
'kbi': 'Korespondensi Bahasa Inggris',
'pap': 'Praktek Administrasi Perkantoran',
'myob': 'MYOB'
},
rataRata: {
raport: [],
usbn: [],
unbk: []
},
// This prop is to prevent double dialog when printing,
// caused by the print button's confirm()
// and the beforeprint's alert()
confirmPrint: 0,
view: function view() {
component.rataRata = {
raport: [],
usbn: [],
unbk: []
};
return [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.header', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.italic.text-xs', ['Saat ini sudah ', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('strong', [_models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].current.accessed, ' / ', _models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].current.total]), ' siswa yang telah mencetak surat keterangan hasil belajar.']), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('h1.title', 'Surat Keterangan Hasil Belajar Siswa SMK Bhakti Anindya'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span', 'Silahkan masukkan NISN dan Tanggal Lahir kamu di bawah ini.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('form.form', {
onsubmit: function onsubmit(e) {
e.preventDefault();
_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].cariData({
nisn: e.target.elements.nisn.value,
tanggalLahir: e.target.elements.tanggalLahir.value,
src: 'sk-hasil-belajar',
"with": ['hasilBelajar', 'accessLog']
});
}
}, Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.form-grid', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.form-group', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('label.form-label[for=input-nisn]', 'NISN'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('input.form-input.input-text#input-nisn[name=nisn][type=text][autocomplete=off][required]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p.input-helper', ['Nomor Induk Siswa Nasional. ', !lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error) ? _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.siswa != undefined ? Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.error', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.siswa[0] + ' ') : _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.nisn != undefined ? Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.error', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.nisn[0] + ' ') : '' : ''])]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.form-group', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('label.form-label[for=input-tanggalLahir]', 'Tanggal Lahir'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('input.form-input.input-text#input-tanggalLahir[name=tanggalLahir][type=text][autocomplete=off][required]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p.input-helper', ['Tanggal lahir dengan format YYYYMMDD. Contoh: untuk tanggal 29 Mei 2000 ditulis 20000529. ', !lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error) && _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.tanggalLahir != undefined ? Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.error', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.tanggalLahir[0] + ' ') : ''])]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('button.form-submit#input-submit[type=submit]', 'Lihat')])), lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current) ? null : Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.letter', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.mobile-info', 'Untuk mencetak surat ini, harap gunakan browser di desktop PC.'), // !_isEmpty(Siswa.current.access_log) ? null
// :
Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('button.print-button', {
onclick: function onclick() {
// if (confirm('Surat Keterangan ini hanya dapat dicetak satu kali. Lanjutkan?')) {
component.confirmPrint = 1;
_models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].create({
siswaId: _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.id,
src: 'sk-hasil-belajar'
}).then(function () {
_models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].fetch('sk-hasil-belajar');
window.print();
})["catch"](function (e) {
if (e.code === 0) {
_models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].error = {
message: e.message,
errors: {
create: ['Terjadi kesalahan saat menghubungkan ke server.']
}
};
} else {
_models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].error = JSON.parse(e.message);
}
}); // }
}
}, [mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust('⎙'), ' Print']), !lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default()(_models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].error) ? Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.error.ml-2', _models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].error.errors.create[0]) : null, Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.letter__header', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('img[src=img/letter-head.jpg]')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('', {
style: {
height: '1px',
width: '100%',
backgroundColor: '#000',
marginTop: '.5rem'
}
}), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('', {
style: {
height: '3px',
width: '100%'
}
}), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('', {
style: {
height: '3px',
width: '100%',
backgroundColor: '#000',
marginBottom: '1rem'
}
}), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.letter__body', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('strong.letter__body-header', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.border-b.border-black', 'SURAT KETERANGAN LULUS')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p.font-normal.mt-1', 'Nomor: 061/SMK-BA/V/2019')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('br'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('table', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=6]', 'Kepala SMK Bhakti Anindya selaku Ketua Penyelenggara Ujian Sekolah Tahun Pelajaran 2019/2020 berdasarkan:')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=5]', '1. Ketuntasan dari seluruh program pembelajaran pada Kurikulum 2013.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=5]', '2. Kriteria Kelulusan dari satuan pendidikan sesuai dengan peraturan dan perundang-undangan.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=5]', '3. Rapat Pleno Dewan Pendidik tentang keluulsan pada tanggal 30 April 2020.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust(' '))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=6]', 'Menerangkan bahwa')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust(' '))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Nama Peserta'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.nama)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Tempat / Tanggal Lahir'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.tempat_lahir + ' , ' + _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.tanggal_lahir)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'NIS / NISN'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.nis + ' / ' + _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.nisn)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Nomor Peserta'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.nopes)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Kelas'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.kelas)]), // m('tr', [
// m('td'),
// m('td', 'Bidang Studi Keahlian'),
// m('td', ':'),
// m('td[colspan=3]', Siswa.current.bsk),
// ]),
// m('tr', [
// m('td'),
// m('td', 'Program Studi Keahlian'),
// m('td', ':'),
// m('td[colspan=3]', Siswa.current.psk),
// ]),
Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Kompetensi Keahlian'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.kk)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Dinyatakan'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('strong.special', 'LULUS'))]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust(' '))), // m('tr',
// m('td[colspan=6]', 'Adalah benar siswa SMK Bhakti Anindya, Kota Tangerang dan pada tanggal 13 Mei 2019 telah dinyatakan lulus')),
Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=6]', 'Dengan Nilai sebagai berikut:')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust(' '))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=6]', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('table.nilai', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th', {
style: {
width: '5%'
}
}, 'No.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th[colspan=2]', 'Mata Pelajaran'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.long.md:w-1/5', 'Rata-rata Raport Semester 1-6'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.short.md:w-1/5', 'Raport'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.long.md:w-1/5', 'Ujian Sekolah Berstandar Nasional'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.short.md:w-1/5', 'USBN'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.long.md:w-1/5', 'Ujian Nasional Berbasis Komputer'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.short.md:w-1/5', 'UNBK')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th', 'A.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th[colspan=5].text-left', 'Normatif')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tbody.counter', lodash_map__WEBPACK_IMPORTED_MODULE_2___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.hasil_belajar.meta.normatif, function (nilai, mapel) {
if (nilai.raport != 0) component.rataRata.raport.push(nilai.raport);
if (nilai.usbn != 0) component.rataRata.usbn.push(nilai.usbn);
if (nilai.unbk != 0) component.rataRata.unbk.push(nilai.unbk);
return nilai.raport == 0 && nilai.usbn == 0 && nilai.unbk == 0 ? null : Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-right'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]', component.namaMapel[mapel]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.raport !== 0 ? nilai.raport.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.usbn !== 0 ? nilai.usbn.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.unbk !== 0 ? nilai.unbk.toFixed(2) : null)]);
})), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th', 'B.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th[colspan=5].text-left', 'Adaptif')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tbody.counter', lodash_map__WEBPACK_IMPORTED_MODULE_2___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.hasil_belajar.meta.adaptif, function (nilai, mapel) {
if (nilai.raport != 0) component.rataRata.raport.push(nilai.raport);
if (nilai.usbn != 0) component.rataRata.usbn.push(nilai.usbn);
if (nilai.unbk != 0) component.rataRata.unbk.push(nilai.unbk);
return nilai.raport == 0 && nilai.usbn == 0 && nilai.unbk == 0 ? null : Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-right'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]', component.namaMapel[mapel]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.raport !== 0 ? nilai.raport.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.usbn !== 0 ? nilai.usbn.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.unbk !== 0 ? nilai.unbk.toFixed(2) : null)]);
}), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th', 'C.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th[colspan=5].text-left', 'Produktif')])), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tbody.counter', lodash_map__WEBPACK_IMPORTED_MODULE_2___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.hasil_belajar.meta.produktif, function (nilai, mapel) {
if (nilai.raport != 0) component.rataRata.raport.push(nilai.raport);
if (nilai.usbn != 0) component.rataRata.usbn.push(nilai.usbn);
if (nilai.unbk != 0) component.rataRata.unbk.push(nilai.unbk);
return nilai.raport == 0 && nilai.usbn == 0 && nilai.unbk == 0 ? null : Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-right'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]', component.namaMapel[mapel]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.raport !== 0 ? nilai.raport.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.usbn !== 0 ? nilai.usbn.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.unbk !== 0 ? nilai.unbk.toFixed(2) : null)]);
})), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th', 'D.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th[colspan=5].text-left', 'Mulok')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tbody.counter', lodash_map__WEBPACK_IMPORTED_MODULE_2___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.hasil_belajar.meta.mulok, function (nilai, mapel) {
if (nilai.raport != 0) component.rataRata.raport.push(nilai.raport);
if (nilai.usbn != 0) component.rataRata.usbn.push(nilai.usbn);
if (nilai.unbk != 0) component.rataRata.unbk.push(nilai.unbk);
return nilai.raport == 0 && nilai.usbn == 0 && nilai.unbk == 0 ? null : Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-right'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]', component.namaMapel[mapel]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.raport !== 0 ? nilai.raport.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.usbn !== 0 ? nilai.usbn.toFixed(2) : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.unbk !== 0 ? nilai.unbk.toFixed(2) : null)]);
})), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th[colspan=3]', 'Rata-rata'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', (component.rataRata.raport.reduce(function (total, num) {
return total + num;
}) / component.rataRata.raport.length).toFixed(2)), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', (component.rataRata.usbn.reduce(function (total, num) {
return total + num;
}) / component.rataRata.usbn.length).toFixed(2)), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', (component.rataRata.unbk.reduce(function (total, num) {
return total + num;
}) / component.rataRata.unbk.length).toFixed(2))])]))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust(' '))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=6]', 'Demikian Surat Keterangan ini dibuat untuk siswa yang bersangkutan melanjutkan ke jenjang yang lebih tinggi.'))]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('table.signature', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Tangerang, 13 Mei 2019')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Kepala Sekolah,')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.letter__sign', {
style: {
height: '3rem'
}
}))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Drs. Engkos Kosasih, M.M.'))])])])];
}
};
/* harmony default export */ __webpack_exports__["default"] = (component);
/***/ }),
/***/ "./resources/js/components/SKK13HasilBelajar.js":
/*!******************************************************!*\
!*** ./resources/js/components/SKK13HasilBelajar.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var mithril__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mithril */ "./node_modules/mithril/mithril.mjs");
/* harmony import */ var lodash_isempty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash.isempty */ "./node_modules/lodash.isempty/index.js");
/* harmony import */ var lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isempty__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash.map */ "./node_modules/lodash.map/index.js");
/* harmony import */ var lodash_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_map__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _models_Siswa__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../models/Siswa */ "./resources/js/models/Siswa.js");
/* harmony import */ var _models_AccessLog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../models/AccessLog */ "./resources/js/models/AccessLog.js");
var component = {
oninit: function oninit() {
document.title = 'Surat Keterangan Lulus - SMK Bhakti Anindya';
_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current = {};
_models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].fetch('sk-k13-hasil-belajar');
},
namaMapel: {
'agama': 'Pendidikan Agama dan Budi Pekerti',
'pkn': 'Pendidikan Pancasila dan Kewarganegaraan',
'indo': 'Bahasa Indonesia',
'penjas': 'Pendidikan Jasmani, Olahraga dan Kesehatan',
'senbud': 'Seni Budaya',
'mtk': 'Matematika',
'inggris': 'Bahasa Inggris dan Bahasa Asing Lainnya',
'ipa': 'Ilmu Pengetahuan Alam',
'sejarah': 'Sejarah Indonesia',
'fisika': 'Fisika',
'kimia': 'Kimia',
'simdig': 'Simulasi dan Komunikasi Digital',
'dpk': 'Dasar Program Keahlian',
'kk': 'Kompetensi Keahlian',
'mandarin': 'Bahasa Mandarin',
'eb': 'Ekonomi Bisnis',
'au': 'Administrasi Umum'
},
rataRata: [],
namaMuatan: {
'munas': 'Muatan Nasional',
'muwil': 'Muatan Wilayah',
'mujur': 'Muatan Peminatan Jurusan'
},
// This prop is to prevent double dialog when printing,
// caused by the print button's confirm()
// and the beforeprint's alert()
confirmPrint: 0,
view: function view() {
component.rataRata = [];
return [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.header', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.italic.text-xs', ['Saat ini sudah ', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('strong', [_models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].current.accessed, ' / ', _models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].current.total]), ' siswa yang telah mencetak surat keterangan hasil belajar.']), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('h1.title', 'Surat Keterangan Lulus Siswa SMK Bhakti Anindya'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span', 'Silahkan masukkan NISN dan Tanggal Lahir kamu di bawah ini.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('form.form', {
onsubmit: function onsubmit(e) {
e.preventDefault();
_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].cariData({
nisn: e.target.elements.nisn.value,
tanggalLahir: e.target.elements.tanggalLahir.value,
src: 'sk-k13-hasil-belajar',
"with": ['k13HasilBelajar', 'accessLog']
});
}
}, Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.form-grid', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.form-group', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('label.form-label[for=input-nisn]', 'NISN'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('input.form-input.input-text#input-nisn[name=nisn][type=text][autocomplete=off][required]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p.input-helper', ['Nomor Induk Siswa Nasional. ', !lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error) ? _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.siswa != undefined ? Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.error', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.siswa[0] + ' ') : _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.nisn != undefined ? Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.error', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.nisn[0] + ' ') : '' : ''])]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.form-group', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('label.form-label[for=input-tanggalLahir]', 'Tanggal Lahir'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('input.form-input.input-text#input-tanggalLahir[name=tanggalLahir][type=text][autocomplete=off][required]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p.input-helper', ['Tanggal lahir dengan format YYYYMMDD. Contoh: untuk tanggal 29 Mei 2000 ditulis 20000529. ', !lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error) && _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.tanggalLahir != undefined ? Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.error', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].error.errors.tanggalLahir[0] + ' ') : ''])]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('button.form-submit#input-submit[type=submit]', 'Lihat')])), lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current) ? null : Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.letter', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.mobile-info', 'Untuk mencetak surat ini, harap gunakan browser di desktop PC.'), // !_isEmpty(Siswa.current.access_log) ? null
// :
Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('button.print-button', {
onclick: function onclick() {
// if (confirm('Surat Keterangan ini hanya dapat dicetak satu kali. Lanjutkan?')) {
component.confirmPrint = 1;
_models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].create({
siswaId: _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.id,
src: 'sk-k13-hasil-belajar'
}).then(function () {
_models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].fetch('sk-k13-hasil-belajar');
window.print();
})["catch"](function (e) {
if (e.code === 0) {
_models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].error = {
message: e.message,
errors: {
create: ['Terjadi kesalahan saat menghubungkan ke server.']
}
};
} else {
_models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].error = JSON.parse(e.message);
}
}); // }
},
style: {
marginTop: '4rem'
}
}, [mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust('⎙'), ' Print']), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span', {
style: {
margin: '0 1rem',
fontSize: '.8rem',
color: '#718096',
fontStyle: 'italic'
}
}, 'Pastikan memilih kertas ukuran F4 atau US Legal agar isi SKL tidak terpotong.'), !lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default()(_models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].error) ? Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.error.ml-2', _models_AccessLog__WEBPACK_IMPORTED_MODULE_4__["default"].error.errors.create[0]) : null, Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.letter__header', {
style: {
marginTop: '3rem'
}
}, [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('img[src=img/letter-head.jpg]')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('', {
style: {
borderTop: '1px solid',
height: '8px',
borderBottom: '3px solid',
width: '100%',
margin: '10px 0' // height: '1px',
// width: '100%',
// backgroundColor: '#000',
// marginTop: '.5rem',
}
}), // m('', {
// style: {
// height: '3px',
// width: '100%',
// }}),
// m('', {
// style: {
// height: '3px',
// width: '100%',
// backgroundColor: '#000',
// marginBottom: '1rem',
// }}),
Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.letter__body', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('strong.letter__body-header', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.border-b.border-black', 'SURAT KETERANGAN LULUS')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p.font-normal.mt-1', 'Nomor: 061/SMK-BA/V/2020')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('br'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('table', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=6]', 'Kepala SMK Bhakti Anindya selaku Ketua Penyelenggara Ujian Sekolah Tahun Pelajaran 2019/2020 berdasarkan:')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=5]', '1. Ketuntasan dari seluruh program pembelajaran pada Kurikulum 2013.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=5]', '2. Kriteria Kelulusan dari satuan pendidikan sesuai dengan peraturan dan perundang-undangan.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=5]', '3. Rapat Pleno Dewan Pendidik tentang kelulusan pada tanggal 30 April 2020.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust(' '))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=6]', 'Menerangkan bahwa:')), // m('tr',
// m('td',
// m.trust(' '))),
Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Nama Peserta'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.nama)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Tempat / Tanggal Lahir'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.tempat_lahir + ' , ' + _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.tanggal_lahir)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'NIS / NISN'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.nis + ' / ' + _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.nisn)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Nomor Peserta'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.nopes)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Kelas'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.kelas)]), // m('tr', [
// m('td'),
// m('td', 'Bidang Studi Keahlian'),
// m('td', ':'),
// m('td[colspan=3]', Siswa.current.bsk),
// ]),
// m('tr', [
// m('td'),
// m('td', 'Program Studi Keahlian'),
// m('td', ':'),
// m('td[colspan=3]', Siswa.current.psk),
// ]),
Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Kompetensi Keahlian'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', _models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.kk)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Dinyatakan'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('strong.special', 'LULUS'))]), // m('tr',
// m('td',
// m.trust(' '))),
// m('tr',
// m('td[colspan=6]', 'Adalah benar siswa SMK Bhakti Anindya, Kota Tangerang dan pada tanggal 13 Mei 2019 telah dinyatakan lulus')),
Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=6]', 'Dengan Nilai sebagai berikut:')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust(' '))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=6]', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('table.nilai', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th', {
style: {
width: '5%'
}
}, 'No.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th[colspan=2]', 'Mata Pelajaran'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.long.md:w-1/5', 'Nilai Ujian Sekolah'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.short.md:w-1/5', 'US')]), lodash_map__WEBPACK_IMPORTED_MODULE_2___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_3__["default"].current.k13_hasil_belajar.meta.nilai, function (mapel, muatan) {
return [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th', muatan == 'munas' ? 'A.' : muatan == 'muwil' ? 'B.' : muatan == 'mujur' ? 'C.' : null), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.text-left[colspan=3]', component.namaMuatan[muatan])]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tbody.counter', lodash_map__WEBPACK_IMPORTED_MODULE_2___default()(mapel, function (nilai, nama) {
if (nama == 'mulok') {
return [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-right'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th.text-left[colspan=2]', 'Mulok'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center')]), lodash_map__WEBPACK_IMPORTED_MODULE_2___default()(nilai, function (nl, mp) {
if (nl != 0) component.rataRata.push(nl);
return nilai == 0 ? null : Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-right.no-num'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]', component.namaMapel[mp]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nl.toFixed(2))]);
})];
} else {
if (nilai != 0) component.rataRata.push(nilai);
return nilai == 0 ? null : Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-right'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]', component.namaMapel[nama]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', nilai.toFixed(2))]);
}
}))];
}), // m('tr', [
// m('th', 'A.'),
// m('th[colspan=5].text-left', 'Normatif'),
// ]),
// m('tbody.counter',
// _map(Siswa.current.hasil_belajar.meta.normatif, (nilai, mapel) => {
// if (nilai.raport != 0) component.rataRata.raport.push(nilai.raport);
// if (nilai.usbn != 0) component.rataRata.usbn.push(nilai.usbn);
// if (nilai.unbk != 0) component.rataRata.unbk.push(nilai.unbk);
// return nilai.raport == 0 && nilai.usbn == 0 && nilai.unbk == 0 ? null : m('tr', [
// m('td.text-right'),
// m('td[colspan=2]', component.namaMapel[mapel]),
// m('td.text-center', nilai.raport !== 0 ? nilai.raport.toFixed(2) : null),
// m('td.text-center', nilai.usbn !== 0 ? nilai.usbn.toFixed(2) : null),
// m('td.text-center', nilai.unbk !== 0 ? nilai.unbk.toFixed(2) : null),
// ]);
// })),
// m('tr', [
// m('th', 'B.'),
// m('th[colspan=5].text-left', 'Adaptif'),
// ]),
// m('tbody.counter',
// _map(Siswa.current.hasil_belajar.meta.adaptif, (nilai, mapel) => {
// if (nilai.raport != 0) component.rataRata.raport.push(nilai.raport);
// if (nilai.usbn != 0) component.rataRata.usbn.push(nilai.usbn);
// if (nilai.unbk != 0) component.rataRata.unbk.push(nilai.unbk);
// return nilai.raport == 0 && nilai.usbn == 0 && nilai.unbk == 0 ? null : m('tr', [
// m('td.text-right'),
// m('td[colspan=2]', component.namaMapel[mapel]),
// m('td.text-center', nilai.raport !== 0 ? nilai.raport.toFixed(2) : null),
// m('td.text-center', nilai.usbn !== 0 ? nilai.usbn.toFixed(2) : null),
// m('td.text-center', nilai.unbk !== 0 ? nilai.unbk.toFixed(2) : null),
// ]);
// }),
// m('tr', [
// m('th', 'C.'),
// m('th[colspan=5].text-left', 'Produktif'),
// ])),
// m('tbody.counter',
// _map(Siswa.current.hasil_belajar.meta.produktif, (nilai, mapel) => {
// if (nilai.raport != 0) component.rataRata.raport.push(nilai.raport);
// if (nilai.usbn != 0) component.rataRata.usbn.push(nilai.usbn);
// if (nilai.unbk != 0) component.rataRata.unbk.push(nilai.unbk);
// return nilai.raport == 0 && nilai.usbn == 0 && nilai.unbk == 0 ? null : m('tr', [
// m('td.text-right'),
// m('td[colspan=2]', component.namaMapel[mapel]),
// m('td.text-center', nilai.raport !== 0 ? nilai.raport.toFixed(2) : null),
// m('td.text-center', nilai.usbn !== 0 ? nilai.usbn.toFixed(2) : null),
// m('td.text-center', nilai.unbk !== 0 ? nilai.unbk.toFixed(2) : null),
// ]);
// })),
// m('tr', [
// m('th', 'D.'),
// m('th[colspan=5].text-left', 'Mulok'),
// ]),
// m('tbody.counter',
// _map(Siswa.current.hasil_belajar.meta.mulok, (nilai, mapel) => {
// if (nilai.raport != 0) component.rataRata.raport.push(nilai.raport);
// if (nilai.usbn != 0) component.rataRata.usbn.push(nilai.usbn);
// if (nilai.unbk != 0) component.rataRata.unbk.push(nilai.unbk);
// return nilai.raport == 0 && nilai.usbn == 0 && nilai.unbk == 0 ? null : m('tr', [
// m('td.text-right'),
// m('td[colspan=2]', component.namaMapel[mapel]),
// m('td.text-center', nilai.raport !== 0 ? nilai.raport.toFixed(2) : null),
// m('td.text-center', nilai.usbn !== 0 ? nilai.usbn.toFixed(2) : null),
// m('td.text-center', nilai.unbk !== 0 ? nilai.unbk.toFixed(2) : null),
// ]);
// })),
Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('th[colspan=3]', 'Rata-rata'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center', (component.rataRata.reduce(function (total, num) {
return total + num;
}) / component.rataRata.length).toFixed(2))])])))]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('table.signature', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Tangerang, 02 Mei 2020')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Kepala Sekolah,')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.letter__sign', {
style: {
height: '5rem'
}
}, Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('img[src=img/letter-sign-stamp.png]', {
style: {
maxHeight: '100%'
}
})))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Ferdy, S.E., M.M.'))])])])];
}
};
/* harmony default export */ __webpack_exports__["default"] = (component);
/***/ }),
/***/ "./resources/js/components/SuratKelulusan.js":
/*!***************************************************!*\
!*** ./resources/js/components/SuratKelulusan.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var mithril__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mithril */ "./node_modules/mithril/mithril.mjs");
/* harmony import */ var lodash_isempty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash.isempty */ "./node_modules/lodash.isempty/index.js");
/* harmony import */ var lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isempty__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _models_Siswa__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../models/Siswa */ "./resources/js/models/Siswa.js");
/* harmony import */ var _models_AccessLog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../models/AccessLog */ "./resources/js/models/AccessLog.js");
var component = {
oninit: function oninit() {
document.title = 'Surat Kelulusan Siswa - SMK Bhakti Anindya';
_models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].current = {};
_models_AccessLog__WEBPACK_IMPORTED_MODULE_3__["default"].fetch('surat-kelulusan');
},
view: function view() {
return [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.header', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.italic.text-xs', ['Saat ini sudah ', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('strong', [_models_AccessLog__WEBPACK_IMPORTED_MODULE_3__["default"].current.accessed, ' / ', _models_AccessLog__WEBPACK_IMPORTED_MODULE_3__["default"].current.total]), ' siswa yang telah melihat pengumuman kelulusan.']), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('h1.title', 'Surat Kelulusan Siswa SMK Bhakti Anindya'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span', 'Silahkan masukkan NISN dan Tanggal Lahir kamu di bawah ini.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('form.form', {
onsubmit: function onsubmit(e) {
e.preventDefault();
_models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].cariData({
nisn: e.target.elements.nisn.value,
tanggalLahir: e.target.elements.tanggalLahir.value,
src: 'surat-kelulusan'
});
}
}, Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.form-grid', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.form-group', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('label.form-label[for=input-nisn]', 'NISN'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('input.form-input.input-text#input-nisn[name=nisn][type=text][autocomplete=off][required]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p.input-helper', ['Nomor Induk Siswa Nasional. ', !lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].error) ? _models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].error.errors.siswa != undefined ? Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.error', _models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].error.errors.siswa[0] + ' ') : _models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].error.errors.nisn != undefined ? Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.error', _models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].error.errors.nisn[0] + ' ') : '' : ''])]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.form-group', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('label.form-label[for=input-tanggalLahir]', 'Tanggal Lahir'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('input.form-input.input-text#input-tanggalLahir[name=tanggalLahir][type=text][autocomplete=off][required]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p.input-helper', ['Tanggal lahir dengan format YYYYMMDD. Contoh: untuk tanggal 29 Mei 2000 ditulis 20000529. ', !lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].error) && _models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].error.errors.tanggalLahir != undefined ? Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.error', _models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].error.errors.tanggalLahir[0] + ' ') : ''])]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('button.form-submit#input-submit[type=submit]', 'Lihat')])), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])(!lodash_isempty__WEBPACK_IMPORTED_MODULE_1___default()(_models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].current) ? '.letter' : '.letter.hidden', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.mobile-info', 'Untuk mencetak surat ini, harap gunakan browser di desktop PC.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('button.print-button', {
onclick: function onclick() {
window.print();
}
}, [mithril__WEBPACK_IMPORTED_MODULE_0__["default"].trust('⎙'), ' Print']), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.letter__header', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('img[src=img/letter-head.jpg]')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('', {
style: {
height: '1px',
width: '100%',
backgroundColor: '#000',
marginTop: '.5rem'
}
}), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('', {
style: {
height: '3px',
width: '100%'
}
}), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('', {
style: {
height: '3px',
width: '100%',
backgroundColor: '#000',
marginBottom: '1rem'
}
}), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.letter__body', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('strong.letter__body-header', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p', 'KEPUTUSAN'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p', 'KEPALA SEKOLAH MENENGAH KEJURUAN (SMK) BHAKTI ANINDYA'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p', 'Nomor: 076 / SMK - BA / V / 2019'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p', 'TENTANG'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p', 'KELULUSAN PESERTA UJIAN DARI SATUAN PENDIDIKAN'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p', 'TAHUN PELAJARAN 2018 / 2019'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('br'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('p', 'KEPALA SMK BHAKTI ANINDYA')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('br'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('table', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Menimbang'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', '1.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Bahwa dalam rangka pengumuman hasil ujian akhir kelas XII Tahun Pelajaran 2018/2019 dipandang perlu untuk menerbitkan surat keputusan tentang kelulusan peserta ujian dari satuan pendidikan SMK Bhakti Anindya.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', '2.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Bahwa peserta ujian yang namanya tercantum pada surat keputusan ini dipandang cakap, kompeten, dan layak untuk dinyatakan lulus dari Satuan Pendidikan SMK Bhakti Anindya.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('br'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Mengingat'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', '1.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Undang Undang No. 20 Tahun 2003 tentang Sistem Pendidikan Nasional.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', '2.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Permendikbud Nomor 57 Tahun 2015 Tentang Penilaian Hasil Belajar Oleh Pemerintah Melalui Ujian Nasional Dan Penilaian Hasil Belajar Oleh Satuan Pendidikan Melalui Ujian Sekolah/ Madrasah/ Pendidikan Kesetaraan Pada SMP/ MTs/ Yang Sederajat Dan SMA/ MA/ SMK Atau Yang Sederajat.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', '3.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Peraturan BSNP NOMOR: 0047/P/BSNP/XI/2018 tentang Prosedur Operasional Standar Penyelenggaraan Ujian Nasional Tahun Pelajaran 2018/2019.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', '4.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Peraturan BSNP NOMOR: 0048/BSNP/XI/2018 tentang Prosedur Operasional Standar Penyelenggaraan Ujian Sekolah Berstandar Nasaional Tahun Pelajaran 2018/2019.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', '5.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Pedoman Penyelenggaraan UKK dan Sertifikasi Siswa SMK pada Ujian Nasional Tahun Pelajaran 2017/2018.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('br'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Memperhatikan'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', '1.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Nilat raport semester 1 – 6 Tahun Pelajaran 2016/2017 – 2018/2019.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', '2.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Nilai Hasil Ujian Praktik Kejuruan ( UPK ) yang diselenggarakan tanggal 1 April s.d 3 Mei 2019.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', '3.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Nilai Hasil Ujian Sekolah Berstandar Nasional (USBN) yang diselenggarakan tanggal 05 – 12 April 2019.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', '4.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Nilai Hasil Ujian Nasional Berbasis Komputer (UNBK) yang diselenggarakan tanggal 25 – 28 Maret 2019.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', '5.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Hasil pengamatan dan penilaian mengenai sikap, prilaku, dan kepribadian yang bersangkutan selama menjadi siswa SMK Bhakti Anindya.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', '6.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Hasil Rapat Pleno Dewan Guru SMK Bhakti Anindya tanggal 10 Mei 2019.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=2]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', '7.'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Surat Keputusan Tentang Kriteria Kelulusan dari Satuan Pendidikan.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.text-center[colspan=6]', 'MEMUTUSKAN :')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Menetapkan'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Pertama'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Nama Peserta'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.strong', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.strong', _models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].current.nama)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Tempat & Tanggal Lahir'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.strong', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.strong', _models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].current.tempat_lahir + ' , ' + _models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].current.tanggal_lahir)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'NIS / NISN'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.strong', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.strong', _models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].current.nis + ' / ' + _models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].current.nisn)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Nomor Peserta'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.strong', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.strong', _models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].current.nopes)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Bidang Studi Keahlian'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.strong', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.strong', _models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].current.bsk)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Program Studi Keahlian'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.strong', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.strong', _models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].current.psk)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Kompetensi Keahlian'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.strong', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td.strong', _models_Siswa__WEBPACK_IMPORTED_MODULE_2__["default"].current.kk)]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', ['Dinyatakan ', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('span.special', 'LULUS'), ' dari satuan pendidikan SMK Bhakti Anindya Tahun Pelajaran 2018/2019'])]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('br'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Kedua'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=4]', 'Surat Keputusan ini dikeluarkan sebagai pengganti ijazah yang akan diterbitkan kemudian.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Ketiga'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=4]', 'Apabila dalam Surat Keputusan ini terdapat kekeliruan akan dilakukan perbaikan sebagaimana mestinya.')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Keempat'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=4]', 'Surat Keputusan ini berlaku terhitung mulai tanggal ditetapkan.')])]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('table.signature', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Ditetapkan di'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Tangerang')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', [Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Pada Tanggal'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', ':'), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', '13 Mei 2019')]), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td', 'Kepala Sekolah,')), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('.letter__sign', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('img[src=img/letter-sign.png]', {
style: {
maxHeight: '80%'
}
})))), Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('tr', Object(mithril__WEBPACK_IMPORTED_MODULE_0__["default"])('td[colspan=3]', 'Drs. Engkos Kosasih, M.M.'))])])])];
}
};
/* harmony default export */ __webpack_exports__["default"] = (component);
/***/ }),
/***/ "./resources/js/models/AccessLog.js":
/*!******************************************!*\
!*** ./resources/js/models/AccessLog.js ***!
\******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var mithril__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mithril */ "./node_modules/mithril/mithril.mjs");
var model = {
current: {},
error: {},
fetch: function fetch(src) {
model.current = {};
model.error = {};
return mithril__WEBPACK_IMPORTED_MODULE_0__["default"].request({
method: 'get',
url: '/api/access_log',
data: {
src: src
}
}).then(function (response) {
model.current = response;
})["catch"](function (e) {
if (e.code === 0) {
model.error = {
message: e.message,
errors: {
accessLog: ['Terjadi kesalahan saat menghubungkan ke server.']
}
};
} else model.error = JSON.parse(e.message);
});
},
create: function create(data) {
model.error = {};
return mithril__WEBPACK_IMPORTED_MODULE_0__["default"].request({
method: 'post',
url: '/api/access_log',
data: data
}).then(function (response) {
model.current = response;
});
}
};
/* harmony default export */ __webpack_exports__["default"] = (model);
/***/ }),
/***/ "./resources/js/models/Siswa.js":
/*!**************************************!*\
!*** ./resources/js/models/Siswa.js ***!
\**************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var mithril__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mithril */ "./node_modules/mithril/mithril.mjs");
/* harmony import */ var _AccessLog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AccessLog */ "./resources/js/models/AccessLog.js");
var model = {
current: {},
error: {},
cariData: function cariData(data) {
model.current = {};
model.error = {}, mithril__WEBPACK_IMPORTED_MODULE_0__["default"].request({
method: 'post',
url: '/api/siswa',
data: data
}).then(function (response) {
model.current = response;
_AccessLog__WEBPACK_IMPORTED_MODULE_1__["default"].fetch(data.src);
})["catch"](function (e) {
if (e.code === 0) {
model.error = {
message: e.message,
errors: {
siswa: ['Terjadi kesalahan saat menghubungkan ke server.']
}
};
} else model.error = JSON.parse(e.message);
});
}
};
/* harmony default export */ __webpack_exports__["default"] = (model);
/***/ }),
/***/ "./resources/sass/main.scss":
/*!**********************************!*\
!*** ./resources/sass/main.scss ***!
\**********************************/
/*! no static exports found */
/***/ (function(module, exports) {
// removed by extract-text-webpack-plugin
/***/ }),
/***/ 0:
/*!**************************************************************!*\
!*** multi ./resources/js/app.js ./resources/sass/main.scss ***!
\**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! /home/gregorio/Documents/codes/local/smk-kelulusan/resources/js/app.js */"./resources/js/app.js");
module.exports = __webpack_require__(/*! /home/gregorio/Documents/codes/local/smk-kelulusan/resources/sass/main.scss */"./resources/sass/main.scss");
/***/ })
/******/ }); |