SMK_Kelulusan/public/js/app.js
Gregorio Chiko 662f6e30c7 Optimisasi untuk K13 2020
- restriksi untuk print dihilangkan
- stempel pada ttd ditambahkann
- isi surat disesuaikan
- ukuran kertas disesuaikan
- data siswa baru ditambahkan
2020-05-01 23:35:05 +07:00

5557 lines
240 KiB
JavaScript
Vendored
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ({
/***/ "./node_modules/lodash.isempty/index.js":
/*!**********************************************!*\
!*** ./node_modules/lodash.isempty/index.js ***!
\**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global, module) {/**
* lodash (Custom Build) <https://lodash.com/>
* Build: `lodash modularize exports="npm" -o ./`
* Copyright jQuery Foundation and other contributors <https://jquery.org/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/
/** Used as references for various `Number` constants. */
var MAX_SAFE_INTEGER = 9007199254740991;
/** `Object#toString` result references. */
var argsTag = '[object Arguments]',
funcTag = '[object Function]',
genTag = '[object GeneratorFunction]',
mapTag = '[object Map]',
objectTag = '[object Object]',
promiseTag = '[object Promise]',
setTag = '[object Set]',
weakMapTag = '[object WeakMap]';
var dataViewTag = '[object DataView]';
/**
* Used to match `RegExp`
* [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
*/
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
/** Used to detect host constructors (Safari). */
var reIsHostCtor = /^\[object .+?Constructor\]$/;
/** 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;
/**
* 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;
}
/**
* 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));
};
}
/** Used for built-in method references. */
var 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 Buffer = moduleExports ? root.Buffer : undefined,
propertyIsEnumerable = objectProto.propertyIsEnumerable;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
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');
/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */
var nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');
/** Used to detect maps, sets, and weakmaps. */
var dataViewCtorString = toSource(DataView),
mapCtorString = toSource(Map),
promiseCtorString = toSource(Promise),
setCtorString = toSource(Set),
weakMapCtorString = toSource(WeakMap);
/**
* 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 `_.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));
}
/**
* 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 `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;
}
/**
* 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 '';
}
/**
* 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 a buffer.
*
* @static
* @memberOf _
* @since 4.3.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
* @example
*
* _.isBuffer(new Buffer(2));
* // => true
*
* _.isBuffer(new Uint8Array(2));
* // => false
*/
var isBuffer = nativeIsBuffer || stubFalse;
/**
* Checks if `value` is an empty object, collection, map, or set.
*
* Objects are considered empty if they have no own enumerable string keyed
* properties.
*
* Array-like values such as `arguments` objects, arrays, buffers, strings, or
* jQuery-like collections are considered empty if they have a `length` of `0`.
* Similarly, maps and sets are considered empty if they have a `size` of `0`.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is empty, else `false`.
* @example
*
* _.isEmpty(null);
* // => true
*
* _.isEmpty(true);
* // => true
*
* _.isEmpty(1);
* // => true
*
* _.isEmpty([1, 2, 3]);
* // => false
*
* _.isEmpty({ 'a': 1 });
* // => false
*/
function isEmpty(value) {
if (isArrayLike(value) &&
(isArray(value) || typeof value == 'string' ||
typeof value.splice == 'function' || isBuffer(value) || isArguments(value))) {
return !value.length;
}
var tag = getTag(value);
if (tag == mapTag || tag == setTag) {
return !value.size;
}
if (nonEnumShadows || isPrototype(value)) {
return !nativeKeys(value).length;
}
for (var key in value) {
if (hasOwnProperty.call(value, key)) {
return false;
}
}
return true;
}
/**
* 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';
}
/**
* This method returns `false`.
*
* @static
* @memberOf _
* @since 4.13.0
* @category Util
* @returns {boolean} Returns `false`.
* @example
*
* _.times(2, _.stubFalse);
* // => [false, false]
*/
function stubFalse() {
return false;
}
module.exports = isEmpty;
/* 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/lodash.map/index.js":
/*!******************************************!*\
!*** ./node_modules/lodash.map/index.js ***!
\******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global, module) {/**
* lodash (Custom Build) <https://lodash.com/>
* Build: `lodash modularize exports="npm" -o ./`
* Copyright jQuery Foundation and other contributors <https://jquery.org/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* 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 = "<td>i</td><td>j</td>"
// console.log(div.innerHTML)
// --> "ij", no <td> in sight.
var temp = $doc.createElement(possibleParents[match0[1]] || "div")
if (ns === "http://www.w3.org/2000/svg") {
temp.innerHTML = "<svg xmlns=\"http://www.w3.org/2000/svg\">" + vnode3.children + "</svg>"
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('&#9113;'), ' 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('&nbsp;'))), 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('&nbsp;'))), 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('&nbsp;'))), 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('&nbsp;'))), 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('&nbsp;'))), 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('&#9113;'), ' 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('&nbsp;'))), 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('&nbsp;'))), 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('&nbsp;'))), // 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('&nbsp;'))), 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('&nbsp;'))), 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 Hasil Belajar K13 Siswa - 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 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 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-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('&#9113;'), ' 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/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('&nbsp;'))), 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('&nbsp;'))),
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('&nbsp;'))),
// 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('&nbsp;'))), 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('&#9113;'), ' 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");
/***/ })
/******/ });