{"version":3,"file":"posca.js","mappings":"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","sources":["webpack://asp.net/./node_modules/es6-promise/dist/es6-promise.js","webpack://asp.net/./node_modules/jquery/dist/jquery.js","webpack://asp.net/./node_modules/spark-md5/spark-md5.js","webpack://asp.net/./node_modules/vue/dist/vue.js","webpack://asp.net/webpack/bootstrap","webpack://asp.net/webpack/runtime/compat get default export","webpack://asp.net/webpack/runtime/define property getters","webpack://asp.net/webpack/runtime/global","webpack://asp.net/webpack/runtime/hasOwnProperty shorthand","webpack://asp.net/./Scripts/util/logger.ts","webpack://asp.net/./Scripts/util/ajax.ts","webpack://asp.net/./Scripts/util/const.ts","webpack://asp.net/./Scripts/util/verify.ts","webpack://asp.net/./Scripts/util/ui.ts","webpack://asp.net/./Scripts/util/idb.ts","webpack://asp.net/./Scripts/util/dialog.ts","webpack://asp.net/./Scripts/util/relic.ts","webpack://asp.net/./Scripts/util/lstorage.ts","webpack://asp.net/./Scripts/entity/idb/editInfo.ts","webpack://asp.net/./Scripts/entity/idb/orderInfo.ts","webpack://asp.net/./Scripts/entity/idb/masterInfo.ts","webpack://asp.net/./Scripts/entity/idb/getParam.ts","webpack://asp.net/./Scripts/util/adjustRecord.ts","webpack://asp.net/./Scripts/util/common.ts","webpack://asp.net/./Scripts/entity/responseEntity.ts","webpack://asp.net/./Scripts/entity/GetEditInfoResponseEntity.ts","webpack://asp.net/./Scripts/entity/SenderInfoDbEntity.ts","webpack://asp.net/./Scripts/baseVueController.ts","webpack://asp.net/./Scripts/footer.ts","webpack://asp.net/./node_modules/linq/linq.js","webpack://asp.net/./Scripts/util/multitab.ts","webpack://asp.net/./Scripts/sonbpIf/base/constants.ts","webpack://asp.net/./Scripts/edit/edit.const.ts","webpack://asp.net/./Scripts/edit/edit.tool.ts","webpack://asp.net/./Scripts/edit/edit.effectMystampSDK.ts","webpack://asp.net/./Scripts/edit/edit.entity.ts","webpack://asp.net/./Scripts/edit/edit.sonbp_if.ts","webpack://asp.net/./Scripts/edit/edit.baseLogic.ts","webpack://asp.net/./Scripts/edit/edit.objectManiLogic.ts","webpack://asp.net/./Scripts/edit/uploadImageLogic/edit.baseStampLogic.ts","webpack://asp.net/./Scripts/edit/uploadImageLogic/edit.uploadImageLogic.base.ts","webpack://asp.net/./Scripts/edit/uploadImageLogic/edit.uploadImageLogic.photo.ts","webpack://asp.net/./Scripts/util/sso.ts","webpack://asp.net/./Scripts/edit/uploadImageLogic/edit.uploadImageLogic.mystamp.ts","webpack://asp.net/./Scripts/edit/uploadImageLogic/edit.uploadImageLogic.tegakistamp.ts","webpack://asp.net/./Scripts/edit/uploadImageLogic/edit.uploadImageLogic.mststamp.ts","webpack://asp.net/./Scripts/edit/edit.senderLogic.ts","webpack://asp.net/./Scripts/edit/edit.greetingLogic.ts","webpack://asp.net/./Scripts/edit/edit.saveLogic.ts","webpack://asp.net/./Scripts/Gaiji/edit.GaijiLogic.ts","webpack://asp.net/./Scripts/atenaSelect.ts","webpack://asp.net/./Scripts/addOrder.ts","webpack://asp.net/./Scripts/posca.ts","webpack://asp.net/./Scripts/edit.ts","webpack://asp.net/./Scripts/preview.ts","webpack://asp.net/./Scripts/hagakiSelect.ts","webpack://asp.net/./Scripts/error.ts","webpack://asp.net/./Scripts/sonbpIf_test_driver.ts"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"\r\n \r\n \r\n \r\n `;\r\n $('head').append(addScripts);\r\n\r\n const environment = this.isDebug ? AdjustConfig.EnvironmentSandbox : AdjustConfig.EnvironmentProduction;\r\n const adjustConfig = new AdjustConfig(token, environment);\r\n\r\n Adjust.onCreate(adjustConfig);\r\n\r\n // イベント発火\r\n // iOSに合わせてAdjustの準備ができてから\r\n // イベント処理を登録\r\n var adjustEvent = new AdjustEvent(eventID);\r\n Adjust.trackEvent(adjustEvent);\r\n }\r\n\r\n}\r\n\r\n// SDKが読み込まれた場合は以下の内容は不要\r\n// iOSの初期化時のエラー対応\r\nfunction WebViewJavascriptBridge(WebViewJavascriptBridge: any) {\r\n throw new Error(\"Function not implemented.\");\r\n}\r\n","/**\r\n * \r\n * 全画面共通で使用する処理。\r\n * \r\n * */\r\n\r\nimport { editInfo, greetingInfo, photo, photoUse, sonbpVp, stampInfo, uploadStampUseInfo} from \"../entity/idb/editInfo\";\r\nimport { orderInfo } from \"../entity/idb/orderInfo\";\r\nimport { ajax } from \"./ajax\";\r\nimport * as es6promise from \"es6-promise\";\r\nimport { LoginEntity, OcapiLoginRequest } from \"../entity/LoginEntity\";\r\nimport { dialogUtil } from \"./dialog\";\r\nimport { idb } from \"./idb\";\r\nimport { SendSaveDataEntity } from \"../entity/SendSaveDataEntity\";\r\nimport { constDialogMessage, constProcCd } from \"./const\";\r\nimport { GetCartTokenResponseEntity } from \"../entity/GetCartTokenResponseEntity\";\r\nimport { Logger } from \"./logger\";\r\nimport { GetEditInfo, retailerConfig } from \"../entity\";\r\nimport { retailerConfigEntity } from \"../entity/retailerConfigEntity\";\r\nimport { masterInfo } from \"../entity/idb/masterInfo\";\r\nimport { ui } from \"./ui\";\r\nimport { lstorage } from \"./lstorage\";\r\nimport { getParam } from \"../entity/idb/getParam\";\r\nimport { url } from \"inspector\";\r\nimport { stringify } from \"querystring\";\r\nimport { param } from \"jquery\";\r\nimport { SSO } from \"./sso\";\r\nimport { AdjustRecord } from \"../util/adjustRecord\";\r\n\r\n// GIGYA\r\ndeclare var gigya: any;\r\n\r\n// WebKit\r\ninterface Window {\r\n\twebkit?: any;\r\n\tlocation?: any;\r\n}\r\ndeclare var window: Window;\r\n\r\nexport module common {\r\n\r\n\t// WebAPIのエンドポイント定義\r\n\tconst WebAPI_SendSaveData = \"Extr/SendSaveData\";\r\n\tconst WebAPI_OcapiLogin = \"Login/Ocapi/\";\r\n\tconst WebAPI_GIGYALogin = \"Login/GIGYA/\";\r\n\tconst WebAPI_LoginCheck = \"Login/Check\";\r\n\r\n\tconst WebAPI_UpdateStatus = \"Extr/UpdateStatus\";\r\n\tconst WebAPI_GetCartToken = \"Extr/GetCartToken\";\r\n\r\n\tconst WebAPI_GetEditInfo = \"Edit/GetEditInfo\";\r\n\tconst WebAPI_InitTemp = \"Edit/InitTemp\";\r\n\r\n\r\n\texport let _retailerConf: retailerConfigEntity;\r\n\tlet _token: string = \"\";\r\n\r\n\t// 追加注文するときの制御\r\n\texport let pleaseQuiet = false;\r\n\r\n\t// idb関連\r\n\tconst EDIT_INFO_STORENAME = \"editInfo\";\r\n\tconst OREDER_INFO_STORENAME = \"orderInfo\";\r\n\tconst MASTER_INFO_STORENAME = \"masterInfo\";\r\n\r\n\texport let isDebug = false;\r\n\tconst devUrl = [\"localhost\", \"127.0.0.1\",\"ff-posca\"];\r\n\r\n\texport function init() {\r\n\r\n\t\tconst current = window.location.href;\r\n\t\tlet rt = devUrl.filter(url => {\r\n\t\t\treturn current.indexOf(url) > 0;\r\n\t\t});\r\n\t\tif (rt.length > 0) {\r\n\t\t\tisDebug = true;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t// ---------- 外向け -------------------------------------------\r\n\r\n\t/**\r\n\t * パラメータセット\r\n\t * @param ccgigya\r\n\t * @param cclogincheck\r\n\t * @param clientId\r\n\t */\r\n\texport function SetRetailerSetting(conf: retailerConfigEntity) {\r\n\t\t_retailerConf = conf\r\n\t}\r\n\r\n\t/**\r\n\t * 編集画面以外から来た時用にサーバの準備とidbの準備を行う。\r\n\t * @param token\r\n\t * @param editId\r\n\t */\r\n\texport async function InitReturn(token: string) {\r\n\r\n\t\t// テンポラリ初期化\r\n\t\tlet initRs = await InitTemp(token).then((rs) => {\r\n\t\t\treturn rs;\r\n\t\t})\r\n\t\tif (!initRs) {\r\n\t\t\tLogger.error(\"テンポラリ初期失敗\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// 編集情報取得\r\n\t\tawait GetEditInfo(token).then(async (data: GetEditInfo.GetEditInfoResponseEntity) => {\r\n\r\n\t\t\t// テンプレート期限チェック\r\n\t\t\tif (data.master.design.isExpire) {\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_DESIGN_EXPIRED_TEXT, function () {\r\n\t\t\t\t\twindow.location.href = common._retailerConf.orderHistory;\r\n\t\t\t\t});\r\n\t\t\t\treturn;\r\n\t\t\t} else if (data.info.isExpire) {\r\n\t\t\t\t// 編集期限チェック\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_DATA_EXPIRED_TEXT, function () {\r\n\t\t\t\t\twindow.location.href = common._retailerConf.orderHistory;\r\n\t\t\t\t});\r\n\t\t\t\treturn;\r\n\t\t\t} else {\r\n\t\t\t\t// idbに詰め込み\r\n\r\n\t\t\t\t// ------editInfo --------\r\n\t\t\t\tLogger.info(\"edit info\");\r\n\t\t\t\tvar ei: editInfo = new editInfo();\r\n\t\t\t\tei.retailerId = _retailerConf.id;\r\n\t\t\t\tei.tempId = data.tempId;\r\n\t\t\t\tei.saveAs = data.info.saveAs;\r\n\t\t\t\tei.printType = data.info.printType;\r\n\t\t\t\tei.dsnNo = data.master.design.dsnNo;\r\n\r\n\t\t\t\t// 画像アップロードデータ\r\n\t\t\t\tLogger.info(\"photoUpload Info\");\r\n\t\t\t\tei.photoList = new Array();\r\n\t\t\t\tdata.info.photo.forEach((e) => {\r\n\t\t\t\t\tvar p: photo = new photo();\r\n\t\t\t\t\tp.fileId = e.fileId;\r\n\t\t\t\t\tp.deleteFlg = false;\r\n\t\t\t\t\tp.fileName = e.uploadFileName;\r\n\t\t\t\t\tp.height = e.height;\r\n\t\t\t\t\tp.width = e.width;\r\n\t\t\t\t\tp.uploadDate = e.uploadDate;\r\n\t\t\t\t\tp.isUsed = e.isUsed;\r\n\t\t\t\t\tei.photoList.push(p);\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// 画像使用データ\r\n\t\t\t\tLogger.info(\"photoUse Info\");\r\n\t\t\t\tei.photoUseList = new Array();\r\n\t\t\t\tdata.info.photoUse.forEach((e) => {\r\n\t\t\t\t\tvar p: photoUse = new photoUse();\r\n\t\t\t\t\tp.fileId = e.fileId;\r\n\t\t\t\t\tp.useI2 = e.isUseI2;\r\n\t\t\t\t\tp.brightId = e.brightId;\r\n\t\t\t\t\tvar svp: sonbpVp = new sonbpVp();\r\n\t\t\t\t\tsvp.idx = e.sonbpVp.idx;\r\n\t\t\t\t\tsvp.x = e.sonbpVp.x;\r\n\t\t\t\t\tsvp.y = e.sonbpVp.y;\r\n\t\t\t\t\tsvp.width = e.sonbpVp.width;\r\n\t\t\t\t\tsvp.height = e.sonbpVp.height;\r\n\t\t\t\t\tsvp.angle = e.sonbpVp.angle;\r\n\t\t\t\t\tp.sonbpVp = svp;\r\n\t\t\t\t\tei.photoUseList.push(p);\r\n\t\t\t\t})\r\n\r\n\t\t\t\t// あいさつ文\r\n\t\t\t\tLogger.info(\"greeting Info\");\r\n\t\t\t\tei.greetingInfo = new Array();\r\n\t\t\t\tdata.info.greeting.forEach((e) => {\r\n\t\t\t\t\tvar g: greetingInfo = new greetingInfo();\r\n\t\t\t\t\tg.id = parseInt(e.id);\r\n\t\t\t\t\tg.greetingNo = e.greetingNo;\r\n\t\t\t\t\tg.fontId = e.font;\r\n\t\t\t\t\tg.size = e.size;\r\n\t\t\t\t\tg.colorId = e.color;\r\n\t\t\t\t\tg.outlineColor = e.outlineColor;\r\n\t\t\t\t\tg.align = e.align;\r\n\t\t\t\t\tg.text = e.text;\r\n\t\t\t\t\tg.direction = e.direction;\r\n\t\t\t\t\tvar svp: sonbpVp = new sonbpVp();\r\n\t\t\t\t\tsvp.idx = e.sonbpVp.idx;\r\n\t\t\t\t\tsvp.x = e.sonbpVp.x;\r\n\t\t\t\t\tsvp.y = e.sonbpVp.y;\r\n\t\t\t\t\tsvp.width = e.sonbpVp.width;\r\n\t\t\t\t\tsvp.height = e.sonbpVp.height;\r\n\t\t\t\t\tsvp.angle = e.sonbpVp.angle;\r\n\t\t\t\t\tg.sonbpVp = svp;\r\n\t\t\t\t\tei.greetingInfo.push(g);\r\n\t\t\t\t})\r\n\r\n\t\t\t\t// スタンプ\r\n\t\t\t\tLogger.info(\"stamp Info\");\r\n\t\t\t\tei.stampInfo = new Array();\r\n\t\t\t\tdata.info.stamp.forEach((e) => {\r\n\t\t\t\t\tvar s: stampInfo = new stampInfo();\r\n\t\t\t\t\ts.fileId = e.stampId;\r\n\t\t\t\t\tvar svp: sonbpVp = new sonbpVp();\r\n\t\t\t\t\tsvp.idx = e.sonbpVp.idx;\r\n\t\t\t\t\tsvp.x = e.sonbpVp.x;\r\n\t\t\t\t\tsvp.y = e.sonbpVp.y;\r\n\t\t\t\t\tsvp.width = e.sonbpVp.width;\r\n\t\t\t\t\tsvp.height = e.sonbpVp.height;\r\n\t\t\t\t\tsvp.angle = e.sonbpVp.angle;\r\n\t\t\t\t\ts.sonbpVp = svp;\r\n\t\t\t\t\tei.stampInfo.push(s);\r\n\t\t\t\t})\r\n\r\n\t\t\t\t// マイスタンプアップロード情報\r\n\t\t\t\tLogger.info(\"mystampUpload Info\");\r\n\t\t\t\tei.myStampList = new Array();\r\n\t\t\t\tdata.info.myStamp.forEach((e) => {\r\n\t\t\t\t\tvar p: photo = new photo();\r\n\t\t\t\t\tp.fileId = e.fileId;\r\n\t\t\t\t\tp.deleteFlg = false;\r\n\t\t\t\t\tp.fileName = e.uploadFileName;\r\n\t\t\t\t\tp.height = e.height;\r\n\t\t\t\t\tp.width = e.width;\r\n\t\t\t\t\tp.uploadDate = e.uploadDate;\r\n\t\t\t\t\tp.isUsed = e.isUsed;\r\n\t\t\t\t\tei.myStampList.push(p);\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// マイスタンプ使用データ\r\n\t\t\t\tLogger.info(\"mystampUse Info\");\r\n\t\t\t\tei.myStampUseList = new Array();\r\n\t\t\t\tdata.info.myStampUse.forEach((e) => {\r\n\t\t\t\t\tvar p: uploadStampUseInfo = new uploadStampUseInfo();\r\n\t\t\t\t\tp.fileId = e.fileId;\r\n\t\t\t\t\t//p.useI2 = e.isUseI2;\r\n\t\t\t\t\tvar svp: sonbpVp = new sonbpVp();\r\n\t\t\t\t\tsvp.idx = e.sonbpVp.idx;\r\n\t\t\t\t\tsvp.x = e.sonbpVp.x;\r\n\t\t\t\t\tsvp.y = e.sonbpVp.y;\r\n\t\t\t\t\tsvp.width = e.sonbpVp.width;\r\n\t\t\t\t\tsvp.height = e.sonbpVp.height;\r\n\t\t\t\t\tsvp.angle = e.sonbpVp.angle;\r\n\t\t\t\t\tp.sonbpVp = svp;\r\n\t\t\t\t\tei.myStampUseList.push(p);\r\n\t\t\t\t})\r\n\r\n\t\t\t\t// フォントジェニックアップロード情報\r\n\t\t\t\tLogger.info(\"fontgenicUpload Info\");\r\n\t\t\t\tei.fontgenicList = new Array();\r\n\t\t\t\tdata.info.fontgenic.forEach((e) => {\r\n\t\t\t\t\tvar p: photo = new photo();\r\n\t\t\t\t\tp.fileId = e.fileId;\r\n\t\t\t\t\tp.deleteFlg = false;\r\n\t\t\t\t\tp.fileName = e.uploadFileName;\r\n\t\t\t\t\tp.height = e.height;\r\n\t\t\t\t\tp.width = e.width;\r\n\t\t\t\t\tp.uploadDate = e.uploadDate;\r\n\t\t\t\t\tp.isUsed = e.isUsed;\r\n\t\t\t\t\tei.fontgenicList.push(p);\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// フォントジェニック使用データ\r\n\t\t\t\tLogger.info(\"fontgenicUse Info\");\r\n\t\t\t\tei.fontgenicUseList = new Array();\r\n\t\t\t\tdata.info.fontgenicUse.forEach((e) => {\r\n\t\t\t\t\tvar p: uploadStampUseInfo = new uploadStampUseInfo();\r\n\t\t\t\t\tp.fileId = e.fileId;\r\n\t\t\t\t\tp.colorId = e.colorId;\r\n\t\t\t\t\tvar svp: sonbpVp = new sonbpVp();\r\n\t\t\t\t\tsvp.idx = e.sonbpVp.idx;\r\n\t\t\t\t\tsvp.x = e.sonbpVp.x;\r\n\t\t\t\t\tsvp.y = e.sonbpVp.y;\r\n\t\t\t\t\tsvp.width = e.sonbpVp.width;\r\n\t\t\t\t\tsvp.height = e.sonbpVp.height;\r\n\t\t\t\t\tsvp.angle = e.sonbpVp.angle;\r\n\t\t\t\t\tp.sonbpVp = svp;\r\n\t\t\t\t\tei.fontgenicUseList.push(p);\r\n\t\t\t\t})\r\n\r\n\t\t\t\t//await idb.update(EDIT_INFO_STORENAME, ei);\r\n\t\t\t\tlstorage.set(lstorage.KEY_EDIT, ei);\r\n\r\n\t\t\t\t// ------orderInfo --------\r\n\t\t\t\tLogger.info(\"order Info\");\r\n\t\t\t\tvar oi: orderInfo = new orderInfo();\r\n\t\t\t\toi.postcardType = data.info.postcardType + \"\";\r\n\t\t\t\toi.num = data.info.orderNum;\r\n\t\t\t\t//await idb.update(OREDER_INFO_STORENAME, oi);\r\n\t\t\t\tlstorage.set(lstorage.KEY_ORDER, oi);\r\n\r\n\t\t\t\t// ------masterInfo --------\r\n\t\t\t\tLogger.info(\"master Info\");\r\n\t\t\t\tvar mi: masterInfo = new masterInfo();\r\n\t\t\t\tmi.hagakiMasterInfo = data.master.hagaki;\r\n\t\t\t\t//await idb.update(MASTER_INFO_STORENAME, mi);\r\n\t\t\t\tlstorage.set(lstorage.KEY_MASTER, mi);\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * 一時保存\r\n\t * ログインチェック、ログインダイアログ表示、CC保存までのオールインワン\r\n\t * 一時保存ボタンはこれを呼ぶ\r\n\t * @param token\r\n\t * @param editInfo\r\n\t * @param orderInfo\r\n\t * @param ccgigya\r\n\t */\r\n\texport async function SaveData(token: string, editInfo: editInfo, orderInfo: orderInfo, customFunc: Function = null): es6promise.Promise {\r\n\r\n\t\t// リテーラチェック\r\n\t\tconst isFF = editInfo.retailerId == \"0\" ? true : false;\r\n\r\n\t\t// idb更新\r\n\t\t//await idb.update(EDIT_INFO_STORENAME, editInfo);\r\n\t\t//await idb.update(OREDER_INFO_STORENAME, orderInfo);\r\n\t\tlstorage.set(lstorage.KEY_EDIT, editInfo);\r\n\t\tlstorage.set(lstorage.KEY_ORDER, orderInfo);\r\n\r\n\t\t// SSO\r\n\t\t//Logger.log(\"SSO開始\");\r\n\t\t//await SSO.DoSSO(token, editInfo.retailerId);\r\n\r\n\t\t// ログインチェック -> テスト環境であれば固定ID返却\r\n\t\tconst isLogin = await LoginCheck(token);\r\n\r\n\t\t// FFの場合、ログインダイアログの表示はGIGYAにハンドリングさせる.\r\n\t\tif (isFF) {\r\n\r\n\t\t\t// トークン確保\r\n\t\t\t_token = token;\r\n\r\n\t\t\tif (!isLogin) {\r\n\t\t\t\t// 未ログインの場合は\r\n\t\t\t\tawait ShowGIGYALogin();\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// ログイン済みの場合は保存/コールバック処理\r\n\t\t\t\tif (customFunc) {\r\n\t\t\t\t\t// 宛名選択画面は宛名遷移も含むコールバック処理を実施する。\r\n\t\t\t\t\tcustomFunc();\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// 通常の画面(一時保存)\r\n\t\t\t\t\tawait SaveToCommersCloud(_token);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\t// OCAPIの場合は自前でハンドリング\r\n\t\t\tif (!isLogin) {\r\n\t\t\t\tlet loginOK = false;\r\n\t\t\t\twhile (!loginOK) {\r\n\t\t\t\t\tawait ShowOcapiAndLogin(token).then((data) => {\r\n\t\t\t\t\t\tloginOK = data;\r\n\t\t\t\t\t}).catch((e) => {\r\n\t\t\t\t\t\tloginOK = e;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (customFunc) {\r\n\t\t\t\t// 宛名選択画面は宛名遷移も含むコールバック処理を実施する。\r\n\t\t\t\tcustomFunc()\r\n\r\n\t\t\t} else {\r\n\t\t\t\t// CC保存\r\n\t\t\t\tSaveToCommersCloud(token);\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * 強制保存 -> カート連携まで強制\r\n\t * */\r\n\texport async function SaveDataForceForCart(token: string, isTrial:boolean = false): es6promise.Promise {\r\n\r\n\t\t// ログインチェック -> ログイン済みであればclientIdを返す。\r\n\t\tdialogUtil.showLoading();\r\n\t\tconst isLogin = await LoginCheck(token);\r\n\t\tdialogUtil.closeLoading();\r\n\r\n\t\t// カート連携処理\r\n\t\tlet cartFunc = function () {\r\n\t\t\tcommon.AddCart(token, getIsEdit());\r\n\t\t}\r\n\r\n\t\t// 保存 & 非1枚無料時\r\n\t\tif (isLogin && !isTrial) {\r\n\r\n\t\t\t// 業務保存、CC連携、カート連携\r\n\t\t\tSaveToCommersCloud(token, cartFunc).then(() => {\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t});\r\n\r\n\t\t}else {\r\n\r\n\t\t\t// 未ログインのケースはカート連携しない。\r\n\t\t\t// ログインしていても、1枚無料であればこちらへ\r\n\r\n\t\t\t// 保存実行\r\n\t\t\tdialogUtil.showLoading();\r\n\t\t\tDoSaveBusiness(token).then(() => {\r\n\t\t\t\t// 業務保存後、カートに遷移\r\n\t\t\t\tcartFunc();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * カート追加\r\n\t * */\r\n\texport async function AddCart(token: string, editFlg: boolean): es6promise.Promise {\r\n\r\n\t\t// カート追加\r\n\t\tdialogUtil.showLoading();\r\n\t\tlet cartTokens: GetCartTokenResponseEntity;\r\n\t\tawait GetCartToken(token).then((data: GetCartTokenResponseEntity) => {\r\n\t\t\tcartTokens = data;\r\n\t\t}).catch((e) => {\r\n\t\t\t// カートトークン取得失敗\r\n\t\t\tUpdateProcCd(token, constProcCd.InCartErrorPosca);\r\n\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_GET_CARTTOKEN, dialogUtil.closeErrorDialog);\r\n\t\t\tthrow e;\r\n\t\t}).finally(() => {\r\n\t\t\tdialogUtil.closeLoading();\r\n\t\t});\r\n\r\n\t\tdialogUtil.showLoading();\r\n\r\n\t\t// GIGYA切り離し。。。。\r\n\t\tif (isDebug) {\r\n\t\t\t// ステータス更新後、GETで遷移\r\n\t\t\tUpdateProcCd(token, constProcCd.InCart).then(() => {\r\n\t\t\t\twindow.location.href = cartTokens.cartURL;\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// カート追加チェック\r\n\t\tlet ccCheckRs = 0;\r\n\t\tif (editFlg) {\r\n\r\n\t\t\t// 再編集の際は、カート追加チェックしない。\r\n\t\t\tccCheckRs = 1;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tawait CheckAddCartCC(cartTokens.cartToken, cartTokens.cartCheckURL).then((data) => {\r\n\r\n\t\t\t\t// CC結果\r\n\t\t\t\tccCheckRs = data.result.checkFlag;\r\n\r\n\t\t\t}).catch(() => {\r\n\r\n\t\t\t\t// CCカート追加チェック失敗\r\n\t\t\t\tUpdateProcCd(token, constProcCd.InCartErrorCC);\r\n\t\t\t}).finally(() => {\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// カート追加ファンク\r\n\t\tvar addCart = async () => {\r\n\r\n\t\t\t// Adjust登録\r\n\t\t\ttry {\r\n\t\t\t\tnew AdjustRecord(\r\n\t\t\t\t\tcommon._retailerConf.extrSettings.adjust?.token,\r\n\t\t\t\t\tcommon._retailerConf.extrSettings.adjust?.eventID.editEnd);\r\n\t\t\t} catch (er) {\r\n\t\t\t\tLogger.error(`AdjustError:${er}`);\r\n\t\t\t}\r\n\r\n\t\t\tdialogUtil.showLoading();\r\n\t\t\tawait AddCartCC(cartTokens.cartToken, cartTokens.cartAddURL).then((data) => {\r\n\r\n\t\t\t\tlet ccAddRs = data.result.checkFlag;\r\n\r\n\t\t\t\tif (ccAddRs == 1) {\r\n\t\t\t\t\t// ステータス更新後、GETで遷移\r\n\t\t\t\t\tUpdateProcCd(token, constProcCd.InCart).then(() => {\r\n\t\t\t\t\t\twindow.location.href = cartTokens.cartURL;\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\t\tUpdateProcCd(token, constProcCd.InCartErrorCC);\r\n\t\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_ADD_CART_CHECK, dialogUtil.closeErrorDialog);\r\n\t\t\t\t}\r\n\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\tUpdateProcCd(token, constProcCd.InCartErrorCC);\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_ADD_CART_CHECK, dialogUtil.closeErrorDialog);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// カート追加\r\n\t\tif (ccCheckRs == 1) {\r\n\r\n\t\t\tawait addCart();\r\n\r\n\t\t} else /*if (ccCheckRs == 2)*/ {\r\n\t\t\t// カート混在でもエラーでも9らしい。\r\n\t\t\t//UpdateProcCd(token, constProcCd.InCartDuplicateCC);\r\n\t\t\tawait dialogUtil.createYesNoDialog(\r\n\t\t\t\tGetGIGYADuplicateMessage(),\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\tdialogUtil.closeYesNoDialog();\r\n\t\t\t\t\taddCart();\r\n\t\t\t\t},\r\n\t\t\t\tdialogUtil.closeYesNoDialog,\r\n\t\t\t\t\"OK\",\r\n\t\t\t\t\"キャンセル\"\r\n\t\t\t)\r\n\r\n\t\t}\r\n\t\t//else {\r\n\t\t//\t// カートエラー\r\n\t\t//\tUpdateProcCd(token, constProcCd.InCartErrorCC);\r\n\t\t//\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_ADD_CART_CHECK, dialogUtil.closeErrorDialog);\r\n\r\n\t\t//}\r\n\t}\r\n\r\n\t/**\r\n\t * GIGYAエラーハンドリング\r\n\t * */\r\n\texport async function GIGYAError(): es6promise.Promise {\r\n\t\tif (!isDebug) {\r\n\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_GIGYA_ERROR, dialogUtil.closeErrorDialog);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * カスタマーID更新\r\n\t * @param orderInfo\r\n\t */\r\n\texport async function UpdateCustomerId(CustomerId: string): es6promise.Promise {\r\n\t\t// idbから取り出し\r\n\t\t//const oinf = await idb.get(OREDER_INFO_STORENAME);\r\n\t\t//oinf.customerId = CustomerId;\r\n\t\t//await idb.update(OREDER_INFO_STORENAME, oinf);\r\n\r\n\t\tlet oinf: orderInfo = lstorage.get(lstorage.KEY_ORDER);\r\n\t\toinf.customerId = CustomerId;\r\n\t\tlstorage.set(lstorage.KEY_ORDER, oinf);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * OCAPIのログインダイアログを表示させます。\r\n\t * @param token\r\n\t * @param orderInfo\r\n\t */\r\n\texport async function ShowOcapiAndLogin(token: string): es6promise.Promise {\r\n\t\tlet res: OcapiLoginRequest\r\n\r\n\t\t// ダイアログ表示\r\n\t\tawait dialogUtil.showOCAPIDialog(_retailerConf.extrSettings.ocapi).then((rs: OcapiLoginRequest) => {\r\n\t\t\tres = rs;\r\n\t\t}).catch((e) => {\r\n\t\t\tthrow e;\r\n\t\t}).finally(() => {\r\n\t\t\tdialogUtil.closeOCAPI();\r\n\t\t});\r\n\t\tLogger.log(res.loginId);\r\n\r\n\t\t// API実行\r\n\t\tdialogUtil.showLoading();\r\n\r\n\t\treturn await loginOCAPI(_retailerConf.extrSettings.ocapi.ocapiClientId, token, res)\r\n\t\t\t.then(async (data: LoginEntity) => {\r\n\r\n\t\t\t\tif (data.jwt) {\r\n\t\t\t\t\tLogger.log('ログイン成功 -> /sessions 呼び出し');\r\n\r\n\t\t\t\t\tvar loginRt = await CallOcapiSessions(data.jwt);\r\n\r\n\t\t\t\t\treturn loginRt;\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tLogger.log('ログイン失敗');\r\n\t\t\t\t\tdialogUtil.showLoginFailedMessageOCAPI();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tLogger.log('ログイン失敗');\r\n\t\t\t\tdialogUtil.showLoginFailedMessageOCAPI();\r\n\t\t\t\treturn false;\r\n\t\t\t}).finally(() => {\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t})\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * OCAPIのログインダイアログを表示させます。\r\n\t * @param token\r\n\t * @param orderInfo\r\n\t */\r\n\texport async function ShowGIGYALogin(): es6promise.Promise {\r\n\r\n\t\tif (ui.isiOS() && ui.isWebView()) {\r\n\r\n\t\t\t// WebView iOS\r\n\t\t\twindow.webkit.messageHandlers.gigyaJsCallback.postMessage(\"\");\r\n\r\n\t\t} else if (ui.isAndroid() && ui.isWebView()) {\r\n\r\n\t\t\t// WebView Android\r\n\t\t\tlocation.href = \"MyPhotoBoxApp://gigya\";\r\n\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// gigya のダイアログ\r\n\t\t\tgigya.accounts.showScreenSet({\r\n\t\t\t\tscreenSet: 'printsgifts-RegistrationLogin',\r\n\t\t\t\tauthFlow: 'redirect',\r\n\t\t\t\tlang: 'ja'\r\n\t\t\t})\r\n\t\t}\r\n\t\t// コールバック登録は各画面から行う。\r\n\t}\r\n\r\n\t// ログイン成功後の処理 → WebViewと共通処理にするためのラッパ\r\n\texport async function onLoginHandlerWithSave(res: any): es6promise.Promise {\r\n\r\n\t\tawait onLogin_Complete_App(res.UID, res.UIDSignature, res.signatureTimestamp);\r\n\r\n\t\t//dialogUtil.showLoading();\r\n\r\n\t\t//const param = {\r\n\t\t//\ttoken: _token,\r\n\t\t//\tuid: res.UID,\r\n\t\t//\tsignature: res.UIDSignature,\r\n\t\t//\tsigtimestamp: res.signatureTimestamp,\r\n\t\t//};\r\n\r\n\t\t//// GIGYAログインのシグネイチャ検証\r\n\t\t//await ajax.post(WebAPI_GIGYALogin, JSON.stringify(param)).catch((e) => {\r\n\t\t//\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_GIGYA_SIGNATURE_INVALID, dialogUtil.closeErrorDialog);\r\n\t\t//\tdialogUtil.closeLoading();\r\n\t\t//\t// 検証失敗。\r\n\t\t//\tthrow e;\r\n\t\t//});\r\n\r\n\t\t//// CCとGIGYA間のログイン\r\n\t\t//await ajax.postform(_retailerConf.GIGYACCBridge, res.UID).catch((e) => {\r\n\t\t//\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_CC_LOGIN_WITH_GIGYA, dialogUtil.closeErrorDialog);\r\n\t\t//\tdialogUtil.closeLoading();\r\n\t\t//\tthrow e;\r\n\t\t//});\r\n\r\n\t\t//dialogUtil.closeLoading();\r\n\r\n\t\t//// 名前を付けて保存ダイアログ\r\n\t\t//await SaveToCommersCloud(_token);\r\n\t}\r\n\r\n\t// GIGYAコールバック処理本体\r\n\t// WebView版では直接これが呼ばれるコールバック\r\n\t// 通常では、edit,hagakiSelect,preview画面からしか呼ばれない。\r\n\t// WebViewの時は、すべての画面から呼ばれる。\r\n\texport async function onLogin_Complete_App(UID, UIDSignature, signatureTimestamp): es6promise.Promise {\r\n\r\n\t\tLogger.debug(\"onLogin_Complete_App start\");\r\n\r\n\t\tconst getPageName = () => {\r\n\t\t\tconst locationNow: string = location.href;\r\n\t\t\tconst locationNowSplit1: string[] = locationNow.split(\"/\");\r\n\t\t\tconst locationNowSplit2: string[] = locationNowSplit1[locationNowSplit1.length - 1].split(\"?\");\r\n\r\n\t\t\t// 現在のページを取得\r\n\t\t\treturn locationNowSplit2[0].toLocaleLowerCase();\r\n\t\t}\r\n\r\n\t\tconst pageName = getPageName();\r\n\t\tif (pageName == \"addorder\") {\r\n\r\n\t\t\t// 追加注文の処理を呼ぶ。\r\n\t\t\tlet auth = (window).AddController.getAuthToken();\r\n\t\t\tconst param = {\r\n\t\t\t\ttoken: auth,\r\n\t\t\t\tuid: UID,\r\n\t\t\t\tsignature: UIDSignature,\r\n\t\t\t\tsigtimestamp: signatureTimestamp,\r\n\t\t\t};\r\n\r\n\t\t\t// GIGYAログインのシグネイチャ検証\r\n\t\t\tawait ajax.post(WebAPI_GIGYALogin, JSON.stringify(param)).catch((e) => {\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_GIGYA_SIGNATURE_INVALID, dialogUtil.closeErrorDialog);\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\t// 検証失敗。\r\n\t\t\t\tthrow e;\r\n\t\t\t});\r\n\r\n\t\t\t// CCとGIGYA間のログイン\r\n\t\t\tawait ajax.postform(_retailerConf.extrSettings.commersCloud.gigyaCcBridge, UID).catch((e) => {\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_CC_LOGIN_WITH_GIGYA, dialogUtil.closeErrorDialog);\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\tthrow e;\r\n\t\t\t});\r\n\r\n\t\t\tdialogUtil.closeLoading();\r\n\r\n\t\t\t(window).AddController.doOnload();\r\n\r\n\t\t} else if (pageName == \"atenaselect\") {\r\n\r\n\t\t\t// 宛名遷移もしくは保存の処理を行う\r\n\t\t\tlet auth = (window).AtenaController.getAuthToken();\r\n\t\t\tconst param = {\r\n\t\t\t\ttoken: auth,\r\n\t\t\t\tuid: UID,\r\n\t\t\t\tsignature: UIDSignature,\r\n\t\t\t\tsigtimestamp: signatureTimestamp,\r\n\t\t\t};\r\n\r\n\t\t\t// GIGYAログインのシグネイチャ検証\r\n\t\t\tawait ajax.post(WebAPI_GIGYALogin, JSON.stringify(param)).catch((e) => {\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_GIGYA_SIGNATURE_INVALID, dialogUtil.closeErrorDialog);\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\t// 検証失敗。\r\n\t\t\t\tthrow e;\r\n\t\t\t});\r\n\r\n\t\t\t// CCとGIGYA間のログイン\r\n\t\t\tawait ajax.postform(_retailerConf.extrSettings.commersCloud.gigyaCcBridge, UID).catch((e) => {\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_CC_LOGIN_WITH_GIGYA, dialogUtil.closeErrorDialog);\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\tthrow e;\r\n\t\t\t});\r\n\r\n\t\t\tdialogUtil.closeLoading();\r\n\r\n\t\t\t(window).AtenaController.afterGIGYACallback();\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// 明示的に保存していない場合でもgigyaがコールバックを呼ぶ可能性がある。\r\n\t\t\t// そのため、その場合(tokenがない)は何も処理しない。\r\n\t\t\t// _tokenは明示的に保存ボタン押されないとセットされない。\r\n\t\t\tLogger.debug(`_token:${_token}`);\r\n\r\n\t\t\tif (!_token) {\r\n\t\t\t\tLogger.debug(`onLogin_Complete_App fired. but token is empty`);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tLogger.debug(\"onLogin_Complete_App normal save\");\r\n\r\n\t\t\t// ただの保存\r\n\t\t\tdialogUtil.showLoading();\r\n\r\n\t\t\tconst param = {\r\n\t\t\t\ttoken: _token,\r\n\t\t\t\tuid: UID,\r\n\t\t\t\tsignature: UIDSignature,\r\n\t\t\t\tsigtimestamp: signatureTimestamp,\r\n\t\t\t};\r\n\r\n\t\t\t// GIGYAログインのシグネイチャ検証\r\n\t\t\tawait ajax.post(WebAPI_GIGYALogin, JSON.stringify(param)).catch((e) => {\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_GIGYA_SIGNATURE_INVALID, dialogUtil.closeErrorDialog);\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\t// 検証失敗。\r\n\t\t\t\tthrow e;\r\n\t\t\t});\r\n\r\n\t\t\t// CCとGIGYA間のログイン\r\n\t\t\tawait ajax.postform(_retailerConf.extrSettings.commersCloud.gigyaCcBridge, UID).catch((e) => {\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_CC_LOGIN_WITH_GIGYA, dialogUtil.closeErrorDialog);\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\tthrow e;\r\n\t\t\t});\r\n\r\n\t\t\tdialogUtil.closeLoading();\r\n\r\n\t\t\t// 名前を付けて保存ダイアログ\r\n\t\t\tawait SaveToCommersCloud(_token);\r\n\t\t}\r\n\r\n\t\tLogger.debug(\"onLogin_Complete_App end\");\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * 名前を付けて入力 ~ CC連携 ~ 保存\r\n\t * idbに保存名があるか/ないかで表示するダイアログを変える。\r\n\t * @param tkn トークン\r\n\t * @param closeFunc 保存ダイアログ閉じる押下時のコールバック\r\n\t */\r\n\texport async function SaveToCommersCloud(tkn: string, closeFunc: Function = null): es6promise.Promise {\r\n\r\n\t\t// 保存名あるか?\r\n\t\tconst saveAsIdb = GetSaveAs();\r\n\t\tif (saveAsIdb) {\r\n\t\t\t// 保存名がある。 -> 上書き?新規?。\r\n\t\t\tdialogUtil.createSelectSaveMethodDialog(\r\n\t\t\t\t(async () => {\r\n\t\t\t\t\t// 上書き保存\r\n\t\t\t\t\tdialogUtil.closeSelectSaveMethodDialog();\r\n\t\t\t\t\tawait DoSaveOverRide(tkn, saveAsIdb, closeFunc);\r\n\t\t\t\t})\r\n\t\t\t\t, (async () => {\r\n\t\t\t\t\t// 別名保存\r\n\t\t\t\t\tdialogUtil.closeSelectSaveMethodDialog();\r\n\t\t\t\t\tawait DoSave(tkn, closeFunc);\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\t// 初めての保存は名前を付けて保存\r\n\t\t\tawait DoSave(tkn, closeFunc);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * 別名を付けて保存する\r\n\t * @param tkn\r\n\t * @param saveAs\r\n\t * @param closeFunc\r\n\t */\r\n\texport async function DoSave(tkn: string, closeFunc: Function): es6promise.Promise {\r\n\t\tlet saveOK = false;\r\n\t\tlet saveAs = \"\";\r\n\t\tlet isAnotherName = false; // 別名保存or新規保存\r\n\r\n\t\t// 業務保存結果格納\r\n\t\tlet retBus: SendSaveDataEntity;\r\n\r\n\t\t// 保存OKでるまでループ\r\n\t\twhile (!saveOK) {\r\n\r\n\t\t\t// 保存名称\r\n\t\t\tawait ShowSaveAsDialog(tkn).then((data) => {\r\n\t\t\t\tsaveAs = data;\r\n\t\t\t});\r\n\t\t\tif (saveAs.length == 0) {\r\n\t\t\t\t// キャンセル時\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\tthrow null;\r\n\t\t\t}\r\n\r\n\t\t\t// SFCCセッションチェック\r\n\t\t\tdialogUtil.showLoading();\r\n\t\t\tlet sfccLoginStatus = await LoginCheck(tkn);\r\n\t\t\tif (!sfccLoginStatus) {\r\n\t\t\t\tPleaseReLogin(tkn);\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\tthrow \"\";\r\n\t\t\t}\r\n\r\n\t\t\t// 業務保存\r\n\t\t\tdialogUtil.showLoading();\r\n\t\t\tUpdateSaveName(saveAs);\r\n\t\t\tawait DoSaveBusiness(tkn).then((data) => {\r\n\t\t\t\tretBus = data;\r\n\t\t\t}).catch((e) => {\r\n\t\t\t\t// 業務保存失敗\r\n\t\t\t\tUpdateProcCd(tkn, constProcCd.SaveErrorPosca).finally(() => {\r\n\t\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\t\tLogger.log(\"業務保存失敗\");\r\n\t\t\t\t\tthrow e;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdialogUtil.closeLoading();\r\n\r\n\t\t\t// CCチェック\r\n\t\t\tif (common.isDebug == false) {\r\n\t\t\t\tdialogUtil.showLoading();\r\n\t\t\t\tlet ccCheckRs;\r\n\t\t\t\tawait CheckSaveDataCC(retBus.commersCloudInfo.saveToken, retBus.commersCloudInfo.saveCheckURL).then((data) => {\r\n\t\t\t\t\tccCheckRs = data.result.checkFlag;\r\n\r\n\t\t\t\t}).catch((e) => {\r\n\t\t\t\t\t// CC チェック失敗\r\n\t\t\t\t\tUpdateProcCd(tkn, constProcCd.SaveErrorCC);\r\n\t\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_CHECK_SAVE, dialogUtil.closeErrorDialog);\r\n\t\t\t\t\tthrow e;\r\n\t\t\t\t});\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\r\n\t\t\t\tif (ccCheckRs == 1) {\r\n\t\t\t\t\t// 重複なし。\r\n\t\t\t\t\tsaveOK = true;\r\n\t\t\t\t\tisAnotherName = true;\r\n\r\n\t\t\t\t} else if (ccCheckRs == 2) {\r\n\r\n\t\t\t\t\tdialogUtil.closeSaveDialog();\r\n\r\n\t\t\t\t\t// 上書き確認\r\n\t\t\t\t\tawait dialogUtil.createCheckSaveDialog().then(() => {\r\n\t\t\t\t\t\t// 上書きOK\r\n\t\t\t\t\t\tsaveOK = true;\r\n\t\t\t\t\t\tisAnotherName = false;\r\n\r\n\t\t\t\t\t}).catch((e) => {\r\n\t\t\t\t\t\t// 再度名前入力ダイアログ\r\n\t\t\t\t\t\tsaveOK = false;\r\n\t\t\t\t\t\tisAnotherName = true;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tUpdateProcCd(tkn, constProcCd.SaveErrorCC);\r\n\t\t\t\t\tdialogUtil.closeSaveDialog();\r\n\t\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_CHECK_SAVE, dialogUtil.closeErrorDialog);\r\n\t\t\t\t\tthrow \"\";\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tsaveOK = true;\r\n\t\t\t\tisAnotherName = true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// 保存\r\n\t\tdialogUtil.showLoading();\r\n\t\tif (common.isDebug == false) {\r\n\r\n\t\t\tawait SaveDataCC(retBus.commersCloudInfo.saveToken, retBus.commersCloudInfo.saveURL).then(async (data) => {\r\n\r\n\t\t\t\tlet ccSaveRs = data.result.checkFlag;\r\n\t\t\t\tif (ccSaveRs == 1) {\r\n\r\n\t\t\t\t\tUpdateProcCd(tkn, constProcCd.Saved);\r\n\t\t\t\t\tlet func = function () {\r\n\t\t\t\t\t\tif (closeFunc) {\r\n\t\t\t\t\t\t\tcloseFunc();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdialogUtil.createSaveDoneDialog(saveAs, retBus.saveDate, retBus.expireDate, func);\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tUpdateProcCd(tkn, constProcCd.SaveErrorCC);\r\n\t\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_SAVE, dialogUtil.closeErrorDialog);\r\n\t\t\t\t}\r\n\r\n\t\t\t}).catch((e) => {\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_SAVE, dialogUtil.closeErrorDialog);\r\n\t\t\t\tthrow e;\r\n\t\t\t}).finally(() => {\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t});\r\n\t\t} else {\r\n\r\n\t\t\t// Debug\r\n\t\t\tUpdateProcCd(tkn, constProcCd.Saved);\r\n\t\t\tlet func = function () {\r\n\t\t\t\tif (closeFunc) {\r\n\t\t\t\t\tcloseFunc();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdialogUtil.createSaveDoneDialog(saveAs, retBus.saveDate, retBus.expireDate, func);\r\n\t\t\tdialogUtil.closeLoading();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * 上書き保存する\r\n\t * @param tkn 認証トークン\r\n\t * @param saveAs 保存名\r\n\t */\r\n\texport async function DoSaveOverRide(tkn: string, saveAs: string, closeFunc: Function): es6promise.Promise {\r\n\t\t// 業務保存結果格納\r\n\t\tlet retBus: SendSaveDataEntity;\r\n\r\n\t\t// 業務保存\r\n\t\tdialogUtil.showLoading();\r\n\r\n\t\t// SFCCセッションチェック\r\n\t\tlet sfccLoginStatus = await LoginCheck(tkn);\r\n\t\tif (!sfccLoginStatus) {\r\n\t\t\tdialogUtil.closeLoading();\r\n\t\t\tPleaseReLogin(tkn);\r\n\t\t\tthrow \"\";\r\n\t\t}\r\n\r\n\t\t// 業務保存\r\n\t\tUpdateSaveName(saveAs);\r\n\t\tawait DoSaveBusiness(tkn).then((data) => {\r\n\t\t\tretBus = data;\r\n\t\t}).catch((e) => {\r\n\t\t\t// 業務保存失敗\r\n\t\t\tUpdateProcCd(tkn, constProcCd.SaveErrorPosca).finally(() => {\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\tLogger.log(\"業務保存失敗\");\r\n\t\t\t\tthrow e;\r\n\t\t\t});\r\n\t\t});\r\n\t\tdialogUtil.closeLoading();\r\n\r\n\t\t// 保存\r\n\t\tdialogUtil.showLoading();\r\n\t\tif (common.isDebug == false) {\r\n\r\n\t\t\tawait SaveDataCC(retBus.commersCloudInfo.saveToken, retBus.commersCloudInfo.saveURL).then(async (data) => {\r\n\r\n\t\t\t\tlet ccSaveRs = data.result.checkFlag;\r\n\t\t\t\tif (ccSaveRs == 1) {\r\n\r\n\t\t\t\t\tUpdateProcCd(tkn, constProcCd.Saved);\r\n\t\t\t\t\tconst f = function () {\r\n\t\t\t\t\t\tif (closeFunc) {\r\n\t\t\t\t\t\t\tcloseFunc();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdialogUtil.createSaveDoneDialog(saveAs, retBus.saveDate, retBus.expireDate, f);\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tUpdateProcCd(tkn, constProcCd.SaveErrorCC);\r\n\t\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_SAVE, dialogUtil.closeErrorDialog);\r\n\t\t\t\t}\r\n\r\n\t\t\t}).catch((e) => {\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_SAVE, dialogUtil.closeErrorDialog);\r\n\t\t\t\tthrow e;\r\n\t\t\t}).finally(() => {\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t});\r\n\t\t} else {\r\n\r\n\t\t\t// Debug\r\n\t\t\tUpdateProcCd(tkn, constProcCd.Saved);\r\n\t\t\tconst f = function () {\r\n\t\t\t\tif (closeFunc) {\r\n\t\t\t\t\tcloseFunc();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdialogUtil.createSaveDoneDialog(saveAs, retBus.saveDate, retBus.expireDate, f);\r\n\t\t\tdialogUtil.closeLoading();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * ログインチェックを行います。(CC,ポスカともに)\r\n\t * 未ログイン時はfalse\r\n\t */\r\n\texport async function LoginCheck(tkn: string): es6promise.Promise {\r\n\t\tif (isDebug) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tlet rt: boolean = false;\r\n\r\n\t\t// CC側のログインチェック\r\n\t\tawait ajax.getForCCLoginCheck(_retailerConf.extrSettings.ocapi.ocapiLoginCheckURL)\r\n\t\t\t.then(async (res: string) => {\r\n\t\t\t\trt = res.toLocaleLowerCase() == \"true\" ? true : false;\r\n\r\n\t\t\t\t// CCのログインチェックがOKであれば、ポスカ側のログインチェックを実施する。\r\n\t\t\t\tif (rt) {\r\n\r\n\t\t\t\t\tlet req = {\r\n\t\t\t\t\t\ttoken: tkn\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// ポスカ側のログインチェック\r\n\t\t\t\t\tawait ajax.post(WebAPI_LoginCheck, JSON.stringify(req))\r\n\t\t\t\t\t\t.then((res) => {\r\n\t\t\t\t\t\t\trt = res.isLogind == true ? true : false;\r\n\t\t\t\t\t\t}).catch((e) => {\r\n\t\t\t\t\t\t\tthrow e;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t}).catch((e) => {\r\n\t\t\t\tthrow e;\r\n\t\t\t});\r\n\r\n\t\treturn rt;\r\n\t}\r\n\r\n\t/**\r\n\t * ログインチェックを行います。(CC)\r\n\t * 未ログイン時はfalse\r\n\t */\r\n\texport async function LoginCheckCC(tkn: string): es6promise.Promise {\r\n\t\tif (isDebug) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tlet rt: boolean = false;\r\n\r\n\t\t// CC側のログインチェック\r\n\t\tawait ajax.getForCCLoginCheck(_retailerConf.extrSettings.ocapi.ocapiLoginCheckURL)\r\n\t\t\t.then(async (res: string) => {\r\n\t\t\t\trt = res.toLocaleLowerCase() == \"true\" ? true : false;\r\n\t\t\t}).catch((e) => {\r\n\t\t\t\tthrow e;\r\n\t\t\t});\r\n\r\n\t\treturn rt;\r\n\t}\r\n\r\n\t/**\r\n\t * ログインチェックを行います。(ポスカ)\r\n\t * 未ログイン時はfalse\r\n\t */\r\n\texport async function LoginCheckPosca(tkn: string): es6promise.Promise {\r\n\t\tif (isDebug) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tlet rt: boolean = false;\r\n\r\n\t\tlet req = {\r\n\t\t\ttoken: tkn\r\n\t\t}\r\n\r\n\t\t// ポスカ側のログインチェック\r\n\t\tawait ajax.post(WebAPI_LoginCheck, JSON.stringify(req))\r\n\t\t\t.then((res) => {\r\n\t\t\t\trt = res.isLogind == true ? true : false;\r\n\t\t\t}).catch((e) => {\r\n\t\t\t\tthrow e;\r\n\t\t\t});\r\n\r\n\t\treturn rt;\r\n\t}\r\n\r\n\t/**\r\n\t * \r\n\t * SFCCのログイン状態が切れているため再度ログインしてもらう。\r\n\t * */\r\n\tasync function PleaseReLogin(tkn: string): es6promise.Promise {\r\n\t\t// idbから取り出し\r\n\t\t//const einf = await idb.get(EDIT_INFO_STORENAME);\r\n\t\t//const oinf = await idb.get(OREDER_INFO_STORENAME);\r\n\t\tconst einf: editInfo = lstorage.get(lstorage.KEY_EDIT);\r\n\t\tconst oinf: orderInfo = lstorage.get(lstorage.KEY_ORDER);\r\n\r\n\t\tSaveData(tkn, einf, oinf);\r\n\r\n\t\t// ダイアログ経由するのであれば以下を復活\r\n\t\t//const ReLoginFunc = function () {\r\n\t\t//\tdialogUtil.closeErrorDialog();\r\n\t\t//\tSaveData(tkn, einf, oinf);\r\n\t\t//}\r\n\r\n\t\t//dialogUtil.createErrorDialog(constDialogMessage.ERROR_LOGIN_SESSION_TIMEOUT, ReLoginFunc);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * 業務保存\r\n\t * @param token\r\n\t * @param editInfo\r\n\t * @param orderInfo\r\n\t */\r\n\tasync function DoSaveBusiness(token: string): es6promise.Promise {\r\n\t\t// idbから取り出し\r\n\t\t//const einf = await idb.get(EDIT_INFO_STORENAME);\r\n\t\t//const oinf = await idb.get(OREDER_INFO_STORENAME);\r\n\t\tconst einf: editInfo = lstorage.get(lstorage.KEY_EDIT);\r\n\t\tconst oinf: orderInfo = lstorage.get(lstorage.KEY_ORDER);\r\n\r\n\t\tconst model = {\r\n\t\t\ttoken: token,\r\n\t\t\teditInfo: einf,\r\n\t\t\torderInfo: oinf\r\n\t\t}\r\n\t\tlet rt: SendSaveDataEntity;\r\n\t\tawait ajax.post(WebAPI_SendSaveData, JSON.stringify(model))\r\n\t\t\t.then((data: SendSaveDataEntity) => {\r\n\t\t\t\tLogger.log(\"保存成功しました\");\r\n\t\t\t\trt = data;\r\n\t\t\t}).catch((e) => {\r\n\t\t\t\tLogger.log(\"保存失敗です。\");\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_SAVE_DATA, dialogUtil.closeErrorDialog);\r\n\t\t\t\tthrow e;\r\n\t\t\t}).finally(() => {\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t});\r\n\t\treturn rt;\r\n\t}\r\n\r\n\t/**\r\n\t * 保存名称をidbに保存する。\r\n\t * @param saveAs\r\n\t */\r\n\t//async function UpdateSaveName(saveAs: string): es6promise.Promise {\r\n\tfunction UpdateSaveName(saveAs: string): boolean {\r\n\r\n\t\t// idbから取り出し\r\n\t\t//let einf = await idb.get(EDIT_INFO_STORENAME);\r\n\t\t//einf.saveAs = saveAs;\r\n\t\t//return await idb.update(EDIT_INFO_STORENAME, einf);\r\n\r\n\t\tlet einf: editInfo = lstorage.get(lstorage.KEY_EDIT);\r\n\t\teinf.saveAs = saveAs;\r\n\t\treturn lstorage.set(lstorage.KEY_EDIT, einf);\r\n\t}\r\n\r\n\t/**\r\n\t * 名前を付けて保存ダイアログ表示(CC連携あり)\r\n\t * 戻り値:名前\r\n\t * @param token\r\n\t */\r\n\tasync function ShowSaveAsDialog(token: string): es6promise.Promise {\r\n\r\n\t\t// 名前入力ダイアログ\r\n\t\treturn await dialogUtil.createSaveDialog()\r\n\t\t\t.then((data) => {\r\n\t\t\t\treturn data;\r\n\t\t\t}).catch((e) => {\r\n\t\t\t\t// キャンセル押下\r\n\t\t\t\treturn \"\";\r\n\t\t\t}).finally(() => {\r\n\t\t\t\tdialogUtil.closeSaveDialog();\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * (CCに対して)データ名の重複チェックを行います。\r\n\t */\r\n\tasync function CheckSaveDataCC(token: string, url: string): es6promise.Promise {\r\n\t\tlet rt: object;\r\n\t\tconst ccToken = \"token=\" + token;\r\n\t\tawait ajax.get(url, ccToken)\r\n\t\t\t.then((data) => {\r\n\t\t\t\trt = data;\r\n\t\t\t}).catch((e) => {\r\n\t\t\t\tthrow e;\r\n\t\t\t});\r\n\t\treturn rt;\r\n\t}\r\n\r\n\t/**\r\n\t * (CCに対して)データの保存を行います。\r\n\t */\r\n\tasync function SaveDataCC(token: string, url: string): es6promise.Promise {\r\n\t\tlet rt: object;\r\n\t\tconst ccToken = \"token=\" + token;\r\n\t\tawait ajax.get(url, ccToken)\r\n\t\t\t.then((data) => {\r\n\t\t\t\trt = data;\r\n\t\t\t}).catch((e) => {\r\n\t\t\t\tthrow e;\r\n\t\t\t});\r\n\t\treturn rt;\r\n\t}\r\n\r\n\t/**\r\n\t * (CCに対して)カート追加チェックを行います\r\n\t */\r\n\tasync function CheckAddCartCC(token: string, url: string): es6promise.Promise {\r\n\t\tlet rt: object;\r\n\t\tconst ccToken = \"token=\" + token;\r\n\t\tawait ajax.get(url, ccToken)\r\n\t\t\t.then((data) => {\r\n\t\t\t\trt = data;\r\n\t\t\t}).catch((e) => {\r\n\t\t\t\tthrow e;\r\n\t\t\t});\r\n\t\treturn rt;\r\n\t}\r\n\r\n\t/**\r\n\t * (CCに対して)カート追加を行います\r\n\t */\r\n\tasync function AddCartCC(token: string, url: string): es6promise.Promise {\r\n\t\tlet rt: object;\r\n\t\tconst ccToken = \"token=\" + token;\r\n\t\tawait ajax.get(url, ccToken)\r\n\t\t\t.then((data) => {\r\n\t\t\t\trt = data;\r\n\t\t\t}).catch((e) => {\r\n\t\t\t\tthrow e;\r\n\t\t\t});\r\n\t\treturn rt;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * カートトークンを取得します。\r\n\t * @param token\r\n\t * @param saveAs\r\n\t */\r\n\tasync function GetCartToken(token: string): es6promise.Promise {\r\n\t\tconst model = {\r\n\t\t\ttoken: token\r\n\t\t}\r\n\t\tlet rt: object;\r\n\t\tawait ajax.post(WebAPI_GetCartToken, JSON.stringify(model))\r\n\t\t\t.then((data) => {\r\n\t\t\t\trt = data;\r\n\t\t\t}).catch((e) => {\r\n\t\t\t\tthrow e;\r\n\t\t\t});\r\n\t\treturn rt;\r\n\t}\r\n\r\n\t/**\r\n\t * OCAPIログインファクション\r\n\t * @param clientId\r\n\t * @param token\r\n\t */\r\n\tasync function loginOCAPI(clientId: string, token: string, Req: OcapiLoginRequest): es6promise.Promise {\r\n\t\tlet model = {\r\n\t\t\tclientId: clientId,\r\n\t\t\tloginId: Req.loginId,\r\n\t\t\tpassword: Req.password,\r\n\t\t\ttoken: token,\r\n\t\t}\r\n\r\n\t\t// webサーバへログイン\r\n\t\tdialogUtil.closeOCAPI(); //いったん自分を閉じる\r\n\t\tdialogUtil.showLoading();\r\n\t\tlet rt: LoginEntity;\r\n\t\tawait ajax.post(WebAPI_OcapiLogin, JSON.stringify(model)).then((data: LoginEntity) => {\r\n\t\t\trt = data;\r\n\t\t}).catch((e) => {\r\n\t\t\tthrow e;\r\n\t\t}).finally(() => {\r\n\t\t\tdialogUtil.closeLoading();\r\n\t\t});\r\n\t\treturn rt;\r\n\t}\r\n\r\n\t/**\r\n\t * OCAPIの/sessionsを実行し、ログイン状態にさせます。\r\n\t * @param jwt\r\n\t */\r\n\tasync function CallOcapiSessions(jwt: string): es6promise.Promise {\r\n\t\tlet req = {\r\n\t\t\ttype: \"credentials\"\r\n\t\t}\r\n\r\n\t\tconst reqStr = JSON.stringify(req);\r\n\r\n\t\treturn await ajax.postForCCSessions(_retailerConf.extrSettings.ocapi.ocapiSessionsURL, reqStr, jwt).then((data: LoginEntity) => {\r\n\t\t\treturn true;\r\n\t\t}).catch((e) => {\r\n\t\t\treturn false;\r\n\t\t}).finally(() => {\r\n\t\t\tdialogUtil.closeLoading();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * 注文ステータス更新\r\n\t * @param token\r\n\t * @param procCd\r\n\t */\r\n\tasync function UpdateProcCd(token: string, procCd: number): es6promise.Promise {\r\n\t\tlet req = {\r\n\t\t\ttoken: token,\r\n\t\t\tstatus: procCd\r\n\t\t}\r\n\t\tlet rt = false;\r\n\t\tawait ajax.post(WebAPI_UpdateStatus, JSON.stringify(req)).then((data) => {\r\n\t\t\trt = true;\r\n\t\t}).catch((e) => {\r\n\t\t\trt = false;\r\n\t\t});\r\n\t\treturn rt;\r\n\t}\r\n\r\n\t/**\r\n\t * テンポラリ初期\r\n\t * @param token\r\n\t */\r\n\tasync function InitTemp(token: string): es6promise.Promise {\r\n\t\tlet rt = false;\r\n\t\tlet req = {\r\n\t\t\ttoken: token\r\n\t\t}\r\n\t\tawait ajax.post(WebAPI_InitTemp, JSON.stringify(req)).then((data) => {\r\n\t\t\trt = true;\r\n\t\t});\r\n\t\treturn rt;\r\n\t}\r\n\r\n\t/**\r\n\t * 編集情報取得\r\n\t * @param token\r\n\t */\r\n\tasync function GetEditInfo(token: string): es6promise.Promise {\r\n\t\tlet rt;\r\n\t\tlet req = {\r\n\t\t\ttoken: token\r\n\t\t}\r\n\t\tawait ajax.post(WebAPI_GetEditInfo, JSON.stringify(req)).then((data) => {\r\n\t\t\trt = data;\r\n\t\t});\r\n\t\treturn rt;\r\n\t}\r\n\texport function GetSaveAs(): string {\r\n\r\n\t\tlet rt = \"\";\r\n\r\n\t\tconst ei: editInfo = lstorage.get(lstorage.KEY_EDIT);\r\n\t\tif (ei) {\r\n\t\t\tif (ei.saveAs) {\r\n\t\t\t\trt = ei.saveAs;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn rt;\r\n\t}\r\n\r\n\t/*\r\n\t *GIGYA重複時のメッセージ\r\n\t * */\r\n\tfunction GetGIGYADuplicateMessage(): string {\r\n\r\n\t\treturn \"カートに商品があるため、編集中の商品データを追加できませんでした。
\"\r\n\t\t\t+ \"・現在編集中の商品データをカートへ入れる場合は【OK】を押してください。
\"\r\n\t\t\t+ \"・編集画面に戻る場合は【キャンセル】を押してください。
\"\r\n\t\t\t+ \"※年賀状を含むポストカードは、カートに1つしか商品を入れられないため上書きされます。
\"\r\n\t\t\t+ \" 現在カートにある商品を確認するにはサイトトップへ戻りカートをご確認ください。
\"\r\n\t\t\t;\r\n\t}\r\n\r\n\t/**\r\n\t * 再編集かフラグ\r\n\t */\r\n\tfunction getIsEdit(): boolean {\r\n\r\n\t\t// hiddenから途中フラグ取得\r\n\t\tlet v = ($(\"#isEdit\").val() + \"\").toLowerCase();\r\n\t\tif (v == \"true\") return true;\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * タイムスタンプを取得する。\r\n\t * */\r\n\texport function getTimeStamp(): string {\r\n\t\tconst date = new Date()\r\n\t\tconst Y = date.getFullYear()\r\n\t\tconst M = (\"00\" + (date.getMonth() + 1)).slice(-2)\r\n\t\tconst D = (\"00\" + date.getDate()).slice(-2)\r\n\t\tconst h = (\"00\" + date.getHours()).slice(-2)\r\n\t\tconst m = (\"00\" + date.getMinutes()).slice(-2)\r\n\t\tconst s = (\"00\" + date.getSeconds()).slice(-2)\r\n\t\tconst f = (\"000\" + date.getMilliseconds()).slice(-3)\r\n\r\n\t\treturn Y + M + D + h + m + s + f\r\n\t}\r\n\r\n\t/**\r\n\t * URLから、GETパラメータを取得しローカルストレージに格納しておく。\r\n\t * @param urlParam\r\n\t */\r\n\texport function setGetParam(): void {\r\n\r\n\t\t/// Getパラメーターを記録する配列\r\n\t\tvar params = {};\r\n\r\n\t\t/// URLからパラメーター解析&取得\r\n\t\tvar query = window.location.href.split(\"?\")[1];\r\n\t\tif (query) {\r\n\t\t\tvar rawParams = query.split('&');\r\n\t\t\trawParams.forEach(function (prm, i) {\r\n\t\t\t\tvar kv = prm.split('=');\r\n\t\t\t\tparams[kv[0]] = kv[1];\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// ローカルストレージに入れる準備\r\n\t\tlet rs = new getParam();\r\n\t\tObject.keys(params).forEach(function (name, i) {\r\n\t\t\tlet tmpKey = name.toLowerCase();\r\n\t\t\tif (tmpKey == \"designno\") {\r\n\t\t\t\trs.designNo = this[name];\r\n\r\n\t\t\t} else if (tmpKey == \"retailerid\") {\r\n\t\t\t\trs.retailerId = this[name];\r\n\r\n\t\t\t} else if (tmpKey == \"trial\") {\r\n\t\t\t\trs.trial = this[name];\r\n\r\n\t\t\t} else if (tmpKey == \"returnurl\") {\r\n\t\t\t\trs.returnUrl = this[name];\r\n\r\n\t\t\t} else if (tmpKey == \"saveid\") {\r\n\t\t\t\trs.saveId = this[name];\r\n\r\n\t\t\t} else if (tmpKey == \"saveid2\") {\r\n\t\t\t\trs.saveId2 = this[name];\r\n\r\n\t\t\t} else if (tmpKey == \"addorder\") {\r\n\t\t\t\trs.addOrder = this[name];\r\n\r\n\t\t\t} else if (tmpKey == \"cart_line_key\") {\r\n\t\t\t\trs.cart_line_key = this[name];\r\n\r\n\t\t\t} else if (tmpKey == \"printtype\") {\r\n\t\t\t\trs.printType = this[name];\r\n\t\t\t} \r\n\t\t}, params);\r\n\r\n\t\tlstorage.set(lstorage.KEY_GETPARAM,rs);\r\n\t}\r\n\r\n\t/**\r\n\t * 編集画面遷移用のパラメータを取得します。\r\n\t * */\r\n\texport function getGetParam(): string {\r\n\r\n\t\tlet gparam = lstorage.get(lstorage.KEY_GETPARAM);\r\n\r\n\t\tlet rt = \"\";\r\n\r\n\t\t// 先頭は?、続きは&となるようにする。\r\n\t\tfunction hatenaOrAnd() {\r\n\t\t\tif (rt.length == 0) {\r\n\t\t\t\treturn \"?\";\r\n\t\t\t} else {\r\n\t\t\t\treturn \"&\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (gparam.designNo) {\r\n\t\t\trt += hatenaOrAnd() + \"designNo=\" + gparam.designNo;\r\n\t\t}\r\n\r\n\t\tif (gparam.retailerId) {\r\n\t\t\trt += hatenaOrAnd() + \"retailerId=\" + gparam.retailerId;\r\n\t\t}\r\n\r\n\t\tif (gparam.trial) {\r\n\t\t\trt += hatenaOrAnd() + \"trial=\" + gparam.trial;\r\n\t\t}\r\n\r\n\t\tif (gparam.returnUrl) {\r\n\t\t\trt += hatenaOrAnd() + \"returnURL=\" + gparam.returnUrl;\r\n\t\t}\r\n\r\n\t\tif (gparam.saveId) {\r\n\t\t\trt += hatenaOrAnd() + \"saveId=\" + gparam.saveId;\r\n\t\t}\r\n\r\n\t\tif (gparam.saveId2) {\r\n\t\t\trt += hatenaOrAnd() + \"saveId2=\" + gparam.saveId2;\r\n\t\t}\r\n\r\n\t\tif (gparam.addOrder) {\r\n\t\t\trt += hatenaOrAnd() + \"addOrder=\" + gparam.addOrder;\r\n\t\t}\r\n\r\n\t\tif (gparam.cart_line_key) {\r\n\t\t\trt += hatenaOrAnd() + \"cart_line_key=\" + gparam.cart_line_key;\r\n\t\t}\r\n\r\n\t\tif (gparam.printType) {\r\n\t\t\trt += hatenaOrAnd() + \"printType=\" + gparam.printType;\r\n\t\t}\r\n\r\n\t\treturn rt;\r\n\r\n\t}\r\n}\r\n\r\n(window).CommonFunc = common;","/**\r\n * WebAPI(Ajax通信)のレスポンスエンティティ群\r\n * */\r\n\r\n/**\r\n * WebAPI(Ajax通信)の大外のレスポンスエンティティ\r\n * \"resData\"にWebAPIの処理結果(検索結果など)が詰め込まれてくる想定です。\r\n */\r\nexport class responseEntity {\r\n\t/**\r\n\t * WebAPIの処理結果\r\n\t */\r\n\tpublic result: resultEntity;\r\n\t/**\r\n\t * WebAPIの出力値\r\n\t */\r\n\tpublic data: any;\r\n}\r\n\r\n/**\r\n * WebAPIの処理結果\r\n */\r\nexport class resultEntity {\r\n\t/**\r\n\t * WebAPI側の処理結果\r\n\t */\r\n\tpublic code: number;\r\n\t/**\r\n\t * エラーメッセージ\r\n\t */\r\n\tpublic message: string;\r\n}\r\n\r\n","import { SenderInfoDbEntity } from \"./SenderInfoDbEntity\"\r\n\r\n/**\r\n * WebAPI[Edit/GetEditInfo]のレスポンスのdata部\r\n */\r\nexport class GetEditInfoResponseEntity {\r\n\r\n /**\r\n * ログインしているか?\r\n */\r\n public isLogind: boolean;\r\n\r\n /**\r\n * 編集ID(暗号化)\r\n */\r\n public editId: string;\r\n\r\n /**\r\n * 一時編集ID(暗号化)\r\n */\r\n public tempId: string;\r\n\r\n /**\r\n * 組版トークン\r\n */\r\n public kumihanToken: string;\r\n\r\n /**\r\n * 編集開始日(暗号化)\r\n */\r\n public encCreateDate: string;\r\n\r\n /**\r\n * 組版サービスURL\r\n */\r\n public kumihanURL: string;\r\n\r\n /**\r\n * 1枚お試しフラグ\r\n */\r\n public isTrial: boolean;\r\n\r\n /**\r\n * あいさつ文のデフォルトサイズ\r\n */\r\n public greetingDefSize: GreetingDefSize;\r\n\r\n /**\r\n * マスタ情報\r\n * スタンプマスタ・既製あいさつ文・半既製あいさつ文・カラー・はがき・フォント\r\n */\r\n public master: GetEditInfoMasterEntity;\r\n\r\n /**\r\n * 編集データに関連する情報\r\n * スタンプマスタ・既製あいさつ文・半既製あいさつ文・カラー・はがき・フォント\r\n */\r\n public info: GetEditInfoTranEntity;\r\n}\r\n\r\n/**\r\n * マスタ情報\r\n */\r\nexport class GetEditInfoMasterEntity {\r\n\r\n /**\r\n * スタンプマスタ\r\n */\r\n public stamp: GetEditInfoStampCategoryEntity[];\r\n\r\n /**\r\n * スタンプカテゴリ\r\n */\r\n public stampCategory: string[];\r\n\r\n /**\r\n * あいさつ文マスタ\r\n */\r\n public greeting: GetEditInfoGreetingEntity[];\r\n\r\n /**\r\n * カラーマスタ\r\n */\r\n public color: GetEditInfoColorEntity[];\r\n\r\n /**\r\n * はがきマスタ\r\n */\r\n public hagaki: GetEditInfoHagakiEntity[];\r\n\r\n /**\r\n * フォントマスタ\r\n */\r\n public font: GetEditInfoFontEntity[];\r\n\r\n /**\r\n * デザインマスタ\r\n */\r\n public design: GetEditInfoDesignEntity;\r\n\r\n /**\r\n * 外字リスト\r\n */\r\n public gaijiList: GetEditInfoGaijiEntity[];\r\n}\r\n\r\n/**\r\n * スタンプカテゴリ\r\n */\r\nexport class GetEditInfoStampCategoryEntity {\r\n /**\r\n * カテゴリインデックス\r\n */\r\n public id: number;\r\n\r\n /**\r\n * カテゴリ名称\r\n */\r\n public category: string;\r\n\r\n /**\r\n * 幅\r\n */\r\n public width: number;\r\n\r\n /**\r\n * 高さ\r\n */\r\n public height: number;\r\n\r\n /**\r\n * サムネイルパス\r\n */\r\n public url: string;\r\n\r\n /**\r\n * 表示順\r\n */\r\n public seq: number;\r\n\r\n /**\r\n * ファイル名(暗号化)\r\n */\r\n public name: string;\r\n}\r\n\r\n/**\r\n * あいさつ文\r\n */\r\nexport class GetEditInfoGreetingEntity {\r\n\r\n /**\r\n * インデックス\r\n */\r\n public id: number;\r\n\r\n /**\r\n * 文章番号\r\n */\r\n public no: string;\r\n\r\n /**\r\n * テキスト\r\n */\r\n public text: string;\r\n\r\n /**\r\n * サムネイルパス\r\n */\r\n public url: string;\r\n\r\n\r\n /**\r\n * 以降はフロント側で使用するための拡張項目\r\n */\r\n public selected: boolean;\r\n\r\n}\r\n\r\n/**\r\n * カラー定義\r\n */\r\nexport class GetEditInfoColorEntity {\r\n\r\n /**\r\n * インデックス\r\n */\r\n public id: string;\r\n\r\n /**\r\n * 色名称\r\n */\r\n public name: string;\r\n\r\n /**\r\n * rgb\r\n */\r\n public rgb: string;\r\n\r\n /**\r\n * cmyk\r\n */\r\n public cmyk: string;\r\n}\r\n\r\n/**\r\n * はがき定義\r\n */\r\nexport class GetEditInfoHagakiEntity {\r\n\r\n /**\r\n * インデックス\r\n */\r\n public id: string;\r\n\r\n /**\r\n * 表示名\r\n */\r\n public name: string;\r\n\r\n /**\r\n * サムネイルパス\r\n */\r\n public url: string;\r\n\r\n /**\r\n * 表示順\r\n */\r\n public seq: number;\r\n}\r\n\r\n/**\r\n * フォント\r\n */\r\nexport class GetEditInfoFontEntity {\r\n\r\n /**\r\n * インデックス\r\n */\r\n public id: string;\r\n\r\n /**\r\n * 画面表示用のフォント名\r\n */\r\n public name: string;\r\n\r\n /**\r\n * フォント番号\r\n */\r\n public no: string;\r\n\r\n /**\r\n * 組版用のフォント名\r\n */\r\n public actualName: string;\r\n\r\n /**\r\n * サムネイルパス\r\n */\r\n public url: string;\r\n\r\n /**\r\n * 表示順\r\n */\r\n public seq: number;\r\n\r\n /**\r\n * 外字表示フラグ\r\n */\r\n public gaijiFlg: boolean;\r\n}\r\n\r\n/**\r\n * デザイン定義\r\n */\r\nexport class GetEditInfoDesignEntity {\r\n\r\n /**\r\n * デザイン番号\r\n */\r\n public dsnNo: string;\r\n\r\n /**\r\n * デフォルトフォント\r\n */\r\n public fontType: string;\r\n\r\n /**\r\n * デザイン区分\r\n */\r\n public dsnType: string;\r\n\r\n /**\r\n * キャラクター区分\r\n */\r\n public charaType: string;\r\n\r\n /**\r\n * 文字色インデックス\r\n */\r\n public fontColor: string;\r\n\r\n /**\r\n * あいさつ文デフォルト値\r\n */\r\n public greeting: DesignDetailEntity;\r\n\r\n /**\r\n * 差出人デフォルト値\r\n */\r\n public sender: DesignDetailEntity;\r\n\r\n /**\r\n * 機能制限フラグ(0:制限なし, 1:画像補正・あいさつ文・スタンプを制限)\r\n */\r\n public editMode: string;\r\n\r\n /**\r\n * テンプレートの有効期限ないか?\r\n */\r\n public isExpire: boolean;\r\n\r\n /**\r\n * 出力タイプ(1:印刷, 2:銀塩, 0:印刷/銀塩)\r\n */\r\n public printType: string;\r\n\r\n /**\r\n * 注文停止期間チェック\r\n */\r\n public orderStop: string;\r\n\r\n /**\r\n * デフォルト出力タイプ(1:印刷, 2:銀塩)\r\n */\r\n public defPrintType: string;\r\n\r\n}\r\n\r\n/**\r\n * デザイン詳細定義\r\n */\r\nexport class DesignDetailEntity {\r\n\r\n /**\r\n * 番号\r\n */\r\n public no: string;\r\n\r\n /**\r\n * 組方向(縦0、横1)\r\n */\r\n public direction: string;\r\n\r\n /**\r\n * x座標(左下原点、単位mm)\r\n */\r\n public x: number;\r\n\r\n /**\r\n * y座標\r\n */\r\n public y: number;\r\n\r\n /**\r\n * 幅\r\n */\r\n public width: number;\r\n\r\n /**\r\n * 高さ\r\n */\r\n public height: number;\r\n\r\n /**\r\n * 回転角度\r\n */\r\n public rotate: number;\r\n\r\n /**\r\n * 配置位置\r\n */\r\n public align: string;\r\n\r\n}\r\n\r\n/**\r\n * 編集データに関連するトランザクション情報\r\n */\r\nexport class GetEditInfoTranEntity {\r\n\r\n /**\r\n * 使用中のスタンプIDの一覧\r\n */\r\n public stamp: GetEditInfoStampEntity[];\r\n\r\n /**\r\n * 写真情報の一覧\r\n */\r\n public photo: GetEditInfoPhotoEntity[];\r\n\r\n /**\r\n * 枠情報の一覧\r\n */\r\n public photoUse: GetEditInfoPhotoUseEntity[];\r\n\r\n /**\r\n * 差出人情報\r\n */\r\n public sender: GetEditInfoSenderEntity;\r\n\r\n /**\r\n * あいさつ文情報\r\n */\r\n public greeting: GetEditInfoGreetingTranEntity[];\r\n\r\n /**\r\n * 印刷タイプ\r\n */\r\n public printType: string;\r\n\r\n /**\r\n * 編集データ有効期限チェック\r\n */\r\n public isExpire: boolean;\r\n\r\n /**\r\n * ハガキ種\r\n */\r\n public postcardType: number;\r\n\r\n /**\r\n * 注文枚数\r\n */\r\n public orderNum: number;\r\n\r\n /**\r\n * 保存名称\r\n */\r\n public saveAs: string;\r\n\r\n /**\r\n * Myステッカー情報の一覧\r\n */\r\n public myStamp: GetEditInfoPhotoEntity[];\r\n\r\n /**\r\n * Myステッカー配置情報の一覧\r\n */\r\n public myStampUse: GetEditInfoPhotoUseEntity[];\r\n\r\n /**\r\n * 手書きスタンプ情報の一覧\r\n */\r\n public fontgenic: GetEditInfoPhotoEntity[];\r\n\r\n /**\r\n * フォントジェニック配置情報の一覧\r\n */\r\n public fontgenicUse: GetEditInfoFontgenicUseEntity[]\r\n}\r\n\r\n/**\r\n * スタンプに関連するトランザクション情報\r\n */\r\nexport class GetEditInfoStampEntity {\r\n\r\n /**\r\n * アイテム番号\r\n */\r\n public idx: number;\r\n\r\n /**\r\n * スタンプID\r\n */\r\n public stampId: string;\r\n\r\n /**\r\n * Sonbpのベンダープロパティ\r\n */\r\n public sonbpVp: SonbpVp;\r\n\r\n /**\r\n * アイテム番号をstring型で取得\r\n */\r\n public get IdxToString(): string {\r\n return this.idx.toString(10);\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n/**\r\n * 写真に関連するトランザクション情報\r\n */\r\nexport class GetEditInfoPhotoEntity {\r\n\r\n /**\r\n * ファイルID\r\n */\r\n public fileId: string;\r\n\r\n /**\r\n * 使用中かどうか\r\n */\r\n public isUsed: boolean;\r\n\r\n /**\r\n * 実サイズ(px) 幅\r\n */\r\n public width: number;\r\n\r\n /**\r\n * 実サイズ(px) 高さ\r\n */\r\n public height: number;\r\n\r\n /**\r\n * ファイル名(オリジナル)\r\n */\r\n public uploadFileName: string;\r\n\r\n /**\r\n * アップロード日時\r\n */\r\n public uploadDate: Date;\r\n\r\n}\r\n\r\n/**\r\n * 画像枠に関連するトランザクション情報\r\n */\r\nexport class GetEditInfoPhotoUseEntity {\r\n\r\n /**\r\n * ファイルID\r\n */\r\n public fileId: string;\r\n\r\n /**\r\n * 枠番号\r\n */\r\n public idx: number;\r\n\r\n /**\r\n * I2補正する\r\n */\r\n public isUseI2: boolean;\r\n\r\n /**\r\n * 明るさ\r\n */\r\n public brightId: number;\r\n\r\n /**\r\n * Sonbpのベンダープロパティ\r\n */\r\n public sonbpVp: SonbpVp;\r\n\r\n}\r\n\r\n/**\r\n * 画像枠に関連するトランザクション情報\r\n */\r\nexport class GetEditInfoFontgenicUseEntity {\r\n\r\n /**\r\n * ファイルID\r\n */\r\n public fileId: string;\r\n\r\n /**\r\n * 枠番号\r\n */\r\n public idx: number;\r\n\r\n /**\r\n * 色ID\r\n */\r\n public colorId: string;\r\n\r\n /**\r\n * Sonbpのベンダープロパティ\r\n */\r\n public sonbpVp: SonbpVp;\r\n}\r\n\r\n\r\n/**\r\n * 手書きスタンプ配置に関連するトランザクション情報\r\n */\r\nexport class GetEditInfoTegakiStampUseEntity {\r\n\r\n /**\r\n * ファイルID\r\n */\r\n public fileId: string;\r\n\r\n /**\r\n * 色番号\r\n */\r\n public colorId: boolean;\r\n\r\n /**\r\n * 枠番号\r\n */\r\n public idx: number;\r\n\r\n /**\r\n * Sonbpのベンダープロパティ\r\n */\r\n public sonbpVp: SonbpVp;\r\n\r\n}\r\n\r\n\r\n/**\r\n * 差出人に関連するトランザクション情報\r\n */\r\nexport class GetEditInfoSenderEntity {\r\n\r\n /**\r\n * 名入れタイプ\r\n */\r\n public type: string;\r\n\r\n /**\r\n * フォント名\r\n */\r\n public font: string;\r\n\r\n /**\r\n * フォントサイズ\r\n */\r\n public size: number;\r\n\r\n /**\r\n * X座標\r\n */\r\n public x: number;\r\n\r\n /**\r\n * Y座標\r\n */\r\n public y: number;\r\n\r\n /**\r\n * 回転角度\r\n */\r\n public rotate: number;\r\n\r\n /**\r\n * color(CMYK)\r\n */\r\n public color: string;\r\n\r\n /**\r\n * フチ文字のcolor(CMYK)\r\n */\r\n public outlineColor: string;\r\n\r\n /**\r\n * 行揃え\r\n */\r\n public align: string;\r\n\r\n /**\r\n * 組方向\r\n */\r\n public direction: string;\r\n\r\n /**\r\n * 組版レイアウト\r\n */\r\n public layout: string;\r\n\r\n /**\r\n * 差出人情報テーブル\r\n */\r\n public senderInfo: SenderInfoDbEntity;\r\n\r\n}\r\n\r\n/**\r\n * あいさつ文に関連するトランザクション情報\r\n */\r\nexport class GetEditInfoGreetingTranEntity {\r\n\r\n /**\r\n * インデックス\r\n */\r\n public id: string;\r\n\r\n /**\r\n * 文章番号\r\n */\r\n public greetingNo: string;\r\n\r\n /**\r\n * フォント名\r\n */\r\n public font: string;\r\n\r\n /**\r\n * フォントサイズ\r\n */\r\n public size: number;\r\n\r\n /**\r\n * color(CMYK)\r\n */\r\n public color: string;\r\n\r\n /**\r\n * フチ文字のcolor(CMYK)\r\n */\r\n public outlineColor: string;\r\n\r\n /**\r\n * 行揃え\r\n */\r\n public align: string;\r\n\r\n /**\r\n * あいさつ文テキスト\r\n */\r\n public text: string;\r\n\r\n /**\r\n * 組方向\r\n */\r\n public direction: string;\r\n\r\n /**\r\n * 喪中に関する情報\r\n */\r\n public mocyu: GetEditInfoGreetingMocyuEntity[];\r\n\r\n /**\r\n * 差出月\r\n */\r\n public mocyuSend: string;\r\n\r\n /**\r\n * Sonbpのベンダープロパティ\r\n */\r\n public sonbpVp: SonbpVp;\r\n\r\n}\r\n\r\n/**\r\n * あいさつ文(喪中)情報\r\n */\r\nexport class GetEditInfoGreetingMocyuEntity {\r\n\r\n public month: string;\r\n public day: string;\r\n public age: string;\r\n public relative: string;\r\n public name: string;\r\n}\r\n\r\n/**\r\n * sonbpのベンダープロパティ\r\n * */\r\nexport class SonbpVp {\r\n public idx: number;\r\n public x: number;\r\n public y: number;\r\n public width: number;\r\n public height: number;\r\n public angle: number;\r\n}\r\n\r\n/**\r\n * 画像存在チェック情報\r\n */\r\nexport class GetEditInfoCheckUploadImagesEntity {\r\n public photo: boolean;\r\n public mystamp: boolean;\r\n public fontgenic: boolean;\r\n}\r\n\r\n/**\r\n * 外字リストエンティティ\r\n * */\r\nexport class GetEditInfoGaijiEntity {\r\n /**\r\n * 外字の読み\r\n */\r\n public yomi: string;\r\n /**\r\n * 外字\r\n */\r\n public character: string;\r\n}\r\n\r\nexport class ChangeBright {\r\n public fileId: string;\r\n}\r\n\r\n\r\n/**\r\n * あいさつ文のデフォルトサイズ\r\n * */\r\nexport class GreetingDefSize {\r\n public longSide: number;\r\n public shortSide: number;\r\n}","\r\n/**\r\n * 差出人情報テーブル定義\r\n */\r\nexport class SenderInfoDbEntity {\r\n\r\n /**\r\n * 住所\r\n */\r\n public addresses: SenderInfoAddressDbEntity[];\r\n\r\n /**\r\n * 会社\r\n */\r\n public corps: SenderInfoCorpDbEntity[];\r\n\r\n /**\r\n * 名前\r\n */\r\n public names: SenderInfoNameDbEntity[];\r\n\r\n /**\r\n * Eメール\r\n */\r\n public emails: SenderInfoEmailDbEntity[];\r\n\r\n /**\r\n * free\r\n */\r\n public free: string;\r\n\r\n /**\r\n * スタッフ\r\n */\r\n public staff: string;\r\n\r\n /**\r\n * 自由入力\r\n */\r\n public isHojin: boolean;\r\n}\r\n\r\n/**\r\n * 差出人情報テーブル定義(住所)\r\n */\r\nexport class SenderInfoAddressDbEntity {\r\n\r\n public topstr: string;\r\n public yubin1: string;\r\n public yubin2: string;\r\n public jusho1: string;\r\n public jusho2: string;\r\n public jusho3: string;\r\n public telType1: number;\r\n public telTopStr1: string;\r\n public telNo1_1: string;\r\n public telNo1_2: string;\r\n public telNo1_3: string;\r\n public telEndStr1: string;\r\n public telType2: number;\r\n public telTopStr2: string;\r\n public telNo2_1: string;\r\n public telNo2_2: string;\r\n public telNo2_3: string;\r\n public telEndStr2: string;\r\n\r\n}\r\n\r\n/**\r\n * 差出人情報テーブル定義(会社)\r\n */\r\nexport class SenderInfoCorpDbEntity {\r\n\r\n public maekabu: string;\r\n public name: string;\r\n public busyo: string;\r\n\r\n}\r\n\r\n/**\r\n * 差出人情報テーブル定義(名前)\r\n */\r\nexport class SenderInfoNameDbEntity {\r\n\r\n public title: string;\r\n public firstName: string\r\n public firstRubi: string;\r\n public lastName: string;\r\n public lastRubi: string;\r\n public ps: string;\r\n\r\n}\r\n\r\n/**\r\n * 差出人情報テーブル定義(Eメール)\r\n */\r\nexport class SenderInfoEmailDbEntity {\r\n public topstr: string;\r\n public type: number;\r\n public address: string;\r\n public endstr: string;\r\n //public free: string;\r\n //public staff: string;\r\n //public isHojin: boolean;\r\n}\r\n\r\n\r\n","import Vue from \"vue\";\r\nimport { getParam } from \"./entity/idb/getParam\";\r\nimport { retailerConfig, util } from \"./index\";\r\n/**\r\n * 基底コントローラクラス\r\n */\r\nexport abstract class baseVueController {\r\n\r\n //--------------------------------------------------------------------------\r\n // 変数\r\n //--------------------------------------------------------------------------\r\n /**\r\n * 編集ID\r\n */\r\n protected _editId: string;\r\n /**\r\n * 戻り先URL\r\n */\r\n protected _backUrl: string;\r\n /**\r\n * ログイン済みフラグ(true:ログイン済、false:未ログイン)\r\n */\r\n protected _loginFlg: boolean;\r\n /**\r\n * Vue.jsオブジェクト\r\n */\r\n protected _vue: Vue;\r\n /**\r\n * 設定ファイルオブジェクト\r\n */\r\n protected _retailerConfig: retailerConfig.retailerConfigEntity;\r\n /**\r\n * PCサイト?\r\n */\r\n protected _usePcDesign: boolean;\r\n\r\n //--------------------------------------------------------------------------\r\n // プロパティ\r\n //--------------------------------------------------------------------------\r\n /**\r\n * 編集ID\r\n */\r\n public get EditId(): string {\r\n return this._editId;\r\n }\r\n public set EditId(editId: string) {\r\n this._editId = editId;\r\n }\r\n\r\n /**\r\n * 戻り先URL\r\n */\r\n public get BackUrl(): string {\r\n return this._backUrl;\r\n }\r\n public set BackUrl(backUrl: string) {\r\n this._backUrl = backUrl;\r\n }\r\n\r\n /**\r\n * ログイン済みフラグ(true:ログイン済、false:未ログイン)\r\n */\r\n public get LoginFlg(): boolean {\r\n return this._loginFlg;\r\n }\r\n public set LoginFlg(loginFlg: boolean) {\r\n this._loginFlg = loginFlg;\r\n }\r\n\r\n /**\r\n * Vue.jsオブジェクト\r\n */\r\n public get Vue(): Vue {\r\n return this._vue;\r\n }\r\n public set Vue(vue: Vue) {\r\n this._vue = vue;\r\n }\r\n\r\n /**\r\n * リテーラ別設定情報\r\n */\r\n public get RetailerConfig(): retailerConfig.retailerConfigEntity {\r\n return this._retailerConfig;\r\n }\r\n public set RetailerConfig(retailerConfig: retailerConfig.retailerConfigEntity) {\r\n this._retailerConfig = retailerConfig;\r\n }\r\n\r\n /**\r\n * PCサイト?\r\n */\r\n public set UsePcDesign(usePcDesign: boolean) {\r\n this._usePcDesign = usePcDesign;\r\n }\r\n\r\n /**\r\n * 途中からフラグ取得\r\n */\r\n public getIsReturn(): boolean {\r\n\r\n // hiddenから途中フラグ取得\r\n let v = ($(\"#isReturn\").val() + \"\").toLowerCase();\r\n if (v == \"true\") return true;\r\n return false;\r\n }\r\n\r\n /**\r\n * PC or SPフラグ\r\n */\r\n public getIsPC(): boolean {\r\n\r\n // hiddenから途中フラグ取得\r\n let v = ($(\"#isPC\").val() + \"\").toLowerCase();\r\n if (v == \"true\") return true;\r\n return false;\r\n }\r\n\r\n /**\r\n * 再編集かフラグ\r\n */\r\n public getIsEdit(): boolean {\r\n\r\n // hiddenから途中フラグ取得\r\n let v = ($(\"#isEdit\").val() + \"\").toLowerCase();\r\n if (v == \"true\") return true;\r\n return false;\r\n }\r\n\r\n /**\r\n * 追加注文かどうかフラグ\r\n * */\r\n public getIsAddOrder(): boolean {\r\n let v = ($(\"#isAddOrder\").val() + \"\").toLowerCase();\r\n if (v == \"true\") return true;\r\n return false;\r\n\t}\r\n\r\n\r\n //--------------------------------------------------------------------------\r\n // メソッド\r\n //--------------------------------------------------------------------------\r\n /**\r\n * コンストラクタ\r\n * */\r\n constructor() {\r\n this._editId = \"\";\r\n this._backUrl = \"\";\r\n this._loginFlg = false;\r\n this._vue = null;\r\n }\r\n\r\n /**\r\n * 初期処理メソッド\r\n * */\r\n public abstract init(): void;\r\n\r\n /**\r\n * リテーラ別の初期化処理\r\n * */\r\n public abstract initRetailer(): void;\r\n\r\n /**\r\n * エラー時の戻り先URL設定\r\n * */\r\n public SetErrorPageInfo(): void {\r\n // エラー時のボタン遷移先\r\n const that = this;\r\n if ($('#errorReturnTop')[0]) {\r\n $('#errorReturnTop').on('click', function () {\r\n window.location.href = that._retailerConfig.returnTop;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * ヘッダーの最初に戻るボタン押下メソッド\r\n * @param event\r\n */\r\n public btnClickReturnTop(event: JQueryEventObject): void {\r\n let getInfo = util.lstorage.get(util.lstorage.KEY_GETPARAM, true);\r\n if (getInfo != null) {\r\n if (getInfo.returnUrl) {\r\n window.location.href = decodeURIComponent(getInfo.returnUrl);\r\n return;\r\n }\r\n }\r\n window.location.href = this._retailerConfig.returnTop;\r\n }\r\n\r\n /**\r\n * ヘッダーのお困りの方はこちらへボタン押下メソッド\r\n * @param event\r\n */\r\n public btnClickFaq(event: JQueryEventObject): void {\r\n util.ui.windowOpen(this._retailerConfig.faq.preview, \"\", null, null);\r\n }\r\n\r\n /**\r\n * ヘッダーの編集中一覧/注文履歴一覧ボタン押下メソッド\r\n * @param event\r\n */\r\n public btnClickOrderHistory(event: JQueryEventObject): void {\r\n window.location.href = this._retailerConfig.orderHistory;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n // イベント\r\n //--------------------------------------------------------------------------\r\n /**\r\n * 前画面遷移ボタン押下メソッド\r\n * */\r\n public abstract btnClickReturnFlow(event: JQueryEventObject): void;\r\n\r\n /**\r\n * 次画面遷移ボタン押下メソッド\r\n * */\r\n public abstract btnClickNextFlow(event: JQueryEventObject): void;\r\n\r\n}\r\n\r\n\r\n\r\n","import Vue from \"vue\";\r\nimport { baseVueController } from \"./baseVueController\";\r\nimport { util, retailerConfig } from \"./index\";\r\n\r\n//------------------------------------------------------------------------------\r\n// クラス\r\n//------------------------------------------------------------------------------\r\n/**\r\n * 共通フッターコントローラクラス\r\n * */\r\nexport class footerController extends baseVueController {\r\n\r\n //--------------------------------------------------------------------------\r\n // 定数\r\n //--------------------------------------------------------------------------\r\n private readonly ELEMENT_NAME: string = \"#footerController\";\r\n\r\n //--------------------------------------------------------------------------\r\n // 変数\r\n //--------------------------------------------------------------------------\r\n /**\r\n * コピーライト テキスト\r\n */\r\n private _copyrightText: string;\r\n\r\n /**\r\n * サービス利用者規約 キャプション\r\n */\r\n private _userRuleCaption: string;\r\n\r\n /**\r\n * 個人情報等の取り扱いについて キャプション\r\n */\r\n private _personalInfoCaption: string;\r\n\r\n /**\r\n * プライバシーポリシー キャプション\r\n */\r\n private _privacyPolicyCaption: string;\r\n\r\n /**\r\n * ご利用環境について キャプション\r\n */\r\n private _useEnvelopCaption: string;\r\n\r\n /**\r\n * 区切り キャプション\r\n */\r\n private _separatorCaption: string;\r\n\r\n /**\r\n * コピーライト 活性制御\r\n */\r\n private _enableCopyright: boolean;\r\n\r\n /**\r\n * サービス利用者規約 活性制御\r\n */\r\n private _enableUserRule: boolean;\r\n\r\n /**\r\n * 個人情報等の取り扱いについて 活性制御\r\n */\r\n private _enablePersonalInfo: boolean;\r\n\r\n /**\r\n * プライバシーポリシー 活性制御\r\n */\r\n private _enablePrivacyPolicy: boolean;\r\n\r\n /**\r\n * ご利用環境について 活性制御\r\n */\r\n private _enableUseEnvelop: boolean;\r\n\r\n ///**\r\n // * リテーラ別の設定情報 \r\n // */\r\n //private _retailerConfig: retailerConfig.retailerConfigEntity;\r\n\r\n //--------------------------------------------------------------------------\r\n // プロパティ\r\n //--------------------------------------------------------------------------\r\n /**\r\n * リテーラ別設定情報\r\n */\r\n public set RetailerConfig(retailerConfig: retailerConfig.retailerConfigEntity) {\r\n this._retailerConfig = retailerConfig;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n // コンストラクタ\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n // メソッド\r\n //--------------------------------------------------------------------------\r\n /**\r\n * 初期化メソッド\r\n * */\r\n public init(): void {\r\n\r\n // リテーラ別の初期化処理\r\n this.initRetailer();\r\n\r\n // vueオブジェクト生成\r\n this._vue = new Vue({\r\n el: this.ELEMENT_NAME,\r\n data: {\r\n CopyrightText: this._copyrightText,\r\n UserRuleCaption: this._userRuleCaption,\r\n PersonalInfoCaption: this._personalInfoCaption,\r\n PrivacyPolicyCaption: this._privacyPolicyCaption,\r\n UseEnvelopCaption: this._useEnvelopCaption,\r\n SeparatorCaption: this._separatorCaption,\r\n EnableCopyright: this._enableCopyright,\r\n EnableUserRule: this._enableUserRule,\r\n EnablePersonalInfo: this._enablePersonalInfo,\r\n EnablePrivacyPolicy: this._enablePrivacyPolicy,\r\n EnableUseEnvelop: this._enableUseEnvelop\r\n },\r\n methods: {\r\n linkClickUserRule: (event: JQueryEventObject) => {\r\n this.linkClickUserRule(event);\r\n },\r\n linkClickPersonalInfo: (event: JQueryEventObject) => {\r\n this.linkClickPersonalInfo(event);\r\n },\r\n linkClickPrivacyPolicy: (event: JQueryEventObject) => {\r\n this.linkClickPrivacyPolicy(event);\r\n },\r\n linkClickUseEnvelop: (event: JQueryEventObject) => {\r\n this.linkClickUseEnvelop(event);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * リテーラ別の初期化処理\r\n * */\r\n public initRetailer(): void {\r\n\r\n // ToDo:現行は設定ファイル的(massage.js->RETAILER_CUSTOMIZE)なもので表示情報を切り替えている\r\n\r\n // キャプション設定\r\n // コピーライト\r\n this._copyrightText = \"COPYRIGHT © FUJIFILM Corporation ALL RIGHTS RESERVED.\";\r\n // サービス利用者規約\r\n this._userRuleCaption = \"サービス利用者規約\";\r\n // 個人情報等の取り扱いについて\r\n this._personalInfoCaption = \"個人情報等の取り扱いについて\";\r\n // プライバシーポリシー\r\n this._privacyPolicyCaption = \"プライバシーポリシー\";\r\n // ご利用環境について\r\n this._useEnvelopCaption = \"ご利用環境について\";\r\n // 区切り\r\n this._separatorCaption = \"|\";\r\n\r\n // 活性制御\r\n // コピーライト\r\n this._enableCopyright = util.verify.isNotLengthZero(this._retailerConfig.copyright) == true ? true : false;\r\n // サービス利用者規約\r\n this._enableUserRule = util.verify.isNotLengthZero(this._retailerConfig.tos) == true ? true : false;\r\n // 個人情報等の取り扱いについて\r\n this._enablePersonalInfo = util.verify.isNotLengthZero(this._retailerConfig.personalInfo) == true ? true : false;\r\n // プライバシーポリシー\r\n this._enablePrivacyPolicy = util.verify.isNotLengthZero(this._retailerConfig.privacyPolicy) == true ? true : false;\r\n // ご利用環境について\r\n this._enableUseEnvelop = util.verify.isNotLengthZero(this._retailerConfig.useEnvelop) == true ? true : false;\r\n \r\n }\r\n\r\n\r\n //--------------------------------------------------------------------------\r\n // イベント\r\n //--------------------------------------------------------------------------\r\n /**\r\n * 前画面遷移ボタン押下メソッド\r\n * */\r\n public btnClickReturnFlow(): void {\r\n // 未使用\r\n }\r\n\r\n /**\r\n * 次画面遷移ボタン押下メソッド\r\n * */\r\n public btnClickNextFlow(): void {\r\n // 未使用\r\n }\r\n\r\n /**\r\n * サービス利用者規約リンク押下イベント\r\n * @param event\r\n */\r\n private linkClickUserRule(event: JQueryEventObject) {\r\n console.debug(\"サービス利用者規約リンク押下イベント\");\r\n util.ui.windowOpen(this._retailerConfig.tos, \"\", null, null);\r\n }\r\n\r\n /**\r\n * 個人情報等の取り扱いについてリンク押下イベント\r\n * @param event\r\n */\r\n private linkClickPersonalInfo(event: JQueryEventObject) {\r\n console.debug(\"個人情報等の取り扱いについてリンク押下イベント\");\r\n util.ui.windowOpen(this._retailerConfig.personalInfo, \"\", null, null);\r\n }\r\n\r\n /**\r\n * プライバシーポリシーリンク押下イベント\r\n * @param event\r\n */\r\n private linkClickPrivacyPolicy(event: JQueryEventObject) {\r\n // ToDo\r\n console.debug(\"プライバシーポリシーリンク押下イベント\");\r\n util.ui.windowOpen(this._retailerConfig.privacyPolicy, \"\", null, null);\r\n }\r\n\r\n /**\r\n * ご利用環境についてリンク押下イベント\r\n * @param event\r\n */\r\n private linkClickUseEnvelop(event: JQueryEventObject) {\r\n console.debug(\"ご利用環境についてリンク押下イベント\");\r\n util.ui.windowOpen(this._retailerConfig.useEnvelop, \"\", null, null);\r\n }\r\n\r\n}\r\n\r\n\r\n","/*--------------------------------------------------------------------------\r\n * linq.js - LINQ for JavaScript\r\n * licensed under MIT License\r\n *------------------------------------------------------------------------*/\r\n\r\n// ReadOnly Function\r\nvar Functions = {\r\n Identity: function (x) { return x; },\r\n True: function () { return true; },\r\n Blank: function () { }\r\n};\r\n\r\n// const Type\r\nvar Types = {\r\n Boolean: typeof true,\r\n Number: typeof 0,\r\n String: typeof \"\",\r\n Object: typeof {},\r\n Undefined: typeof undefined,\r\n Function: typeof function () { }\r\n};\r\n\r\n// createLambda cache\r\nvar funcCache = { \"\": Functions.Identity };\r\n\r\n// private utility methods\r\nvar Utils = {\r\n // Create anonymous function from lambda expression string\r\n createLambda: function (expression) {\r\n if (expression == null) return Functions.Identity;\r\n if (typeof expression === Types.String) {\r\n // get from cache\r\n var f = funcCache[expression];\r\n if (f != null) {\r\n return f;\r\n }\r\n\r\n if (expression.indexOf(\"=>\") === -1) {\r\n var regexp = new RegExp(\"[$]+\", \"g\");\r\n\r\n var maxLength = 0;\r\n var match;\r\n while ((match = regexp.exec(expression)) != null) {\r\n var paramNumber = match[0].length;\r\n if (paramNumber > maxLength) {\r\n maxLength = paramNumber;\r\n }\r\n }\r\n\r\n var argArray = [];\r\n for (var i = 1; i <= maxLength; i++) {\r\n var dollar = \"\";\r\n for (var j = 0; j < i; j++) {\r\n dollar += \"$\";\r\n }\r\n argArray.push(dollar);\r\n }\r\n\r\n var args = Array.prototype.join.call(argArray, \",\");\r\n\r\n f = new Function(args, \"return \" + expression);\r\n funcCache[expression] = f;\r\n return f;\r\n }\r\n else {\r\n var expr = expression.match(/^[(\\s]*([^()]*?)[)\\s]*=>(.*)/);\r\n f = new Function(expr[1], (expr[2].match(/\\breturn\\b/) ? expr[2] : \"return \" + expr[2]));\r\n funcCache[expression] = f;\r\n return f;\r\n }\r\n }\r\n return expression;\r\n },\r\n\r\n isIEnumerable: function (obj) {\r\n if (typeof Enumerator !== Types.Undefined) {\r\n try {\r\n new Enumerator(obj); // check JScript(IE)'s Enumerator\r\n return true;\r\n }\r\n catch (e) { }\r\n }\r\n\r\n return false;\r\n },\r\n\r\n // IE8's defineProperty is defined but cannot use, therefore check defineProperties\r\n defineProperty: (Object.defineProperties != null)\r\n ? function (target, methodName, value) {\r\n Object.defineProperty(target, methodName, {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: value\r\n })\r\n }\r\n : function (target, methodName, value) {\r\n target[methodName] = value;\r\n },\r\n\r\n compare: function (a, b) {\r\n return (a === b) ? 0\r\n : (a > b) ? 1\r\n : -1;\r\n },\r\n\r\n dispose: function (obj) {\r\n if (obj != null) obj.dispose();\r\n },\r\n\r\n hasNativeIteratorSupport: function () {\r\n return typeof Symbol !== 'undefined' && typeof Symbol.iterator !== 'undefined';\r\n }\r\n};\r\n\r\n// IEnumerator State\r\nvar State = { Before: 0, Running: 1, After: 2 };\r\n\r\n// \"Enumerator\" is conflict JScript's \"Enumerator\"\r\nvar IEnumerator = function (initialize, tryGetNext, dispose) {\r\n var yielder = new Yielder();\r\n var state = State.Before;\r\n\r\n this.current = yielder.current;\r\n\r\n this.moveNext = function () {\r\n try {\r\n switch (state) {\r\n case State.Before:\r\n state = State.Running;\r\n initialize();\r\n // fall through\r\n case State.Running:\r\n if (tryGetNext.apply(yielder)) {\r\n return true;\r\n }\r\n else {\r\n this.dispose();\r\n return false;\r\n }\r\n case State.After:\r\n return false;\r\n }\r\n }\r\n catch (e) {\r\n this.dispose();\r\n throw e;\r\n }\r\n };\r\n\r\n this.dispose = function () {\r\n if (state != State.Running) return;\r\n\r\n try {\r\n dispose();\r\n }\r\n finally {\r\n state = State.After;\r\n }\r\n };\r\n};\r\n\r\n// for tryGetNext\r\nvar Yielder = function () {\r\n var current = null;\r\n this.current = function () { return current; };\r\n this.yieldReturn = function (value) {\r\n current = value;\r\n return true;\r\n };\r\n this.yieldBreak = function () {\r\n return false;\r\n };\r\n};\r\n\r\n// Enumerable constuctor\r\nvar Enumerable = function (getEnumerator) {\r\n this.getEnumerator = getEnumerator;\r\n};\r\n\r\n// Utility\r\n\r\nEnumerable.Utils = {}; // container\r\n\r\nEnumerable.Utils.createLambda = function (expression) {\r\n return Utils.createLambda(expression);\r\n};\r\n\r\nEnumerable.Utils.createEnumerable = function (getEnumerator) {\r\n return new Enumerable(getEnumerator);\r\n};\r\n\r\nEnumerable.Utils.createEnumerator = function (initialize, tryGetNext, dispose) {\r\n return new IEnumerator(initialize, tryGetNext, dispose);\r\n};\r\n\r\nEnumerable.Utils.extendTo = function (type) {\r\n var typeProto = type.prototype;\r\n var enumerableProto;\r\n\r\n if (type === Array) {\r\n enumerableProto = ArrayEnumerable.prototype;\r\n Utils.defineProperty(typeProto, \"getSource\", function () {\r\n return this;\r\n });\r\n }\r\n else {\r\n enumerableProto = Enumerable.prototype;\r\n Utils.defineProperty(typeProto, \"getEnumerator\", function () {\r\n return Enumerable.from(this).getEnumerator();\r\n });\r\n }\r\n\r\n for (var methodName in enumerableProto) {\r\n var func = enumerableProto[methodName];\r\n\r\n // already extended\r\n if (typeProto[methodName] == func) continue;\r\n\r\n // already defined(example Array#reverse/join/forEach...)\r\n if (typeProto[methodName] != null) {\r\n methodName = methodName + \"ByLinq\";\r\n if (typeProto[methodName] == func) continue; // recheck\r\n }\r\n\r\n if (func instanceof Function) {\r\n Utils.defineProperty(typeProto, methodName, func);\r\n }\r\n }\r\n};\r\n\r\nEnumerable.Utils.recallFrom = function (type) {\r\n var typeProto = type.prototype;\r\n var enumerableProto;\r\n\r\n if (type === Array) {\r\n enumerableProto = ArrayEnumerable.prototype;\r\n delete typeProto.getSource;\r\n }\r\n else {\r\n enumerableProto = Enumerable.prototype;\r\n delete typeProto.getEnumerator;\r\n }\r\n\r\n for (var methodName in enumerableProto) {\r\n var func = enumerableProto[methodName];\r\n\r\n if (typeProto[methodName + 'ByLinq']) {\r\n delete typeProto[methodName + 'ByLinq'];\r\n }\r\n else if (typeProto[methodName] == func && func instanceof Function) {\r\n delete typeProto[methodName];\r\n }\r\n }\r\n};\r\n\r\n// Generator\r\n\r\nEnumerable.choice = function () // variable argument\r\n{\r\n var args = arguments;\r\n\r\n return new Enumerable(function () {\r\n return new IEnumerator(\r\n function () {\r\n args = (args[0] instanceof Array) ? args[0]\r\n : (args[0].getEnumerator != null) ? args[0].toArray()\r\n : args;\r\n },\r\n function () {\r\n return this.yieldReturn(args[Math.floor(Math.random() * args.length)]);\r\n },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\nEnumerable.cycle = function () // variable argument\r\n{\r\n var args = arguments;\r\n\r\n return new Enumerable(function () {\r\n var index = 0;\r\n return new IEnumerator(\r\n function () {\r\n args = (args[0] instanceof Array) ? args[0]\r\n : (args[0].getEnumerator != null) ? args[0].toArray()\r\n : args;\r\n },\r\n function () {\r\n if (index >= args.length) index = 0;\r\n return this.yieldReturn(args[index++]);\r\n },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\nEnumerable.empty = function () {\r\n return new Enumerable(function () {\r\n return new IEnumerator(\r\n Functions.Blank,\r\n function () { return false; },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\nEnumerable.from = function (obj) {\r\n if (obj == null) {\r\n return Enumerable.empty();\r\n }\r\n if (obj instanceof Enumerable) {\r\n return obj;\r\n }\r\n if (typeof obj == Types.Number || typeof obj == Types.Boolean) {\r\n return Enumerable.repeat(obj, 1);\r\n }\r\n if (typeof obj == Types.String) {\r\n return new Enumerable(function () {\r\n var index = 0;\r\n return new IEnumerator(\r\n Functions.Blank,\r\n function () {\r\n return (index < obj.length) ? this.yieldReturn(obj.charAt(index++)) : false;\r\n },\r\n Functions.Blank);\r\n });\r\n }\r\n if (typeof obj != Types.Function) {\r\n // array or array like object\r\n if (typeof obj.length == Types.Number) {\r\n return new ArrayEnumerable(obj);\r\n }\r\n\r\n // iterable object\r\n if (typeof Symbol !== 'undefined' && typeof obj[Symbol.iterator] !== 'undefined') {\r\n return new Enumerable(function () {\r\n return new IEnumerator(\r\n Functions.Blank,\r\n function () {\r\n var next = obj.next();\r\n return (next.done ? false : (this.yieldReturn(next.value)));\r\n },\r\n Functions.Blank);\r\n });\r\n }\r\n\r\n // JScript's IEnumerable\r\n if (!(obj instanceof Object) && Utils.isIEnumerable(obj)) {\r\n return new Enumerable(function () {\r\n var isFirst = true;\r\n var enumerator;\r\n return new IEnumerator(\r\n function () { enumerator = new Enumerator(obj); },\r\n function () {\r\n if (isFirst) isFirst = false;\r\n else enumerator.moveNext();\r\n\r\n return (enumerator.atEnd()) ? false : this.yieldReturn(enumerator.item());\r\n },\r\n Functions.Blank);\r\n });\r\n }\r\n\r\n // WinMD IIterable\r\n if (typeof Windows === Types.Object && typeof obj.first === Types.Function) {\r\n return new Enumerable(function () {\r\n var isFirst = true;\r\n var enumerator;\r\n return new IEnumerator(\r\n function () { enumerator = obj.first(); },\r\n function () {\r\n if (isFirst) isFirst = false;\r\n else enumerator.moveNext();\r\n\r\n return (enumerator.hasCurrent) ? this.yieldReturn(enumerator.current) : this.yieldBreak();\r\n },\r\n Functions.Blank);\r\n });\r\n }\r\n }\r\n\r\n // case function/object : Create keyValuePair[]\r\n return new Enumerable(function () {\r\n var array = [];\r\n var index = 0;\r\n\r\n return new IEnumerator(\r\n function () {\r\n for (var key in obj) {\r\n var value = obj[key];\r\n if (!(value instanceof Function) && Object.prototype.hasOwnProperty.call(obj, key)) {\r\n array.push({ key: key, value: value });\r\n }\r\n }\r\n },\r\n function () {\r\n return (index < array.length)\r\n ? this.yieldReturn(array[index++])\r\n : false;\r\n },\r\n Functions.Blank);\r\n });\r\n},\r\n\r\nEnumerable.make = function (element) {\r\n return Enumerable.repeat(element, 1);\r\n};\r\n\r\n// Overload:function(input, pattern)\r\n// Overload:function(input, pattern, flags)\r\nEnumerable.matches = function (input, pattern, flags) {\r\n if (flags == null) flags = \"\";\r\n if (pattern instanceof RegExp) {\r\n flags += (pattern.ignoreCase) ? \"i\" : \"\";\r\n flags += (pattern.multiline) ? \"m\" : \"\";\r\n pattern = pattern.source;\r\n }\r\n if (flags.indexOf(\"g\") === -1) flags += \"g\";\r\n\r\n return new Enumerable(function () {\r\n var regex;\r\n return new IEnumerator(\r\n function () { regex = new RegExp(pattern, flags); },\r\n function () {\r\n var match = regex.exec(input);\r\n return (match) ? this.yieldReturn(match) : false;\r\n },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\n// Overload:function(start, count)\r\n// Overload:function(start, count, step)\r\nEnumerable.range = function (start, count, step) {\r\n if (step == null) step = 1;\r\n\r\n return new Enumerable(function () {\r\n var value;\r\n var index = 0;\r\n\r\n return new IEnumerator(\r\n function () { value = start - step; },\r\n function () {\r\n return (index++ < count)\r\n ? this.yieldReturn(value += step)\r\n : this.yieldBreak();\r\n },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\n// Overload:function(start, count)\r\n// Overload:function(start, count, step)\r\nEnumerable.rangeDown = function (start, count, step) {\r\n if (step == null) step = 1;\r\n\r\n return new Enumerable(function () {\r\n var value;\r\n var index = 0;\r\n\r\n return new IEnumerator(\r\n function () { value = start + step; },\r\n function () {\r\n return (index++ < count)\r\n ? this.yieldReturn(value -= step)\r\n : this.yieldBreak();\r\n },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\n// Overload:function(start, to)\r\n// Overload:function(start, to, step)\r\nEnumerable.rangeTo = function (start, to, step) {\r\n if (step == null) step = 1;\r\n\r\n if (start < to) {\r\n return new Enumerable(function () {\r\n var value;\r\n\r\n return new IEnumerator(\r\n function () { value = start - step; },\r\n function () {\r\n var next = value += step;\r\n return (next <= to)\r\n ? this.yieldReturn(next)\r\n : this.yieldBreak();\r\n },\r\n Functions.Blank);\r\n });\r\n }\r\n else {\r\n return new Enumerable(function () {\r\n var value;\r\n\r\n return new IEnumerator(\r\n function () { value = start + step; },\r\n function () {\r\n var next = value -= step;\r\n return (next >= to)\r\n ? this.yieldReturn(next)\r\n : this.yieldBreak();\r\n },\r\n Functions.Blank);\r\n });\r\n }\r\n};\r\n\r\n// Overload:function(element)\r\n// Overload:function(element, count)\r\nEnumerable.repeat = function (element, count) {\r\n if (count != null) return Enumerable.repeat(element).take(count);\r\n\r\n return new Enumerable(function () {\r\n return new IEnumerator(\r\n Functions.Blank,\r\n function () { return this.yieldReturn(element); },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\nEnumerable.repeatWithFinalize = function (initializer, finalizer) {\r\n initializer = Utils.createLambda(initializer);\r\n finalizer = Utils.createLambda(finalizer);\r\n\r\n return new Enumerable(function () {\r\n var element;\r\n return new IEnumerator(\r\n function () { element = initializer(); },\r\n function () { return this.yieldReturn(element); },\r\n function () {\r\n if (element != null) {\r\n finalizer(element);\r\n element = null;\r\n }\r\n });\r\n });\r\n};\r\n\r\n// Overload:function(func)\r\n// Overload:function(func, count)\r\nEnumerable.generate = function (func, count) {\r\n if (count != null) return Enumerable.generate(func).take(count);\r\n func = Utils.createLambda(func);\r\n\r\n return new Enumerable(function () {\r\n return new IEnumerator(\r\n Functions.Blank,\r\n function () { return this.yieldReturn(func()); },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(start)\r\n// Overload:function(start, step)\r\nEnumerable.toInfinity = function (start, step) {\r\n if (start == null) start = 0;\r\n if (step == null) step = 1;\r\n\r\n return new Enumerable(function () {\r\n var value;\r\n return new IEnumerator(\r\n function () { value = start - step; },\r\n function () { return this.yieldReturn(value += step); },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(start)\r\n// Overload:function(start, step)\r\nEnumerable.toNegativeInfinity = function (start, step) {\r\n if (start == null) start = 0;\r\n if (step == null) step = 1;\r\n\r\n return new Enumerable(function () {\r\n var value;\r\n return new IEnumerator(\r\n function () { value = start + step; },\r\n function () { return this.yieldReturn(value -= step); },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\nEnumerable.unfold = function (seed, func) {\r\n func = Utils.createLambda(func);\r\n\r\n return new Enumerable(function () {\r\n var isFirst = true;\r\n var value;\r\n return new IEnumerator(\r\n Functions.Blank,\r\n function () {\r\n if (isFirst) {\r\n isFirst = false;\r\n value = seed;\r\n return this.yieldReturn(value);\r\n }\r\n value = func(value);\r\n return this.yieldReturn(value);\r\n },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\nEnumerable.defer = function (enumerableFactory) {\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = Enumerable.from(enumerableFactory()).getEnumerator(); },\r\n function () {\r\n return (enumerator.moveNext())\r\n ? this.yieldReturn(enumerator.current())\r\n : this.yieldBreak();\r\n },\r\n function () {\r\n Utils.dispose(enumerator);\r\n });\r\n });\r\n};\r\n\r\n// Extension Methods\r\n\r\n/* Projection and Filtering Methods */\r\n\r\n// Overload:function(func)\r\n// Overload:function(func, resultSelector)\r\n// Overload:function(func, resultSelector)\r\nEnumerable.prototype.traverseBreadthFirst = function (func, resultSelector) {\r\n var source = this;\r\n func = Utils.createLambda(func);\r\n resultSelector = Utils.createLambda(resultSelector);\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var nestLevel = 0;\r\n var buffer = [];\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n while (true) {\r\n if (enumerator.moveNext()) {\r\n buffer.push(enumerator.current());\r\n return this.yieldReturn(resultSelector(enumerator.current(), nestLevel));\r\n }\r\n\r\n var next = Enumerable.from(buffer).selectMany(function (x) { return func(x); });\r\n if (!next.any()) {\r\n return false;\r\n }\r\n else {\r\n nestLevel++;\r\n buffer = [];\r\n Utils.dispose(enumerator);\r\n enumerator = next.getEnumerator();\r\n }\r\n }\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\n// Overload:function(func)\r\n// Overload:function(func, resultSelector)\r\n// Overload:function(func, resultSelector)\r\nEnumerable.prototype.traverseDepthFirst = function (func, resultSelector) {\r\n var source = this;\r\n func = Utils.createLambda(func);\r\n resultSelector = Utils.createLambda(resultSelector);\r\n\r\n return new Enumerable(function () {\r\n var enumeratorStack = [];\r\n var enumerator;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n while (true) {\r\n if (enumerator.moveNext()) {\r\n var value = resultSelector(enumerator.current(), enumeratorStack.length);\r\n enumeratorStack.push(enumerator);\r\n enumerator = Enumerable.from(func(enumerator.current())).getEnumerator();\r\n return this.yieldReturn(value);\r\n }\r\n\r\n if (enumeratorStack.length <= 0) return false;\r\n Utils.dispose(enumerator);\r\n enumerator = enumeratorStack.pop();\r\n }\r\n },\r\n function () {\r\n try {\r\n Utils.dispose(enumerator);\r\n }\r\n finally {\r\n Enumerable.from(enumeratorStack).forEach(function (s) { s.dispose(); });\r\n }\r\n });\r\n });\r\n};\r\n\r\nEnumerable.prototype.flatten = function () {\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var middleEnumerator = null;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n while (true) {\r\n if (middleEnumerator != null) {\r\n if (middleEnumerator.moveNext()) {\r\n return this.yieldReturn(middleEnumerator.current());\r\n }\r\n else {\r\n middleEnumerator = null;\r\n }\r\n }\r\n\r\n if (enumerator.moveNext()) {\r\n if (enumerator.current() instanceof Array) {\r\n Utils.dispose(middleEnumerator);\r\n middleEnumerator = Enumerable.from(enumerator.current())\r\n .selectMany(Functions.Identity)\r\n .flatten()\r\n .getEnumerator();\r\n continue;\r\n }\r\n else {\r\n return this.yieldReturn(enumerator.current());\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n },\r\n function () {\r\n try {\r\n Utils.dispose(enumerator);\r\n }\r\n finally {\r\n Utils.dispose(middleEnumerator);\r\n }\r\n });\r\n });\r\n};\r\n\r\nEnumerable.prototype.pairwise = function (selector) {\r\n var source = this;\r\n selector = Utils.createLambda(selector);\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n\r\n return new IEnumerator(\r\n function () {\r\n enumerator = source.getEnumerator();\r\n enumerator.moveNext();\r\n },\r\n function () {\r\n var prev = enumerator.current();\r\n return (enumerator.moveNext())\r\n ? this.yieldReturn(selector(prev, enumerator.current()))\r\n : false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\n// Overload:function(func)\r\n// Overload:function(seed,func)\r\nEnumerable.prototype.scan = function (seed, func) {\r\n var isUseSeed;\r\n if (func == null) {\r\n func = Utils.createLambda(seed); // arguments[0]\r\n isUseSeed = false;\r\n } else {\r\n func = Utils.createLambda(func);\r\n isUseSeed = true;\r\n }\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var value;\r\n var isFirst = true;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n if (isFirst) {\r\n isFirst = false;\r\n if (!isUseSeed) {\r\n if (enumerator.moveNext()) {\r\n return this.yieldReturn(value = enumerator.current());\r\n }\r\n }\r\n else {\r\n return this.yieldReturn(value = seed);\r\n }\r\n }\r\n\r\n return (enumerator.moveNext())\r\n ? this.yieldReturn(value = func(value, enumerator.current()))\r\n : false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\n// Overload:function(selector)\r\n// Overload:function(selector)\r\nEnumerable.prototype.select = function (selector) {\r\n selector = Utils.createLambda(selector);\r\n\r\n if (selector.length <= 1) {\r\n return new WhereSelectEnumerable(this, null, selector);\r\n }\r\n else {\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var index = 0;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n return (enumerator.moveNext())\r\n ? this.yieldReturn(selector(enumerator.current(), index++))\r\n : false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n }\r\n};\r\n\r\n// Overload:function(collectionSelector)\r\n// Overload:function(collectionSelector)\r\n// Overload:function(collectionSelector,resultSelector)\r\n// Overload:function(collectionSelector,resultSelector)\r\nEnumerable.prototype.selectMany = function (collectionSelector, resultSelector) {\r\n var source = this;\r\n collectionSelector = Utils.createLambda(collectionSelector);\r\n if (resultSelector == null) resultSelector = function (a, b) { return b; };\r\n resultSelector = Utils.createLambda(resultSelector);\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var middleEnumerator = undefined;\r\n var index = 0;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n if (middleEnumerator === undefined) {\r\n if (!enumerator.moveNext()) return false;\r\n }\r\n do {\r\n if (middleEnumerator == null) {\r\n var middleSeq = collectionSelector(enumerator.current(), index++);\r\n middleEnumerator = Enumerable.from(middleSeq).getEnumerator();\r\n }\r\n if (middleEnumerator.moveNext()) {\r\n return this.yieldReturn(resultSelector(enumerator.current(), middleEnumerator.current()));\r\n }\r\n Utils.dispose(middleEnumerator);\r\n middleEnumerator = null;\r\n } while (enumerator.moveNext());\r\n return false;\r\n },\r\n function () {\r\n try {\r\n Utils.dispose(enumerator);\r\n }\r\n finally {\r\n Utils.dispose(middleEnumerator);\r\n }\r\n });\r\n });\r\n};\r\n\r\n// Overload:function(predicate)\r\n// Overload:function(predicate)\r\nEnumerable.prototype.where = function (predicate) {\r\n predicate = Utils.createLambda(predicate);\r\n\r\n if (predicate.length <= 1) {\r\n return new WhereEnumerable(this, predicate);\r\n }\r\n else {\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var index = 0;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n while (enumerator.moveNext()) {\r\n if (predicate(enumerator.current(), index++)) {\r\n return this.yieldReturn(enumerator.current());\r\n }\r\n }\r\n return false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n }\r\n};\r\n\r\n\r\n// Overload:function(selector)\r\n// Overload:function(selector)\r\nEnumerable.prototype.choose = function (selector) {\r\n selector = Utils.createLambda(selector);\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var index = 0;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n while (enumerator.moveNext()) {\r\n var result = selector(enumerator.current(), index++);\r\n if (result != null) {\r\n return this.yieldReturn(result);\r\n }\r\n }\r\n return this.yieldBreak();\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\nEnumerable.prototype.ofType = function (type) {\r\n var typeName;\r\n switch (type) {\r\n case Number:\r\n typeName = Types.Number;\r\n break;\r\n case String:\r\n typeName = Types.String;\r\n break;\r\n case Boolean:\r\n typeName = Types.Boolean;\r\n break;\r\n case Function:\r\n typeName = Types.Function;\r\n break;\r\n default:\r\n typeName = null;\r\n break;\r\n }\r\n return (typeName === null)\r\n ? this.where(function (x) { return x instanceof type; })\r\n : this.where(function (x) { return typeof x === typeName; });\r\n};\r\n\r\n// mutiple arguments, last one is selector, others are enumerable\r\nEnumerable.prototype.zip = function () {\r\n var args = arguments;\r\n var selector = Utils.createLambda(arguments[arguments.length - 1]);\r\n\r\n var source = this;\r\n // optimized case:argument is 2\r\n if (arguments.length == 2) {\r\n var second = arguments[0];\r\n\r\n return new Enumerable(function () {\r\n var firstEnumerator;\r\n var secondEnumerator;\r\n var index = 0;\r\n\r\n return new IEnumerator(\r\n function () {\r\n firstEnumerator = source.getEnumerator();\r\n secondEnumerator = Enumerable.from(second).getEnumerator();\r\n },\r\n function () {\r\n if (firstEnumerator.moveNext() && secondEnumerator.moveNext()) {\r\n return this.yieldReturn(selector(firstEnumerator.current(), secondEnumerator.current(), index++));\r\n }\r\n return false;\r\n },\r\n function () {\r\n try {\r\n Utils.dispose(firstEnumerator);\r\n } finally {\r\n Utils.dispose(secondEnumerator);\r\n }\r\n });\r\n });\r\n }\r\n else {\r\n return new Enumerable(function () {\r\n var enumerators;\r\n var index = 0;\r\n\r\n return new IEnumerator(\r\n function () {\r\n var array = Enumerable.make(source)\r\n .concat(Enumerable.from(args).takeExceptLast().select(Enumerable.from))\r\n .select(function (x) { return x.getEnumerator() })\r\n .toArray();\r\n enumerators = Enumerable.from(array);\r\n },\r\n function () {\r\n if (enumerators.all(function (x) { return x.moveNext() })) {\r\n var array = enumerators\r\n .select(function (x) { return x.current() })\r\n .toArray();\r\n array.push(index++);\r\n return this.yieldReturn(selector.apply(null, array));\r\n }\r\n else {\r\n return this.yieldBreak();\r\n }\r\n },\r\n function () {\r\n Enumerable.from(enumerators).forEach(Utils.dispose);\r\n });\r\n });\r\n }\r\n};\r\n\r\n// mutiple arguments\r\nEnumerable.prototype.merge = function () {\r\n var args = arguments;\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerators;\r\n var index = -1;\r\n\r\n return new IEnumerator(\r\n function () {\r\n enumerators = Enumerable.make(source)\r\n .concat(Enumerable.from(args).select(Enumerable.from))\r\n .select(function (x) { return x.getEnumerator() })\r\n .toArray();\r\n },\r\n function () {\r\n while (enumerators.length > 0) {\r\n index = (index >= enumerators.length - 1) ? 0 : index + 1;\r\n var enumerator = enumerators[index];\r\n\r\n if (enumerator.moveNext()) {\r\n return this.yieldReturn(enumerator.current());\r\n }\r\n else {\r\n enumerator.dispose();\r\n enumerators.splice(index--, 1);\r\n }\r\n }\r\n return this.yieldBreak();\r\n },\r\n function () {\r\n Enumerable.from(enumerators).forEach(Utils.dispose);\r\n });\r\n });\r\n};\r\n\r\n/* Join Methods */\r\n\r\n// Overload:function (inner, outerKeySelector, innerKeySelector, resultSelector)\r\n// Overload:function (inner, outerKeySelector, innerKeySelector, resultSelector, compareSelector)\r\nEnumerable.prototype.join = function (inner, outerKeySelector, innerKeySelector, resultSelector, compareSelector) {\r\n outerKeySelector = Utils.createLambda(outerKeySelector);\r\n innerKeySelector = Utils.createLambda(innerKeySelector);\r\n resultSelector = Utils.createLambda(resultSelector);\r\n compareSelector = Utils.createLambda(compareSelector);\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var outerEnumerator;\r\n var lookup;\r\n var innerElements = null;\r\n var innerCount = 0;\r\n\r\n return new IEnumerator(\r\n function () {\r\n outerEnumerator = source.getEnumerator();\r\n lookup = Enumerable.from(inner).toLookup(innerKeySelector, Functions.Identity, compareSelector);\r\n },\r\n function () {\r\n while (true) {\r\n if (innerElements != null) {\r\n var innerElement = innerElements[innerCount++];\r\n if (innerElement !== undefined) {\r\n return this.yieldReturn(resultSelector(outerEnumerator.current(), innerElement));\r\n }\r\n\r\n innerElement = null;\r\n innerCount = 0;\r\n }\r\n\r\n if (outerEnumerator.moveNext()) {\r\n var key = outerKeySelector(outerEnumerator.current());\r\n innerElements = lookup.get(key).toArray();\r\n } else {\r\n return false;\r\n }\r\n }\r\n },\r\n function () { Utils.dispose(outerEnumerator); });\r\n });\r\n};\r\n\r\n// Overload:function (inner, outerKeySelector, innerKeySelector, resultSelector)\r\n// Overload:function (inner, outerKeySelector, innerKeySelector, resultSelector, compareSelector)\r\nEnumerable.prototype.groupJoin = function (inner, outerKeySelector, innerKeySelector, resultSelector, compareSelector) {\r\n outerKeySelector = Utils.createLambda(outerKeySelector);\r\n innerKeySelector = Utils.createLambda(innerKeySelector);\r\n resultSelector = Utils.createLambda(resultSelector);\r\n compareSelector = Utils.createLambda(compareSelector);\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator = source.getEnumerator();\r\n var lookup = null;\r\n\r\n return new IEnumerator(\r\n function () {\r\n enumerator = source.getEnumerator();\r\n lookup = Enumerable.from(inner).toLookup(innerKeySelector, Functions.Identity, compareSelector);\r\n },\r\n function () {\r\n if (enumerator.moveNext()) {\r\n var innerElement = lookup.get(outerKeySelector(enumerator.current()));\r\n return this.yieldReturn(resultSelector(enumerator.current(), innerElement));\r\n }\r\n return false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\n/* Set Methods */\r\n\r\nEnumerable.prototype.all = function (predicate) {\r\n predicate = Utils.createLambda(predicate);\r\n\r\n var result = true;\r\n this.forEach(function (x) {\r\n if (!predicate(x)) {\r\n result = false;\r\n return false; // break\r\n }\r\n });\r\n return result;\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(predicate)\r\nEnumerable.prototype.any = function (predicate) {\r\n predicate = Utils.createLambda(predicate);\r\n\r\n var enumerator = this.getEnumerator();\r\n try {\r\n if (arguments.length == 0) return enumerator.moveNext(); // case:function()\r\n\r\n while (enumerator.moveNext()) // case:function(predicate)\r\n {\r\n if (predicate(enumerator.current())) return true;\r\n }\r\n return false;\r\n }\r\n finally {\r\n Utils.dispose(enumerator);\r\n }\r\n};\r\n\r\nEnumerable.prototype.isEmpty = function () {\r\n return !this.any();\r\n};\r\n\r\n// multiple arguments\r\nEnumerable.prototype.concat = function () {\r\n var source = this;\r\n\r\n if (arguments.length == 1) {\r\n var second = arguments[0];\r\n\r\n return new Enumerable(function () {\r\n var firstEnumerator;\r\n var secondEnumerator;\r\n\r\n return new IEnumerator(\r\n function () { firstEnumerator = source.getEnumerator(); },\r\n function () {\r\n if (secondEnumerator == null) {\r\n if (firstEnumerator.moveNext()) return this.yieldReturn(firstEnumerator.current());\r\n secondEnumerator = Enumerable.from(second).getEnumerator();\r\n }\r\n if (secondEnumerator.moveNext()) return this.yieldReturn(secondEnumerator.current());\r\n return false;\r\n },\r\n function () {\r\n try {\r\n Utils.dispose(firstEnumerator);\r\n }\r\n finally {\r\n Utils.dispose(secondEnumerator);\r\n }\r\n });\r\n });\r\n }\r\n else {\r\n var args = arguments;\r\n\r\n return new Enumerable(function () {\r\n var enumerators;\r\n\r\n return new IEnumerator(\r\n function () {\r\n enumerators = Enumerable.make(source)\r\n .concat(Enumerable.from(args).select(Enumerable.from))\r\n .select(function (x) { return x.getEnumerator() })\r\n .toArray();\r\n },\r\n function () {\r\n while (enumerators.length > 0) {\r\n var enumerator = enumerators[0];\r\n\r\n if (enumerator.moveNext()) {\r\n return this.yieldReturn(enumerator.current());\r\n }\r\n else {\r\n enumerator.dispose();\r\n enumerators.splice(0, 1);\r\n }\r\n }\r\n return this.yieldBreak();\r\n },\r\n function () {\r\n Enumerable.from(enumerators).forEach(Utils.dispose);\r\n });\r\n });\r\n }\r\n};\r\n\r\nEnumerable.prototype.insert = function (index, second) {\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var firstEnumerator;\r\n var secondEnumerator;\r\n var count = 0;\r\n var isEnumerated = false;\r\n\r\n return new IEnumerator(\r\n function () {\r\n firstEnumerator = source.getEnumerator();\r\n secondEnumerator = Enumerable.from(second).getEnumerator();\r\n },\r\n function () {\r\n if (count == index && secondEnumerator.moveNext()) {\r\n isEnumerated = true;\r\n return this.yieldReturn(secondEnumerator.current());\r\n }\r\n if (firstEnumerator.moveNext()) {\r\n count++;\r\n return this.yieldReturn(firstEnumerator.current());\r\n }\r\n if (!isEnumerated && secondEnumerator.moveNext()) {\r\n return this.yieldReturn(secondEnumerator.current());\r\n }\r\n return false;\r\n },\r\n function () {\r\n try {\r\n Utils.dispose(firstEnumerator);\r\n }\r\n finally {\r\n Utils.dispose(secondEnumerator);\r\n }\r\n });\r\n });\r\n};\r\n\r\nEnumerable.prototype.alternate = function (alternateValueOrSequence) {\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var buffer;\r\n var enumerator;\r\n var alternateSequence;\r\n var alternateEnumerator;\r\n\r\n return new IEnumerator(\r\n function () {\r\n if (alternateValueOrSequence instanceof Array || alternateValueOrSequence.getEnumerator != null) {\r\n alternateSequence = Enumerable.from(Enumerable.from(alternateValueOrSequence).toArray()); // freeze\r\n }\r\n else {\r\n alternateSequence = Enumerable.make(alternateValueOrSequence);\r\n }\r\n enumerator = source.getEnumerator();\r\n if (enumerator.moveNext()) buffer = enumerator.current();\r\n },\r\n function () {\r\n while (true) {\r\n if (alternateEnumerator != null) {\r\n if (alternateEnumerator.moveNext()) {\r\n return this.yieldReturn(alternateEnumerator.current());\r\n }\r\n else {\r\n alternateEnumerator = null;\r\n }\r\n }\r\n\r\n if (buffer == null && enumerator.moveNext()) {\r\n buffer = enumerator.current(); // hasNext\r\n alternateEnumerator = alternateSequence.getEnumerator();\r\n continue; // GOTO\r\n }\r\n else if (buffer != null) {\r\n var retVal = buffer;\r\n buffer = null;\r\n return this.yieldReturn(retVal);\r\n }\r\n\r\n return this.yieldBreak();\r\n }\r\n },\r\n function () {\r\n try {\r\n Utils.dispose(enumerator);\r\n }\r\n finally {\r\n Utils.dispose(alternateEnumerator);\r\n }\r\n });\r\n });\r\n};\r\n\r\n// Overload:function(value)\r\n// Overload:function(value, compareSelector)\r\nEnumerable.prototype.contains = function (value, compareSelector) {\r\n compareSelector = Utils.createLambda(compareSelector);\r\n var enumerator = this.getEnumerator();\r\n try {\r\n while (enumerator.moveNext()) {\r\n if (compareSelector(enumerator.current()) === value) return true;\r\n }\r\n return false;\r\n }\r\n finally {\r\n Utils.dispose(enumerator);\r\n }\r\n};\r\n\r\nEnumerable.prototype.defaultIfEmpty = function (defaultValue) {\r\n var source = this;\r\n if (defaultValue === undefined) defaultValue = null;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var isFirst = true;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n if (enumerator.moveNext()) {\r\n isFirst = false;\r\n return this.yieldReturn(enumerator.current());\r\n }\r\n else if (isFirst) {\r\n isFirst = false;\r\n return this.yieldReturn(defaultValue);\r\n }\r\n return false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(compareSelector)\r\nEnumerable.prototype.distinct = function (compareSelector) {\r\n return this.except(Enumerable.empty(), compareSelector);\r\n};\r\n\r\nEnumerable.prototype.distinctUntilChanged = function (compareSelector) {\r\n compareSelector = Utils.createLambda(compareSelector);\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var compareKey;\r\n var initial;\r\n\r\n return new IEnumerator(\r\n function () {\r\n enumerator = source.getEnumerator();\r\n },\r\n function () {\r\n while (enumerator.moveNext()) {\r\n var key = compareSelector(enumerator.current());\r\n\r\n if (initial) {\r\n initial = false;\r\n compareKey = key;\r\n return this.yieldReturn(enumerator.current());\r\n }\r\n\r\n if (compareKey === key) {\r\n continue;\r\n }\r\n\r\n compareKey = key;\r\n return this.yieldReturn(enumerator.current());\r\n }\r\n return this.yieldBreak();\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\n// Overload:function(second)\r\n// Overload:function(second, compareSelector)\r\nEnumerable.prototype.except = function (second, compareSelector) {\r\n compareSelector = Utils.createLambda(compareSelector);\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var keys;\r\n\r\n return new IEnumerator(\r\n function () {\r\n enumerator = source.getEnumerator();\r\n keys = new Dictionary(compareSelector);\r\n Enumerable.from(second).forEach(function (key) { keys.add(key); });\r\n },\r\n function () {\r\n while (enumerator.moveNext()) {\r\n var current = enumerator.current();\r\n if (!keys.contains(current)) {\r\n keys.add(current);\r\n return this.yieldReturn(current);\r\n }\r\n }\r\n return false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\n// Overload:function(second)\r\n// Overload:function(second, compareSelector)\r\nEnumerable.prototype.intersect = function (second, compareSelector) {\r\n compareSelector = Utils.createLambda(compareSelector);\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var keys;\r\n var outs;\r\n\r\n return new IEnumerator(\r\n function () {\r\n enumerator = source.getEnumerator();\r\n\r\n keys = new Dictionary(compareSelector);\r\n Enumerable.from(second).forEach(function (key) { keys.add(key); });\r\n outs = new Dictionary(compareSelector);\r\n },\r\n function () {\r\n while (enumerator.moveNext()) {\r\n var current = enumerator.current();\r\n if (!outs.contains(current) && keys.contains(current)) {\r\n outs.add(current);\r\n return this.yieldReturn(current);\r\n }\r\n }\r\n return false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\n// Overload:function(second)\r\n// Overload:function(second, compareSelector)\r\nEnumerable.prototype.sequenceEqual = function (second, compareSelector) {\r\n compareSelector = Utils.createLambda(compareSelector);\r\n\r\n var firstEnumerator = this.getEnumerator();\r\n try {\r\n var secondEnumerator = Enumerable.from(second).getEnumerator();\r\n try {\r\n while (firstEnumerator.moveNext()) {\r\n if (!secondEnumerator.moveNext()\r\n || compareSelector(firstEnumerator.current()) !== compareSelector(secondEnumerator.current())) {\r\n return false;\r\n }\r\n }\r\n\r\n if (secondEnumerator.moveNext()) return false;\r\n return true;\r\n }\r\n finally {\r\n Utils.dispose(secondEnumerator);\r\n }\r\n }\r\n finally {\r\n Utils.dispose(firstEnumerator);\r\n }\r\n};\r\n\r\nEnumerable.prototype.union = function (second, compareSelector) {\r\n compareSelector = Utils.createLambda(compareSelector);\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var firstEnumerator;\r\n var secondEnumerator;\r\n var keys;\r\n\r\n return new IEnumerator(\r\n function () {\r\n firstEnumerator = source.getEnumerator();\r\n keys = new Dictionary(compareSelector);\r\n },\r\n function () {\r\n var current;\r\n if (secondEnumerator === undefined) {\r\n while (firstEnumerator.moveNext()) {\r\n current = firstEnumerator.current();\r\n if (!keys.contains(current)) {\r\n keys.add(current);\r\n return this.yieldReturn(current);\r\n }\r\n }\r\n secondEnumerator = Enumerable.from(second).getEnumerator();\r\n }\r\n while (secondEnumerator.moveNext()) {\r\n current = secondEnumerator.current();\r\n if (!keys.contains(current)) {\r\n keys.add(current);\r\n return this.yieldReturn(current);\r\n }\r\n }\r\n return false;\r\n },\r\n function () {\r\n try {\r\n Utils.dispose(firstEnumerator);\r\n }\r\n finally {\r\n Utils.dispose(secondEnumerator);\r\n }\r\n });\r\n });\r\n};\r\n\r\n/* Ordering Methods */\r\n\r\nEnumerable.prototype.orderBy = function (keySelector, comparer) {\r\n return new OrderedEnumerable(this, keySelector, comparer, false);\r\n};\r\n\r\nEnumerable.prototype.orderByDescending = function (keySelector, comparer) {\r\n return new OrderedEnumerable(this, keySelector, comparer, true);\r\n};\r\n\r\nEnumerable.prototype.reverse = function () {\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var buffer;\r\n var index;\r\n\r\n return new IEnumerator(\r\n function () {\r\n buffer = source.toArray();\r\n index = buffer.length;\r\n },\r\n function () {\r\n return (index > 0)\r\n ? this.yieldReturn(buffer[--index])\r\n : false;\r\n },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\nEnumerable.prototype.shuffle = function () {\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var buffer;\r\n\r\n return new IEnumerator(\r\n function () { buffer = source.toArray(); },\r\n function () {\r\n if (buffer.length > 0) {\r\n var i = Math.floor(Math.random() * buffer.length);\r\n return this.yieldReturn(buffer.splice(i, 1)[0]);\r\n }\r\n return false;\r\n },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\nEnumerable.prototype.weightedSample = function (weightSelector) {\r\n weightSelector = Utils.createLambda(weightSelector);\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var sortedByBound;\r\n var totalWeight = 0;\r\n\r\n return new IEnumerator(\r\n function () {\r\n sortedByBound = source\r\n .choose(function (x) {\r\n var weight = weightSelector(x);\r\n if (weight <= 0) return null; // ignore 0\r\n\r\n totalWeight += weight;\r\n return { value: x, bound: totalWeight };\r\n })\r\n .toArray();\r\n },\r\n function () {\r\n if (sortedByBound.length > 0) {\r\n var draw = Math.floor(Math.random() * totalWeight) + 1;\r\n\r\n var lower = -1;\r\n var upper = sortedByBound.length;\r\n while (upper - lower > 1) {\r\n var index = Math.floor((lower + upper) / 2);\r\n if (sortedByBound[index].bound >= draw) {\r\n upper = index;\r\n }\r\n else {\r\n lower = index;\r\n }\r\n }\r\n\r\n return this.yieldReturn(sortedByBound[upper].value);\r\n }\r\n\r\n return this.yieldBreak();\r\n },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\n/* Grouping Methods */\r\n\r\n// Overload:function(keySelector)\r\n// Overload:function(keySelector,elementSelector)\r\n// Overload:function(keySelector,elementSelector,resultSelector)\r\n// Overload:function(keySelector,elementSelector,resultSelector,compareSelector)\r\nEnumerable.prototype.groupBy = function (keySelector, elementSelector, resultSelector, compareSelector) {\r\n var source = this;\r\n keySelector = Utils.createLambda(keySelector);\r\n elementSelector = Utils.createLambda(elementSelector);\r\n if (resultSelector != null) resultSelector = Utils.createLambda(resultSelector);\r\n compareSelector = Utils.createLambda(compareSelector);\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n\r\n return new IEnumerator(\r\n function () {\r\n enumerator = source.toLookup(keySelector, elementSelector, compareSelector)\r\n .toEnumerable()\r\n .getEnumerator();\r\n },\r\n function () {\r\n while (enumerator.moveNext()) {\r\n return (resultSelector == null)\r\n ? this.yieldReturn(enumerator.current())\r\n : this.yieldReturn(resultSelector(enumerator.current().key(), enumerator.current()));\r\n }\r\n return false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\n// Overload:function(keySelector)\r\n// Overload:function(keySelector,elementSelector)\r\n// Overload:function(keySelector,elementSelector,resultSelector)\r\n// Overload:function(keySelector,elementSelector,resultSelector,compareSelector)\r\nEnumerable.prototype.partitionBy = function (keySelector, elementSelector, resultSelector, compareSelector) {\r\n\r\n var source = this;\r\n keySelector = Utils.createLambda(keySelector);\r\n elementSelector = Utils.createLambda(elementSelector);\r\n compareSelector = Utils.createLambda(compareSelector);\r\n var hasResultSelector;\r\n if (resultSelector == null) {\r\n hasResultSelector = false;\r\n resultSelector = function (key, group) { return new Grouping(key, group); };\r\n }\r\n else {\r\n hasResultSelector = true;\r\n resultSelector = Utils.createLambda(resultSelector);\r\n }\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var key;\r\n var compareKey;\r\n var group = [];\r\n\r\n return new IEnumerator(\r\n function () {\r\n enumerator = source.getEnumerator();\r\n if (enumerator.moveNext()) {\r\n key = keySelector(enumerator.current());\r\n compareKey = compareSelector(key);\r\n group.push(elementSelector(enumerator.current()));\r\n }\r\n },\r\n function () {\r\n var hasNext;\r\n while ((hasNext = enumerator.moveNext()) == true) {\r\n if (compareKey === compareSelector(keySelector(enumerator.current()))) {\r\n group.push(elementSelector(enumerator.current()));\r\n }\r\n else break;\r\n }\r\n\r\n if (group.length > 0) {\r\n var result = (hasResultSelector)\r\n ? resultSelector(key, Enumerable.from(group))\r\n : resultSelector(key, group);\r\n if (hasNext) {\r\n key = keySelector(enumerator.current());\r\n compareKey = compareSelector(key);\r\n group = [elementSelector(enumerator.current())];\r\n }\r\n else group = [];\r\n\r\n return this.yieldReturn(result);\r\n }\r\n\r\n return false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\nEnumerable.prototype.buffer = function (count) {\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n var array = [];\r\n var index = 0;\r\n while (enumerator.moveNext()) {\r\n array.push(enumerator.current());\r\n if (++index >= count) return this.yieldReturn(array);\r\n }\r\n if (array.length > 0) return this.yieldReturn(array);\r\n return false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\n/* Aggregate Methods */\r\n\r\n// Overload:function(func)\r\n// Overload:function(seed,func)\r\n// Overload:function(seed,func,resultSelector)\r\nEnumerable.prototype.aggregate = function (seed, func, resultSelector) {\r\n resultSelector = Utils.createLambda(resultSelector);\r\n return resultSelector(this.scan(seed, func, resultSelector).last());\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(selector)\r\nEnumerable.prototype.average = function (selector) {\r\n selector = Utils.createLambda(selector);\r\n\r\n var sum = 0;\r\n var count = 0;\r\n this.forEach(function (x) {\r\n sum += selector(x);\r\n ++count;\r\n });\r\n\r\n return sum / count;\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(predicate)\r\nEnumerable.prototype.count = function (predicate) {\r\n predicate = (predicate == null) ? Functions.True : Utils.createLambda(predicate);\r\n\r\n var count = 0;\r\n this.forEach(function (x, i) {\r\n if (predicate(x, i))++count;\r\n });\r\n return count;\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(selector)\r\nEnumerable.prototype.max = function (selector) {\r\n if (selector == null) selector = Functions.Identity;\r\n return this.select(selector).aggregate(function (a, b) { return (a > b) ? a : b; });\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(selector)\r\nEnumerable.prototype.min = function (selector) {\r\n if (selector == null) selector = Functions.Identity;\r\n return this.select(selector).aggregate(function (a, b) { return (a < b) ? a : b; });\r\n};\r\n\r\nEnumerable.prototype.maxBy = function (keySelector) {\r\n keySelector = Utils.createLambda(keySelector);\r\n return this.aggregate(function (a, b) { return (keySelector(a) > keySelector(b)) ? a : b; });\r\n};\r\n\r\nEnumerable.prototype.minBy = function (keySelector) {\r\n keySelector = Utils.createLambda(keySelector);\r\n return this.aggregate(function (a, b) { return (keySelector(a) < keySelector(b)) ? a : b; });\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(selector)\r\nEnumerable.prototype.sum = function (selector) {\r\n if (selector == null) selector = Functions.Identity;\r\n return this.select(selector).aggregate(0, function (a, b) { return a + b; });\r\n};\r\n\r\n/* Paging Methods */\r\n\r\nEnumerable.prototype.elementAt = function (index) {\r\n var value;\r\n var found = false;\r\n this.forEach(function (x, i) {\r\n if (i == index) {\r\n value = x;\r\n found = true;\r\n return false;\r\n }\r\n });\r\n\r\n if (!found) throw new Error(\"index is less than 0 or greater than or equal to the number of elements in source.\");\r\n return value;\r\n};\r\n\r\nEnumerable.prototype.elementAtOrDefault = function (index, defaultValue) {\r\n if (defaultValue === undefined) defaultValue = null;\r\n var value;\r\n var found = false;\r\n this.forEach(function (x, i) {\r\n if (i == index) {\r\n value = x;\r\n found = true;\r\n return false;\r\n }\r\n });\r\n\r\n return (!found) ? defaultValue : value;\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(predicate)\r\nEnumerable.prototype.first = function (predicate) {\r\n if (predicate != null) return this.where(predicate).first();\r\n\r\n var value;\r\n var found = false;\r\n this.forEach(function (x) {\r\n value = x;\r\n found = true;\r\n return false;\r\n });\r\n\r\n if (!found) throw new Error(\"first:No element satisfies the condition.\");\r\n return value;\r\n};\r\n\r\nEnumerable.prototype.firstOrDefault = function (predicate, defaultValue) {\r\n if (predicate !== undefined) {\r\n if (typeof predicate === Types.Function || typeof Utils.createLambda(predicate) === Types.Function) {\r\n return this.where(predicate).firstOrDefault(undefined, defaultValue);\r\n }\r\n defaultValue = predicate;\r\n }\r\n\r\n var value;\r\n var found = false;\r\n this.forEach(function (x) {\r\n value = x;\r\n found = true;\r\n return false;\r\n });\r\n return (!found) ? defaultValue : value;\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(predicate)\r\nEnumerable.prototype.last = function (predicate) {\r\n if (predicate != null) return this.where(predicate).last();\r\n\r\n var value;\r\n var found = false;\r\n this.forEach(function (x) {\r\n found = true;\r\n value = x;\r\n });\r\n\r\n if (!found) throw new Error(\"last:No element satisfies the condition.\");\r\n return value;\r\n};\r\n\r\nEnumerable.prototype.lastOrDefault = function (predicate, defaultValue) {\r\n if (predicate !== undefined) {\r\n if (typeof predicate === Types.Function || typeof Utils.createLambda(predicate) === Types.Function) {\r\n return this.where(predicate).lastOrDefault(undefined, defaultValue);\r\n }\r\n defaultValue = predicate;\r\n }\r\n\r\n var value;\r\n var found = false;\r\n this.forEach(function (x) {\r\n found = true;\r\n value = x;\r\n });\r\n return (!found) ? defaultValue : value;\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(predicate)\r\nEnumerable.prototype.single = function (predicate) {\r\n if (predicate != null) return this.where(predicate).single();\r\n\r\n var value;\r\n var found = false;\r\n this.forEach(function (x) {\r\n if (!found) {\r\n found = true;\r\n value = x;\r\n } else throw new Error(\"single:sequence contains more than one element.\");\r\n });\r\n\r\n if (!found) throw new Error(\"single:No element satisfies the condition.\");\r\n return value;\r\n};\r\n\r\n// Overload:function(defaultValue)\r\n// Overload:function(defaultValue,predicate)\r\nEnumerable.prototype.singleOrDefault = function (predicate, defaultValue) {\r\n if (defaultValue === undefined) defaultValue = null;\r\n if (predicate != null) return this.where(predicate).singleOrDefault(null, defaultValue);\r\n\r\n var value;\r\n var found = false;\r\n this.forEach(function (x) {\r\n if (!found) {\r\n found = true;\r\n value = x;\r\n } else throw new Error(\"single:sequence contains more than one element.\");\r\n });\r\n\r\n return (!found) ? defaultValue : value;\r\n};\r\n\r\nEnumerable.prototype.skip = function (count) {\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var index = 0;\r\n\r\n return new IEnumerator(\r\n function () {\r\n enumerator = source.getEnumerator();\r\n while (index++ < count && enumerator.moveNext()) {\r\n }\r\n ;\r\n },\r\n function () {\r\n return (enumerator.moveNext())\r\n ? this.yieldReturn(enumerator.current())\r\n : false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\n// Overload:function(predicate)\r\n// Overload:function(predicate)\r\nEnumerable.prototype.skipWhile = function (predicate) {\r\n predicate = Utils.createLambda(predicate);\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var index = 0;\r\n var isSkipEnd = false;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n while (!isSkipEnd) {\r\n if (enumerator.moveNext()) {\r\n if (!predicate(enumerator.current(), index++)) {\r\n isSkipEnd = true;\r\n return this.yieldReturn(enumerator.current());\r\n }\r\n continue;\r\n } else return false;\r\n }\r\n\r\n return (enumerator.moveNext())\r\n ? this.yieldReturn(enumerator.current())\r\n : false;\r\n\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\nEnumerable.prototype.take = function (count) {\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var index = 0;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n return (index++ < count && enumerator.moveNext())\r\n ? this.yieldReturn(enumerator.current())\r\n : false;\r\n },\r\n function () { Utils.dispose(enumerator); }\r\n );\r\n });\r\n};\r\n\r\n// Overload:function(predicate)\r\n// Overload:function(predicate)\r\nEnumerable.prototype.takeWhile = function (predicate) {\r\n predicate = Utils.createLambda(predicate);\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var index = 0;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n return (enumerator.moveNext() && predicate(enumerator.current(), index++))\r\n ? this.yieldReturn(enumerator.current())\r\n : false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(count)\r\nEnumerable.prototype.takeExceptLast = function (count) {\r\n if (count == null) count = 1;\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n if (count <= 0) return source.getEnumerator(); // do nothing\r\n\r\n var enumerator;\r\n var q = [];\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n while (enumerator.moveNext()) {\r\n if (q.length == count) {\r\n q.push(enumerator.current());\r\n return this.yieldReturn(q.shift());\r\n }\r\n q.push(enumerator.current());\r\n }\r\n return false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\nEnumerable.prototype.takeFromLast = function (count) {\r\n if (count <= 0 || count == null) return Enumerable.empty();\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var sourceEnumerator;\r\n var enumerator;\r\n var q = [];\r\n\r\n return new IEnumerator(\r\n function () { sourceEnumerator = source.getEnumerator(); },\r\n function () {\r\n while (sourceEnumerator.moveNext()) {\r\n if (q.length == count) q.shift();\r\n q.push(sourceEnumerator.current());\r\n }\r\n if (enumerator == null) {\r\n enumerator = Enumerable.from(q).getEnumerator();\r\n }\r\n return (enumerator.moveNext())\r\n ? this.yieldReturn(enumerator.current())\r\n : false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\n// Overload:function(item)\r\n// Overload:function(predicate)\r\nEnumerable.prototype.indexOf = function (item) {\r\n var found = null;\r\n\r\n // item as predicate\r\n if (typeof (item) === Types.Function) {\r\n this.forEach(function (x, i) {\r\n if (item(x, i)) {\r\n found = i;\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n this.forEach(function (x, i) {\r\n if (x === item) {\r\n found = i;\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n return (found !== null) ? found : -1;\r\n};\r\n\r\n// Overload:function(item)\r\n// Overload:function(predicate)\r\nEnumerable.prototype.lastIndexOf = function (item) {\r\n var result = -1;\r\n\r\n // item as predicate\r\n if (typeof (item) === Types.Function) {\r\n this.forEach(function (x, i) {\r\n if (item(x, i)) result = i;\r\n });\r\n }\r\n else {\r\n this.forEach(function (x, i) {\r\n if (x === item) result = i;\r\n });\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/* Convert Methods */\r\n\r\nEnumerable.prototype.cast = function () {\r\n return this;\r\n};\r\n\r\nEnumerable.prototype.asEnumerable = function () {\r\n return Enumerable.from(this);\r\n};\r\n\r\nEnumerable.prototype.toArray = function () {\r\n var array = [];\r\n this.forEach(function (x) { array.push(x); });\r\n return array;\r\n};\r\n\r\n// Overload:function(keySelector)\r\n// Overload:function(keySelector, elementSelector)\r\n// Overload:function(keySelector, elementSelector, compareSelector)\r\nEnumerable.prototype.toLookup = function (keySelector, elementSelector, compareSelector) {\r\n keySelector = Utils.createLambda(keySelector);\r\n elementSelector = Utils.createLambda(elementSelector);\r\n compareSelector = Utils.createLambda(compareSelector);\r\n\r\n var dict = new Dictionary(compareSelector);\r\n this.forEach(function (x) {\r\n var key = keySelector(x);\r\n var element = elementSelector(x);\r\n\r\n var array = dict.get(key);\r\n if (array !== undefined) array.push(element);\r\n else dict.add(key, [element]);\r\n });\r\n return new Lookup(dict);\r\n};\r\n\r\nEnumerable.prototype.toObject = function (keySelector, elementSelector) {\r\n keySelector = Utils.createLambda(keySelector);\r\n elementSelector = Utils.createLambda(elementSelector);\r\n\r\n var obj = {};\r\n this.forEach(function (x) {\r\n obj[keySelector(x)] = elementSelector(x);\r\n });\r\n return obj;\r\n};\r\n\r\n// Overload:function(keySelector, elementSelector)\r\n// Overload:function(keySelector, elementSelector, compareSelector)\r\nEnumerable.prototype.toDictionary = function (keySelector, elementSelector, compareSelector) {\r\n keySelector = Utils.createLambda(keySelector);\r\n elementSelector = Utils.createLambda(elementSelector);\r\n compareSelector = Utils.createLambda(compareSelector);\r\n\r\n var dict = new Dictionary(compareSelector);\r\n this.forEach(function (x) {\r\n dict.add(keySelector(x), elementSelector(x));\r\n });\r\n return dict;\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(replacer)\r\n// Overload:function(replacer, space)\r\nEnumerable.prototype.toJSONString = function (replacer, space) {\r\n if (typeof JSON === Types.Undefined || JSON.stringify == null) {\r\n throw new Error(\"toJSONString can't find JSON.stringify. This works native JSON support Browser or include json2.js\");\r\n }\r\n return JSON.stringify(this.toArray(), replacer, space);\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(separator)\r\n// Overload:function(separator,selector)\r\nEnumerable.prototype.toJoinedString = function (separator, selector) {\r\n if (separator == null) separator = \"\";\r\n if (selector == null) selector = Functions.Identity;\r\n\r\n return this.select(selector).toArray().join(separator);\r\n};\r\n\r\n\r\n/* Action Methods */\r\n\r\n// Overload:function(action)\r\n// Overload:function(action)\r\nEnumerable.prototype.doAction = function (action) {\r\n var source = this;\r\n action = Utils.createLambda(action);\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n var index = 0;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n if (enumerator.moveNext()) {\r\n action(enumerator.current(), index++);\r\n return this.yieldReturn(enumerator.current());\r\n }\r\n return false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\n// Overload:function(action)\r\n// Overload:function(action)\r\n// Overload:function(func)\r\n// Overload:function(func)\r\nEnumerable.prototype.forEach = function (action) {\r\n action = Utils.createLambda(action);\r\n\r\n var index = 0;\r\n var enumerator = this.getEnumerator();\r\n try {\r\n while (enumerator.moveNext()) {\r\n if (action(enumerator.current(), index++) === false) break;\r\n }\r\n } finally {\r\n Utils.dispose(enumerator);\r\n }\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(separator)\r\n// Overload:function(separator,selector)\r\nEnumerable.prototype.write = function (separator, selector) {\r\n if (separator == null) separator = \"\";\r\n selector = Utils.createLambda(selector);\r\n\r\n var isFirst = true;\r\n this.forEach(function (item) {\r\n if (isFirst) isFirst = false;\r\n else document.write(separator);\r\n document.write(selector(item));\r\n });\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(selector)\r\nEnumerable.prototype.writeLine = function (selector) {\r\n selector = Utils.createLambda(selector);\r\n\r\n this.forEach(function (item) {\r\n document.writeln(selector(item) + \"
\");\r\n });\r\n};\r\n\r\nEnumerable.prototype.force = function () {\r\n var enumerator = this.getEnumerator();\r\n\r\n try {\r\n while (enumerator.moveNext()) {\r\n }\r\n }\r\n finally {\r\n Utils.dispose(enumerator);\r\n }\r\n};\r\n\r\n/* Functional Methods */\r\n\r\nEnumerable.prototype.letBind = function (func) {\r\n func = Utils.createLambda(func);\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n\r\n return new IEnumerator(\r\n function () {\r\n enumerator = Enumerable.from(func(source)).getEnumerator();\r\n },\r\n function () {\r\n return (enumerator.moveNext())\r\n ? this.yieldReturn(enumerator.current())\r\n : false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\nEnumerable.prototype.share = function () {\r\n var source = this;\r\n var sharedEnumerator;\r\n var disposed = false;\r\n\r\n return new DisposableEnumerable(function () {\r\n return new IEnumerator(\r\n function () {\r\n if (sharedEnumerator == null) {\r\n sharedEnumerator = source.getEnumerator();\r\n }\r\n },\r\n function () {\r\n if (disposed) throw new Error(\"enumerator is disposed\");\r\n\r\n return (sharedEnumerator.moveNext())\r\n ? this.yieldReturn(sharedEnumerator.current())\r\n : false;\r\n },\r\n Functions.Blank\r\n );\r\n }, function () {\r\n disposed = true;\r\n Utils.dispose(sharedEnumerator);\r\n });\r\n};\r\n\r\nEnumerable.prototype.memoize = function () {\r\n var source = this;\r\n var cache;\r\n var enumerator;\r\n var disposed = false;\r\n\r\n return new DisposableEnumerable(function () {\r\n var index = -1;\r\n\r\n return new IEnumerator(\r\n function () {\r\n if (enumerator == null) {\r\n enumerator = source.getEnumerator();\r\n cache = [];\r\n }\r\n },\r\n function () {\r\n if (disposed) throw new Error(\"enumerator is disposed\");\r\n\r\n index++;\r\n if (cache.length <= index) {\r\n return (enumerator.moveNext())\r\n ? this.yieldReturn(cache[index] = enumerator.current())\r\n : false;\r\n }\r\n\r\n return this.yieldReturn(cache[index]);\r\n },\r\n Functions.Blank\r\n );\r\n }, function () {\r\n disposed = true;\r\n Utils.dispose(enumerator);\r\n cache = null;\r\n });\r\n};\r\n\r\n/* Iterator (ES6 for..of) support */\r\nif (Utils.hasNativeIteratorSupport()) {\r\n Enumerable.prototype[Symbol.iterator] = function () {\r\n return {\r\n enumerator: this.getEnumerator(),\r\n next: function () {\r\n if (this.enumerator.moveNext()) {\r\n return {\r\n done: false,\r\n value: this.enumerator.current()\r\n };\r\n } else {\r\n return { done: true };\r\n }\r\n }\r\n };\r\n };\r\n}\r\n\r\n/* Error Handling Methods */\r\n\r\nEnumerable.prototype.catchError = function (handler) {\r\n handler = Utils.createLambda(handler);\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n try {\r\n return (enumerator.moveNext())\r\n ? this.yieldReturn(enumerator.current())\r\n : false;\r\n } catch (e) {\r\n handler(e);\r\n return false;\r\n }\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n });\r\n};\r\n\r\nEnumerable.prototype.finallyAction = function (finallyAction) {\r\n finallyAction = Utils.createLambda(finallyAction);\r\n var source = this;\r\n\r\n return new Enumerable(function () {\r\n var enumerator;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n return (enumerator.moveNext())\r\n ? this.yieldReturn(enumerator.current())\r\n : false;\r\n },\r\n function () {\r\n try {\r\n Utils.dispose(enumerator);\r\n } finally {\r\n finallyAction();\r\n }\r\n });\r\n });\r\n};\r\n\r\n/* For Debug Methods */\r\n\r\n// Overload:function()\r\n// Overload:function(selector)\r\nEnumerable.prototype.log = function (selector) {\r\n selector = Utils.createLambda(selector);\r\n\r\n return this.doAction(function (item) {\r\n if (typeof console !== Types.Undefined) {\r\n console.log(selector(item));\r\n }\r\n });\r\n};\r\n\r\n// Overload:function()\r\n// Overload:function(message)\r\n// Overload:function(message,selector)\r\nEnumerable.prototype.trace = function (message, selector) {\r\n if (message == null) message = \"Trace\";\r\n selector = Utils.createLambda(selector);\r\n\r\n return this.doAction(function (item) {\r\n if (typeof console !== Types.Undefined) {\r\n console.log(message, selector(item));\r\n }\r\n });\r\n};\r\n\r\n// private\r\n\r\nvar OrderedEnumerable = function (source, keySelector, comparer, descending, parent) {\r\n this.source = source;\r\n this.keySelector = Utils.createLambda(keySelector);\r\n this.descending = descending;\r\n this.parent = parent;\r\n\r\n if (comparer)\r\n this.comparer = Utils.createLambda(comparer);\r\n};\r\nOrderedEnumerable.prototype = new Enumerable();\r\n\r\nOrderedEnumerable.prototype.createOrderedEnumerable = function (keySelector, comparer, descending) {\r\n return new OrderedEnumerable(this.source, keySelector, comparer, descending, this);\r\n};\r\n\r\nOrderedEnumerable.prototype.thenBy = function (keySelector, comparer) {\r\n return this.createOrderedEnumerable(keySelector, comparer, false);\r\n};\r\n\r\nOrderedEnumerable.prototype.thenByDescending = function (keySelector, comparer) {\r\n return this.createOrderedEnumerable(keySelector, comparer, true);\r\n};\r\n\r\nOrderedEnumerable.prototype.getEnumerator = function () {\r\n var self = this;\r\n var buffer;\r\n var indexes;\r\n var index = 0;\r\n\r\n return new IEnumerator(\r\n function () {\r\n buffer = [];\r\n indexes = [];\r\n self.source.forEach(function (item, index) {\r\n buffer.push(item);\r\n indexes.push(index);\r\n });\r\n var sortContext = SortContext.create(self, null);\r\n sortContext.GenerateKeys(buffer);\r\n\r\n indexes.sort(function (a, b) { return sortContext.compare(a, b); });\r\n },\r\n function () {\r\n return (index < indexes.length)\r\n ? this.yieldReturn(buffer[indexes[index++]])\r\n : false;\r\n },\r\n Functions.Blank\r\n );\r\n};\r\n\r\nvar SortContext = function (keySelector, comparer, descending, child) {\r\n this.keySelector = keySelector;\r\n this.descending = descending;\r\n this.child = child;\r\n this.comparer = comparer;\r\n this.keys = null;\r\n};\r\n\r\nSortContext.create = function (orderedEnumerable, currentContext) {\r\n var context = new SortContext(\r\n orderedEnumerable.keySelector, orderedEnumerable.comparer, orderedEnumerable.descending, currentContext\r\n );\r\n\r\n if (orderedEnumerable.parent != null) return SortContext.create(orderedEnumerable.parent, context);\r\n return context;\r\n};\r\n\r\nSortContext.prototype.GenerateKeys = function (source) {\r\n var len = source.length;\r\n var keySelector = this.keySelector;\r\n var keys = new Array(len);\r\n for (var i = 0; i < len; i++) keys[i] = keySelector(source[i]);\r\n this.keys = keys;\r\n\r\n if (this.child != null) this.child.GenerateKeys(source);\r\n};\r\n\r\nSortContext.prototype.compare = function (index1, index2) {\r\n var comparison = this.comparer ?\r\n this.comparer(this.keys[index1], this.keys[index2]) :\r\n Utils.compare(this.keys[index1], this.keys[index2]);\r\n\r\n if (comparison == 0) {\r\n if (this.child != null) return this.child.compare(index1, index2);\r\n return Utils.compare(index1, index2);\r\n }\r\n\r\n return (this.descending) ? -comparison : comparison;\r\n};\r\n\r\nvar DisposableEnumerable = function (getEnumerator, dispose) {\r\n this.dispose = dispose;\r\n Enumerable.call(this, getEnumerator);\r\n};\r\nDisposableEnumerable.prototype = new Enumerable();\r\n\r\n// optimize array or arraylike object\r\n\r\nvar ArrayEnumerable = function (source) {\r\n this.getSource = function () { return source; };\r\n};\r\nArrayEnumerable.prototype = new Enumerable();\r\n\r\nArrayEnumerable.prototype.any = function (predicate) {\r\n return (predicate == null)\r\n ? (this.getSource().length > 0)\r\n : Enumerable.prototype.any.apply(this, arguments);\r\n};\r\n\r\nArrayEnumerable.prototype.count = function (predicate) {\r\n return (predicate == null)\r\n ? this.getSource().length\r\n : Enumerable.prototype.count.apply(this, arguments);\r\n};\r\n\r\nArrayEnumerable.prototype.elementAt = function (index) {\r\n var source = this.getSource();\r\n return (0 <= index && index < source.length)\r\n ? source[index]\r\n : Enumerable.prototype.elementAt.apply(this, arguments);\r\n};\r\n\r\nArrayEnumerable.prototype.elementAtOrDefault = function (index, defaultValue) {\r\n if (defaultValue === undefined) defaultValue = null;\r\n var source = this.getSource();\r\n return (0 <= index && index < source.length)\r\n ? source[index]\r\n : defaultValue;\r\n};\r\n\r\nArrayEnumerable.prototype.first = function (predicate) {\r\n var source = this.getSource();\r\n return (predicate == null && source.length > 0)\r\n ? source[0]\r\n : Enumerable.prototype.first.apply(this, arguments);\r\n};\r\n\r\nArrayEnumerable.prototype.firstOrDefault = function (predicate, defaultValue) {\r\n if (predicate !== undefined) {\r\n return Enumerable.prototype.firstOrDefault.apply(this, arguments);\r\n }\r\n defaultValue = predicate;\r\n\r\n var source = this.getSource();\r\n return source.length > 0 ? source[0] : defaultValue;\r\n};\r\n\r\nArrayEnumerable.prototype.last = function (predicate) {\r\n var source = this.getSource();\r\n return (predicate == null && source.length > 0)\r\n ? source[source.length - 1]\r\n : Enumerable.prototype.last.apply(this, arguments);\r\n};\r\n\r\nArrayEnumerable.prototype.lastOrDefault = function (predicate, defaultValue) {\r\n if (predicate !== undefined) {\r\n return Enumerable.prototype.lastOrDefault.apply(this, arguments);\r\n }\r\n defaultValue = predicate;\r\n\r\n var source = this.getSource();\r\n return source.length > 0 ? source[source.length - 1] : defaultValue;\r\n};\r\n\r\nArrayEnumerable.prototype.skip = function (count) {\r\n var source = this.getSource();\r\n\r\n return new Enumerable(function () {\r\n var index;\r\n\r\n return new IEnumerator(\r\n function () { index = (count < 0) ? 0 : count; },\r\n function () {\r\n return (index < source.length)\r\n ? this.yieldReturn(source[index++])\r\n : false;\r\n },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\nArrayEnumerable.prototype.takeExceptLast = function (count) {\r\n if (count == null) count = 1;\r\n return this.take(this.getSource().length - count);\r\n};\r\n\r\nArrayEnumerable.prototype.takeFromLast = function (count) {\r\n return this.skip(this.getSource().length - count);\r\n};\r\n\r\nArrayEnumerable.prototype.reverse = function () {\r\n var source = this.getSource();\r\n\r\n return new Enumerable(function () {\r\n var index;\r\n\r\n return new IEnumerator(\r\n function () {\r\n index = source.length;\r\n },\r\n function () {\r\n return (index > 0)\r\n ? this.yieldReturn(source[--index])\r\n : false;\r\n },\r\n Functions.Blank);\r\n });\r\n};\r\n\r\nArrayEnumerable.prototype.sequenceEqual = function (second, compareSelector) {\r\n if ((second instanceof ArrayEnumerable || second instanceof Array)\r\n && compareSelector == null\r\n && Enumerable.from(second).count() != this.count()) {\r\n return false;\r\n }\r\n\r\n return Enumerable.prototype.sequenceEqual.apply(this, arguments);\r\n};\r\n\r\nArrayEnumerable.prototype.toJoinedString = function (separator, selector) {\r\n var source = this.getSource();\r\n if (selector != null || !(source instanceof Array)) {\r\n return Enumerable.prototype.toJoinedString.apply(this, arguments);\r\n }\r\n\r\n if (separator == null) separator = \"\";\r\n return source.join(separator);\r\n};\r\n\r\nArrayEnumerable.prototype.getEnumerator = function () {\r\n var source = this.getSource();\r\n var index = -1;\r\n\r\n // fast and simple enumerator\r\n return {\r\n current: function () { return source[index]; },\r\n moveNext: function () {\r\n return ++index < source.length;\r\n },\r\n dispose: Functions.Blank\r\n };\r\n};\r\n\r\n// optimization for multiple where and multiple select and whereselect\r\n\r\nvar WhereEnumerable = function (source, predicate) {\r\n this.prevSource = source;\r\n this.prevPredicate = predicate; // predicate.length always <= 1\r\n};\r\nWhereEnumerable.prototype = new Enumerable();\r\n\r\nWhereEnumerable.prototype.where = function (predicate) {\r\n predicate = Utils.createLambda(predicate);\r\n\r\n if (predicate.length <= 1) {\r\n var prevPredicate = this.prevPredicate;\r\n var composedPredicate = function (x) { return prevPredicate(x) && predicate(x); };\r\n return new WhereEnumerable(this.prevSource, composedPredicate);\r\n }\r\n else {\r\n // if predicate use index, can't compose\r\n return Enumerable.prototype.where.call(this, predicate);\r\n }\r\n};\r\n\r\nWhereEnumerable.prototype.select = function (selector) {\r\n selector = Utils.createLambda(selector);\r\n\r\n return (selector.length <= 1)\r\n ? new WhereSelectEnumerable(this.prevSource, this.prevPredicate, selector)\r\n : Enumerable.prototype.select.call(this, selector);\r\n};\r\n\r\nWhereEnumerable.prototype.getEnumerator = function () {\r\n var predicate = this.prevPredicate;\r\n var source = this.prevSource;\r\n var enumerator;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n while (enumerator.moveNext()) {\r\n if (predicate(enumerator.current())) {\r\n return this.yieldReturn(enumerator.current());\r\n }\r\n }\r\n return false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n};\r\n\r\nvar WhereSelectEnumerable = function (source, predicate, selector) {\r\n this.prevSource = source;\r\n this.prevPredicate = predicate; // predicate.length always <= 1 or null\r\n this.prevSelector = selector; // selector.length always <= 1\r\n};\r\nWhereSelectEnumerable.prototype = new Enumerable();\r\n\r\nWhereSelectEnumerable.prototype.where = function (predicate) {\r\n predicate = Utils.createLambda(predicate);\r\n\r\n return (predicate.length <= 1)\r\n ? new WhereEnumerable(this, predicate)\r\n : Enumerable.prototype.where.call(this, predicate);\r\n};\r\n\r\nWhereSelectEnumerable.prototype.select = function (selector) {\r\n selector = Utils.createLambda(selector);\r\n\r\n if (selector.length <= 1) {\r\n var prevSelector = this.prevSelector;\r\n var composedSelector = function (x) { return selector(prevSelector(x)); };\r\n return new WhereSelectEnumerable(this.prevSource, this.prevPredicate, composedSelector);\r\n }\r\n else {\r\n // if selector use index, can't compose\r\n return Enumerable.prototype.select.call(this, selector);\r\n }\r\n};\r\n\r\nWhereSelectEnumerable.prototype.getEnumerator = function () {\r\n var predicate = this.prevPredicate;\r\n var selector = this.prevSelector;\r\n var source = this.prevSource;\r\n var enumerator;\r\n\r\n return new IEnumerator(\r\n function () { enumerator = source.getEnumerator(); },\r\n function () {\r\n while (enumerator.moveNext()) {\r\n if (predicate == null || predicate(enumerator.current())) {\r\n return this.yieldReturn(selector(enumerator.current()));\r\n }\r\n }\r\n return false;\r\n },\r\n function () { Utils.dispose(enumerator); });\r\n};\r\n\r\n// Collections\r\n\r\nvar Dictionary = (function () {\r\n // static utility methods\r\n var callHasOwnProperty = function (target, key) {\r\n return Object.prototype.hasOwnProperty.call(target, key);\r\n };\r\n\r\n var computeHashCode = function (obj) {\r\n if (obj === null) return \"null\";\r\n if (obj === undefined) return \"undefined\";\r\n\r\n return (typeof obj.toString === Types.Function)\r\n ? obj.toString()\r\n : Object.prototype.toString.call(obj);\r\n };\r\n\r\n // LinkedList for Dictionary\r\n var HashEntry = function (key, value) {\r\n this.key = key;\r\n this.value = value;\r\n this.prev = null;\r\n this.next = null;\r\n };\r\n\r\n var EntryList = function () {\r\n this.first = null;\r\n this.last = null;\r\n };\r\n EntryList.prototype =\r\n {\r\n addLast: function (entry) {\r\n if (this.last != null) {\r\n this.last.next = entry;\r\n entry.prev = this.last;\r\n this.last = entry;\r\n } else this.first = this.last = entry;\r\n },\r\n\r\n replace: function (entry, newEntry) {\r\n if (entry.prev != null) {\r\n entry.prev.next = newEntry;\r\n newEntry.prev = entry.prev;\r\n } else this.first = newEntry;\r\n\r\n if (entry.next != null) {\r\n entry.next.prev = newEntry;\r\n newEntry.next = entry.next;\r\n } else this.last = newEntry;\r\n\r\n },\r\n\r\n remove: function (entry) {\r\n if (entry.prev != null) entry.prev.next = entry.next;\r\n else this.first = entry.next;\r\n\r\n if (entry.next != null) entry.next.prev = entry.prev;\r\n else this.last = entry.prev;\r\n }\r\n };\r\n\r\n // Overload:function()\r\n // Overload:function(compareSelector)\r\n var Dictionary = function (compareSelector) {\r\n this.countField = 0;\r\n this.entryList = new EntryList();\r\n this.buckets = {}; // as Dictionary>\r\n this.compareSelector = (compareSelector == null) ? Functions.Identity : compareSelector;\r\n };\r\n Dictionary.prototype =\r\n {\r\n add: function (key, value) {\r\n var compareKey = this.compareSelector(key);\r\n var hash = computeHashCode(compareKey);\r\n var entry = new HashEntry(key, value);\r\n if (callHasOwnProperty(this.buckets, hash)) {\r\n var array = this.buckets[hash];\r\n for (var i = 0; i < array.length; i++) {\r\n if (this.compareSelector(array[i].key) === compareKey) {\r\n this.entryList.replace(array[i], entry);\r\n array[i] = entry;\r\n return;\r\n }\r\n }\r\n array.push(entry);\r\n } else {\r\n this.buckets[hash] = [entry];\r\n }\r\n this.countField++;\r\n this.entryList.addLast(entry);\r\n },\r\n\r\n get: function (key) {\r\n var compareKey = this.compareSelector(key);\r\n var hash = computeHashCode(compareKey);\r\n if (!callHasOwnProperty(this.buckets, hash)) return undefined;\r\n\r\n var array = this.buckets[hash];\r\n for (var i = 0; i < array.length; i++) {\r\n var entry = array[i];\r\n if (this.compareSelector(entry.key) === compareKey) return entry.value;\r\n }\r\n return undefined;\r\n },\r\n\r\n set: function (key, value) {\r\n var compareKey = this.compareSelector(key);\r\n var hash = computeHashCode(compareKey);\r\n if (callHasOwnProperty(this.buckets, hash)) {\r\n var array = this.buckets[hash];\r\n for (var i = 0; i < array.length; i++) {\r\n if (this.compareSelector(array[i].key) === compareKey) {\r\n var newEntry = new HashEntry(key, value);\r\n this.entryList.replace(array[i], newEntry);\r\n array[i] = newEntry;\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n },\r\n\r\n contains: function (key) {\r\n var compareKey = this.compareSelector(key);\r\n var hash = computeHashCode(compareKey);\r\n if (!callHasOwnProperty(this.buckets, hash)) return false;\r\n\r\n var array = this.buckets[hash];\r\n for (var i = 0; i < array.length; i++) {\r\n if (this.compareSelector(array[i].key) === compareKey) return true;\r\n }\r\n return false;\r\n },\r\n\r\n clear: function () {\r\n this.countField = 0;\r\n this.buckets = {};\r\n this.entryList = new EntryList();\r\n },\r\n\r\n remove: function (key) {\r\n var compareKey = this.compareSelector(key);\r\n var hash = computeHashCode(compareKey);\r\n if (!callHasOwnProperty(this.buckets, hash)) return;\r\n\r\n var array = this.buckets[hash];\r\n for (var i = 0; i < array.length; i++) {\r\n if (this.compareSelector(array[i].key) === compareKey) {\r\n this.entryList.remove(array[i]);\r\n array.splice(i, 1);\r\n if (array.length == 0) delete this.buckets[hash];\r\n this.countField--;\r\n return;\r\n }\r\n }\r\n },\r\n\r\n count: function () {\r\n return this.countField;\r\n },\r\n\r\n toEnumerable: function () {\r\n var self = this;\r\n return new Enumerable(function () {\r\n var currentEntry;\r\n\r\n return new IEnumerator(\r\n function () { currentEntry = self.entryList.first; },\r\n function () {\r\n if (currentEntry != null) {\r\n var result = { key: currentEntry.key, value: currentEntry.value };\r\n currentEntry = currentEntry.next;\r\n return this.yieldReturn(result);\r\n }\r\n return false;\r\n },\r\n Functions.Blank);\r\n });\r\n }\r\n };\r\n\r\n return Dictionary;\r\n})();\r\n\r\n// dictionary = Dictionary\r\nvar Lookup = function (dictionary) {\r\n this.count = function () {\r\n return dictionary.count();\r\n };\r\n this.get = function (key) {\r\n return Enumerable.from(dictionary.get(key));\r\n };\r\n this.contains = function (key) {\r\n return dictionary.contains(key);\r\n };\r\n this.toEnumerable = function () {\r\n return dictionary.toEnumerable().select(function (kvp) {\r\n return new Grouping(kvp.key, kvp.value);\r\n });\r\n };\r\n};\r\n\r\nvar Grouping = function (groupKey, elements) {\r\n this.key = function () {\r\n return groupKey;\r\n };\r\n ArrayEnumerable.call(this, elements);\r\n};\r\nGrouping.prototype = new ArrayEnumerable();\r\n\r\nexport default Enumerable;","/**\r\n * 複数タブでの操作を判定します。\r\n * あと勝ちです。\r\n * */\r\nexport module MultiTab {\r\n\r\n\tlet isUsedAlready = false;\r\n\r\n\texport const INTERVAL = 3000;\r\n\tconst TAB_ID = \"POSCA_TAB_ID\"\r\n\r\n\t/**\r\n\t * 複数タブ禁止\r\n\t * @param func OKボタン押下時のファンクション\r\n\t */\r\n\texport function forbiddenMultiTab(func:Function) {\r\n\r\n\t\t// タブ単位\r\n\t\tconst SESSION_TAB_ID = sessionStorage.getItem(TAB_ID);\r\n\r\n\t\t// ブラウザ単位\r\n\t\tconst LOCAL_TAB_ID = localStorage.getItem(TAB_ID);\r\n\r\n\t\tlet newAction = function () {\r\n\t\t\tlet tabid = new Date().getTime().toString();\r\n\t\t\tsessionStorage.setItem(TAB_ID, tabid);\r\n\t\t\tlocalStorage.setItem(TAB_ID, tabid);\r\n\t\t\tisUsedAlready = true;\r\n\t\t}\r\n\r\n\t\tlet oldAction = function () {\r\n\t\t\tfunc();\r\n\t\t}\r\n\r\n\t\tif (SESSION_TAB_ID == null || (SESSION_TAB_ID == LOCAL_TAB_ID && !isUsedAlready)) {\r\n\t\t\t// 初回もしくはタブが開かれた\r\n\t\t\tnewAction();\r\n\t\t} else if (SESSION_TAB_ID == LOCAL_TAB_ID) {\r\n\t\t\t// タブが同じ -> NOP\r\n\t\t} else {\r\n\t\t\t// 別タブ\r\n\t\t\toldAction();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * 古タブチェック\r\n\t * 後勝ち仕様なので古いタブでは通信させない。\r\n\t * */\r\n\texport function isOldTab(): boolean {\r\n\r\n\t\t// タブ単位\r\n\t\tconst SESSION_TAB_ID = sessionStorage.getItem(TAB_ID);\r\n\r\n\t\t// ブラウザ単位\r\n\t\tconst LOCAL_TAB_ID = localStorage.getItem(TAB_ID);\r\n\r\n\t\tlet newAction = function () {\r\n\t\t\tlet tabid = new Date().getTime().toString();\r\n\t\t\tsessionStorage.setItem(TAB_ID, tabid);\r\n\t\t\tlocalStorage.setItem(TAB_ID, tabid);\r\n\t\t\tisUsedAlready = true;\r\n\t\t}\r\n\r\n\t\tlet rt = false;\r\n\t\tif (SESSION_TAB_ID == null || (SESSION_TAB_ID == LOCAL_TAB_ID && !isUsedAlready)) {\r\n\t\t\t// 初回もしくはタブが開かれた\r\n\t\t\tnewAction();\r\n\t\t\trt = false;\r\n\t\t} else if (SESSION_TAB_ID == LOCAL_TAB_ID) {\r\n\t\t\t// タブが同じ -> NOP\r\n\t\t\trt = false;\r\n\t\t} else {\r\n\t\t\t// 別タブ\r\n\t\t\trt = true;\r\n\t\t}\r\n\r\n\t\treturn rt;\r\n\r\n\t}\r\n}","/* ============================================================\r\n * 定数\r\n * ============================================================ */\r\n\r\n// --------------------------------------\r\n// 端末モード\r\n// --------------------------------------\r\n/** PC */\r\nexport const CLIENT_PC = \"PC\";\r\n/** スマホ */\r\nexport const CLIENT_SP = \"SP\";\r\n\r\n// --------------------------------------\r\n// 処理モード\r\n// --------------------------------------\r\n/** 画像読込・配置 */\r\nexport const MODE_PHOTO_REGIST = \"PHOTO_RGST\";\r\n/** 画像入替え */\r\nexport const MODE_PHOTO_REPLACE = \"PHOTO_REP\";\r\n/** 画像操作 */\r\nexport const MODE_PHOTO_MANI = \"PHOTO_MANI\";\r\n/** コメント操作 */\r\n//export const MODE_COMMENT_MANI = \"COMMENT_MANI\";\r\n/** あいさつ文操作 */\r\nexport const MODE_GREETING_MANI = \"GREETING_MANI\";\r\n/** 差出人操作 */\r\nexport const MODE_SENDER_MANI = \"SENDER_MANI\";\r\n/** スタンプ操作 */\r\nexport const MODE_STAMP_MANI = \"STAMP_MANI\";\r\n/** マイスタンプ操作 */\r\nexport const MODE_MYSTAMP_MANI = \"MYSTAMP_MANI\";\r\n/** 手書きスタンプ操作 */\r\nexport const MODE_FONTGENIC_MANI = \"FONTGENIC_MANI\";\r\n/** 手書きスタンプ操作 */\r\nexport const CHANGE_BRIGHT = \"CHANGE_BRIGHT_MANI\";\r\n\r\n// --------------------------------------\r\n// レイヤー区分\r\n// --------------------------------------\r\n/** 差出人レイヤー */\r\nexport const LTYPE_SENDER = \"SENDER_LAYER\";\r\n/** 自由文レイヤー */\r\nexport const LTYPE_FREE = \"FREE_LAYER\";\r\n/** スタンプレイヤー */\r\nexport const LTYPE_STAMP = \"STAMP_LAYER\";\r\n/** 白フチレイヤー */\r\nexport const LTYPE_AREA = \"AREA_LAYER\";\r\n/** 画像レイヤー */\r\nexport const LTYPE_PHOTO = \"PHOTO_LAYER\";\r\n/** 背景レイヤー */\r\nexport const LTYPE_BG = \"BG_LAYER\";\r\n/** 再編集可能レイヤーリスト */\r\nexport const LTYPES_CAN_RESELECT = [\r\n\tLTYPE_STAMP, LTYPE_SENDER, LTYPE_FREE, LTYPE_PHOTO\r\n];\r\n\r\n// --------------------------------------\r\n// アイテム区分\r\n// --------------------------------------\r\n/** 画像枠 */\r\nexport const ITYPE_PHOTO_BOX = \"PHOTO_BOX\";\r\n/** 配置画像 */\r\nexport const ITYPE_PHOTO_IMG = \"PHOTO_IMG\";\r\n/** 有効領域画像 */\r\nexport const ITYPE_AREA_IMG = \"AREA_IMG\";\r\n/** スタンプ */\r\nexport const ITYPE_STAMP_IMG = \"STAMP_IMG\";\r\n/** マイスタンプ */\r\nexport const ITYPE_MYSTAMP_IMG = \"MYSTAMP_IMG\";\r\n/** 手書きスタンプ */\r\nexport const ITYPE_FONTGENIC_IMG = \"FONTGENIC_IMG\";\r\n/** コメント */\r\nexport const ITYPE_COMMENT_TXT = \"COMMENT_TXT\";\r\n/** あいさつ文 */\r\nexport const ITYPE_GREETING_TXT = \"GREETING_TXT\";\r\n/** 差出人 */\r\nexport const ITYPE_SENDER_TXT = \"SENDER_TXT\";\r\n\r\n// --------------------------------------\r\n// 仕上がり区分\r\n// --------------------------------------\r\n/** 印刷 */\r\nexport const ATYPE_PRING = \"1\";\r\n/** 銀塩 */\r\nexport const ATYPE_GINEN = \"2\";\r\n\r\n// --------------------------------------\r\n// 拡大・縮小の閾値\r\n// --------------------------------------\r\n/** 写真上限 */\r\nexport const PHOTOP_SCALE_MAX = 1.6;\r\n/** 写真下限(枠ぴったりOFF用) */\r\nexport const PHOTOP_SCALE_MIN = 0.25;\r\n/** 写真枠内下限(枠ぴったりOFF用) */\r\nexport const PHOTOP_INSIDE_MIN = 0.9;\r\n/** スタンプ上限 */\r\nexport const STAMP_SCALE_MAX = 2.0;\r\n/** スタンプ下限 */\r\nexport const STAMP_SCALE_MIN = 0.25;\r\n/** テキスト下限 */\r\nexport const TEXT_SCALE_MIN = 0.7;\r\n\r\n// --------------------------------------\r\n// SPモード用\r\n// --------------------------------------\r\n\r\n/** 画像操作時のパディングサイズ */\r\nexport const SP_PHOTO_MANI_PADDING = 3;\r\n","import * as sonbpIfconst from \"../sonbpIf/base/constants\";\r\n\r\n\r\n//------------------------------------------------------------------------------\r\n// 定数\r\n//------------------------------------------------------------------------------\r\n\r\n/**\r\n * 編集モードの種別\r\n * */\r\nexport const EDIT_MODE_KIND = {\r\n SET_PHOTO: sonbpIfconst.MODE_PHOTO_REGIST, // 画像読込・配置\r\n CHANGE_PHOTO: sonbpIfconst.MODE_PHOTO_REPLACE, // 画像入替(スマホ専用)\r\n MANI_PHOTO: sonbpIfconst.MODE_PHOTO_MANI, // 画像操作\r\n GREETING: sonbpIfconst.MODE_GREETING_MANI, // あいさつ文操作モード\r\n SENDER: sonbpIfconst.MODE_SENDER_MANI, // 差出人操作モード\r\n STAMP: sonbpIfconst.MODE_STAMP_MANI, // スタンプ操作モード\r\n MYSTAMP: sonbpIfconst.MODE_MYSTAMP_MANI, // Myステッカー操作モード\r\n FONTGENIC: sonbpIfconst.MODE_FONTGENIC_MANI, // 手書きスタンプ操作モード\r\n CHANGE_BRIGHT: sonbpIfconst.CHANGE_BRIGHT // 明るさ調整モード\r\n} as const;\r\nexport type editModeKind = typeof EDIT_MODE_KIND[keyof typeof EDIT_MODE_KIND];\r\n\r\n/**\r\n * 組方向\r\n */\r\nexport const KUMIHAN_HV = {\r\n VERTICAL: \"1\", // 縦書き\r\n HORIZONTAL: \"2\", // 横書き\r\n} as const;\r\nexport type kumihanHv = typeof KUMIHAN_HV[keyof typeof KUMIHAN_HV];\r\n\r\n/**\r\n * 編集画面 固有の定数\r\n */\r\nexport module EditConst {\r\n\r\n /**\r\n * 文字レイアウトコンボ 表示名(横)\r\n */\r\n export const CHAR_LAYOUT_Y: string = \"横書き\";\r\n /**\r\n * 文字レイアウトコンボ 表示名(縦)\r\n */\r\n export const CHAR_LAYOUT_T: string = \"縦書き\";\r\n /**\r\n * 文字レイアウトコンボ 表示名(センター横)\r\n */\r\n export const CHAR_LAYOUT_CY: string = \"横書き(中央揃え)\";\r\n\r\n /**\r\n * 行揃えコンボ 表示名(横書き用)\r\n */\r\n export const ALIGN_Y_LEFT: string = \"左揃え\";\r\n export const ALIGN_Y_CENTER: string = \"中央揃え\";\r\n export const ALIGN_Y_RIGHT: string = \"右揃え\";\r\n /**\r\n * 行揃えコンボ 表示名(縦書き用)\r\n */\r\n export const ALIGN_T_TOP: string = \"上揃え\";\r\n export const ALIGN_T_MIDDLE: string = \"中揃え\";\r\n export const ALIGN_T_BOTTOM: string = \"下揃え\";\r\n\r\n /**\r\n * 電話番号コンボ 表示名\r\n */\r\n export const CONTACT_TEL_DISP: string = \"TEL\";\r\n export const CONTACT_CELLULAR_DISP: string = \"携帯\";\r\n export const CONTACT_FAX_DISP: string = \"FAX\";\r\n export const CONTACT_TEL_FAX_DISP: string = \"TEL&FAX\";\r\n /**\r\n * 電話番号コンボ DB値\r\n */\r\n export const CONTACT_TEL_VAL: number = 0;\r\n export const CONTACT_CELLULAR_VAL: number = 1;\r\n export const CONTACT_FAX_VAL: number = 2;\r\n export const CONTACT_TEL_FAX_VAL: number = 3;\r\n /**\r\n * デザインマスタ 機能制限フラグ DB値\r\n */\r\n export const DSN_MST_EDIT_MODE_OFF: string = \"0\";\r\n export const DSN_MST_EDIT_MODE_LIMIT: string = \"1\";\r\n\r\n /**\r\n * 画像補正ボタンのキャプション(PC用)\r\n */\r\n export const PHOTO_CORRECT_CAPTION_PC_OFF: string = \"画像補正しない\";\r\n export const PHOTO_CORRECT_CAPTION_PC_ON: string = \"画像補正する\";\r\n /**\r\n * 画像補正ボタンのキャプション(SP用)\r\n */\r\n export const PHOTO_CORRECT_CAPTION_SP_OFF: string = \"画像補正あり\";\r\n export const PHOTO_CORRECT_CAPTION_SP_ON: string = \"画像補正なし\";\r\n\r\n /**\r\n * 差出人 入力タイプ 個人\r\n */\r\n export const SENDER_TYPE_PORSONAL: string = \"0\";\r\n export const SENDER_TYPE_PORSONAL_STR: string = \"個人用\";\r\n /**\r\n * 差出人 入力タイプ 法人\r\n */\r\n export const SENDER_TYPE_CORP = \"1\";\r\n export const SENDER_TYPE_CORP_STR: string = \"法人用\";\r\n /**\r\n * 差出人 入力タイプ 自由入力\r\n */\r\n export const SENDER_TYPE_FREE: string = \"2\";\r\n export const SENDER_TYPE_FREE_STR: string = \"自由入力\";\r\n\r\n /**\r\n * あいさつ文・差出人 文字サイズ(デフォルト) 縦書き用\r\n */\r\n export const FONT_SIZE_DEFAULT_T: number = 10;\r\n /**\r\n * あいさつ文・差出人 文字サイズ(デフォルト) 横書き用\r\n */\r\n export const FONT_SIZE_DEFAULT_Y: number = 10;\r\n /**\r\n * あいさつ文・差出人 文字サイズ(最小)\r\n */\r\n export const FONT_SIZE_MIN: number = 8;\r\n /**\r\n * あいさつ文・差出人 文字サイズ(最大)\r\n */\r\n export const FONT_SIZE_MAX: number = 24;\r\n /**\r\n * あいさつ文・差出人 文字サイズ(ステップ数)\r\n */\r\n export const FONT_SIZE_STEP: number = 0.5;\r\n\r\n /**\r\n * 印刷タイプ(1:印刷, 2: 銀塩, 0:印刷・銀塩 両方)\r\n */\r\n export const PRINT_TYPE_PRINT: string = \"1\";\r\n export const PRINT_TYPE_GINEN: string = \"2\";\r\n export const PRINT_TYPE_BOTH: string = \"0\";\r\n\r\n /**\r\n * 組方向 DB値 縦\r\n */\r\n export const DIRECTION_T: string = \"0\";\r\n /**\r\n * 組方向 DB値 横\r\n */\r\n export const DIRECTION_Y: string = \"1\";\r\n /**\r\n * 組方向 DB値 横(センター)\r\n */\r\n export const DIRECTION_CY: string = \"2\";\r\n\r\n /**\r\n * 行揃え DB値\r\n */\r\n export const ALIGN_9: string = \"9\";\r\n export const ALIGN_8: string = \"8\";\r\n export const ALIGN_7: string = \"7\";\r\n export const ALIGN_6: string = \"6\";\r\n export const ALIGN_3: string = \"3\";\r\n\r\n /**\r\n * デザイン区分 DB値\r\n * */\r\n export const NENGA: string = \"0\";\r\n export const MOCYU: string = \"1\";\r\n export const KANCYU: string = \"2\";\r\n export const TSUNEN: string = \"3\";\r\n\r\n /*\r\n * あいさつ文デフォルトサイズ(縦組の場合の)幅 (mm)\r\n */\r\n export const GREETING_DEFAULT_WIDTH = 30;\r\n\r\n /*\r\n * あいさつ文デフォルトサイズ(縦組の場合の)高さ (mm)\r\n */\r\n export const GREETING_DEFAULT_HEIGHT = 80;\r\n\r\n /**\r\n * レイアウトコード 法人・縦用\r\n * */\r\n export const LAYOUTCD_HOJIN_T: string = \"T14A\";\r\n /**\r\n * レイアウトコード 法人・横用\r\n * */\r\n export const LAYOUTCD_HOJIN_Y: string = \"Y14A\";\r\n /**\r\n * レイアウトコード 法人・センター横用\r\n * */\r\n export const LAYOUTCD_HOJIN_CY: string = \"C14A\";\r\n /**\r\n * レイアウトコード 個人・縦用\r\n * */\r\n export const LAYOUTCD_PERSONAL_T: string = \"T04A\";\r\n /**\r\n * レイアウトコード 個人・横用\r\n * */\r\n export const LAYOUTCD_PERSONAL_Y: string = \"Y04A\";\r\n /**\r\n * レイアウトコード 個人・センター横用\r\n * */\r\n export const LAYOUTCD_PERSONAL_CY: string = \"C04A\";\r\n\r\n /**\r\n * 次へボタン押下時の確認メッセージのYESボタンキャプション\r\n */\r\n export const NEXTPAGE_CONFIRM_YES: string = \"このまま進む\";\r\n /**\r\n * 次へボタン押下時の確認メッセージのNOボタンキャプション\r\n */\r\n export const NEXTPAGE_CONFIRM_NO: string = \"戻って入力する\";\r\n\r\n /**\r\n * あいさつ文文例集のワイルドカード\r\n */\r\n export const GREETING_SAMPLE_WILDCARD: string = \"●\";\r\n\r\n /**\r\n * あいさつ文文例集のワイルドカード2\r\n */\r\n export const GREETING_SAMPLE_WILDCARD2: string = \"■\";\r\n\r\n /**\r\n * 次ページ名\r\n */\r\n export const NEXTPAGE_NAME: string = \"Preview\";\r\n\r\n /**\r\n * 画像一覧の選択状態判別値(選択)\r\n */\r\n export const IMG_SELECTED: string = \"yes\";\r\n /**\r\n * 画像一覧の選択状態判別値(未選択)\r\n */\r\n export const IMG_NOSELECT: string = \"no\";\r\n\r\n\r\n /**\r\n * ヘッダータイトル(SP用):メイン\r\n */\r\n export const TITLE_MAIN: string = \"はがきの編集\";\r\n /**\r\n * ヘッダータイトル(SP用):画像一覧\r\n */\r\n export const TITLE_IMAGELIST: string = \"画像を読み込む\";\r\n /**\r\n * ヘッダータイトル(SP用):画像操作\r\n */\r\n export const TITLE_MANIPHOTO: string = \"画像調整\";\r\n /**\r\n * ヘッダータイトル(SP用):画像入替\r\n */\r\n export const TITLE_SWAPPHOTO: string = \"画像入替\";\r\n /**\r\n * ヘッダータイトル(SP用):あいさつ文のメイン\r\n */\r\n export const TITLE_GREETING: string = \"あいさつ文位置調整\";\r\n /**\r\n * ヘッダータイトル(SP用):あいさつ文の編集\r\n */\r\n export const TITLE_GREETING_EDIT: string = \"あいさつ文編集\";\r\n /**\r\n * ヘッダータイトル(SP用):差出人のメイン\r\n */\r\n export const TITLE_SENDER: string = \"差出人情報位置調整\";\r\n /**\r\n * ヘッダータイトル(SP用):差出人の編集\r\n */\r\n export const TITLE_SENDER_EDIT: string = \"差出人情報編集\";\r\n /**\r\n * ヘッダータイトル(SP用):スタンプのメイン\r\n */\r\n export const TITLE_STAMP: string = \"スタンプ位置調整\";\r\n /**\r\n * ヘッダータイトル(SP用):スタンプの追加\r\n */\r\n export const TITLE_STAMP_EDIT: string = \"スタンプ編集\";\r\n /**\r\n * ヘッダータイトル(SP用):Myステッカーのメイン\r\n */\r\n export const TITLE_MYSTAMP: string = \"写真スタンプ位置調整\";\r\n /**\r\n * ヘッダータイトル(SP用):Myステッカーの追加\r\n */\r\n export const TITLE_MYSTAMP_EDIT: string = \"写真スタンプ編集\";\r\n /**\r\n * ヘッダータイトル(SP用):手書きスタンプのメイン\r\n */\r\n export const TITLE_TEGAKISTAMP: string = \"手書き位置調整\";\r\n /**\r\n * ヘッダータイトル(SP用):手書きスタンプの追加\r\n */\r\n export const TITLE_TEGAKISTAMP_EDIT: string = \"手書き編集\";\r\n /**\r\n * ヘッダータイトル(SP用):手書きスタンプの色変更\r\n */\r\n export const TITLE_TEGAKISTAMP_COLOR: string = \"スタンプ色変更\";\r\n /**\r\n * ヘッダータイトル(SP用):明るさ調整\r\n */\r\n export const TITLE_CHANGE_BRIGHT: string = \"明るさ変更\";\r\n\r\n /**\r\n * 差出人の編集適用ボタンのキャプション(SP用)\r\n */\r\n export const SENDER_APPLY_BTN_ADD: string = \"追加\";\r\n /**\r\n * 差出人の編集適用ボタンのキャプション(SP用)\r\n */\r\n export const SENDER_APPLY_BTN_UPD: string = \"更新\";\r\n\r\n /**\r\n * 入力欄を隠す/表示するキャプション\r\n */\r\n export const HIDE_AREA_FADE_IN: string = \"入力欄を表示する ↓ ↓ ↓ 入力欄を表示する\";\r\n export const HIDE_AREA_FADE_OUT: string = \"入力欄を隠す ↑ ↑ ↑ 入力欄を隠す\";\r\n\r\n /**\r\n * ガイダンスの表示タイムアウト値(ms)\r\n * */\r\n export const GUIDANCE_SHOW_TIMEOUT: number = 30000;\r\n\r\n /**\r\n * sessionStorage格納用キー:F5リロード判定用\r\n */\r\n export const SESSION_STORAGE_KEY_RELOADED: string = \"EDIT_RELOADED\";\r\n\r\n /*\r\n * セッションストレージ用 戻る判定\r\n */\r\n export const SESSION_STORAGE_FROM_PREV: string = \"POSCA_FROM_PREV\";\r\n\r\n\r\n /**\r\n * エラーメッセージ表示用の項目タイトル\r\n */\r\n export const SENDER_ITEM_NAME_ZIP: string = \"郵便番号\";\r\n export const SENDER_ITEM_NAME_ZIP1: string = \"郵便番号1\";\r\n export const SENDER_ITEM_NAME_ZIP2: string = \"郵便番号2\";\r\n export const SENDER_ITEM_CAPTION_ADDRESS1: string = \"住所1\";\r\n export const SENDER_ITEM_CAPTION_ADDRESS2: string = \"住所2\";\r\n export const SENDER_ITEM_CAPTION_ADDRESS3: string = \"住所3\";\r\n export const SENDER_ITEM_CAPTION_NAME: string = \"お名前\";\r\n export const SENDER_ITEM_CAPTION_LNAME: string = \"姓\";\r\n export const SENDER_ITEM_CAPTION_FNAME: string = \"名\";\r\n export const SENDER_ITEM_CAPTION_LRUBI: string = \"姓ルビ\";\r\n export const SENDER_ITEM_CAPTION_FRUBI: string = \"名ルビ\";\r\n export const SENDER_ITEM_CAPTION_PS: string = \"添書\";\r\n export const SENDER_ITEM_CAPTION_TITLE: string = \"肩書き\";\r\n export const SENDER_ITEM_CAPTION_TEL1: string = \"お電話番号1\";\r\n export const SENDER_ITEM_CAPTION_TEL2: string = \"お電話番号2\";\r\n export const SENDER_ITEM_CAPTION_TEL1_1: string = \"電話番号1-1\";\r\n export const SENDER_ITEM_CAPTION_TEL1_2: string = \"電話番号1-2\";\r\n export const SENDER_ITEM_CAPTION_TEL1_3: string = \"電話番号1-3\";\r\n export const SENDER_ITEM_CAPTION_TEL2_1: string = \"電話番号2-1\";\r\n export const SENDER_ITEM_CAPTION_TEL2_2: string = \"電話番号2-2\";\r\n export const SENDER_ITEM_CAPTION_TEL2_3: string = \"電話番号2-3\";\r\n export const SENDER_ITEM_CAPTION_EMAIL1: string = \"Eメール1\";\r\n export const SENDER_ITEM_CAPTION_EMAIL2: string = \"Eメール2\";\r\n export const SENDER_ITEM_CAPTION_COMPANY: string = \"会社名\";\r\n export const SENDER_ITEM_CAPTION_DEPARTMENT: string = \"部署名\";\r\n\r\n /**\r\n * 差出人:最大行数(差出人 自由入力)\r\n */\r\n /*export const SENDER_MAXROW_FREE: number = 10;*/\r\n /**\r\n * 差出人:最大文字数(差出人 自由入力) 最大文字数(全角400文字、半角800文字)\r\n */\r\n export const SENDER_MAXLEN_FREE: number = 800;\r\n /**\r\n * 差出人:最大文字数(住所1~3)\r\n */\r\n export const SENDER_MAXLEN_JUSHO: number = 80;\r\n /**\r\n * 差出人:最大文字数(姓)\r\n */\r\n export const SENDER_MAXLEN_LASTNAME: number = 26;\r\n /**\r\n * 差出人:最大文字数(名)\r\n */\r\n export const SENDER_MAXLEN_FIRSTNAME: number = 26;\r\n /**\r\n * 差出人:最大文字数(かな)\r\n */\r\n export const SENDER_MAXLEN_RUBI: number = 40;\r\n /**\r\n * 差出人:最大文字数(添え書き)\r\n */\r\n export const SENDER_MAXLEN_PS: number = 40;\r\n /**\r\n * 差出人:最大文字数(会社名)\r\n */\r\n export const SENDER_MAXLEN_COMPANY: number = 64;\r\n /**\r\n * 差出人:最大文字数(部署)\r\n */\r\n export const SENDER_MAXLEN_DEPARTMENT: number = 64;\r\n /**\r\n * 差出人:最大文字数(肩書)\r\n */\r\n export const SENDER_MAXLEN_TITLE: number = 64;\r\n /**\r\n * 差出人:最大文字数(郵便番号(前))\r\n */\r\n export const SENDER_MAXLEN_ZIP1: number = 3;\r\n /**\r\n * 差出人:最大文字数(郵便番号(後))\r\n */\r\n export const SENDER_MAXLEN_ZIP2: number = 4;\r\n /**\r\n * 差出人:最大文字数(電話番号(1))\r\n */\r\n export const SENDER_MAXLEN_TEL1: number = 6;\r\n /**\r\n * 差出人:最大文字数(電話番号(2))\r\n */\r\n export const SENDER_MAXLEN_TEL2: number = 4;\r\n /**\r\n * 差出人:最大文字数(電話番号(3))\r\n */\r\n export const SENDER_MAXLEN_TEL3: number = 4;\r\n /**\r\n * 差出人:最大文字数(E-mail etc...)\r\n */\r\n export const SENDER_MAXLEN_EMAIL: number = 128;\r\n\r\n\r\n /**\r\n * あいさつ文:最大行数\r\n */\r\n /*export const GREETING_MAXROW: number = 10;*/\r\n /**\r\n * あいさつ文:最大文字数(全角400文字、半角800文字)\r\n */\r\n export const GREETING_MAXLEN: number = 800;\r\n\r\n /**\r\n * あいさつ文縦書きの単位変換する\r\n */\r\n export const GREETING_VERT_CONV: number = 1;\r\n\r\n /**\r\n * あいさつ文縦書きの単位変換しない\r\n */\r\n export const GREETING_VERT_NO_CONV: number = 2;\r\n\r\n /**\r\n * キタムラリテーラID\r\n */\r\n export const KITAMURA: string = \"1\";\r\n\r\n /**\r\n * 仕上がり別メッセージ\r\n */\r\n //export const IMAGE_GUIDANCE_MESSAGE_GINEN_: string = \"周囲の赤枠部分は有効保証エリア外となり、\\n製造上の裁断誤差により絵柄が一部カットされる場合があります。\\n赤枠の内側に画像やスタンプ・文字を配置してください。\\nこのメッセージはクリックすると非表示になります。\";\r\n export const IMAGE_GUIDANCE_MESSAGE_GINEN: string = \"周囲の赤枠部分は製造上カットされます。\\n但し、白フチが出ないようにするために、\\n赤枠外周部分まで画像を配置してください。\\nこのメッセージはクリックすると非表示になります。\";\r\n export const IMAGE_GUIDANCE_MESSAGE_INSATSU: string = \"印刷仕上げは周囲に白フチがつきます。\\nこのメッセージはクリックすると非表示になります。\\n \";\r\n}\r\n\r\n","import * as idbEdit from \"../entity/idb/editInfo\";\r\nimport * as idbOrder from \"../entity/idb/orderInfo\";\r\nimport * as es6promise from \"es6-promise\";\r\nimport sparkMd5 from \"spark-md5\";\r\nimport { GetEditInfo, util } from \"..\";\r\nimport { Logger } from \"../util/logger\";\r\n\r\nimport * as edconst from \"./edit.const\";\r\n\r\n\r\n//------------------------------------------------------------------------------\r\n// ユーティリティ\r\n//------------------------------------------------------------------------------\r\n\r\n/**\r\n * 編集画面固有のユーティリティクラス\r\n * */\r\nexport class editUtil {\r\n\r\n /**\r\n * 組方向(DB値)を文字レイアウトに変換\r\n * @param direction\r\n */\r\n static directionToCharlayout(direction: string): string {\r\n\r\n if (direction === edconst.EditConst.DIRECTION_Y) {\r\n // 横\r\n return edconst.EditConst.CHAR_LAYOUT_Y;\r\n }\r\n else if (direction === edconst.EditConst.DIRECTION_CY) {\r\n // センター横\r\n return edconst.EditConst.CHAR_LAYOUT_CY;\r\n }\r\n else {\r\n // 縦\r\n return edconst.EditConst.CHAR_LAYOUT_T;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * 組方向変換(DB -> 組版)\r\n * @param direction :組方向\r\n */\r\n static directionToHv(direction: string): edconst.kumihanHv {\r\n\r\n return (direction === edconst.EditConst.DIRECTION_T) ? edconst.KUMIHAN_HV.VERTICAL : edconst.KUMIHAN_HV.HORIZONTAL;\r\n\r\n }\r\n\r\n\r\n\r\n /**\r\n * 文字レイアウトを組方向(DB値)に変換\r\n * @param direction\r\n */\r\n static charlayoutToDirection(charlayout: string): string {\r\n\r\n if (charlayout === edconst.EditConst.CHAR_LAYOUT_Y) {\r\n // 横\r\n return edconst.EditConst.DIRECTION_Y;\r\n }\r\n else if (charlayout === edconst.EditConst.CHAR_LAYOUT_CY) {\r\n // センター横\r\n return edconst.EditConst.DIRECTION_CY;\r\n }\r\n else {\r\n // 縦\r\n return edconst.EditConst.DIRECTION_T;\r\n }\r\n }\r\n\r\n /**\r\n * 行揃え(DB値)をフロント用の行揃え値に変換\r\n * @param charLayout ;文字レイアウト\r\n * @param align :行揃え\r\n */\r\n static alignToAlignDispVal(charLayout: string, align: string): string {\r\n\r\n let result: string;\r\n\r\n // 行揃え\r\n if (charLayout === edconst.EditConst.CHAR_LAYOUT_T) {\r\n // 縦書きの場合\r\n if (align === \"6\") {\r\n result = edconst.EditConst.ALIGN_T_MIDDLE;\r\n }\r\n else if (align === \"3\") {\r\n result = edconst.EditConst.ALIGN_T_BOTTOM;\r\n }\r\n else {\r\n result = edconst.EditConst.ALIGN_T_TOP;\r\n }\r\n }\r\n else {\r\n // 横書き or 横書き(中央揃え)の場合\r\n if (align === \"8\") {\r\n result = edconst.EditConst.ALIGN_Y_CENTER;\r\n }\r\n else if (align === \"9\") {\r\n result = edconst.EditConst.ALIGN_Y_RIGHT;\r\n }\r\n else {\r\n result = edconst.EditConst.ALIGN_Y_LEFT;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * 揃え位置から9点の変換\r\n * @param hv 縦/横\r\n * @param align 行揃え\r\n */\r\n static align2Pivot(hv: edconst.kumihanHv, align: string): number {\r\n\r\n let pivot: number = 0;\r\n\r\n if (hv === edconst.KUMIHAN_HV.HORIZONTAL) {\r\n // 横書きの場合\r\n if (align === edconst.EditConst.ALIGN_Y_LEFT) {\r\n pivot = 7;\r\n }\r\n else if (align === edconst.EditConst.ALIGN_Y_CENTER) {\r\n pivot = 8;\r\n }\r\n else if (align === edconst.EditConst.ALIGN_Y_RIGHT) {\r\n pivot = 9;\r\n }\r\n }\r\n else {\r\n // 縦書きの場合\r\n if (align === edconst.EditConst.ALIGN_T_BOTTOM) {\r\n pivot = 3;\r\n }\r\n else if (align === edconst.EditConst.ALIGN_T_MIDDLE) {\r\n pivot = 6;\r\n\r\n }\r\n else if (align === edconst.EditConst.ALIGN_T_TOP) {\r\n pivot = 9;\r\n }\r\n }\r\n\r\n return pivot;\r\n }\r\n\r\n /**\r\n * 9点から揃え位置に変換\r\n * @param charLayout\r\n * @param pivot\r\n */\r\n static pivot2Align(charLayout: string, pivot: string): string {\r\n\r\n let align: string = \"\";\r\n\r\n if (charLayout === edconst.EditConst.CHAR_LAYOUT_T) {\r\n // 縦書きの場合\r\n if (pivot === \"3\") {\r\n align = edconst.EditConst.ALIGN_T_BOTTOM;\r\n }\r\n else if (pivot === \"6\") {\r\n align = edconst.EditConst.ALIGN_T_MIDDLE;\r\n\r\n }\r\n else if (pivot === \"9\") {\r\n align = edconst.EditConst.ALIGN_T_TOP;\r\n }\r\n }\r\n else {\r\n // 横書き or 横書き(中央揃え)の場合\r\n if (pivot === \"7\") {\r\n align = edconst.EditConst.ALIGN_Y_LEFT;\r\n }\r\n else if (pivot === \"8\") {\r\n align = edconst.EditConst.ALIGN_Y_CENTER;\r\n }\r\n else if (pivot === \"9\") {\r\n align = edconst.EditConst.ALIGN_Y_RIGHT;\r\n }\r\n }\r\n\r\n return align;\r\n }\r\n\r\n /**\r\n * 行揃え(DB値)をフロント用の行揃え値に変換\r\n * @param tel ;文字レイアウト\r\n */\r\n static telTypeToTelDispVal(telType: number): string {\r\n\r\n let result: string;\r\n\r\n if (telType === edconst.EditConst.CONTACT_CELLULAR_VAL) {\r\n result = edconst.EditConst.CONTACT_CELLULAR_DISP;\r\n }\r\n else if (telType === edconst.EditConst.CONTACT_FAX_VAL) {\r\n result = edconst.EditConst.CONTACT_FAX_DISP;\r\n }\r\n else if (telType === edconst.EditConst.CONTACT_TEL_FAX_VAL) {\r\n result = edconst.EditConst.CONTACT_TEL_FAX_DISP;\r\n }\r\n else {\r\n result = edconst.EditConst.CONTACT_TEL_DISP;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n}\r\n\r\n\r\nexport module editStrage {\r\n\r\n /**\r\n * WebStorageの初期化\r\n * @param leavePhoto :iDBの画像情報を残すか?(遷移元画面がプレビュー画面?)\r\n * @param prePagePreview :遷移元画面=プレビュー画面?\r\n * @param saveAs :保存名(編集情報取得の値)\r\n * @param designNo :デザイン番号(不整合チェック用)\r\n */\r\n export function initStorage(leavePhoto: boolean, prePagePreview: boolean, browserReload: boolean, saveAs: string, dsnNo: string): idbEdit.editInfo {\r\n\r\n let result: idbEdit.editInfo = null;\r\n let setEditInfo: idbEdit.editInfo = new idbEdit.editInfo();\r\n\r\n // 保存名設定\r\n setEditInfo.saveAs = saveAs;\r\n\r\n // デザイン番号の設定\r\n setEditInfo.dsnNo = dsnNo;\r\n\r\n // editinfo取得\r\n const readEditInfo: idbEdit.editInfo = util.lstorage.get(util.lstorage.KEY_EDIT, true);\r\n if (readEditInfo) {\r\n if (!leavePhoto) {\r\n // 画像情報のみ引継ぎ\r\n setEditInfo.photoList = readEditInfo.photoList;\r\n }\r\n if (prePagePreview) {\r\n // あいさつ文情報も引継ぎ\r\n setEditInfo.greetingInfo = readEditInfo.greetingInfo\r\n // スタンプ情報も引継ぎ\r\n setEditInfo.stampInfo = readEditInfo.stampInfo;\r\n // 印刷タイプも引継ぎ\r\n setEditInfo.printType = readEditInfo.printType;\r\n // 枠情報も引継ぎ\r\n setEditInfo.photoUseList = readEditInfo.photoUseList;\r\n }\r\n if (prePagePreview || browserReload) {\r\n // Myステッカー情報引継ぎ\r\n setEditInfo.myStampList = readEditInfo.myStampList;\r\n // 手書きスタンプ情報引継ぎ\r\n setEditInfo.fontgenicList = readEditInfo.fontgenicList;\r\n }\r\n }\r\n else {\r\n Logger.debug(\"editInfo 登録情報なし\");\r\n }\r\n result = setEditInfo;\r\n\r\n // editinfo更新\r\n if (util.lstorage.set(util.lstorage.KEY_EDIT, setEditInfo)) {\r\n // orderinfoは常に削除\r\n util.lstorage.del(util.lstorage.KEY_ORDER);\r\n }\r\n else {\r\n Logger.error(\"editInfo 更新失敗\");\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * WebStorageへの書き込み\r\n * @param editInfo :起動時の内容\r\n * @param setEditInfo :保存内容\r\n */\r\n export function writeStorage(editInfo: GetEditInfo.GetEditInfoResponseEntity, setEditInfo: idbEdit.editInfo): boolean {\r\n\r\n Logger.debug(\"indexedDBへの書き込み 開始\", setEditInfo);\r\n\r\n let result = true;\r\n\r\n // ハガキマスタセット\r\n const hagakiMasterInfo = {\r\n hagakiMasterInfo: editInfo.master.hagaki\r\n }\r\n if (!util.lstorage.set(util.lstorage.KEY_MASTER, hagakiMasterInfo)) {\r\n Logger.error(\"idb 更新失敗 [\" + util.lstorage.KEY_MASTER + \"]\");\r\n result = false;\r\n }\r\n\r\n // OrderInfo\r\n const oi = new idbOrder.orderInfo();\r\n oi.isTrial = editInfo.isTrial;\r\n if (editInfo.isTrial) {\r\n oi.num = 1;\r\n oi.postcardType = \"7\"; // 1枚無料ハガキ\r\n }\r\n if (!util.lstorage.set(util.lstorage.KEY_ORDER, oi)) {\r\n Logger.error(\"idb 更新失敗 [\" + util.lstorage.KEY_ORDER + \"]\");\r\n result = false;\r\n }\r\n\r\n Logger.debug(\"idb editInfo 更新開始\", setEditInfo);\r\n\r\n if (result) {\r\n // 更新\r\n if (util.lstorage.set(util.lstorage.KEY_EDIT, setEditInfo)) {\r\n // 更新成功\r\n result = true;\r\n }\r\n else {\r\n // 更新失敗\r\n Logger.error(\"idb editInfo 更新失敗 [\" + util.lstorage.KEY_EDIT + \"]\");\r\n }\r\n }\r\n\r\n Logger.debug(\"idb editInfo 更新完了 result[\" + result + \"]\");\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * WebStorageへの書き込み(画像情報のみ)\r\n * @param setPhotoList :保存内容\r\n */\r\n export function writeStorageToPhoto(setPhotoList: idbEdit.photo[]): boolean {\r\n\r\n Logger.debug(\"WebStorageへの書き込み(画像情報のみ) 開始\", setPhotoList);\r\n\r\n // editinfo取得\r\n let setEditInfo: idbEdit.editInfo = util.lstorage.get(util.lstorage.KEY_EDIT, true);\r\n if (setEditInfo) {\r\n setEditInfo.photoList = setPhotoList;\r\n }\r\n else {\r\n setEditInfo = new idbEdit.editInfo();\r\n }\r\n\r\n // 更新\r\n if (util.lstorage.set(util.lstorage.KEY_EDIT, setEditInfo)) {\r\n Logger.debug(\"WebStorageへの書き込み(画像情報のみ) 終了\");\r\n return true;\r\n } else {\r\n Logger.error(\"WebStorage 更新失敗 [\" + util.lstorage.KEY_EDIT + \"]\");\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * WebStorageへの書き込み(Myステッカー情報のみ)\r\n * @param setMyStampList :保存内容\r\n */\r\n export function writeStorageToMyStamp(setMyStampList: idbEdit.photo[]): boolean {\r\n\r\n Logger.debug(\"WebStorageへの書き込み(Myステッカー情報のみ) 開始\", setMyStampList);\r\n\r\n // editinfo取得\r\n let setEditInfo: idbEdit.editInfo = util.lstorage.get(util.lstorage.KEY_EDIT, true);\r\n if (setEditInfo) {\r\n setEditInfo.myStampList = setMyStampList;\r\n }\r\n else {\r\n setEditInfo = new idbEdit.editInfo();\r\n }\r\n\r\n // 更新\r\n if (util.lstorage.set(util.lstorage.KEY_EDIT, setEditInfo)) {\r\n Logger.debug(\"WebStorageへの書き込み(Myステッカー情報のみ) 終了\");\r\n return true;\r\n } else {\r\n Logger.error(\"WebStorage 更新失敗 [\" + util.lstorage.KEY_EDIT + \"]\");\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * WebStorageへの書き込み(手書きスタンプ情報のみ)\r\n * @param setTegakiStampList :保存内容\r\n */\r\n export function writeStorageToTegakiStamp(setTegakiStampList: idbEdit.photo[]): boolean {\r\n\r\n Logger.debug(\"WebStorageへの書き込み(手書きスタンプ情報のみ) 開始\", setTegakiStampList);\r\n\r\n // editinfo取得\r\n let setEditInfo: idbEdit.editInfo = util.lstorage.get(util.lstorage.KEY_EDIT, true);\r\n if (setEditInfo) {\r\n setEditInfo.fontgenicList = setTegakiStampList;\r\n }\r\n else {\r\n setEditInfo = new idbEdit.editInfo();\r\n }\r\n\r\n // 更新\r\n if (util.lstorage.set(util.lstorage.KEY_EDIT, setEditInfo)) {\r\n Logger.debug(\"WebStorageへの書き込み(手書きスタンプ情報のみ) 終了\");\r\n return true;\r\n } else {\r\n Logger.error(\"WebStorage 更新失敗 [\" + util.lstorage.KEY_EDIT + \"]\");\r\n return false;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * WebStorageからのEditinfoの読込\r\n */\r\n export function readStorageForEditInfo(): idbEdit.editInfo {\r\n\r\n let result: idbEdit.editInfo = null;\r\n\r\n // editinfo取得\r\n result = util.lstorage.get(util.lstorage.KEY_EDIT, true);\r\n if (result) {\r\n return result;\r\n }\r\n else {\r\n Logger.error(\"idb editInfo 取得失敗 [\" + util.lstorage.KEY_EDIT + \"]\");\r\n return null;\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\n/**\r\n * アップロードファイルをソースにMD5算出\r\n * @param file\r\n */\r\nexport function calcCheckSum(file: File): es6promise.Promise {\r\n\r\n return new es6promise.Promise((resolve, reject) => {\r\n\r\n const spark = new sparkMd5.ArrayBuffer();\r\n const reader: FileReader = new FileReader();\r\n const blobSlice = File.prototype.slice; // || File.prototype.mozSlice || File.prototype.webkitSlice\r\n const chunkSize: number = 2097152; // Read in chunks of 2MB\r\n const chunks: number = Math.ceil(file.size / chunkSize);\r\n let currentChunk: number = 0;\r\n\r\n reader.onload = function (e) {\r\n Logger.debug(\"file[\" + file.name + \"] read chunk nr\", currentChunk + 1, \"of\", chunks);\r\n\r\n spark.append(e.target.result); // Append array buffer\r\n currentChunk++;\r\n\r\n if (currentChunk < chunks) {\r\n loadNext();\r\n } else {\r\n //Logger.debug(\"file[\" + file.name + \"] computed hash trial[\", spark.end() + \"]\"); // Compute hash\r\n const md5: string = spark.end();\r\n Logger.debug(\"file[\" + file.name + \"] computed hash true[\", md5 + \"]\"); // Compute hash\r\n resolve(md5);\r\n }\r\n };\r\n\r\n reader.onerror = function () {\r\n Logger.warn('oops, something went wrong.');\r\n reject();\r\n };\r\n\r\n function loadNext() {\r\n const start: number = currentChunk * chunkSize;\r\n const end: number = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize;\r\n\r\n reader.readAsArrayBuffer(blobSlice.call(file, start, end));\r\n }\r\n\r\n loadNext();\r\n });\r\n}\r\n\r\n/**\r\n * 非同期関数をまとめて実行する非同期関数\r\n * @param promises\r\n */\r\nexport async function asyncWhenApply(promises: any[]) {\r\n var defer = $.Deferred();\r\n\r\n $.when.apply($, promises).then(function () {\r\n\r\n Logger.debug(\"asyncWhenApply arguments[\" + JSON.stringify(arguments) + \"]\");\r\n\r\n defer.resolve(arguments);\r\n }).catch(function () {\r\n Logger.debug(\"asyncWhenApply error arguments[\" + JSON.stringify(arguments) + \"]\");\r\n\r\n defer.reject(arguments);\r\n });\r\n\r\n return defer.promise();\r\n};\r\n\r\n","//------------------------------------------------------------------------------\r\n// マイスタンプ切抜き編集画面(EditMystamp[Pc|Sp].cshtml)との連携用SDK\r\n//------------------------------------------------------------------------------\r\n\r\nlet editmystampSdkCallbackA: any;\r\nlet editmystampSdkCallbackB: any;\r\nlet editmystampSdkIFrame: any;\r\n\r\n/**\r\n * 連携準備\r\n */\r\nexport function editmystampSdkInit(iframeId, cbOK, cbCancel): void {\r\n editmystampSdkIFrame = document.getElementById(iframeId);\r\n editmystampSdkCallbackA = cbOK;\r\n editmystampSdkCallbackB = cbCancel;\r\n}\r\n\r\n/**\r\n * 連携開始\r\n */\r\nexport function editmystampSdkCreate(url: string): void {\r\n editmystampSdkIFrame.setAttribute('src', url);\r\n}\r\n\r\n/**\r\n * コールバック\r\n */\r\nfunction callback(e: any): void {\r\n if (e.data.action === 'EditMystampSaveMessage') {\r\n if (editmystampSdkCallbackA != undefined) {\r\n editmystampSdkCallbackA(e.data.message);\r\n editmystampSdkIFrame.setAttribute('src', '');\r\n }\r\n } else if (e.data.action === 'EditMystampCancelMessage') {\r\n if (editmystampSdkCallbackB != undefined) {\r\n editmystampSdkCallbackB(e.data.message);\r\n editmystampSdkIFrame.setAttribute('src', '');\r\n }\r\n }\r\n}\r\n\r\nwindow.removeEventListener('message', callback);\r\nwindow.addEventListener('message', callback);\r\n","import * as es6promise from \"es6-promise\";\nimport { util, GetEditInfo, SenderInfoDb } from \"../index\";\nimport { Logger } from \"../util/logger\";\n\nimport * as edconst from \"./edit.const\";\nimport * as edtool from \"./edit.tool\";\n\n\n//------------------------------------------------------------------------------\n// エンティティ・クラス\n//------------------------------------------------------------------------------\n\n/**\n * WebAPI[Edit/InitTemp]のレスポンスのdata部\n */\nexport class initTempResponseEntity {\n /**\n * クライアントでのチェック用\n */\n public photoControll: photoControll\n}\n\n/**\n * クライアントでのチェック用\n */\nexport class photoControll {\n\n /**\n * iDBの画像情報を残すか?\n */\n public leavePhoto: boolean;\n /**\n * テンポラリで保持している画像枚数\n */\n public photoNum: number;\n}\n\n/**\n * WebAPI[Edit/UploadImage]のレスポンスのdata部\n */\nexport class UploadImageResponseEntity {\n\n /**\n * ファイル実体\n */\n public fileObject: File;\n /**\n * MD5\n */\n public md5: string;\n /**\n * ファイルID\n */\n public fileId: string;\n /**\n * 実サイズ(px) 幅\n */\n public width: number;\n /**\n * 実サイズ(px) 高さ\n */\n public height: number;\n\n}\n\n/**\n * アップロード画像ファイルクラス\n */\nexport class uploadPhoto {\n\n //--------------------------------------------------------------------------\n // 定数\n //--------------------------------------------------------------------------\n\n //--------------------------------------------------------------------------\n // 変数\n //--------------------------------------------------------------------------\n\n /**\n * イメージアップロード情報テーブルのキー情報\n */\n public fileId: string;\n /**\n * sonbpが使用するファイル識別子(暗号化)\n */\n public fileKey: string;\n /**\n * ファイル名(オリジナル)\n */\n public fileName: string;\n /**\n * 画像サイズ縦(px)\n */\n public height: number;\n /**\n * 画像サイズ横(px)\n */\n public width: number;\n /**\n * 回転角度\n */\n public angle: number;\n /**\n * アップロード日時\n */\n public uploadDate: Date;\n /**\n * 削除日時\n */\n public deleteDate: Date;\n /**\n * 削除フラグ\n */\n public deleteFlg: boolean;\n /**\n * 使用有無\n */\n public isUsed: boolean;\n\n /**\n * 設定有無(空枠判定)\n */\n public isEmpty: boolean;\n\n /**\n * サムネイル取得用URL\n */\n public thumbnailUrl: string;\n /**\n * キー\n */\n public key: string;\n /**\n * 削除指示フラグ\n */\n public reqDelete: boolean;\n\n /**\n * 選択指示フラグ\n * SP専用\n */\n public selected: string;\n\n\n //--------------------------------------------------------------------------\n // コンストラクタ\n //--------------------------------------------------------------------------\n constructor() {\n this.isEmpty = true;\n this.isUsed = false;\n this.deleteFlg = false;\n this.thumbnailUrl = \"/posca/img/sp/common/default/touka.png\";\n this.fileKey = \"\";\n this.reqDelete = false;\n this.selected = edconst.EditConst.IMG_NOSELECT;\n }\n\n\n}\n\n/**\n * 画像枠クラス\n */\nexport class photoFrame {\n\n //--------------------------------------------------------------------------\n // 定数\n //--------------------------------------------------------------------------\n\n //--------------------------------------------------------------------------\n // 変数\n //--------------------------------------------------------------------------\n\n /**\n * 識別子\n */\n public idx: string;\n /**\n * イメージアップロード情報テーブルのキー情報\n */\n public fileId: string;\n /**\n * I2補正した画像が適用されているか\n */\n public useI2: boolean;\n /**\n * 明るさ\n */\n public brightId: number;\n\n //--------------------------------------------------------------------------\n // コンストラクタ\n //--------------------------------------------------------------------------\n constructor() {\n this.idx = \"\";\n this.fileId = \"\";\n this.useI2 = true;\n this.brightId = 0;\n }\n}\n\n/**\n * あいさつ文 トランザクション情報+α\n */\nexport class greetingTranEntityEx extends GetEditInfo.GetEditInfoGreetingTranEntity {\n\n // 選択したフォントマスタ\n public fontMaster: GetEditInfo.GetEditInfoFontEntity;\n // 文字レイアウト\n public charLayout: string;\n // フチ文字にする\n public outlineChar: boolean;\n // 選択した文字色マスタ\n public fontColorMaster: GetEditInfo.GetEditInfoColorEntity;\n // 選択したフチ文字色マスタ\n public outlineFontColorMaster: GetEditInfo.GetEditInfoColorEntity;\n // 行揃え(表示値)\n public alignDispVal: string;\n}\n\n/**\n * 差出人 トランザクション情報+α\n */\nexport class senderTranEntityEx {\n\n // 編集情報取得(WebAPI)で連携される差出人情報本体\n public sender: GetEditInfo.GetEditInfoSenderEntity;\n\n // 選択したフォントマスタ\n public fontMaster: GetEditInfo.GetEditInfoFontEntity;\n // 文字レイアウト\n public charLayout: string;\n // フチ文字にする\n public outlineChar: boolean;\n // 選択した文字色マスタ\n public fontColorMaster: GetEditInfo.GetEditInfoColorEntity;\n // 選択したフチ文字色マスタ\n public outlineFontColorMaster: GetEditInfo.GetEditInfoColorEntity;\n // 行揃え(表示値)\n public alignDispVal: string;\n\n // 電話番号種別(表示値)\n public Tel1DispVal: string;\n public Tel2DispVal: string;\n\n\n static createDef(senderMaster: GetEditInfo.DesignDetailEntity, fontMaster: GetEditInfo.GetEditInfoFontEntity[], colorMaster: GetEditInfo.GetEditInfoColorEntity[]): senderTranEntityEx {\n\n let newItem: senderTranEntityEx = new senderTranEntityEx();\n\n newItem.fontMaster = fontMaster[0];\n newItem.charLayout = edtool.editUtil.directionToCharlayout(senderMaster.direction);\n //newItem.alignDispVal = editUtil.alignToAlignDispVal(newItem.charLayout, senderMaster.align);\n newItem.outlineChar = false;\n newItem.fontColorMaster = colorMaster[0];\n newItem.outlineFontColorMaster = colorMaster[0];\n newItem.Tel1DispVal = edconst.EditConst.CONTACT_TEL_DISP;\n newItem.Tel2DispVal = edconst.EditConst.CONTACT_TEL_DISP;\n\n newItem.sender = new GetEditInfo.GetEditInfoSenderEntity();\n\n newItem.sender.type = \"\";\n newItem.sender.font = \"\";\n newItem.sender.size = 0;\n newItem.sender.senderInfo = new SenderInfoDb.SenderInfoDbEntity();\n newItem.sender.senderInfo.addresses = [];\n newItem.sender.senderInfo.corps = [];\n newItem.sender.senderInfo.names = [];\n newItem.sender.senderInfo.emails = [];\n newItem.sender.senderInfo.free = \"\"\n newItem.sender.senderInfo.staff = \"\"\n newItem.sender.senderInfo.isHojin = false;\n\n let defAddress: SenderInfoDb.SenderInfoAddressDbEntity = new SenderInfoDb.SenderInfoAddressDbEntity();\n defAddress.topstr = \"\";\n defAddress.yubin1 = \"\";\n defAddress.yubin2 = \"\";\n defAddress.jusho1 = \"\";\n defAddress.jusho2 = \"\";\n defAddress.jusho3 = \"\";\n defAddress.telType1 = 0;\n defAddress.telTopStr1 = \"\";\n defAddress.telNo1_1 = \"\";\n defAddress.telNo1_2 = \"\";\n defAddress.telNo1_3 = \"\";\n defAddress.telEndStr1 = \"\";\n defAddress.telType2 = 0;\n defAddress.telTopStr2 = \"\";\n defAddress.telNo2_1 = \"\";\n defAddress.telNo2_2 = \"\";\n defAddress.telNo2_3 = \"\";\n defAddress.telEndStr2 = \"\";\n let defCorp: SenderInfoDb.SenderInfoCorpDbEntity = new SenderInfoDb.SenderInfoCorpDbEntity();\n defCorp.maekabu = \"\";\n defCorp.name = \"\";\n defCorp.busyo = \"\";\n let defNames: SenderInfoDb.SenderInfoNameDbEntity = new SenderInfoDb.SenderInfoNameDbEntity();\n defNames.title = \"\";\n defNames.firstName = \"\";\n defNames.firstRubi = \"\";\n defNames.lastName = \"\";\n defNames.lastRubi = \"\";\n defNames.ps = \"\";\n let defEmail: SenderInfoDb.SenderInfoEmailDbEntity = new SenderInfoDb.SenderInfoEmailDbEntity();\n defEmail.topstr = \"\";\n defEmail.type = 0;\n defEmail.address = \"\";\n defEmail.endstr = \"\";\n\n newItem.sender.senderInfo.addresses.push(defAddress);\n newItem.sender.senderInfo.addresses.push(defAddress);\n newItem.sender.senderInfo.corps.push(defCorp);\n newItem.sender.senderInfo.names.push(defNames);\n newItem.sender.senderInfo.names.push(defNames);\n newItem.sender.senderInfo.names.push(defNames);\n newItem.sender.senderInfo.names.push(defNames);\n newItem.sender.senderInfo.names.push(defNames);\n newItem.sender.senderInfo.names.push(defNames);\n newItem.sender.senderInfo.emails.push(defEmail);\n newItem.sender.senderInfo.emails.push(defEmail);\n\n return newItem;\n }\n\n}\n\n\n// #region ■Kumihan\n\n/**\n * 組版の担当クラス\n */\nexport class kumihanContoroller {\n\n //--------------------------------------------------------------------------\n // 定数\n //--------------------------------------------------------------------------\n /**\n * あいさつ文生成(WebAPI)呼び出しURL\n */\n private readonly WEBAPI_URL_GREETING: string = \"Typeset/KumihanGreeting\";\n\n /**\n * 差出人生成(WebAPI)呼び出しURL\n */\n private readonly WEBAPI_URL_SENDER: string = \"Typeset/KumihanSender\";\n\n\n //--------------------------------------------------------------------------\n // 変数\n //--------------------------------------------------------------------------\n\n /**\n * 組版サービスURL\n */\n private kumihanUrl: string;\n\n //--------------------------------------------------------------------------\n // プロパティ\n //--------------------------------------------------------------------------\n\n //--------------------------------------------------------------------------\n // コンストラクタ\n //--------------------------------------------------------------------------\n /**\n * コンストラクタ\n * */\n constructor(kumihanUrl: string) {\n this.kumihanUrl = kumihanUrl\n }\n\n //--------------------------------------------------------------------------\n // メソッド\n //--------------------------------------------------------------------------\n\n /**\n * あいさつ文 組版API 実行\n * @param inputParam 入力情報\n */\n public async doKumihanGreeting(inputParam: kumihanGreetingRequestParam): es6promise.Promise {\n\n let result: kumihanResponseParam = null;\n\n Logger.debug(\"あいさつ文 組版実行準備 [\" + JSON.stringify(inputParam) + \"]\");\n\n // 入力パラメータ\n const param = {\n session: inputParam.session,\n params: {\n hv: inputParam.hv.valueOf(),\n msize: inputParam.msize,\n pivot: inputParam.pivot,\n // 組版用の縦横で組む\n width: inputParam.widthKumi,\n height: inputParam.heightKumi,\n ftype: inputParam.ftype,\n color1: inputParam.color1,\n color2: inputParam.color2,\n vertGreetConvType: inputParam.vertGreetConvType\n },\n payload: inputParam.payload\n };\n\n Logger.log(\"あいさつ文 組版実行 [\" + JSON.stringify(param) + \"]\");\n\n await util.ajax.post(this.kumihanUrl + this.WEBAPI_URL_GREETING, JSON.stringify(param)).then((resData: kumihanResponseParam) => {\n\n Logger.debug(\"あいさつ文 組版結果OK [\" + JSON.stringify(resData) + \"]\");\n\n result = resData;\n }).catch((e: Error) => {\n\n Logger.error(\"あいさつ文 組版結果NG\", e);\n\n });\n\n return result;\n\n }\n\n /**\n * 差出人 組版API 実行\n * @param inputParam 入力情報\n */\n public async doKumihanSender(inputParam: kumihanSenderRequestParam): es6promise.Promise {\n\n let result: kumihanResponseParam = null;\n\n Logger.debug(\"差出人 組版実行準備 [\" + JSON.stringify(inputParam) + \"]\");\n\n // 入力パラメータ\n const param = {\n session: inputParam.session,\n params: {\n layout_cd: inputParam.layout_cd,\n hv: inputParam.hv.valueOf(),\n msize: inputParam.msize,\n pivot: inputParam.pivot,\n width: inputParam.width,\n height: inputParam.height,\n ftype: inputParam.ftype,\n color1: inputParam.color1,\n color2: inputParam.color2\n },\n payload: {\n adr1_topstr: inputParam.adr1_topstr,\n adr1_post1: inputParam.adr1_post1,\n adr1_post2: inputParam.adr1_post2,\n adr1_adr1: inputParam.adr1_adr1,\n adr1_adr2: inputParam.adr1_adr2,\n adr1_adr3: inputParam.adr1_adr3,\n adr1_teltype1: inputParam.adr1_teltype1,\n adr1_teltopstr1: inputParam.adr1_teltopstr1,\n adr1_telno1: inputParam.adr1_telno1,\n adr1_telno11: inputParam.adr1_telno11,\n adr1_telno12: inputParam.adr1_telno12,\n adr1_telno13: inputParam.adr1_telno13,\n adr1_telendstr1: inputParam.adr1_telendstr1,\n adr1_teltype2: inputParam.adr1_teltype2,\n adr1_teltopstr2: inputParam.adr1_teltopstr2,\n adr1_telno2: inputParam.adr1_telno2,\n adr1_telno21: inputParam.adr1_telno21,\n adr1_telno22: inputParam.adr1_telno22,\n adr1_telno23: inputParam.adr1_telno23,\n adr1_telendstr2: inputParam.adr1_telendstr2,\n adr1_teltype3: inputParam.adr1_teltype3,\n adr1_teltopstr3: inputParam.adr1_teltopstr3,\n adr1_telno3: inputParam.adr1_telno3,\n adr1_telno31: inputParam.adr1_telno31,\n adr1_telno32: inputParam.adr1_telno32,\n adr1_telno33: inputParam.adr1_telno33,\n adr1_telendstr3: inputParam.adr1_telendstr3,\n corp1_maekabu: inputParam.corp1_maekabu,\n corp1_name: inputParam.corp1_name,\n corp1_busyo: inputParam.corp1_busyo,\n\n // 【注意】組版側は\n // fname→姓、fruby→姓ルビ、lname→名、lruby→名ルビ\n // として動作します(英語の意味とは逆)\n name1_title: inputParam.name1_title,\n name1_fname: inputParam.name1_lname,\n name1_lname: inputParam.name1_fname,\n name1_ps: inputParam.name1_ps,\n name1_fruby: inputParam.name1_lruby,\n name1_lruby: inputParam.name1_fruby,\n\n name2_title: inputParam.name2_title,\n name2_fname: inputParam.name2_lname,\n name2_lname: inputParam.name2_fname,\n name2_ps: inputParam.name2_ps,\n name2_fruby: inputParam.name2_lruby,\n name2_lruby: inputParam.name2_fruby,\n\n name3_title: inputParam.name3_title,\n name3_fname: inputParam.name3_lname,\n name3_lname: inputParam.name3_fname,\n name3_ps: inputParam.name3_ps,\n name3_fruby: inputParam.name3_lruby,\n name3_lruby: inputParam.name3_fruby,\n\n name4_title: inputParam.name4_title,\n name4_fname: inputParam.name4_lname,\n name4_lname: inputParam.name4_fname,\n name4_ps: inputParam.name4_ps,\n name4_fruby: inputParam.name4_lruby,\n name4_lruby: inputParam.name4_fruby,\n\n name5_title: inputParam.name5_title,\n name5_fname: inputParam.name5_lname,\n name5_lname: inputParam.name5_fname,\n name5_ps: inputParam.name5_ps,\n name5_fruby: inputParam.name5_lruby,\n name5_lruby: inputParam.name5_fruby,\n\n name6_title: inputParam.name6_title,\n name6_fname: inputParam.name6_lname,\n name6_lname: inputParam.name6_fname,\n name6_ps: inputParam.name6_ps,\n name6_fruby: inputParam.name6_lruby,\n name6_lruby: inputParam.name6_fruby,\n\n eh1_topstr: inputParam.eh1_topstr,\n eh1_mailtype: inputParam.eh1_mailtype,\n eh1_adr: inputParam.eh1_adr,\n eh1_endstr: inputParam.eh1_endstr,\n\n eh2_topstr: inputParam.eh2_topstr,\n eh2_mailtype: inputParam.eh2_mailtype,\n eh2_adr: inputParam.eh2_adr,\n eh2_endstr: inputParam.eh2_endstr,\n\n staff: inputParam.staff,\n\n\n }\n };\n\n Logger.log(\"差出人 組版実行 [\" + JSON.stringify(param) + \"]\");\n\n await util.ajax.post(this.kumihanUrl + this.WEBAPI_URL_SENDER, JSON.stringify(param)).then((resData: kumihanResponseParam) => {\n\n Logger.debug(\"差出人 組版結果OK [\" + JSON.stringify(resData) + \"]\");\n\n result = resData;\n }).catch((e: Error) => {\n\n Logger.error(\"差出人 組版結果NG\", e);\n\n });\n\n return result;\n\n }\n\n //--------------------------------------------------------------------------\n // イベント\n //--------------------------------------------------------------------------\n\n}\n\n/**\n * 組版API リクエストパラメータ(共通部)\n */\nexport class kumihanRequestParam {\n\n //--------------------------------------------------------------------------\n // 定数\n //--------------------------------------------------------------------------\n\n\n //--------------------------------------------------------------------------\n // 変数\n //--------------------------------------------------------------------------\n\n /**\n * 組版トークン\n */\n public session: string;\n\n /**\n * 組方向\n */\n public hv: edconst.kumihanHv;\n\n /**\n * 文字サイズ(pt)\n */\n public msize: number;\n\n /**\n * 原点\n */\n public pivot: number;\n\n /**\n * デザインマスタの幅\n */\n public width: number;\n\n /**\n * デザインマスタの高さ\n */\n public height: number;\n\n /**\n * 組版の幅\n */\n public widthKumi: number;\n\n /**\n * 組版の高さ\n */\n public heightKumi: number;\n\n\n /**\n * フォント名\n */\n public ftype: string;\n\n /**\n * 文字色\n */\n public color1: string;\n\n /**\n * フチ文字色\n */\n public color2: string;\n\n /**\n * 縦組時単位変換するか?\n * /// 1: 123 → 百二十三 的な変換\n * /// 2: 単純変換 123 → 一二三 てきな変換\n * デフォルト変換しない。\n * */\n public vertGreetConvType: number = edconst.EditConst.GREETING_VERT_CONV;\n\n //--------------------------------------------------------------------------\n // プロパティ\n //--------------------------------------------------------------------------\n\n\n //--------------------------------------------------------------------------\n // コンストラクタ\n //--------------------------------------------------------------------------\n /**\n * コンストラクタ\n * */\n constructor() {\n }\n\n //--------------------------------------------------------------------------\n // メソッド\n //--------------------------------------------------------------------------\n\n //--------------------------------------------------------------------------\n // イベント\n //--------------------------------------------------------------------------\n\n}\n\n/**\n * 組版API レスポンスパラメータ\n */\nexport class kumihanResponseParam {\n\n //--------------------------------------------------------------------------\n // 定数\n //--------------------------------------------------------------------------\n\n\n //--------------------------------------------------------------------------\n // 変数\n //--------------------------------------------------------------------------\n\n /**\n * 組版結果\n */\n public json: string;\n\n /**\n * 組版結果\n */\n public templid: string;\n\n\n //--------------------------------------------------------------------------\n // プロパティ\n //--------------------------------------------------------------------------\n\n //--------------------------------------------------------------------------\n // コンストラクタ\n //--------------------------------------------------------------------------\n /**\n * コンストラクタ\n * */\n constructor() {\n }\n\n //--------------------------------------------------------------------------\n // メソッド\n //--------------------------------------------------------------------------\n\n //--------------------------------------------------------------------------\n // イベント\n //--------------------------------------------------------------------------\n\n}\n\n\n/**\n * あいさつ文組版API リクエストパラメータ\n */\nexport class kumihanGreetingRequestParam extends kumihanRequestParam {\n\n //--------------------------------------------------------------------------\n // 定数\n //--------------------------------------------------------------------------\n\n\n //--------------------------------------------------------------------------\n // 変数\n //--------------------------------------------------------------------------\n\n /**\n * 文章\n */\n public payload: string[];\n\n\n //--------------------------------------------------------------------------\n // プロパティ\n //--------------------------------------------------------------------------\n\n\n //--------------------------------------------------------------------------\n // コンストラクタ\n //--------------------------------------------------------------------------\n\n //--------------------------------------------------------------------------\n // メソッド\n //--------------------------------------------------------------------------\n\n //--------------------------------------------------------------------------\n // イベント\n //--------------------------------------------------------------------------\n\n}\n\n/**\n * 差出人 組版API リクエストパラメータ\n */\nexport class kumihanSenderRequestParam extends kumihanRequestParam {\n\n //--------------------------------------------------------------------------\n // 定数\n //--------------------------------------------------------------------------\n\n\n //--------------------------------------------------------------------------\n // 変数\n //--------------------------------------------------------------------------\n\n /**\n * レイアウト記号\n */\n public layout_cd: string;\n\n /**\n * 住所頭書き\n */\n public adr1_topstr: string;\n\n /**\n * 郵便番号1\n */\n public adr1_post1: string;\n\n /**\n * 郵便番号2\n */\n public adr1_post2: string;\n\n /**\n * 住所1\n */\n public adr1_adr1: string;\n\n /**\n * 住所2\n */\n public adr1_adr2: string;\n\n /**\n * 住所3\n */\n public adr1_adr3: string;\n\n /**\n * 電話番号タイプ1\n */\n public adr1_teltype1: string;\n\n /**\n * 電話番号前文字1\n */\n public adr1_teltopstr1: string;\n\n /**\n * 電話番号1\n */\n public adr1_telno1: string;\n\n /**\n * 電話番号1-1\n */\n public adr1_telno11: string;\n\n /**\n * 電話番号1-2\n */\n public adr1_telno12: string;\n\n /**\n * 電話番号1-3\n */\n public adr1_telno13: string;\n\n /**\n * 電話番号後文字1\n */\n public adr1_telendstr1: string;\n\n /**\n * 電話番号タイプ2\n */\n public adr1_teltype2: string;\n\n /**\n * 電話番号前文字2\n */\n public adr1_teltopstr2: string;\n\n /**\n * 電話番号2\n */\n public adr1_telno2: string;\n\n /**\n * 電話番号2-1\n */\n public adr1_telno21: string;\n\n /**\n * 電話番号2-2\n */\n public adr1_telno22: string;\n\n /**\n * 電話番号2-3\n */\n public adr1_telno23: string;\n\n /**\n * 電話番号後文字2\n */\n public adr1_telendstr2: string;\n\n /**\n * 電話番号タイプ3\n */\n public adr1_teltype3: string;\n\n /**\n * 電話番号前文字3\n */\n public adr1_teltopstr3: string;\n\n /**\n * 電話番号3\n */\n public adr1_telno3: string;\n\n /**\n * 電話番号3-1\n */\n public adr1_telno31: string;\n\n /**\n * 電話番号3-2\n */\n public adr1_telno32: string;\n\n /**\n * 電話番号3-3\n */\n public adr1_telno33: string;\n\n /**\n * 電話番号後文字3\n */\n public adr1_telendstr3: string;\n\n /**\n * 前株\n */\n public corp1_maekabu: string;\n\n /**\n * 会社名\n */\n public corp1_name: string;\n\n /**\n * 部署名\n */\n public corp1_busyo: string;\n\n /**\n * 肩書\n */\n public name1_title: string;\n /**\n * 姓\n */\n public name1_fname: string;\n /**\n * 名\n */\n public name1_lname: string;\n /**\n * 添書き\n */\n public name1_ps: string;\n /**\n * 姓ルビ\n */\n public name1_fruby: string;\n /**\n * 名ルビ\n */\n public name1_lruby: string;\n\n /**\n * 肩書\n */\n public name2_title: string;\n /**\n * 姓\n */\n public name2_fname: string;\n /**\n * 名\n */\n public name2_lname: string;\n /**\n * 添書き\n */\n public name2_ps: string;\n /**\n * 姓ルビ\n */\n public name2_fruby: string;\n /**\n * 名ルビ\n */\n public name2_lruby: string;\n\n /**\n * 肩書\n */\n public name3_title: string;\n /**\n * 姓\n */\n public name3_fname: string;\n /**\n * 名\n */\n public name3_lname: string;\n /**\n * 添書き\n */\n public name3_ps: string;\n /**\n * 姓ルビ\n */\n public name3_fruby: string;\n /**\n * 名ルビ\n */\n public name3_lruby: string;\n\n /**\n * 肩書\n */\n public name4_title: string;\n /**\n * 姓\n */\n public name4_fname: string;\n /**\n * 名\n */\n public name4_lname: string;\n /**\n * 添書き\n */\n public name4_ps: string;\n /**\n * 姓ルビ\n */\n public name4_fruby: string;\n /**\n * 名ルビ\n */\n public name4_lruby: string;\n\n /**\n * 肩書\n */\n public name5_title: string;\n /**\n * 姓\n */\n public name5_fname: string;\n /**\n * 名\n */\n public name5_lname: string;\n /**\n * 添書き\n */\n public name5_ps: string;\n /**\n * 姓ルビ\n */\n public name5_fruby: string;\n /**\n * 名ルビ\n */\n public name5_lruby: string;\n\n /**\n * 肩書\n */\n public name6_title: string;\n /**\n * 姓\n */\n public name6_fname: string;\n /**\n * 名\n */\n public name6_lname: string;\n /**\n * 添書き\n */\n public name6_ps: string;\n /**\n * 姓ルビ\n */\n public name6_fruby: string;\n /**\n * 名ルビ\n */\n public name6_lruby: string;\n\n\n /**\n * 頭書き\n */\n public eh1_topstr: string;\n /**\n * メールタイプ\n */\n public eh1_mailtype: string;\n /**\n * アドレス\n */\n public eh1_adr: string;\n /**\n * 後書き\n */\n public eh1_endstr: string;\n\n /**\n * 頭書き\n */\n public eh2_topstr: string;\n /**\n * メールタイプ\n */\n public eh2_mailtype: string;\n /**\n * アドレス\n */\n public eh2_adr: string;\n /**\n * 後書き\n */\n public eh2_endstr: string;\n\n\n /**\n * スタッフ\n */\n public staff: string;\n\n\n\n //--------------------------------------------------------------------------\n // プロパティ\n //--------------------------------------------------------------------------\n\n\n //--------------------------------------------------------------------------\n // コンストラクタ\n //--------------------------------------------------------------------------\n\n\n //--------------------------------------------------------------------------\n // メソッド\n //--------------------------------------------------------------------------\n\n //--------------------------------------------------------------------------\n // イベント\n //--------------------------------------------------------------------------\n\n}\n\n// #endregion\n\n","import * as sonbpIfconst from \"../sonbpIf/base/constants\";\nimport * as es6promise from \"es6-promise\";\nimport * as idbEdit from \"../entity/idb/editInfo\";\nimport { constDialogMessage, dialogUtil } from \"../util\";\nimport { Logger } from \"../util/logger\";\nimport { cmnPart, GetEditInfo } from \"../entity\";\nimport { util } from \"..\";\n\nimport * as edconst from \"./edit.const\";\nimport * as edentity from \"./edit.entity\";\nimport * as edtool from \"./edit.tool\";\n\n\n//------------------------------------------------------------------------------\n// sonbpIfラッパー\n//------------------------------------------------------------------------------\n\n//import * as SonbpIf from \"SonbpIf\";\n//import * as sonbp from \"sonbp\";\ndeclare var SonbpIf: any;\ndeclare var sonbp: any;\n\n\n/**\n * sonbpIFの担当クラス\n */\nexport class sonbpIFContoroller {\n\n //--------------------------------------------------------------------------\n // 定数\n //--------------------------------------------------------------------------\n /**\n * sonbpのcanvasを配置するdiv要素のid属性値\n */\n private readonly CANVAS_DIV_ID: string = \"box_view\";\n\n /**\n * アイテム移動のデフォルト移動量\n */\n private readonly MOVE_ITEM_AMOUNT_DEFAULT: number = 1;\n\n /**\n * 画像未設定の画像枠のfile_id\n */\n public readonly EMPTY_PHOTOBOX_FILE_ID: string = \"@DUMMY@\";\n\n /**\n * あいさつ文生成のモード(初期配置)\n */\n public readonly GREETING_SET_MODE_NEW: string = \"1\";\n /**\n * あいさつ文生成のモード(既存変更)\n */\n public readonly GREETING_SET_MODE_UPD: string = \"2\";\n\n /*\n * sonbpプレフィックス\n */\n private readonly SONBP_URI_PREFIX: string = \"ffpsc/\";\n\n /*\n * ポスカ仮想ディレクトリ\n */\n private readonly POSCA_VIRTUAL_DIR: string = \"\";\n\n /*\n * Sonbpクライアント種別(PC)\n */\n private readonly SONBP_CLIENT_PC: string = \"PC\";\n\n /*\n * Sonbpクライアント種別(SP)\n */\n private readonly SONBP_CLIENT_SP: string = \"SP\";\n\n\n //--------------------------------------------------------------------------\n // 変数\n //--------------------------------------------------------------------------\n /**\n * Vue.jsオブジェクト\n */\n protected vue: Vue;\n\n /**\n * sonbpIFオブジェクト\n */\n private sonbpIf: any;\n\n /**\n * 画像枠使用可否フラグ\n */\n private enablePhotobox: boolean;\n\n /**\n * 差出人使用可否フラグ\n */\n private enableSender: boolean;\n\n /**\n * 編集モード\n */\n private editMode: edconst.editModeKind;\n\n /**\n * 一時編集ID(暗号化)\n */\n public tempId: string;\n\n /**\n * 編集開始日(暗号化)\n */\n public encCreateDate: string;\n\n /**\n * 認証トークン \n */\n private authToken: string;\n\n /**\n * テンプレートPDFのページサイズ(幅)\n */\n private pdfPageSizeWidth: number;\n\n /**\n * テンプレートPDFのページサイズ(高さ)\n */\n private pdfPageSizeHeight: number;\n\n /**\n * あいさつ文の一覧\n */\n private greetingList: edentity.greetingTranEntityEx[];\n\n /**\n * あいさつ文のデザイン定義\n */\n private greetingDesign: GetEditInfo.DesignDetailEntity;\n\n /**\n * 差出人のデザイン定義\n */\n private senderDesign: GetEditInfo.DesignDetailEntity;\n\n /**\n * 差出人情報\n */\n private senderInfo: edentity.senderTranEntityEx;\n\n /**\n * オブジェクト配置有効領域\n */\n private putRange: cmnPart.putRange;\n\n /**\n * オブジェクト配置有効領域\n */\n private putRangeStamp: cmnPart.putRangeStamp;\n\n /**\n * 画像枠一覧\n */\n private photoFrameList: edentity.photoFrame[];\n\n /**\n * デフォルト文字色\n */\n private defaultFontColor: GetEditInfo.GetEditInfoColorEntity;\n\n /**\n * 色定義マスタの一覧\n */\n private colorMasterList: GetEditInfo.GetEditInfoColorEntity[];\n\n /**\n * テンプレートに画像枠が存在するか\n */\n private existsPhotoBox: boolean;\n\n /**\n * PCサイト?\n */\n private usePcDesign: boolean;\n\n /**\n * デザインマスタ\n */\n private designMaster: GetEditInfo.GetEditInfoDesignEntity;\n\n\n //--------------------------------------------------------------------------\n // プロパティ\n //--------------------------------------------------------------------------\n /**\n * Vueオブジェクト\n */\n public set Vue(vue: Vue) {\n this.vue = vue;\n }\n\n /**\n * 認証トークン\n */\n public set AuthToken(authToken: string) {\n this.authToken = authToken;\n }\n\n /**\n * sonbpIFオブジェクト\n */\n public get SonbpIf(): any {\n return this.sonbpIf;\n }\n\n /**\n * 画像枠使用可否フラグ\n */\n public get EnablePhotobox(): boolean {\n return this.enablePhotobox;\n }\n\n /**\n * 差出人使用可否フラグ\n */\n public get EnableSender(): boolean {\n return this.enableSender;\n }\n\n /**\n * 編集モード\n */\n public get EditMode(): edconst.editModeKind {\n return this.editMode;\n }\n\n /**\n * テンプレートPDFのページサイズ(幅)\n */\n public get PdfPageSizeWidth(): number {\n return this.pdfPageSizeWidth;\n }\n\n /**\n * テンプレートPDFのページサイズ(高さ)\n */\n public get PdfPageSizeHeight(): number {\n return this.pdfPageSizeHeight;\n }\n\n /**\n * あいさつ文の一覧\n */\n public get GreetingList(): edentity.greetingTranEntityEx[] {\n return this.greetingList;\n }\n\n /**\n * あいさつ文のデザイン定義\n */\n public set GreetingDesign(greetingDesign: GetEditInfo.DesignDetailEntity) {\n this.greetingDesign = greetingDesign;\n }\n\n /**\n * 差出人のデザイン定義\n */\n public set SenderDesign(senderDesign: GetEditInfo.DesignDetailEntity) {\n this.senderDesign = senderDesign;\n }\n\n /**\n * 差出人情報\n */\n public get SenderInfo(): edentity.senderTranEntityEx {\n return this.senderInfo;\n }\n public set SenderInfo(sender: edentity.senderTranEntityEx) {\n this.senderInfo = sender;\n }\n\n /**\n * オブジェクト配置有効領域\n */\n public set PutRange(putRange: cmnPart.putRange) {\n this.putRange = putRange;\n }\n\n /**\n * オブジェクト配置有効領域(スタンプ)\n */\n public set PutRangeStamp(putRangeStamp: cmnPart.putRangeStamp) {\n this.putRangeStamp = putRangeStamp\n }\n\n /**\n * 画像枠一覧\n */\n public get PhotoFrameList(): edentity.photoFrame[] {\n return this.photoFrameList;\n }\n\n /**\n * デフォルト文字色\n */\n public set DefaultFontColor(colorMaster: GetEditInfo.GetEditInfoColorEntity) {\n this.defaultFontColor = colorMaster;\n }\n\n /**\n * 色定義マスタの一覧\n */\n public set ColorMasterList(colorMasterList: GetEditInfo.GetEditInfoColorEntity[]) {\n this.colorMasterList = colorMasterList;\n }\n\n /**\n * テンプレートに画像枠が存在するか\n */\n public get ExistsPhotoBox(): boolean {\n return this.existsPhotoBox;\n }\n\n /**\n * デザインマスタ\n */\n public set DesignMaster(designMaster: GetEditInfo.GetEditInfoDesignEntity) {\n this.designMaster = designMaster;\n }\n\n\n //--------------------------------------------------------------------------\n // コンストラクタ\n //--------------------------------------------------------------------------\n /**\n * コンストラクタ\n */\n constructor(usePcDesign: boolean) {\n\n //SonbpIfClassは画面シングルトンで利用\n this.sonbpIf = new SonbpIf.SonbpIfClass();\n\n this.enablePhotobox = false;\n this.enableSender = false;\n this.editMode = edconst.EDIT_MODE_KIND.SET_PHOTO;\n this.greetingList = [];\n this.photoFrameList = [];\n this.existsPhotoBox = true;\n\n this.usePcDesign = usePcDesign;\n }\n\n //--------------------------------------------------------------------------\n // メソッド\n //--------------------------------------------------------------------------\n\n /**\n * アイテム選択通知の初期処理\n * @summary アイテム選択でモード切替を行うため(2025年対応:配置済み画像の再編集可能 #28295)\n */\n private _onChangeInit(editMode: edconst.editModeKind, vps: itemVenderProperty): void { };\n /**\n * アイテム選択通知の初期処理セット\n */\n public setOnChangeInitFunc(callback: (editMode: edconst.editModeKind, vps: itemVenderProperty) => void) {\n\n this._onChangeInit = callback;\n };\n\n /**\n * sonbp起動 \n */\n public start(pageAreaOffset: cmnPart.AreaCoordinate): es6promise.Promise {\n\n return new Promise((resolve, reject) => {\n\n let result: boolean = false;\n const that = this;\n\n // オプションの指定\n this.sonbpIf.setOption({\n put_range: {\n w: this.putRange.w,\n h: this.putRange.h,\n },\n put_range_stamp: {\n w: this.putRangeStamp.w,\n h: this.putRangeStamp.h,\n },\n page_offset: {\n x: pageAreaOffset.x,\n y: pageAreaOffset.y\n }\n });\n\n const sonbpClient: string = this.usePcDesign ? this.SONBP_CLIENT_PC : this.SONBP_CLIENT_SP;\n\n // sonbp初期化\n this.sonbpIf.sonbpInit(this.vue, this.CANVAS_DIV_ID, this.SONBP_URI_PREFIX, this.POSCA_VIRTUAL_DIR, sonbpClient, this.authToken, function (res: any) {\n // 結果判定\n if (res.code === 0) {\n\n //_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\n // アイテム選択通知メソッド登録\n that.sonbpIf.onChangeSelectItem((vps: itemVenderProperty) => {\n\n Logger.debug(\"選択アイテム更新 item[\" + JSON.stringify(vps) + \"]\");\n\n // 違うタイプの場合モード切替\n that._onChangeInit(that.editMode, vps);\n\n if (that.usePcDesign) {\n // PCの場合\n\n if (vps === null) {\n // 選択解除の場合\n if (that.editMode === edconst.EDIT_MODE_KIND.MANI_PHOTO) {\n that.vue.$data.Show.OparatePalletCover = true;\n that.vue.$data.EnablePhotoCorrect = false;\n that.vue.$data.EnablePitaCorrect = false;\n that.vue.$data.PhotoCorrectCaption = edconst.EditConst.PHOTO_CORRECT_CAPTION_PC_OFF\n that.vue.$data.Show.IsImageAutoFilter = true; // 補正あり\n that.vue.$data.Show.IsImagePita = false; // 枠ぴったりOFF\n that.vue.$data.isBrightDownDisabled = false;\n that.vue.$data.isBrightUpDisabled = false;\n that.vue.$data.Show.OparatePalletBrightCover = false;\n }\n return;\n }\n\n // 処理モード判定\n if (that.editMode === edconst.EDIT_MODE_KIND.SET_PHOTO) {\n // 画像読込・配置の場合\n\n }\n else if (that.editMode === edconst.EDIT_MODE_KIND.MANI_PHOTO) {\n // 画像操作の場合\n // オブジェクト操作パレットの活性制御\n if (util.verify.isNotEmpty(vps)) {\n that.vue.$data.Show.OparatePalletCover = (vps.file_id == that.EMPTY_PHOTOBOX_FILE_ID) ? true : false;\n // 画像補正しないパレットの活性制御\n that.vue.$data.EnablePhotoCorrect = (vps.file_id != that.EMPTY_PHOTOBOX_FILE_ID) ? true : false;\n that.vue.$data.EnablePitaCorrect = (vps.file_id != that.EMPTY_PHOTOBOX_FILE_ID) ? true : false;\n // 対象画像枠情報取得\n const targetFrame: edentity.photoFrame = util.relic.listFind(that.photoFrameList, (pf: edentity.photoFrame) => {\n return pf.idx === vps.idx;\n });\n that.vue.$data.PhotoCorrectCaption = targetFrame.useI2 ? edconst.EditConst.PHOTO_CORRECT_CAPTION_PC_OFF : edconst.EditConst.PHOTO_CORRECT_CAPTION_PC_ON;\n that.vue.$data.Show.IsImageAutoFilter = targetFrame.useI2;\n that.vue.$data.Show.IsImagePita = vps.waku_pita ?? false;\n\n if (vps.file_id === \"@DUMMY@\") {\n that.vue.$data.PhotoBright = 0\n } else {\n let fileIdSplit = vps.file_id.split('@');\n if (fileIdSplit.length < 2) {\n that.vue.$data.PhotoBright = 0\n } else {\n that.vue.$data.PhotoBright = fileIdSplit[1];\n }\n }\n\n if (targetFrame.useI2) {\n if (that.vue.$data.PhotoBright > 9) {\n that.vue.$data.isBrightUpDisabled = true;\n } else {\n that.vue.$data.isBrightUpDisabled = false;\n }\n if (that.vue.$data.PhotoBright < -9) {\n that.vue.$data.isBrightDownDisabled = true;\n } else {\n that.vue.$data.isBrightDownDisabled = false;\n }\n that.vue.$data.Show.OparatePalletBrightCover = false;\n } else {\n that.vue.$data.isBrightDownDisabled = true;\n that.vue.$data.isBrightUpDisabled = true;\n that.vue.$data.Show.OparatePalletBrightCover = true;\n }\n }\n else {\n that.vue.$data.Show.OparatePalletCover = true;\n // 画像補正しないパレットの活性制御\n that.vue.$data.EnablePhotoCorrect = false;\n that.vue.$data.EnablePitaCorrect = false;\n that.vue.$data.PhotoCorrectCaption = edconst.EditConst.PHOTO_CORRECT_CAPTION_PC_OFF\n that.vue.$data.Show.IsImageAutoFilter = true; // 補正あり\n that.vue.$data.Show.IsImagePita = false; // 枠ぴったりOFF\n that.vue.$data.isBrightDownDisabled = false;\n that.vue.$data.isBrightUpDisabled = false;\n that.vue.$data.Show.OparatePalletBrightCover = false;\n }\n \n }\n else if (that.editMode === edconst.EDIT_MODE_KIND.GREETING) {\n // あいさつ文操作モード\n Logger.debug(\"アイテム選択通知 [\", vps);\n Logger.debug(\"作成済みアイテム [\", that.greetingList);\n\n if (!that.vue.$data.EnableOnChangeForGreeting) {\n Logger.debug(\"あいさつ文作成中なのでスキップ\");\n return;\n }\n\n // PC・SP共通処理\n that.onChangeGreetingSelectItem(vps);\n\n that.vue.$data.Show.OparatePalletCover = (vps === null) ? true : false;\n that.vue.$data.Show.OparatePalletCover4Top = (vps === null) ? true : false;\n that.vue.$data.Show.OparatePalletCover4Bottom = false;\n }\n else if (that.editMode === edconst.EDIT_MODE_KIND.SENDER) {\n // 差出人操作モード の場合\n if (!that.vue.$data.EnableOnChangeForSender) {\n Logger.debug(\"差出人作成中なのでスキップ\");\n return;\n }\n that.setSenderOrder(that, that.senderInfo);\n that.vue.$data.Show.OparatePalletCover = (vps === null) ? true : false;\n that.vue.$data.Show.OparatePalletCover4Top = (vps === null) ? true : false;\n that.vue.$data.Show.OparatePalletCover4Bottom = false;\n }\n else if (that.editMode === edconst.EDIT_MODE_KIND.STAMP) {\n // スタンプ操作モード の場合\n that.vue.$data.Show.OparatePalletCover = (vps === null) ? true : false;\n that.vue.$data.Show.OparatePalletCover4Top = (vps === null) ? true : false;\n that.vue.$data.Show.OparatePalletCover4Bottom = false;\n }\n else if (that.editMode === edconst.EDIT_MODE_KIND.MYSTAMP) {\n // Myステッカー操作モード の場合\n that.vue.$data.Show.OparatePalletCover = (vps === null) ? true : false;\n that.vue.$data.Show.OparatePalletCover4Top = (vps === null) ? true : false;\n that.vue.$data.Show.OparatePalletCover4Bottom = false;\n }\n else if (that.editMode === edconst.EDIT_MODE_KIND.FONTGENIC) {\n // 手書きスタンプ操作モード の場合\n that.vue.$data.Show.OparatePalletCover = (vps === null) ? true : false;\n that.vue.$data.Show.OparatePalletCover4Top = (vps === null) ? true : false;\n that.vue.$data.Show.OparatePalletCover4Bottom = false;\n\n // 色番号アクティブ化\n if (vps === null) {\n that.vue.$data.SelectTegakiColor = \"\";\n } else {\n let idParts = vps.file_id.split('@');\n let colorNo = idParts[1];\n that.vue.$data.SelectTegakiColor = colorNo;\n }\n }\n }\n else {\n // SPの場合\n\n // 処理モード判定\n if (that.editMode === edconst.EDIT_MODE_KIND.SET_PHOTO) {\n // 画像読込・配置の場合\n\n if (!that.vue.$data.Show.SwapItemMenu || !that.vue.$data.SwatpItem.doSwap) {\n Logger.debug(\"画像読込・配置モード(通常)\");\n if (vps === null) {\n // 選択解除の場合\n\n //画像選択時の操作メニュー非表示\n that.vue.$data.Show.EditImageMenu = false;\n // ツールメニュー表示\n that.vue.$data.Show.SetPhotoMenu = true;\n }\n else {\n // 選択の場合\n if (vps.file_id === that.EMPTY_PHOTOBOX_FILE_ID) {\n // 画像枠に写真なしの場合\n\n // 画像一覧表示へ\n // 編集エリア非表示\n that.vue.$data.Show.EditArea = false;\n // 画像一覧を表示\n that.vue.$data.Header.Title = edconst.EditConst.TITLE_IMAGELIST;\n that.vue.$data.Show.FooterMenu = false;\n {\n that.vue.$data.Show.ReturnFlowBtn = false;\n that.vue.$data.Show.ReturnHomeBtn = true;\n that.vue.$data.Show.ReturnHomeExBtn = false;\n that.vue.$data.Show.NextFlowBtn = false;\n that.vue.$data.Show.NextHomeFromImgListBtn = true;\n that.vue.$data.Show.NextHomeFromMyStampListBtn = false;\n that.vue.$data.Show.NextHomeFromTegakiStampListBtn = false;\n that.vue.$data.Show.PhotoDeleteBtn = true;\n that.vue.$data.Show.MySTampDeleteBtn = false;\n that.vue.$data.Show.TegakiStampListTrashBtn = false;\n that.vue.$data.EnableUploadListTrashOK = false;\n\n }\n // ツールメニュー非表示\n that.vue.$data.Show.FooterMenu = false;\n that.vue.$data.Show.PhotoList = true;\n }\n else {\n // 画像枠に写真ありの場合\n // ツールメニュー非表示\n that.vue.$data.Show.SetPhotoMenu = false;\n // 画像選択時の操作メニュー表示\n that.vue.$data.Show.EditImageMenu = true;\n // 対象画像枠情報取得\n const targetFrame: edentity.photoFrame = util.relic.listFind(that.photoFrameList, (pf: edentity.photoFrame) => {\n return pf.idx === vps.idx;\n });\n // I2補正のキャプションを復元する。\n that.vue.$data.PhotoCorrectCaption = targetFrame.useI2 ? edconst.EditConst.PHOTO_CORRECT_CAPTION_SP_OFF : edconst.EditConst.PHOTO_CORRECT_CAPTION_SP_ON;\n that.vue.$data.Show.IsImageAutoFilter = targetFrame.useI2;\n // 枠ぴったり区分取得\n that.vue.$data.Show.IsImagePita = vps.waku_pita ?? false;\n\n // 明るさ調整\n that.vue.$data.Show.OparatePalletBrightCover = targetFrame.useI2 ? false : true;\n if (vps.file_id === \"@DUMMY@\") {\n that.vue.$data.PhotoBright = 0;\n } else {\n let fileIdSplit = vps.file_id.split('@');\n if (fileIdSplit.length < 2) {\n that.vue.$data.PhotoBright = 0;\n } else {\n that.vue.$data.PhotoBright = fileIdSplit[1];\n }\n }\n }\n\n }\n }\n else {\n Logger.debug(\"画像読込・配置モード(入替)\");\n\n if (vps !== null) {\n // 選択の場合\n if (util.verify.isNotLengthZero(that.vue.$data.SwatpItem.FromItem)) {\n // 2つ目の指定\n that.vue.$data.SwatpItem.ToItem = vps.idx;\n\n that.sonbpIf.mutualTradePhoto(that.vue.$data.SwatpItem.FromItem, that.vue.$data.SwatpItem.ToItem, (res: any) => {\n if (res.code === 0) {\n // 正常終了\n }\n else {\n // 異常終了\n Logger.error(\"入替操作 失敗 [\" + JSON.stringify(res) + \"]\");\n dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_SWAP_PHOTO, dialogUtil.closeErrorDialog);\n }\n });\n }\n }\n\n // どちらでも、入替モード終了\n that.vue.$data.SwatpItem.FromItem = \"\";\n that.vue.$data.SwatpItem.ToItem = \"\";\n that.vue.$data.Show.MessageArea = false;\n that.vue.$data.Show.EditImageMenu = false;\n that.vue.$data.Show.SetPhotoMenu = true;\n that.vue.$data.Show.ReturnFlowBtn = true;\n that.vue.$data.Show.ReturnHomeFromSwapItemBtn = false;\n that.vue.$data.Header.Title = edconst.EditConst.TITLE_MAIN;\n that.vue.$data.SwatpItem.doSwap = false;\n\n }\n }\n else if (that.editMode === edconst.EDIT_MODE_KIND.MANI_PHOTO) {\n // 画像操作の場合\n Logger.debug(\" 画像操作モード\");\n\n }\n else if (that.editMode === edconst.EDIT_MODE_KIND.GREETING) {\n // あいさつ文操作モード\n Logger.debug(\"あいさつ文操作モード\");\n\n Logger.debug(\"アイテム選択通知 [\", vps);\n Logger.debug(\"作成済みアイテム [\", that.greetingList);\n\n if (!that.vue.$data.EnableOnChangeForGreeting) {\n Logger.debug(\"あいさつ文作成中なのでスキップ\");\n return;\n }\n\n // PC・SP共通処理\n that.onChangeGreetingSelectItem(vps);\n }\n else if (that.editMode === edconst.EDIT_MODE_KIND.SENDER) {\n // 差出人操作モード の場合\n Logger.debug(\"差出人操作モード\");\n\n if (!that.vue.$data.EnableOnChangeForSender) {\n Logger.debug(\"差出人作成中なのでスキップ\");\n return;\n }\n that.setSenderOrder(that, that.senderInfo);\n that.vue.$data.Show.OparatePalletCover = (vps === null) ? true : false;\n }\n else if (that.editMode === edconst.EDIT_MODE_KIND.STAMP) {\n // スタンプ操作モード の場合\n Logger.debug(\"スタンプ操作モード\");\n that.vue.$data.Show.OparatePalletCover = (vps === null) ? true : false;\n }\n else if (that.editMode === edconst.EDIT_MODE_KIND.MYSTAMP) {\n // Myステッカー操作モード の場合\n Logger.debug(\"Myステッカー操作モード\");\n that.vue.$data.Show.OparatePalletCover = (vps === null) ? true : false;\n\n }\n else if (that.editMode === edconst.EDIT_MODE_KIND.FONTGENIC) {\n // 手書きスタンプ操作モード の場合\n that.vue.$data.Show.OparatePalletCover = (vps === null) ? true : false;\n\n // 色番号アクティブ化\n if (vps === null) {\n that.vue.$data.SelectTegakiColor = \"\";\n } else {\n let idParts = vps.file_id.split('@');\n let colorNo = idParts[1];\n that.vue.$data.SelectTegakiColor = colorNo;\n }\n }\n }\n });\n //_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\n\n //_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\n //2つの画像枠で画像交換通知\n that.sonbpIf.onExhangePhtoItem((a: { waku: itemVenderProperty, img: itemVenderProperty }, b: { waku: itemVenderProperty, img: itemVenderProperty }) => {\n Logger.debug(\"2つの画像枠で画像交換 a,b->\", a, b);\n\n const pfA: edentity.photoFrame = util.relic.listFind(that.PhotoFrameList, (pf: edentity.photoFrame) => {\n return pf.idx === a.waku.idx;\n });\n const pfB: edentity.photoFrame = util.relic.listFind(that.PhotoFrameList, (pf: edentity.photoFrame) => {\n return pf.idx === b.waku.idx;\n });\n\n let fileId_ = pfA.fileId;\n let useI2_ = pfA.useI2;\n let brightId_ = pfA.brightId;\n\n pfA.fileId = pfB.fileId;\n pfA.useI2 = pfB.useI2;\n pfA.brightId = pfB.brightId;\n pfB.fileId = fileId_;\n pfB.useI2 = useI2_;\n pfB.brightId = brightId_;\n\n console.debug(\"exchange after.\", {\n a: { pf: pfA, vp: a },\n b: { pf: pfB, vp: b }\n });\n });\n //_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\n\n //_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\n // セッションエラー通知ハンドリング\n that.sonbpIf.onApiError((e: any) => {\n // responseCode = httpcode\n if (e.responseCode === 401) {\n util.ajax.TransErrorPage();\n return false;\n }\n return true;\n });\n //_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\n\n // sonbp起動\n that.sonbpIf.sonbpStart(function (res: any) {\n // 結果判定\n if (res.code === 0) {\n\n // PDFのページサイズ取得\n const pageSize = that.sonbpIf.getPageSize();\n that.pdfPageSizeWidth = pageSize.w;\n that.pdfPageSizeHeight = pageSize.h;\n\n // テンプレート種別判定\n // ①差出人レイヤーの初期配置座標プロパティ(def_posi)が存在するかを判定\n var layers = that.sonbpIf.getLayers();\n for (let i: number = 0; i < layers.length; i++) {\n if (layers[i].layer_type === \"SENDER_LAYER\") {\n if (layers[i].def_posi !== undefined && that.senderDesign) {\n // 初期配置座標プロパティあり\n that.enableSender = true;\n }\n }\n }\n\n // ②画像レイヤーに画像枠が存在するかを判定\n //const itemType: string[] = [sonbpIfconst.ITYPE_PHOTO_BOX];\n const itemType: string[] = [];\n that.sonbpIf.getItems(itemType, (res: any, list: itemVenderProperty[]) => {\n // 結果判定\n if (res.code === 0) {\n\n Logger.debug(\"getItems [\" + JSON.stringify(list) + \"]\");\n let selectItem: itemVenderProperty = null;\n\n // 画像枠の存在チェック\n const firstPhotoBox = getFirstItem(list, sonbpIfconst.ITYPE_PHOTO_BOX);\n\n\n // 設定可能な処理モード確定\n if (firstPhotoBox !== undefined) {\n that.existsPhotoBox = true;\n // 画像読込・配置モード\n that.enablePhotobox = true;\n that.editMode = edconst.EDIT_MODE_KIND.SET_PHOTO;\n selectItem = firstPhotoBox;\n\n // 画像枠一覧初期化\n for (let i: number = 0; i < list.length; i++) {\n if (list[i].item_type === sonbpIfconst.ITYPE_PHOTO_BOX) {\n let selPhotoFrame: edentity.photoFrame = util.relic.listFind(that.photoFrameList, (ph: edentity.photoFrame) => {\n return ph.idx === list[i].idx;\n });\n if (selPhotoFrame === undefined) {\n selPhotoFrame = new edentity.photoFrame();\n selPhotoFrame.idx = list[i].idx;\n that.photoFrameList.push(selPhotoFrame);\n }\n\n // 枠情報復元\n if (list[i].file_id === that.EMPTY_PHOTOBOX_FILE_ID) {\n //画像配置なし\n selPhotoFrame.fileId = \"\";\n selPhotoFrame.useI2 = true;\n selPhotoFrame.brightId = 0;\n } else if (list[i].file_id.indexOf('@') >= 0) {\n //画像配置あり(I2補正ON)\n let idParts = list[i].file_id.split('@');\n selPhotoFrame.fileId = idParts[0];\n selPhotoFrame.useI2 = true;\n selPhotoFrame.brightId = Number(idParts[1]);\n } else {\n //画像配置あり(I2補正OFF)\n selPhotoFrame.fileId = list[i].file_id;\n selPhotoFrame.useI2 = false;\n selPhotoFrame.brightId = 999;\n }\n }\n }\n }\n else {\n that.existsPhotoBox = false;\n\n if (that.designMaster.printType === edconst.EditConst.PRINT_TYPE_BOTH) {\n // 銀塩・印刷両方\n // →仕上がり選択だけできる、特殊な画像読込・配置モードを設定\n that.editMode = edconst.EDIT_MODE_KIND.SET_PHOTO;\n selectItem = null;\n }\n else if (that.enableSender && that.senderDesign) {\n // 差出人操作モード\n that.editMode = edconst.EDIT_MODE_KIND.SENDER;\n\n const firstSender = getFirstItem(list, sonbpIfconst.ITYPE_SENDER_TXT);\n if (firstSender !== undefined) {\n selectItem = firstSender;\n }\n }\n else {\n // あいさつ文操作モード\n that.editMode = edconst.EDIT_MODE_KIND.GREETING;\n\n const firstGreeting = getFirstItem(list, sonbpIfconst.ITYPE_GREETING_TXT);\n const firstComment = getFirstItem(list, sonbpIfconst.ITYPE_COMMENT_TXT);\n if (firstGreeting !== undefined) {\n selectItem = firstGreeting;\n }\n else if (firstComment !== undefined) {\n selectItem = firstComment;\n }\n }\n\n }\n\n if (!that.usePcDesign) {\n // SPの場合、常に 画像読込・配置モードから開始\n that.editMode = edconst.EDIT_MODE_KIND.SET_PHOTO;\n selectItem = null;\n }\n\n Logger.debug(\"sonbp start #7 処理モード設定[\" + that.editMode + \"]\");\n\n // 処理モード設定\n that.sonbpIf.setMode(that.editMode, function (res: any) {\n // 結果判定\n if (res.code === 0) {\n Logger.debug(\"sonbp start 初期選択アイテム指定 [\" + JSON.stringify(selectItem) + \"]\");\n\n // 初期選択アイテム指定\n if (selectItem !== null) {\n that.sonbpIf.selectItem(selectItem.item_type, selectItem.idx,\n function (res: any) {\n if (res.code === 0) {\n Logger.debug(\"sonbp start 初期選択アイテム指定 OK\");\n }\n else {\n Logger.error(\"sonbp start 初期選択アイテム指定 NG [\" + res.msg + \"]\");\n }\n });\n }\n\n // 編集開始OK\n result = true;\n resolve(true);\n }\n else {\n that.errFunc(res);\n reject(-1);\n }\n });\n }\n else {\n that.errFunc(res);\n reject(-2);\n }\n });\n }\n else {\n that.errFunc(res);\n reject(-3);\n }\n });\n }\n else {\n that.errFunc(res);\n dialogUtil.createErrorDialog(constDialogMessage.ERROR_SYSTEM + '(6)', function () {\n // ローディングダイアログ終了\n util.dialogUtil.closeLoading();\n });\n reject(-4);\n }\n });\n\n\n function getFirstItem(list: itemVenderProperty[], itemtype: string): itemVenderProperty {\n\n let selItem = util.relic.listFind(list, (vp: itemVenderProperty) => {\n return vp.item_type === itemtype;\n });\n return selItem;\n }\n\n });\n }\n\n /**\n * 選択アイテム更新イベント(あいさつ文)\n * @param selectItem :選択アイテム\n */\n public onChangeGreetingSelectItem(selectItem: itemVenderProperty) {\n\n if (util.verify.isNotEmpty(selectItem)) {\n // 選択アイテムあり\n const selGreeting: edentity.greetingTranEntityEx = util.relic.listFind(this.greetingList, (g: edentity.greetingTranEntityEx) => {\n return g.id === selectItem.idx;\n });\n if (selGreeting !== undefined) {\n // パネルに入力情報の復元\n this.vue.$data.GreetingInfo.FontSize = selGreeting.size;\n this.vue.$data.GreetingInfo.Font = selGreeting.fontMaster.name;\n this.vue.$data.GreetingInfo.FontSample = selGreeting.fontMaster.url;\n this.vue.$data.GreetingInfo.CharLayout = selGreeting.charLayout;\n if (this.vue.$data.GreetingInfo.CharLayout == edconst.EditConst.CHAR_LAYOUT_Y) {\n this.vue.$data.GreetingInfo.AlignY = selGreeting.alignDispVal;\n this.vue.$data.GreetingInfo.ShowAlignY = true;\n }\n else {\n this.vue.$data.GreetingInfo.AlignT = selGreeting.alignDispVal;\n this.vue.$data.GreetingInfo.ShowAlignY = false;\n }\n this.vue.$data.GreetingInfo.OutlineFont = selGreeting.outlineChar;\n this.vue.$data.GreetingText = selGreeting.text;\n this.vue.$data.SelectCharColor = selGreeting.fontColorMaster.id;\n if (selGreeting.outlineChar) {\n this.vue.$data.SelectOutlineCharColor = selGreeting.outlineFontColorMaster.id;\n }\n else {\n this.vue.$data.SelectOutlineCharColor = this.colorMasterList[0].id;\n }\n this.vue.$data.GreetingInfo.Text = selGreeting.text;\n }\n }\n // else {\n // // 選択アイテムなし\n // // パネルの入力情報を初期化\n // this.vue.$data.GreetingInfo.FontSize = edconst.EditConst.FONT_SIZE_DEFAULT_T;\n // this.vue.$data.GreetingInfo.Font = \"\";\n // this.vue.$data.GreetingInfo.CharLayout = edentity.editUtil.directionToCharlayout(this.greetingDesign.direction);\n // this.vue.$data.GreetingInfo.AlignY = edentity.editUtil.alignToAlignDispVal(this.vue.$data.GreetingInfo.CharLayout, this.greetingDesign.align);\n // this.vue.$data.GreetingInfo.AlignT = edentity.editUtil.alignToAlignDispVal(this.vue.$data.GreetingInfo.CharLayout, this.greetingDesign.align);\n // this.vue.$data.GreetingInfo.OutlineFont = false;\n // this.vue.$data.GreetingInfo.Text = \"\";\n // this.vue.$data.SelectCharColor = this.defaultFontColor.id;\n // this.vue.$data.SelectOutlineCharColor = this.colorMasterList[0].id;\n // }\n }\n\n private errFunc(result: any) {\n Logger.error(JSON.stringify(result));\n }\n\n /**\n * 処理モードの設定\n * @param mode :処理モード\n * @param callbackOk:OK時処理\n * @param callbackNg:NG時処理\n */\n public setMode(mode: edconst.editModeKind, callbackOk: () => void, callbackNg: () => void): void {\n\n this.sonbpIf.setMode(mode, (res: any) => {\n if (res.code === 0) {\n // 設定OK\n this.editMode = mode;\n callbackOk();\n }\n else {\n // 設定NG\n callbackNg();\n }\n });\n\n }\n\n /**\n * 画像用 file_keyの生成\n * @param fileId :画像ID\n * @param toCorrect :I2補正版?\n * @description :例)PHOTO@YYYYMMDD/テンポラリID@アップロード画像ID@off\n */\n public createPhotoFileKey(fileId: string, toCorrect: boolean): string {\n let fileIdSplit = fileId.split('@');\n let bright = fileIdSplit.length < 2 ? 0 : fileIdSplit[1];\n const fileKey: string = \"PHOTO\" + \"@\" + this.encCreateDate + \"@\" + this.tempId + \"@\" + fileIdSplit[0] + \"@\";\n let correctVal: string = toCorrect ? \"on\" : \"off\";\n\n if (correctVal == \"on\") {\n correctVal = correctVal + \"@\" + bright;\n }\n\n return fileKey + correctVal\n }\n\n /**\n * Canvasサイズ調整\n */\n public resizeContents(pageAreaSize?: number): void {\n\n this.sonbpIf.resizeContents(pageAreaSize);\n }\n\n /**\n * 写真枠に画像を配置(カレント枠)\n * @param target :対象画像情報\n * @param toCorrect :I2補正版?\n * @param fromCorrectEvent :画像補正する/しないイベントからの呼び出し?\n * @param callbackOk :OK時処理\n * @param callbackNg :NG時処理\n */\n public setPhoto(fileId: string, width: number, height: number, toCorrect: boolean, fromCorrectEvent: boolean, callbackOk: () => void, callbackNg: () => void) {\n\n const imgSize: any = { w: width, h: height };\n let fileKey = this.createPhotoFileKey(fileId, toCorrect);\n\n // sonbpへ依頼\n this.sonbpIf.setPhoto(fileKey, fileId, imgSize, fromCorrectEvent, (res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n /**\n * 画像削除(画像ID指定)\n * @param fileId :画像ID\n * @param callbackOk:OK時処理\n * @param callbackNg:NG時処理\n */\n public removePhotoById(fileIds: string[], callbackOk: () => void, callbackNg: () => void) {\n\n // sonbpへ依頼\n this.sonbpIf.removePhotoById(fileIds, (res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n /**\n * Myステッカー削除(画像ID指定)\n * @param fileId :画像ID\n * @param callbackOk:OK時処理\n * @param callbackNg:NG時処理\n */\n public removeMyStampById(fileIds: string[], callbackOk: () => void, callbackNg: () => void) {\n\n // sonbpへ依頼\n this.sonbpIf.removeStampById(sonbpIfconst.ITYPE_MYSTAMP_IMG, fileIds, (res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n /**\n * 手書きスタンプ画像削除(画像ID指定)\n * @param fileId :画像ID\n * @param callbackOk:OK時処理\n * @param callbackNg:NG時処理\n */\n public removeTegakiStampById(fileIds: string[], callbackOk: () => void, callbackNg: () => void) {\n\n // sonbpへ依頼\n this.sonbpIf.removeStampById(sonbpIfconst.ITYPE_FONTGENIC_IMG, fileIds, (res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n\n /**\n * 画像削除(カレント枠)\n * @param callbackOk:OK時処理\n * @param callbackNg:NG時処理\n */\n public removePhotoByCurrent(callbackOk: () => void, callbackNg: () => void) {\n\n // sonbpへ依頼\n this.sonbpIf.removePhoto((res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n /**\n * 画像アイテム一覧の取得\n */\n public getPhotoList(callbackOk: (list: itemVenderProperty[]) => void, callbackNg: () => void) {\n\n // sonbpへ依頼\n this.sonbpIf.getPhotoList(function (res: any, list: itemVenderProperty[]) {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk(list);\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n\n }\n\n /**\n * アイテム選択指示\n * @param itemType :アイテム区分\n * @param idx :アイテム番号\n * @param callbackOk:OK時処理\n * @param callbackNg:NG時処理\n */\n public selectItem(itemType: string, idx: string, callbackOk: () => void, callbackNg: () => void) {\n\n // sonbpへ\n this.sonbpIf.selectItem(itemType, idx, (res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n /**\n * 指定アイテム種別のアイテム取得\n * @param itemType :アイテム種別\n * @param callbackOk:OK時処理\n * @param callbackNg:NG時処理\n */\n public getItems(itemType: string[], callbackOk: (list: itemVenderProperty[]) => void, callbackNg: () => void) {\n\n // sonbpへ依頼\n this.sonbpIf.getItems(itemType, function (res: any, list: itemVenderProperty[]) {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk(list);\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n /**\n * 選択アイテムの取得\n */\n public getSelectItem(): itemVenderProperty {\n // sonbpへ依頼\n return this.sonbpIf.getSelectItem();\n }\n\n /**\n * 選択アイテムの枠ぴったり区分更新\n */\n public setPhotoWakuPita(doPita: boolean, callbackOk: () => void, callbackNg: () => void): void {\n\n // sonbpへ依頼\n this.sonbpIf.setPhotoWakuPita(doPita, (res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n /**\n * 指定アイテム種別の先頭アイテム選択状態に設定\n * @param itemType :アイテム種別\n * @param callbackOk:OK時処理\n * @param callbackOk:OK時処理(未選択)\n * @param callbackNg:NG時処理\n */\n public setSelectFirstItem(itemType: string, callbackOk: (selectItem: itemVenderProperty) => void, callUnSel: () => void, callbackNg: () => void) {\n\n const getItmType: string[] = [itemType];\n const that = this;\n\n // sonbpへ依頼\n this.sonbpIf.getItems(getItmType, function (res: any, list: itemVenderProperty[]) {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n if (list.length !== 0) {\n // 先頭のアイテムを選択指定\n that.sonbpIf.selectItem(list[0].item_type, list[0].idx, (res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk(list[0]);\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n else {\n callUnSel();\n }\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n\n }\n });\n }\n\n /**\n * アイテムの回転\n * @param deg :回転角度\n * @param callbackOk:OK時処理\n * @param callbackNg:NG時処理\n */\n public rotateItem(deg: number, callbackOk: () => void, callbackNg: () => void) {\n\n // sonbpへ依頼\n this.sonbpIf.rotateItem(deg, (res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n\n }\n\n /**\n * アイテムの拡大/縮小\n * @param deg :拡縮率(1.0=100%)\n * @param callbackOk:OK時処理\n * @param callbackNg:NG時処理\n */\n public scaleItem(scale: number, callbackOk: () => void, callbackNg: () => void) {\n\n // sonbpへ依頼\n this.sonbpIf.scaleItem(scale, (res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n\n }\n\n /**\n * アイテムの移動\n * @param x :横移動量\n * @param y :縦移動量\n * @param callbackOk:OK時処理\n * @param callbackNg:NG時処理\n */\n public moveItem(x: number, y: number, callbackOk: () => void, callbackNg: () => void) {\n\n // sonbpへ依頼\n this.sonbpIf.moveItem(x, y, (res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n /**\n * アイテムの移動(上)\n * @param y :移動量(絶対値)\n * @param callbackOk:OK時処理\n * @param callbackNg:NG時処理\n */\n public moveUpItem(y: number = this.MOVE_ITEM_AMOUNT_DEFAULT, callbackOk: () => void, callbackNg: () => void) {\n this.moveItem(0, y, callbackOk, callbackNg);\n }\n\n /**\n * アイテムの移動(下)\n * @param y :移動量(絶対値)\n * @param callbackOk:OK時処理\n * @param callbackNg:NG時処理\n */\n public moveDownItem(y: number = this.MOVE_ITEM_AMOUNT_DEFAULT, callbackOk: () => void, callbackNg: () => void) {\n this.moveItem(0, y * -1, callbackOk, callbackNg);\n }\n\n /**\n * アイテムの移動(右)\n * @param x :移動量(絶対値)\n * @param callbackOk:OK時処理\n * @param callbackNg:NG時処理\n */\n public moveRightItem(x: number = this.MOVE_ITEM_AMOUNT_DEFAULT, callbackOk: () => void, callbackNg: () => void) {\n this.moveItem(x, 0, callbackOk, callbackNg);\n }\n\n /**\n * アイテムの移動(左)\n * @param x :移動量(絶対値)\n * @param callbackOk:OK時処理\n * @param callbackNg:NG時処理\n */\n public moveLeftItem(x: number = this.MOVE_ITEM_AMOUNT_DEFAULT, callbackOk: () => void, callbackNg: () => void) {\n this.moveItem(x * -1, 0, callbackOk, callbackNg);\n }\n\n /**\n * アイテムの選択解除\n */\n public selectItemClear() {\n\n // sonbpへ依頼\n this.sonbpIf.selectItemClear();\n }\n\n /**\n * テキスト配置\n * @param itemType :アイテム区分\n * @param idx :アイテム番号\n * @param isSetModeNew :配置方法\n * @param reqParam :組版実行時の共通パラメータ\n * @param def_posi :サイズ・位置情報\n * @param json :組版結果JSON\n * @param callbackOk :OK時処理\n * @param callbackNg :NG時処理\n */\n public setText(itemType: string, idx: string, isSetModeNew: boolean, reqParam: edentity.kumihanRequestParam, def_posi: { x: number, y: number, w: number, h: number, gen: number }, json: string, callbackOk: () => void, callbackNg: () => void) {\n\n const setMode: string = isSetModeNew ? this.GREETING_SET_MODE_NEW : this.GREETING_SET_MODE_UPD;\n const muki: string = (reqParam.hv === edconst.KUMIHAN_HV.VERTICAL) ? \"0\" : \"1\";\n\n Logger.debug(\"setText itemType[\" + itemType + \"] idx[\" + idx + \"] setMode[\" + setMode + \"] muki[\" + muki + \"]\");\n\n if (def_posi) {\n Logger.debug(\"setText def_posi 変換前[\" + JSON.stringify(def_posi) + \"]\");\n if (def_posi.w) {\n def_posi.w = sonbp.util.c2d.chgNum(def_posi.w, sonbp.constant.unit.MM, sonbp.constant.unit.PT);\n }\n if (def_posi.h) {\n def_posi.h = sonbp.util.c2d.chgNum(def_posi.h, sonbp.constant.unit.MM, sonbp.constant.unit.PT);\n }\n if (def_posi.x) {\n def_posi.x = sonbp.util.c2d.chgNum(def_posi.x, sonbp.constant.unit.MM, sonbp.constant.unit.PT);\n }\n if (def_posi.y) {\n def_posi.y = sonbp.util.c2d.chgNum(def_posi.y, sonbp.constant.unit.MM, sonbp.constant.unit.PT);\n }\n Logger.debug(\"setText def_posi 変換後[\" + JSON.stringify(def_posi) + \"]\");\n }\n\n // sonbpへ依頼\n this.sonbpIf.setText(itemType, idx, json, def_posi, muki, function (res: any) {\n\n Logger.debug(\"sonbpIf.setText\", res);\n\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n /**\n * テキスト削除(対象:選択テキストアイテム)\n */\n public removeText(callbackOk: () => void, callbackNg: () => void) {\n\n // sonbpへ依頼\n this.sonbpIf.removeText(function (res: any) {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n /**\n * テキストアイテムの取得\n * @param itemType :アイテム区分\n */\n public getTextList(itemType: string, callbackOk: (list: itemVenderProperty[]) => void, callbackNg: () => void) {\n\n let result: itemVenderProperty[] = [];\n\n // sonbpへ依頼\n this.sonbpIf.getTextList(function (res: any, list: itemVenderProperty[]) {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n let targetList: itemVenderProperty[] = [];\n for (let i: number = 0; i < list.length; i++) {\n if (list[i].item_type === itemType) {\n targetList.push(list[i]);\n }\n }\n callbackOk(targetList);\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n\n return result;\n }\n\n /**\n * あいさつ文テキストアイテムの取得\n */\n public getGreetingTextList(callbackNext: (list: itemVenderProperty[]) => void) {\n\n this.getTextList(sonbpIfconst.ITYPE_GREETING_TXT, callbackNext, () => { });\n\n }\n\n /**\n * 差出人文テキストアイテムの取得\n */\n public getSenderTextList(callbackNext: (list: itemVenderProperty[]) => void) {\n\n this.getTextList(sonbpIfconst.ITYPE_SENDER_TXT, callbackNext, () => { });\n\n }\n\n /**\n * あいさつ文テキスト配置\n * @param idx :アイテム番号\n * @param isSetModeNew :配置方法\n * @param reqParam :組版実行時の共通パラメータ\n * @param json :組版結果JSON\n * @param hasNoDesignMst:デザインマスタを持つか?\n * @param callbackOk :OK時処理\n * @param callbackNg :NG時処理\n */\n public setGreetingText(idx: string, isSetModeNew: boolean, reqParam: edentity.kumihanRequestParam, json: string, hasNoDesignMst: boolean, callbackOk: () => void, callbackNg: () => void) {\n\n Logger.debug(\"setGreetingText idx[\" + idx + \"] isSetModeNew[\" + isSetModeNew + \"]\");\n\n // 1件目は位置指定あり、それ以外はsonbpにおまかせ\n // ※1件目でもデザインマスタの設定がなければsonbpに任せる(中心中央)\n let useDefpos: boolean = false;\n if (this.greetingList.length === 0) {\n useDefpos = true;\n }\n else if (this.greetingList[0].id === idx) {\n // 1件目の更新の場合も設定する\n useDefpos = true;\n }\n\n let def_posi: any = null;\n if (useDefpos) {\n if (!hasNoDesignMst && (0 < reqParam.width && 0 < reqParam.height)) {\n // デザインマスタに従う\n let x: number = null;\n let y: number = null;\n if (util.verify.isNotEmpty(this.greetingDesign)) {\n x = this.greetingDesign.x;\n y = this.greetingDesign.y;\n }\n // x,y -> mm ,w,h -> mm\n def_posi = { x: x, y: y, w: reqParam.width, h: reqParam.height, gen: reqParam.pivot };\n }\n }\n\n if (def_posi === null) {\n // 幅・高さは常に上位から設定されてくる前提\n def_posi = { x: null, y: null, w: reqParam.width, h: reqParam.height, gen: reqParam.pivot };\n }\n\n\n this.setText(sonbpIfconst.ITYPE_GREETING_TXT, idx, isSetModeNew, reqParam, def_posi, json, callbackOk, callbackNg);\n }\n\n /** 差出人テキスト配置\n * @param isSetModeNew :配置方法\n * @param setOrder :差出人パネル入力値\n * @param reqParam :組版実行時の共通パラメータ\n * @param json :組版結果JSON\n * @param callbackOk :OK時処理\n * @param callbackNg :NG時処理\n */\n public setSenderText(isSetModeNew: boolean, setOrder: edentity.senderTranEntityEx, reqParam: edentity.kumihanRequestParam, json: string, callbackOk: () => void, callbackNg: () => void) {\n\n Logger.debug(\"setSenderText isSetModeNew[\" + isSetModeNew + \"]\");\n\n let gen: number;\n if (setOrder.sender.type === edconst.EditConst.SENDER_TYPE_FREE) {\n // 自由入力の場合\n gen = reqParam.pivot;\n }\n else {\n // 上記以外の場合(通常入力(個人/法人))\n if (setOrder.charLayout === edconst.EditConst.CHAR_LAYOUT_Y) {\n // 横書き\n gen = 7;\n }\n else if (setOrder.charLayout === edconst.EditConst.CHAR_LAYOUT_CY) {\n // センター横\n gen = 8;\n }\n else {\n // 上記以外(縦書き)\n gen = 9;\n }\n }\n\n let def_posi: any = null;\n if (reqParam.width && reqParam.height) {\n if (0 < reqParam.width && 0 < reqParam.height) {\n let x: number = null;\n let y: number = null;\n if (util.verify.isNotEmpty(this.senderDesign)) {\n x = this.senderDesign.x;\n y = this.senderDesign.y;\n }\n // x,y -> mm ,w,h -> mm\n def_posi = { x: x, y: y, w: reqParam.width, h: reqParam.height, gen: gen };\n }\n }\n\n this.setText(sonbpIfconst.ITYPE_SENDER_TXT, \"0\", isSetModeNew, reqParam, def_posi, json, callbackOk, callbackNg);\n }\n\n /**\n * DB/iDBの情報から、あいさつ文情報一覧を復元\n * @param restoreFromIdb :iDBから復元するかフラグ\n * @param idbGreetingList :iDBのあいさつ文情報\n * @param greetingList :編集情報取得のあいさつ文情報\n * @param fontMaster :フォントマスタの一覧\n * @param colorMaster :色マスタの一覧\n */\n public restoreGreetingList(restoreFromIdb: boolean, idbGreetingList: idbEdit.greetingInfo[], greetingList: GetEditInfo.GetEditInfoGreetingTranEntity[], fontMaster: GetEditInfo.GetEditInfoFontEntity[], colorMaster: GetEditInfo.GetEditInfoColorEntity[]): void {\n\n this.greetingList = [];\n\n if (restoreFromIdb && idbGreetingList) {\n Logger.debug(\"あいさつ文情報一覧 indexDBからの復元\");\n\n // idbの情報から復元\n for (let i: number = 0; i < idbGreetingList.length; i++) {\n\n let newItem: edentity.greetingTranEntityEx = new edentity.greetingTranEntityEx();\n // インデックス\n newItem.id = idbGreetingList[i].id + \"\";\n // 文章番号\n newItem.greetingNo = idbGreetingList[i].greetingNo;\n // フォント名\n newItem.font = idbGreetingList[i].fontId;\n // フォントサイズ\n newItem.size = idbGreetingList[i].size;\n // color(CMYK)\n newItem.color = idbGreetingList[i].colorId;\n // フチ文字のcolor(CMYK)\n newItem.outlineColor = idbGreetingList[i].outlineColor;\n // 行揃え\n newItem.align = idbGreetingList[i].align;\n // あいさつ文テキスト\n newItem.text = idbGreetingList[i].text;\n // 組方向\n newItem.direction = idbGreetingList[i].direction;\n\n // フチ文字にする\n newItem.outlineChar = util.verify.isNotEmpty(newItem.outlineColor) ? true : false;\n\n // フォントマスタ\n newItem.fontMaster = util.relic.listFind(fontMaster, (f: GetEditInfo.GetEditInfoFontEntity) => {\n return f.id === newItem.font;\n });\n // 文字色マスタ\n newItem.fontColorMaster = util.relic.listFind(colorMaster, (c: GetEditInfo.GetEditInfoColorEntity) => {\n return c.id === newItem.color;\n });\n if (newItem.outlineChar) {\n // フチ文字色トマスタ\n newItem.outlineFontColorMaster = util.relic.listFind(colorMaster, (c: GetEditInfo.GetEditInfoColorEntity) => {\n return c.id === newItem.outlineColor;\n });\n }\n // 文字レイアウト\n newItem.charLayout = edtool.editUtil.directionToCharlayout(newItem.direction);\n // 行揃え\n newItem.alignDispVal = edtool.editUtil.alignToAlignDispVal(newItem.charLayout, newItem.align);\n\n this.greetingList.push(newItem);\n }\n\n }\n else if (!restoreFromIdb && greetingList) {\n Logger.debug(\"あいさつ文情報一覧 DBからの復元\");\n\n // dbの情報から復元\n for (let i: number = 0; i < greetingList.length; i++) {\n\n let newItem: edentity.greetingTranEntityEx = new edentity.greetingTranEntityEx();\n // インデックス\n newItem.id = greetingList[i].id + \"\";\n // 文章番号\n newItem.greetingNo = greetingList[i].greetingNo;\n // フォント名\n newItem.font = greetingList[i].font;\n // フォントサイズ\n newItem.size = greetingList[i].size;\n // color(CMYK)\n newItem.color = greetingList[i].color;\n // フチ文字のcolor(CMYK)\n newItem.outlineColor = greetingList[i].outlineColor;\n // 行揃え\n newItem.align = greetingList[i].align;\n // あいさつ文テキスト\n newItem.text = greetingList[i].text;\n // 組方向\n newItem.direction = greetingList[i].direction;\n\n // フチ文字にする\n newItem.outlineChar = util.verify.isNotEmpty(newItem.outlineColor) ? true : false;\n\n // フォントマスタ\n newItem.fontMaster = util.relic.listFind(fontMaster, (f: GetEditInfo.GetEditInfoFontEntity) => {\n return f.id === newItem.font;\n });\n // 文字色マスタ\n newItem.fontColorMaster = util.relic.listFind(colorMaster, (c: GetEditInfo.GetEditInfoColorEntity) => {\n return c.id === newItem.color;\n });\n if (newItem.outlineChar) {\n // フチ文字色トマスタ\n newItem.outlineFontColorMaster = util.relic.listFind(colorMaster, (c: GetEditInfo.GetEditInfoColorEntity) => {\n return c.id === newItem.outlineColor;\n });\n }\n // 文字レイアウト\n newItem.charLayout = edtool.editUtil.directionToCharlayout(newItem.direction);\n // 行揃え\n newItem.alignDispVal = edtool.editUtil.alignToAlignDispVal(newItem.charLayout, newItem.align);\n\n this.greetingList.push(newItem);\n }\n }\n }\n\n /**\n * 差出人情報の復元\n * @param senderDb :差出人情報\n * @param fontMaster :フォントマスタ\n * @param colorMaster :カラーマスタ\n */\n public restoreSenderInfo(senderDb: GetEditInfo.GetEditInfoSenderEntity, fontMaster: GetEditInfo.GetEditInfoFontEntity[], colorMaster: GetEditInfo.GetEditInfoColorEntity[]) {\n\n this.senderInfo = new edentity.senderTranEntityEx();\n\n //this.senderInfo.sender = { ...senderDb };\n this.senderInfo.sender = JSON.parse(JSON.stringify(senderDb));\n\n // フチ文字にする\n this.senderInfo.outlineChar = util.verify.isNotEmpty(this.senderInfo.sender.outlineColor) ? true : false;\n\n // フォントマスタ\n this.senderInfo.fontMaster = util.relic.listFind(fontMaster, (f: GetEditInfo.GetEditInfoFontEntity) => {\n return f.id === this.senderInfo.sender.font;\n });\n if (!this.senderInfo.fontMaster) {\n this.senderInfo.fontMaster = fontMaster[0];\n }\n\n // 文字色マスタ\n this.senderInfo.fontColorMaster = util.relic.listFind(colorMaster, (c: GetEditInfo.GetEditInfoColorEntity) => {\n return c.id === this.senderInfo.sender.color;\n });\n if (!this.senderInfo.fontColorMaster) {\n this.senderInfo.fontColorMaster = colorMaster[0];\n }\n\n if (this.senderInfo.outlineChar) {\n // フチ文字色トマスタ\n this.senderInfo.outlineFontColorMaster = util.relic.listFind(colorMaster, (c: GetEditInfo.GetEditInfoColorEntity) => {\n return c.id === this.senderInfo.sender.outlineColor;\n });\n if (!this.senderInfo.outlineFontColorMaster) {\n this.senderInfo.outlineFontColorMaster = colorMaster[0];\n }\n }\n\n // 文字レイアウト\n this.senderInfo.charLayout = edtool.editUtil.directionToCharlayout(this.senderInfo.sender.direction);\n\n // 行揃え\n this.senderInfo.alignDispVal = edtool.editUtil.alignToAlignDispVal(this.senderInfo.charLayout, this.senderInfo.sender.align);\n\n if (util.verify.isNotEmpty(this.senderInfo.sender)) {\n if (util.verify.isNotEmpty(this.senderInfo.sender.senderInfo.addresses)) {\n if (0 < this.senderInfo.sender.senderInfo.addresses.length) {\n // 電話番号1\n this.senderInfo.Tel1DispVal = edtool.editUtil.telTypeToTelDispVal(this.senderInfo.sender.senderInfo.addresses[0].telType1);\n // 電話番号2\n this.senderInfo.Tel2DispVal = edtool.editUtil.telTypeToTelDispVal(this.senderInfo.sender.senderInfo.addresses[0].telType2);\n }\n }\n }\n }\n\n /**\n * 銀塩/印刷 仕上がりの変更\n * @param area_type :仕上がり区分(1=印刷(白フチ)、2=銀塩(赤線))\n */\n public setAreaView(area_type: string): void {\n\n // sonbpへ依頼\n this.sonbpIf.setAreaView(area_type);\n\n }\n\n /**\n * PDF保存\n * @param callbackOk :OK時処理\n * @param callbackNg :NG時処理\n */\n public save(callbackOk: () => void, callbackNg: () => void) {\n\n // sonbpへ依頼\n this.sonbpIf.save((res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n\n }\n\n /**\n * 差出人情報パネルの復元\n * @param that :this\n * @param target:差出人情報\n */\n public setSenderOrder(that: any, target: edentity.senderTranEntityEx) {\n\n // 入力値設定\n\n // フォント\n that.vue.$data.SenderInfo.Setting.Font = target.fontMaster.name;\n\n // 文字色\n that.vue.$data.SelectCharColor = target.fontColorMaster.id;\n\n // フチ文字\n that.vue.$data.SenderInfo.Setting.OutlineFont = target.sender.outlineColor ? true : false;\n\n // フチ文字色\n if (that.vue.$data.SenderInfo.Setting.OutlineFont) {\n that.vue.$data.SelectOutlineCharColor = target.outlineFontColorMaster.id;\n }\n else {\n that.vue.$data.SelectOutlineCharColor = that.colorMasterList[0].id;\n }\n\n // 個人入力?\n if (target.sender.type === edconst.EditConst.SENDER_TYPE_FREE) {\n that.vue.$data.SenderInfo.NormalInput.PersonalUse = true;\n }\n else {\n that.vue.$data.SenderInfo.NormalInput.PersonalUse = (target.sender.type === edconst.EditConst.SENDER_TYPE_PORSONAL) ? true : false;\n }\n\n // 文字レイアウト\n that.vue.$data.SenderInfo.Setting.CharLayoutEx = that.getCharLayout(target.sender.senderInfo.isHojin, target.sender.layout, false);\n that.vue.$data.SenderInfo.Setting.CharLayout = edtool.editUtil.directionToCharlayout(target.sender.direction);\n\n // 文字サイズ\n const fontSizeDefault: number = (that.vue.$data.SenderInfo.Setting.CharLayout === edconst.EditConst.CHAR_LAYOUT_T) ? edconst.EditConst.FONT_SIZE_DEFAULT_T : edconst.EditConst.FONT_SIZE_DEFAULT_Y;\n that.vue.$data.SenderInfo.Setting.FontSize = target.sender.size === 0 ? fontSizeDefault : target.sender.size;\n\n // 行揃え(組方向)\n if (target.charLayout === edconst.EditConst.CHAR_LAYOUT_Y) {\n that.vue.$data.SenderInfo.Setting.AlignY = target.alignDispVal;\n that.vue.$data.SenderInfo.ShowSenderAlignY = true;\n }\n else if (target.charLayout === edconst.EditConst.CHAR_LAYOUT_CY) {\n that.vue.$data.SenderInfo.Setting.AlignY = target.alignDispVal;\n that.vue.$data.SenderInfo.ShowSenderAlignY = true;\n }\n else {\n that.vue.$data.SenderInfo.Setting.AlignT = target.alignDispVal;\n that.vue.$data.SenderInfo.ShowSenderAlignY = false;\n }\n\n // 入力方法別に入力値を取得\n if (target.sender.type === edconst.EditConst.SENDER_TYPE_FREE) {\n // 自由入力\n // 文章\n that.vue.$data.SenderInfo.FreeInput = target.sender.senderInfo.free;\n that.vue.$data.SenderInfo.IsNormalInput = false;\n }\n else {\n that.vue.$data.SenderInfo.IsNormalInput = true;\n\n // 住所\n if (target.sender.senderInfo.addresses && 0 < target.sender.senderInfo.addresses.length) {\n // 郵便番号\n that.vue.$data.SenderInfo.NormalInput.ZipCode1 = target.sender.senderInfo.addresses[0].yubin1;\n that.vue.$data.SenderInfo.NormalInput.ZipCode2 = target.sender.senderInfo.addresses[0].yubin2;\n\n // 住所\n that.vue.$data.SenderInfo.NormalInput.Address1 = target.sender.senderInfo.addresses[0].jusho1;\n that.vue.$data.SenderInfo.NormalInput.Address2 = target.sender.senderInfo.addresses[0].jusho2;\n that.vue.$data.SenderInfo.NormalInput.Address3 = target.sender.senderInfo.addresses[0].jusho3;\n\n // 電話番号1\n that.vue.$data.SenderInfo.NormalInput.Contact[0].Type = target.Tel1DispVal;\n that.vue.$data.SenderInfo.NormalInput.Contact[0].Tel1 = target.sender.senderInfo.addresses[0].telNo1_1;\n that.vue.$data.SenderInfo.NormalInput.Contact[0].Tel2 = target.sender.senderInfo.addresses[0].telNo1_2;\n that.vue.$data.SenderInfo.NormalInput.Contact[0].Tel3 = target.sender.senderInfo.addresses[0].telNo1_3;\n\n // 電話番号2\n that.vue.$data.SenderInfo.NormalInput.Contact[1].Type = target.Tel2DispVal;\n that.vue.$data.SenderInfo.NormalInput.Contact[1].Tel1 = target.sender.senderInfo.addresses[0].telNo2_1;\n that.vue.$data.SenderInfo.NormalInput.Contact[1].Tel2 = target.sender.senderInfo.addresses[0].telNo2_2;\n that.vue.$data.SenderInfo.NormalInput.Contact[1].Tel3 = target.sender.senderInfo.addresses[0].telNo2_3;\n }\n\n // e-mal\n if (target.sender.senderInfo.emails) {\n for (let i: number = 0; i < target.sender.senderInfo.emails.length; i++) {\n if (i === 0) {\n // e-mal 1\n that.vue.$data.SenderInfo.NormalInput.Email.Mail1 = target.sender.senderInfo.emails[i].address;\n }\n else if (i === 1) {\n // e-mal 2\n that.vue.$data.SenderInfo.NormalInput.Email.Mail2 = target.sender.senderInfo.emails[i].address;\n }\n }\n }\n\n // 名前\n if (target.sender.senderInfo.names) {\n for (let i: number = 0; i < target.sender.senderInfo.names.length; i++) {\n that.vue.$data.SenderInfo.NormalInput.Names[i].LastName = target.sender.senderInfo.names[i].lastName;\n that.vue.$data.SenderInfo.NormalInput.Names[i].LastNameKana = target.sender.senderInfo.names[i].lastRubi;\n that.vue.$data.SenderInfo.NormalInput.Names[i].FirstName = target.sender.senderInfo.names[i].firstName;\n that.vue.$data.SenderInfo.NormalInput.Names[i].FirstNameKana = target.sender.senderInfo.names[i].firstRubi;\n that.vue.$data.SenderInfo.NormalInput.Names[i].PS = target.sender.senderInfo.names[i].ps;\n }\n }\n\n if (target.sender.type === edconst.EditConst.SENDER_TYPE_CORP && target.sender.senderInfo.corps && 0 < target.sender.senderInfo.corps.length) {\n // 法人\n // 会社名\n that.vue.$data.SenderInfo.NormalInput.Company.Name = target.sender.senderInfo.corps[0].name;\n // 部署名\n that.vue.$data.SenderInfo.NormalInput.Company.Department = target.sender.senderInfo.corps[0].busyo;\n // 肩書\n that.vue.$data.SenderInfo.NormalInput.Company.Position = target.sender.senderInfo.names[0].title;\n }\n }\n\n\n if (!that.usePcDesign) {\n // SP用\n if (target.sender.type === edconst.EditConst.SENDER_TYPE_FREE) {\n that.vue.$data.SenderInfo.Setting.Format = edconst.EditConst.SENDER_TYPE_FREE_STR;\n }\n else if (target.sender.type === edconst.EditConst.SENDER_TYPE_CORP) {\n that.vue.$data.SenderInfo.Setting.Format = edconst.EditConst.SENDER_TYPE_CORP_STR;\n }\n else {\n that.vue.$data.SenderInfo.Setting.Format = edconst.EditConst.SENDER_TYPE_PORSONAL_STR;\n }\n }\n }\n\n /**\n * パラメータ値を条件に文字レイアウトコンボ選択値を取得\n * @param isHojin :個人/法人フラグ\n * @param layoutCd :レイアウトコード\n * @param isFree :自由入力フラグ\n */\n public getCharLayout(isHojin: boolean, layoutCd: string, isFree: boolean): string {\n\n let charLayout: string;\n\n // レイアウト記号\n if (isHojin) {\n // 法人の場合\n if (layoutCd === edconst.EditConst.LAYOUTCD_HOJIN_T) {\n // 縦\n charLayout = edconst.EditConst.CHAR_LAYOUT_T;\n }\n else if (layoutCd === edconst.EditConst.LAYOUTCD_HOJIN_CY) {\n // センター横\n charLayout = isFree ? edconst.EditConst.CHAR_LAYOUT_Y : edconst.EditConst.CHAR_LAYOUT_CY;\n }\n else {\n // 上記以外(横)\n charLayout = edconst.EditConst.CHAR_LAYOUT_Y;\n }\n }\n else {\n // 個人の場合\n if (layoutCd === edconst.EditConst.LAYOUTCD_PERSONAL_T) {\n // 縦\n charLayout = edconst.EditConst.CHAR_LAYOUT_T;\n }\n else if (layoutCd === edconst.EditConst.LAYOUTCD_PERSONAL_CY) {\n // センター横\n charLayout = isFree ? edconst.EditConst.CHAR_LAYOUT_Y : edconst.EditConst.CHAR_LAYOUT_CY;\n }\n else {\n // 上記以外(横)\n charLayout = edconst.EditConst.CHAR_LAYOUT_Y;\n }\n }\n\n return charLayout;\n }\n\n /**\n * スタンプ用 file_keyの生成\n * @param fileName :ファイル名(拡張子あり+暗号化)\n * @description :例)STAMP@ファイル名\n */\n public createStampFileKey(fileName: string): string {\n\n return \"STAMP\" + \"@\" + fileName;\n }\n\n /**\n * Myスタンプ用 file_keyの生成\n * @param fileName :ファイル名(拡張子あり+暗号化)\n * @description :例)STAMP@ファイル名\n */\n public createMyStampFileKey(fileId: string): string {\n return \"MYSTAMP\" + \"@\" + this.encCreateDate + \"@\" + this.tempId + \"@\" + fileId;\n }\n\n /**\n * スタンプを配置\n * @param idx :アイテム番号\n * @param fileName :ファイル名(暗号化)\n * @param callbackOk :OK時処理\n * @param callbackNg :NG時処理\n */\n public setStamp(idx: number, stampMaster: GetEditInfo.GetEditInfoStampCategoryEntity, callbackOk: () => void, callbackNg: () => void) {\n\n const fileKey: string = this.createStampFileKey(stampMaster.name);\n const img_size = { w: stampMaster.width, h: stampMaster.height };\n\n Logger.debug(\"スタンプを配置 idx[\" + idx + \"] fileKey[\" + fileKey + \"] master[\" + JSON.stringify(stampMaster) + \"]\");\n Logger.debug(\"スタンプを配置 width[\" + img_size.w + \"]pt height[\" + img_size.h + \"]pt\");\n\n // sonbpへ依頼\n this.sonbpIf.setStamp(sonbpIfconst.ITYPE_STAMP_IMG, idx.toString(), fileKey, stampMaster.id, img_size, (res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n /**\n * Myステッカーを配置\n * @param idx :アイテム番号\n * @param fileName :ファイル名(暗号化)\n * @param callbackOk :OK時処理\n * @param callbackNg :NG時処理\n */\n public setMyStamp(idx: number, stampMaster: edentity.uploadPhoto, callbackOk: () => void, callbackNg: () => void) {\n\n const fileKey: string = this.createMyStampFileKey(stampMaster.fileId);\n const img_size = { w: stampMaster.width, h: stampMaster.height };\n\n Logger.debug(\"Myステッカーを配置 idx[\" + idx + \"] fileKey[\" + fileKey + \"] master[\" + JSON.stringify(stampMaster) + \"]\");\n Logger.debug(\"Myステッカーを配置 width[\" + img_size.w + \"]pt height[\" + img_size.h + \"]pt\");\n\n // sonbpへ依頼\n this.sonbpIf.setStamp(sonbpIfconst.ITYPE_MYSTAMP_IMG, idx.toString(), fileKey, stampMaster.fileId, img_size, (res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n /**\n * 手書きスタンプを配置\n * @param idx :アイテム番号\n * @param fileName :ファイル名(暗号化)\n * @param callbackOk :OK時処理\n * @param callbackNg :NG時処理\n */\n public setTegakiStamp(idx: number, fileIdWidthAtmark: string, width: number, height: number, callbackOk: () => void, callbackNg: () => void) {\n\n const fileKey: string = \"FONTGENIC\" + \"@\" + this.encCreateDate + \"@\" + this.tempId + \"@\" + fileIdWidthAtmark;\n const img_size = { w: width, h: height };\n\n Logger.debug(\"手書きスタンプを配置 idx[\" + idx + \"] fileKey[\" + fileKey + \"]\");\n Logger.debug(\"手書きスタンプを配置 width[\" + img_size.w + \"]pt height[\" + img_size.h + \"]pt\");\n\n // sonbpへ依頼\n this.sonbpIf.setStampByFontGenic(idx.toString(), fileKey, fileIdWidthAtmark, img_size, (res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n /**\n * スタンプ削除(カレント)\n * @param callbackOk:OK時処理\n * @param callbackNg:NG時処理\n */\n public removeStampByCurrent(callbackOk: () => void, callbackNg: () => void) {\n\n // sonbpへ依頼\n this.sonbpIf.removeStamp((res: any) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n /**\n * スタンプ(マスタ・マイ・手書き 全て)アイテムの取得\n */\n public getAllStampList(callbackOk: (vpList: itemVenderProperty[]) => void): void {\n\n this.sonbpIf.getStampList((res: any, list: itemVenderProperty[]) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk(list);\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n }\n });\n\n }\n\n /**\n * スタンプ(マスタ)アイテムの取得\n */\n public getMstStampList(callbackOk: (vpList: itemVenderProperty[]) => void): void {\n\n this.sonbpIf.getItems([sonbpIfconst.ITYPE_STAMP_IMG], (res: any, list: itemVenderProperty[]) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk(list);\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n }\n });\n\n }\n\n /**\n * マイステッカーアイテムの取得\n */\n public getMyStampList(callbackOk: (vpList: itemVenderProperty[]) => void): void {\n\n this.sonbpIf.getItems([sonbpIfconst.ITYPE_MYSTAMP_IMG], (res: any, list: itemVenderProperty[]) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk(list);\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n }\n });\n }\n\n /**\n * 手書きスタンプアイテムの取得\n */\n public getTegakiStampList(callbackOk: (vpList: itemVenderProperty[]) => void): void {\n\n this.sonbpIf.getItems([sonbpIfconst.ITYPE_FONTGENIC_IMG], (res: any, list: itemVenderProperty[]) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk(list);\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n }\n });\n }\n\n /**\n * 2つの画像を入れ替え\n * @param idxFrom ;画像枠(From)のアイテム番号\n * @param idxTo :画像枠(To)のアイテム番号\n * @param callbackOk :OK時処理\n * @param callbackNg :NG時処理\n */\n public mutualTradePhoto(idxA: string, idxB: string, callbackOk: () => void, callbackNg: () => void): void {\n\n this.sonbpIf.mutualTradePhoto(idxA, idxB, (res: any, list: itemVenderProperty[]) => {\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n\n }\n\n /**\n * 操作履歴準備(transaction sart)\n */\n public historyStart(): boolean {\n\n Logger.debug(\"操作履歴準備(transaction sart)\");\n\n return this.sonbpIf.historyStart();\n\n }\n\n /**\n * 操作確定(transaction commit)\n */\n public historyCommit(): boolean {\n\n Logger.debug(\"操作確定(transaction commit)\");\n\n return this.sonbpIf.historyCommit();\n\n }\n\n /**\n * 操作取消(transaction rollback)\n * @param callbackOk :OK時処理\n * @param callbackNg :NG時処理\n */\n public historyAllUndo(callbackOk: () => void, callbackNg: () => void): void {\n\n this.sonbpIf.historyAllUndo((res: any) => {\n\n Logger.debug(\"操作取消(transaction rollback) [\" + JSON.stringify(res) + \"]\");\n\n // 結果判定\n if (res.code === 0) {\n // 正常終了の場合\n callbackOk();\n }\n else {\n // 異常終了の場合\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n\n //--------------------------------------------------------------------------\n // イベント\n //--------------------------------------------------------------------------\n\n /**\n * 画像一覧→画像のドラッグ開始イベント\n * @param event :ドラッグイベントオブジェクト\n * @param target :対象画像情報\n * @param callbackOk:ドロップOK処理\n * @param callbackNg:ドロップNG処理\n */\n public onDragStartPhoto(event: DragEvent, fileId: string, width: number, height: number, callbackOk: (vpList: itemVenderProperty[]) => void, callbackNg: () => void) {\n\n let imgElement: HTMLImageElement = new Image();\n imgElement.src = (event as any).currentTarget.src;\n\n const imgSize: any = { w: width, h: height };\n\n let toCorrect = this.designMaster.editMode != edconst.EditConst.DSN_MST_EDIT_MODE_LIMIT;\n let fileKey = this.createPhotoFileKey(fileId, toCorrect);\n\n Logger.debug(\"setPhotoDragger fileKey[\" + fileKey + \"] fileId[\" + fileId + \"] imgSize[\" + JSON.stringify(imgSize) + \"]\");\n\n // sonbpへドラッグ情報を通知\n this.sonbpIf.setPhotoDragger(event, imgElement, fileKey, fileId, imgSize, (res: any) => {\n // 結果判定\n if (res.code === 0) {\n // ドロップOK\n\n // 画像リスト取得\n this.sonbpIf.getPhotoList((res: any, list: itemVenderProperty[]) => {\n // 画像一覧の使用中画像の判定(アイコン表示制御)\n callbackOk(list);\n });\n }\n else {\n // ドロップNG\n Logger.error(res.msg);\n callbackNg();\n }\n });\n }\n\n}\n\n/**\n * sonbpアイテムのベンダープロパティ\n */\nexport class itemVenderProperty {\n /**\n * アイテム区分\n */\n public item_type: string;\n /**\n * アイテム番号\n */\n public idx: string;\n /**\n * 画像のファイルID\n */\n public file_id: string;\n /**\n * X座標\n */\n public x: number;\n /**\n * Y座標\n */\n public y: number;\n /**\n * 幅\n */\n public w: number;\n /**\n * 高さ\n */\n public h: number;\n /**\n * 回転角度\n */\n public r: number;\n /**\n * 枠ぴったり区分\n */\n public waku_pita: boolean;\n}\n","import Vue from \"vue\";\r\nimport { editController } from \"../edit\";\r\nimport { sonbpIFContoroller } from \"./edit.sonbp_if\";\r\n\r\n\r\n/**\r\n * 編集画面関連の基底クラス\r\n */\r\nexport abstract class BaseLogicClass {\r\n\r\n// #region ■定数・変数\r\n\r\n protected _vue: Vue; // Vue.jsオブジェクト\r\n protected sonbpIfController: sonbpIFContoroller; // sonbpIF関連操作\r\n protected _usePcDesign: boolean; // PCサイト?\r\n protected _authToken: string; // 認証トークン\r\n\r\n /**\r\n * TODO \r\n * 相互参照は不本意だが、editController内の状態・メソッドを共有が必要のためやむなし・・・。\r\n * できれば、最終的には削除したい。。\r\n */\r\n protected _edctrl: editController;\r\n\r\n// #endregion\r\n\r\n// #region ■起動\r\n\r\n /**\r\n * コンストラクタ\r\n */\r\n constructor(edctrl: editController) {\r\n this._edctrl = edctrl;\r\n }\r\n\r\n /**\r\n * 初期化\r\n */\r\n public init(v: Vue, sonbpIf: sonbpIFContoroller, usePcDesign: boolean, authToken: string) {\r\n this._vue = v;\r\n this.sonbpIfController = sonbpIf;\r\n this._usePcDesign = usePcDesign;\r\n this._authToken = authToken;\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■イベント\r\n// #endregion\r\n\r\n// #region ■内部関数\r\n\r\n /**\r\n * 可視設定フラグを一旦全てOFFにする(SP用)\r\n */\r\n protected setShowFlgAllOFF() {\r\n\r\n if (this._usePcDesign) {\r\n //PC\r\n\r\n // パネルの表示制御\r\n this._vue.$data.Show.BalloonGuidance = false;\r\n this._vue.$data.Show.PhotoList = false;\r\n this._vue.$data.Show.OparatePallet = false;\r\n this._vue.$data.Show.GreetingPanel = false;\r\n this._vue.$data.Show.SenderPanel = false;\r\n this._vue.$data.Show.StampPanel = false;\r\n this._vue.$data.Show.MyStampPanel = false;\r\n this._vue.$data.Show.TegakiStampPanel = false;\r\n\r\n\r\n // ツールメニューの活性制御\r\n this._vue.$data.ActiveSetPhotoMenu = false;\r\n this._vue.$data.ActiveManiPhotoMenu = false;\r\n this._vue.$data.ActiveGreetingMenu = false;\r\n this._vue.$data.ActiveSenderMenu = false;\r\n this._vue.$data.ActiveStampMenu = false;\r\n this._vue.$data.ActiveMyStampMenu = false;\r\n this._vue.$data.ActiveTegakiStampMenu = false;\r\n this._vue.$data.ActiveFinishSelectMenu = false;\r\n\r\n } else {\r\n //SP\r\n\r\n // ヘッダーメニュー\r\n this._vue.$data.Show.ReturnFlowBtn = false;\r\n this._vue.$data.Show.ReturnHomeBtn = false;\r\n this._vue.$data.Show.ReturnHomeExBtn = false;\r\n this._vue.$data.Show.ReturnStampHomeBtn = false;\r\n this._vue.$data.Show.ReturnMyStampHomeBtn = false;\r\n this._vue.$data.Show.ReturnTegakiStampHomeBtn = false;\r\n this._vue.$data.Show.NextFlowBtn = false;\r\n this._vue.$data.Show.NextHomeFromImgListBtn = false;\r\n this._vue.$data.Show.NextHomeFromMyStampListBtn = false;\r\n this._vue.$data.Show.NextHomeFromTegakiStampListBtn = false;\r\n\r\n // メインメニュー\r\n this._vue.$data.Show.CommitNextHomeBtn = false;\r\n this._vue.$data.Show.StampDeleteBtn = false;\r\n this._vue.$data.Show.MyStampListTrashBtn = false;\r\n this._vue.$data.Show.TegakiStampListTrashBtn = false;\r\n\r\n // 編集パネル\r\n this._vue.$data.Show.GreetingPanel = false;\r\n this._vue.$data.Show.SenderPanel = false;\r\n this._vue.$data.Show.StampPanel = false;\r\n this._vue.$data.Show.MyStampPanel = false;\r\n this._vue.$data.Show.TegakiStampPanel = false;\r\n this._vue.$data.Show.TegakiColorPanel = false;\r\n\r\n // 編集エリア\r\n this._vue.$data.Show.EditArea = false;\r\n this._vue.$data.Show.PhotoList = false;\r\n this._vue.$data.Show.MyStampList = false;\r\n this._vue.$data.Show.TegakiStampList = false;\r\n\r\n // フッターメニュー\r\n this._vue.$data.Show.FooterMenu = false;\r\n this._vue.$data.Show.SetPhotoMenu = false;\r\n this._vue.$data.Show.SetMyStampMenu = false;\r\n this._vue.$data.Show.EditImageMenu = false;\r\n this._vue.$data.Show.OparatePallet = false;\r\n }\r\n }\r\n\r\n// #endregion\r\n\r\n}\r\n","import * as sonbpIfconst from \"../sonbpIf/base/constants\";\r\nimport { BaseLogicClass } from \"./edit.baseLogic\";\r\nimport { constDialogMessage, dialogUtil } from \"../util\";\r\nimport { util } from \"..\";\r\nimport { itemVenderProperty, sonbpIFContoroller } from \"./edit.sonbp_if\";\r\nimport { Logger } from \"../util/logger\";\r\nimport { EDIT_MODE_KIND } from \"./edit.const\";\r\nimport { uploadPhoto } from \"./edit.entity\";\r\n\r\n\r\n/**\r\n * 右ペイン オブジェクト操作パネル 向けの各種処理\r\n * ※ 全処理モード共通の動作のみをここに配置しています。各モード専用動作はそれぞれのxxxxLogic.tsに配置すること。\r\n */\r\nexport class ObjectManiLogicClass extends BaseLogicClass {\r\n\r\n// #region ■定数・変数\r\n\r\n protected _uploadPhotoList: uploadPhoto[];\r\n protected _uploadMyStampList: uploadPhoto[];\r\n protected _uploadTegakiStampList: uploadPhoto[];\r\n\r\n// #endregion\r\n\r\n// #region ■起動\r\n\r\n /**\r\n * 初期化\r\n * @override\r\n */\r\n public init(v: Vue, sonbpIf: sonbpIFContoroller, usePcDesign: boolean, authToken: string) {\r\n super.init(v, sonbpIf, usePcDesign, authToken);\r\n\r\n this._uploadPhotoList = (this._edctrl)._photoLogic._uploadImageList;\r\n this._uploadMyStampList = (this._edctrl)._myStampLogic._uploadImageList;\r\n this._uploadTegakiStampList = (this._edctrl)._tegakiStampLogic._uploadImageList;\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■イベント\r\n\r\n /**\r\n * 操作パネル→回転(90度)ボタン押下メソッド\r\n * */\r\n public btnClickRotate90(rotateRight: boolean, event: JQueryEventObject): void {\r\n\r\n const setDeg: number = rotateRight ? 90 : -90;\r\n\r\n // sonbpへ回転依頼\r\n this.sonbpIfController.rotateItem(setDeg,\r\n () => {\r\n // 正常終了の場合\r\n },\r\n () => {\r\n // 上記以外の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_ROTATE_PHOTO, dialogUtil.closeErrorDialog);\r\n });\r\n }\r\n\r\n /**\r\n * 操作パネル→回転(1度)ボタン押下メソッド\r\n * */\r\n public btnClickRotate1(rotateRight: boolean, event: JQueryEventObject): void {\r\n\r\n const setDeg: number = rotateRight ? 1 : -1;\r\n\r\n // sonbpへ回転依頼\r\n this.sonbpIfController.rotateItem(setDeg,\r\n () => {\r\n // 正常終了の場合\r\n },\r\n () => {\r\n // 上記以外の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_ROTATE_PHOTO, dialogUtil.closeErrorDialog);\r\n });\r\n }\r\n\r\n /**\r\n * 操作パネル→拡大/縮小ボタン押下メソッド\r\n * */\r\n public btnClickScale(scaleUp: boolean, event: JQueryEventObject): void {\r\n\r\n const setScale: number = scaleUp ? 1.05 : 0.95;\r\n\r\n // sonbpへ拡縮依頼\r\n this.sonbpIfController.scaleItem(setScale,\r\n () => {\r\n // 正常終了の場合\r\n },\r\n () => {\r\n // 上記以外の場合\r\n const msg: string = scaleUp ? constDialogMessage.ERROR_EDIT_SCALEUP_PHOTO : constDialogMessage.ERROR_EDIT_SCALEDOWN_PHOTO;\r\n util.dialogUtil.createErrorDialog(msg, dialogUtil.closeErrorDialog);\r\n });\r\n }\r\n\r\n /**\r\n * 操作パネル→移動ボタン押下メソッド\r\n * */\r\n public btnClickMove(whichMove: number, event: JQueryEventObject): void {\r\n\r\n let x: number;\r\n let y: number;\r\n\r\n if (whichMove === 1) {\r\n // 上へ移動\r\n x = 0;\r\n y = 1;\r\n\r\n } else if (whichMove === 2) {\r\n // 下へ移動\r\n x = 0;\r\n y = -1;\r\n\r\n } else if (whichMove === 3) {\r\n // 右へ移動\r\n x = 1;\r\n y = 0;\r\n\r\n } else {\r\n // 左へ移動\r\n x = -1;\r\n y = 0;\r\n }\r\n\r\n // sonbpへ拡縮依頼\r\n this.sonbpIfController.moveItem(x, y,\r\n () => {\r\n // 正常終了の場合\r\n },\r\n () => {\r\n // 上記以外の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_MOVE_PHOTO, dialogUtil.closeErrorDialog);\r\n });\r\n }\r\n\r\n /**\r\n * スタンプ削除ボタン押下\r\n * ※ MSTスタンプ、Myステッカー、手書きスタンプ の共通動作\r\n */\r\n public btnClickStampDelete(event: JQueryEventObject): void {\r\n\r\n // 選択スタンプ取得\r\n const selectItem: itemVenderProperty = this.sonbpIfController.getSelectItem();\r\n\r\n // sonbpへ削除依頼\r\n this.sonbpIfController.removeStampByCurrent(\r\n () => {\r\n // 正常終了の場合\r\n Logger.debug(\"スタンプ削除 成功 =>\", selectItem);\r\n\r\n // 残スタンプを確認\r\n this.sonbpIfController.getAllStampList((stampList: itemVenderProperty[]) => {\r\n\r\n const that = this;\r\n stampList = stampList.filter(item => {\r\n if (that._edctrl.editMode == EDIT_MODE_KIND.STAMP && item.item_type == sonbpIfconst.ITYPE_STAMP_IMG) return true;\r\n if (that._edctrl.editMode == EDIT_MODE_KIND.MYSTAMP && item.item_type == sonbpIfconst.ITYPE_MYSTAMP_IMG) return true;\r\n if (that._edctrl.editMode == EDIT_MODE_KIND.FONTGENIC && item.item_type == sonbpIfconst.ITYPE_FONTGENIC_IMG) return true;\r\n return false;\r\n });\r\n\r\n if (stampList.length === 0) {\r\n // 0件の場合\r\n this._vue.$data.Stamp.DelBtnEnable = false;\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n\r\n if (this._edctrl.editMode == EDIT_MODE_KIND.MYSTAMP) {\r\n this._uploadMyStampList.forEach(row => row.isUsed = false);\r\n } else if (this._edctrl.editMode == EDIT_MODE_KIND.FONTGENIC) {\r\n this._vue.$data.SelectTegakiColor = \"\";\r\n this._uploadTegakiStampList.forEach(row => row.isUsed = false);\r\n }\r\n }\r\n else {\r\n // 上記以外の場合\r\n if (this._edctrl.editMode == EDIT_MODE_KIND.STAMP) {\r\n let leftStamp: boolean = true;\r\n this.sonbpIfController.setSelectFirstItem(sonbpIfconst.ITYPE_STAMP_IMG, () => { }, () => { leftStamp = false }, () => { leftStamp = false });\r\n if (leftStamp) {\r\n this._vue.$data.Stamp.DelBtnEnable = true;\r\n } else {\r\n this._vue.$data.Stamp.DelBtnEnable = false;\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n }\r\n } else if (this._edctrl.editMode == EDIT_MODE_KIND.MYSTAMP) {\r\n let leftStamp: boolean = true;\r\n this.sonbpIfController.setSelectFirstItem(sonbpIfconst.ITYPE_MYSTAMP_IMG, () => { }, () => { leftStamp = false }, () => { leftStamp = false });\r\n if (leftStamp) {\r\n this._vue.$data.Stamp.DelBtnEnable = true;\r\n } else {\r\n this._vue.$data.Stamp.DelBtnEnable = false;\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n }\r\n // 使用中フラグの辻褄合わせ\r\n let usedItem: itemVenderProperty = util.relic.listFind(stampList, (vp: itemVenderProperty) => { return vp.file_id === selectItem.file_id });\r\n let usedFlg = false;\r\n if (usedItem) {\r\n usedFlg = true;\r\n }\r\n let used: uploadPhoto = util.relic.listFind(this._uploadMyStampList, (up: uploadPhoto) => { return up.fileId === selectItem.file_id });\r\n used.isUsed = usedFlg;\r\n } else if (this._edctrl.editMode == EDIT_MODE_KIND.FONTGENIC) {\r\n\r\n // 未使用ならフラグ下す\r\n let targetId = selectItem.file_id.split('@')[0];\r\n let used: itemVenderProperty = util.relic.listFind(stampList, (vp: itemVenderProperty) => { return vp.file_id.split('@')[0] === targetId });\r\n if (!used) {\r\n let stamp: uploadPhoto = util.relic.listFind(that._uploadTegakiStampList, (upimg: uploadPhoto) => { return upimg.fileId === targetId });\r\n if (stamp) {\r\n stamp.isUsed = false;\r\n }\r\n }\r\n\r\n let leftStamp: boolean = true;\r\n this.sonbpIfController.setSelectFirstItem(sonbpIfconst.ITYPE_FONTGENIC_IMG, () => { }, () => { leftStamp = false }, () => { leftStamp = false });\r\n if (leftStamp) {\r\n this._vue.$data.Stamp.DelBtnEnable = true;\r\n } else {\r\n this._vue.$data.Stamp.DelBtnEnable = false;\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n }\r\n }\r\n }\r\n });\r\n\r\n }, () => {\r\n // 上記以外の場合\r\n Logger.error(\"スタンプ削除 失敗 =>\", selectItem);\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_DEL_STAMP, dialogUtil.closeErrorDialog);\r\n });\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■内部関数\r\n// #endregion\r\n\r\n}\r\n","import { BaseLogicClass } from \"../edit.baseLogic\";\r\nimport { EDIT_MODE_KIND } from \"../edit.const\";\r\nimport { itemVenderProperty } from \"../edit.sonbp_if\";\r\n\r\n\r\n/**\r\n * 写真・スタンプ系用の基底クラス\r\n */\r\nexport abstract class BaseStampLogicClass extends BaseLogicClass {\r\n\r\n// #region ■定数・変数\r\n\r\n protected readonly VIEW_TITLE: string; // 見出し\r\n protected readonly VIEW_MODE: string; // 処理モード\r\n protected readonly VIEW_ITEM_TYPE: string; // 処理対象のアイテム種別\r\n protected readonly PUT_MAX: number; // 配置可能な数\r\n\r\n// #endregion\r\n\r\n// #region ■イベント\r\n\r\n /**\r\n * ツールメニュー:スタンプ押下メソッド\r\n * @summary 編集モードをスタンプにして画面表示を切り替える。\r\n */\r\n abstract btnClickStampMenu(this:BaseLogicClass, event: JQueryEventObject): void;\r\n\r\n /**\r\n * 操作パネル→スタンプアイテム編集ボタン押下メソッド(SP用)\r\n * @summary モードに合わせてボタン活性状態を設定する。\r\n */\r\n public btnClickEditStampItem(event: JQueryEventObject): void {\r\n\r\n // タッチイベント制御(有効)\r\n this._edctrl.touchEventChange(true);\r\n\r\n this.setStampEditMode();\r\n }\r\n\r\n /**\r\n * スタンプの位置調整画面に戻るボタン押下(SP用)\r\n * @summary 配置済みスタンプあれば位置調整画面へ戻る。0件ならメイン画面へ戻る。\r\n */\r\n public returnStampHomeBtn(event: JQueryEventObject): void {\r\n\r\n let that = this;\r\n\r\n // スタンプの存在チェック\r\n this.sonbpIfController.getItems([this.VIEW_ITEM_TYPE],\r\n (list: itemVenderProperty[]) => {\r\n\r\n if (list.length === 0) {\r\n // スタンプが0件の場合には、ホームに戻る\r\n that._edctrl.btnClickReturnHome(true, true, null);\r\n }\r\n else {\r\n // タイトル\r\n that._vue.$data.Header.Title = that.VIEW_TITLE;\r\n\r\n // パネルの表示制御\r\n that.setShowFlgAllOFF();\r\n that._vue.$data.Show.ReturnHomeExBtn = true;\r\n that._vue.$data.Show.CommitNextHomeBtn = true;\r\n that._vue.$data.Show.StampDeleteBtn = true;\r\n that._vue.$data.Show.EditArea = true;\r\n that._vue.$data.Show.FooterMenu = true;\r\n that._vue.$data.Show.OparatePallet = true;\r\n\r\n // 削除ボタンの活性制御\r\n that._vue.$data.Stamp.DelBtnEnable = (0 < list.length) ? true : false;\r\n\r\n // オブジェクト操作メニュー\r\n that._edctrl.setModeOparatePalletForSp(that.VIEW_MODE, null);\r\n\r\n // タッチイベント制御(無効)\r\n that._edctrl.touchEventChange(false);\r\n }\r\n },\r\n () => { });\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■内部関数\r\n\r\n /**\r\n * スタンプ編集モードへ画面項目設定(SP用)\r\n * @summary モードに合わせてボタン活性状態を設定する。\r\n */\r\n abstract setStampEditMode(this: BaseLogicClass): void;\r\n\r\n /**\r\n * (共通部分)\r\n * @summary 現在使用中(スタンプ、Myステッカー、手書きスタンプ)の数\r\n */\r\n protected UseCount(): number {\r\n let count = 0;\r\n if (this.VIEW_MODE == EDIT_MODE_KIND.MYSTAMP) {\r\n this.sonbpIfController.getMyStampList((list) => {\r\n count = list.length;\r\n })\r\n return count;\r\n }\r\n else if (this.VIEW_MODE == EDIT_MODE_KIND.STAMP) {\r\n this.sonbpIfController.getMstStampList((list) => {\r\n count = list.length;\r\n })\r\n return count;\r\n }\r\n else if (this.VIEW_MODE == EDIT_MODE_KIND.FONTGENIC) {\r\n this.sonbpIfController.getTegakiStampList((list) => {\r\n count = list.length;\r\n })\r\n return count;\r\n }\r\n return count;\r\n }\r\n\r\n// #endregion\r\n\r\n}\r\n","import Enumerable from \"linq\";\nimport * as idbEdit from \"../../entity/idb/editInfo\";\nimport * as es6promise from \"es6-promise\";\nimport { Logger } from \"../../util/logger\";\nimport { GetEditInfo, response, util } from \"../..\";\nimport { constDialogMessage, dialogUtil } from \"../../util\";\nimport { asyncWhenApply, calcCheckSum, editStrage } from \"../edit.tool\";\nimport { editController } from \"../../edit\";\n\nimport { EditConst, EDIT_MODE_KIND } from \"../edit.const\";\nimport { photoFrame, UploadImageResponseEntity, uploadPhoto } from \"../edit.entity\";\nimport { itemVenderProperty } from \"../edit.sonbp_if\";\nimport { BaseStampLogicClass } from \"./edit.baseStampLogic\";\n\n\n/**\n * アップロード情報処理基底クラス\n * 画像アップロード、画像配置の処理を提供するクラス\n */\nexport abstract class UploadImageLogicClass extends BaseStampLogicClass {\n\n// #region ■定数\n\n /**\n * アップロード画像最大数\n */\n protected readonly UPLOAD_IMAGE_NUM_MAX: number;\n /**\n * 画像アップロード(WebAPI)呼び出しURL\n */\n protected readonly WEBAPI_URL_UPLOADIMAGE: string;\n /**\n * 画像サムネイル取得(WebAPI)呼び出しURL\n */\n protected readonly WEBAPI_URL_GETTHUMBNAIL: string;\n /**\n * 写真固有の動作必要か\n */\n protected readonly _isPhotoFlg: boolean = false;\n\n// #endregion\n\n// #region ■変数\n\n /**\n * アップロードファイル一覧\n */\n public _uploadImageList: uploadPhoto[];\n\n // #endregion\n\n// #region ■プロパティ\n\n /**\n * 空き枠数\n */\n public get EmptyUploadNum(): number {\n\n let count: number = 0;\n\n count = Enumerable.from(this._uploadImageList).where(row => row.isEmpty && !row.deleteFlg).count();\n\n return count;\n }\n\n /**\n * 使用済み枠数\n */\n public get NotEmptyUploadNum(): number {\n\n let count: number = 0;\n\n count = Enumerable.from(this._uploadImageList).where(row => !row.isEmpty && !row.deleteFlg).count();\n\n return count;\n }\n\n /**\n * アップロード画像最大数\n * @abstract\n */\n abstract UploadNumMax(this: UploadImageLogicClass): number;\n\n// #endregion\n\n// #region ■起動\n\n /**\n * コンストラクタ\n */\n constructor(edctrl: editController, uploadList: uploadPhoto[]) {\n super(edctrl);\n this._uploadImageList = uploadList;\n }\n\n /**\n * アップロード情報の復元\n */\n public restoreUoloadList(isFromIdb: boolean, isUsed: boolean, idbList: idbEdit.photo[], editInfoList: GetEditInfo.GetEditInfoPhotoEntity[]) {\n\n // アップロード情報の復元\n let rowIdx: number = 0;\n if (isFromIdb && idbList) {\n // プレビュー画面から戻ってきた,F5の場合はindexDBからの復元\n Logger.debug(\"アップロード画像一覧 indexDBからの復元\", idbList);\n\n for (let i: number = 0; i < idbList.length; i++) {\n if (idbList[i].fileId) {\n const ulp = new uploadPhoto();\n ulp.key = i.toString();\n ulp.fileId = idbList[i].fileId;\n ulp.isUsed = isUsed ? idbList[i].isUsed : false;;\n ulp.width = idbList[i].width;\n ulp.height = idbList[i].height;\n ulp.uploadDate = idbList[i].uploadDate\n ulp.fileName = idbList[i].fileName;\n ulp.isEmpty = false;\n ulp.fileKey = \"\";\n\n // photo only.\n ulp.fileKey = idbList[i].fileNameKey ? idbList[i].fileNameKey : \"\";\n ulp.deleteDate = idbList[i].deleteDate ? idbList[i].deleteDate : undefined;\n ulp.deleteFlg = idbList[i].deleteFlg ? idbList[i].deleteFlg : false;\n\n this._uploadImageList.push(ulp);\n rowIdx++;\n }\n }\n } else {\n // その他の場合はDBからの復元\n Logger.debug(\"アップロード画像一覧 DBからの復元\", editInfoList);\n\n // DBからの復元\n rowIdx = (this.UploadNumMax() < editInfoList.length) ? this.UploadNumMax() : editInfoList.length;\n for (let i: number = 0; i < rowIdx; i++) {\n const ulp = new uploadPhoto();\n ulp.key = i.toString();\n ulp.fileId = editInfoList[i].fileId;\n ulp.isUsed = isUsed ? editInfoList[i].isUsed : false;\n ulp.width = editInfoList[i].width;\n ulp.height = editInfoList[i].height;\n ulp.uploadDate = editInfoList[i].uploadDate\n ulp.fileName = editInfoList[i].uploadFileName;\n ulp.isEmpty = false;\n ulp.fileKey = \"\";\n this._uploadImageList.push(ulp);\n }\n }\n // アップロード一覧に最大数分の画像枠を補完\n for (let i: number = rowIdx; i < this.UploadNumMax(); i++) {\n const ulp = new uploadPhoto();\n ulp.key = i.toString();\n ulp.isUsed = false;\n ulp.isEmpty = true;\n this._uploadImageList.push(ulp);\n }\n Logger.debug(\"アップロード一覧の復元\", this._uploadImageList);\n }\n\n// #endregion\n\n// #region ■イベント\n\n /**\n * 画像一覧→画像削除OKボタン押下メソッド\n * @summary 一覧の選択画像を削除し、削除選択モードを解除する。\n */\n public btnClickUploadListTrashOK(event: JQueryEventObject): void {\n\n if (!this._usePcDesign) {\n // SP版の場合は、selected から reqDeleteにコンバート\n Enumerable.from(this._uploadImageList)\n .where(row => row.selected === EditConst.IMG_SELECTED)\n .forEach(row => row.reqDelete = true);\n }\n\n // 削除対象の画像IDを抽出\n let removeIds = this.getRemoveTargetIds();\n\n Logger.log(\"画像一覧→画像削除OKボタン押下メソッド=>\", removeIds);\n\n // 使用中の画像が指定されているか判定\n if (removeIds.length > 0) {\n // 確認メッセージ表示\n util.dialogUtil.createYesNoDialog(\n constDialogMessage.INFO_EDIT_DEL_PHOTO_CHECK,\n () => {\n util.dialogUtil.closeYesNoDialog();\n // 削除処理\n this.requestRemove(removeIds);\n },\n util.dialogUtil.closeYesNoDialog,\n \"\", \"\",\n util.dialogUtil.DialogType.Infomation)\n }\n else {\n // 削除処理\n this.requestRemove(removeIds);\n }\n }\n\n /**\n * 画像押下メソッド\n * @summary PC/SPのディスパッチのみ\n */\n public imgClickUploadImage(event: JQueryEventObject, fileId: string): void {\n\n if (!fileId) {\n Logger.debug(\"fileId is undefined\");\n return;\n }\n\n if (this._usePcDesign) {\n // PC用\n this.imgClickUploadImagePc(fileId);\n }\n else {\n // SP用\n this.imgClickUploadImageSp(fileId);\n }\n }\n\n /**\n * ファイル選択の状態変更イベント\n * @summary ファイル選択ダイアログからファイル選択されると呼ばれる。アップロードの準備開始する。\n */\n public onChangeUploadFileObj(event: any) {\n\n if (util.verify.isEmpty(event.target.files)) {\n return;\n }\n else if (event.target.files.length == 0) {\n return;\n }\n\n // ファイルオブジェクト取得\n const fileList: FileList = event.target.files;\n\n // ローディングダイアログ開始\n util.dialogUtil.showLoading();\n\n // アップロードファイルの最大数チェック\n if (this.UploadNumMax() < this.NotEmptyUploadNum + fileList.length) {\n // メッセージ表示\n util.dialogUtil.createErrorDialog(util.constDialogMessage.ERROR_IMAGE_UPLOAD_OVER_MAX_TEXT, () => {\n dialogUtil.closeErrorDialog();\n // ローディングダイアログ終了\n util.dialogUtil.closeLoading();\n }, dialogUtil.DialogType.Warning);\n return;\n }\n\n let validMsgList: string[] = [];\n let validFileList: File[] = [];\n for (let i: number = 0; i < fileList.length; i++) {\n // アップロード可能ファイルであるかのチェック\n const resultMsg: string = this.uploadFileValid(fileList[i]);\n if (resultMsg.length == 0) {\n validFileList.push(fileList[i]);\n }\n else {\n validMsgList.push(resultMsg);\n }\n }\n\n if (fileList.length === validMsgList.length) {\n // アップロード不可ファイルなしの場合\n let messageListTop5: string[] = getTop5Message(validMsgList);\n const msg: string = util.constDialogMessage.ERROR_IMAGE_ANALYZER_BASE_TEXT + \"
\" + messageListTop5.join(\"
\");\n util.dialogUtil.createErrorDialog(msg, () => {\n // ローディングダイアログ終了\n util.dialogUtil.closeLoading();\n util.dialogUtil.closeErrorDialog();\n }, dialogUtil.DialogType.Warning);\n return;\n }\n\n // アップロード処理へ\n this._vue.$data.Show.FirstGuidance = false; // アップロード中に操作できないように一度外す\n this.uploadImageFileCover(validFileList).then((messageList: string[]) => {\n\n Logger.debug(\"アップロード処理後処理\", messageList);\n\n if (0 < validMsgList.length) {\n for (let i: number = 0; i < validMsgList.length; i++) {\n messageList.unshift(validMsgList[i]);\n }\n }\n\n if (messageList.length === 0) {\n if (this._isPhotoFlg && this.NotEmptyUploadNum == 0) {\n // 1個も画像がアップできなければ再度firstGuidanceを設定\n this._vue.$data.Show.FirstGuidance = true;\n }\n // ローディングダイアログ終了\n util.dialogUtil.closeLoading();\n }\n else {\n // 上記以外の場合\n let messageListTop5: string[] = getTop5Message(messageList);\n const msg: string = util.constDialogMessage.ERROR_IMAGE_ANALYZER_BASE_TEXT + \"
\" + messageListTop5.join(\"
\");\n util.dialogUtil.createErrorDialog(msg, () => {\n // ローディングダイアログ終了\n util.dialogUtil.closeLoading();\n if (this._isPhotoFlg && this.NotEmptyUploadNum == 0) {\n this._vue.$data.Show.FirstGuidance = true;\n }\n dialogUtil.closeErrorDialog();\n }, dialogUtil.DialogType.Warning);\n }\n\n // ファイルオブジェクトクリア\n $(\".upl_image_input\").val(\"\");\n\n }).catch((messageList: string[]) => {\n util.dialogUtil.closeLoading();\n if (messageList) {\n let messageListTop5: string[] = getTop5Message(messageList);\n const msg: string = util.constDialogMessage.ERROR_FILE_NG_TEXT + \"
\" + messageListTop5.join(\"
\");\n util.dialogUtil.createErrorDialog(msg, () => {\n if (this._isPhotoFlg && this.NotEmptyUploadNum == 0) {\n // 1個でも画像がアップできなければ再度firstGuidanceを設定\n this._vue.$data.Show.FirstGuidance = true;\n }\n dialogUtil.closeErrorDialog();\n }, dialogUtil.DialogType.Warning);\n }\n else {\n // こちらの遷移は基本的に fatal error\n }\n\n // ファイルオブジェクトクリア\n $(\".upl_image_input\").val(\"\");\n });\n\n // 高さ不足を考慮して、Top5を抽出\n function getTop5Message(messageList: string[]): string[] {\n let messageListTop5: string[];\n\n if (5 < messageList.length) {\n messageListTop5 = [];\n messageListTop5 = messageList.slice(0, 5);\n messageListTop5.push(\"...\");\n }\n else {\n messageListTop5 = messageList.slice();\n }\n\n return messageListTop5;\n }\n }\n\n\n // #region ■イベント(PCのみ処理)\n\n /**\n * 画像押下メソッド(PC用)\n * @summary クリックされた画像をCanvasへ配置する。削除モードの場合は削除選択フラグをONにする。\n */\n private imgClickUploadImagePc(fileId: string) {\n\n // モードによって動作が変わります(画像選択 or 画像削除)\n if (this._vue.$data.UploadListModeSelect) {\n Logger.debug(\"画像押下メソッド fileId[\" + fileId + \"] 画像選択モード\");\n\n // 上限チェック\n let count = this.UseCount();\n if (count >= this.PUT_MAX) {\n dialogUtil.createErrorDialog(`配置可能な上限(${this.PUT_MAX}件)を超えました。`, dialogUtil.closeErrorDialog);\n return;\n }\n\n // 選択画像を設定\n this.setImageBody(fileId, null, null);\n }\n else {\n Logger.debug(\"画像押下メソッド fileId[\" + fileId + \"] 画像削除モード\");\n\n Enumerable.from(this._uploadImageList)\n .where(row => row.fileId === fileId)\n .forEach(row => {\n row.reqDelete = true;\n row.selected = EditConst.IMG_SELECTED;\n });\n this.enableUploadListImageTrashOK();\n }\n }\n\n /**\n * 画像押下メソッド(削除モード時)\n * @summary クリックされた画像の削除選択フラグをOFFにする。\n */\n public imgClickUploadListImageCoverPc(event: JQueryEventObject, fileId: string): void {\n\n if (!this._vue.$data.UploadListModeSelect) {\n // 画像削除モード\n Enumerable.from(this._uploadImageList)\n .where(row => row.fileId === fileId)\n .forEach(row => {\n row.reqDelete = false;\n row.selected = EditConst.IMG_NOSELECT;\n });\n this.enableUploadListImageTrashOK();\n }\n\n\n }\n\n /**\n * 画像一覧→画像削除モード切り替えボタン押下メソッド\n * @summary 一覧を削除選択モードにする。\n */\n public btnClickUploadListTrashPc(event: JQueryEventObject): void {\n this._vue.$data.UploadListModeSelect = false;\n }\n\n /**\n * 画像一覧→画像削除キャンセルボタン押下メソッド\n * @summary 一覧の削除選択モードを解除して配置選択モードにする。\n */\n public btnClickUploadListTrashCancelPc(event: JQueryEventObject): void {\n\n this._vue.$data.UploadListModeSelect = true;\n\n // 画像削除アイコンOFF\n this._uploadImageList.forEach(row => {\n row.reqDelete = false;\n row.selected = EditConst.IMG_NOSELECT;\n });\n }\n\n /**\n * 画像一覧→切抜き編集モードキャンセルボタン押下メソッド(マイスタンプ用)\n * @summary 切抜き編集選択モードを解除して配置選択モードにする。\n */\n public btnClickUploadListMystampEditCancelPc(event: JQueryEventObject): void {\n this._vue.$data.UploadListModeSelect = true;\n }\n\n // #endregion\n\n // #region ■イベント(SPのみ処理)\n\n /**\n * 画像押下メソッド(SP用)\n * @summary クリックされた画像を選択状態(配置or削除候補)にする。\n */\n private imgClickUploadImageSp(fileId: string) {\n Logger.debug(\"画像押下メソッド fileId[\" + fileId + \"]\");\n\n // 対象画像の現状態を取得\n const selImage: uploadPhoto = util.relic.listFind(this._uploadImageList, (p: uploadPhoto) => {\n return p.fileId === fileId;\n });\n if (!selImage) {\n return;\n }\n const targetSelected: string = selImage.selected === EditConst.IMG_SELECTED ? EditConst.IMG_NOSELECT : EditConst.IMG_SELECTED;\n const otherSelected: string = EditConst.IMG_NOSELECT;\n\n for (let i: number = 0; i < this._uploadImageList.length; i++) {\n if (this._uploadImageList[i].fileId === fileId) {\n this._uploadImageList[i].selected = targetSelected;\n }\n else {\n this._uploadImageList[i].selected = otherSelected;\n }\n }\n\n // 削除(&次へ)ボタンの活性制御\n this._vue.$data.EnableUploadListTrashOK = targetSelected === EditConst.IMG_SELECTED ? true : false;\n }\n\n /**\n * (画像一覧から)次へボタン押下(SP)\n * @summary 選択画像をCanvasへ配置し、位置調整画面(写真ならメイン画面)へ遷移する。\n */\n public btnClickNextFromUploadImageListSp(event: JQueryEventObject): void {\n\n Logger.debug(\"(画像一覧から)次へボタン押下(SP)\");\n\n // 選択画像取得\n const selPhoto: uploadPhoto = util.relic.listFind(this._uploadImageList, (photo: uploadPhoto) => {\n return photo.selected === EditConst.IMG_SELECTED;\n }, true);\n if (!selPhoto) {\n Logger.debug(\"画像が選択されていません\");\n return;\n }\n\n // 上限チェック\n let count = this.UseCount();\n if (count >= this.PUT_MAX) {\n dialogUtil.createErrorDialog(`配置可能な上限(${this.PUT_MAX}件)を超えました。`, dialogUtil.closeErrorDialog);\n return;\n }\n\n // 画像設定\n this.setImageBody(selPhoto.fileId, selPhoto, () => {\n // 選択状態を全解除\n for (let i: number = 0; i < this._uploadImageList.length; i++) {\n this._uploadImageList[i].selected = EditConst.IMG_NOSELECT;\n }\n\n // 次の画面へ\n if (this._isPhotoFlg) {\n this._edctrl.btnClickReturnHome(false, false, null);\n } else {\n if (!this._usePcDesign) {\n // SP用\n this.returnStampHomeBtn(null);\n }\n }\n });\n\n // 選択状態を全解除\n for (let i: number = 0; i < this._uploadImageList.length; i++) {\n this._uploadImageList[i].selected = EditConst.IMG_NOSELECT;\n }\n\n this._vue.$data.EnableUploadListTrashOK = false;\n this._vue.$data.Show.MyStampList = false;\n this._vue.$data.Show.TegakiStampList = false;\n }\n\n // #endregion\n\n// #endregion\n\n// #region ■内部関数\n\n /**\n * 保存対象のアップロードファイル情報を抽出\n * @summary 現在のアップロードファイルリスト一覧をidb保存向けにセットする。\n */\n public setSaveUploadInfo(uploadList: uploadPhoto[], setUploadList: idbEdit.photo[]) {\n\n for (let i: number = 0; i < uploadList.length; i++) {\n if (uploadList[i].fileId && !uploadList[i].deleteFlg && !uploadList[i].isEmpty) {\n let setPhoto: idbEdit.photo = new idbEdit.photo();\n setPhoto.fileId = uploadList[i].fileId;\n setPhoto.fileName = uploadList[i].fileName;\n setPhoto.height = uploadList[i].height;\n setPhoto.width = uploadList[i].width;\n setPhoto.uploadDate = uploadList[i].uploadDate;\n\n // photo only.\n setPhoto.fileNameKey = uploadList[i].fileKey;\n setPhoto.deleteDate = uploadList[i].deleteDate;\n setPhoto.deleteFlg = uploadList[i].deleteFlg;\n setPhoto.isUsed = uploadList[i].isUsed;\n\n setUploadList.push(setPhoto);\n }\n }\n }\n\n /**\n * 引き剥がし対象のIDを抽出\n * @summary アップロード一覧から画像削除される際、Canvasに配置済みならそのfileIdを抽出する。\n */\n protected getRemoveTargetIds(): string[] {\n\n let removeIds: string[] = [];\n\n removeIds = Enumerable.from(this._uploadImageList)\n .where(row => row.reqDelete === true && row.isUsed === true)\n .select(row => row.fileId).distinct()\n .toArray();\n\n return removeIds;\n }\n\n /**\n * 画像削除依頼処理\n * @summary 一覧から選択画像を削除し、Canvasに配置済ならその配置も引きはがす。\n * @abstract\n */\n abstract requestRemove(this: UploadImageLogicClass, fileIds: string[]);\n\n /**\n * 画像削除後の処理\n * @summary 一覧の削除枠を詰めて空き枠を整理する。\n */\n protected afterRemove() {\n\n let delNum: number = 0;\n for (let i: number = 0; i < this._uploadImageList.length; i++) {\n if (this._uploadImageList[i].reqDelete) {\n this._uploadImageList[i].reqDelete = false;\n this._uploadImageList[i].deleteFlg = true;\n this._uploadImageList[i].deleteDate = new Date();\n this._uploadImageList[i].selected = EditConst.IMG_NOSELECT;\n delNum++;\n }\n }\n\n // 削除した分、使用可能枠を追加する\n let nextKey: number = Number(this._uploadImageList[this._uploadImageList.length - 1].key) + 1;\n for (let i: number = 0; i < delNum; i++) {\n const ulp = new uploadPhoto();\n ulp.key = nextKey.toString();\n nextKey++;\n ulp.isUsed = false;\n ulp.isEmpty = true;\n this._uploadImageList.push(ulp);\n }\n\n this._vue.$data.UploadListModeSelect = true;\n this._vue.$data.EnableUploadListTrashOK = false;\n\n // indexedDBの情報更新\n const photoList: idbEdit.photo[] = [];\n this.setSaveUploadInfo(this._uploadImageList, photoList);\n\n let rtn = this.writeStorage(photoList);\n\n if (rtn) {\n Logger.debug(\"アップロードファイル情報 iDBへ書き込み 正常終了\");\n }\n else {\n Logger.error(\"アップロードファイル情報 iDBへ書き込み エラー終了\");\n }\n }\n\n /**\n * 画像設定処理(本体) \n * @summary 選択された画像をCanvasへ配置する(実際の処理)\n * @abstract\n */\n abstract setImageBody(this: UploadImageLogicClass, fileId: string, targetPhoto: uploadPhoto, nextFun: () => void);\n\n /**\n *(共通部分)スタンプ系の画像設定処理\n * @summary 選択された画像をCanvasへ配置する(MYと手書きは同じ処理なのでココで共通化している)\n */\n protected commonSetStampBody(fileId: string, targetPhoto: uploadPhoto, okNextFunc: () => void) {\n let that = this;\n\n if (fileId === null) {\n Logger.debug(\"アイテムが選択されていません\");\n return;\n }\n\n // 上限チェック\n let count = this.UseCount();\n if (count >= this.PUT_MAX) {\n dialogUtil.createErrorDialog(`配置可能な上限(${this.PUT_MAX}件)を超えました。`, dialogUtil.closeErrorDialog);\n dialogUtil.closeLoading();\n return;\n }\n\n // ローディングダイアログ開始\n util.dialogUtil.showLoading();\n\n let target: uploadPhoto;\n if (targetPhoto) {\n target = targetPhoto;\n }\n else {\n // 対象画像情報取得\n target = util.relic.listFind(this._uploadImageList, (up: uploadPhoto) => {\n return up.fileId === fileId;\n }, true);\n }\n\n // スタンプの一覧を取得\n this.sonbpIfController.getItems([this.VIEW_ITEM_TYPE],\n (stampList: itemVenderProperty[]) => {\n\n // アイテム番号の採番\n let idx: number;\n if (stampList.length === 0) {\n idx = 1;\n }\n else {\n let idxTmp: number = -1;\n for (let i: number = 0; i < stampList.length; i++) {\n const idx: number = Number(stampList[i].idx);\n if (idxTmp < idx) {\n idxTmp = idx;\n }\n }\n idx = idxTmp + 1;\n }\n\n // sonbpへ依頼\n that.callSonbpIfSetStamp(idx, target,\n () => {\n // 使用中のフラグを立てる\n let targetId = target.fileId;\n let stamp: uploadPhoto = util.relic.listFind(that._uploadImageList, (upimg: uploadPhoto) => { return upimg.fileId?.split('@')[0] === targetId });\n if (stamp) {\n stamp.isUsed = true;\n }\n\n // 正常終了の場合\n if (okNextFunc) okNextFunc();\n util.dialogUtil.closeLoading();\n },\n () => {\n // 上記以外の場合\n util.dialogUtil.closeLoading();\n util.dialogUtil.createErrorDialog(\n this._edctrl.editMode == EDIT_MODE_KIND.MYSTAMP ?\n constDialogMessage.ERROR_EDIT_CREATE_MYSTAMP :\n constDialogMessage.ERROR_EDIT_CREATE_TEGAKISTAMP,\n () => {\n util.dialogUtil.closeErrorDialog();\n }\n );\n }\n );\n },\n () => { });\n }\n\n /**\n * 画像サムネイル取得\n * @summary アップロード一覧に表示するサムネイル画像を取得する。\n */\n public getThumbnail(fileId: string, width: number, height: number, fileObject?: File) {\n var defer = $.Deferred();\n\n Logger.debug(\"画像サムネイル取得=> fileId[\" + fileId + \"]\");\n\n // パラメータ\n const param = \"token=\" + this._authToken + \"&fileId=\" + fileId;\n\n \n try {\n let setIdx: number = -1;\n // 編集の場合は、対象枠に設定\n for (let i: number = 0; i < this._uploadImageList.length; i++) {\n if (this._uploadImageList[i].fileId == fileId) {\n this._uploadImageList[i].isEmpty = false;\n if (fileObject) {\n this._uploadImageList[i].fileName = fileObject?.name;\n } else {\n this._uploadImageList[i].fileName = \"no_name\";\n }\n this._uploadImageList[i].width = width;\n this._uploadImageList[i].height = height;\n //this.setImgSrc(i, data) -> base64でセットするとgtmの処理が重たくなるのでurlを指定する。\n this._uploadImageList[i].thumbnailUrl = this.WEBAPI_URL_GETTHUMBNAIL + \"?\" + param;\n setIdx = i;\n\n Logger.debug(\"画像サムネイル成功 編集[\" + i + \"]\", fileId);\n break;\n }\n }\n\n if (setIdx == -1) {\n // 新規の場合は、空き枠に設定\n for (let i: number = 0; i < this._uploadImageList.length; i++) {\n if (this._uploadImageList[i].isEmpty) {\n this._uploadImageList[i].fileId = fileId;\n this._uploadImageList[i].isEmpty = false;\n this._uploadImageList[i].uploadDate = new Date();\n if (fileObject) {\n this._uploadImageList[i].fileName = fileObject?.name;\n } else {\n this._uploadImageList[i].fileName = \"no_name\";\n }\n this._uploadImageList[i].width = width;\n this._uploadImageList[i].height = height;\n this._uploadImageList[i].thumbnailUrl = this.WEBAPI_URL_GETTHUMBNAIL + \"?\" + param;\n\n Logger.debug(\"画像サムネイル成功 新規[\" + i + \"]\", fileId);\n break;\n }\n }\n }\n\n defer.resolve(fileId);\n\n } catch (e) {\n defer.reject(e);\n }\n\n return defer.promise();\n }\n\n /**\n * サムネイル画像を対象img要素に適用\n * @summary getThumbnailの内部共通部分\n */\n private setImgSrc(imgSrcIdx: number, thumnail: Blob) {\n const reader = new FileReader();\n const that = this;\n reader.onerror = function (): void {\n Logger.error(\"img要素への画像適用でエラー発生\");\n };\n reader.onload = function (event: any): void {\n that._uploadImageList[imgSrcIdx].thumbnailUrl = reader.result.toString();\n };\n reader.readAsDataURL(thumnail);\n }\n\n /**\n * 画像削除ボタンの活性制御\n * @summary 一覧の削除選択フラグONされた画像あれば、削除実施ボタンを活性化する。\n */\n private enableUploadListImageTrashOK(): void {\n\n let reqDels = util.relic.listFind(this._uploadImageList, (p: uploadPhoto) => {\n return p.reqDelete === true;\n });\n\n this._vue.$data.EnableUploadListTrashOK = (reqDels !== undefined) ? true : false;\n }\n\n /**\n * 一覧をidbへ保存\n * @summary アップロード一覧情報をidbへ保存する\n * @abstract\n */\n abstract writeStorage(list: idbEdit.photo[]): boolean;\n\n /**\n * スタンプ配置\n * @summary SonbpIfへスタンプ配置を依頼する。\n * @abstract\n */\n abstract callSonbpIfSetStamp(idx: number, stampMaster: uploadPhoto, callbackOk: () => void, callbackNg: () => void): void;\n\n\n // #region ■ファイルアップロード関連\n\n /**\n * 有効なアップロードファイルであるかのチェック\n * @summary ファイルのサイズ・MIMEチェックを行う。\n * @abstract\n */\n abstract uploadFileValid(this: UploadImageLogicClass, file: File): string;\n\n /**\n * アップロード処理入口\n * @summary アップロードを10件ずつまとめて実施する。アップロード成功したらサムネイル画像の取得を行う。\n */\n private uploadImageFileCover(fileList: File[]): es6promise.Promise {\n\n let messageList: string[] = [];\n const that = this;\n\n return new es6promise.Promise(async function (resolve, reject) {\n let promises: any[] = [];\n let normalErr: boolean = false;\n let fatalErr: boolean = false;\n let fatalErrMsg: string;\n let uploadResult: UploadImageResponseEntity[] = [];\n\n Logger.log(\"アップロード画像ファイル数[\" + fileList.length + \"]\");\n\n // アップロード画像ファイル数分繰り返し\n for (let i: number = 0; i < fileList.length; i++) {\n\n // 10個ずつ実行\n promises.push(that.uploadImageFileBody(fileList[i]));\n\n if (i % 10 == 9 || fileList.length <= i + 1) {\n\n Logger.debug(\"アップロード 10個ずつ実行 開始\");\n\n await asyncWhenApply(promises).then(function () {\n\n Logger.debug(\"アップロード 10個ずつ実行 終了\");\n\n const argDetails = arguments[0];\n for (let n: number = 0; n < argDetails.length; n++) {\n const resEntity: response.responseEntity = argDetails[n];\n if (resEntity.result.code === 0) {\n // 正常終了の場合\n uploadResult.push(resEntity.data);\n Logger.debug(\"アップロード成功[\" + JSON.stringify(resEntity.data) + \"]\");\n }\n else {\n // 上記以外の場合\n messageList.push(resEntity.result.message);\n Logger.error(\"アップロード失敗-1[\" + resEntity.result.message + \"]\");\n }\n }\n promises = [];\n }).catch(function (result: response.responseEntity[]) {\n Logger.error(\"アップロード失敗-2 [\" + JSON.stringify(result) + \"]\");\n normalErr = true;\n if (result) {\n for (let n: number = 0; n < result.length; n++) {\n if (0 < result[n].result.code) {\n messageList.push(\"・\" + result[n].result.message);\n }\n else {\n fatalErr = true;\n if (result[n].result.code === -200) {\n //fatalErrMsg = constDialogMessage.ERROR_SESSION_TIMEOUT;\n util.ajax.TransErrorPage();\n }\n else {\n fatalErrMsg = constDialogMessage.ERROR_SYSTEM;\n }\n }\n }\n }\n });\n }\n\n // 結果判定\n if (normalErr || fatalErr) {\n Logger.error(\"アップロード失敗-3\");\n break;\n }\n }\n\n if (!normalErr && !fatalErr) {\n resolve(uploadResult);\n } else {\n Logger.error(\"アップロード失敗-4\");\n if (!fatalErr) {\n reject(messageList);\n }\n else {\n util.dialogUtil.createErrorDialog(fatalErrMsg, function () {\n util.dialogUtil.closeErrorDialog();\n window.location.href = that._edctrl.RetailerConfig.returnTop;\n });\n reject(null);\n }\n }\n }).then((uploadResult: UploadImageResponseEntity[]) => {\n\n // アップロード画像のサムネイル取得\n return new es6promise.Promise(async function (resolve, reject) {\n let promises: any[] = [];\n let err: boolean = false;\n\n // アップロード画像ファイル数分繰り返し\n for (let i: number = 0; i < uploadResult.length; i++) {\n\n // 10個ずつ実行\n promises.push(that.getThumbnail(uploadResult[i].fileId, uploadResult[i].width, uploadResult[i].height, uploadResult[i].fileObject));\n if (i % 10 == 9 || uploadResult.length <= i + 1) {\n await asyncWhenApply(promises).then(function () {\n Logger.log(\"アップロード画像のサムネイル取得 arguments[\" + JSON.stringify(arguments) + \"]\");\n promises = [];\n }).catch(function () {\n err = true;\n });\n }\n\n // 結果判定\n if (err) {\n Logger.error(\"画像サムネイルダウンロード失敗\");\n break;\n }\n }\n\n if (!err) {\n Logger.debug(\"画像サムネイルダウンロード全成功\");\n resolve(messageList);\n } else {\n Logger.error(\"画像サムネイルダウンロード失敗\");\n messageList.push(constDialogMessage.ERROR_EDIT_DL_PHOTO_THUMBNAIL);\n reject(messageList);\n }\n });\n\n }).then((messageList: string[]) => {\n\n Logger.debug(\"アップロードファイル情報 iDBへ書き込み 開始\");\n\n return new es6promise.Promise(async function (resolve, reject) {\n\n if (0 < that._uploadImageList.length) {\n const setPhotoList: idbEdit.photo[] = [];\n\n // 写真情報\n that.setSaveUploadInfo(that._uploadImageList, setPhotoList);\n\n var ret;\n if (that._isPhotoFlg) {\n ret = editStrage.writeStorageToPhoto(setPhotoList);\n } else {\n ret = editStrage.writeStorageToMyStamp(setPhotoList);\n }\n\n if (ret) {\n Logger.debug(\"アップロードファイル情報 WebStorageへ書き込み 正常終了\", messageList);\n resolve(messageList);\n }\n else {\n Logger.error(\"アップロードファイル情報 WebStorageへ書き込み エラー終了\", messageList);\n reject(messageList);\n }\n\n\n\n } else {\n Logger.debug(\"アップロードファイル情報 iDBへ書き込み 正常終了(0件)\", messageList);\n resolve(messageList);\n }\n });\n });\n }\n\n /**\n * ファイルアップロード処理(1ファイル分)\n * @summary MD5を生成する。\n */\n private uploadImageFileBody(file: File) {\n var defer = $.Deferred();\n\n // MD5算出\n calcCheckSum(file).then((md5: string) => {\n\n Logger.debug(\"MD5 [\" + md5 + \"]\");\n\n // アップロード実行\n this.uploadImageFile(file, md5).then((resData: response.responseEntity) => {\n if (resData.result.code === 0) {\n // 正常\n const photoEntity: UploadImageResponseEntity = resData.data;\n photoEntity.fileObject = file;\n defer.resolve(resData);\n }\n else {\n // 準正常\n resData.result.message = file.name + \":\" + resData.result.message;\n defer.resolve(resData);\n }\n }).catch((err: response.responseEntity) => {\n defer.reject(err);\n });\n }).catch((err: Error) => {\n Logger.error(err);\n defer.reject(err);\n });\n\n return defer.promise();\n }\n\n /**\n * ファイルアップロード(本体)\n * @summary Formデータを組み立てる。\n */\n private uploadImageFile(file: File, md5: string): es6promise.Promise {\n\n // パラメータ\n let fd: FormData = new FormData();\n fd.append(\"token\", this._authToken);\n fd.append(\"MD5\", md5);\n fd.append(\"fileobject\", file);\n\n return this.commonUploadImageFileSend(this.WEBAPI_URL_UPLOADIMAGE, fd, file.name);\n }\n\n /**\n *(共通部分)ファイルアップロード送信実施\n * @summary ファイルアップロードを行う。(実際のPOST送信してるのはココ)\n */\n protected commonUploadImageFileSend(url: string, fd: FormData, fileName: string): es6promise.Promise {\n\n return new es6promise.Promise((resolve, reject) => {\n\n let fatalResponse: response.responseEntity = new response.responseEntity();\n fatalResponse.result = new response.resultEntity();\n\n // 送信処理\n const xhr = new XMLHttpRequest();\n xhr.onerror = (event: ProgressEvent) => {\n Logger.error(\"xhr.onerror event[\", event);\n reject();\n }\n xhr.onreadystatechange = (event: ProgressEvent) => {\n if (xhr.readyState == 4) {\n // 通信完了\n if (200 <= xhr.status && xhr.status < 300) {\n // 2xx: Success (成功)\n Logger.debug(\"ファイル送信 2xx: Success (成功) file[\" + fileName + \"] readyState[\" + xhr.readyState + \"] status[\" + xhr.status + \"]\");\n\n let response: response.responseEntity = JSON.parse(xhr.responseText);\n if (response.result.code == 0) {\n // 正常終了\n resolve(response);\n }\n else if (0 < response.result.code) {\n // 準正常終了(主にファイルチェックエラー)\n Logger.debug(\"XMLHttpRequest code [\" + response.result.code + \"] msg[\" + response.result.message + \"] response[\" + JSON.stringify(response) + \"]\");\n resolve(response);\n }\n else {\n // 上記以外の場合\n Logger.error(\"XMLHttpRequest err code [\" + response.result.code + \"] msg[\" + response.result.message + \"] response[\" + JSON.stringify(response) + \"]\");\n //reject(response.result.message);\n reject(response);\n }\n\n } else if (300 <= xhr.status && xhr.status < 400) {\n // 3xx: Redirection (転送)\n Logger.debug(\"ファイル送信 3xx: Redirection (転送) file[\" + fileName + \"] readyState[\" + xhr.readyState + \"] status[\" + xhr.status + \"]\");\n } else if (400 <= xhr.status && xhr.status < 500) {\n // 4xx: Client Error (クライアントエラー)\n Logger.debug(\"ファイル送信 4xx: Client Error (クライアントエラー) file[\" + fileName + \"] readyState[\" + xhr.readyState + \"] status[\" + xhr.status + \"]\");\n fatalResponse.result.code = xhr.status * -1;\n fatalResponse.result.message = constDialogMessage.ERROR_SYSTEM;\n reject(fatalResponse);\n } else if (500 <= xhr.status && xhr.status < 600) {\n // 5xx: Server Error (サーバエラー)\n Logger.debug(\"ファイル送信 5xx: Server Error (サーバエラー) file[\" + fileName + \"] readyState[\" + xhr.readyState + \"] status[\" + xhr.status + \"]\");\n fatalResponse.result.code = xhr.status * -1;\n fatalResponse.result.message = constDialogMessage.ERROR_SYSTEM;\n reject(fatalResponse);\n } else {\n // 例外:クライエントエラーとする\n Logger.debug(\"例外 file[\" + fileName + \"] readyState[\" + xhr.readyState + \"] status[\" + xhr.status + \"]\");\n fatalResponse.result.code = xhr.status * -1;\n fatalResponse.result.message = constDialogMessage.ERROR_SYSTEM;\n reject(fatalResponse);\n }\n } else {\n // 通信中\n Logger.debug(\"ファイル送信 通信中 file[\" + fileName + \"] readyState[\" + xhr.readyState + \"] status[\" + xhr.status + \"]\");\n }\n }\n\n xhr.open(\"POST\", url);\n xhr.send(fd);\n });\n }\n\n // #endregion\n\n// #endregion\n\n}\n","import * as sonbpIfconst from \"../../sonbpIf/base/constants\";\r\nimport * as idbEdit from \"../../entity/idb/editInfo\";\r\nimport * as es6promise from \"es6-promise\";\r\nimport { Logger } from \"../../util/logger\";\r\nimport { GetEditInfo, util } from \"../..\";\r\nimport { constDialogMessage, dialogUtil } from \"../../util\";\r\n\r\nimport { EditConst, EDIT_MODE_KIND } from \"../edit.const\";\r\nimport { photoFrame, uploadPhoto } from \"../edit.entity\";\r\nimport { itemVenderProperty } from \"../edit.sonbp_if\";\r\nimport { UploadImageLogicClass } from \"./edit.uploadImageLogic.base\";\r\nimport { editStrage } from \"../edit.tool\";\r\nimport Enumerable from \"linq\";\r\nimport { data } from \"jquery\";\r\n\r\n\r\n/**\r\n * 写真\r\n * 画像アップロード、画像配置の処理を提供するクラス\r\n */\r\nexport class PhotoLogicClass extends UploadImageLogicClass {\r\n\r\n// #region ■定数\r\n\r\n /**\r\n * アップロード画像最大数\r\n * @override\r\n */\r\n protected readonly UPLOAD_IMAGE_NUM_MAX: number = 18;\r\n /**\r\n * 画像アップロード(WebAPI)呼び出しURL\r\n * @override\r\n */\r\n protected readonly WEBAPI_URL_UPLOADIMAGE: string = \"Edit/UploadImage\";\r\n /**\r\n * 画像サムネイル取得(WebAPI)呼び出しURL\r\n * @override\r\n */\r\n protected readonly WEBAPI_URL_GETTHUMBNAIL: string = \"Edit/GetImage\";\r\n /**\r\n * 明るさ変更(WebAPI)呼び出しURL\r\n */\r\n private readonly WEBAPI_URL_CHANGEBRIGHT: string = \"Edit/ChangeBright\";\r\n\r\n /**\r\n * 写真固有の動作必要か\r\n * @override\r\n */\r\n protected readonly _isPhotoFlg: boolean = true;\r\n\r\n// #endregion\r\n\r\n// #region ■プロパティ\r\n\r\n /**\r\n * アップロード画像最大数\r\n * @implements\r\n */\r\n public UploadNumMax(): number {\r\n\r\n if (util.verify.isNotEmpty(this._edctrl.ScreenCtrl.photoUlFileNumMax)) {\r\n return this._edctrl.ScreenCtrl.photoUlFileNumMax;\r\n }\r\n else {\r\n return this.UPLOAD_IMAGE_NUM_MAX;\r\n }\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■起動\r\n\r\n /**\r\n * アップロード情報の復元\r\n */\r\n public restoreUoloadPhotoList(isFromIdb: boolean, isUsed: boolean, idbEditInfo: idbEdit.editInfo, editInfo: GetEditInfo.GetEditInfoResponseEntity) {\r\n\r\n this.restoreUoloadList(isFromIdb, isUsed, idbEditInfo?.photoList, editInfo.info.photo);\r\n\r\n if (isFromIdb && idbEditInfo && idbEditInfo.photoList) {\r\n\r\n // 枠情報をindexDBの情報で復元\r\n editInfo.info.photoUse = [];\r\n if (idbEditInfo.photoUseList) {\r\n for (let i: number = 0; i < idbEditInfo.photoUseList.length; i++) {\r\n if (idbEditInfo.photoUseList[i].fileId) {\r\n const photoUse = new GetEditInfo.GetEditInfoPhotoUseEntity();\r\n photoUse.fileId = idbEditInfo.photoUseList[i].fileId;\r\n photoUse.isUseI2 = idbEditInfo.photoUseList[i].useI2;\r\n photoUse.idx = idbEditInfo.photoUseList[i].sonbpVp.idx;\r\n photoUse.brightId = idbEditInfo.photoUseList[i].brightId;\r\n photoUse.sonbpVp = idbEditInfo.photoUseList[i].sonbpVp;\r\n editInfo.info.photoUse.push(photoUse);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■イベント\r\n\r\n // 写真では不要\r\n public btnClickStampMenu(event: JQueryEventObject) { }\r\n\r\n /**\r\n * ツールメニュー:画像入替・追加押下メソッド\r\n * @param selectedItemVp 選択済みアイテム(2025年対応:配置済み画像の再編集可能 #28295)\r\n * */\r\n public btnClickSetPhotoMenu(event: JQueryEventObject, selectedItemVp: itemVenderProperty = null): void {\r\n\r\n if (this._edctrl.editMode === EDIT_MODE_KIND.SET_PHOTO) {\r\n return;\r\n }\r\n\r\n let selectItem: itemVenderProperty = null;\r\n if (this._edctrl.editMode === EDIT_MODE_KIND.MANI_PHOTO) {\r\n // 選択アイテム取得\r\n selectItem = this.sonbpIfController.getSelectItem();\r\n\r\n Logger.debug(\"選択アイテム取得\", selectItem);\r\n }\r\n else if (selectedItemVp !== null) {\r\n // 選択アイテム復元\r\n selectItem = selectedItemVp;\r\n\r\n Logger.debug(\"選択アイテム復元\", selectItem);\r\n }\r\n\r\n if (this._usePcDesign) {\r\n // PC用\r\n // sonbpへ処理モード変更依頼\r\n this.sonbpIfController.setMode(EDIT_MODE_KIND.SET_PHOTO,\r\n () => {\r\n // 正常終了の場合\r\n this._edctrl.editMode = EDIT_MODE_KIND.SET_PHOTO;\r\n // パネルの表示制御\r\n this._vue.$data.Show.BalloonGuidance = true;\r\n if (this._usePcDesign) {\r\n this._vue.$data.Show.PhotoList = true;\r\n }\r\n this._vue.$data.Show.OparatePallet = true;\r\n this._vue.$data.Show.GreetingPanel = false;\r\n this._vue.$data.Show.SenderPanel = false;\r\n this._vue.$data.Show.StampPanel = false;\r\n this._vue.$data.Show.MyStampPanel = false;\r\n this._vue.$data.Show.TegakiStampPanel = false;\r\n this._vue.$data.Show.TegakiColorPanel = false;\r\n\r\n // ツールメニューの活性制御\r\n this._vue.$data.ActiveSetPhotoMenu = true;\r\n this._vue.$data.ActiveManiPhotoMenu = false;\r\n this._vue.$data.ActiveGreetingMenu = false;\r\n this._vue.$data.ActiveSenderMenu = false;\r\n this._vue.$data.ActiveStampMenu = false;\r\n this._vue.$data.ActiveMyStampMenu = false;\r\n this._vue.$data.ActiveTegakiStampMenu = false;\r\n this._vue.$data.ActiveFinishSelectMenu = true;\r\n\r\n\r\n // オブジェクト操作パレットの表示制御\r\n this._edctrl.setModeOparatePallet(EDIT_MODE_KIND.SET_PHOTO, null);\r\n\r\n // 選択アイテムの復元\r\n if (selectItem !== null) {\r\n this.sonbpIfController.selectItem(selectItem.item_type, selectItem.idx,\r\n () => {\r\n Logger.debug(\"選択アイテムの復元 成功\");\r\n\r\n },\r\n () => {\r\n Logger.error(\"選択アイテムの復元 失敗\");\r\n })\r\n }\r\n else {\r\n // 先頭アイテムを選択\r\n this.sonbpIfController.setSelectFirstItem(sonbpIfconst.ITYPE_PHOTO_BOX,\r\n (selectItem: itemVenderProperty) => {\r\n }, () => {\r\n }, () => { });\r\n }\r\n },\r\n () => {\r\n // 異常終了の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_CHANGE_MODE, dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n } else {\r\n // SP用\r\n // sonbpへ処理モード変更依頼\r\n this.sonbpIfController.setMode(EDIT_MODE_KIND.SET_PHOTO,\r\n () => {\r\n // 正常終了の場合\r\n this._edctrl.editMode = EDIT_MODE_KIND.SET_PHOTO;\r\n // タッチイベント制御(無効)\r\n this._edctrl.touchEventChange(false);\r\n // オブジェクト操作パレットの表示制御\r\n this._edctrl.setModeOparatePallet(EDIT_MODE_KIND.SET_PHOTO, null);\r\n\r\n // 選択アイテムの復元\r\n if (selectItem !== null) {\r\n this.sonbpIfController.selectItem(selectItem.item_type, selectItem.idx,\r\n () => {\r\n Logger.debug(\"選択アイテムの復元 成功\");\r\n\r\n },\r\n () => {\r\n Logger.error(\"選択アイテムの復元 失敗\");\r\n })\r\n }\r\n else {\r\n // 先頭アイテムを選択\r\n this.sonbpIfController.setSelectFirstItem(sonbpIfconst.ITYPE_PHOTO_BOX,\r\n (selectItem: itemVenderProperty) => {\r\n }, () => {\r\n }, () => { });\r\n }\r\n },\r\n () => {\r\n // 異常終了の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_CHANGE_MODE, dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * ツールメニュー:画像編集押下メソッド\r\n * @param selectedItemVp 選択済みアイテム(2025年対応:配置済み画像の再編集可能 #28295)\r\n * */\r\n public btnClickManiPhotoMenu(event: JQueryEventObject, selectedItemVp: itemVenderProperty = null): void {\r\n\r\n if (this._edctrl.editMode === EDIT_MODE_KIND.MANI_PHOTO) {\r\n return;\r\n }\r\n // 赤枠を消す\r\n this._vue.$data.Show.ImgGuidance = false;\r\n\r\n let selectItem: itemVenderProperty = null;\r\n if (this._edctrl.editMode === EDIT_MODE_KIND.SET_PHOTO) {\r\n // 選択アイテム取得\r\n selectItem = selectedItemVp ?? this.sonbpIfController.getSelectItem();\r\n\r\n Logger.debug(\"選択アイテム取得\", selectItem);\r\n }\r\n else if (selectedItemVp !== null) {\r\n // 選択アイテム復元\r\n selectItem = selectedItemVp;\r\n\r\n Logger.debug(\"選択アイテム復元\", selectItem);\r\n }\r\n\r\n if (this._usePcDesign) {\r\n // PC用\r\n // sonbpへ処理モード変更依頼\r\n this.sonbpIfController.setMode(EDIT_MODE_KIND.MANI_PHOTO,\r\n () => {\r\n // 正常終了の場合\r\n this._edctrl.editMode = EDIT_MODE_KIND.MANI_PHOTO;\r\n // パネルの表示制御\r\n this._vue.$data.Show.BalloonGuidance = false;\r\n this._vue.$data.Show.PhotoList = false;\r\n this._vue.$data.Show.OparatePallet = true;\r\n this._vue.$data.Show.GreetingPanel = false;\r\n this._vue.$data.Show.SenderPanel = false;\r\n this._vue.$data.Show.StampPanel = false;\r\n this._vue.$data.Show.MyStampPanel = false;\r\n this._vue.$data.Show.TegakiStampPanel = false;\r\n\r\n // ツールメニューの活性制御\r\n this._vue.$data.ActiveSetPhotoMenu = false;\r\n this._vue.$data.ActiveManiPhotoMenu = true;\r\n this._vue.$data.ActiveGreetingMenu = false;\r\n this._vue.$data.ActiveSenderMenu = false;\r\n this._vue.$data.ActiveStampMenu = false;\r\n this._vue.$data.ActiveMyStampMenu = false;\r\n this._vue.$data.ActiveTegakiStampMenu = false;\r\n this._vue.$data.ActiveFinishSelectMenu = false;\r\n\r\n // オブジェクト操作パレットの表示制御\r\n this._edctrl.setModeOparatePallet(EDIT_MODE_KIND.MANI_PHOTO, selectItem);\r\n\r\n // 選択アイテムの復元\r\n if (selectItem !== null) {\r\n this.sonbpIfController.selectItem(selectItem.item_type, selectItem.idx,\r\n () => {\r\n Logger.debug(\"選択アイテムの復元 成功\");\r\n this.updPhotoCorrectCaption(selectItem);\r\n },\r\n () => {\r\n Logger.error(\"選択アイテムの復元 失敗\");\r\n })\r\n }\r\n else {\r\n // 先頭アイテムを選択\r\n this.sonbpIfController.setSelectFirstItem(sonbpIfconst.ITYPE_PHOTO_BOX,\r\n (selectItem: itemVenderProperty) => {\r\n this.updPhotoCorrectCaption(selectItem);\r\n },\r\n () => { },\r\n () => { });\r\n }\r\n },\r\n () => {\r\n // 異常終了の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_CHANGE_MODE, dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n }\r\n else {\r\n // SP用\r\n // sonbpへ処理モード変更依頼\r\n this.sonbpIfController.setMode(EDIT_MODE_KIND.MANI_PHOTO,\r\n () => {\r\n // 正常終了の場合\r\n this._edctrl.editMode = EDIT_MODE_KIND.MANI_PHOTO;\r\n\r\n // タッチイベント制御(無効)\r\n this._edctrl.touchEventChange(false);\r\n\r\n // 履歴処理開始\r\n this.sonbpIfController.historyStart();\r\n\r\n // パネルの表示制御\r\n\r\n // ツールメニューの活性制御\r\n\r\n // タイトル\r\n this._vue.$data.Header.Title = EditConst.TITLE_MANIPHOTO;\r\n\r\n // 画像操作メニュー\r\n this._vue.$data.Show.EditImageMenu = false;\r\n // メインメニュー\r\n this._vue.$data.Show.SetPhotoMenu = false;\r\n // オブジェクト操作メニュー\r\n this._vue.$data.Show.OparatePallet = true;\r\n\r\n // 戻るボタン\r\n this._vue.$data.Show.ReturnFlowBtn = false;\r\n this._vue.$data.Show.ReturnHomeBtn = false;\r\n this._vue.$data.Show.ReturnHomeExBtn = true;\r\n // 次へボタン\r\n this._vue.$data.Show.NextFlowBtn = false;\r\n this._vue.$data.Show.CommitNextHomeBtn = true;\r\n\r\n // タイトル\r\n this._vue.$data.Header.Title = \"画像調整\";\r\n\r\n // オブジェクト操作パレットの表示制御\r\n this._edctrl.setModeOparatePallet(EDIT_MODE_KIND.MANI_PHOTO, selectItem);\r\n\r\n // 選択アイテムの復元\r\n if (selectItem !== null) {\r\n this.sonbpIfController.selectItem(selectItem.item_type, selectItem.idx,\r\n () => {\r\n Logger.debug(\"選択アイテムの復元 成功\");\r\n this.updPhotoCorrectCaption(selectItem);\r\n },\r\n () => {\r\n Logger.error(\"選択アイテムの復元 失敗\");\r\n })\r\n }\r\n else {\r\n // 先頭アイテムを選択\r\n this.sonbpIfController.setSelectFirstItem(sonbpIfconst.ITYPE_PHOTO_BOX,\r\n (selectItem: itemVenderProperty) => {\r\n this.updPhotoCorrectCaption(selectItem);\r\n },\r\n () => { },\r\n () => { });\r\n }\r\n },\r\n () => {\r\n // 異常終了の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_CHANGE_MODE, dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * 操作パネル→仕上がり選択(銀塩or印刷)ボタン押下メソッド\r\n * */\r\n public btnClickFinishSelect(doGinen: boolean, event: JQueryEventObject): void {\r\n\r\n this._vue.$data.FinishSelect.isGinen = doGinen ? true : false;\r\n\r\n // sonbpへ依頼\r\n this.sonbpIfController.setAreaView(doGinen ? sonbpIfconst.ATYPE_GINEN : sonbpIfconst.ATYPE_PRING);\r\n\r\n }\r\n\r\n /**\r\n * 操作パネル→画像補正する/しないボタン押下\r\n */\r\n public btnClickPhotoCorrect(event: JQueryEventObject): void {\r\n\r\n // カレントアイテム取得\r\n const selectItem: itemVenderProperty = this.sonbpIfController.getSelectItem();\r\n\r\n if (selectItem === null) {\r\n Logger.debug(\"アイテムが選択されていません\");\r\n return;\r\n }\r\n\r\n // ローディングダイアログ開始\r\n util.dialogUtil.showLoading();\r\n\r\n Logger.debug(\"操作パネル→画像補正しないボタン押下メソッド\", selectItem);\r\n\r\n // 対象画像情報取得\r\n const target: uploadPhoto = util.relic.listFind(this._uploadImageList, (up: uploadPhoto) => {\r\n return up.fileId === selectItem.file_id.split('@')[0];\r\n }, true);\r\n\r\n // 対象画像枠情報取得\r\n const targetFrame: photoFrame = util.relic.listFind(this.sonbpIfController.PhotoFrameList, (pf: photoFrame) => {\r\n return pf.idx === selectItem.idx;\r\n });\r\n\r\n let isUseI2ON = !targetFrame.useI2;\r\n let pureFileId = target.fileId;\r\n let vpFileId = isUseI2ON ? pureFileId + \"@0\" : pureFileId;\r\n\r\n // sonbpへ依頼\r\n this.sonbpIfController.setPhoto(vpFileId, target.width, target.height, isUseI2ON, true,\r\n () => {\r\n // 正常終了の場合\r\n targetFrame.fileId = pureFileId;\r\n targetFrame.useI2 = isUseI2ON;\r\n targetFrame.brightId = isUseI2ON ? 0 : 999;\r\n this._vue.$data.PhotoBright = 0;\r\n\r\n if (targetFrame.useI2) {\r\n this._vue.$data.PhotoCorrectCaption = this._usePcDesign ? EditConst.PHOTO_CORRECT_CAPTION_PC_OFF : EditConst.PHOTO_CORRECT_CAPTION_SP_OFF;\r\n this._vue.$data.Show.IsImageAutoFilter = true; // 補正あり\r\n this._vue.$data.isBrightDownDisabled = false;\r\n this._vue.$data.isBrightUpDisabled = false;\r\n this._vue.$data.Show.OparatePalletBrightCover = false;\r\n }\r\n else {\r\n this._vue.$data.PhotoCorrectCaption = this._usePcDesign ? EditConst.PHOTO_CORRECT_CAPTION_PC_ON : EditConst.PHOTO_CORRECT_CAPTION_SP_ON;\r\n this._vue.$data.Show.IsImageAutoFilter = false; // 補正なし\r\n this._vue.$data.isBrightDownDisabled = true;\r\n this._vue.$data.isBrightUpDisabled = true;\r\n this._vue.$data.Show.OparatePalletBrightCover = true;\r\n }\r\n\r\n util.dialogUtil.closeLoading();\r\n },\r\n () => {\r\n // 上記以外の場合\r\n util.dialogUtil.closeLoading();\r\n });\r\n }\r\n\r\n /**\r\n * 操作パネル→枠ぴったりON/OFFボタン押下\r\n */\r\n public btnClickPitaCorrect(doPita: boolean, event: JQueryEventObject): void {\r\n\r\n // ローディングダイアログ開始\r\n util.dialogUtil.showLoading();\r\n\r\n Logger.debug(\"操作パネル→画像枠ぴったりON/OFFボタン押下メソッド\", doPita);\r\n\r\n // 枠ぴったり情報取得\r\n this.sonbpIfController.setPhotoWakuPita(doPita,\r\n () => {\r\n // 正常終了の場合\r\n this._vue.$data.Show.IsImagePita = doPita;\r\n util.dialogUtil.closeLoading();\r\n },\r\n () => {\r\n // 上記以外の場合\r\n util.dialogUtil.closeLoading();\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * 操作パネル→編集の初期化ボタン押下\r\n */\r\n public btnClickEditClear(event: JQueryEventObject): void {\r\n\r\n // カレントアイテム取得\r\n const selectItem: itemVenderProperty = this.sonbpIfController.getSelectItem();\r\n // 結果判定\r\n if (selectItem === null) {\r\n Logger.debug(\"アイテムが選択されていません\");\r\n return;\r\n }\r\n\r\n // ローディングダイアログ開始\r\n util.dialogUtil.showLoading();\r\n\r\n Logger.debug(\"操作パネル→編集の初期化ボタン押下メソッド\", selectItem);\r\n\r\n // 対象画像情報取得\r\n const target: uploadPhoto = util.relic.listFind(this._uploadImageList, (up: uploadPhoto) => {\r\n return up.fileId === selectItem.file_id.split('@')[0];\r\n }, true);\r\n\r\n let isUseI2ON = this._edctrl.editInfo.master.design.editMode != EditConst.DSN_MST_EDIT_MODE_LIMIT;\r\n let pureFileId = target.fileId;\r\n let vpFileId = isUseI2ON ? pureFileId + \"@0\" : pureFileId;\r\n\r\n // sonbpへ依頼\r\n this.sonbpIfController.setPhoto(vpFileId, target.width, target.height, isUseI2ON, false,\r\n () => {\r\n // 正常終了の場合\r\n\r\n // 対象画像枠情報取得\r\n const targetFrame: photoFrame = util.relic.listFind(this.sonbpIfController.PhotoFrameList, (pf: photoFrame) => {\r\n return pf.idx === selectItem.idx;\r\n });\r\n targetFrame.fileId = pureFileId;\r\n targetFrame.useI2 = isUseI2ON;\r\n targetFrame.brightId = isUseI2ON ? 0 : 999;\r\n this._vue.$data.PhotoCorrectCaption = this._usePcDesign ? EditConst.PHOTO_CORRECT_CAPTION_PC_OFF : EditConst.PHOTO_CORRECT_CAPTION_SP_OFF;\r\n this._vue.$data.Show.IsImageAutoFilter = true; // 補正あり(デフォルト)\r\n this._vue.$data.Show.IsImagePita = false; // 枠ぴったりOFF(デフォルト)\r\n this._vue.$data.PhotoBright = 0;\r\n this._vue.$data.isBrightDownDisabled = false;\r\n this._vue.$data.isBrightUpDisabled = false;\r\n this._vue.$data.Show.OparatePalletBrightCover = false;\r\n\r\n util.dialogUtil.closeLoading();\r\n },\r\n () => {\r\n // 上記以外の場合\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_EDIT_CLEAR, dialogUtil.closeErrorDialog);\r\n });\r\n }\r\n\r\n /**\r\n * 操作パネル→フレームから削除ボタン押下\r\n */\r\n public btnClickRemovePhoto(event: JQueryEventObject): void {\r\n\r\n // 選択アイテム取得\r\n const selectItem: itemVenderProperty = this.sonbpIfController.getSelectItem();\r\n // 結果判定\r\n if (selectItem === null) {\r\n Logger.debug(\"アイテムが選択されていません\");\r\n return;\r\n }\r\n\r\n Logger.debug(\"操作パネル→フレームから削除ボタン押下メソッド\", selectItem);\r\n\r\n // sonbpへ依頼\r\n this.sonbpIfController.removePhotoByCurrent(\r\n () => {\r\n // 正常終了の場合\r\n\r\n // 対象画像枠情報取得\r\n const targetFrame: photoFrame = util.relic.listFind(this.sonbpIfController.PhotoFrameList, (pf: photoFrame) => {\r\n return pf.idx === selectItem.idx;\r\n });\r\n targetFrame.fileId = \"\";\r\n targetFrame.useI2 = true;\r\n targetFrame.brightId = 0;\r\n this._vue.$data.PhotoCorrectCaption = this._usePcDesign ? EditConst.PHOTO_CORRECT_CAPTION_PC_OFF : EditConst.PHOTO_CORRECT_CAPTION_PC_ON;\r\n this._vue.$data.Show.IsImageAutoFilter = true; // 補正あり(デフォルト)\r\n this._vue.$data.Show.IsImagePita = false; // 枠ぴったりOFF(デフォルト)\r\n\r\n // 画像なしの枠になるのでオブジェクト操作パネルをカバー\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n\r\n // 画像一覧の表示制御更新\r\n let remain: photoFrame = util.relic.listFind(this.sonbpIfController.PhotoFrameList, (pf: photoFrame) => {\r\n return pf.fileId === selectItem.file_id.split('@')[0];\r\n });\r\n if (remain === undefined) {\r\n for (let i: number = 0; i < this._uploadImageList.length; i++) {\r\n if (this._uploadImageList[i].fileId === selectItem.file_id.split('@')[0]) {\r\n this._uploadImageList[i].isUsed = false;\r\n this._vue.$data.UploadPhotoList = this._uploadImageList;\r\n this._vue.$data.PhotoBright = 0;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // 次へボタンの活性制御\r\n this._edctrl.allowNextPage((allow: boolean) => {\r\n this._vue.$data.EnableNextPageBtn = allow;\r\n });\r\n\r\n // SP用処理\r\n if (!this._usePcDesign) {\r\n this.sonbpIfController.selectItemClear();\r\n }\r\n },\r\n () => {\r\n // 上記以外の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_REMOVE_PHOTO, dialogUtil.closeErrorDialog);\r\n });\r\n }\r\n\r\n /**\r\n * 操作パネル→明るさ変更パネル表示(SP用)\r\n * */\r\n public btnClickManiChangeBright(event: JQueryEventObject): void {\r\n Logger.debug(\"操作パネル→明るさ変更パネル表示メソッド\");\r\n if (this._edctrl.editMode === EDIT_MODE_KIND.MANI_PHOTO) {\r\n return;\r\n }\r\n this._vue.$data.Show.ImgGuidance = false;\r\n\r\n let selectItem: itemVenderProperty = null;\r\n if (this._edctrl.editMode === EDIT_MODE_KIND.SET_PHOTO) {\r\n // 選択アイテム取得\r\n selectItem = this.sonbpIfController.getSelectItem();\r\n\r\n Logger.debug(\"選択アイテム取得\", selectItem);\r\n }\r\n\r\n // sonbpへ処理モード変更依頼\r\n this.sonbpIfController.setMode(EDIT_MODE_KIND.MANI_PHOTO,\r\n () => {\r\n // 正常終了の場合\r\n this._edctrl.editMode = EDIT_MODE_KIND.MANI_PHOTO;\r\n\r\n // タッチイベント制御(無効)\r\n this._edctrl.touchEventChange(false);\r\n\r\n // 履歴処理開始\r\n this.sonbpIfController.historyStart();\r\n\r\n // パネルの表示制御\r\n\r\n // ツールメニューの活性制御\r\n\r\n // タイトル\r\n this._vue.$data.Header.Title = EditConst.TITLE_CHANGE_BRIGHT;\r\n\r\n // 画像操作メニュー\r\n this._vue.$data.Show.EditImageMenu = false;\r\n // メインメニュー\r\n this._vue.$data.Show.SetPhotoMenu = false;\r\n // オブジェクト操作メニュー\r\n this._vue.$data.Show.OparatePallet = false;\r\n this._vue.$data.Show.OparatePalletChangeBright = true;\r\n\r\n // 戻るボタン\r\n this._vue.$data.Show.ReturnFlowBtn = false;\r\n this._vue.$data.Show.ReturnHomeBtn = false;\r\n this._vue.$data.Show.ReturnHomeExBtn = true;\r\n // 次へボタン\r\n this._vue.$data.Show.NextFlowBtn = false;\r\n this._vue.$data.Show.CommitNextHomeBtn = true;\r\n\r\n // オブジェクト操作パレットの表示制御\r\n this._edctrl.setModeOparatePallet(EDIT_MODE_KIND.MANI_PHOTO, selectItem);\r\n\r\n // 明るさ調整ボタンの活性制御\r\n if (this._vue.$data.PhotoBright > 9) {\r\n this._vue.$data.isBrightUpDisabled = true;\r\n } else {\r\n this._vue.$data.isBrightUpDisabled = false;\r\n }\r\n if (this._vue.$data.PhotoBright < -9) {\r\n this._vue.$data.isBrightDownDisabled = true;\r\n } else {\r\n this._vue.$data.isBrightDownDisabled = false;\r\n }\r\n\r\n // 選択アイテムの復元\r\n if (selectItem !== null) {\r\n this.sonbpIfController.selectItem(selectItem.item_type, selectItem.idx,\r\n () => {\r\n Logger.debug(\"選択アイテムの復元 成功\");\r\n this.updPhotoCorrectCaption(selectItem);\r\n },\r\n () => {\r\n Logger.error(\"選択アイテムの復元 失敗\");\r\n })\r\n }\r\n else {\r\n // 先頭アイテムを選択\r\n this.sonbpIfController.setSelectFirstItem(sonbpIfconst.ITYPE_PHOTO_BOX,\r\n (selectItem: itemVenderProperty) => {\r\n this.updPhotoCorrectCaption(selectItem);\r\n },\r\n () => { },\r\n () => { });\r\n }\r\n },\r\n () => {\r\n // 異常終了の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_CHANGE_MODE, dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n\r\n }\r\n\r\n /**\r\n * 操作パネル→明るさ変更メソッド\r\n * */\r\n public async btnClickChangeBright(bright: boolean, event: JQueryEventObject): es6promise.Promise {\r\n Logger.debug(\"操作パネル→明るさ変更ボタン押下メソッド\", bright);\r\n\r\n // 赤枠を消す\r\n this._vue.$data.Show.ImgGuidance = false;\r\n\r\n // 念のため\r\n if (bright && this._vue.$data.PhotoBright > 9) { return; }\r\n if (!bright && this._vue.$data.PhotoBright < -9) { return; }\r\n\r\n if (bright) {\r\n this._vue.$data.PhotoBright++;\r\n if (this._vue.$data.PhotoBright > 9) {\r\n this._vue.$data.isBrightUpDisabled = true;\r\n }\r\n this._vue.$data.isBrightDownDisabled = false;\r\n }\r\n else {\r\n this._vue.$data.PhotoBright--;\r\n if (this._vue.$data.PhotoBright < -9) {\r\n this._vue.$data.isBrightDownDisabled = true;\r\n }\r\n this._vue.$data.isBrightUpDisabled = false;\r\n }\r\n\r\n var selectItem = this.sonbpIfController.getSelectItem();\r\n if (selectItem === null) {\r\n Logger.debug(\"アイテムが選択されていません\");\r\n return;\r\n }\r\n\r\n // ローディングダイアログ開始\r\n util.dialogUtil.showLoading();\r\n\r\n // 対象画像情報取得\r\n var target: uploadPhoto = util.relic.listFind(this._uploadImageList, (up: uploadPhoto) => {\r\n return up.fileId === selectItem.file_id.split('@')[0];\r\n }, true);\r\n\r\n var brightNum = this._vue.$data.PhotoBright;\r\n var pureFileId = target.fileId;\r\n var gomi = await this.changePhotoBright(brightNum, pureFileId);\r\n var vpFileId = pureFileId + \"@\" + brightNum;\r\n\r\n this.sonbpIfController.setPhoto(vpFileId, target.width, target.height, true, true,\r\n () =>\r\n {\r\n // 正常終了の時\r\n const targetFrame: photoFrame = util.relic.listFind(this.sonbpIfController.PhotoFrameList, (pf: photoFrame) => {\r\n return pf.idx === selectItem.idx;\r\n });\r\n //targetFrame.useI2 = true;\r\n targetFrame.brightId = brightNum;\r\n\r\n util.dialogUtil.closeLoading();\r\n },\r\n () =>\r\n {\r\n // エラーの時\r\n Logger.error(\"明るさ変更に失敗しました。\");\r\n util.dialogUtil.closeLoading();\r\n });\r\n\r\n }\r\n\r\n\r\n// #region ■イベント(PCのみ処理)\r\n\r\n /**\r\n * 画像一覧→画像のドラッグ開始イベント\r\n */\r\n public onDragStartPhoto(event: DragEvent, fileId: string) {\r\n\r\n if (this._edctrl.editMode !== EDIT_MODE_KIND.SET_PHOTO || !this._vue.$data.UploadListModeSelect) {\r\n // 画像選択モードでない場合は終了\r\n return;\r\n }\r\n\r\n // 操作対象の画像情報を取得\r\n let target: uploadPhoto = util.relic.listFind(this._uploadImageList, (item: uploadPhoto) => {\r\n return item.fileId === fileId;\r\n }, true);\r\n if (!target) {\r\n return;\r\n }\r\n\r\n let isUseI2ON = this._edctrl.editInfo.master.design.editMode != EditConst.DSN_MST_EDIT_MODE_LIMIT;\r\n let pureFileId = target.fileId;\r\n let vpFileId = isUseI2ON ? pureFileId + \"@0\" : pureFileId;\r\n\r\n // sonbpへドラッグ開始を通知\r\n this.sonbpIfController.onDragStartPhoto(event, vpFileId, target.width, target.height,\r\n (vpList: itemVenderProperty[]) => {\r\n // ドロップが正常終了した場合\r\n\r\n // 画像補正状態の保持\r\n const selectItem: itemVenderProperty = this.sonbpIfController.getSelectItem();\r\n const targetFrame: photoFrame = util.relic.listFind(this.sonbpIfController.PhotoFrameList, (pf: photoFrame) => {\r\n return pf.idx === selectItem.idx;\r\n });\r\n targetFrame.fileId = pureFileId;\r\n targetFrame.useI2 = isUseI2ON;\r\n targetFrame.brightId = isUseI2ON ? 0 : 999;\r\n\r\n for (let i: number = 0; i < this._uploadImageList.length; i++) {\r\n // ベンダープロパティに一致する画像IDを検索\r\n let vp: itemVenderProperty = util.relic.listFind(vpList, (item: itemVenderProperty) => {\r\n return item.file_id?.split('@')[0] === this._uploadImageList[i].fileId;\r\n });\r\n // 使用中アイコンの表示制御\r\n if (vp !== undefined) {\r\n // 使用中\r\n this._uploadImageList[i].isUsed = true;\r\n }\r\n else {\r\n // 未使用\r\n this._uploadImageList[i].isUsed = false;\r\n }\r\n }\r\n\r\n // 次へボタンの活性制御\r\n this._edctrl.allowNextPage((allow: boolean) => {\r\n this._vue.$data.EnableNextPageBtn = allow;\r\n });\r\n },\r\n () => {\r\n // ドロップが異常終了した場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_SET_PHOTO, dialogUtil.closeErrorDialog);\r\n });\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■イベント(SPのみ処理)\r\n\r\n /**\r\n * 操作メニュー:読込・配置押下メソッド(SP用)\r\n * @summary アップロード画像一覧を表示する。\r\n */\r\n public btnClickImageListMenu(event: JQueryEventObject): void {\r\n\r\n this.setShowFlgAllOFF();\r\n\r\n // 画像一覧を表示\r\n this._vue.$data.Header.Title = EditConst.TITLE_IMAGELIST;\r\n this._vue.$data.Show.PhotoList = true;\r\n this._vue.$data.Show.ReturnHomeBtn = true;\r\n this._vue.$data.Show.NextHomeFromImgListBtn = true;\r\n this._vue.$data.Show.PhotoDeleteBtn = true;\r\n }\r\n\r\n /**\r\n * 入替(or 入替終了)ボタン押下(SP)\r\n */\r\n public btnClickSwapItemMenu(doStwapStart: boolean, event: JQueryEventObject): void {\r\n\r\n Logger.debug(\"入替(or 入替終了)ボタン押下(SP) doStwapStart[\" + doStwapStart + \"]\");\r\n\r\n if (doStwapStart) {\r\n // 開始\r\n this._vue.$data.Header.Title = EditConst.TITLE_SWAPPHOTO;\r\n\r\n const selectItem: itemVenderProperty = this.sonbpIfController.getSelectItem();\r\n this._vue.$data.SwatpItem.FromItem = selectItem.idx;\r\n this._vue.$data.SwatpItem.ToItem = \"\";\r\n\r\n this._vue.$data.Show.EditImageMenu = false;\r\n this._vue.$data.Show.MessageArea = true;\r\n this._vue.$data.Show.ReturnFlowBtn = false;\r\n this._vue.$data.Show.ReturnHomeFromSwapItemBtn = true;\r\n this._vue.$data.SwatpItem.doSwap = true;\r\n }\r\n else {\r\n // 終了\r\n this._vue.$data.Header.Title = EditConst.TITLE_MAIN;\r\n\r\n this._vue.$data.SwatpItem.FromItem = \"\";\r\n this._vue.$data.SwatpItem.ToItem = \"\";\r\n\r\n this._vue.$data.Show.EditImageMenu = false;\r\n this._vue.$data.Show.MessageArea = false;\r\n this._vue.$data.Show.ReturnFlowBtn = true;\r\n this._vue.$data.Show.ReturnHomeFromSwapItemBtn = false;\r\n this._vue.$data.Show.SetPhotoMenu = true;\r\n\r\n this._vue.$data.SwatpItem.doSwap = false;\r\n\r\n // 選択解除\r\n this.sonbpIfController.selectItemClear();\r\n }\r\n }\r\n\r\n /**\r\n * 操作メニュー:枠ぴったり設定ボタン押下(SP)\r\n */\r\n public btnClickEditImagePitaMenu(event: JQueryEventObject): void {\r\n\r\n this._vue.$data.Show.EditImagePitaMenu = true;\r\n }\r\n\r\n /**\r\n * 操作メニューへ戻る(SP)\r\n */\r\n public returnPhotoManiBtn(event: JQueryEventObject): void {\r\n\r\n this._vue.$data.Show.EditImagePitaMenu = false;\r\n // 「戻る」ボタン\r\n this._vue.$data.Show.ReturnHomeExBtn = true;\r\n this._vue.$data.Show.ReturnPhotoManiBtn = false;\r\n }\r\n\r\n// #endregion\r\n\r\n// #endregion\r\n\r\n// #region ■内部関数\r\n\r\n // 写真では不要\r\n public setStampEditMode() { }\r\n\r\n /**\r\n * 引き剥がし対象のIDを抽出\r\n * @summary アップロード一覧から画像削除される際、Canvasに配置済みならそのfileIdを抽出する。\r\n * @override\r\n */\r\n protected getRemoveTargetIds(): string[] {\r\n\r\n let removeIds: string[] = [];\r\n let useItems: itemVenderProperty[] = [];\r\n\r\n // 配置済の画像取得\r\n this.sonbpIfController.getPhotoList(\r\n (list: itemVenderProperty[]) => {\r\n useItems = list;\r\n }, () => { });\r\n\r\n // 削除対象の画像IDを抽出\r\n let delListIds = Enumerable.from(this._uploadImageList)\r\n .where(row => row.reqDelete === true)\r\n .select(row => row.fileId);\r\n removeIds = Enumerable.from(useItems)\r\n .where(row => delListIds.indexOf(row.file_id.split('@')[0]) >= 0)\r\n .select(row => row.file_id).distinct().toArray();\r\n\r\n return removeIds;\r\n }\r\n\r\n /**\r\n * 画像削除依頼処理\r\n * @summary 一覧から選択画像を削除し、Canvasに配置済ならその配置も引きはがす。\r\n * @implements\r\n */\r\n public requestRemove(fileIds: string[]) {\r\n\r\n this.sonbpIfController.removePhotoById(fileIds,\r\n () => {\r\n Logger.debug(\"画像削除依頼処理 正常終了\");\r\n // 正常終了の場合\r\n this.afterRemove();\r\n },\r\n () => {\r\n // 上記以外の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_DEL_PHOTO, dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n\r\n // js側の変数つじつま合わせ\r\n for (var i = 0; i < fileIds.length; i++) {\r\n for (var j = 0; j < this.sonbpIfController.PhotoFrameList.length; j++) {\r\n if (fileIds[i] == this.sonbpIfController.PhotoFrameList[j].fileId) {\r\n this.sonbpIfController.PhotoFrameList[j].fileId = \"\";\r\n this.sonbpIfController.PhotoFrameList[j].useI2 = true;\r\n this.sonbpIfController.PhotoFrameList[j].brightId = 0;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 画像削除後の処理\r\n * @summary 一覧の削除枠を詰めて空き枠を整理する。\r\n * @override\r\n */\r\n public afterRemove() {\r\n\r\n super.afterRemove();\r\n\r\n // 次へボタンの活性制御\r\n this._edctrl.allowNextPage((allow: boolean) => {\r\n this._vue.$data.EnableNextPageBtn = allow;\r\n });\r\n\r\n if (this._isPhotoFlg && this.NotEmptyUploadNum === 0) {\r\n // 削除して0件になった場合\r\n this._vue.$data.Show.FirstGuidance = true;\r\n }\r\n }\r\n\r\n /**\r\n * 画像設定処理(本体) \r\n * @summary 選択された画像をCanvasへ配置する(実際の処理)\r\n * @implements\r\n */\r\n public setImageBody(fileId: string, targetPhoto: uploadPhoto, nextFun: () => void) {\r\n\r\n // 選択アイテム取得\r\n const selectItem: itemVenderProperty = this.sonbpIfController.getSelectItem();\r\n // 結果判定\r\n if (selectItem === null) {\r\n Logger.debug(\"アイテムが選択されていません\");\r\n return;\r\n }\r\n\r\n // ローディングダイアログ開始\r\n util.dialogUtil.showLoading();\r\n\r\n let target: uploadPhoto;\r\n if (targetPhoto) {\r\n target = targetPhoto;\r\n }\r\n else {\r\n // 対象画像情報取得\r\n target = util.relic.listFind(this._uploadImageList, (up: uploadPhoto) => {\r\n return up.fileId === fileId;\r\n }, true);\r\n }\r\n\r\n let isUseI2ON = this._edctrl.editInfo.master.design.editMode != EditConst.DSN_MST_EDIT_MODE_LIMIT;\r\n let pureFileId = target.fileId;\r\n let vpFileId = isUseI2ON ? pureFileId + \"@0\" : pureFileId;\r\n\r\n // 画像選択モード\r\n // sonbpに画像設定指示(カレント画像枠)\r\n this.sonbpIfController.setPhoto(vpFileId, target.width, target.height, isUseI2ON, false,\r\n () => {\r\n // 正常終了の場合\r\n\r\n // 次へボタンの活性制御\r\n this._edctrl.allowNextPage((allow: boolean) => {\r\n this._vue.$data.EnableNextPageBtn = allow;\r\n });\r\n\r\n // 対象画像枠情報取得\r\n const targetFrame: photoFrame = util.relic.listFind(this.sonbpIfController.PhotoFrameList, (pf: photoFrame) => {\r\n return pf.idx === selectItem.idx;\r\n });\r\n targetFrame.fileId = pureFileId;\r\n targetFrame.useI2 = isUseI2ON;\r\n targetFrame.brightId = isUseI2ON ? 0 : 999;\r\n this._vue.$data.PhotoCorrectCaption = this._usePcDesign ? EditConst.PHOTO_CORRECT_CAPTION_PC_OFF : EditConst.PHOTO_CORRECT_CAPTION_SP_OFF;\r\n this._vue.$data.Show.IsImageAutoFilter = true; // 補正あり\r\n this._vue.$data.Show.IsImagePita = false; // 枠ぴったりOFF\r\n\r\n // 画像枠間の入れ替えを考慮して全画像枠をチェック\r\n this.sonbpIfController.getItems([sonbpIfconst.ITYPE_PHOTO_BOX],\r\n (list: itemVenderProperty[]) => {\r\n for (let i: number = 0; i < this._uploadImageList.length; i++) {\r\n if (this._uploadImageList[i].isEmpty || this._uploadImageList[i].deleteFlg) {\r\n continue;\r\n }\r\n\r\n let targetFrame: itemVenderProperty = util.relic.listFind(list, (vp: itemVenderProperty) => {\r\n return vp.file_id?.split('@')[0] === this._uploadImageList[i].fileId;\r\n });\r\n\r\n if (targetFrame !== undefined) {\r\n let isUsed: boolean = (targetFrame.file_id === this.sonbpIfController.EMPTY_PHOTOBOX_FILE_ID) ? false : true;\r\n this._uploadImageList[i].isUsed = isUsed;\r\n this._vue.$data.UploadPhotoList[i].isUsed = isUsed;\r\n }\r\n else {\r\n this._uploadImageList[i].isUsed = false;\r\n this._vue.$data.UploadPhotoList[i].isUsed = false;\r\n }\r\n }\r\n\r\n if (this._usePcDesign) {\r\n // PC用(SPの場合、空き枠選択=画像一覧に遷移となるためNG)\r\n\r\n // 次の空き画像枠があればそれを選択\r\n const emptyPhotoFrames: photoFrame = util.relic.listFind(this.sonbpIfController.PhotoFrameList, (pf: photoFrame) => {\r\n if (pf.fileId == \"\") {\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (emptyPhotoFrames) {\r\n this.sonbpIfController.selectItem(sonbpIfconst.ITYPE_PHOTO_BOX\r\n , emptyPhotoFrames.idx\r\n , () => { }\r\n , () => { }\r\n );\r\n }\r\n util.dialogUtil.closeLoading();\r\n }\r\n else {\r\n // SP用\r\n // 選択アイテムの解除\r\n this.sonbpIfController.selectItemClear();\r\n util.dialogUtil.closeLoading();\r\n }\r\n\r\n // 追加処理\r\n if (nextFun) {\r\n nextFun();\r\n }\r\n },\r\n () => {\r\n util.dialogUtil.closeLoading();\r\n });\r\n },\r\n () => {\r\n // 異常終了の場合\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_SET_PHOTO, dialogUtil.closeErrorDialog);\r\n });\r\n\r\n }\r\n\r\n /**\r\n * 有効なアップロードファイルであるかのチェック\r\n * @summary ファイルのサイズ・MIMEチェックを行う。\r\n * @implements\r\n */\r\n public uploadFileValid(file: File): string {\r\n\r\n Logger.debug(\"アップロード前ファイルチェック type[\" + file.type + \"] size[\" + file.size + \"]\");\r\n\r\n // MIMEタイプチェック\r\n if (typeof file === 'undefined' || typeof file.type === 'undefined') {\r\n return file.name + \":\" + constDialogMessage.WARN_EDIT_PHOTO_FORMAT_CHECK;\r\n }\r\n if (file.type.length !== 0 &&\r\n file.type !== 'image/jpeg' &&\r\n file.type !== 'image/pjpeg') {\r\n return file.name + \":\" + constDialogMessage.WARN_EDIT_PHOTO_FORMAT_CHECK;\r\n }\r\n\r\n // サイズ(容量チェック)\r\n if ((this._edctrl.ScreenCtrl.photoUlFileSizeMax * 1024 * 1024) < file.size) {\r\n return file.name + \":\" + constDialogMessage.WARN_EDIT_PHOTO_SIZE_CHECK;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * アップロード一覧情報をWebStorageへ保存する。\r\n * @implements\r\n */\r\n public writeStorage(list: idbEdit.photo[]): boolean {\r\n\r\n return editStrage.writeStorageToPhoto(list);\r\n }\r\n\r\n // 写真では不要\r\n public callSonbpIfSetStamp(idx: number, target: uploadPhoto, okFunc: () => void, errFunc: () => void): void { }\r\n\r\n /**\r\n * 選択画像枠の状態で画像補正ボタンのキャプションを変更\r\n * @param selectItem :選択画像枠(PHOTO_BOX)\r\n */\r\n private updPhotoCorrectCaption(selectItem: itemVenderProperty) {\r\n\r\n const targetFrame: photoFrame = util.relic.listFind(this.sonbpIfController.PhotoFrameList, (pf: photoFrame) => {\r\n return pf.idx === selectItem.idx;\r\n });\r\n\r\n if (targetFrame !== undefined) {\r\n if (targetFrame.useI2) {\r\n this._vue.$data.PhotoCorrectCaption = this._usePcDesign ? EditConst.PHOTO_CORRECT_CAPTION_PC_OFF : EditConst.PHOTO_CORRECT_CAPTION_SP_OFF;\r\n this._vue.$data.Show.IsImageAutoFilter = true; // 補正あり\r\n }\r\n else {\r\n this._vue.$data.PhotoCorrectCaption = this._usePcDesign ? EditConst.PHOTO_CORRECT_CAPTION_PC_ON : EditConst.PHOTO_CORRECT_CAPTION_SP_ON;\r\n this._vue.$data.Show.IsImageAutoFilter = false; // 補正なし\r\n }\r\n }\r\n }\r\n\r\n private async changePhotoBright(bright: number, fileId: string): es6promise.Promise {\r\n\r\n let result: GetEditInfo.ChangeBright;\r\n\r\n // 入力パラメータ\r\n const param = {\r\n token: this._authToken,\r\n bright: bright,\r\n fileId: fileId\r\n }\r\n await util.ajax.post(this.WEBAPI_URL_CHANGEBRIGHT, JSON.stringify(param)).then((resData: GetEditInfo.ChangeBright) => {\r\n result = resData;\r\n\r\n Logger.debug(\"WebAPI_ChangeBright result[\" + JSON.stringify(result) + \"]\");\r\n\r\n }).catch(() => {\r\n result = null;\r\n });\r\n\r\n return result.fileId;\r\n }\r\n\r\n// #endregion\r\n\r\n}\r\n","import { ajax } from \"./ajax\";\r\nimport * as es6promise from \"es6-promise\";\r\nimport { Logger } from \"./logger\";\r\nimport { retailerConfigEntity } from \"../entity/retailerConfigEntity\";\r\n\r\n// GIGYA\r\ndeclare var gigya: any;\r\n\r\n// WebKit\r\ninterface Window {\r\n\twebkit?: any;\r\n\tlocation?: any;\r\n}\r\ndeclare var window: Window;\r\n\r\nexport module SSO {\r\n\r\n\t// WebAPIのエンドポイント定義\r\n\tconst WebAPI_OCAPISSO = \"Login/OCAPISSO/\";\r\n\tconst WebAPI_GIGYASSO = \"Login/GIGYA/\";\r\n\tconst WebAPI_LoginCheck = \"Login/Check\";\r\n\r\n\t// リテーラconf\r\n\tlet _retailerConf: retailerConfigEntity;\r\n\r\n\t// gigyaのコールバック後で使用する認証トークン(退避)\r\n\tlet _tkn: string;\r\n\r\n\tlet isDebug = false;\r\n\tconst devUrl = [\"localhost\", \"127.0.0.1\",\"ff-posca\"];\r\n\r\n\t/**\r\n\t * 初期化処理\r\n\t * */\r\n\texport function init() {\r\n\r\n\t\tconst current = window.location.href;\r\n\t\tlet rt = devUrl.filter(url => {\r\n\t\t\treturn current.indexOf(url) > 0;\r\n\t\t});\r\n\t\tif (rt.length > 0) {\r\n\t\t\tisDebug = true;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t// ---------- 外向け -------------------------------------------\r\n\r\n\t/**\r\n\t * SSO処理が完了したかの判定フラグ\r\n\t * ※GIGYAがawaitできないため、これで対応。\r\n\t * */\r\n\texport let SSOCopmlete = false;\r\n\r\n\t/**\r\n\t * パラメータセット\r\n\t * @param ccgigya\r\n\t * @param cclogincheck\r\n\t * @param clientId\r\n\t */\r\n\texport function SetRetailerSetting(conf: retailerConfigEntity) {\r\n\t\t_retailerConf = conf\r\n\t}\r\n\r\n\t/**\r\n\t * SSOの処理を行う。\r\n\t * @param token\r\n\t * @param editId\r\n\t */\r\n\texport async function DoSSO(token: string,retailerId:string) {\r\n\r\n\t\tSSOCopmlete = false;\r\n\r\n\t\tif (retailerId == \"0\") {\r\n\t\t\tLogger.log(\"SSO FF\");\r\n\t\t\tawait GIGYASSOMain(token);\r\n\t\t} else {\r\n\t\t\tLogger.log(\"SSO OCAPI\");\r\n\t\t\tawait OCAPISSOMain(token);\r\n }\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * SSO連携の結果を待つ。\r\n\t * */\r\n\texport async function WaitSSO(): es6promise.Promise {\r\n\t\tfunction sleep(ms) {\r\n\t\t\treturn new Promise(resolve => setTimeout(resolve, ms));\r\n\t\t}\r\n\r\n\t\t// 10回まっても結果が返ってこなければSSO中断する。\r\n\t\tfor (let i = 0; i < 10; i++) {\r\n\t\t\tLogger.info(\"SSO連携待ち中...\", i);\r\n\t\t\tif (!SSO.SSOCopmlete) {\r\n\t\t\t\tawait sleep(500);\r\n\t\t\t} else {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tLogger.info(\"SSO.SSOCopmlete\", SSO.SSOCopmlete);\r\n\t\treturn;\r\n\t}\r\n\r\n// #region GIGYA\r\n\r\n\t/**\r\n\t * GIGYAでSSOメインロジック\r\n\t * @param token\r\n\t */\r\n\tasync function GIGYASSOMain(token: string) {\r\n\r\n\t\t_tkn = token;\r\n\r\n\t\t// まずはGIGYAのログインチェック\t\r\n\t\tLogger.log(`gigyaLoginResult start: token => ${_tkn}`);\r\n\t\tlet gigyaLoginResult = await GIGYALoginCheck(token);\r\n\t\tLogger.log(\"gigyaLoginResult end\", gigyaLoginResult);\r\n\t\tif (gigyaLoginResult) {\r\n\r\n\t\t\t// GIGYAログイン済み、次はポスカのログインチェック\r\n\t\t\tlet poscaLoginResult = await LoginCheck(token);\r\n\t\t\tif (!poscaLoginResult) {\r\n\r\n\t\t\t\t// UID,UIDSignature,timestampを取得してその後の処理も行う。\r\n\t\t\t\t// GIGYAはawaitできないので突き出しにしておく。\r\n\t\t\t\tGIGYAGetUID();\r\n\t\t\t\tLogger.log(\"SSO連携突き出し開始\");\r\n\r\n\t\t\t} else {\r\n\t\t\t\tSSOCopmlete = true;\r\n\t\t\t\tLogger.log(\"GIGYA,ポスカ ログイン済み\");\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t// GIGYAは未ログインなのでSSOは実施しない。\r\n\t\t\tSSOCopmlete = true;\r\n\t\t\tLogger.log(\"GIGYA未ログイン\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * GIGYAからUID等を取ってくる。\r\n\t * */\r\n\tfunction GIGYAGetUID(): void {\r\n\t\tLogger.log(\"GIGYAGetUID\");\r\n\t\tgigya.accounts.getAccountInfo({\r\n\t\t\tinclude: \"identities-all\",\r\n\t\t\tcallback: CallBackGetAccountInfo\r\n\t\t})\r\n }\r\n\r\n\t/**\r\n\t * GIGYAからUID取ってきた際にコールバックされるもの\r\n\t * @param res\r\n\t */\r\n\tasync function CallBackGetAccountInfo(res): es6promise.Promise {\r\n\t\tLogger.log(\"CallBackGetAccountInfo\");\r\n\t\tif (res.errorCode == 0) {\r\n\t\t\tlet uid = res['UID'];\r\n\t\t\tlet uidSignature = res['UIDSignature'];\r\n\t\t\tlet signatureTimestamp = res['signatureTimestamp'];\r\n\t\t\tLogger.log(\"uid\",uid);\r\n\t\t\tLogger.log(\"uidSignature\", uidSignature);\r\n\t\t\tLogger.log(\"signatureTimestamp\", signatureTimestamp);\r\n\r\n\t\t\t// GIGYA SSO連携をする。\r\n\t\t\tLogger.log(\"GIGYAログイン済み、ポスカ未ログイン\");\r\n\t\t\tlet ssoResult = await GIGYASSO(_tkn, uid, uidSignature,signatureTimestamp);\r\n\t\t\tif (!ssoResult) {\r\n\t\t\t\tLogger.log(\"SSO失敗...\");\r\n\t\t\t}\r\n\t\t\tLogger.log(\"SSOでログインしました。\");\r\n\t\t\tSSOCopmlete = true;\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tLogger.log('Error :' + res.errorMessage);\r\n\t\t\tLogger.log('res :' + res.errorCode);\r\n\t\t\tSSOCopmlete = true;\r\n\t\t\treturn;\r\n\t\t} \r\n }\r\n\r\n\t/**\r\n\t * GIGYA ポスカ側で未ログインなのでGIGYAログインする。\r\n\t * @param token\r\n\t */\r\n\tasync function GIGYASSO(token: string, UID: string, UIDSignature: string,timestamp): es6promise.Promise {\r\n\t\tif (isDebug) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tlet req = {\r\n\t\t\ttoken: token,\r\n\t\t\tuid: UID,\r\n\t\t\tsignature: UIDSignature,\r\n\t\t\tsigtimestamp:timestamp\r\n\t\t}\r\n\t\treturn await ajax.post(WebAPI_GIGYASSO, JSON.stringify(req)).then((data) => {\r\n\t\t\t// SSO OK!\r\n\t\t\tLogger.log(\"GIGYAログインしました\");\r\n\t\t\treturn true;\r\n\t\t}).catch((e) => {\r\n\t\t\tthrow e;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * ログインチェックを行います。(GIGYA)\r\n\t * 未ログイン時はfalse\r\n\t */\r\n\texport async function GIGYALoginCheck(tkn: string): es6promise.Promise {\r\n\t\tif (isDebug) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// GIGYA側のログインチェック\r\n\t\treturn await ajax.getForCCLoginCheck(_retailerConf.extrSettings.ocapi.ocapiLoginCheckURL).then((res: string) => {\r\n\t\t\treturn res.toLocaleLowerCase() == \"true\" ? true : false;\r\n\t\t}).catch((e) => {\r\n\t\t\tthrow e;\r\n\t\t});\r\n\t}\r\n// #endregion\r\n\r\n// #region OCAPI\r\n\t/**\r\n\t * OCAPIでSSOメインロジック\r\n\t * @param token\r\n\t */\r\n\tasync function OCAPISSOMain(token: string) {\r\n\r\n\t\t// まずはSFCCのログインチェック\r\n\t\tlet ocapiLoginResult = await OCAPIAccountLoginCheck();\r\n\t\tif (ocapiLoginResult.responseStatus) {\r\n\r\n\t\t\t// SFCCログイン済み、次はポスカのログインチェック\r\n\t\t\tlet poscaLoginResult = await LoginCheck(token);\r\n\t\t\tif (!poscaLoginResult) {\r\n\r\n\t\t\t\t// ポスカは未ログインなのでSSO連携をする。\r\n\t\t\t\tLogger.log(\"OCAPIログイン済み、ポスカ未ログイン\");\r\n\t\t\t\tlet ssoResult = await OCAPISSO(token, ocapiLoginResult.authorization, ocapiLoginResult.customerId);\r\n\t\t\t\tif (!ssoResult) {\r\n\t\t\t\t\tLogger.log(\"SSO失敗...\");\r\n\t\t\t\t}\r\n\t\t\t\tLogger.log(\"SSOでログインしました。\");\r\n\r\n\t\t\t} else {\r\n\t\t\t\tLogger.log(\"OCAPI,ポスカ ログイン済み\");\r\n }\r\n\r\n\t\t} else {\r\n\t\t\t// OCAPIは未ログインなのでSSOは実施しない。\r\n\t\t\tLogger.log(\"OCAPI未ログイン\");\r\n\t\t}\r\n\t\tSSOCopmlete = true;\r\n }\r\n\r\n\t/**\r\n\t * SFCC側でログインしているかチェックする\r\n\t * @param token\r\n\t */\r\n\tasync function OCAPIAccountLoginCheck(): es6promise.Promise {\r\n\t\tif (isDebug) {\r\n\t\t\treturn {\r\n\t\t\t\tresponseStatus: true,\r\n\t\t\t\tcustomerId: \"abdUL0YcdwSm0MSI5abkEeA2Rc\",\r\n\t\t\t\tauthorization: \"Bearer eyJfdiI6IjEiLCJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfdiI6IjEiLCJleHAiOjE2NTc2NzkxMzcsImlhdCI6MTY1NzY3NzMzNywiaXNzIjoiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiwic3ViIjoie1wiX3ZcIjpcIjFcIixcImN1c3RvbWVyX2luZm9cIjp7XCJjdXN0b21lcl9pZFwiOlwiYWJkVUwwWWNkd1NtME1TSTVhYmtFZUEyUmNcIixcImd1ZXN0XCI6ZmFsc2UsXCJ2aXNpdF9pZFwiOlwiYjc3NWExNzU4NDYwN2MzNGQ0MjI3NTk3OTRcIn19In0.dl8XgldAVo8SGRDrrSAdnbD_tnRnfYwIrohjhsPW78JgTif2kukQqnB74RgKHRx6U5CTBee8ktTVwqnmtguRT0zTaqQy6FzB2GQUjJaNZc03kEXDAJ2QyAkkKBY2MQEeIH-a6xjsDKM0bYtl4Df7JOQI38pvTfH4j3oaucbjiNjwkUGCPs_LS_JYaTNhkdqjlRDBcyYo3h8ArKx_5YJK18aynZ00coTdezBKLTzMb7ByQTjiYk7tOi-7SSgrri89gY8EIYV9uqACQCuRVCbuc1GYu0OFr_RipfeglkIeO9tSFneyECtAPQ_Ly1PDNzHvf8-2Uoh-_kKR3dP4Y0Nof1oo_vPiKyQA83_s7h5fGPC9okARuuH2_pOzYA0DKp4RJBvyCc1bmVg_pZYDSOyFHaNhcOWCCjm6-mOy29IGdasKKRuDlWzO8rfYLR5wEOu2xrFgbFaCjmXmLZeoWvuPl_9LeOITgx0tlcyIluArvQwnOMoL1IYqgTVDHCQhtFw1n5EzYg8-rFjqQ8e4XG0cQ-tC8PNmdbXCBwIDQkKP2HNQ5X4rHLknq7cKBXbBTUun\"\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn await ajax.get(_retailerConf.extrSettings.ocapi.accountLoginCheckURL,\"\").then((data) => {\r\n\t\t\tLogger.debug(\"AccountLoginCheck()\", data);\r\n\t\t\treturn data;\r\n\t\t}).catch((e) => {\r\n\t\t\tthrow e;\r\n\t\t});\r\n\t}\r\n\t/**\r\n\t * OCAPI ポスカ側で未ログインなのでSSOする。\r\n\t * @param token\r\n\t */\r\n\tasync function OCAPISSO(token: string,jwt:string,customerId:string): es6promise.Promise {\r\n\t\tif (isDebug) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tlet req = {\r\n\t\t\ttoken: token,\r\n\t\t\tjwt: jwt,\r\n\t\t\tcustomerId:customerId\r\n\t\t}\r\n\t\treturn await ajax.post(WebAPI_OCAPISSO, JSON.stringify(req)).then((data) => {\r\n\t\t\tif (data.isLogind)\r\n\t\t\t\t// SSO OK!\r\n\t\t\t\treturn true;\r\n\t\t\telse\r\n\t\t\t\t// SSO NG...\r\n\t\t\t\treturn false;\r\n\t\t});\r\n\t}\r\n\t/**\r\n\t * OCAPI ポスカ側のログインチェックをする。\r\n\t * @param token\r\n\t */\r\n\tasync function LoginCheck(token: string): es6promise.Promise {\r\n\t\tif (isDebug) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tlet req = {\r\n\t\t\ttoken: token,\r\n\t\t}\r\n\t\treturn await ajax.post(WebAPI_LoginCheck, JSON.stringify(req)).then((data) => {\r\n\t\t\tif (data.isLogind)\r\n\t\t\t\t// PoscaLogin OK!\r\n\t\t\t\treturn true;\r\n\t\t\telse\r\n\t\t\t\t// PoscaLogin NG...\r\n\t\t\t\treturn false;\r\n\t\t});\r\n\t}\r\n// #endregion OCAPI\r\n}","import * as sonbpIfconst from \"../../sonbpIf/base/constants\";\r\nimport * as idbEdit from \"../../entity/idb/editInfo\";\r\nimport * as es6promise from \"es6-promise\";\r\nimport { Logger } from \"../../util/logger\";\r\nimport { util } from \"../..\";\r\nimport { constDialogMessage, dialogUtil } from \"../../util\";\r\nimport { editStrage } from \"../edit.tool\";\r\n\r\nimport * as edconst from \"../edit.const\";\r\nimport { EditConst } from \"../edit.const\";\r\nimport { uploadPhoto } from \"../edit.entity\";\r\nimport { itemVenderProperty } from \"../edit.sonbp_if\";\r\nimport { UploadImageLogicClass } from \"./edit.uploadImageLogic.base\";\r\nimport * as effectMystampSDK from \"../edit.effectMystampSDK\";\r\n\r\n/**\r\n * Myステッカー\r\n * 画像アップロード、画像配置の処理を提供するクラス\r\n */\r\nexport class MyStampLogicClass extends UploadImageLogicClass {\r\n\r\n// #region ■定数\r\n\r\n /**\r\n * Myステッカー画像最大数\r\n * @override\r\n */\r\n protected readonly UPLOAD_IMAGE_NUM_MAX: number = 50;\r\n\r\n /**\r\n * 配置上限数\r\n * @override\r\n */\r\n protected readonly PUT_MAX: number = 50;\r\n\r\n /**\r\n * Myステッカーアップロード(WebAPI)呼び出しURL\r\n * @override\r\n */\r\n protected readonly WEBAPI_URL_UPLOADIMAGE: string = \"Edit/UploadMyStamp\";\r\n /**\r\n * Myステッカー画像サムネイル取得(WebAPI)呼び出しURL\r\n * @override\r\n */\r\n protected readonly WEBAPI_URL_GETTHUMBNAIL: string = \"Edit/GetMyStampThumb\";\r\n\r\n protected readonly VIEW_TITLE: string = EditConst.TITLE_MYSTAMP;\r\n protected readonly VIEW_MODE: string = edconst.EDIT_MODE_KIND.MYSTAMP;\r\n protected readonly VIEW_ITEM_TYPE: string = sonbpIfconst.ITYPE_MYSTAMP_IMG;\r\n\r\n// #endregion\r\n\r\n// #region ■プロパティ\r\n\r\n /**\r\n * アップロード画像最大数(Myステッカー用)\r\n * @implements\r\n */\r\n public UploadNumMax(): number {\r\n return this.UPLOAD_IMAGE_NUM_MAX;\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■イベント\r\n\r\n /**\r\n * ツールメニュー:Myステッカー押下メソッド\r\n * @summary 編集モードをスタンプにして画面表示を切り替える。\r\n * @param selectedItemVp 選択済みアイテム(2025年対応:配置済み画像の再編集可能 #28295)\r\n * @implements\r\n */\r\n public btnClickStampMenu(event: JQueryEventObject, selectedItemVp: itemVenderProperty = null): void {\r\n if (this._edctrl.editMode === edconst.EDIT_MODE_KIND.MYSTAMP) {\r\n return;\r\n }\r\n // sonbpへ処理モード変更依頼\r\n this.sonbpIfController.setMode(edconst.EDIT_MODE_KIND.MYSTAMP,\r\n () => {\r\n // 正常終了の場合\r\n this._edctrl.editMode = edconst.EDIT_MODE_KIND.MYSTAMP;\r\n\r\n this.setShowFlgAllOFF();\r\n\r\n if (this._usePcDesign) {\r\n // PC用\r\n // パネルの表示制御\r\n this._vue.$data.Show.OparatePallet = true;\r\n this._vue.$data.Show.MyStampPanel = true;\r\n\r\n // ツールメニューの活性制御\r\n this._vue.$data.ActiveMyStampMenu = true;\r\n\r\n // フェードインアウトの初期化\r\n this._vue.$data.HideLabel = EditConst.HIDE_AREA_FADE_OUT;\r\n this._vue.$data.MyStamp.fade.In = false;\r\n this._vue.$data.MyStamp.fade.Out = false;\r\n\r\n // オブジェクト操作パレットの制御\r\n this._edctrl.setModeOparatePallet(edconst.EDIT_MODE_KIND.MYSTAMP, null);\r\n\r\n // 選択アイテムの指定\r\n this.sonbpIfController.getMyStampList(\r\n (list: itemVenderProperty[]) => {\r\n if (0 < list.length) {\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n\r\n const idx = selectedItemVp?.idx ?? list[0].idx;\r\n this.sonbpIfController.selectItem(sonbpIfconst.ITYPE_MYSTAMP_IMG, idx,\r\n () => {\r\n Logger.debug(\"選択アイテムの指定 成功\");\r\n },\r\n () => {\r\n Logger.error(\"選択アイテムの指定 失敗\");\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n });\r\n }\r\n else {\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n }\r\n }\r\n );\r\n\r\n } else {\r\n // SP用\r\n\r\n // パネルの表示制御\r\n this._vue.$data.Show.EditArea = true;\r\n this._vue.$data.Show.FooterMenu = true;\r\n\r\n // 履歴処理開始\r\n this.sonbpIfController.historyStart();\r\n\r\n this.sonbpIfController.getMyStampList((list: itemVenderProperty[]) => {\r\n // 作成済みのMyステッカーが存在するか判定\r\n if (0 < list.length) {\r\n // 存在する場合、Myステッカーの位置調整表示\r\n this._vue.$data.Header.Title = EditConst.TITLE_MYSTAMP;\r\n this._vue.$data.Show.ReturnHomeExBtn = true;\r\n this._vue.$data.Show.CommitNextHomeBtn = true;\r\n\r\n this._vue.$data.Stamp.DelBtnEnable = false;\r\n this._vue.$data.EnableUploadListTrashOK = false;\r\n\r\n // オブジェクト操作パレットの表示制御\r\n this._vue.$data.Show.OparatePallet = true;\r\n this._edctrl.setModeOparatePallet(edconst.EDIT_MODE_KIND.MYSTAMP, null);\r\n\r\n // タッチイベント制御(無効)\r\n this._edctrl.touchEventChange(false);\r\n\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n\r\n // 選択アイテムの指定\r\n const idx = selectedItemVp?.idx ?? list[0].idx;\r\n this.sonbpIfController.selectItem(sonbpIfconst.ITYPE_MYSTAMP_IMG, idx,\r\n () => {\r\n Logger.debug(\"選択アイテムの指定 成功\");\r\n this._vue.$data.Stamp.DelBtnEnable = true;\r\n },\r\n () => {\r\n Logger.error(\"選択アイテムの指定 失敗\");\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n });\r\n }\r\n else {\r\n // 存在しない場合、スタンプの編集表示\r\n this.setStampEditMode();\r\n }\r\n });\r\n }\r\n },\r\n () => {\r\n // 異常終了の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_CHANGE_MODE, dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n }\r\n\r\n /**\r\n * Myステッカーファイル選択押下時のダイアログ表示\r\n */\r\n public async btnClickUploadMyStamp(event: any) {\r\n // 「次回は表示しない」がチェックされたらダイアログ表示しない。\r\n if (this._vue.$data.ConfirmMyStampCheckbox) {\r\n $(\"#myStampInput\").click();\r\n } else {\r\n this._vue.$data.ConfirmMyStampCheckbox = await dialogUtil.showMyStampHowToDlg(this._usePcDesign, () => { $(\"#myStampInput\").click(); }, () => { });\r\n }\r\n }\r\n\r\n /**\r\n * 切抜き編集画像選択モードでの画像押下メソッド(PC用)\r\n */\r\n public async imgClickUploadImageForMystampEditPc(event: JQueryEventObject, fileId: string): es6promise.Promise {\r\n try {\r\n await this.btnClickUploadMyStampEdit(event, fileId);\r\n } finally {\r\n //処理後は常にモードを元に戻す\r\n this.btnClickUploadListMystampEditCancelPc(event);\r\n }\r\n }\r\n\r\n /**\r\n * 切抜き編集ボタン押下メソッド(SP用)\r\n */\r\n public btnClickMyStampEditSp(event: JQueryEventObject): void {\r\n\r\n let fileId: string;\r\n\r\n // SPなら選択画像取得\r\n if (!this._usePcDesign) {\r\n const selPhoto: uploadPhoto = util.relic.listFind(this._uploadImageList, (photo: uploadPhoto) => {\r\n return photo.selected === EditConst.IMG_SELECTED;\r\n }, true);\r\n if (!selPhoto) {\r\n console?.debug(\"画像が選択されていません\");\r\n return;\r\n }\r\n fileId = selPhoto.fileId;\r\n }\r\n\r\n this.btnClickUploadMyStampEdit(event, fileId);\r\n }\r\n\r\n /**\r\n * Myステッカーファイルの切抜き編集開始\r\n */\r\n private async btnClickUploadMyStampEdit(event: JQueryEventObject, fileId: string): es6promise.Promise {\r\n\r\n // ローディングダイアログ開始\r\n util.dialogUtil.showLoading();\r\n\r\n // アップロードファイルの最大数チェック\r\n if (this.UploadNumMax() <= this.NotEmptyUploadNum) {\r\n // メッセージ表示\r\n util.dialogUtil.createErrorDialog(util.constDialogMessage.ERROR_IMAGE_UPLOAD_OVER_MAX_TEXT, () => {\r\n dialogUtil.closeErrorDialog();\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n }, dialogUtil.DialogType.Warning);\r\n return;\r\n }\r\n\r\n //指定スタンプIDでテンポラリ準備\r\n const param = {\r\n token: this._authToken,\r\n fileId: fileId\r\n }\r\n\r\n var that = this;\r\n await util.ajax.post(\"Edit/EditMystampInitTemp\", JSON.stringify(param)).then((resData: any) => {\r\n\r\n //切抜き編集画面への連携開始\r\n that.editMystampStart();\r\n }).catch((e: Error) => {\r\n\r\n console?.error(\"Edit/EditMystampInitTemp NG.\", e);\r\n util.dialogUtil.closeLoading();\r\n });\r\n }\r\n\r\n /**\r\n * Myステッカーの切抜き編集画面の連携呼出し\r\n */\r\n private editMystampStart() {\r\n console?.log(\"editMystamp call start.\")\r\n\r\n if (this._usePcDesign) {\r\n // 2重スクロール抑止\r\n $('body').css({ \"position\": \"fixed\" });\r\n }\r\n //IFrame準備\r\n if (!($(\"#editMystampIframePanel\").length)) {\r\n let fgblock =\r\n '
\\\r\n\\\r\n
'\r\n $('body').append($(fgblock));\r\n }\r\n\r\n $(\"#editMystampIframePanel\").removeClass(\"is-hidden\");\r\n if (this._usePcDesign) this._vue.$data.Show.IsShowIframePanel = true;\r\n\r\n //切抜き編集画面呼出し\r\n let that = this;\r\n effectMystampSDK.editmystampSdkInit(\"editMystampIframe\",\r\n (fileKey: string) => {\r\n //OK\r\n console?.log(\"editMystampIframe callback OK.\")\r\n\r\n //編集終了の後処理\r\n that.editmystampCallbackAfter(fileKey).then((newFileKey) => {\r\n that.imgClickUploadImage(null, newFileKey);\r\n if (this._usePcDesign) {\r\n // 選択状態をクリア\r\n for (let i: number = 0; i < this._uploadImageList.length; i++) {\r\n this._uploadImageList[i].selected = EditConst.IMG_NOSELECT;\r\n }\r\n }\r\n }).finally(() => {\r\n\r\n $(\"#editMystampIframePanel\").remove();\r\n util.dialogUtil.closeLoading();\r\n if (this._usePcDesign) {\r\n $('body').css({ \"position\": \"\" });\r\n this._vue.$data.Show.IsShowIframePanel = false;\r\n }\r\n });\r\n },\r\n (message) => {\r\n //キャンセル\r\n console?.log(\"editMystampIframe callback Cancel.\", message);\r\n\r\n $(\"#editMystampIframePanel\").remove();\r\n util.dialogUtil.closeLoading();\r\n if (this._usePcDesign) {\r\n $('body').css({ \"position\": \"\" });\r\n this._vue.$data.Show.IsShowIframePanel = false;\r\n }\r\n }\r\n );\r\n\r\n let url = document.location.pathname + '/../EditMystamp';\r\n effectMystampSDK.editmystampSdkCreate(url);\r\n }\r\n\r\n /**\r\n * Myステッカーの切抜き編集の後処理\r\n */\r\n private editmystampCallbackAfter(fileId: string): es6promise.Promise {\r\n\r\n return new es6promise.Promise((resolve, reject) => {\r\n\r\n const param = {\r\n token: this._authToken,\r\n fileId: fileId\r\n }\r\n\r\n var that = this;\r\n util.ajax.post(\"Edit/EditMystampAfterSave\", JSON.stringify(param)).then((resData: any) => {\r\n\r\n return that.getThumbnail(resData.fileId, resData.width, resData.height, resData.fileObject)\r\n }).then((data) => {\r\n\r\n console?.log(\"後処理正常終了\", data);\r\n resolve(data);\r\n }).catch((e: Error) => {\r\n console?.error(\"後処理失敗\", e);\r\n reject();\r\n });\r\n });\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■内部関数\r\n\r\n /**\r\n * Myステッカー編集モードへ画面項目設定(SP用)\r\n * @summary アップロード画像一覧画面を表示する。\r\n * @implements\r\n */\r\n public setStampEditMode() {\r\n\r\n // パネルの表示制御\r\n this.setShowFlgAllOFF();\r\n this._vue.$data.Header.Title = EditConst.TITLE_IMAGELIST;\r\n this._vue.$data.Show.MyStampList = true;\r\n this._vue.$data.Show.ReturnMyStampHomeBtn = true;\r\n this._vue.$data.Show.NextHomeFromMyStampListBtn = true;\r\n this._vue.$data.Show.MyStampListTrashBtn = true;\r\n\r\n // 選択状態をクリア\r\n for (let i: number = 0; i < this._uploadImageList.length; i++) {\r\n this._uploadImageList[i].selected = EditConst.IMG_NOSELECT;\r\n }\r\n\r\n // 削除(&次へ)ボタンの活性制御\r\n this._vue.$data.EnableUploadListTrashOK = false;\r\n }\r\n\r\n /**\r\n * Myステッカー削除依頼処理\r\n * @summary 一覧から選択画像を削除し、Canvasに配置済ならその配置も引きはがす。\r\n * @implements\r\n */\r\n public requestRemove(fileIds: string[]) {\r\n\r\n this.sonbpIfController.removeMyStampById(fileIds,\r\n () => {\r\n Logger.debug(\"Myステッカー削除依頼処理 正常終了\");\r\n // 正常終了の場合\r\n this.afterRemove();\r\n },\r\n () => {\r\n // 上記以外の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_DEL_MYSTAMP, dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n }\r\n\r\n /**\r\n * Myステッカー削除後の処理\r\n * @summary 一覧の削除枠を詰めて空き枠を整理する。\r\n * @override\r\n */\r\n protected afterRemove() {\r\n\r\n super.afterRemove();\r\n\r\n // 残スタンプを確認\r\n this.sonbpIfController.getMyStampList((stampList: itemVenderProperty[]) => {\r\n if (stampList.length === 0) {\r\n // 0件の場合\r\n this._vue.$data.Stamp.DelBtnEnable = false;\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n }\r\n else {\r\n // 上記以外の場合\r\n let leftStamp: boolean = true;\r\n this.sonbpIfController.setSelectFirstItem(sonbpIfconst.ITYPE_MYSTAMP_IMG, () => { }, () => { leftStamp = false }, () => { leftStamp = false });\r\n if (leftStamp) {\r\n this._vue.$data.Stamp.DelBtnEnable = true;\r\n } else {\r\n this._vue.$data.Stamp.DelBtnEnable = false;\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Myステッカー画像設定処理(本体) \r\n * @summary 選択された画像をCanvasへ配置する(実際の処理)\r\n * @implements\r\n */\r\n public setImageBody(fileId: string, targetPhoto: uploadPhoto, nextFun: () => void) {\r\n Logger.debug(\"Myステッカー画像押下メソッド fileId[\" + fileId + \"]\");\r\n\r\n let that = this;\r\n this.commonSetStampBody(fileId, targetPhoto, () => {\r\n if (nextFun)\r\n nextFun();\r\n });\r\n }\r\n\r\n /**\r\n * 有効なアップロードファイルであるかのチェック(Myステッカー用)\r\n * @summary ファイルのサイズ・MIMEチェックを行う。\r\n * @implements\r\n */\r\n public uploadFileValid(file: File): string {\r\n\r\n Logger.debug(\"アップロード前ファイルチェック type[\" + file.type + \"] size[\" + file.size + \"]\");\r\n\r\n // MIMEタイプチェック\r\n if (typeof file === 'undefined' || typeof file.type === 'undefined') {\r\n return file.name + \":\" + constDialogMessage.WARN_EDIT_PHOTO_FORMAT_CHECK;\r\n }\r\n if (file.type.length !== 0 &&\r\n file.type !== 'image/jpeg' &&\r\n file.type !== 'image/pjpeg' &&\r\n file.type !== 'image/png') {\r\n return file.name + \":\" + constDialogMessage.WARN_EDIT_PHOTO_FORMAT_CHECK;\r\n }\r\n\r\n // サイズ(容量チェック)\r\n if ((this._edctrl.ScreenCtrl.photoUlFileSizeMax * 1024 * 1024) < file.size) {\r\n return file.name + \":\" + constDialogMessage.WARN_EDIT_PHOTO_SIZE_CHECK;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * 一覧をidbへ保存\r\n * @summary アップロード一覧情報をidbへ保存する\r\n * @implements\r\n */\r\n public writeStorage(list: idbEdit.photo[]): boolean {\r\n\r\n return editStrage.writeStorageToMyStamp(list);\r\n }\r\n\r\n /**\r\n * スタンプ配置\r\n * @summary SonbpIfへスタンプ配置を依頼する。\r\n * @implements\r\n */\r\n public callSonbpIfSetStamp(idx: number, target: uploadPhoto, okFunc: () => void, errFunc: () => void): void {\r\n\r\n this.sonbpIfController.setMyStamp(idx, target, okFunc, errFunc);\r\n }\r\n\r\n /**\r\n * 画像押下メソッド\r\n * @summary PCのディスパッチのみ\r\n */\r\n public imgClickUploadImageForMystampSelectedPc(event: JQueryEventObject, fileId: string): void {\r\n\r\n if (!this._usePcDesign) {\r\n return;\r\n }\r\n\r\n if (!fileId) {\r\n Logger.debug(\"fileId is undefined\");\r\n return;\r\n }\r\n\r\n Logger.debug(\"画像押下メソッド fileId[\" + fileId + \"]\");\r\n\r\n // 対象画像の現状態を取得\r\n const selImage: uploadPhoto = util.relic.listFind(this._uploadImageList, (p: uploadPhoto) => {\r\n return p.fileId === fileId;\r\n });\r\n if (!selImage) {\r\n return;\r\n }\r\n const targetSelected: string = selImage.selected === EditConst.IMG_SELECTED ? EditConst.IMG_NOSELECT : EditConst.IMG_SELECTED;\r\n const otherSelected: string = EditConst.IMG_NOSELECT;\r\n\r\n for (let i: number = 0; i < this._uploadImageList.length; i++) {\r\n if (this._uploadImageList[i].fileId === fileId) {\r\n this._uploadImageList[i].selected = targetSelected;\r\n this._vue.$data.MystampFileIdSelected = fileId;\r\n }\r\n else {\r\n this._uploadImageList[i].selected = otherSelected;\r\n }\r\n }\r\n }\r\n// #endregion\r\n\r\n}\r\n","import Enumerable from \"linq\";\r\nimport * as sonbpIfconst from \"../../sonbpIf/base/constants\";\r\nimport * as idbEdit from \"../../entity/idb/editInfo\";\r\nimport * as es6promise from \"es6-promise\";\r\nimport { Logger } from \"../../util/logger\";\r\nimport { response, util } from \"../..\";\r\nimport { constDialogMessage, dialogUtil } from \"../../util\";\r\nimport { calcCheckSum, editStrage } from \"../edit.tool\";\r\n\r\nimport * as edconst from \"../edit.const\";\r\nimport { EditConst } from \"../edit.const\";\r\nimport { UploadImageResponseEntity, uploadPhoto } from \"../edit.entity\";\r\nimport { itemVenderProperty } from \"../edit.sonbp_if\";\r\nimport { UploadImageLogicClass } from \"./edit.uploadImageLogic.base\";\r\n\r\n// from FontGenic\r\ndeclare var fontgenicSdkCreate: any;\r\ndeclare var fontgenicSdkInit: any;\r\n\r\n\r\n/**\r\n * 手書きスタンプ\r\n * 画像アップロード、画像配置の処理を提供するクラス\r\n */\r\nexport class TegakiStampLogicClass extends UploadImageLogicClass {\r\n\r\n// #region ■定数\r\n\r\n /**\r\n * 手書きスタンプ画像最大数\r\n * @override\r\n */\r\n protected readonly UPLOAD_IMAGE_NUM_MAX: number = 50;\r\n\r\n /**\r\n * スタンプ配置可能な数\r\n * @override\r\n */\r\n protected readonly PUT_MAX: number = 50;\r\n\r\n /**\r\n * 手書きスタンプアップロード(WebAPI)呼び出しURL\r\n * @override\r\n */\r\n protected readonly WEBAPI_URL_UPLOADIMAGE: string = \"Edit/UploadTegakiStamp\";\r\n /**\r\n * 手書きスタンプ画像サムネイル取得(WebAPI)呼び出しURL\r\n * @override\r\n */\r\n protected readonly WEBAPI_URL_GETTHUMBNAIL: string = \"Edit/GetTegakiStampThumb\";\r\n /**\r\n * 手書きスタンプ画像色替え(WebAPI)呼び出しURL\r\n */\r\n private readonly WEBAPI_URL_CHANGETEGAKICOLOR: string = \"Edit/ChangeTegakiStampColor\";\r\n\r\n protected readonly VIEW_TITLE: string = EditConst.TITLE_TEGAKISTAMP;\r\n protected readonly VIEW_MODE: string = edconst.EDIT_MODE_KIND.FONTGENIC;\r\n protected readonly VIEW_ITEM_TYPE: string = sonbpIfconst.ITYPE_FONTGENIC_IMG;\r\n\r\n// #endregion\r\n\r\n// #region ■プロパティ\r\n\r\n /**\r\n * アップロード画像最大数(手書きスタンプ用)\r\n * @implements\r\n */\r\n public UploadNumMax(): number {\r\n return this.UPLOAD_IMAGE_NUM_MAX;\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■イベント\r\n\r\n /**\r\n * ツールメニュー:スタンプ押下メソッド\r\n * @summary 編集モードをスタンプにして画面表示を切り替える。\r\n * @param selectedItemVp 選択済みアイテム(2025年対応:配置済み画像の再編集可能 #28295)\r\n * @implements\r\n */\r\n public btnClickStampMenu(event: JQueryEventObject, selectedItemVp: itemVenderProperty = null): void {\r\n\r\n if (this._edctrl.editMode === edconst.EDIT_MODE_KIND.FONTGENIC) {\r\n return;\r\n }\r\n\r\n // sonbpへ処理モード変更依頼\r\n this.sonbpIfController.setMode(edconst.EDIT_MODE_KIND.FONTGENIC,\r\n () => {\r\n // 正常終了の場合\r\n this._edctrl.editMode = edconst.EDIT_MODE_KIND.FONTGENIC;\r\n\r\n this.setShowFlgAllOFF();\r\n\r\n if (this._usePcDesign) {\r\n // PC用\r\n // パネルの表示制御\r\n this._vue.$data.Show.OparatePallet = true;\r\n this._vue.$data.Show.TegakiStampPanel = true;\r\n\r\n // ツールメニューの活性制御\r\n this._vue.$data.ActiveTegakiStampMenu = true;\r\n\r\n // フェードインアウトの初期化\r\n this._vue.$data.HideLabel = EditConst.HIDE_AREA_FADE_OUT;\r\n this._vue.$data.TegakiStamp.fade.In = false;\r\n this._vue.$data.TegakiStamp.fade.Out = false;\r\n\r\n // オブジェクト操作パレットの制御\r\n this._edctrl.setModeOparatePallet(edconst.EDIT_MODE_KIND.FONTGENIC, null);\r\n\r\n // 選択アイテムの指定\r\n this.sonbpIfController.getTegakiStampList(\r\n (list: itemVenderProperty[]) => {\r\n if (0 < list.length) {\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n\r\n const idx = selectedItemVp?.idx ?? list[0].idx;\r\n this.sonbpIfController.selectItem(sonbpIfconst.ITYPE_FONTGENIC_IMG, idx,\r\n () => { Logger.debug(\"選択アイテムの指定 成功\"); },\r\n () => {\r\n Logger.error(\"選択アイテムの指定 失敗\");\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n });\r\n }\r\n else {\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n }\r\n }\r\n );\r\n }\r\n else {\r\n // SP用\r\n\r\n // パネルの表示制御\r\n this._vue.$data.Show.EditArea = true;\r\n this._vue.$data.Show.FooterMenu = true;\r\n\r\n // 履歴処理開始\r\n this.sonbpIfController.historyStart();\r\n\r\n this.sonbpIfController.getTegakiStampList((list: itemVenderProperty[]) => {\r\n // 作成済みのスタンプが存在するか判定\r\n if (0 < list.length) {\r\n // 存在する場合、スタンプの位置調整表示\r\n this._vue.$data.Header.Title = EditConst.TITLE_TEGAKISTAMP;\r\n this._vue.$data.Show.ReturnHomeExBtn = true;\r\n this._vue.$data.Show.CommitNextHomeBtn = true;\r\n\r\n this._vue.$data.Stamp.DelBtnEnable = false;\r\n this._vue.$data.EnableUploadListTrashOK = false;\r\n\r\n // オブジェクト操作パレットの表示制御\r\n this._vue.$data.Show.OparatePallet = true;\r\n this._edctrl.setModeOparatePallet(edconst.EDIT_MODE_KIND.FONTGENIC, null);\r\n\r\n // タッチイベント制御(無効)\r\n this._edctrl.touchEventChange(false);\r\n\r\n // 選択アイテムの指定\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n const idx = selectedItemVp?.idx ?? list[0].idx;\r\n this.sonbpIfController.selectItem(sonbpIfconst.ITYPE_FONTGENIC_IMG, idx,\r\n () => {\r\n Logger.debug(\"選択アイテムの指定 成功\");\r\n this._vue.$data.Stamp.DelBtnEnable = true;\r\n },\r\n () => {\r\n Logger.error(\"選択アイテムの指定 失敗\");\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n });\r\n }\r\n else {\r\n // 存在しない場合、スタンプの編集表示\r\n this.setStampEditMode();\r\n }\r\n });\r\n }\r\n },\r\n () => {\r\n // 異常終了の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_CHANGE_MODE, dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n }\r\n\r\n /**\r\n * 手書きスタンプファイル選択押下メソッド\r\n * @summary 手順ダイアログ表示してからFontGenicを呼び出す。\r\n */\r\n public async btnClickUploadTegakiStamp(event: any) {\r\n\r\n let that = this;\r\n\r\n new es6promise.Promise((res, rej) => {\r\n\r\n //「次回は表示しない」がチェックされたらダイアログ表示しない。\r\n if (that._vue.$data.ConfirmTegakiStampCheckbox) {\r\n res(true);\r\n return;\r\n }\r\n\r\n // ダイアログ表示\r\n dialogUtil.showTegakiStampHowToDlg(that._usePcDesign)\r\n .then(function (ret) {\r\n that._vue.$data.ConfirmTegakiStampCheckbox = ret.chk\r\n res(ret.btn);\r\n })\r\n .catch(function (err) {\r\n rej(err);\r\n });\r\n\r\n }).then(function (btn) {\r\n\r\n if (btn != true) {\r\n //キャンセルならおしまい\r\n return;\r\n }\r\n\r\n // ローディングダイアログ開始\r\n util.dialogUtil.showLoading();\r\n\r\n // アップロードファイルの最大数チェック\r\n if (that.UploadNumMax() <= that.NotEmptyUploadNum) {\r\n // メッセージ表示\r\n util.dialogUtil.createErrorDialog(util.constDialogMessage.ERROR_IMAGE_UPLOAD_OVER_MAX_TEXT\r\n , () => {\r\n dialogUtil.closeErrorDialog();\r\n util.dialogUtil.closeLoading();\r\n },\r\n dialogUtil.DialogType.Warning\r\n );\r\n return;\r\n }\r\n\r\n //fontgenic連携開始\r\n that.fontgenicStart();\r\n });\r\n }\r\n\r\n // #region ■イベント(PCのみ処理)\r\n\r\n /**\r\n * 手書きスタンプ色選択押下メソッド\r\n * @summary 選択された色でCanvasの配置画像を置換える。\r\n */\r\n public radioClickTegakiColorPc(colorId: string, event: JQueryEventObject): void {\r\n\r\n this.changeTegakiStampColor(colorId);\r\n }\r\n\r\n // #endregion\r\n\r\n // #region ■イベント(SPのみ処理)\r\n\r\n /**\r\n * 操作パネル→手書きスタンプ色変更ボタン押下メソッド(SP用)\r\n * @summary 色変更画面を表示する。\r\n */\r\n public btnClickChangeTegakiStampColorSp(event: JQueryEventObject): void {\r\n\r\n // タッチイベント制御(有効)\r\n this._edctrl.touchEventChange(true);\r\n\r\n // パネルの表示制御\r\n this.setShowFlgAllOFF();\r\n this._vue.$data.Header.Title = EditConst.TITLE_TEGAKISTAMP_COLOR;\r\n this._vue.$data.Show.TegakiColorPanel = true;\r\n this._vue.$data.Show.ReturnTegakiStampHomeBtn = true;\r\n\r\n //現在の色を選択状態にしておく\r\n this._vue.$data.SelectTegakiColorSPEdit = this._vue.$data.SelectTegakiColor;\r\n }\r\n\r\n /**\r\n * (手書き色選択パネルから)次へボタン押下メソッド(SP)\r\n * @summary 選択された色でCanvasの配置画像を置換える。置換後、位置調整画面を表示する。\r\n */\r\n public btnClickNextHomeFromTegakiColorPanelSp(event: JQueryEventObject): void {\r\n\r\n let that = this;\r\n this.changeTegakiStampColor(this._vue.$data.SelectTegakiColorSPEdit)\r\n .then((isSuccess) => {\r\n if (isSuccess) {\r\n this._vue.$data.SelectTegakiColor = this._vue.$data.SelectTegakiColorSPEdit;\r\n that.returnStampHomeBtn(null);\r\n }\r\n });\r\n }\r\n\r\n // #endregion\r\n\r\n// #endregion\r\n\r\n// #region ■内部関数\r\n\r\n /**\r\n * 手書きスタンプ編集モードへ画面項目設定(SP用)\r\n * @summary アップロード画像一覧画面を表示する。\r\n * @implements\r\n */\r\n public setStampEditMode() {\r\n\r\n // パネルの表示制御\r\n this.setShowFlgAllOFF();\r\n this._vue.$data.Header.Title = EditConst.TITLE_IMAGELIST;\r\n this._vue.$data.Show.TegakiStampList = true;\r\n this._vue.$data.Show.ReturnTegakiStampHomeBtn = true;\r\n this._vue.$data.Show.NextHomeFromTegakiStampListBtn = true;\r\n this._vue.$data.Show.TegakiStampListTrashBtn = true;\r\n\r\n // 選択状態をクリア\r\n this._uploadImageList.forEach(row => row.selected = EditConst.IMG_NOSELECT);\r\n\r\n // 削除(&次へ)ボタンの活性制御\r\n this._vue.$data.EnableUploadListTrashOK = false;\r\n }\r\n\r\n /**\r\n * 引き剥がし対象のIDを抽出\r\n * @summary アップロード一覧から画像削除される際、Canvasに配置済みならそのfileIdを抽出する。\r\n * @override\r\n */\r\n protected getRemoveTargetIds(): string[] {\r\n\r\n let removeIds: string[] = [];\r\n let useItems: itemVenderProperty[] = [];\r\n\r\n // 配置済の画像取得\r\n this.sonbpIfController.getTegakiStampList(\r\n (list: itemVenderProperty[]) => {\r\n useItems = list;\r\n });\r\n\r\n // 削除対象の画像IDを抽出\r\n let delListIds = Enumerable.from(this._uploadImageList)\r\n .where(row => row.reqDelete === true)\r\n .select(row => row.fileId);\r\n removeIds = Enumerable.from(useItems)\r\n .where(row => delListIds.indexOf(row.file_id.split('@')[0]) >= 0)\r\n .select(row => row.file_id).distinct().toArray();\r\n\r\n return removeIds;\r\n }\r\n\r\n /**\r\n * 手書きスタンプ削除依頼処理\r\n * @summary 一覧から選択画像を削除し、Canvasに配置済ならその配置も引きはがす。\r\n * @implements\r\n */\r\n public requestRemove(fileIds: string[]) {\r\n\r\n this.sonbpIfController.removeTegakiStampById(fileIds,\r\n () => {\r\n Logger.debug(\"手書きスタンプ削除依頼処理 正常終了\");\r\n // 正常終了の場合\r\n this.afterRemove();\r\n },\r\n () => {\r\n // 上記以外の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_DEL_TEGAKISTAMP, dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n }\r\n\r\n /**\r\n * 手書きスタンプ削除後の処理\r\n * @summary 一覧の削除枠を詰めて空き枠を整理する。\r\n * @override\r\n */\r\n protected afterRemove() {\r\n\r\n super.afterRemove();\r\n\r\n // 残スタンプを確認\r\n this.sonbpIfController.getTegakiStampList((stampList: itemVenderProperty[]) => {\r\n if (stampList.length === 0) {\r\n // 0件の場合\r\n this._vue.$data.Stamp.DelBtnEnable = false;\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n\r\n this._vue.$data.SelectTegakiColor = \"\";\r\n }\r\n else {\r\n // 上記以外の場合\r\n let leftStamp: boolean = true;\r\n this.sonbpIfController.setSelectFirstItem(sonbpIfconst.ITYPE_FONTGENIC_IMG, () => { }, () => { leftStamp = false }, () => { leftStamp = false });\r\n if (leftStamp) {\r\n this._vue.$data.Stamp.DelBtnEnable = true;\r\n } else {\r\n this._vue.$data.Stamp.DelBtnEnable = false;\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * 手書きスタンプ画像設定処理(本体) \r\n * @summary 選択された画像をCanvasへ配置する(実際の処理)\r\n * @implements\r\n */\r\n public setImageBody(fileId: string, targetPhoto: uploadPhoto, nextFun: () => void) {\r\n Logger.debug(\"手書きスタンプ画像押下メソッド fileId[\" + fileId + \"]\");\r\n\r\n let that = this;\r\n this.commonSetStampBody(fileId, targetPhoto, () => {\r\n if (nextFun)\r\n nextFun();\r\n });\r\n }\r\n\r\n /**\r\n * 手書きスタンプ色変更\r\n * @summary サーバAPIを呼んで指定色のスタンプ画像生成を行う。\r\n */\r\n private changeTegakiStampColor(colorId: string): es6promise.Promise {\r\n console.log(\"手書きスタンプ色変更\", colorId);\r\n\r\n let that = this;\r\n return new es6promise.Promise(function (resolve, reject) {\r\n\r\n //選択中のアイテム\r\n let selItem = that.sonbpIfController.getSelectItem();\r\n\r\n if (!selItem) {\r\n Logger.debug(\"アイテムが選択されていません\");\r\n resolve(false);\r\n return;\r\n }\r\n\r\n // ローディングダイアログ開始\r\n util.dialogUtil.showLoading();\r\n\r\n let pureFileId = selItem.file_id.split('@')[0];\r\n\r\n that.uploadTegakiStampChangeColor(pureFileId, colorId).then((resData: response.responseEntity) => {\r\n\r\n return new es6promise.Promise((res, rej) => {\r\n\r\n //sonbpへ依頼\r\n let idx = Number(selItem.idx);\r\n let fileIdWidthAtmark = pureFileId + '@' + colorId;\r\n that.sonbpIfController.setTegakiStamp(idx, fileIdWidthAtmark, 0, 0, res, rej); //画像差替えはサイズ無視なのでw,h=0\r\n });\r\n\r\n }).then(() => {\r\n\r\n // 正常終了の場合\r\n util.dialogUtil.closeLoading();\r\n resolve(true);\r\n }).catch((err: any) => {\r\n\r\n // 上記以外の場合\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.createErrorDialog(\r\n constDialogMessage.ERROR_EDIT_CHANGE_TEGAKISTAMP,\r\n () => {\r\n util.dialogUtil.closeErrorDialog();\r\n }\r\n );\r\n reject();\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * 一覧をidbへ保存\r\n * @summary アップロード一覧情報をidbへ保存する\r\n * @implements\r\n */\r\n public writeStorage(list: idbEdit.photo[]): boolean {\r\n\r\n return editStrage.writeStorageToTegakiStamp(list);\r\n }\r\n\r\n /**\r\n * スタンプ配置\r\n * @summary SonbpIfへスタンプ配置を依頼する。\r\n * @implements\r\n */\r\n public callSonbpIfSetStamp(idx: number, target: uploadPhoto, okFunc: () => void, errFunc: () => void): void {\r\n\r\n let fileIdWidthAtmark = target.fileId + \"@0\";\r\n this.sonbpIfController.setTegakiStamp(idx, fileIdWidthAtmark, target.width, target.height, okFunc, errFunc);\r\n }\r\n\r\n\r\n // #region ■ファイルアップロード関連\r\n\r\n /**\r\n * 有効なアップロードファイルであるかのチェック\r\n * @summary ファイルのサイズ・MIMEチェックを行う。\r\n * @implements\r\n */\r\n public uploadFileValid(file: File): string {\r\n // ファイルチェックはFontGenicにおまかせ。\r\n return \"\";\r\n }\r\n\r\n /**\r\n * fontgenic連携呼出し\r\n * @summary iframeでfontgenicを呼出し、コールバックを待つ。\r\n */\r\n private fontgenicStart() {\r\n console.log(\"gontgenic call start.\")\r\n\r\n //IFrame準備\r\n if (!($(\"#fontgenicIframePanel\").length)) {\r\n let fgblock =\r\n '
\\\r\n\\\r\n
'\r\n $('body').append($(fgblock));\r\n }\r\n\r\n $(\"#fontgenicIframePanel\").removeClass(\"is-hidden\");\r\n if (this._usePcDesign) this._vue.$data.Show.IsShowIframePanel = true;\r\n\r\n //fontgenic呼出し\r\n let that = this;\r\n fontgenicSdkInit(\"fontgenicIframe\",\r\n (blob: Blob) => {\r\n //OK\r\n console.log(\"gontgenic callback OK.\")\r\n //$(\"#fontgenicIframePanel\").addClass(\"is-hidden\");\r\n $(\"#fontgenicIframePanel\").remove();\r\n if (this._usePcDesign) this._vue.$data.Show.IsShowIframePanel = false;\r\n\r\n let reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onloadend = async () => {\r\n\r\n let base64String = reader.result as string;\r\n that.fontgenicCallbackAfter(base64String);\r\n };\r\n },\r\n (message) => {\r\n //キャンセル\r\n console.log(\"gontgenic callback Cancel.\", message);\r\n //$(\"#fontgenicIframePanel\").addClass(\"is-hidden\");\r\n $(\"#fontgenicIframePanel\").remove();\r\n util.dialogUtil.closeLoading();\r\n if (this._usePcDesign) this._vue.$data.Show.IsShowIframePanel = false;\r\n }\r\n );\r\n fontgenicSdkCreate('0', 'ja');\r\n }\r\n\r\n /**\r\n * FontGenicのコールバック後の処理\r\n * @summary fontgenicから渡された画像(base64)をサーバへアップロードする。\r\n */\r\n private fontgenicCallbackAfter(base64: string) {\r\n\r\n //チェック不要(妥当性はfontgenicにおまかせ)\r\n\r\n //純なbase64にしておく\r\n let top = base64.indexOf(';base64,') + 8;\r\n base64 = base64.substring(top);\r\n\r\n // アップロード処理へ\r\n this.uploadTegakiStampCover(base64).then((fileId: string) => {\r\n\r\n Logger.debug(\"アップロード完了\", fileId);\r\n\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n\r\n }).catch((err) => {\r\n\r\n util.dialogUtil.closeLoading();\r\n const msg: string = util.constDialogMessage.ERROR_EDIT_CREATE_TEGAKISTAMP + \"
\";\r\n util.dialogUtil.createErrorDialog(msg, () => {\r\n dialogUtil.closeErrorDialog();\r\n }, dialogUtil.DialogType.Warning);\r\n });\r\n }\r\n\r\n /**\r\n * アップロード処理入口\r\n * @summary MD5を生成する。アップロード成功したらサムネイル画像の取得を行う。\r\n * @summary Myスタンプとは送信Form形式ちがうため共通化できず、別途実装としている。\r\n */\r\n private uploadTegakiStampCover(base64: string): es6promise.Promise {\r\n\r\n const that = this;\r\n\r\n return new es6promise.Promise(async function (resolve, reject) {\r\n\r\n //MD5取得のため、一旦base64->file変換する\r\n let file: File;\r\n {\r\n let bin = atob(base64.replace(/^.*,/, ''));\r\n // バイナリデータ化\r\n let buffer = new Uint8Array(bin.length);\r\n for (let i = 0; i < bin.length; i++) {\r\n buffer[i] = bin.charCodeAt(i);\r\n }\r\n // ファイルオブジェクト生成\r\n file = new File([buffer.buffer], \"fontgenic.png\", { type: \"image/png\" });\r\n }\r\n\r\n //ファイルは1件なのでuploadTegakiStampBodyはここに包含する\r\n\r\n // MD5算出\r\n calcCheckSum(file).then((md5: string) => {\r\n\r\n Logger.debug(\"MD5 [\" + md5 + \"]\");\r\n\r\n // アップロード実行\r\n that.uploadTegakiStamp(base64, md5).then((resData: response.responseEntity) => {\r\n if (resData.result.code === 0) {\r\n // 正常\r\n const photoEntity: UploadImageResponseEntity = resData.data;\r\n photoEntity.fileObject = file;\r\n resolve(photoEntity);\r\n }\r\n else {\r\n reject(\"code:\" + resData.result.code + \",msg:\" + resData.result.message);\r\n }\r\n }).catch((err: any) => {\r\n reject(err);\r\n });\r\n }).catch((err: Error) => {\r\n Logger.error(err);\r\n reject(err);\r\n });\r\n\r\n }).then((uploadResult: UploadImageResponseEntity) => {\r\n\r\n // アップロード画像のサムネイル取得\r\n return that.getThumbnail(uploadResult.fileId, uploadResult.width, uploadResult.height, null);\r\n\r\n }).then((fileId: string) => {\r\n\r\n Logger.debug(\"アップロードファイル情報 iDBへ書き込み 開始\");\r\n\r\n return new es6promise.Promise(async function (resolve, reject) {\r\n\r\n const setTegakiStampList: idbEdit.uploadStampUseInfo[] = [];\r\n\r\n // indexedDBの手書きスタンプ情報更新\r\n that.setSaveUploadInfo(that._uploadImageList, setTegakiStampList);\r\n\r\n if (editStrage.writeStorageToTegakiStamp(setTegakiStampList)) {\r\n Logger.debug(\"手書きアップロードファイル情報 WebStorageへ書き込み 正常終了\", fileId);\r\n resolve(fileId);\r\n }\r\n else {\r\n Logger.error(\"手書きアップロードファイル情報 WebStorageへ書き込み エラー終了\", fileId);\r\n reject(fileId);\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * 手書きスタンプアップロードリクエスト\r\n * @summary Formデータを組み立ててサーバAPIへリクエスト実施。\r\n */\r\n private uploadTegakiStamp(base64: string, md5: string): es6promise.Promise {\r\n\r\n // パラメータ\r\n let fd: FormData = new FormData();\r\n fd.append(\"token\", this._authToken);\r\n fd.append(\"MD5\", md5);\r\n fd.append(\"fontGenic64\", base64);\r\n\r\n return this.commonUploadImageFileSend(this.WEBAPI_URL_UPLOADIMAGE, fd, \"no_name\");\r\n }\r\n\r\n /**\r\n * 手書きスタンプ色変更リクエスト\r\n * @summary サーバAPIへリクエスト実施。\r\n */\r\n private uploadTegakiStampChangeColor(fileId: string, colorId: string): es6promise.Promise {\r\n\r\n const req = {\r\n token: this._authToken,\r\n colorId: colorId,\r\n fileId: fileId\r\n }\r\n\r\n return util.ajax.post(this.WEBAPI_URL_CHANGETEGAKICOLOR, JSON.stringify(req));\r\n }\r\n\r\n // #endregion\r\n\r\n// #endregion\r\n\r\n}\r\n","import * as sonbpIfconst from \"../../sonbpIf/base/constants\";\r\nimport { Logger } from \"../../util/logger\";\r\nimport { GetEditInfo, util } from \"../..\";\r\nimport { constDialogMessage, dialogUtil } from \"../../util\";\r\n\r\nimport * as edconst from \"../edit.const\";\r\nimport { EditConst } from \"../edit.const\";\r\nimport { itemVenderProperty } from \"../edit.sonbp_if\";\r\nimport { BaseStampLogicClass } from \"./edit.baseStampLogic\";\r\n\r\n\r\n/**\r\n * マスタスタンプ\r\n * \r\n * マスタスタンプのエンティティはアップロードスタンプとは構造が違うため、共通化できず。。\r\n * 画面制御の一部処理を共有化のためにクラス化しています。\r\n */\r\nexport class MstStampLogicClass extends BaseStampLogicClass {\r\n\r\n// #region ■定数\r\n\r\n protected readonly VIEW_TITLE: string = EditConst.TITLE_STAMP;\r\n protected readonly VIEW_MODE: string = edconst.EDIT_MODE_KIND.STAMP;\r\n protected readonly VIEW_ITEM_TYPE: string = sonbpIfconst.ITYPE_STAMP_IMG;\r\n\r\n /**\r\n * 配置上限数\r\n * @override\r\n */\r\n protected readonly PUT_MAX: number = 50;\r\n\r\n// #endregion\r\n\r\n// #region ■イベント\r\n\r\n /**\r\n * ツールメニュー:スタンプ押下メソッド\r\n * @summary 編集モードをスタンプにして画面表示を切り替える。\r\n * @param selectedItemVp 選択済みアイテム(2025年対応:配置済み画像の再編集可能 #28295)\r\n * @implements\r\n */\r\n public btnClickStampMenu(event: JQueryEventObject, selectedItemVp: itemVenderProperty = null): void {\r\n\r\n if (this._edctrl.editMode === edconst.EDIT_MODE_KIND.STAMP) {\r\n return;\r\n }\r\n\r\n // sonbpへ処理モード変更依頼\r\n this.sonbpIfController.setMode(edconst.EDIT_MODE_KIND.STAMP,\r\n () => {\r\n // 正常終了の場合\r\n this._edctrl.editMode = edconst.EDIT_MODE_KIND.STAMP;\r\n\r\n this.setShowFlgAllOFF();\r\n\r\n if (this._usePcDesign) {\r\n // PC用\r\n // パネルの表示制御\r\n this._vue.$data.Show.OparatePallet = true;\r\n this._vue.$data.Show.StampPanel = true;\r\n\r\n // ツールメニューの活性制御\r\n this._vue.$data.ActiveStampMenu = true;\r\n\r\n // フェードインアウトの初期化\r\n this._vue.$data.HideLabel = EditConst.HIDE_AREA_FADE_OUT;\r\n this._vue.$data.Stamp.fade.In = false;\r\n this._vue.$data.Stamp.fade.Out = false;\r\n\r\n // オブジェクト操作パレットの制御\r\n this._edctrl.setModeOparatePallet(edconst.EDIT_MODE_KIND.STAMP, null);\r\n\r\n // 選択アイテムの指定\r\n this.sonbpIfController.getMstStampList(\r\n (list: itemVenderProperty[]) => {\r\n if (0 < list.length) {\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n\r\n const idx = selectedItemVp?.idx ?? list[0].idx;\r\n this.sonbpIfController.selectItem(sonbpIfconst.ITYPE_STAMP_IMG, idx,\r\n () => {\r\n Logger.debug(\"選択アイテムの指定 成功\");\r\n },\r\n () => {\r\n Logger.error(\"選択アイテムの指定 失敗\");\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n });\r\n }\r\n else {\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n }\r\n }\r\n );\r\n }\r\n else {\r\n // SP用\r\n // ヘッダーメニュー\r\n\r\n // パネルの表示制御\r\n this._vue.$data.Show.EditArea = true;\r\n this._vue.$data.Show.FooterMenu = true;\r\n\r\n // 履歴処理開始\r\n this.sonbpIfController.historyStart();\r\n\r\n this.sonbpIfController.getMstStampList((list: itemVenderProperty[]) => {\r\n // 作成済みのスタンプが存在するか判定\r\n if (0 < list.length) {\r\n // 存在する場合、スタンプの位置調整表示\r\n this._vue.$data.Header.Title = EditConst.TITLE_STAMP;\r\n this._vue.$data.Show.ReturnHomeExBtn = true;\r\n this._vue.$data.Show.StampDeleteBtn = true;\r\n this._vue.$data.Show.CommitNextHomeBtn = true;\r\n this._vue.$data.Stamp.DelBtnEnable = false;\r\n\r\n // オブジェクト操作パレットの表示制御\r\n this._vue.$data.Show.OparatePallet = true;\r\n this._edctrl.setModeOparatePallet(edconst.EDIT_MODE_KIND.STAMP, null);\r\n\r\n // タッチイベント制御(無効)\r\n this._edctrl.touchEventChange(false);\r\n\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n\r\n // 選択アイテムの指定\r\n const idx = selectedItemVp?.idx ?? list[0].idx;\r\n this.sonbpIfController.selectItem(sonbpIfconst.ITYPE_STAMP_IMG, idx,\r\n () => {\r\n Logger.debug(\"選択アイテムの指定 成功\");\r\n this._vue.$data.Stamp.DelBtnEnable = true;\r\n },\r\n () => {\r\n Logger.error(\"選択アイテムの指定 失敗\");\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n });\r\n }\r\n else {\r\n // 存在しない場合、スタンプの編集表示\r\n this.setStampEditMode();\r\n }\r\n });\r\n }\r\n\r\n },\r\n () => {\r\n // 異常終了の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_CHANGE_MODE, dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n }\r\n\r\n /**\r\n * スタンプパネル スタンプ画像押下\r\n * @param event\r\n */\r\n public imgClickStamp(event: JQueryEventObject, stampId: number): void {\r\n\r\n Logger.debug(\"スタンプ画像押下メソッド stampId[\" + stampId + \"]\");\r\n\r\n // 上限チェック\r\n let count = this.UseCount();\r\n if (count >= this.PUT_MAX) {\r\n dialogUtil.createErrorDialog(`配置可能な上限(${this.PUT_MAX}件)を超えました。`, dialogUtil.closeErrorDialog);\r\n return;\r\n }\r\n\r\n let that = this;\r\n\r\n // ローディングダイアログ開始\r\n util.dialogUtil.showLoading();\r\n\r\n // 対象スタンプ情報取得\r\n const target: GetEditInfo.GetEditInfoStampCategoryEntity = util.relic.listFind(this._edctrl.editInfo.master.stamp, (stamp: GetEditInfo.GetEditInfoStampCategoryEntity) => {\r\n return stamp.id === stampId;\r\n });\r\n\r\n // スタンプの一覧を取得\r\n this.sonbpIfController.getMstStampList((stampList: itemVenderProperty[]) => {\r\n\r\n // アイテム番号の採番\r\n let idx: number;\r\n if (stampList.length === 0) {\r\n idx = 1;\r\n }\r\n else {\r\n let idxTmp: number = -1;\r\n for (let i: number = 0; i < stampList.length; i++) {\r\n const idx: number = Number(stampList[i].idx);\r\n if (idxTmp < idx) {\r\n idxTmp = idx;\r\n }\r\n }\r\n idx = idxTmp + 1;\r\n }\r\n\r\n // sonbpへ依頼\r\n this.sonbpIfController.setStamp(idx, target,\r\n () => {\r\n // 正常終了の場合\r\n if (!this._usePcDesign) {\r\n // SP用\r\n that.returnStampHomeBtn(null);\r\n }\r\n util.dialogUtil.closeLoading();\r\n },\r\n () => {\r\n // 上記以外の場合\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.createErrorDialog(\r\n constDialogMessage.ERROR_EDIT_CREATE_STAMP,\r\n () => {\r\n util.dialogUtil.closeErrorDialog();\r\n }\r\n );\r\n });\r\n });\r\n }\r\n\r\n\r\n // #region ■イベント(SPのみ処理)\r\n\r\n /**\r\n * スタンプ追加ボタン押下(SP用)\r\n * @param event\r\n */\r\n public btnClickStampSet(event: JQueryEventObject): void {\r\n\r\n Logger.debug(\"スタンプ追加ボタン押下(SP用)\");\r\n\r\n this.imgClickStamp(event, this._vue.$data.Stamp.TargetStamp);\r\n }\r\n\r\n /**\r\n * スタンプのカテゴリコンボ押下(SP用)\r\n * @param event\r\n */\r\n public cmbClickStampCategory(event: JQueryEventObject): void {\r\n\r\n Logger.debug(\"スタンプのカテゴリコンボ押下(SP用)\");\r\n\r\n this._vue.$data.Show.StampCategoryList = true;\r\n this._vue.$data.Show.DialogArea = true;\r\n\r\n }\r\n\r\n /**\r\n * スタンプのカテゴリイメージ押下(SP用)\r\n * @param event\r\n */\r\n public imgClickStampCategory(event: JQueryEventObject): void {\r\n\r\n Logger.debug(\"スタンプのカテゴリイメージ押下(SP用)\");\r\n\r\n this._vue.$data.Stamp.TargetStamp = \"\";\r\n this._vue.$data.Show.DialogArea = false;\r\n this._vue.$data.Show.StampCategoryList = false;\r\n\r\n }\r\n\r\n /**\r\n * スタンプパネル スタンプ画像押下(SP用)\r\n * @param event\r\n */\r\n public imgClickStampForSp(event: JQueryEventObject, stampId: number): void {\r\n\r\n Logger.debug(\"スタンプパネル スタンプ画像押下(SP用) stampId[\" + stampId + \"]\");\r\n\r\n this._vue.$data.Stamp.TargetStamp = stampId;\r\n }\r\n\r\n // #endregion\r\n\r\n// #endregion\r\n\r\n// #region ■内部関数\r\n\r\n /**\r\n * スタンプ編集モードへ画面項目設定(SP用)\r\n * @summary スタンプ一覧画面を表示する。\r\n * @implements\r\n */\r\n public setStampEditMode() {\r\n\r\n // パネルの表示制御\r\n this.setShowFlgAllOFF();\r\n this._vue.$data.Header.Title = EditConst.TITLE_STAMP_EDIT;\r\n this._vue.$data.Stamp.TargetStamp = \"\";\r\n this._vue.$data.Show.ReturnStampHomeBtn = true;\r\n this._vue.$data.Show.StampPanel = true;\r\n }\r\n\r\n// #endregion\r\n\r\n}\r\n","import { GetEditInfo, SenderInfoDb, util } from \"..\";\r\nimport * as sonbpIfconst from \"../sonbpIf/base/constants\";\r\nimport { constDialogMessage, dialogUtil } from \"../util\";\r\nimport { Logger } from \"../util/logger\";\r\nimport { BaseLogicClass } from \"./edit.baseLogic\";\r\nimport { EditConst, EDIT_MODE_KIND, kumihanHv, KUMIHAN_HV } from \"./edit.const\";\r\nimport { kumihanContoroller, kumihanGreetingRequestParam, kumihanRequestParam, kumihanResponseParam, kumihanSenderRequestParam, senderTranEntityEx } from \"./edit.entity\";\r\nimport { itemVenderProperty, sonbpIFContoroller } from \"./edit.sonbp_if\";\r\nimport { editUtil } from \"./edit.tool\";\r\nimport { SearchZipToAddress } from \"../entity/SearchZipToAddressEntitys\"\r\nimport* as es6promise from \"es6-promise\";\r\n\r\n/**\r\n * 差出人関連の処理クラス\r\n * \r\n * TODO ★名前に \"Sender\"が付く関数は全てこちらへ移しています。\r\n * \r\n */\r\nexport class SenderLogicClass extends BaseLogicClass {\r\n\r\n// #region ■定数・変数\r\n\r\n /**\r\n * 組版トークン \r\n */\r\n private get kumihanToken(): string {\r\n\r\n return this.editInfo.kumihanToken;\r\n }\r\n\r\n /**\r\n * WebAPI[Edit/GetEditInfo]のレスポンスのdata部\r\n */\r\n private get editInfo(): GetEditInfo.GetEditInfoResponseEntity {\r\n return this._edctrl.editInfo;\r\n }\r\n\r\n /**\r\n * 住所検索(WebAPI)呼び出しURL\r\n */\r\n private readonly WEBAPI_URL_SEARCHADDRESS: string = \"Edit/SearchZipToAddress\";\r\n \r\n\r\n// #endregion\r\n\r\n /**\r\n * 住所検索のエラーダイアログ表示関数\r\n */\r\n private showAddrSearchErroDlg(errorMsg: string) {\r\n util.dialogUtil.createErrorDialog(errorMsg, () => {\r\n (this._vue.$refs.zipCode1).focus();\r\n util.dialogUtil.closeErrorDialog();\r\n return;\r\n });\r\n } \r\n\r\n// #region ■イベント\r\n\r\n /**\r\n * ツールメニュー:差出人情報編集押下メソッド\r\n * @param selectedItemVp 選択済みアイテム(2025年対応:配置済み画像の再編集可能 #28295)\r\n * */\r\n public btnClickSenderMenu(event: JQueryEventObject, selectedItemVp: itemVenderProperty = null): void {\r\n\r\n Logger.debug(\"ツールメニュー:差出人情報編集押下メソッド\");\r\n\r\n if (this._edctrl.editMode === EDIT_MODE_KIND.SENDER) {\r\n return;\r\n }\r\n\r\n // sonbpへ処理モード変更依頼\r\n this.sonbpIfController.setMode(EDIT_MODE_KIND.SENDER,\r\n () => {\r\n // 正常終了の場合\r\n this._edctrl.editMode = EDIT_MODE_KIND.SENDER;\r\n\r\n if (this._usePcDesign) {\r\n // PC用\r\n // パネルの表示制御\r\n this._vue.$data.Show.BalloonGuidance = false;\r\n this._vue.$data.Show.PhotoList = false;\r\n this._vue.$data.Show.OparatePallet = true;\r\n this._vue.$data.Show.GreetingPanel = false;\r\n this._vue.$data.Show.SenderPanel = true;\r\n this._vue.$data.Show.StampPanel = false;\r\n this._vue.$data.Show.MyStampPanel = false;\r\n this._vue.$data.Show.TegakiStampPanel = false;\r\n\r\n // ツールメニューの活性制御\r\n this._vue.$data.ActiveSetPhotoMenu = false;\r\n this._vue.$data.ActiveManiPhotoMenu = false;\r\n this._vue.$data.ActiveGreetingMenu = false;\r\n this._vue.$data.ActiveSenderMenu = true;\r\n this._vue.$data.ActiveStampMenu = false;\r\n this._vue.$data.ActiveMyStampMenu = false;\r\n this._vue.$data.ActiveTegakiStampMenu = false;\r\n this._vue.$data.ActiveFinishSelectMenu = false;\r\n\r\n // フェードインアウトの初期化\r\n this._vue.$data.HideLabel = EditConst.HIDE_AREA_FADE_OUT;\r\n this._vue.$data.SenderInfo.fade.In = false;\r\n this._vue.$data.SenderInfo.fade.Out = false;\r\n\r\n // オブジェクト操作パレットの表示制御\r\n this._edctrl.setModeOparatePallet(EDIT_MODE_KIND.SENDER, null);\r\n\r\n\r\n this.sonbpIfController.getSenderTextList((list: itemVenderProperty[]) => {\r\n // 作成済みの差出人情報が存在するか判定\r\n if (0 < list.length) {\r\n\r\n if (selectedItemVp === null) {\r\n\r\n // 先頭アイテム選択\r\n this.sonbpIfController.setSelectFirstItem(sonbpIfconst.ITYPE_SENDER_TXT,\r\n () => {\r\n Logger.debug(\"選択アイテムの指定 成功\");\r\n this._vue.$data.Show.OparatePalletCover4Top = false;\r\n this._vue.$data.SenderInfo.DelBtnEnable = true;\r\n if (this.editInfo.info.sender.senderInfo.addresses.length == 0) {\r\n // DBとPDFが一致しない時はパレット初期化\r\n this.InitSenderPallet();\r\n }\r\n },\r\n () => {\r\n this.InitSenderPallet();\r\n },\r\n () => {\r\n Logger.error(\"選択アイテムの指定 失敗\");\r\n this.InitSenderPallet();\r\n }\r\n );\r\n } else {\r\n\r\n // アイテム選択\r\n this.sonbpIfController.selectItem(sonbpIfconst.ITYPE_SENDER_TXT, selectedItemVp.idx,\r\n () => {\r\n Logger.debug(\"選択アイテムの指定 成功\");\r\n this._vue.$data.Show.OparatePalletCover4Top = false;\r\n this._vue.$data.SenderInfo.DelBtnEnable = true;\r\n if (this.editInfo.info.sender.senderInfo.addresses.length == 0) {\r\n // DBとPDFが一致しない時はパレット初期化\r\n this.InitSenderPallet();\r\n }\r\n },\r\n () => {\r\n Logger.error(\"選択アイテムの指定 失敗\");\r\n this.InitSenderPallet();\r\n }\r\n );\r\n }\r\n }\r\n else {\r\n // 存在しない場合、差出人の編集表示\r\n this.InitSenderPallet();\r\n }\r\n });\r\n }\r\n else {\r\n // SP用\r\n // 履歴処理開始\r\n this.sonbpIfController.historyStart();\r\n\r\n // ヘッダーメニュー\r\n this._vue.$data.Show.ReturnFlowBtn = false;\r\n this._vue.$data.Show.ReturnHomeBtn = false;\r\n this._vue.$data.Show.NextFlowBtn = false;\r\n this._vue.$data.Show.NextHomeFromImgListBtn = false;\r\n this._vue.$data.Show.NextHomeFromMyStampListBtn = false;\r\n this._vue.$data.Show.NextHomeFromTegakiStampListBtn = false;\r\n\r\n // メインメニュー\r\n this._vue.$data.Show.SetPhotoMenu = false;\r\n // あいさつ文エリア\r\n this._vue.$data.Show.GreetingPanel = false;\r\n // スタンプエリア\r\n this._vue.$data.Show.StampPanel = false;\r\n this._vue.$data.Show.MyStampPanel = false;\r\n this._vue.$data.Show.TegakiStampPanel = false;\r\n this._vue.$data.Show.TegakiColorPanel = false;\r\n\r\n // 差出人エリア\r\n this._vue.$data.Show.SenderPanel = false;\r\n\r\n this.sonbpIfController.getSenderTextList((list: itemVenderProperty[]) => {\r\n // 作成済みの差出人情報が存在するか判定\r\n if (0 < list.length) {\r\n // 存在する場合、差出人の位置調整表示\r\n this._vue.$data.Header.Title = EditConst.TITLE_SENDER;\r\n\r\n this._vue.$data.Show.ReturnSenderHomeBtn = false;\r\n this._vue.$data.Show.ReturnHomeExBtn = true;\r\n this._vue.$data.Show.SenderDeleteBtn = true;\r\n this._vue.$data.Show.CommitNextHomeBtn = true;\r\n\r\n // オブジェクト操作パレットの表示制御\r\n this._vue.$data.Show.OparatePallet = true;\r\n this._edctrl.setModeOparatePallet(EDIT_MODE_KIND.SENDER, null);\r\n\r\n // タッチイベント制御(無効)\r\n this._edctrl.touchEventChange(false);\r\n\r\n if (selectedItemVp === null) {\r\n\r\n // 先頭アイテムを選択\r\n this.sonbpIfController.setSelectFirstItem(sonbpIfconst.ITYPE_SENDER_TXT,\r\n (selectItem: itemVenderProperty) => { Logger.debug(\"選択アイテムの指定 成功\"); },\r\n () => { },\r\n () => { Logger.error(\"選択アイテムの指定 失敗\"); }\r\n );\r\n } else {\r\n\r\n // アイテム選択\r\n this.sonbpIfController.selectItem(sonbpIfconst.ITYPE_SENDER_TXT, selectedItemVp.idx,\r\n () => { Logger.debug(\"選択アイテムの指定 成功\"); },\r\n () => { Logger.error(\"選択アイテムの指定 失敗\"); }\r\n );\r\n }\r\n }\r\n else {\r\n // 存在しない場合、差出人の編集表示\r\n this.setSenderEditMode();\r\n }\r\n });\r\n }\r\n },\r\n () => {\r\n // 異常終了の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_CHANGE_MODE, dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n\r\n // 外字入力ボタンの初期表示\r\n this.ShowGaijiButton(false);\r\n }\r\n\r\n /**\r\n * 差出人パネル フォント変更\r\n * @param event\r\n */\r\n public onChangeSenderFont(event: JQueryEventObject): void {\r\n\r\n // フォントサンプル更新\r\n const selFont = this.editInfo.master.font.find(x => x.name == this._vue.$data.SenderInfo.Setting.Font);\r\n\r\n if (selFont !== undefined) {\r\n this._vue.$data.SenderInfo.Setting.FontSample = selFont.url;\r\n }\r\n\r\n // 外字入力ボタンの初期表示\r\n this.ShowGaijiButton(true);\r\n }\r\n\r\n /**\r\n * 差出人パネル 文字レイアウト変更\r\n * @param event\r\n */\r\n public onChangeSenderCharLayout(event: JQueryEventObject): void {\r\n // 行揃えコンボの切り替え(縦 or 横)\r\n if (this._vue.$data.SenderInfo.Setting.CharLayout == EditConst.CHAR_LAYOUT_Y) {\r\n this._vue.$data.SenderInfo.ShowSenderAlignY = true;\r\n }\r\n else {\r\n this._vue.$data.SenderInfo.ShowSenderAlignY = false;\r\n }\r\n }\r\n\r\n /**\r\n * 差出人パネル 入力内容を適用するボタン押下\r\n *\r\n * @param requesNew\r\n * @param event\r\n */\r\n public btnClickSenderSet(event: JQueryEventObject): void {\r\n\r\n // ローディングダイアログ開始\r\n util.dialogUtil.showLoading();\r\n\r\n // 選択差出人の存在チェック\r\n var selectItem: itemVenderProperty = this.sonbpIfController.getSelectItem();\r\n Logger.debug(\"選択差出人 [\" + JSON.stringify(selectItem) + \"]\");\r\n\r\n // 入力値取得\r\n let setOrder: senderTranEntityEx = this.getSenderOrder();\r\n let msgList: string[] = [];\r\n\r\n // 入力チェック\r\n Logger.debug(\"入力チェック\", setOrder);\r\n if (!this.validSenderOrder(setOrder, msgList)) {\r\n // 入力チェックエラー\r\n util.dialogUtil.createErrorDialog(\r\n util.constDialogMessage.WARN_EDIT_BASE + msgList.join(\"
\"),\r\n () => {\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n dialogUtil.closeErrorDialog();\r\n if (this._vue.$data.FocusGaijiShortCut) {\r\n (this._vue.$refs[this._vue.$data.FocusGaijiShortCut]).focus();\r\n }\r\n });\r\n return;\r\n }\r\n\r\n // 組方向\r\n const hv: kumihanHv = (setOrder.charLayout === EditConst.CHAR_LAYOUT_T) ? KUMIHAN_HV.VERTICAL : KUMIHAN_HV.HORIZONTAL;\r\n\r\n // 幅・高さ\r\n let masterSize: { w: number, h: number };\r\n if (0 < this.editInfo.master.design.sender.width && 0 < this.editInfo.master.design.sender.height) {\r\n const masterHv: kumihanHv = editUtil.directionToHv(this.editInfo.master.design.sender.direction);\r\n if (hv === masterHv) {\r\n masterSize = {\r\n w: this.editInfo.master.design.sender.width,\r\n h: this.editInfo.master.design.sender.height\r\n };\r\n }\r\n else {\r\n masterSize = {\r\n w: this.editInfo.master.design.sender.height,\r\n h: this.editInfo.master.design.sender.width\r\n };\r\n }\r\n }\r\n\r\n const kumihan: kumihanContoroller = new kumihanContoroller(this.editInfo.kumihanURL);\r\n\r\n // 通常入力/自由入力 判定\r\n if (this._vue.$data.SenderInfo.IsNormalInput) {\r\n // 通常入力の場合\r\n\r\n // 組版パラメータ生成\r\n let kumihanParam: kumihanSenderRequestParam = new kumihanSenderRequestParam();\r\n\r\n // 組版トークン\r\n kumihanParam.session = this.kumihanToken;\r\n\r\n // レイアウト記号\r\n kumihanParam.layout_cd = this.getLayoutCd(setOrder.sender.senderInfo.isHojin, setOrder.charLayout)\r\n setOrder.sender.layout = kumihanParam.layout_cd;\r\n\r\n // 組方向\r\n kumihanParam.hv = hv;\r\n\r\n // 幅\r\n kumihanParam.width = masterSize.w;\r\n // 高さ\r\n kumihanParam.height = masterSize.h;\r\n\r\n // フォント\r\n kumihanParam.ftype = setOrder.fontMaster.id;\r\n // 文字色\r\n kumihanParam.color1 = setOrder.fontColorMaster.rgb;\r\n if (setOrder.outlineChar) {\r\n // フチ文字色\r\n kumihanParam.color2 = setOrder.outlineFontColorMaster.rgb;\r\n }\r\n\r\n if (0 < setOrder.sender.senderInfo.addresses.length) {\r\n // 郵便番号1\r\n kumihanParam.adr1_post1 = setOrder.sender.senderInfo.addresses[0].yubin1;\r\n // 郵便番号2\r\n kumihanParam.adr1_post2 = setOrder.sender.senderInfo.addresses[0].yubin2;\r\n\r\n // 住所1\r\n kumihanParam.adr1_adr1 = setOrder.sender.senderInfo.addresses[0].jusho1;\r\n // 住所2\r\n kumihanParam.adr1_adr2 = setOrder.sender.senderInfo.addresses[0].jusho2;\r\n // 住所3\r\n kumihanParam.adr1_adr3 = setOrder.sender.senderInfo.addresses[0].jusho3;\r\n\r\n // 電話番号タイプ1\r\n kumihanParam.adr1_teltype1 = this.telType2Gaiji(setOrder.sender.senderInfo.addresses[0].telType1);\r\n // 電話番号1\r\n kumihanParam.adr1_telno11 = setOrder.sender.senderInfo.addresses[0].telNo1_1;\r\n kumihanParam.adr1_telno12 = setOrder.sender.senderInfo.addresses[0].telNo1_2;\r\n kumihanParam.adr1_telno13 = setOrder.sender.senderInfo.addresses[0].telNo1_3;\r\n\r\n // 電話番号タイプ2\r\n kumihanParam.adr1_teltype2 = this.telType2Gaiji(setOrder.sender.senderInfo.addresses[0].telType2);\r\n // 電話番号2\r\n kumihanParam.adr1_telno21 = setOrder.sender.senderInfo.addresses[0].telNo2_1;\r\n kumihanParam.adr1_telno22 = setOrder.sender.senderInfo.addresses[0].telNo2_2;\r\n kumihanParam.adr1_telno23 = setOrder.sender.senderInfo.addresses[0].telNo2_3;\r\n }\r\n\r\n // E-mail\r\n if (0 < setOrder.sender.senderInfo.emails.length) {\r\n kumihanParam.eh1_adr = setOrder.sender.senderInfo.emails[0].address;\r\n if (1 < setOrder.sender.senderInfo.emails.length) {\r\n kumihanParam.eh2_adr = setOrder.sender.senderInfo.emails[1].address;\r\n }\r\n }\r\n\r\n if (0 < setOrder.sender.senderInfo.names.length) {\r\n // 姓\r\n kumihanParam.name1_fname = setOrder.sender.senderInfo.names[0].firstName;\r\n // 名\r\n kumihanParam.name1_lname = setOrder.sender.senderInfo.names[0].lastName;\r\n // 添書き\r\n kumihanParam.name1_ps = setOrder.sender.senderInfo.names[0].ps;\r\n // 姓ルビ\r\n kumihanParam.name1_fruby = setOrder.sender.senderInfo.names[0].firstRubi;\r\n // 姓ルビ\r\n kumihanParam.name1_lruby = setOrder.sender.senderInfo.names[0].lastRubi;\r\n }\r\n\r\n if (setOrder.sender.senderInfo.isHojin && 0 < setOrder.sender.senderInfo.corps.length) {\r\n // 会社名\r\n kumihanParam.corp1_name = setOrder.sender.senderInfo.corps[0].name;\r\n // 部署名\r\n kumihanParam.corp1_busyo = setOrder.sender.senderInfo.corps[0].busyo;\r\n // 肩書\r\n kumihanParam.name1_title = setOrder.sender.senderInfo.names[0].title;\r\n }\r\n else {\r\n // 歯抜けに対応する\r\n let endFlg: boolean = false\r\n for (let i: number = setOrder.sender.senderInfo.names.length - 1; i > 0; i--) {\r\n if (endFlg && setOrder.sender.senderInfo.names[i].firstName == \"\") setOrder.sender.senderInfo.names[i].firstName = \" \";\r\n if (!endFlg && setOrder.sender.senderInfo.names[i].firstName != \"\") endFlg = true;\r\n }\r\n\r\n for (let i: number = 1; i < setOrder.sender.senderInfo.names.length; i++) {\r\n // 名\r\n kumihanParam[\"name\" + (i + 1) + \"_fname\"] = setOrder.sender.senderInfo.names[i].firstName;\r\n // 添書き\r\n kumihanParam[\"name\" + (i + 1) + \"_ps\"] = setOrder.sender.senderInfo.names[i].ps;\r\n // 名ルビ\r\n kumihanParam[\"name\" + (i + 1) + \"_fruby\"] = setOrder.sender.senderInfo.names[i].firstRubi;\r\n }\r\n }\r\n\r\n // 組版API呼び出し\r\n kumihan.doKumihanSender(kumihanParam).then((result: kumihanResponseParam) => {\r\n this._vue.$data.Show.GaijiShortCutBtn = false;\r\n this._vue.$data.FocusGaijiShortCut = '';\r\n // sonbpへ連携\r\n this.setSenderText(selectItem, setOrder, kumihanParam, result);\r\n }).catch(() => {\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n if (this._vue.$data.FocusGaijiShortCut) {\r\n (this._vue.$refs[this._vue.$data.FocusGaijiShortCut]).focus();\r\n }\r\n });\r\n }\r\n else {\r\n // 自由入力の場合\r\n\r\n // 組版パラメータ生成\r\n let kumihanParam: kumihanGreetingRequestParam = new kumihanGreetingRequestParam();\r\n // 組版トークン\r\n kumihanParam.session = this.kumihanToken;\r\n // 組方向\r\n kumihanParam.hv = hv;\r\n // 文字サイズ\r\n kumihanParam.msize = setOrder.sender.size;\r\n // 原点\r\n kumihanParam.pivot = editUtil.align2Pivot(kumihanParam.hv, setOrder.alignDispVal);\r\n setOrder.sender.align = kumihanParam.pivot + \"\";\r\n\r\n // 幅\r\n kumihanParam.width = masterSize.w;\r\n kumihanParam.widthKumi = masterSize.w;\r\n // 高さ\r\n kumihanParam.height = masterSize.h;\r\n kumihanParam.heightKumi = masterSize.h;\r\n\r\n // フォント\r\n kumihanParam.ftype = setOrder.fontMaster.id;\r\n\r\n // 文字色\r\n kumihanParam.color1 = setOrder.fontColorMaster.rgb;\r\n if (setOrder.outlineChar) {\r\n // フチ文字色\r\n kumihanParam.color2 = setOrder.outlineFontColorMaster.rgb;\r\n }\r\n // 文章\r\n kumihanParam.payload = setOrder.sender.senderInfo.free.split('\\n');\r\n\r\n // 自由文の縦組みは単位変換しない。\r\n if (kumihanParam.hv == KUMIHAN_HV.VERTICAL) {\r\n kumihanParam.vertGreetConvType = EditConst.GREETING_VERT_NO_CONV;\r\n }\r\n\r\n // 組版API呼び出し\r\n kumihan.doKumihanGreeting(kumihanParam).then((result: kumihanResponseParam) => {\r\n this._vue.$data.Show.GaijiShortCutBtn = false;\r\n this._vue.$data.FocusGaijiShortCut = '';\r\n // sonbpへ連携\r\n this.setSenderText(selectItem, setOrder, kumihanParam, result);\r\n }).catch(() => {\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n if (this._vue.$data.FocusGaijiShortCut) {\r\n (this._vue.$refs[this._vue.$data.FocusGaijiShortCut]).focus();\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n /**\r\n * 差出人パネル 作成文章の削除ボタン押下\r\n * @param event\r\n */\r\n public btnClickSenderDelete(event: JQueryEventObject): void {\r\n\r\n // 選択テキスト取得\r\n const selectItem: itemVenderProperty = this.sonbpIfController.getSelectItem();\r\n\r\n // sonbpへ削除依頼\r\n this.sonbpIfController.removeText(\r\n () => {\r\n Logger.debug(\"差出人テキスト削除 成功 =>\", selectItem);\r\n\r\n // 正常終了の場合\r\n this.sonbpIfController.SenderInfo = senderTranEntityEx.createDef(this.editInfo.master.design.sender, this.editInfo.master.font, this.editInfo.master.color);\r\n this._vue.$data.Show.OparatePalletCover4Top = true;\r\n this._vue.$data.SenderInfo.DelBtnEnable = false;\r\n\r\n if (!this._usePcDesign) {\r\n // SP用\r\n // 履歴処理開始(reset)\r\n this.sonbpIfController.historyStart();\r\n this._vue.$data.Show.ReturnHomeExBtn = false;\r\n }\r\n }, () => {\r\n // 上記以外の場合\r\n Logger.error(\"差出人テキスト削除 失敗 =>\", selectItem);\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_DEL_SENDER, dialogUtil.closeErrorDialog);\r\n\r\n });\r\n }\r\n\r\n /**\r\n * 差出人文字サイズ変更ボタンイベント\r\n * @param isPlus\r\n * @param event\r\n */\r\n public btnClickSenderFontSize(isPlus: boolean, event: JQueryEventObject): void {\r\n\r\n const val = parseFloat(this._vue.$data.SenderInfo.Setting.FontSize);\r\n if (isNaN(val)) return;\r\n\r\n if (isPlus) {\r\n if (val < EditConst.FONT_SIZE_MAX) {\r\n this._vue.$data.SenderInfo.Setting.FontSize = val + EditConst.FONT_SIZE_STEP;\r\n }\r\n } else {\r\n if (EditConst.FONT_SIZE_MIN < val) {\r\n this._vue.$data.SenderInfo.Setting.FontSize = val - EditConst.FONT_SIZE_STEP;\r\n }\r\n }\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * 差出人の位置調整画面に戻るボタン押下(SP)\r\n * @param event\r\n */\r\n public returnSenderHomeBtn(event: JQueryEventObject): void {\r\n\r\n Logger.debug(\"差出人の位置調整画面に戻るボタン押下\");\r\n\r\n // 差出人の存在チェック\r\n this.sonbpIfController.getSenderTextList((list: itemVenderProperty[]) => {\r\n // 外字メニューを非表示にする。\r\n this._vue.$data.Show.SenderGaijiMenu = false;\r\n this._vue.$data.Show.GaijiShortCutBtn = false;\r\n this._vue.$data.FocusGaijiShortCut = '';\r\n\r\n if (list.length === 0) {\r\n // 差出人が0件の場合には、ホームに戻る\r\n this._edctrl.btnClickReturnHome(true, true, null);\r\n }\r\n else {\r\n // タッチイベント制御(無効)\r\n this._edctrl.touchEventChange(false);\r\n\r\n // 履歴処理開始(reset)\r\n this.sonbpIfController.historyStart();\r\n\r\n // タイトル\r\n this._vue.$data.Header.Title = EditConst.TITLE_SENDER;\r\n\r\n // ヘッダメニュー\r\n this._vue.$data.Show.ReturnSenderHomeBtn = false;\r\n this._vue.$data.Show.CommitNextHomeBtn = true;\r\n this._vue.$data.Show.SenderDeleteBtn = true;\r\n\r\n // 差出人パネル非表示\r\n this._vue.$data.Show.SenderPanel = false;\r\n // 編集エリア表示\r\n this._vue.$data.Show.EditArea = true;\r\n\r\n // フッターメニュー\r\n this._vue.$data.Show.FooterMenu = true;\r\n this._vue.$data.Show.SetPhotoMenu = false;\r\n this._vue.$data.Show.EditImageMenu = false;\r\n this._vue.$data.Show.OparatePallet = true;\r\n\r\n // 削除ボタンの活性制御\r\n this._vue.$data.SenderInfo.DelBtnEnable = (0 < list.length) ? true : false;\r\n\r\n // オブジェクト操作メニュー\r\n this._edctrl.setModeOparatePalletForSp(EDIT_MODE_KIND.SENDER, null);\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n // #region ■イベント(PCのみ処理)\r\n\r\n /**\r\n * 差出人パネル 通常入力/自由入力押下\r\n * @param isNormal\r\n * @param event\r\n */\r\n public btnClickSenderInputType(isNormal: boolean, event: JQueryEventObject): void {\r\n\r\n if (isNormal) {\r\n // 通常入力指定\r\n if (!this._vue.$data.SenderInfo.Setting.AlignT) {\r\n this._vue.$data.SenderInfo.Setting.AlignT = EditConst.ALIGN_T_TOP;\r\n }\r\n if (!this._vue.$data.SenderInfo.Setting.AlignY) {\r\n this._vue.$data.SenderInfo.Setting.AlignY = EditConst.ALIGN_Y_LEFT;\r\n }\r\n }\r\n else {\r\n // 自由入力指定\r\n if (this._vue.$data.SenderInfo.Setting.CharLayoutEx === EditConst.CHAR_LAYOUT_T) {\r\n // 通常入力が縦書きの場合\r\n this._vue.$data.SenderInfo.Setting.CharLayout = EditConst.CHAR_LAYOUT_T;\r\n this._vue.$data.SenderInfo.ShowSenderAlignY = false;\r\n }\r\n else {\r\n // 上記以外の場合(横 or センター横)\r\n this._vue.$data.SenderInfo.Setting.CharLayout = EditConst.CHAR_LAYOUT_Y;\r\n this._vue.$data.SenderInfo.ShowSenderAlignY = true;\r\n }\r\n\r\n this._vue.$data.SenderInfo.Setting.AlignT = EditConst.ALIGN_T_TOP;\r\n this._vue.$data.SenderInfo.Setting.AlignY = EditConst.ALIGN_Y_LEFT;\r\n }\r\n\r\n this._vue.$data.SenderInfo.IsNormalInput = isNormal;\r\n }\r\n\r\n /**\r\n * 差出人パネル 個人用/法人用押下\r\n * @param usePersonal\r\n * @param event\r\n */\r\n public btnClickSenderInputUse(usePersonal: boolean, event: JQueryEventObject): void {\r\n\r\n this._vue.$data.SenderInfo.NormalInput.PersonalUse = usePersonal;\r\n\r\n }\r\n\r\n // #endregion\r\n\r\n // #region ■イベント(SPのみ処理)\r\n\r\n /**\r\n * 操作パネル→差出人アイテム編集ボタン押下メソッド(SP用)\r\n * */\r\n public btnClickEditSenderItem(event: JQueryEventObject): void {\r\n\r\n // タッチイベント制御(有効)\r\n this._edctrl.touchEventChange(true);\r\n\r\n this.setSenderEditMode();\r\n }\r\n\r\n /**\r\n * 差出人パネル 入力タイプ選択変更(SP用)\r\n * @param event\r\n */\r\n public onChangeSenderFormat(event: JQueryEventObject): void {\r\n\r\n let isNormal: boolean;\r\n\r\n if (this._vue.$data.SenderInfo.Setting.Format === EditConst.SENDER_TYPE_FREE_STR) {\r\n // 自由入力指定\r\n if (this._vue.$data.SenderInfo.Setting.CharLayoutEx === EditConst.CHAR_LAYOUT_T) {\r\n // 通常入力が縦書きの場合\r\n this._vue.$data.SenderInfo.Setting.CharLayout = EditConst.CHAR_LAYOUT_T;\r\n this._vue.$data.SenderInfo.ShowSenderAlignY = false;\r\n }\r\n else {\r\n // 上記以外の場合(横 or センター横)\r\n this._vue.$data.SenderInfo.Setting.CharLayout = EditConst.CHAR_LAYOUT_Y;\r\n this._vue.$data.SenderInfo.ShowSenderAlignY = true;\r\n }\r\n\r\n this._vue.$data.SenderInfo.Setting.AlignT = EditConst.ALIGN_T_TOP;\r\n this._vue.$data.SenderInfo.Setting.AlignY = EditConst.ALIGN_Y_LEFT;\r\n\r\n isNormal = false;\r\n }\r\n else {\r\n // 通常入力指定\r\n if (!this._vue.$data.SenderInfo.Setting.AlignT) {\r\n this._vue.$data.SenderInfo.Setting.AlignT = EditConst.ALIGN_T_TOP;\r\n }\r\n if (!this._vue.$data.SenderInfo.Setting.AlignY) {\r\n this._vue.$data.SenderInfo.Setting.AlignY = EditConst.ALIGN_Y_LEFT;\r\n }\r\n\r\n if (this._vue.$data.SenderInfo.Setting.Format === EditConst.SENDER_TYPE_PORSONAL_STR) {\r\n // 個人\r\n this._vue.$data.SenderInfo.NormalInput.PersonalUse = true;\r\n }\r\n else {\r\n // 法人\r\n this._vue.$data.SenderInfo.NormalInput.PersonalUse = false;\r\n }\r\n\r\n isNormal = true;\r\n }\r\n\r\n this._vue.$data.SenderInfo.IsNormalInput = isNormal;\r\n }\r\n\r\n // #endregion\r\n\r\n// #endregion\r\n\r\n// #region ■内部関数\r\n\r\n /**\r\n * 差出人編集モードへ画面項目設定(SP用)\r\n */\r\n private setSenderEditMode() {\r\n\r\n this._vue.$data.Header.Title = EditConst.TITLE_SENDER_EDIT;\r\n\r\n this._vue.$data.Show.ReturnHomeExBtn = false;\r\n this._vue.$data.Show.ReturnSenderHomeBtn = true;\r\n this._vue.$data.Show.CommitNextHomeBtn = false;\r\n this._vue.$data.Show.SenderDeleteBtn = false;\r\n\r\n this.sonbpIfController.getSenderTextList((list: itemVenderProperty[]) => {\r\n if (0 < list.length) {\r\n this._vue.$data.SenderInfo.SetBtnCaption = EditConst.SENDER_APPLY_BTN_UPD;\r\n }\r\n else {\r\n this.InitSenderPallet();\r\n this._vue.$data.SenderInfo.SetBtnCaption = EditConst.SENDER_APPLY_BTN_ADD;\r\n }\r\n });\r\n\r\n this._vue.$data.Show.FooterMenu = true;\r\n this._vue.$data.Show.EditArea = false;\r\n this._vue.$data.Show.OparatePallet = false;\r\n\r\n // 外字ボタン表示\r\n this._vue.$data.Show.SenderGaijiMenu = true;\r\n\r\n this._vue.$data.Show.SenderPanel = true;\r\n }\r\n\r\n /**\r\n * 差出人パネルの初期化\r\n * @param that\r\n */\r\n public InitSenderPallet() {\r\n\r\n // デフォルトフォント取得\r\n const defFont: GetEditInfo.GetEditInfoFontEntity = this._edctrl.getDefaultFont();\r\n\r\n this._vue.$data.SenderInfo.IsNormalInput = true;\r\n this._vue.$data.SenderInfo.Setting.Font = defFont.name;\r\n this._vue.$data.SenderInfo.Setting.FontSample = defFont.url;\r\n this._vue.$data.SenderInfo.Setting.FontSize = EditConst.FONT_SIZE_DEFAULT_Y;\r\n\r\n this._vue.$data.SenderInfo.ShowSenderAlignY = true;\r\n this._vue.$data.SenderInfo.Setting.CharLayout = EditConst.CHAR_LAYOUT_Y;\r\n this._vue.$data.SenderInfo.Setting.AlignT = EditConst.ALIGN_T_TOP;\r\n this._vue.$data.SenderInfo.Setting.AlignY = EditConst.ALIGN_Y_LEFT;\r\n\r\n if (this.ExistsSenderDesgin) {\r\n // デザインマスタあり\r\n this._vue.$data.SenderInfo.Setting.CharLayoutEx = editUtil.directionToCharlayout(this.editInfo.master.design.sender.direction);\r\n this._vue.$data.SenderInfo.Setting.CharLayout = (this._vue.$data.SenderInfo.Setting.CharLayoutEx === EditConst.CHAR_LAYOUT_T) ? EditConst.CHAR_LAYOUT_T : EditConst.CHAR_LAYOUT_Y;\r\n\r\n if (this._vue.$data.SenderInfo.Setting.CharLayout === EditConst.CHAR_LAYOUT_T) {\r\n this._vue.$data.SenderInfo.ShowSenderAlignY = false;\r\n this._vue.$data.SenderInfo.Setting.FontSize = EditConst.FONT_SIZE_DEFAULT_T;\r\n }\r\n }\r\n\r\n this._vue.$data.SenderInfo.Setting.OutlineFont = false;\r\n this._vue.$data.SelectCharColor = this.editInfo.master.design.fontColor;\r\n this._vue.$data.SelectOutlineCharColor = this.editInfo.master.color[0].id;\r\n\r\n this._vue.$data.SenderInfo.NormalInput.PersonalUse = true;\r\n this._vue.$data.SenderInfo.NormalInput.ZipCode1 = \"\";\r\n this._vue.$data.SenderInfo.NormalInput.ZipCode2 = \"\";\r\n this._vue.$data.SenderInfo.NormalInput.Address1 = \"\";\r\n this._vue.$data.SenderInfo.NormalInput.Address2 = \"\";\r\n this._vue.$data.SenderInfo.NormalInput.Address3 = \"\";\r\n this._vue.$data.SenderInfo.NormalInput.Company.Name = \"\";\r\n this._vue.$data.SenderInfo.NormalInput.Company.Department = \"\";\r\n this._vue.$data.SenderInfo.NormalInput.Company.Position = \"\";\r\n for (let i: number = 0; i < 6; i++) {\r\n this._vue.$data.SenderInfo.NormalInput.Names[i].LastNameKana = \"\";\r\n this._vue.$data.SenderInfo.NormalInput.Names[i].LastName = \"\";\r\n this._vue.$data.SenderInfo.NormalInput.Names[i].FirstNameKana = \"\";\r\n this._vue.$data.SenderInfo.NormalInput.Names[i].FirstName = \"\";\r\n this._vue.$data.SenderInfo.NormalInput.Names[i].PS = \"\";\r\n }\r\n for (let i: number = 0; i < 2; i++) {\r\n this._vue.$data.SenderInfo.NormalInput.Contact[i].Type = EditConst.CONTACT_TEL_DISP;\r\n this._vue.$data.SenderInfo.NormalInput.Contact[i].Tel1 = \"\";\r\n this._vue.$data.SenderInfo.NormalInput.Contact[i].Tel2 = \"\";\r\n this._vue.$data.SenderInfo.NormalInput.Contact[i].Tel3 = \"\";\r\n }\r\n this._vue.$data.SenderInfo.NormalInput.Email.Mail1 = \"\";\r\n this._vue.$data.SenderInfo.NormalInput.Email.Mail2 = \"\";\r\n this._vue.$data.SenderInfo.FreeInput = \"\";\r\n\r\n\r\n if (!this._usePcDesign) {\r\n // SP用\r\n this._vue.$data.SenderInfo.Setting.Format = EditConst.SENDER_TYPE_PORSONAL_STR;\r\n }\r\n }\r\n\r\n /**\r\n * 差出人デザイン定義の存在チェック\r\n */\r\n public get ExistsSenderDesgin(): boolean {\r\n\r\n let exists = false;\r\n\r\n if (this.editInfo.master.design.sender) {\r\n if (util.verify.isNotLengthZero(this.editInfo.master.design.sender.direction)) {\r\n exists = true;\r\n }\r\n }\r\n\r\n return exists;\r\n }\r\n\r\n /**\r\n * 外字ボタンの表示制御\r\n * */\r\n private ShowGaijiButton(changeAction=false): void {\r\n\r\n // 外字ボタンの表示制御\r\n const selFont = this.editInfo.master.font.find(x => x.name == this._vue.$data.SenderInfo.Setting.Font);\r\n if (!selFont.gaijiFlg) {\r\n // フォント変更の時だけ、フォントチェックをする。\r\n if (changeAction) {\r\n let useGaijiFlg = this._edctrl._gaijiLogic.IsUseGaiji();\r\n if (useGaijiFlg) {\r\n // フォント変更時に外字を利用していたら警告を出す。\r\n dialogUtil.createErrorDialog(constDialogMessage.WARN_GAIJI_NOT_SUPPORT_FONT, dialogUtil.closeErrorDialog, dialogUtil.DialogType.Infomation);\r\n }\r\n }\r\n this._vue.$data.Show.GaijiShortCutBtn = false;\r\n this._edctrl._gaijiLogic.TargetDivId = \"\";\r\n this._edctrl._gaijiLogic.DisplayNoneGaijiButton();\r\n } else {\r\n this._edctrl._gaijiLogic.DisplayOnGaijiButton();\r\n }\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■内部関数(validateっぽいけどSender専用みたいなのでこちらに置いておく)\r\n\r\n /**\r\n * エラーメッセージ成形\r\n */\r\n private formatSenderErrMessage(itemName: string, msg: string) {\r\n return \"(\" + itemName + \")\" + msg;\r\n }\r\n\r\n /**\r\n * 郵便番号の有効値判定\r\n * @param zipcode1 :郵便番号前半\r\n * @param zipcode2 :郵便番号後半\r\n * @param requiredMsgList :エラーメッセージ(必須のみ)\r\n * @param msgList :エラーメッセージ\r\n */\r\n private validSenderZipcode(zipcode1: string, zipcode2: string, requiredMsgList: string[], msgList: string[]): boolean {\r\n\r\n // 必須チェック\r\n if (!zipcode1 && !zipcode2) {\r\n msgList.push(this.formatSenderErrMessage(EditConst.SENDER_ITEM_NAME_ZIP1, constDialogMessage.WARN_EDIT_EMPTY_CHECK));\r\n requiredMsgList.push(msgList[msgList.length - 1]);\r\n msgList.push(this.formatSenderErrMessage(EditConst.SENDER_ITEM_NAME_ZIP2, constDialogMessage.WARN_EDIT_EMPTY_CHECK));\r\n requiredMsgList.push(msgList[msgList.length - 1]);\r\n return false;\r\n }\r\n else if (zipcode1 && !zipcode2 || !zipcode1 && zipcode2) {\r\n msgList.push(this.formatSenderErrMessage(EditConst.SENDER_ITEM_NAME_ZIP, constDialogMessage.WARN_EDIT_RELATION_CHECK));\r\n return false;\r\n }\r\n else {\r\n // 値チェック\r\n let result: boolean = true;\r\n if (!util.verify.validNumber(zipcode1)) {\r\n msgList.push(this.formatSenderErrMessage(EditConst.SENDER_ITEM_NAME_ZIP1, constDialogMessage.WARN_EDIT_HALF_NUMBER_CHECK));\r\n result = false;\r\n }\r\n\r\n if (!util.verify.validNumber(zipcode2)) {\r\n msgList.push(this.formatSenderErrMessage(EditConst.SENDER_ITEM_NAME_ZIP2, constDialogMessage.WARN_EDIT_HALF_NUMBER_CHECK));\r\n result = false;\r\n }\r\n\r\n if (EditConst.SENDER_MAXLEN_ZIP1 < zipcode1.length) {\r\n msgList.push(this.formatSenderErrMessage(EditConst.SENDER_ITEM_NAME_ZIP1, constDialogMessage.WARN_EDIT_FORMAT_CHECK_ZIP1));\r\n result = false;\r\n }\r\n\r\n if (EditConst.SENDER_MAXLEN_ZIP2 < zipcode1.length) {\r\n msgList.push(this.formatSenderErrMessage(EditConst.SENDER_ITEM_NAME_ZIP2, constDialogMessage.WARN_EDIT_FORMAT_CHECK_ZIP2));\r\n result = false;\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n\r\n /**\r\n * E-mailの有効値判定\r\n * @param target :E-mail\r\n */\r\n private validSenderEmail(target: string): boolean {\r\n\r\n if (target.length === 0) {\r\n return true;\r\n }\r\n\r\n if (!util.verify.validHankakuChar(target)) {\r\n return false;\r\n }\r\n\r\n if (EditConst.SENDER_MAXLEN_EMAIL < target.length) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * 電話番号の有効値判定\r\n * @param tel1 :電話番号1枠目\r\n * @param tel2 :電話番号2枠目\r\n * @param tel3 :電話番号3枠目\r\n * @param telIndex :電話番号1 or 電話番号2\r\n * @param msgList :エラーメッセージ\r\n */\r\n private validSenderTel(tel1: string, tel2: string, tel3: string, telIndex: number, msgList: string[]): boolean {\r\n\r\n let captionTel: string;\r\n let captionTel_1: string;\r\n let captionTel_2: string;\r\n let captionTel_3: string;\r\n\r\n if (telIndex == 0) {\r\n captionTel = EditConst.SENDER_ITEM_CAPTION_TEL1;\r\n captionTel_1 = EditConst.SENDER_ITEM_CAPTION_TEL1_1;\r\n captionTel_2 = EditConst.SENDER_ITEM_CAPTION_TEL1_2;\r\n captionTel_3 = EditConst.SENDER_ITEM_CAPTION_TEL1_3;\r\n }\r\n else {\r\n captionTel = EditConst.SENDER_ITEM_CAPTION_TEL2;\r\n captionTel_1 = EditConst.SENDER_ITEM_CAPTION_TEL2_1;\r\n captionTel_2 = EditConst.SENDER_ITEM_CAPTION_TEL2_2;\r\n captionTel_3 = EditConst.SENDER_ITEM_CAPTION_TEL2_3;\r\n }\r\n\r\n if (tel1.length === 0 && tel2.length === 0 && tel3.length === 0) {\r\n // すべて未入力\r\n return true;\r\n }\r\n else if (tel1.length === 0 || tel2.length === 0 || tel3.length === 0) {\r\n // いずれかを入力していたら3つ入力必須\r\n msgList.push(this.formatSenderErrMessage(captionTel, constDialogMessage.WARN_EDIT_RELATION_CHECK));\r\n return false;\r\n }\r\n\r\n // 値チェック\r\n let result: boolean = true;\r\n if (!util.verify.validNumber(tel1)) {\r\n msgList.push(this.formatSenderErrMessage(captionTel_1, constDialogMessage.WARN_EDIT_HALF_NUMBER_CHECK));\r\n result = false;\r\n }\r\n if (!util.verify.validNumber(tel2)) {\r\n msgList.push(this.formatSenderErrMessage(captionTel_2, constDialogMessage.WARN_EDIT_HALF_NUMBER_CHECK));\r\n result = false;\r\n }\r\n if (!util.verify.validNumber(tel3)) {\r\n msgList.push(this.formatSenderErrMessage(captionTel_3, constDialogMessage.WARN_EDIT_HALF_NUMBER_CHECK));\r\n result = false;\r\n }\r\n\r\n if (EditConst.SENDER_MAXLEN_TEL1 < tel1.length) {\r\n msgList.push(this.formatSenderErrMessage(captionTel_1, constDialogMessage.WARN_EDIT_FORMAT_CHECK_LEN_TEL1));\r\n result = false;\r\n }\r\n if (EditConst.SENDER_MAXLEN_TEL2 < tel2.length) {\r\n msgList.push(this.formatSenderErrMessage(captionTel_2, constDialogMessage.WARN_EDIT_FORMAT_CHECK_LEN_TEL2));\r\n result = false;\r\n }\r\n if (EditConst.SENDER_MAXLEN_TEL3 < tel3.length) {\r\n msgList.push(this.formatSenderErrMessage(captionTel_3, constDialogMessage.WARN_EDIT_FORMAT_CHECK_LEN_TEL3));\r\n result = false;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * 名前の有効値判定\r\n * @param names :名前項目\r\n * @param requiredMsgList :エラーメッセージ(必須のみ)\r\n * @param msgList :エラーメッセージ\r\n */\r\n private validSenderNames(names: SenderInfoDb.SenderInfoNameDbEntity[], requiredMsgList: string[], msgList: string[]): boolean {\r\n\r\n let result: boolean = true;\r\n\r\n // 必須チェック\r\n if (names[0].lastName.length === 0) {\r\n // 姓1は必須\r\n msgList.push(this.formatSenderErrMessage(\r\n EditConst.SENDER_ITEM_CAPTION_LNAME + \"1\",\r\n constDialogMessage.WARN_EDIT_EMPTY_CHECK));\r\n requiredMsgList.push(msgList[msgList.length - 1]);\r\n result = false;\r\n }\r\n if (names[0].firstName.length === 0) {\r\n // 名1は必須\r\n msgList.push(this.formatSenderErrMessage(\r\n EditConst.SENDER_ITEM_CAPTION_FNAME + \"1\",\r\n constDialogMessage.WARN_EDIT_EMPTY_CHECK));\r\n requiredMsgList.push(msgList[msgList.length - 1]);\r\n result = false;\r\n }\r\n\r\n if (!result) {\r\n return result;\r\n }\r\n\r\n // 値チェック\r\n for (let i: number = 0; i < names.length; i++) {\r\n\r\n // 名:なし、名ルビ:あり\r\n if ((names[i].firstName || \"\").length === 0 && 0 < (names[i].firstRubi || \"\").length) {\r\n msgList.push(\r\n this.formatSenderErrMessage(\r\n EditConst.SENDER_ITEM_CAPTION_NAME,\r\n constDialogMessage.WARN_EDIT_RELATION_CHECK));\r\n result = false;\r\n }\r\n\r\n // 姓\r\n if (!util.verify.validStringLen(names[i].lastName, EditConst.SENDER_MAXLEN_LASTNAME)) {\r\n msgList.push(\r\n this.formatSenderErrMessage(\r\n EditConst.SENDER_ITEM_CAPTION_LNAME + (i + 1).toString(),\r\n constDialogMessage.WARN_EDIT_FORMAT_CHECK_NAME));\r\n result = false;\r\n }\r\n // 名\r\n if (!util.verify.validStringLen(names[i].firstName, EditConst.SENDER_MAXLEN_FIRSTNAME)) {\r\n msgList.push(\r\n this.formatSenderErrMessage(\r\n EditConst.SENDER_ITEM_CAPTION_FNAME + (i + 1).toString(),\r\n constDialogMessage.WARN_EDIT_FORMAT_CHECK_NAME));\r\n result = false;\r\n }\r\n\r\n // 姓ルビ\r\n if (!util.verify.validStringLen(names[i].lastRubi, EditConst.SENDER_MAXLEN_RUBI)) {\r\n msgList.push(\r\n this.formatSenderErrMessage(\r\n EditConst.SENDER_ITEM_CAPTION_LRUBI + (i + 1).toString(),\r\n constDialogMessage.WARN_EDIT_FORMAT_CHECK_RUBI));\r\n result = false;\r\n }\r\n\r\n // 名ルビ\r\n if (!util.verify.validStringLen(names[i].firstRubi, EditConst.SENDER_MAXLEN_RUBI)) {\r\n msgList.push(\r\n this.formatSenderErrMessage(\r\n EditConst.SENDER_ITEM_CAPTION_FRUBI + (i + 1).toString(),\r\n constDialogMessage.WARN_EDIT_FORMAT_CHECK_RUBI));\r\n result = false;\r\n }\r\n\r\n // 添え書き\r\n if (!util.verify.validStringLen(names[i].ps, EditConst.SENDER_MAXLEN_PS)) {\r\n msgList.push(\r\n this.formatSenderErrMessage(\r\n EditConst.SENDER_ITEM_CAPTION_PS + (i + 1).toString(),\r\n constDialogMessage.WARN_EDIT_FORMAT_CHECK_PS));\r\n result = false;\r\n }\r\n\r\n // 肩書\r\n //if (!this.validStringLen(names[i].title, 64, 32)) {\r\n // msgList.push(\r\n // this.formatSenderErrMessage(\r\n // EditConst.SENDER_ITEM_CAPTION_TITLE + (i + 1).toString(),\r\n // constDialogMessage.WARN_EDIT_FORMAT_CHECK_TITLE));\r\n // result = false;\r\n //}\r\n\r\n if (!result) {\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * パラメータ値を条件にレイアウトコードを取得\r\n * @param isHojin :個人/法人フラグ\r\n * @param charLayout:文字レイアウトコンボ選択値\r\n */\r\n private getLayoutCd(isHojin: boolean, charLayout: string): string {\r\n\r\n let layoutCd: string;\r\n\r\n // レイアウト記号\r\n if (isHojin) {\r\n // 法人の場合\r\n if (charLayout === EditConst.CHAR_LAYOUT_T) {\r\n // 縦\r\n layoutCd = EditConst.LAYOUTCD_HOJIN_T;\r\n }\r\n else if (charLayout === EditConst.CHAR_LAYOUT_CY) {\r\n // センター横\r\n layoutCd = EditConst.LAYOUTCD_HOJIN_CY;\r\n }\r\n else {\r\n // 上記以外(横)\r\n layoutCd = EditConst.LAYOUTCD_HOJIN_Y;\r\n }\r\n }\r\n else {\r\n // 個人の場合\r\n if (charLayout === EditConst.CHAR_LAYOUT_T) {\r\n // 縦\r\n layoutCd = EditConst.LAYOUTCD_PERSONAL_T;\r\n }\r\n else if (charLayout === EditConst.CHAR_LAYOUT_CY) {\r\n // センター横\r\n layoutCd = EditConst.LAYOUTCD_PERSONAL_CY;\r\n }\r\n else {\r\n // 上記以外(横)\r\n layoutCd = EditConst.LAYOUTCD_PERSONAL_Y;\r\n }\r\n }\r\n\r\n return layoutCd;\r\n\r\n }\r\n\r\n /**\r\n * 生成した差出人アイテムをsonbpへ連携\r\n * @param selectItem :選択アイテム\r\n * @param setOrder :入力オーダー\r\n * @param reqParam :組版実行時の共通パラメータ\r\n * @param result :組版APIのレスポンス\r\n */\r\n private setSenderText(selectItem: itemVenderProperty, setOrder: senderTranEntityEx, reqParam: kumihanRequestParam, result: kumihanResponseParam) {\r\n\r\n // 結果判定\r\n if (result !== null) {\r\n this._vue.$data.EnableOnChangeForSender = false;\r\n\r\n // 入力内容の保持\r\n if (selectItem === null) {\r\n Logger.debug(\"差出人 新規追加\");\r\n\r\n // 新規\r\n this.sonbpIfController.setSenderText(\r\n true,\r\n setOrder,\r\n reqParam,\r\n result.json,\r\n () => {\r\n Logger.debug(\"差出人 新規追加 正常終了\");\r\n // 正常終了の場合\r\n this._vue.$data.Show.OparatePalletCover4Top = false;\r\n this._vue.$data.SenderInfo.DelBtnEnable = true;\r\n this._vue.$data.EnableOnChangeForSender = true;\r\n\r\n this.sonbpIfController.SenderInfo = setOrder;\r\n\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n\r\n if (!this._usePcDesign) {\r\n // SP用\r\n this.returnSenderHomeBtn(null);\r\n }\r\n },\r\n () => {\r\n // 上記以外の場合\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.createErrorDialog(\r\n constDialogMessage.ERROR_EDIT_CREATE_SENDER,\r\n () => {\r\n dialogUtil.closeErrorDialog();\r\n });\r\n this._vue.$data.EnableOnChangeForSender = true;\r\n });\r\n }\r\n else {\r\n Logger.debug(\"差出人 既存更新\");\r\n\r\n // 更新\r\n this.sonbpIfController.setSenderText(\r\n false,\r\n setOrder,\r\n reqParam,\r\n result.json,\r\n () => {\r\n Logger.debug(\"差出人 既存更新 正常終了\");\r\n // 正常終了の場合\r\n this.sonbpIfController.SenderInfo = setOrder;\r\n this._vue.$data.EnableOnChangeForSender = true;\r\n\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n\r\n if (!this._usePcDesign) {\r\n // SP用\r\n this.returnSenderHomeBtn(null);\r\n }\r\n },\r\n () => {\r\n // 上記以外の場合\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.createErrorDialog(\r\n constDialogMessage.ERROR_EDIT_CREATE_SENDER,\r\n () => {\r\n dialogUtil.closeErrorDialog();\r\n });\r\n this._vue.$data.EnableOnChangeForSender = true;\r\n });\r\n }\r\n }\r\n else {\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_CREATE_SENDER, dialogUtil.closeErrorDialog);\r\n }\r\n\r\n }\r\n\r\n /**\r\n * 電話タイプを外字(文字コード)に変換\r\n * @param telType :電話タイプ\r\n */\r\n private telType2Gaiji(telType: number): string {\r\n\r\n // フォントにより、記号に割り当てられている文字コードがことなる。\r\n const selFont = this.editInfo.master.font.find(x => x.name == this._vue.$data.SenderInfo.Setting.Font);\r\n\r\n if (selFont.gaijiFlg) {\r\n // 店頭機フォント\r\n if (telType === EditConst.CONTACT_TEL_VAL) {\r\n return \"\\uF32D\";\r\n }\r\n else if (telType === EditConst.CONTACT_CELLULAR_VAL) {\r\n return \"\\uF328\";\r\n }\r\n else if (telType === EditConst.CONTACT_FAX_VAL) {\r\n return \"\\uF326\"; \r\n }\r\n else if (telType === EditConst.CONTACT_TEL_FAX_VAL) {\r\n return \"\\uF32A\" + \"・\" + \"\\uF326\";\r\n }\r\n else {\r\n return \"\";\r\n }\r\n } else {\r\n // 旧ネットフォント\r\n if (telType === EditConst.CONTACT_TEL_VAL) {\r\n return \"\\uE017\";\r\n }\r\n else if (telType === EditConst.CONTACT_CELLULAR_VAL) {\r\n return \"\\uE015\";\r\n }\r\n else if (telType === EditConst.CONTACT_FAX_VAL) {\r\n return \"\\uE00C\";\r\n }\r\n else if (telType === EditConst.CONTACT_TEL_FAX_VAL) {\r\n return \"\\uE044\";\r\n }\r\n else {\r\n return \"\";\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 差出人パネルの入力値を収集\r\n */\r\n private getSenderOrder(): senderTranEntityEx {\r\n\r\n // 入力値取得\r\n\r\n // 文字サイズ(有効値を格納するため、validSenderOrder()側で格納します)\r\n //order.size = this._vue.$data.SenderInfo.Setting.FontSize;\r\n\r\n // フォント\r\n let selFont: GetEditInfo.GetEditInfoFontEntity = util.relic.listFind(this.editInfo.master.font, (f: GetEditInfo.GetEditInfoFontEntity) => {\r\n return f.name === this._vue.$data.SenderInfo.Setting.Font;\r\n });\r\n\r\n // 文字色\r\n let selFontColor: GetEditInfo.GetEditInfoColorEntity = util.relic.listFind(this.editInfo.master.color, (c: GetEditInfo.GetEditInfoColorEntity) => {\r\n return c.id === this._vue.$data.SelectCharColor;\r\n });\r\n\r\n let order: senderTranEntityEx = senderTranEntityEx.createDef(this.editInfo.master.design.sender, [selFont], [selFontColor]);\r\n if (selFont !== undefined) {\r\n order.fontMaster = selFont;\r\n order.sender.font = selFont.id;\r\n }\r\n order.fontColorMaster = (selFontColor !== undefined) ? selFontColor : null;\r\n order.sender.color = selFontColor.id;\r\n\r\n // フチ文字\r\n order.outlineChar = this._vue.$data.SenderInfo.Setting.OutlineFont;\r\n if (order.outlineChar) {\r\n // フチ文字色\r\n let selOutlineFontColor: GetEditInfo.GetEditInfoColorEntity = util.relic.listFind(this.editInfo.master.color, (c: GetEditInfo.GetEditInfoColorEntity) => {\r\n return c.id === this._vue.$data.SelectOutlineCharColor;\r\n });\r\n order.outlineFontColorMaster = (selOutlineFontColor !== undefined) ? selOutlineFontColor : null;\r\n order.sender.outlineColor = selOutlineFontColor.id;\r\n }\r\n\r\n // 通常入力(個人 or 法人) or 自由入力\r\n if (this._vue.$data.SenderInfo.IsNormalInput) {\r\n if (this._vue.$data.SenderInfo.NormalInput.PersonalUse) {\r\n order.sender.type = EditConst.SENDER_TYPE_PORSONAL;\r\n }\r\n else {\r\n order.sender.type = EditConst.SENDER_TYPE_CORP;\r\n }\r\n\r\n // 文字レイアウト\r\n order.charLayout = this._vue.$data.SenderInfo.Setting.CharLayoutEx;\r\n }\r\n else {\r\n order.sender.type = EditConst.SENDER_TYPE_FREE;\r\n\r\n // 文字レイアウト\r\n order.charLayout = this._vue.$data.SenderInfo.Setting.CharLayout;\r\n }\r\n\r\n // 行揃え(組方向)\r\n if (order.charLayout === EditConst.CHAR_LAYOUT_Y) {\r\n order.alignDispVal = this._vue.$data.SenderInfo.Setting.AlignY;\r\n order.sender.direction = EditConst.DIRECTION_Y;\r\n }\r\n else if (order.charLayout === EditConst.CHAR_LAYOUT_CY) {\r\n order.alignDispVal = this._vue.$data.SenderInfo.Setting.AlignCY;\r\n order.sender.direction = EditConst.DIRECTION_CY;\r\n }\r\n else {\r\n order.alignDispVal = this._vue.$data.SenderInfo.Setting.AlignT;\r\n order.sender.direction = EditConst.DIRECTION_T;\r\n }\r\n\r\n\r\n // 入力方法別に入力値を取得\r\n if (order.sender.type === EditConst.SENDER_TYPE_FREE) {\r\n // 自由入力\r\n\r\n // 文字レイアウト(DB上のALIGN9点)\r\n if (order.charLayout === EditConst.CHAR_LAYOUT_Y) {\r\n // 横書き\r\n if (order.alignDispVal === EditConst.ALIGN_Y_LEFT) {\r\n // 横書き左 -> 7\r\n order.sender.align = EditConst.ALIGN_7;\r\n\r\n } else if (order.alignDispVal === EditConst.ALIGN_Y_CENTER) {\r\n // 横書きセンター -> 8\r\n order.sender.align = EditConst.ALIGN_8;\r\n\r\n } else if (order.alignDispVal === EditConst.ALIGN_Y_RIGHT) {\r\n // 横書き右 -> 9\r\n order.sender.align = EditConst.ALIGN_9;\r\n\r\n }\r\n\r\n } else if (order.charLayout === EditConst.CHAR_LAYOUT_CY) {\r\n // 横書きセンター -> 6\r\n order.sender.align = EditConst.ALIGN_6;\r\n\r\n } else {\r\n // 縦書き\r\n if (order.alignDispVal === EditConst.ALIGN_T_TOP) {\r\n // 縦書き上 -> 9\r\n order.sender.align = EditConst.ALIGN_9;\r\n\r\n } else if (order.alignDispVal === EditConst.ALIGN_Y_CENTER) {\r\n // 縦書き中 -> 6\r\n order.sender.align = EditConst.ALIGN_6;\r\n\r\n } else if (order.alignDispVal === EditConst.ALIGN_Y_RIGHT) {\r\n // 縦書き下 -> 3\r\n order.sender.align = EditConst.ALIGN_3;\r\n\r\n }\r\n }\r\n // 文章\r\n order.sender.senderInfo.free = this._vue.$data.SenderInfo.FreeInput;\r\n }\r\n else {\r\n\r\n order.sender.senderInfo.addresses = [];\r\n order.sender.senderInfo.corps = [];\r\n order.sender.senderInfo.emails = [];\r\n order.sender.senderInfo.names = [];\r\n\r\n // 住所\r\n let address: SenderInfoDb.SenderInfoAddressDbEntity = new SenderInfoDb.SenderInfoAddressDbEntity();\r\n\r\n // 郵便番号\r\n address.yubin1 = this._vue.$data.SenderInfo.NormalInput.ZipCode1;\r\n address.yubin2 = this._vue.$data.SenderInfo.NormalInput.ZipCode2;\r\n\r\n // 住所\r\n address.jusho1 = this._vue.$data.SenderInfo.NormalInput.Address1;\r\n address.jusho2 = this._vue.$data.SenderInfo.NormalInput.Address2;\r\n address.jusho3 = this._vue.$data.SenderInfo.NormalInput.Address3;\r\n\r\n // 電話番号1\r\n address.telType1 = this.telTypeStrToVal(this._vue.$data.SenderInfo.NormalInput.Contact[0].Type);\r\n address.telNo1_1 = this._vue.$data.SenderInfo.NormalInput.Contact[0].Tel1;\r\n address.telNo1_2 = this._vue.$data.SenderInfo.NormalInput.Contact[0].Tel2;\r\n address.telNo1_3 = this._vue.$data.SenderInfo.NormalInput.Contact[0].Tel3;\r\n // 電話番号2\r\n address.telType2 = this.telTypeStrToVal(this._vue.$data.SenderInfo.NormalInput.Contact[1].Type);\r\n address.telNo2_1 = this._vue.$data.SenderInfo.NormalInput.Contact[1].Tel1;\r\n address.telNo2_2 = this._vue.$data.SenderInfo.NormalInput.Contact[1].Tel2;\r\n address.telNo2_3 = this._vue.$data.SenderInfo.NormalInput.Contact[1].Tel3;\r\n\r\n order.sender.senderInfo.addresses.push(address);\r\n\r\n // e-mal 1\r\n let email1: SenderInfoDb.SenderInfoEmailDbEntity = new SenderInfoDb.SenderInfoEmailDbEntity();\r\n email1.address = this._vue.$data.SenderInfo.NormalInput.Email.Mail1\r\n order.sender.senderInfo.emails.push(email1);\r\n // e-mal 2\r\n let email2: SenderInfoDb.SenderInfoEmailDbEntity = new SenderInfoDb.SenderInfoEmailDbEntity();\r\n email2.address = this._vue.$data.SenderInfo.NormalInput.Email.Mail2\r\n order.sender.senderInfo.emails.push(email2);\r\n\r\n // 名前\r\n order.sender.senderInfo.names.push(this.getInputSenderName(0));\r\n\r\n if (order.sender.type === EditConst.SENDER_TYPE_CORP) {\r\n // 法人\r\n let corp: SenderInfoDb.SenderInfoCorpDbEntity = new SenderInfoDb.SenderInfoCorpDbEntity();\r\n\r\n // 会社名\r\n corp.name = this._vue.$data.SenderInfo.NormalInput.Company.Name;\r\n // 部署名\r\n corp.busyo = this._vue.$data.SenderInfo.NormalInput.Company.Department;\r\n // 肩書\r\n order.sender.senderInfo.names[0].title = this._vue.$data.SenderInfo.NormalInput.Company.Position;\r\n\r\n order.sender.senderInfo.corps.push(corp);\r\n\r\n order.sender.senderInfo.isHojin = true;\r\n }\r\n else if (order.sender.type === EditConst.SENDER_TYPE_PORSONAL) {\r\n // 個人\r\n for (let i: number = 1; i < 6; i++) {\r\n order.sender.senderInfo.names.push(this.getInputSenderName(i));\r\n }\r\n\r\n order.sender.senderInfo.isHojin = false;\r\n }\r\n }\r\n\r\n return order;\r\n }\r\n\r\n /**\r\n * 電話番号タイプ名をDB値に変更\r\n * @param telTypeStr :電話番号タイプコンボ選択値\r\n */\r\n private telTypeStrToVal(telTypeStr: string): number {\r\n\r\n if (telTypeStr === EditConst.CONTACT_TEL_DISP) {\r\n return EditConst.CONTACT_TEL_VAL;\r\n }\r\n else if (telTypeStr === EditConst.CONTACT_CELLULAR_DISP) {\r\n return EditConst.CONTACT_CELLULAR_VAL;\r\n }\r\n else if (telTypeStr === EditConst.CONTACT_FAX_DISP) {\r\n return EditConst.CONTACT_FAX_VAL;\r\n }\r\n else if (telTypeStr === EditConst.CONTACT_TEL_FAX_DISP) {\r\n return EditConst.CONTACT_TEL_FAX_VAL;\r\n }\r\n\r\n return EditConst.CONTACT_TEL_VAL\r\n }\r\n\r\n /**\r\n * 入力された差出人 名前 を収集\r\n * @param index\r\n */\r\n private getInputSenderName(index: number): SenderInfoDb.SenderInfoNameDbEntity {\r\n\r\n let name: SenderInfoDb.SenderInfoNameDbEntity = new SenderInfoDb.SenderInfoNameDbEntity();\r\n\r\n name.lastName = this._vue.$data.SenderInfo.NormalInput.Names[index].LastName;\r\n name.lastRubi = this._vue.$data.SenderInfo.NormalInput.Names[index].LastNameKana;\r\n name.firstName = this._vue.$data.SenderInfo.NormalInput.Names[index].FirstName;\r\n name.firstRubi = this._vue.$data.SenderInfo.NormalInput.Names[index].FirstNameKana;\r\n name.ps = this._vue.$data.SenderInfo.NormalInput.Names[index].PS;\r\n\r\n return name;\r\n }\r\n\r\n /**\r\n * 差出人の入力値チェック\r\n * @param order :チェック対象\r\n * @param msgList :エラーメッセージ\r\n */\r\n private validSenderOrder(order: senderTranEntityEx, msgList: string[]): boolean {\r\n\r\n let result: boolean = true;\r\n //let useMsgHeader: boolean = false;\r\n\r\n if (order.sender.type == EditConst.SENDER_TYPE_FREE) {\r\n // 自由入力の場合\r\n\r\n // 文字サイズ\r\n const fontSize: string = this._vue.$data.SenderInfo.Setting.FontSize;\r\n if (util.verify.validFontSize(fontSize, msgList)) {\r\n order.sender.size = Number(fontSize);\r\n }\r\n else {\r\n result = false;\r\n }\r\n\r\n // 文章\r\n if (order.sender.senderInfo.free.length === 0) {\r\n msgList.push(constDialogMessage.WARN_EDIT_INPUT_CHECK_SENDERTEXT);\r\n result = false;\r\n }\r\n else {\r\n\r\n // 最大文字数チェック\r\n let senderLenCheck = util.verify.validStringLen(order.sender.senderInfo.free, EditConst.SENDER_MAXLEN_FREE);\r\n if (!senderLenCheck) {\r\n msgList.push(constDialogMessage.WARN_EDIT_CHECK_FREESENDERTEXT);\r\n result = false;\r\n }\r\n // 半角スペース、全角スペースのみの場合は組版させない。\r\n const texts = order.sender.senderInfo.free.split(\"\\n\");\r\n if (!util.verify.validSpaceAll(texts)) {\r\n msgList.push(constDialogMessage.WARN_EDIT_INPUT_CHECK_SENDERTEXT);\r\n result = false;\r\n }\r\n }\r\n }\r\n else {\r\n // 通常入力の場合\r\n\r\n // フォント\r\n // →未選択のないコンボなのでスキップ\r\n\r\n // 文字色\r\n if (order.fontColorMaster === null) {\r\n msgList.push(constDialogMessage.WARN_EDIT_INPUT_CHECK_CHARCOLOR);\r\n result = false;\r\n }\r\n\r\n // 文字レイアウト\r\n // →未選択のないコンボなのでスキップ\r\n\r\n // 行揃え\r\n // →未選択のないコンボなのでスキップ\r\n\r\n // フチ文字\r\n if (order.outlineChar && order.fontColorMaster === null) {\r\n msgList.push(constDialogMessage.WARN_EDIT_INPUT_CHECK_OUTCHARCOLOR);\r\n result = false;\r\n }\r\n\r\n let requiredMsgList: string[] = [];\r\n\r\n // 住所\r\n for (let i: number = 0; i < order.sender.senderInfo.addresses.length; i++) {\r\n\r\n // 郵便番号\r\n if (!this.validSenderZipcode(order.sender.senderInfo.addresses[i].yubin1, order.sender.senderInfo.addresses[i].yubin2, requiredMsgList, msgList)) {\r\n result = false;\r\n }\r\n\r\n // 住所\r\n if (order.sender.senderInfo.addresses[i].jusho1.length === 0) {\r\n // 住所1は必須\r\n msgList.push(this.formatSenderErrMessage(\r\n EditConst.SENDER_ITEM_CAPTION_ADDRESS1,\r\n constDialogMessage.WARN_EDIT_EMPTY_CHECK));\r\n requiredMsgList.push(msgList[msgList.length - 1]);\r\n result = false;\r\n }\r\n else {\r\n if (!util.verify.validStringLen(order.sender.senderInfo.addresses[i].jusho1, EditConst.SENDER_MAXLEN_JUSHO)) {\r\n msgList.push(this.formatSenderErrMessage(\r\n EditConst.SENDER_ITEM_CAPTION_ADDRESS1,\r\n constDialogMessage.WARN_EDIT_FORMAT_CHECK_ADDRESS));\r\n result = false;\r\n }\r\n if (!util.verify.validStringLen(order.sender.senderInfo.addresses[i].jusho2, EditConst.SENDER_MAXLEN_JUSHO)) {\r\n msgList.push(this.formatSenderErrMessage(\r\n EditConst.SENDER_ITEM_CAPTION_ADDRESS2,\r\n constDialogMessage.WARN_EDIT_FORMAT_CHECK_ADDRESS));\r\n result = false;\r\n }\r\n if (!util.verify.validStringLen(order.sender.senderInfo.addresses[i].jusho3, EditConst.SENDER_MAXLEN_JUSHO)) {\r\n msgList.push(this.formatSenderErrMessage(\r\n EditConst.SENDER_ITEM_CAPTION_ADDRESS3,\r\n constDialogMessage.WARN_EDIT_FORMAT_CHECK_ADDRESS));\r\n result = false;\r\n }\r\n }\r\n\r\n // 電話番号\r\n if (!this.validSenderTel(order.sender.senderInfo.addresses[i].telNo1_1, order.sender.senderInfo.addresses[i].telNo1_2, order.sender.senderInfo.addresses[i].telNo1_3, 0, msgList)) {\r\n result = false;\r\n }\r\n if (!this.validSenderTel(order.sender.senderInfo.addresses[i].telNo2_1, order.sender.senderInfo.addresses[i].telNo2_2, order.sender.senderInfo.addresses[i].telNo2_3, 1, msgList)) {\r\n result = false;\r\n }\r\n\r\n if (!result) {\r\n break;\r\n }\r\n }\r\n\r\n // 名前\r\n if (!this.validSenderNames(order.sender.senderInfo.names, requiredMsgList, msgList)) {\r\n result = false;\r\n }\r\n\r\n // E-mail\r\n for (let i: number = 0; i < order.sender.senderInfo.emails.length; i++) {\r\n if (!this.validSenderEmail(order.sender.senderInfo.emails[i].address)) {\r\n msgList.push(\r\n this.formatSenderErrMessage(\r\n i === 0 ? EditConst.SENDER_ITEM_CAPTION_EMAIL1 : EditConst.SENDER_ITEM_CAPTION_EMAIL2,\r\n constDialogMessage.WARN_EDIT_FORMAT_CHECK_EMAIL));\r\n result = false;\r\n }\r\n }\r\n\r\n // 法人?\r\n if (order.sender.senderInfo.isHojin) {\r\n // 会社名\r\n if (!util.verify.validStringLen(order.sender.senderInfo.corps[0].name, EditConst.SENDER_MAXLEN_COMPANY)) {\r\n msgList.push(\r\n this.formatSenderErrMessage(\r\n EditConst.SENDER_ITEM_CAPTION_COMPANY,\r\n constDialogMessage.WARN_EDIT_FORMAT_CHECK_CORPNAME));\r\n result = false;\r\n }\r\n\r\n // 部署名\r\n if (!util.verify.validStringLen(order.sender.senderInfo.corps[0].busyo, EditConst.SENDER_MAXLEN_DEPARTMENT)) {\r\n msgList.push(\r\n this.formatSenderErrMessage(\r\n EditConst.SENDER_ITEM_CAPTION_DEPARTMENT,\r\n constDialogMessage.WARN_EDIT_FORMAT_CHECK_CORPBUSYO));\r\n result = false;\r\n }\r\n\r\n // 肩書\r\n if (!util.verify.validStringLen(order.sender.senderInfo.names[0].title, EditConst.SENDER_MAXLEN_TITLE)) {\r\n msgList.push(\r\n this.formatSenderErrMessage(\r\n EditConst.SENDER_ITEM_CAPTION_TITLE,\r\n constDialogMessage.WARN_EDIT_FORMAT_CHECK_TITLE));\r\n result = false;\r\n }\r\n }\r\n\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * 郵便番号1が入力されたとき\r\n */\r\n public onInputZipCode1(event: JQueryEventObject): void {\r\n const zipcode1 = this._vue.$data.SenderInfo.NormalInput.ZipCode1;\r\n if (zipcode1.length == 3) {\r\n (this._vue.$refs.zipCode2).focus();\r\n }\r\n }\r\n\r\n /**\r\n * 郵便番号2が入力されたとき\r\n */\r\n public onInputZipCode2(event: JQueryEventObject): void {\r\n const zipcode2 = this._vue.$data.SenderInfo.NormalInput.ZipCode2;\r\n if (zipcode2.length == 4) {\r\n (this._vue.$refs.searchAddrBtn).focus();\r\n }\r\n }\r\n\r\n\r\n /**\r\n * 操作パネル→住所検索メソッド\r\n */\r\n public async btnClickSearchZipToAddress(event: JQueryEventObject): es6promise.Promise {\r\n Logger.debug(\"操作パネル→住所検索押下メソッド\");\r\n\r\n const codeZip = [\r\n this._vue.$data.SenderInfo.NormalInput.ZipCode1,\r\n this._vue.$data.SenderInfo.NormalInput.ZipCode2\r\n ];\r\n const zipno = codeZip.join('');\r\n\r\n // [0-9]以外の文字列が入力されていないかの確認\r\n if (!RegExp('[0-9]{7}', 'g').test(zipno)) {\r\n this.showAddrSearchErroDlg(\"(郵便番号)半角数値7桁で入力してください。\");\r\n return;\r\n }\r\n \r\n // ローディングダイアログ開始\r\n util.dialogUtil.showLoading();\r\n\r\n // サーバーへ問い合わせ\r\n const address = await this.searchZipToAddress(zipno);\r\n\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n\r\n // 検索が失敗した場合\r\n if (address == null) {\r\n this.showAddrSearchErroDlg(\"郵便番号から住所が見つかりませんでした。\");\r\n return;\r\n }\r\n\r\n // 結果を格納\r\n this._vue.$data.SenderInfo.NormalInput.Address1 = address.address1;\r\n this._vue.$data.SenderInfo.NormalInput.Address2 = address.address2;\r\n this._vue.$data.SenderInfo.NormalInput.Address3 = address.address3;\r\n }\r\n\r\n private async searchZipToAddress(zipno: string): es6promise.Promise {\r\n\r\n const param = {\r\n token: this._authToken,\r\n zipno: zipno,\r\n }\r\n\r\n return await util.ajax.post(this.WEBAPI_URL_SEARCHADDRESS, JSON.stringify(param)).catch(() => {return null});\r\n }\r\n\r\n// #endregion\r\n\r\n}\r\n","import Enumerable from \"linq\";\r\nimport { GetEditInfo, util } from \"..\";\r\nimport * as sonbpIfconst from \"../sonbpIf/base/constants\";\r\nimport { constDialogMessage, dialogUtil } from \"../util\";\r\nimport { Logger } from \"../util/logger\";\r\nimport { BaseLogicClass } from \"./edit.baseLogic\";\r\nimport { EditConst, EDIT_MODE_KIND, kumihanHv, KUMIHAN_HV } from \"./edit.const\";\r\nimport { greetingTranEntityEx, kumihanContoroller, kumihanGreetingRequestParam, kumihanResponseParam } from \"./edit.entity\";\r\nimport { itemVenderProperty } from \"./edit.sonbp_if\";\r\nimport { editUtil } from \"./edit.tool\";\r\n\r\n/**\r\n * あいさつ文関連の処理クラス\r\n * \r\n * TODO ★名前に \"Greeting\"が付く関数は全てこちらへ移しています。\r\n * \r\n */\r\nexport class GreetingLogicClass extends BaseLogicClass {\r\n\r\n// #region ■定数・変数\r\n\r\n /**\r\n * あいさつ文最大数\r\n */\r\n private readonly GREETING_NUM_MAX: number = 10;\r\n\r\n /**\r\n * 組版トークン \r\n */\r\n private get kumihanToken(): string {\r\n\r\n return this.editInfo.kumihanToken;\r\n }\r\n\r\n /**\r\n * WebAPI[Edit/GetEditInfo]のレスポンスのdata部\r\n */\r\n private get editInfo(): GetEditInfo.GetEditInfoResponseEntity {\r\n return this._edctrl.editInfo;\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■イベント\r\n\r\n /**\r\n * ツールメニュー:あいさつ文編集押下メソッド\r\n * @param selectedItemVp 選択済みアイテム(2025年対応:配置済み画像の再編集可能 #28295)\r\n * */\r\n public btnClickGreetingMenu(event: JQueryEventObject, selectedItemVp: itemVenderProperty = null): void {\r\n\r\n if (this._edctrl.editMode === EDIT_MODE_KIND.GREETING) {\r\n return;\r\n }\r\n\r\n // sonbpへ処理モード変更依頼\r\n this.sonbpIfController.setMode(EDIT_MODE_KIND.GREETING,\r\n () => {\r\n // 正常終了の場合\r\n this._edctrl.editMode = EDIT_MODE_KIND.GREETING;\r\n\r\n // あいさつ文パネルの初期化\r\n this.initGreetingPanel();\r\n\r\n if (this._usePcDesign) {\r\n // PC用\r\n // パネルの表示制御\r\n this._vue.$data.Show.BalloonGuidance = false;\r\n this._vue.$data.Show.PhotoList = false;\r\n this._vue.$data.Show.OparatePallet = true;\r\n this._vue.$data.Show.GreetingPanel = true;\r\n this._vue.$data.Show.SenderPanel = false;\r\n this._vue.$data.Show.StampPanel = false;\r\n this._vue.$data.Show.MyStampPanel = false;\r\n this._vue.$data.Show.TegakiStampPanel = false;\r\n\r\n // ツールメニューの活性制御\r\n this._vue.$data.ActiveSetPhotoMenu = false;\r\n this._vue.$data.ActiveManiPhotoMenu = false;\r\n this._vue.$data.ActiveGreetingMenu = true;\r\n this._vue.$data.ActiveSenderMenu = false;\r\n this._vue.$data.ActiveStampMenu = false;\r\n this._vue.$data.ActiveMyStampMenu = false;\r\n this._vue.$data.ActiveTegakiStampMenu = false;\r\n this._vue.$data.ActiveFinishSelectMenu = false;\r\n\r\n // フェードインアウトの初期化\r\n this._vue.$data.HideLabel = EditConst.HIDE_AREA_FADE_OUT;\r\n this._vue.$data.GreetingInfo.fade.In = false;\r\n this._vue.$data.GreetingInfo.fade.Out = false;\r\n\r\n // オブジェクト操作パレットの表示制御\r\n this._edctrl.setModeOparatePallet(EDIT_MODE_KIND.GREETING, null);\r\n\r\n if (selectedItemVp === null) {\r\n\r\n // 先頭アイテム選択\r\n this.sonbpIfController.setSelectFirstItem(sonbpIfconst.ITYPE_GREETING_TXT,\r\n () => { Logger.debug(\"選択アイテムの指定 成功\"); },\r\n () => { },\r\n () => { Logger.error(\"選択アイテムの指定 失敗\"); }\r\n );\r\n } else {\r\n\r\n // アイテム選択\r\n this.sonbpIfController.selectItem(sonbpIfconst.ITYPE_GREETING_TXT, selectedItemVp.idx,\r\n () => { Logger.debug(\"選択アイテムの指定 成功\"); },\r\n () => { Logger.error(\"選択アイテムの指定 失敗\"); }\r\n );\r\n }\r\n }\r\n else {\r\n // SP用\r\n\r\n // 履歴処理開始\r\n this.sonbpIfController.historyStart();\r\n\r\n // ヘッダーメニュー\r\n this._vue.$data.Show.ReturnFlowBtn = false;\r\n this._vue.$data.Show.ReturnHomeBtn = false;\r\n this._vue.$data.Show.NextFlowBtn = false;\r\n this._vue.$data.Show.NextHomeFromImgListBtn = false;\r\n this._vue.$data.Show.NextHomeFromMyStampListBtn = false;\r\n this._vue.$data.Show.NextHomeFromTegakiStampListBtn = false;\r\n this._vue.$data.Show.GreetingUpdataBtn = false;\r\n\r\n // メインメニュー\r\n this._vue.$data.Show.SetPhotoMenu = false;\r\n // あいさつ文エリア\r\n this._vue.$data.Show.GreetingPanel = false;\r\n // 差出人エリア\r\n this._vue.$data.Show.SenderPanel = false;\r\n // スタンプエリア\r\n this._vue.$data.Show.StampPanel = false;\r\n this._vue.$data.Show.MyStampPanel = false;\r\n this._vue.$data.Show.TegakiStampPanel = false;\r\n this._vue.$data.Show.TegakiColorPanel = false;\r\n\r\n this.sonbpIfController.getGreetingTextList((list: itemVenderProperty[]) => {\r\n // 作成済みのあいさつ文が存在するか判定\r\n if (0 < list.length) {\r\n // 存在する場合、あいさつ文の位置調整表示\r\n this._vue.$data.Header.Title = EditConst.TITLE_GREETING;\r\n\r\n this._vue.$data.Show.ReturnGreetingHomeBtn = false;\r\n this._vue.$data.Show.ReturnHomeExBtn = true;\r\n this._vue.$data.Show.GreetingDeleteBtn = true;\r\n this._vue.$data.Show.CommitNextHomeBtn = true;\r\n\r\n this._vue.$data.Show.OparatePallet = true;\r\n\r\n // オブジェクト操作パレットの表示制御\r\n this._edctrl.setModeOparatePallet(EDIT_MODE_KIND.GREETING, null);\r\n\r\n // タッチイベント制御(無効)\r\n this._edctrl.touchEventChange(false);\r\n\r\n if (selectedItemVp === null) {\r\n\r\n // 先頭アイテムを選択\r\n this.sonbpIfController.setSelectFirstItem(sonbpIfconst.ITYPE_GREETING_TXT,\r\n (selectItem: itemVenderProperty) => { Logger.debug(\"選択アイテムの指定 成功\"); },\r\n () => { },\r\n () => { Logger.error(\"選択アイテムの指定 失敗\"); });\r\n } else {\r\n\r\n // アイテム選択\r\n this.sonbpIfController.selectItem(sonbpIfconst.ITYPE_GREETING_TXT, selectedItemVp.idx,\r\n () => { Logger.debug(\"選択アイテムの指定 成功\"); },\r\n () => { Logger.error(\"選択アイテムの指定 失敗\"); }\r\n );\r\n }\r\n }\r\n else {\r\n // 存在しない場合、あいさつ文の編集表示\r\n this.setGreetingEditMode(true);\r\n }\r\n });\r\n }\r\n\r\n },\r\n () => {\r\n // 異常終了の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_CHANGE_MODE, dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n }\r\n\r\n /**\r\n * あいさつ文パネル フォント変更\r\n * @param event\r\n */\r\n public onChangeGreetingFont(event: JQueryEventObject): void {\r\n\r\n // フォントサンプル更新\r\n const font = this.editInfo.master.font.find(x => x.name == this._vue.$data.GreetingInfo.Font);\r\n if (font !== undefined) {\r\n this._vue.$data.GreetingInfo.FontSample = font.url;\r\n }\r\n }\r\n\r\n /**\r\n * あいさつ文パネル 文字レイアウト変更\r\n * @param event\r\n */\r\n public onChangeGreetingCharLayout(event: JQueryEventObject): void {\r\n // 行揃えコンボの切り替え(縦 or 横)\r\n if (this._vue.$data.GreetingInfo.CharLayout == EditConst.CHAR_LAYOUT_T) {\r\n this._vue.$data.GreetingInfo.ShowAlignY = false;\r\n }\r\n else {\r\n this._vue.$data.GreetingInfo.ShowAlignY = true;\r\n }\r\n }\r\n\r\n /**\r\n * あいさつ文パネル 例文を表示ボタン押下\r\n * @param event\r\n */\r\n public btnClickGreetingSample(event: JQueryEventObject): void {\r\n\r\n // 選択状態を初期化\r\n this.editInfo.master.greeting.forEach(row => row.selected = false);\r\n this._vue.$data.GreetingInfo.SampleList = this.editInfo.master.greeting;\r\n\r\n // 例文ダイアログ表示\r\n this._vue.$data.Show.MessageDialog = false;\r\n this._vue.$data.Show.GreetingDialog = true;\r\n this._vue.$data.Show.DialogArea = true;\r\n\r\n // 入力値が空であればデフォルトあいさつ文のセット\r\n if (this._vue.$data.GreetingInfo.Text == \"\") {\r\n let greetingNo = this.editInfo.master.design.greeting.no;\r\n Logger.info(\"デフォルトあいさつ文記号:\", greetingNo);\r\n this.imgClickGreetingSample(greetingNo);\r\n }\r\n }\r\n\r\n /**\r\n * あいさつ文パネル 入力内容を適用するボタン押下\r\n *\r\n * @param requesNew :true:新規、false:更新\r\n * @param event\r\n */\r\n public btnClickGreetingSet(requesNew: boolean, event: JQueryEventObject): void {\r\n\r\n let updateItemIdx: number = -1;\r\n\r\n // ローディングダイアログ開始\r\n util.dialogUtil.showLoading();\r\n\r\n // 上限チェック\r\n if (requesNew && (this.GREETING_NUM_MAX <= this.sonbpIfController.GreetingList.length)) {\r\n util.dialogUtil.createErrorDialog(\r\n constDialogMessage.WARN_EDIT_GREETING_MAX_NUM,\r\n () => {\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.closeErrorDialog();\r\n }\r\n );\r\n return;\r\n }\r\n\r\n let selectItem: itemVenderProperty = null;\r\n if (!requesNew) {\r\n // 選択あいさつ文の存在チェック\r\n selectItem = this.sonbpIfController.getSelectItem();\r\n\r\n // 選択アイテムが存在する場合、対応する入力データ(index)を取得\r\n if (selectItem !== null) {\r\n for (let i: number = 0; i < this.sonbpIfController.GreetingList.length; i++) {\r\n if (this.sonbpIfController.GreetingList[i].id === selectItem.idx) {\r\n updateItemIdx = i;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n Logger.debug(\"選択あいさつ文 結果[\" + updateItemIdx + \"]\");\r\n }\r\n\r\n // 入力値取得\r\n let setOrder: greetingTranEntityEx = this.getGreetingOrder();\r\n let msgList: string[] = [];\r\n\r\n // 入力チェック\r\n if (!this.validGreetingOrder(setOrder, msgList)) {\r\n // 入力チェックエラー\r\n util.dialogUtil.createErrorDialog(\r\n msgList.join(\"
\"),\r\n () => {\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.closeErrorDialog();\r\n });\r\n return;\r\n }\r\n\r\n // ワイルドカード文字の検出\r\n const hasSampleWildCard = setOrder.text.indexOf(EditConst.GREETING_SAMPLE_WILDCARD, 0) === -1;\r\n const hasSampleWildCard2 = setOrder.text.indexOf(EditConst.GREETING_SAMPLE_WILDCARD2, 0) === -1;\r\n if (hasSampleWildCard && hasSampleWildCard2) {\r\n // 存在しない場合\r\n if (this._usePcDesign) {\r\n // PC用\r\n this.greetingSetFunc(requesNew, updateItemIdx, setOrder, null);\r\n }\r\n else {\r\n // SP用\r\n this.greetingSetFunc(requesNew, updateItemIdx, setOrder, () => { this.returnGreetingHomeBtn(null); });\r\n }\r\n }\r\n else {\r\n let message = \"\";\r\n if (!hasSampleWildCard) {\r\n // ●が残っています。\r\n message = constDialogMessage.INFO_EDIT_EXISTS_WILDCARDCHAR;\r\n } else {\r\n // ■が残っています。\r\n message = constDialogMessage.INFO_EDIT_EXISTS_WILDCARDCHAR2;\r\n }\r\n\r\n // 上記以外の場合、確認メッセージの表示\r\n util.dialogUtil.createYesNoDialog(\r\n message,\r\n () => {\r\n util.dialogUtil.closeYesNoDialog();\r\n if (this._usePcDesign) {\r\n // PC用\r\n this.greetingSetFunc(requesNew, updateItemIdx, setOrder, null);\r\n }\r\n else {\r\n // SP用\r\n this.greetingSetFunc(requesNew, updateItemIdx, setOrder, () => { this.returnGreetingHomeBtn(null); });\r\n }\r\n },\r\n () => {\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.closeYesNoDialog();\r\n },\r\n null,\r\n null,\r\n util.dialogUtil.DialogType.Infomation);\r\n }\r\n }\r\n\r\n /**\r\n * あいさつ文パネル 作成文章の削除ボタン押下\r\n * @param event\r\n */\r\n public btnClickGreetingDelete(event: JQueryEventObject): void {\r\n\r\n // 選択テキスト取得\r\n const selectItem: itemVenderProperty = this.sonbpIfController.getSelectItem();\r\n\r\n // sonbpへ削除依頼\r\n this.sonbpIfController.removeText(\r\n () => {\r\n // 正常終了の場合\r\n let idx = -1;\r\n for (let i: number = 0; i < this.sonbpIfController.GreetingList.length; i++) {\r\n if (this.sonbpIfController.GreetingList[i].id == selectItem.idx) {\r\n idx = i;\r\n }\r\n }\r\n if (idx !== -1) {\r\n this.sonbpIfController.GreetingList.splice(idx, 1);\r\n }\r\n\r\n // 選択アイテムの指定\r\n this.sonbpIfController.getGreetingTextList((textList: itemVenderProperty[]) => {\r\n if (0 < textList.length) {\r\n this.sonbpIfController.selectItem(textList[0].item_type, textList[0].idx, () => { }, () => { });\r\n }\r\n else {\r\n // 0件になったら更新と削除を非活性\r\n this._vue.$data.GreetingInfo.UpdBtnEnable = false;\r\n this._vue.$data.GreetingInfo.DelBtnEnable = false;\r\n\r\n if (!this._usePcDesign) {\r\n // SP用\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n }\r\n }\r\n });\r\n\r\n if (!this._usePcDesign) {\r\n // SP用\r\n // 履歴処理開始(reset)\r\n this.sonbpIfController.historyStart();\r\n this._vue.$data.Show.ReturnHomeExBtn = false;\r\n }\r\n\r\n }, () => {\r\n // 上記以外の場合\r\n Logger.error(\"テキスト削除失敗 =>\", selectItem);\r\n });\r\n\r\n }\r\n\r\n /**\r\n * あいさつ文パネル 例文表示ダイアログ OKボタン押下\r\n * @param event\r\n */\r\n public btnClickGreetingSampleOK(event: JQueryEventObject): void {\r\n\r\n const selectItem: GetEditInfo.GetEditInfoGreetingEntity = util.relic.listFind(this.editInfo.master.greeting, (g: GetEditInfo.GetEditInfoGreetingEntity) => {\r\n return g.selected === true;\r\n });\r\n\r\n if (selectItem === undefined) {\r\n util.dialogUtil.createErrorDialog(constDialogMessage.WARN_EDIT_NOSEL_GREETING_SAMPLE, dialogUtil.closeErrorDialog);\r\n return;\r\n }\r\n\r\n // 選択例文からワイルドカード文字を削除\r\n //const text = selectItem.text.split(EditConst.GREETING_SAMPLE_WILDCARD).join(\"\");\r\n\r\n // 選択例文をテキストエリアに代入\r\n this._vue.$data.GreetingInfo.Text = selectItem.text;\r\n\r\n // 選択あいさつ文の文書文書番号保持\r\n this._vue.$data.GreetingInfo.SampleSelNo = selectItem.no;\r\n\r\n // 例文ダイアログクローズ\r\n this._vue.$data.Show.GreetingDialog = false;\r\n this._vue.$data.Show.DialogArea = false;\r\n }\r\n\r\n /**\r\n * あいさつ文パネル 例文表示ダイアログ キャンセルボタン押下\r\n * @param event\r\n */\r\n public btnClickGreetingSampleCancel(event: JQueryEventObject): void {\r\n // 例文ダイアログクローズ\r\n this._vue.$data.Show.GreetingDialog = false;\r\n this._vue.$data.Show.DialogArea = false;\r\n }\r\n\r\n /**\r\n * あいさつ文パネル 例文表示ダイアログ サンプル画像クリック\r\n * @param no\r\n */\r\n public imgClickGreetingSample(no: string): void {\r\n for (let i: number = 0; i < this.editInfo.master.greeting.length; i++) {\r\n if (this.editInfo.master.greeting[i].no === no) {\r\n this.editInfo.master.greeting[i].selected = true;\r\n }\r\n else {\r\n this.editInfo.master.greeting[i].selected = false;\r\n }\r\n }\r\n this._vue.$data.GreetingInfo.SampleList = this.editInfo.master.greeting;\r\n }\r\n\r\n /**\r\n * あいさつ文文字サイズ変更ボタンイベント\r\n * @param isPlus\r\n * @param event\r\n */\r\n public btnClickGreetingFontSize(isPlus: boolean, event: JQueryEventObject): void {\r\n\r\n const val = parseFloat(this._vue.$data.GreetingInfo.FontSize);\r\n if (isNaN(val)) return;\r\n\r\n if (isPlus) {\r\n if (val < EditConst.FONT_SIZE_MAX) {\r\n this._vue.$data.GreetingInfo.FontSize = val + EditConst.FONT_SIZE_STEP;\r\n }\r\n } else {\r\n if (EditConst.FONT_SIZE_MIN < val) {\r\n this._vue.$data.GreetingInfo.FontSize = val - EditConst.FONT_SIZE_STEP;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n\r\n // #region ■イベント(SPのみ処理)\r\n\r\n /**\r\n * あいさつ文の位置調整画面に戻るボタン押下(SP)\r\n * @param event\r\n */\r\n public returnGreetingHomeBtn(event: JQueryEventObject): void {\r\n\r\n Logger.debug(\"あいさつ文の位置調整画面に戻るボタン押下\");\r\n\r\n\r\n this.sonbpIfController.getGreetingTextList((list: itemVenderProperty[]) => {\r\n if (list.length === 0) {\r\n // あいさつ文が0件の場合には、ホームに戻る\r\n this._edctrl.btnClickReturnHome(true, true, null);\r\n }\r\n else {\r\n // タッチイベント制御(無効)\r\n this._edctrl.touchEventChange(false);\r\n\r\n // 履歴処理開始(reset)\r\n this.sonbpIfController.historyStart();\r\n\r\n // タイトル\r\n this._vue.$data.Header.Title = EditConst.TITLE_GREETING;\r\n\r\n // ヘッダメニュー\r\n this._vue.$data.Show.ReturnGreetingHomeBtn = false;\r\n this._vue.$data.Show.CommitNextHomeBtn = true;\r\n this._vue.$data.Show.GreetingDeleteBtn = true;\r\n this._vue.$data.Show.GreetingUpdataBtn = false;\r\n\r\n // あいさつ文パネル非表示\r\n this._vue.$data.Show.GreetingPanel = false;\r\n // 編集エリア表示\r\n this._vue.$data.Show.EditArea = true;\r\n\r\n // フッターメニュー\r\n this._vue.$data.Show.FooterMenu = true;\r\n this._vue.$data.Show.SetPhotoMenu = false;\r\n this._vue.$data.Show.EditImageMenu = false;\r\n this._vue.$data.Show.OparatePallet = true;\r\n\r\n // オブジェクト操作メニュー\r\n this._edctrl.setModeOparatePalletForSp(EDIT_MODE_KIND.GREETING, null);\r\n\r\n // あいさつ文の存在チェック\r\n this.sonbpIfController.getGreetingTextList((list: itemVenderProperty[]) => {\r\n // 削除ボタンの活性制御\r\n this._vue.$data.GreetingInfo.DelBtnEnable = (0 < list.length) ? true : false;\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * 操作パネル→あいさつ文アイテム編集ボタン押下メソッド(SP用)\r\n * */\r\n public btnClickEditGreetingItem(doAdd: boolean, event: JQueryEventObject): void {\r\n\r\n // タッチイベント制御(有効)\r\n this._edctrl.touchEventChange(true);\r\n\r\n this.setGreetingEditMode(doAdd);\r\n }\r\n\r\n // #endregion\r\n\r\n// #endregion\r\n\r\n// #region ■内部関数\r\n\r\n /**\r\n * あいさつ文編集モードへ画面項目設定(SP用)\r\n */\r\n private setGreetingEditMode(doAdd: boolean) {\r\n\r\n this._vue.$data.Header.Title = EditConst.TITLE_GREETING_EDIT;\r\n\r\n this._vue.$data.Show.ReturnHomeExBtn = false;\r\n this._vue.$data.Show.ReturnGreetingHomeBtn = true;\r\n this._vue.$data.Show.CommitNextHomeBtn = false;\r\n\r\n if (doAdd) {\r\n this._vue.$data.Show.GreetingUpdataBtn = false;\r\n // あいさつ文パネルの初期化\r\n this.initGreetingPanel();\r\n }\r\n else {\r\n this._vue.$data.Show.GreetingUpdataBtn = true;\r\n // 選択アイテムからのあいさつ文情報の復元\r\n const selectItem = this.sonbpIfController.getSelectItem();\r\n this.sonbpIfController.onChangeGreetingSelectItem(selectItem);\r\n }\r\n\r\n this._vue.$data.Show.FooterMenu = false;\r\n this._vue.$data.Show.EditArea = false;\r\n\r\n this._vue.$data.Show.GreetingPanel = true;\r\n\r\n }\r\n\r\n /**\r\n * あいさつ文パネルの初期化\r\n */\r\n private initGreetingPanel() {\r\n\r\n // パネルの入力情報を初期化\r\n\r\n // デフォルトフォント取得\r\n const defFont: GetEditInfo.GetEditInfoFontEntity = this._edctrl.getDefaultFont();\r\n\r\n // 共通\r\n this._vue.$data.GreetingInfo.Font = defFont.name;\r\n this._vue.$data.GreetingInfo.FontSample = defFont.url;\r\n this._vue.$data.GreetingInfo.OutlineFont = false;\r\n this._vue.$data.GreetingInfo.Text = \"\";\r\n this._vue.$data.SelectCharColor = this.editInfo.master.design.fontColor;\r\n this._vue.$data.SelectOutlineCharColor = this.editInfo.master.color[0].id;\r\n\r\n if (this.ExistsGreetingDesgin) {\r\n // デザイン定義ありの場合\r\n this._vue.$data.GreetingInfo.CharLayout = editUtil.directionToCharlayout(this.editInfo.master.design.greeting.direction);\r\n\r\n if (this.editInfo.master.design.greeting.direction === EditConst.DIRECTION_T) {\r\n // 縦書き指定\r\n this._vue.$data.GreetingInfo.AlignT = editUtil.alignToAlignDispVal(this._vue.$data.GreetingInfo.CharLayout, this.editInfo.master.design.greeting.align);\r\n this._vue.$data.GreetingInfo.AlignY = EditConst.ALIGN_Y_LEFT;\r\n this._vue.$data.GreetingInfo.ShowAlignY = false;\r\n this._vue.$data.GreetingInfo.FontSize = EditConst.FONT_SIZE_DEFAULT_T;\r\n }\r\n else {\r\n // 上記以外の場合\r\n this._vue.$data.GreetingInfo.AlignT = EditConst.ALIGN_T_TOP;\r\n this._vue.$data.GreetingInfo.AlignY = editUtil.alignToAlignDispVal(this._vue.$data.GreetingInfo.CharLayout, this.editInfo.master.design.greeting.align);\r\n this._vue.$data.GreetingInfo.ShowAlignY = true;\r\n this._vue.$data.GreetingInfo.FontSize = EditConst.FONT_SIZE_DEFAULT_Y;\r\n }\r\n }\r\n else {\r\n // 上記以外の場合\r\n this._vue.$data.GreetingInfo.ShowAlignY = false;\r\n this._vue.$data.GreetingInfo.CharLayout = EditConst.CHAR_LAYOUT_T;\r\n this._vue.$data.GreetingInfo.AlignT = EditConst.ALIGN_T_TOP;\r\n this._vue.$data.GreetingInfo.AlignY = EditConst.ALIGN_Y_LEFT;\r\n this._vue.$data.GreetingInfo.FontSize = EditConst.FONT_SIZE_DEFAULT_T;\r\n }\r\n\r\n }\r\n\r\n /**\r\n * あいさつ文デザイン定義の存在チェック\r\n */\r\n private get ExistsGreetingDesgin(): boolean {\r\n\r\n let exists = false;\r\n\r\n if (this.editInfo.master.design.greeting) {\r\n if (util.verify.isNotLengthZero(this.editInfo.master.design.greeting.direction)) {\r\n exists = true;\r\n }\r\n }\r\n\r\n return exists;\r\n }\r\n\r\n /**\r\n * あいさつ文生成処理\r\n *\r\n * @param requesNew :true:新規、false:更新\r\n * @param updateItemIdx :更新対象のアイテムインデックス\r\n * @param setOrder :入力値\r\n * @param extraFunc :正常終了後に実行する処理\r\n */\r\n private greetingSetFunc(requesNew: boolean, updateItemIdx: number, setOrder: greetingTranEntityEx, extraFunc: () => void): void {\r\n\r\n // 組版パラメータ生成\r\n let kumihanParam: kumihanGreetingRequestParam = new kumihanGreetingRequestParam();\r\n // 組版トークン\r\n kumihanParam.session = this.kumihanToken;\r\n // 組方向\r\n kumihanParam.hv = (setOrder.charLayout == EditConst.CHAR_LAYOUT_T) ? KUMIHAN_HV.VERTICAL : KUMIHAN_HV.HORIZONTAL;\r\n // 文字サイズ\r\n kumihanParam.msize = setOrder.size;\r\n // 原点\r\n kumihanParam.pivot = editUtil.align2Pivot(kumihanParam.hv, setOrder.alignDispVal);\r\n setOrder.align = kumihanParam.pivot + \"\";\r\n\r\n // 決め打ちフラグ→trueであれば用紙のど真ん中に配置する\r\n let hasNoDesignMst = false;\r\n\r\n // 幅 高さ\r\n if (this.ExistsGreetingDesgin) {\r\n if (0 < this.editInfo.master.design.greeting.width && 0 < this.editInfo.master.design.greeting.height) {\r\n // デザインマスタに値セットされている場合\r\n const masterHv: kumihanHv = editUtil.directionToHv(this.editInfo.master.design.greeting.direction);\r\n if (kumihanParam.hv === masterHv) {\r\n // 幅\r\n kumihanParam.width = this.editInfo.master.design.greeting.width;\r\n // 高さ\r\n kumihanParam.height = this.editInfo.master.design.greeting.height;\r\n }\r\n else {\r\n // 幅\r\n kumihanParam.width = this.editInfo.master.design.greeting.height;\r\n // 高さ\r\n kumihanParam.height = this.editInfo.master.design.greeting.width;\r\n }\r\n } else {\r\n hasNoDesignMst = true;\r\n }\r\n }\r\n else {\r\n hasNoDesignMst = true;\r\n }\r\n\r\n if (hasNoDesignMst) {\r\n // デザインマスタに値がセットされていない→決め打ち\r\n if (kumihanParam.hv == KUMIHAN_HV.VERTICAL) {\r\n kumihanParam.width = EditConst.GREETING_DEFAULT_WIDTH;\r\n kumihanParam.height = EditConst.GREETING_DEFAULT_HEIGHT;\r\n\r\n } else {\r\n kumihanParam.width = EditConst.GREETING_DEFAULT_HEIGHT;\r\n kumihanParam.height = EditConst.GREETING_DEFAULT_WIDTH;\r\n\r\n }\r\n }\r\n\r\n // 組版時は用紙いっぱいに\r\n var psize = this.sonbpIfController.SonbpIf.getPageSize();\r\n if (psize.h >= psize.w) {\r\n // 縦書き\r\n kumihanParam.widthKumi = this.editInfo.greetingDefSize.shortSide;\r\n kumihanParam.heightKumi = this.editInfo.greetingDefSize.longSide;\r\n } else {\r\n // 横書き\r\n kumihanParam.heightKumi = this.editInfo.greetingDefSize.shortSide;\r\n kumihanParam.widthKumi = this.editInfo.greetingDefSize.longSide;\r\n }\r\n\r\n // フォント\r\n kumihanParam.ftype = setOrder.fontMaster.id;\r\n\r\n // 文字色\r\n kumihanParam.color1 = setOrder.fontColorMaster.rgb;\r\n if (setOrder.outlineChar) {\r\n // フチ文字色\r\n kumihanParam.color2 = setOrder.outlineFontColorMaster.rgb;\r\n }\r\n // 文章\r\n kumihanParam.payload = setOrder.text.split('\\n');\r\n\r\n // 組版API呼び出し\r\n const kumihan: kumihanContoroller = new kumihanContoroller(this.editInfo.kumihanURL);\r\n kumihan.doKumihanGreeting(kumihanParam).then((result: kumihanResponseParam) => {\r\n // 結果判定\r\n if (result !== null) {\r\n this._vue.$data.EnableOnChangeForGreeting = false;\r\n\r\n if (requesNew) {\r\n Logger.debug(\"あいさつ文 新規追加\");\r\n let newIdx = 1;\r\n for (; newIdx <= this.GREETING_NUM_MAX; newIdx++) {\r\n if (!Enumerable.from(this.sonbpIfController.GreetingList).firstOrDefault(row => Number(row.id) == newIdx, null)) {\r\n break;\r\n }\r\n }\r\n setOrder.id = newIdx.toString();\r\n //console.log(\"newIdx\", newIdx);\r\n\r\n // 新規\r\n this.sonbpIfController.setGreetingText(\r\n setOrder.id,\r\n true,\r\n kumihanParam,\r\n result.json,\r\n hasNoDesignMst,\r\n () => {\r\n Logger.debug(\"あいさつ文 新規追加 正常終了\");\r\n // 正常終了の場合\r\n\r\n // 入力内容の保持\r\n this.sonbpIfController.GreetingList.push(setOrder);\r\n this._vue.$data.GreetingInfo.SampleSelNo = \"\";\r\n this._vue.$data.Show.OparatePalletCover4Top = false;\r\n this._vue.$data.GreetingInfo.UpdBtnEnable = true;\r\n this._vue.$data.GreetingInfo.DelBtnEnable = true;\r\n\r\n this._vue.$data.EnableOnChangeForGreeting = true;\r\n\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n\r\n if (extraFunc) {\r\n extraFunc();\r\n }\r\n },\r\n () => {\r\n // 上記以外の場合\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_CREATE_GREETING, dialogUtil.closeErrorDialog);\r\n this._vue.$data.EnableOnChangeForGreeting = true;\r\n }\r\n );\r\n }\r\n else {\r\n Logger.debug(\"あいさつ文 既存更新 [\" + updateItemIdx + \"]\");\r\n\r\n // 更新\r\n this.sonbpIfController.setGreetingText(\r\n this.sonbpIfController.GreetingList[updateItemIdx].id,\r\n false,\r\n kumihanParam,\r\n result.json,\r\n hasNoDesignMst,\r\n () => {\r\n Logger.debug(\"あいさつ文 既存更新 正常終了\");\r\n // 正常終了の場合\r\n setOrder.id = this.sonbpIfController.GreetingList[updateItemIdx].id;\r\n if (util.verify.isLengthZero(setOrder.greetingNo)) {\r\n setOrder.greetingNo = this.sonbpIfController.GreetingList[updateItemIdx].greetingNo;\r\n }\r\n this.sonbpIfController.GreetingList[updateItemIdx] = setOrder;\r\n this._vue.$data.GreetingInfo.SampleSelNo = \"\";\r\n\r\n this._vue.$data.EnableOnChangeForGreeting = true;\r\n\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n\r\n if (extraFunc) {\r\n extraFunc();\r\n }\r\n },\r\n () => {\r\n // 上記以外の場合\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.createErrorDialog(\r\n constDialogMessage.ERROR_EDIT_CREATE_GREETING,\r\n () => {\r\n util.dialogUtil.closeErrorDialog();\r\n this._vue.$data.EnableOnChangeForGreeting = true;\r\n });\r\n }\r\n );\r\n }\r\n }\r\n else {\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.createErrorDialog(\r\n constDialogMessage.ERROR_EDIT_CREATE_GREETING,\r\n () => {\r\n util.dialogUtil.closeErrorDialog();\r\n this._vue.$data.EnableOnChangeForGreeting = true;\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n /**\r\n * あいさつ文パネルの入力値を収集\r\n */\r\n private getGreetingOrder(): greetingTranEntityEx {\r\n\r\n let order: greetingTranEntityEx = new greetingTranEntityEx();\r\n\r\n // 入力値取得\r\n\r\n // 文字サイズ(有効値を格納するため、validGreetingOrder()側で格納します)\r\n //order.size = this._vue.$data.GreetingInfo.FontSize;\r\n\r\n // フォント\r\n let selFont: GetEditInfo.GetEditInfoFontEntity = util.relic.listFind(this.editInfo.master.font, (f: GetEditInfo.GetEditInfoFontEntity) => {\r\n return f.name === this._vue.$data.GreetingInfo.Font;\r\n });\r\n if (selFont !== undefined) {\r\n order.fontMaster = selFont;\r\n }\r\n\r\n // 文字色\r\n let selFontColor: GetEditInfo.GetEditInfoColorEntity = util.relic.listFind(this.editInfo.master.color, (c: GetEditInfo.GetEditInfoColorEntity) => {\r\n return c.id === this._vue.$data.SelectCharColor;\r\n });\r\n order.fontColorMaster = (selFontColor !== undefined) ? selFontColor : null;\r\n\r\n // 文字レイアウト\r\n order.charLayout = this._vue.$data.GreetingInfo.CharLayout\r\n\r\n // 行揃え\r\n if (order.charLayout === EditConst.CHAR_LAYOUT_Y) {\r\n order.alignDispVal = this._vue.$data.GreetingInfo.AlignY;\r\n order.direction = EditConst.DIRECTION_Y;\r\n }\r\n else {\r\n order.alignDispVal = this._vue.$data.GreetingInfo.AlignT;\r\n order.direction = EditConst.DIRECTION_T;\r\n }\r\n\r\n // フチ文字\r\n order.outlineChar = this._vue.$data.GreetingInfo.OutlineFont;\r\n if (order.outlineChar) {\r\n // フチ文字色\r\n let selOutlineFontColor: GetEditInfo.GetEditInfoColorEntity = util.relic.listFind(this.editInfo.master.color, (c: GetEditInfo.GetEditInfoColorEntity) => {\r\n return c.id === this._vue.$data.SelectOutlineCharColor;\r\n });\r\n order.outlineFontColorMaster = (selOutlineFontColor !== undefined) ? selOutlineFontColor : null;\r\n }\r\n\r\n // 文章\r\n order.text = this._vue.$data.GreetingInfo.Text;\r\n\r\n // 文書番号\r\n order.greetingNo = this._vue.$data.GreetingInfo.SampleSelNo;\r\n\r\n return order;\r\n }\r\n\r\n /**\r\n * あいさつ文の入力値チェック\r\n * @param order :チェック対象\r\n * @param msgList :エラーメッセージ\r\n */\r\n private validGreetingOrder(order: greetingTranEntityEx, msgList: string[]): boolean {\r\n\r\n var result: boolean = true;\r\n\r\n // 文字サイズ\r\n const fontSize: string = this._vue.$data.GreetingInfo.FontSize;\r\n if (util.verify.validFontSize(fontSize, msgList)) {\r\n order.size = Number(fontSize);\r\n }\r\n else {\r\n result = false;\r\n }\r\n\r\n // フォント\r\n // →未選択のないコンボなのでスキップ\r\n\r\n // 文字色\r\n if (order.fontColorMaster === null) {\r\n msgList.push(constDialogMessage.WARN_EDIT_INPUT_CHECK_CHARCOLOR);\r\n result = false;\r\n }\r\n\r\n // 文字レイアウト\r\n // →未選択のないコンボなのでスキップ\r\n\r\n // 行揃え\r\n // →未選択のないコンボなのでスキップ\r\n\r\n // フチ文字\r\n if (order.outlineChar && order.fontColorMaster === null) {\r\n msgList.push(constDialogMessage.WARN_EDIT_INPUT_CHECK_OUTCHARCOLOR);\r\n result = false;\r\n }\r\n\r\n // 文章\r\n if (order.text.length === 0) {\r\n msgList.push(constDialogMessage.WARN_EDIT_INPUT_CHECK_TEXT);\r\n result = false;\r\n }\r\n else {\r\n // 最大文字数チェック\r\n let aisatsuLenCheck = util.verify.validStringLen(order.text, EditConst.GREETING_MAXLEN);\r\n if (!aisatsuLenCheck) {\r\n msgList.push(constDialogMessage.WARN_EDIT_CHECK_GREETINGTEXT);\r\n result = false;\r\n }\r\n // 半角スペース、全角スペースのみの場合は組版させない。\r\n const texts = order.text.split(\"\\n\");\r\n if (!util.verify.validSpaceAll(texts)) {\r\n msgList.push(constDialogMessage.WARN_EDIT_INPUT_CHECK_TEXT);\r\n result = false;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n// #endregion\r\n\r\n}\r\n","import * as sonbpIfconst from \"../sonbpIf/base/constants\";\r\nimport * as idbEdit from \"../entity/idb/editInfo\";\r\nimport * as idbOrder from \"../entity/idb/orderInfo\";\r\nimport * as es6promise from \"es6-promise\";\r\nimport { BaseLogicClass } from \"./edit.baseLogic\";\r\nimport { common, constDialogMessage, dialogUtil } from \"../util\";\r\nimport { util, GetEditInfo } from \"..\";\r\nimport { itemVenderProperty, sonbpIFContoroller } from \"./edit.sonbp_if\";\r\nimport { Logger } from \"../util/logger\";\r\nimport { EditConst, EDIT_MODE_KIND } from \"./edit.const\";\r\nimport { greetingTranEntityEx, photoFrame, uploadPhoto } from \"./edit.entity\";\r\nimport { editStrage } from \"./edit.tool\";\r\nimport * as edLogic from \"./index\";\r\n\r\n\r\n/**\r\n * 保存関連の処理\r\n */\r\nexport class SaveLogicClass extends BaseLogicClass {\r\n\r\n// #region ■定数・変数\r\n\r\n /**\r\n * 状態保存(WebAPI)呼び出しURL\r\n */\r\n private readonly WEBAPI_URL_SAVESTATE: string = \"Edit/SaveState\";\r\n\r\n private _photoLogic: edLogic.UploadImageLogic.PhotoLogicClass;\r\n private _myStampLogic: edLogic.UploadImageLogic.MyStampLogicClass;\r\n private _tegakiStampLogic: edLogic.UploadImageLogic.TegakiStampLogicClass;\r\n\r\n// #endregion\r\n\r\n// #region ■起動\r\n\r\n /**\r\n * 初期化\r\n * @override\r\n */\r\n public init(v: Vue, sonbpIf: sonbpIFContoroller, usePcDesign: boolean, authToken: string) {\r\n super.init(v, sonbpIf, usePcDesign, authToken);\r\n\r\n this._photoLogic = (this._edctrl)._photoLogic;\r\n this._myStampLogic = (this._edctrl)._myStampLogic;\r\n this._tegakiStampLogic = (this._edctrl)._tegakiStampLogic;\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■イベント\r\n\r\n /**\r\n * 一時保存ボタン押下メソッド\r\n * */\r\n public btnClickSave(event: JQueryEventObject): void {\r\n\r\n this.saveReady(false, this.saveBody);\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■内部関数\r\n\r\n /**\r\n * 状態保存(WebAPI)呼び出し\r\n * @param authToken 認証トークン\r\n */\r\n public async saveState(authToken: string, senderInfo: GetEditInfo.GetEditInfoSenderEntity): es6promise.Promise {\r\n\r\n let result: boolean = true;\r\n\r\n // 入力パラメータ\r\n const param = {\r\n sender: senderInfo,\r\n token: authToken\r\n }\r\n await util.ajax.post(this.WEBAPI_URL_SAVESTATE, JSON.stringify(param)).then((resData: any) => {\r\n\r\n Logger.debug(\"WebAPI_GetEditInfo result[\" + JSON.stringify(result) + \"]\");\r\n\r\n }).catch(() => {\r\n result = false;\r\n });\r\n\r\n return result\r\n }\r\n\r\n /**\r\n * 保存処理(準備)\r\n * @param switchParam :処理切り替え用フラグ\r\n * @param nextFunc :保存処理(+α)本体\r\n */\r\n public async saveReady(switchParam: boolean, nextFunc: (that: any, setEditInfo: idbEdit.editInfo, senderInfo: GetEditInfo.GetEditInfoSenderEntity, switchParam: boolean) => void) {\r\n\r\n // ローディングダイアログ開始\r\n util.dialogUtil.showLoading();\r\n\r\n let that = this;\r\n\r\n // iDBから保存名取得\r\n //const editInfo: idbEdit.editInfo = await this.readiDBForEditInfo();\r\n const editInfo: idbEdit.editInfo = editStrage.readStorageForEditInfo();\r\n\r\n if (editInfo) {\r\n this._edctrl.editInfo.info.saveAs = editInfo.saveAs;\r\n }\r\n\r\n // 差出人情報収集\r\n let senderInfo: GetEditInfo.GetEditInfoSenderEntity = new GetEditInfo.GetEditInfoSenderEntity();\r\n {\r\n senderInfo = this.sonbpIfController.SenderInfo.sender;\r\n }\r\n\r\n let setEditInfo: idbEdit.editInfo = new idbEdit.editInfo();\r\n setEditInfo.retailerId = this._edctrl.RetailerConfig.id;\r\n setEditInfo.tempId = this._edctrl.editInfo.tempId;\r\n setEditInfo.photoList = [];\r\n setEditInfo.photoUseList = [];\r\n setEditInfo.greetingInfo = [];\r\n setEditInfo.stampInfo = [];\r\n setEditInfo.myStampList = [];\r\n setEditInfo.myStampUseList = [];\r\n setEditInfo.fontgenicList = [];\r\n setEditInfo.fontgenicUseList = [];\r\n setEditInfo.printType = this._vue.$data.FinishSelect.isGinen ? EditConst.PRINT_TYPE_GINEN : EditConst.PRINT_TYPE_PRINT;\r\n setEditInfo.saveAs = this._edctrl.editInfo.info.saveAs;\r\n setEditInfo.dsnNo = this._edctrl.editInfo.master.design.dsnNo;\r\n\r\n // 写真情報\r\n this._photoLogic.setSaveUploadInfo(this._photoLogic._uploadImageList, setEditInfo.photoList);\r\n // Myステッカー情報\r\n this._myStampLogic.setSaveUploadInfo(this._myStampLogic._uploadImageList, setEditInfo.myStampList);\r\n // 手書きスタンプ情報\r\n this._tegakiStampLogic.setSaveUploadInfo(this._tegakiStampLogic._uploadImageList, setEditInfo.fontgenicList);\r\n\r\n // sonbpから配置アイテムの情報収集\r\n this.sonbpIfController.getItems([],\r\n (list: itemVenderProperty[]) => {\r\n\r\n let existsSender: boolean = false;\r\n\r\n let createVpFunc = (list: itemVenderProperty): idbEdit.sonbpVp => {\r\n let sonbpVp = new idbEdit.sonbpVp();\r\n sonbpVp.idx = Number(list.idx);\r\n sonbpVp.x = list.x\r\n sonbpVp.y = list.y;\r\n sonbpVp.width = list.w\r\n sonbpVp.height = list.h\r\n sonbpVp.angle = list.r;\r\n return sonbpVp;\r\n };\r\n\r\n for (let i: number = 0; i < list.length; i++) {\r\n\r\n if (list[i].item_type == sonbpIfconst.ITYPE_PHOTO_BOX) {\r\n // 画像枠の場合\r\n const selPf: photoFrame = util.relic.listFind(that.sonbpIfController.PhotoFrameList, (pf: photoFrame) => {\r\n if (list[i].file_id === this.sonbpIfController.EMPTY_PHOTOBOX_FILE_ID) return false;\r\n return pf.idx === list[i].idx;\r\n });\r\n if (selPf !== undefined) {\r\n let setPhotoUse: idbEdit.photoUse = new idbEdit.photoUse();\r\n\r\n setPhotoUse.fileId = selPf.fileId;\r\n setPhotoUse.useI2 = selPf.useI2;\r\n setPhotoUse.brightId = selPf.brightId;\r\n\r\n setPhotoUse.sonbpVp = createVpFunc(list[i]);\r\n\r\n setEditInfo.photoUseList.push(setPhotoUse);\r\n\r\n //debug\r\n console.debug(\"saveReady-photoUseList push.\", setPhotoUse);\r\n }\r\n }\r\n else if (list[i].item_type == sonbpIfconst.ITYPE_GREETING_TXT) {\r\n // あいさつ文の場合\r\n const selGreeting: greetingTranEntityEx = util.relic.listFind(that.sonbpIfController.GreetingList, (g: greetingTranEntityEx) => {\r\n return g.id === list[i].idx;\r\n });\r\n if (selGreeting !== undefined) {\r\n\r\n let setGreeting: idbEdit.greetingInfo = new idbEdit.greetingInfo();\r\n setGreeting.id = Number(selGreeting.id);\r\n setGreeting.greetingNo = selGreeting.greetingNo;\r\n setGreeting.fontId = selGreeting.fontMaster.id;\r\n setGreeting.size = selGreeting.size;\r\n setGreeting.colorId = selGreeting.fontColorMaster.id;\r\n if (selGreeting.outlineChar) {\r\n setGreeting.outlineColor = selGreeting.outlineFontColorMaster.id;\r\n }\r\n setGreeting.align = selGreeting.align;\r\n setGreeting.direction = selGreeting.direction;\r\n setGreeting.text = selGreeting.text;\r\n\r\n setGreeting.sonbpVp = createVpFunc(list[i]);\r\n\r\n setEditInfo.greetingInfo.push(setGreeting);\r\n }\r\n }\r\n else if (list[i].item_type == sonbpIfconst.ITYPE_SENDER_TXT) {\r\n // 差出人の場合\r\n senderInfo.x = list[i].x;\r\n senderInfo.y = list[i].y;\r\n senderInfo.rotate = list[i].r;\r\n\r\n existsSender = true;\r\n }\r\n else if (list[i].item_type == sonbpIfconst.ITYPE_STAMP_IMG) {\r\n // スタンプの場合\r\n let setStamp = new idbEdit.stampInfo();\r\n\r\n setStamp.fileId = list[i].file_id;\r\n setStamp.sonbpVp = createVpFunc(list[i]);\r\n\r\n setEditInfo.stampInfo.push(setStamp);\r\n } else if (list[i].item_type == sonbpIfconst.ITYPE_MYSTAMP_IMG) {\r\n // Myステッカーの場合\r\n let setMyStamp = new idbEdit.uploadStampUseInfo();\r\n\r\n setMyStamp.fileId = list[i].file_id;\r\n setMyStamp.sonbpVp = createVpFunc(list[i]);\r\n\r\n setEditInfo.myStampUseList.push(setMyStamp);\r\n }\r\n else if (list[i].item_type == sonbpIfconst.ITYPE_FONTGENIC_IMG) {\r\n // 手書きスタンプの場合\r\n let setStamp = new idbEdit.uploadStampUseInfo();\r\n\r\n let fileIdParts = list[i].file_id.split('@');\r\n setStamp.fileId = fileIdParts[0];\r\n setStamp.colorId = fileIdParts[1];\r\n setStamp.sonbpVp = createVpFunc(list[i]);\r\n\r\n setEditInfo.fontgenicUseList.push(setStamp);\r\n }\r\n }\r\n\r\n if (!existsSender) {\r\n // 差出人情報オブジェクトが存在しない場合は、空保存にする\r\n senderInfo = new GetEditInfo.GetEditInfoSenderEntity();\r\n }\r\n\r\n // 登録処理へ\r\n nextFunc(that, setEditInfo, senderInfo, switchParam);\r\n },\r\n () => {\r\n });\r\n }\r\n\r\n /**\r\n * 保存処理(本体):次へ or 一時保存用\r\n * @param that :this\r\n * @param setEditInfo :iDBへの保存内容\r\n * @param senderInfo :サーバへの保存内容\r\n * @param switchParam :true:次ページへ遷移、false:一時保存遷移\r\n */\r\n public async saveBody(that: SaveLogicClass, setEditInfo: idbEdit.editInfo, senderInfo: GetEditInfo.GetEditInfoSenderEntity, switchParam: boolean) {\r\n\r\n Logger.debug(\"保存処理 indexedDBに保存 開始\");\r\n\r\n // indexedDBに保存\r\n //const result: boolean = await that.writeiDB(setEditInfo);\r\n const result: boolean = editStrage.writeStorage(that._edctrl.editInfo, setEditInfo);\r\n\r\n // 結果判定\r\n if (result) {\r\n Logger.debug(\"保存処理 sonbp PDF保存 開始\");\r\n\r\n // sonbp PDF保存\r\n await that.sonbpIfController.save(\r\n () => {\r\n // 正常終了の場合\r\n Logger.debug(\"現在の状態を保存するWebAPI呼び出し 開始\", senderInfo);\r\n\r\n // 現在の状態を保存するWebAPI呼び出し\r\n that.saveState(that._authToken, senderInfo).then((result: boolean) => {\r\n if (result) {\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n // 処理分岐\r\n if (switchParam) {\r\n // 画面遷時は、sessionStorageに書き込まない\r\n that._edctrl.doUnloadEventFunc = false;\r\n\r\n Logger.debug(\"プレビュー画面へ遷移 開始\");\r\n // プレビュー画面へ遷移\r\n util.ui.postRedirect(EditConst.NEXTPAGE_NAME);\r\n }\r\n else {\r\n Logger.debug(\"一時保存処理 開始\");\r\n\r\n // orderInfoは空オブジェクトで渡す \r\n const orderInfo: idbOrder.orderInfo = new idbOrder.orderInfo();\r\n\r\n // 一時保存実行\r\n util.common.SaveData(that._authToken, setEditInfo, orderInfo).then((value: any) => {\r\n Logger.debug(\"一時保存処理 正常終了\", value);\r\n });\r\n }\r\n }\r\n else {\r\n throw new Error(\"saveState return false.\");\r\n }\r\n }).catch((err: any) => {\r\n Logger.error(\"状態保存処理 エラー終了\", err);\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_SAVE_DATA, util.dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n },\r\n () => {\r\n // 異常終了の場合\r\n Logger.error(\"保存処理 sonbp PDF保存 エラー終了\");\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_SAVE_DATA, util.dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n }\r\n else {\r\n Logger.error(\"保存処理 indexedDBに保存 失敗\");\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_SAVE_DATA, util.dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n }\r\n }\r\n\r\n /**\r\n * 戻るボタンのリンクを取得する。\r\n * callbackURLがあればそれに、無ければリテーラconf\r\n * */\r\n private getEditReturnURL(): string {\r\n const callBack = decodeURIComponent($('#CallBackURL').val());\r\n if (!callBack) {\r\n return this._edctrl.RetailerConfig.editReturnBtn;\r\n }\r\n return callBack;\r\n }\r\n\r\n /**\r\n * 保存処理(本体):デザイン選択画面へ戻る用\r\n * @param that :this\r\n * @param setEditInfo :iDBへの保存内容\r\n * @param senderInfo :サーバへの保存内容\r\n * @param switchParam :確認ダイアログ表示切り替えフラグ(true:表示、false:非表示)\r\n */\r\n public async saveBodyForReturnFlow(that: SaveLogicClass, setEditInfo: idbEdit.editInfo, senderInfo: GetEditInfo.GetEditInfoSenderEntity, switchParam: boolean) {\r\n\r\n Logger.debug(\"保存処理 indexedDBに保存 開始\");\r\n\r\n // indexedDBに保存\r\n //const result: boolean = await that.writeiDB(setEditInfo);\r\n const result: boolean = editStrage.writeStorage(that._edctrl.editInfo, setEditInfo);\r\n // 結果判定\r\n if (result) {\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n\r\n Logger.debug(\"離脱時のダイアログ表示\");\r\n // 離脱時のダイアログ表示\r\n const saveName: string = common.GetSaveAs();\r\n\r\n // ダイアログのモード\r\n const isEdit = saveName ? true : false;\r\n const token = that._authToken;\r\n\r\n // デザイン選択ページに移動処理\r\n const goDesignPage = function () {\r\n\r\n // 画面遷時は、sessionStorageに書き込まない\r\n that._edctrl.doUnloadEventFunc = false;\r\n\r\n dialogUtil.closeCautionSelectSaveMethodDialog();\r\n window.location.href = that.getEditReturnURL();\r\n }\r\n\r\n // 上書き時の処理\r\n const overRideFunc = function () {\r\n dialogUtil.closeCautionSelectSaveMethodDialog();\r\n\r\n dialogUtil.showLoading();\r\n that.sonbpIfController.save(\r\n () => {\r\n common.DoSaveOverRide(token, saveName, goDesignPage);\r\n },\r\n () => {\r\n // 異常終了の場合\r\n Logger.error(\"保存処理 sonbp PDF保存 エラー終了\");\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_SAVE_DATA, util.dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n }\r\n );\r\n }\r\n\r\n // 名前を付けて保存の処理\r\n const saveFunc = function () {\r\n dialogUtil.closeCautionSelectSaveMethodDialog();\r\n\r\n dialogUtil.showLoading();\r\n that.sonbpIfController.save(\r\n () => {\r\n common.DoSave(token, goDesignPage);\r\n },\r\n () => {\r\n // 異常終了の場合\r\n Logger.error(\"保存処理 sonbp PDF保存 エラー終了\");\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_SAVE_DATA, util.dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n }\r\n );\r\n }\r\n\r\n // 表示制御\r\n if (switchParam) {\r\n // ログインチェック\r\n common.LoginCheck(token).then((clientId: string) => {\r\n\r\n Logger.debug(\"ログインチェック OK [\" + clientId + \"]\");\r\n\r\n if (clientId) {\r\n // ログイン状態\r\n dialogUtil.createCautionSelectSaveMethodDialog(isEdit, true, overRideFunc, saveFunc, goDesignPage);\r\n } else {\r\n // 上記以外の場合\r\n dialogUtil.createCautionSelectSaveMethodDialog(isEdit, false, overRideFunc, saveFunc, goDesignPage);\r\n }\r\n }).catch(() => {\r\n Logger.debug(\"ログインチェック NG\");\r\n // ログインチェック失敗時\r\n dialogUtil.createCautionSelectSaveMethodDialog(isEdit, false, overRideFunc, saveFunc, goDesignPage);\r\n });\r\n }\r\n else {\r\n // 表示しないで遷移\r\n goDesignPage();\r\n }\r\n }\r\n else {\r\n Logger.error(\"保存処理 indexedDBに保存 失敗\");\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_SAVE_DATA, util.dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n }\r\n }\r\n\r\n// #endregion\r\n\r\n}\r\n","import { GetEditInfo} from \"..\";\r\nimport { dialogUtil, ui } from \"../util\";\r\nimport Vue from \"vue\";\r\n\r\ndeclare var document:any;\r\n\r\n/**\r\n * 外字入力ダイアログ\r\n * 画像アップロード、画像配置の処理を提供するクラス\r\n */\r\nexport class GaijiLogic {\r\n\r\n// #region ■定数\r\n\t// Vue.jsオブジェクト\r\n\tprotected _vue: Vue;\r\n// #endregion\r\n\r\n// #region ■プロパティ\r\n\t// 挿入対象のテキストボックス\r\n\tpublic TargetDivId: string; \r\n// #endregion\r\n\r\n// #region ■メンバー変数\r\n\t// 外字の一覧データ\r\n\tprivate _gaijiList: GetEditInfo.GetEditInfoGaijiEntity[];\r\n\t// 外字入力を許可する対象\r\n\tprivate _allowGaijiDiv: string[] = [\"address1\", \"address2\", \"address3\", \"companyInput\", \"departmentInput\", \"positionInput\", \"lastNameKanaInput\", \"lastNameInput1\", \"firstNameKana1Input\", \"firstName1Input\", \"etc1Input\", \"firstNameKana2Input\", \"firstName2Input\", \"etc2Input\", \"firstNameKana3Input\", \"firstName3Input\", \"etc3Input\", \"firstNameKana4Input\", \"firstName4Input\", \"etc4Input\", \"firstNameKana5Input\", \"firstName5Input\", \"etc5Input\", \"firstNameKana6Input\", \"firstName6Input\", \"etc6Input\", \"senderInput_phrase1\"];\r\n// #endregion\r\n\r\n// #region ■公開メソッド\r\n\r\n\tpublic Init(v: Vue): void {\r\n\t\tthis._vue = v;\r\n\r\n\t\tthis.scrollWindowInit();\r\n\t\tthis.resizeWindowInit();\r\n }\r\n\r\n /**\r\n * 外字をセットする。\r\n * @param list\r\n */\r\n public SetGaijiList(list:GetEditInfo.GetEditInfoGaijiEntity[]): void {\r\n\t\tthis._gaijiList = list;\r\n }\r\n\r\n\t/**\r\n\t * 外字ボタンを活性化するかしないかの制御\r\n\t * @param id\r\n\t */\r\n\tpublic ShowButton(id: string, gaijiFlg: boolean): boolean {\r\n\t\t//console.log('ShowButton;', id);\r\n\t\tlet isTarget = this._allowGaijiDiv.find(x => x == id);\r\n\t\tif (isTarget && gaijiFlg) {\r\n\t\t\t$(\"#gaijiInputLbl\").removeClass(\"is-disabled\");\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\t$(\"#gaijiInputLbl\").addClass(\"is-disabled\");\r\n\t\t\treturn false;\r\n }\r\n\r\n }\r\n\r\n\t/**\r\n\t * 外字ボタンを非活性にする。\r\n\t * */\r\n\tpublic DisplayNoneGaijiButton(): void {\r\n\t\t$(\"#gaijiInputLbl\").addClass(\"is-disabled\");\r\n }\r\n\r\n\t/**\r\n\t * 外字ボタンを表示する。\r\n\t * */\r\n\tpublic DisplayOnGaijiButton(): void {\r\n\t\t$(\"#gaijiInputLbl\").css('display', '');\r\n\t}\r\n\r\n /**\r\n * 外字リストを表示する。\r\n * @param targerId\r\n */\r\n\tpublic ShowGaijiList(): void {\r\n\r\n\t\t//console.log('target', this.targetDivId);\r\n\r\n\t\tdialogUtil.showLoading();\r\n\r\n\t\t// 少し待つことでloadingが表示される。\r\n\t\tsetTimeout(() => {\r\n\t\t\tsetGaijiFunc();\r\n\t\t}, 50);\r\n\r\n\t\tlet setGaijiFunc = () => {\r\n\t\t\t//外字リスト作成\r\n\t\t\tif ($('.gaijiRow').length <= 0) {\r\n\r\n\t\t\t\tvar list = '';\r\n\t\t\t\tthis._gaijiList.forEach((val, idx) => {\r\n\t\t\t\t\tlist += '
  • ';\r\n\t\t\t\t\tlist += '
      ';\r\n\t\t\t\t\tlist += '
    • ' + val.yomi + '
    • ';\r\n\t\t\t\t\tlist += '
    • ' + val.character + '
    • ';\r\n\t\t\t\t\tlist += '
    ';\r\n\t\t\t\t\tlist += '
  • ';\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlist += '
  • ';\r\n\t\t\t\tlist += '
      ';\r\n\t\t\t\tlist += '
    • hoge
    • ';\r\n\t\t\t\tlist += '
    • hoge
    • ';\r\n\t\t\t\tlist += '
    ';\r\n\t\t\t\tlist += '
  • ';\r\n\r\n\t\t\t\t// スクロールバー更新\r\n\t\t\t\t$('#gaijiSelectListTable').html(list);\r\n\r\n\t\t\t\t//外字選択完了時のイベント紐付け\r\n\t\t\t\tvar that = this;\r\n\t\t\t\t$(\".gaijiRow\").click(function (event) {\r\n\t\t\t\t\tlet moji = $(this).find('.moji').text();\r\n\t\t\t\t\tthat.SetGaiji(moji);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet ISPC = ($('#isPC').val() + \"\").toLocaleLowerCase() == 'true' ? true : false;\r\n\t\t\t\tif (ISPC) {\r\n\t\t\t\t\t// マウスオーバー時は拡大表示\r\n\t\t\t\t\t$(\".gaijiRow\").hover(function () {\r\n\t\t\t\t\t\tvar valLeft = $(this).position().left;\r\n\t\t\t\t\t\tvar valTop = $(this).position().top;\r\n\t\t\t\t\t\tvar valWidth = $(this).outerWidth(true);\r\n\t\t\t\t\t\tvar valHeight = $(this).outerHeight(true);\r\n\t\t\t\t\t\tlet parent = $(\"#gaijiSelectListTable\").height();\r\n\r\n\t\t\t\t\t\t// ポップアップ\r\n\t\t\t\t\t\t$(\".gaijiRowPop\").css('left', valLeft);\r\n\t\t\t\t\t\t$(\".gaijiRowPop\").css('top', valTop);\r\n\t\t\t\t\t\t$(\".gaijiRowPop .yomi\").text($(this).find('.yomi').text());\r\n\t\t\t\t\t\t$(\".gaijiRowPop .moji\").text($(this).find('.moji').text());\r\n\r\n\t\t\t\t\t\tlet idx = $(\"li.gaijiRow\").index(this);\r\n\r\n\t\t\t\t\t\tlet row = idx % 12;\r\n\t\t\t\t\t\tlet column = Math.floor(idx / 12);\r\n\r\n\t\t\t\t\t\t// エリアからはみださないように位置調整(要調整)\r\n\t\t\t\t\t\t$(\".gaijiRowPop\").css('top', (column * valHeight));\r\n\t\t\t\t\t\tif (valLeft <= 70) {\r\n\t\t\t\t\t\t\t// 左はみだし\r\n\t\t\t\t\t\t\t$(\".gaijiRowPop\").css('left', 28);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (valLeft >= 800) {\r\n\t\t\t\t\t\t\t// 右はみだし\r\n\t\t\t\t\t\t\t$(\".gaijiRowPop\").css('left', valLeft - 4);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (valTop <= 100) {\r\n\t\t\t\t\t\t\t// 上はみだし\r\n\t\t\t\t\t\t\tlet currentTop = parseInt($(\".gaijiRowPop\").css('top'));\r\n\t\t\t\t\t\t\tlet calcTop = currentTop + 35;\r\n\t\t\t\t\t\t\t$(\".gaijiRowPop\").css('top', calcTop);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (valTop >= 490) {\r\n\t\t\t\t\t\t\t$(\".gaijiRowPop\").css('bottom', (column * valHeight) + valHeight);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// PC版headerを非表示\r\n\t\t\t\t\t\tif (ui.usePcDesign()) $('header').addClass('is-hidden');\r\n\r\n\t\t\t\t\t\t$(\".gaijiRowPop\").css('display', 'block');\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t$(\".gaijiRowPop\").css('display', 'none');\r\n\r\n\t\t\t//外字選択完了時のイベントと入力欄紐付け\r\n\t\t\t$('#popGaijiCancel').unbind('click');\r\n\t\t\t$('#popGaijiCancel').bind('click', () => {\r\n\t\t\t\tthis.closeGaijiDialog();\r\n\t\t\t});\r\n\t\t\tdialogUtil.closeLoading();\r\n\t\t\t$('body').addClass('anmDialog');\r\n\t\t\t$('.gaijiSelect').addClass('c-modalDialog__panel--hasClose');\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\t/**\r\n\t * 外字を使用しているかチェックする。\r\n\t * */\r\n\tpublic IsUseGaiji(): boolean {\r\n\t\tdialogUtil.showLoading();\r\n\t\tlet rt = false;\r\n\t\trt = this._allowGaijiDiv.some((x) => {\r\n\t\t\tlet txt = $(\"#\" + x).val() + \"\";\r\n\t\t\tif (txt) {\r\n\t\t\t\tfor (let i = 0; i < txt.length; i++) {\r\n\t\t\t\t\tlet c = txt.charCodeAt(i);\r\n\t\t\t\t\t// 私用領域内か?\r\n\t\t\t\t\tlet mySpaceStart = parseInt('E000', 16); //57344\r\n\t\t\t\t\tlet mySpaceEnd = parseInt('F8FF', 16); //63743\r\n\t\t\t\t\tif (c >= mySpaceStart && c <= mySpaceEnd) {\r\n\t\t\t\t\t\treturn true;\r\n }\r\n }\r\n\t\t\t}\r\n\t\t})\r\n\t\tdialogUtil.closeLoading();\r\n\t\treturn rt;\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■イベント\r\n\r\n\t/**\r\n\t * 外字入力の表示ダイアログ\r\n\t * @param event\r\n\t */\r\n\tpublic gaijiInput(event: JQueryEventObject): void {\r\n\t\tif (this.TargetDivId) {\r\n\t\t\t// 外字挿入対象があれば、外字リストを表示する。\r\n\t\t\tthis.ShowGaijiList();\r\n\t\t}\r\n\t}\r\n\t/**\r\n\t * 外字ボタンの表示制御\r\n\t * @param event\r\n\t */\r\n\tpublic gaijiButtonEnable(event: JQueryEventObject, gaijiFlg: boolean): void {\r\n\r\n\t\t// 挿入対象の初期化\r\n\t\tthis.TargetDivId = \"\";\r\n\r\n\t\t// idチェック\r\n\t\tif (!event.target.id)\r\n\t\t\treturn;\r\n\r\n\t\tlet targetIdName = event.target.id;\r\n\t\t// console.log('id', targetIdName);\r\n\r\n\t\tlet showFlg = this.ShowButton(targetIdName, gaijiFlg);\r\n\t\tif (showFlg) {\r\n\t\t\t// 挿入対象を覚えておく。\r\n\t\t\tthis.TargetDivId = targetIdName;\r\n\r\n\t\t\t// 該当の情報を取得して、移動\r\n\t\t\tthis.moveGaijiShortCut(targetIdName);\r\n\t\t}\r\n\t\tif (!ui.usePcDesign()) {\r\n\t\t\tthis._vue.$data.Show.GaijiShortCutBtn = showFlg && this._vue.$data.Show.GaijiShortCutBtn;\r\n\t\t\tthis._vue.$data.FocusGaijiShortCut = showFlg ? targetIdName: '';\r\n }\r\n\t}\r\n\t/**\r\n\t * 外字ボタンのショートカットの表示制御\r\n\t * @param targetIdName\r\n\t */\r\n\tprivate moveGaijiShortCut(targetIdName: string): void {\r\n\t\tif (ui.usePcDesign()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// フォーカスの位置情報の取得\r\n\t\tconst gaijiShortCutSize = (this._vue.$refs[targetIdName])?.getBoundingClientRect();\r\n\r\n\t\t// ショートカット情報\r\n\t\t// 表示前に値を取得する場合は、各種値が0となるため初期値を入れておく必要あり\r\n\t\tconst shortCutWidth = this._vue.$data.Show.GaijiShortCutBtn ?\r\n\t\t\t(this._vue.$refs.gaijiShortCut).getBoundingClientRect().width : 25;\r\n\t\tconst shortCutHeight = this._vue.$data.Show.GaijiShortCutBtn ?\r\n\t\t\t(this._vue.$refs.gaijiShortCut).getBoundingClientRect().height : 25;\r\n\r\n\t\tconst topPos = window.pageYOffset + gaijiShortCutSize?.bottom + 1;\r\n\r\n\t\t// 移動\r\n\t\tthis._vue.$data.ReplaceGaijiShortCut.top = topPos + \"px\";\r\n\t\tthis._vue.$data.ReplaceGaijiShortCut.left = (gaijiShortCutSize?.right - shortCutWidth) + \"px\";\r\n\r\n\t\t// ショートカットの位置がヘッダーorフッターと被った場合は非表示にする\r\n\t\tif (topPos < 50 ||\r\n\t\t\t(topPos + shortCutHeight) > window.pageYOffset + (this._vue.$refs.senderMenuArea)?.getBoundingClientRect().top) {\r\n\t\t\tthis._vue.$data.Show.GaijiShortCutBtn = false;\r\n\t\t} else {\r\n\t\t\tthis._vue.$data.Show.GaijiShortCutBtn = true;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate scrollWindowInit(): void {\r\n\t\t$('#senderEditPage').on('scroll', () => {\r\n\t\t\t// PCの場合は抜ける\r\n\t\t\tif (ui.usePcDesign()) return;\r\n\r\n\t\t\tif (this.TargetDivId?.length == 0 && !this._vue.$data.Show.GaijiShortCutBtn) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.moveGaijiShortCut(this._vue.$data.FocusGaijiShortCut);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate resizeWindowInit(): void {\r\n\t\tvisualViewport.addEventListener('resize', () => {\r\n\t\t\t// PCの場合は抜ける\r\n\t\t\tif (ui.usePcDesign()) return;\r\n\r\n\t\t\tif (this.TargetDivId?.length == 0 && !this._vue.$data.Show.GaijiShortCutBtn) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// フォーカスしようとしている要素と現在フォーカスしている要素が異なるときは\r\n\t\t\t// 現在を優先する\r\n\t\t\t// 外字のショートカットボタンの非表示\r\n\t\t\t// フッターの外字ボタンの無効化\r\n\t\t\tif ($(':focus')[0]?.id != this.TargetDivId) {\r\n\t\t\t\tthis._vue.$data.Show.GaijiShortCutBtn = false;\r\n\t\t\t\tthis.DisplayNoneGaijiButton();\r\n\t\t\t\treturn;\r\n\t\t\t};\r\n\r\n\t\t\tthis.moveGaijiShortCut(this.TargetDivId);\r\n\r\n\t\t\tif (!this._vue.$data.FocusGaijiShortCut) {\r\n\t\t\t\tthis._vue.$data.Show.GaijiShortCutBtn = false;\r\n\t\t\t\treturn;\r\n\t\t\t};\r\n\t\t\t(this._vue.$refs[this._vue.$data.FocusGaijiShortCut]).focus();\r\n });\r\n }\r\n\r\n// #endregion\r\n\r\n\t/**\r\n\t * ダイアログを閉じる。\r\n\t * */\r\n\tprivate closeGaijiDialog():void { \r\n\t\t$('body').removeClass('anmDialog');\r\n\t\t$('.gaijiSelect').removeClass('c-modalDialog__panel--hasClose');\r\n\t\tif (this._vue.$data.FocusGaijiShortCut) {\r\n\t\t\t(this._vue.$refs[this._vue.$data.FocusGaijiShortCut]).focus();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * 対象テキストボックスに外字を挿入する。\r\n\t * */\r\n\tprivate SetGaiji(moji:string): void {\r\n\t\tlet id = \"#\" + this.TargetDivId;\r\n\t\tposw_InsertAtCaret(id, moji);\r\n\t\tthis.closeGaijiDialog();\r\n }\r\n\r\n}\r\n//テキストボックスのキャレット位置に文字を挿入する\r\nfunction posw_InsertAtCaret(target, str) {\r\n\tvar obj = $(target);\r\n\tobj.focus();\r\n\tif (navigator.userAgent.match(/MSIE/)) {\r\n\t\tvar r = document.selection.createRange();\r\n\t\tr.text = str;\r\n\t\tr.select();\r\n\t} else {\r\n\t\tvar s = obj.val();\r\n\t\tvar aaa = obj.get(0) as any;\r\n\t\tvar p = aaa.selectionStart;\r\n\t\tvar np = p + str.length;\r\n\t\tobj.val(s.substr(0, p) + str + s.substr(p));\r\n\t\taaa.setSelectionRange(np, np);\r\n\t}\r\n\t// そのままだとvueへのバインドが発火しないので、ここでイベントを強制発火\r\n\tobj[0].dispatchEvent(new CustomEvent('input'));\r\n}","\r\nimport Vue from \"vue\";\r\nimport { baseVueController } from \"./baseVueController\";\r\nimport { ajax, dialogUtil, idb, lstorage, ui } from \"./util\";\r\nimport * as es6promise from \"es6-promise\";\r\nimport { editInfo } from \"./entity/idb/editInfo\";\r\nimport { masterInfo } from \"./entity/idb/masterInfo\";\r\nimport { orderInfo } from \"./entity/idb/orderInfo\";\r\nimport { constDialogMessage } from \"./util/const\";\r\nimport { AtenaParamEntity } from \"./entity/GetAtenaParamEntity\";\r\nimport { common } from \"./util/common\";\r\nimport { Logger } from \"./util/logger\";\r\nimport { MultiTab } from \"./util/multitab\";\r\nimport { util } from \".\";\r\nimport { SSO } from \"./util/sso\";\r\nimport { AdjustRecord } from \"./util/adjustRecord\";\r\n\r\nvar that: any; // = this\r\n\r\n// gigya\r\ndeclare var gigya: any;\r\n\r\n//------------------------------------------------------------------------------\r\n// クラス\r\n//------------------------------------------------------------------------------\r\n/**\r\n * 宛名選択画面コントローラクラス\r\n * */\r\nexport class atenaSelectController extends baseVueController {\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// 定数\r\n\t//--------------------------------------------------------------------------\r\n\tprivate readonly ELEMENT_NAME: string = \"#atenaSelectController\";\r\n\r\n\t// idb関連\r\n\tprivate readonly EDIT_INFO_STORENAME: string = \"editInfo\";\r\n\tprivate readonly OREDER_INFO_STORENAME: string = \"orderInfo\";\r\n\tprivate readonly MASTER_INFO_STORENAME: string = \"masterInfo\";\r\n\r\n\t// WebAPIのエンドポイント定義\r\n\tprivate readonly WebAPI_OcapiLogin = \"Login/Ocapi/\";\r\n\tprivate readonly WebAPI_GIGYALogin = \"Login/GIGYA/\";\r\n\tprivate readonly WebAPI_GetAtenaParam: string = \"Extr/GetAtenaParam\";\r\n\t//private readonly WebAPI_AddCart: string = \"Extr/AddCart\"; // 次へ(カート連携)\r\n\r\n\t// 画面URL\r\n\tprivate readonly ViewURL_HagakiSelect: string = \"HagakiSelect\"; // 戻る\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// 変数\r\n\t//--------------------------------------------------------------------------\r\n\t// idb\r\n\tprivate _editInfo: editInfo;\r\n\tprivate _orderInfo: orderInfo;\r\n\tprivate _masterInfo: masterInfo;\r\n\r\n\t/**\r\n\t * ロゴ1 URL\r\n\t */\r\n\tprivate _logo1Url: string;\r\n\t/**\r\n\t * ロゴ2 URL\r\n\t */\r\n\tprivate _logo2Url: string;\r\n\t/**\r\n\t * 説明書き\r\n\t */\r\n\tprivate _description: string;\r\n\t/**\r\n\t * バーコードを記すか?\r\n\t */\r\n\tprivate _hasBarcode: boolean;\r\n\t/**\r\n\t * 差出人を記すか?\r\n\t */\r\n\tprivate _hasSender: boolean;\r\n\t/**\r\n\t * バーコード説明書き\r\n\t */\r\n\tprivate _barcodeDescription: string;\r\n\t/**\r\n\t * 宛名単価\r\n\t */\r\n\tprivate _unitPrice: string;\r\n\r\n\t// 宛名印刷するか?\r\n\tpublic _doPrintAtena: boolean = false;\r\n\r\n\t// token\r\n\tprivate _token: string;\r\n\r\n\t// GIGYAコールバック分岐用 true:一時保存、false:宛名に遷移\r\n\tprivate _isSave: boolean;\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// プロパティ\r\n\t//--------------------------------------------------------------------------\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// コンストラクタ\r\n\t//--------------------------------------------------------------------------\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// メソッド\r\n\t//--------------------------------------------------------------------------\r\n\t/**\r\n\t * 初期化メソッド\r\n\t * */\r\n\tpublic init(): void {\r\n\r\n\t\t// 複数タブ禁止\r\n\t\tconst multiTabCheck = () => {\r\n\t\t\tMultiTab.forbiddenMultiTab(() => {\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.WARNING_MULTITAB_FORBIDDEN\r\n\t\t\t\t\t, () => { }\r\n\t\t\t\t\t, null\r\n\t\t\t\t\t, true\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t}\r\n\t\tsetInterval(multiTabCheck, MultiTab.INTERVAL);\r\n\r\n\t\t// エラー時のボタン遷移先\r\n\t\tthis.SetErrorPageInfo();\r\n\r\n\t\t// gigya イベントリスナー登録\r\n\t\tif (this._retailerConfig.id == \"0\") {\r\n\t\t\tgigya.socialize.addEventHandlers({\r\n\t\t\t\tonLogin: this.onLoginHandler\r\n\t\t\t\t//onHide: common.onHideHandler\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// リテーラ毎の処理\r\n\t\tthis.initRetailer();\r\n\r\n\t\t// thatセット\r\n\t\tthat = this;\r\n\r\n\t\t// vueオブジェクト生成\r\n\t\tthis._vue = new Vue({\r\n\t\t\tel: this.ELEMENT_NAME,\r\n\t\t\tdata: {\r\n\t\t\t\t// ヘッダーメニュー\r\n\t\t\t\tHeader: {\r\n\t\t\t\t\tLogo1Url: this._logo1Url,\r\n\t\t\t\t\tLogo2Url: this._logo2Url,\r\n\t\t\t\t},\r\n\t\t\t\t// 説明書き\r\n\t\t\t\tdescription: this._description,\r\n\t\t\t\t// バーコード記すか?\r\n\t\t\t\thasBarcode: this._hasBarcode,\r\n\t\t\t\t// バーコード説明書き\r\n\t\t\t\tbarcodeDescription: this._barcodeDescription,\r\n\t\t\t\t// 宛名の単価\r\n\t\t\t\tunitPrice: this._unitPrice,\r\n\t\t\t\t// 表示制御\r\n\t\t\t\tShow: {\r\n\t\t\t\t\t// 操作方法の表示(空の場合は表示しない)\r\n\t\t\t\t\tOperationInfo: this._retailerConfig.operationInfo.atenaSelect ? true : false,\r\n\r\n\t\t\t\t\t// 投函代行関連文言表示\r\n\t\t\t\t\tIsShowSupplement: (this._retailerConfig.id === \"0\" || this._retailerConfig.id === \"36\") ? true : false,\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\tmethods: {\r\n\t\t\t\tbtnClickReturnFlow: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickReturnFlow(event);\r\n\t\t\t\t},\r\n\t\t\t\tbtnClickNextFlow: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickNextFlow(event);\r\n\t\t\t\t},\r\n\t\t\t\tnotPrinting: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.notPrinting(event);\r\n\t\t\t\t},\r\n\t\t\t\tprinting: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.printing(event);\r\n\t\t\t\t},\r\n\t\t\t\t// 一時保存\r\n\t\t\t\tbtnClickSave: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickSave(event);\r\n\t\t\t\t},\r\n\t\t\t\t// 操作方法\r\n\t\t\t\tbtnClickOperationHelp: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickOperationHelp(event);\r\n\t\t\t\t},\r\n\t\t\t\t// ヘッダー\r\n\t\t\t\tbtnClickReturnTop: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickReturnTop(event);\r\n\t\t\t\t},\r\n\t\t\t\tbtnClickFaq: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickFaq(event);\r\n\t\t\t\t},\r\n\t\t\t\tbtnClickOrderHistory: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickOrderHistory(event);\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tcomputed: {\r\n\t\t\t\t// はがきサンプルのサムネイルクラスを切り替える。\r\n\t\t\t\tgetThumbnailClass: () => {\r\n\t\t\t\t\tif (this._hasBarcode) {\r\n\t\t\t\t\t\tif (this._hasSender) {\r\n\t\t\t\t\t\t\t// バーコードあり、差出人あり\r\n\t\t\t\t\t\t\treturn 'hagakiSample'\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// バーコードあり、差出人なし\r\n\t\t\t\t\t\t\treturn 'hagakiSampleNoSender'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (this._hasSender) {\r\n\t\t\t\t\t\t\t// バーコードなし、差出人あり\r\n\t\t\t\t\t\t\treturn 'hagakiSampleNonBarcode'\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// バーコードなし、差出人なし\r\n\t\t\t\t\t\t\treturn 'hagakiSampleNonBarcodeNoSender'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tmounted: () => {\r\n\r\n\t\t\t\t// リテーラ別のチャットボット制御\r\n\t\t\t\tvar divChatBot = document.getElementById(\"chava-root\") as HTMLDivElement;\r\n\t\t\t\tif (divChatBot) {\r\n\t\t\t\t\tdivChatBot.style.display = this._retailerConfig.id == \"0\" ? \"block\" : \"none\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$(\".supplementPrint\").removeClass(\"disp-none\");\r\n\r\n\t\t\t\t// DOM読み込み後\r\n\t\t\t\tthis.doOnload();\r\n\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * リテーラ別の初期化処理\r\n\t * */\r\n\tpublic initRetailer(): void {\r\n\t\t// リテーラロゴURL設定\r\n\t\tthis._logo1Url = this._retailerConfig.logo1;\r\n\t\tthis._logo2Url = this._retailerConfig.logo2;\r\n\r\n\t\t// 説明書き設定\r\n\t\tthis._description = this._retailerConfig.poscaSettings.atenaViewSettings.description.join('
    ');\r\n\t\tif (this._retailerConfig.poscaSettings.atenaViewSettings.hasBarcode) {\r\n\t\t\tthis._hasBarcode = true;\r\n\t\t\tthis._barcodeDescription = this._retailerConfig.poscaSettings.atenaViewSettings.barcodeDescription.join('
    ');\r\n\t\t}\r\n\t\tthis._hasSender = this._retailerConfig.poscaSettings.atenaViewSettings.hasSender;\r\n\r\n\t\t// 単価設定\r\n\t\tthis._unitPrice = this._retailerConfig.poscaSettings.atenaViewSettings.unitPrice.toString();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * 画面の初期化\r\n\t * */\r\n\tprivate async doOnload(): es6promise.Promise {\r\n\r\n\t\tdialogUtil.showLoading();\r\n\r\n\t\t// tokenを画面から確保\r\n\t\tthis.getAuthToken();\r\n\r\n\t\t// SSO\r\n\t\tLogger.log(\"SSO開始\");\r\n\t\tawait SSO.DoSSO(this._token, this._retailerConfig.id);\r\n\r\n\t\t// idbからのデータ読み込み\r\n\t\tthis.loadIDB().then(() => {\r\n\r\n\t\t\t// ダイアログ閉じ\r\n\t\t\tdialogUtil.closeLoading();\r\n\t\t\tLogger.log(\"idb読み込み完了。\");\r\n\r\n\t\t}).catch((msg) => {\r\n\t\t\t// idb系エラー\r\n\t\t\tdialogUtil.createErrorDialog(msg, dialogUtil.closeErrorDialog);\r\n\t\t\treturn es6promise.Promise.reject;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * indexedDBからの読み込み\r\n\t * */\r\n\tprivate async loadIDB(): es6promise.Promise {\r\n\r\n\t\t// 編集情報のデータ取得\r\n\t\tthis._editInfo = lstorage.get(lstorage.KEY_EDIT, true);\r\n\t\tif (!this._editInfo) {\r\n\t\t\t// 読み込み失敗\r\n\t\t\treturn es6promise.Promise.reject(constDialogMessage.ERROR_LOCAL_DB_READ);\r\n\t\t}\r\n\r\n\t\t// 注文情報のデータ取得\r\n\t\tthis._orderInfo = lstorage.get(lstorage.KEY_ORDER, true);\r\n\t\tif (!this._orderInfo) {\r\n\t\t\t// 読み込み失敗\r\n\t\t\treturn es6promise.Promise.reject(constDialogMessage.ERROR_LOCAL_DB_READ);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * 宛名印刷ボタンの制御&フラグ更新\r\n\t * @param printFlg\r\n\t */\r\n\tprivate changePrintState(printFlg: boolean): void {\r\n\r\n\t\tconst printId = \"#printingBtn\";\r\n\t\tconst notPrintId = \"#notPrintingBtn\";\r\n\r\n\t\tif (printFlg) {\r\n\t\t\t$(notPrintId).removeClass(\"selected\");\r\n\t\t\t$(printId).addClass(\"selected\");\r\n\t\t\tthis._doPrintAtena = true;\r\n\t\t} else {\r\n\t\t\t$(notPrintId).addClass(\"selected\");\r\n\t\t\t$(printId).removeClass(\"selected\");\r\n\t\t\tthis._doPrintAtena = false;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * 宛名遷移用のパラメータ取得\r\n\t * */\r\n\tprivate async getAtenaParam(isAnotherName: boolean): es6promise.Promise {\r\n\t\treturn new es6promise.Promise((res, rej) => {\r\n\t\t\tvar model = {\r\n\t\t\t\ttoken: this._token,\r\n\t\t\t\tcallBackURL: window.location.href,\r\n\t\t\t\tdoCopy: isAnotherName,\r\n\t\t\t\tshowBackBtn: true\r\n\t\t\t}\r\n\r\n\t\t\tdialogUtil.showLoading();\r\n\r\n\t\t\tajax.post(this.WebAPI_GetAtenaParam, JSON.stringify(model))\r\n\t\t\t\t.then((data: AtenaParamEntity) => {\r\n\t\t\t\t\tres(data);\r\n\t\t\t\t}).catch(() => {\r\n\t\t\t\t\trej(\"\");\r\n\t\t\t\t}).finally(() => {\r\n\t\t\t\t\t//dialogUtil.closeLoading();\r\n\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * 認証トークン取得\r\n\t */\r\n\tpublic getAuthToken(): string {\r\n\r\n\t\t// hiddenから認証トークン取得&クリア\r\n\t\tthis._token = $(\"#Token\").val();\r\n\t\t//$(\"#Token\").val(\"\");\r\n\t\treturn this._token;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * GIGYAのログインダイアログコールバック\r\n\t * @param event\r\n\t */\r\n\tprivate async onLoginHandler(res: any): es6promise.Promise {\r\n\r\n\t\t// ここではthis使えないのでthatで代替\r\n\r\n\t\tdialogUtil.showLoading();\r\n\r\n\t\tLogger.log('gigya callback 呼び出し。');\r\n\r\n\t\tconst param = {\r\n\t\t\ttoken: that._token,\r\n\t\t\tuid: res.UID,\r\n\t\t\tsignature: res.UIDSignature,\r\n\t\t\tsigtimestamp: res.signatureTimestamp,\r\n\t\t};\r\n\r\n\t\t// GIGYAログインのシグネイチャ検証\r\n\t\tawait ajax.post(that.WebAPI_GIGYALogin, JSON.stringify(param)).catch((e) => {\r\n\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_GIGYA_SIGNATURE_INVALID, dialogUtil.closeErrorDialog);\r\n\t\t\tdialogUtil.closeLoading();\r\n\t\t\t// 検証失敗。\r\n\t\t\tthrow e;\r\n\t\t});\r\n\r\n\t\t// CCとGIGYA間のログイン\r\n\t\tawait ajax.postform(that._retailerConfig.extrSettings.commersCloud.gigyaCcBridge, res.UID).catch((e) => {\r\n\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_CC_LOGIN_WITH_GIGYA, dialogUtil.closeErrorDialog);\r\n\t\t\tdialogUtil.closeLoading();\r\n\t\t\tthrow e;\r\n\t\t});\r\n\r\n\t\tthat.afterGIGYACallback();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * GIGYAコールバックの後に呼ぶ処理\r\n\t * */\r\n\tpublic afterGIGYACallback(): void {\r\n\t\t// カスタマーIDはサーバで取得\r\n\r\n\t\tif (that._isSave) {\r\n\r\n\t\t\t// 一時保存\r\n\t\t\tcommon.SaveToCommersCloud(that._token);\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// 保存ダイアログの後のコールバック\r\n\t\t\tlet func = function () {\r\n\t\t\t\t\r\n\t\t\t\t// 宛名印刷する。 -> 上書き/別名問わず、常に宛名データはコピーする。\r\n\t\t\t\tthat.getAtenaParam(true).then((data: AtenaParamEntity) => {\r\n\r\n\t\t\t\t\tdialogUtil.showLoading();\r\n\r\n\t\t\t\t\tvar form = document.createElement('form');\r\n\r\n\t\t\t\t\t// rs\r\n\t\t\t\t\tvar ele1 = document.createElement('input');\r\n\t\t\t\t\tele1.setAttribute(\"type\", \"hidden\");\r\n\t\t\t\t\tele1.setAttribute(\"name\", \"rs\");\r\n\t\t\t\t\tele1.setAttribute(\"value\", data.rs);\r\n\t\t\t\t\tform.appendChild(ele1);\r\n\r\n\t\t\t\t\t// sign\r\n\t\t\t\t\tvar ele1 = document.createElement('input');\r\n\t\t\t\t\tele1.setAttribute(\"type\", \"hidden\");\r\n\t\t\t\t\tele1.setAttribute(\"name\", \"sign\");\r\n\t\t\t\t\tele1.setAttribute(\"value\", data.sign);\r\n\t\t\t\t\tform.appendChild(ele1);\r\n\r\n\t\t\t\t\t// 宛名印刷する\r\n\t\t\t\t\tform.action = data.atenaURL;\r\n\r\n\t\t\t\t\tform.method = 'POST';\r\n\t\t\t\t\t$('body').append(form);\r\n\t\t\t\t\tform.submit();\r\n\r\n\t\t\t\t}).catch(() => {\r\n\t\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_TRANS_ATENA, dialogUtil.closeErrorDialog);\r\n\t\t\t\t}).finally(() => {\r\n\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// 名前を付けて保存ダイアログ\r\n\t\t\tcommon.SaveToCommersCloud(that._token, func);\r\n\t\t}\r\n\t}\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// イベント\r\n\t//--------------------------------------------------------------------------\r\n\t/**\r\n\t* 前画面遷移ボタン押下メソッド\r\n\t* */\r\n\tpublic btnClickReturnFlow(event: JQueryEventObject): void {\r\n\t\tvar form = document.createElement('form');\r\n\t\tform.action = this.ViewURL_HagakiSelect;\r\n\t\tform.method = 'POST';\r\n\t\t$('body').append(form);\r\n\r\n\t\tform.submit();\r\n\t\t//history.back();\r\n\t}\r\n\r\n\t/**\r\n\t * 次画面遷移ボタン押下メソッド\r\n\t * */\r\n\tpublic btnClickNextFlow(event: JQueryEventObject): void {\r\n\r\n\t\t// GIGYA分岐\r\n\t\tthis._isSave = false;\r\n\r\n\t\tdialogUtil.showLoading();\r\n\r\n\t\tif (this._doPrintAtena) {\r\n\r\n\t\t\t// ログインチェックと保存\r\n\t\t\tcommon.SaveData(this._token, this._editInfo, this._orderInfo, this.afterGIGYACallback).finally(() => {\r\n\r\n\t\t\t\t// adjust登録\r\n\t\t\t\ttry {\r\n\t\t\t\t\tnew AdjustRecord(\r\n\t\t\t\t\t\tthis._retailerConfig.extrSettings.adjust?.token,\r\n\t\t\t\t\t\tthis._retailerConfig.extrSettings.adjust?.eventID.editEnd);\r\n\t\t\t\t} catch(er) {\r\n\t\t\t\t\tLogger.error(`AdjustError:${er}`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// 宛名無しのadjust連携はカート追加の共通処理で実施\r\n\r\n\t\t\t// カート遷移→強制保存\r\n\t\t\tcommon.SaveDataForceForCart(this._token);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * ボタン切り替え(印刷する)\r\n\t */\r\n\tpublic printing(event: JQueryEventObject): void {\r\n\t\tthis.changePrintState(true);\r\n\t}\r\n\r\n\t/**\r\n\t * ボタン切り替え(印刷しない)\r\n\t */\r\n\tpublic notPrinting(event: JQueryEventObject): void {\r\n\t\tthis.changePrintState(false);\r\n\t}\r\n\r\n\t/**\r\n\t * 一時保存ボタン押下メソッド\r\n\t * */\r\n\tpublic btnClickSave(event: JQueryEventObject): void {\r\n\r\n\t\t// GIGYA分岐\r\n\t\tthis._isSave = true;\r\n\r\n\t\t//idb.get(this.EDIT_INFO_STORENAME).then((editInfo: editInfo) => {\r\n\t\t//\tidb.get(this.OREDER_INFO_STORENAME).then((orderInfo: orderInfo) => {\r\n\t\t//\t\tcommon.SaveData(this._token, editInfo, orderInfo);\r\n\t\t//\t});\r\n\t\t//});\r\n\r\n\t\tconst editInfo: editInfo = lstorage.get(lstorage.KEY_EDIT, false);\r\n\t\tconst orderInfo: orderInfo = lstorage.get(lstorage.KEY_ORDER, false);\r\n\t\tcommon.SaveData(this._token, editInfo, orderInfo);\r\n\t}\r\n\r\n\t/**\r\n\t * 操作方法ボタン押下メソッド\r\n\t * */\r\n\tpublic btnClickOperationHelp(event: JQueryEventObject): void {\r\n\r\n\t\tui.windowOpen(this._retailerConfig.operationInfo.atenaSelect, \"\", null, null);\r\n\r\n\t}\r\n\r\n\r\n}\r\n","\r\nimport Vue from \"vue\";\r\nimport { baseVueController } from \"./baseVueController\";\r\nimport { ajax, common, constDialogMessage, dialogUtil,idb } from \"./util\";\r\nimport * as es6promise from \"es6-promise\";\r\nimport { AddOrder, AddOrderList } from \"./entity/addOrderEntity\";\r\nimport { Logger } from \"./util/logger\";\r\nimport { MultiTab } from \"./util/multitab\";\r\nimport { orderInfo } from \"./entity/idb/orderInfo\";\r\nimport { util } from \".\";\r\nimport { SSO } from \"./util/sso\";\r\n\r\nvar that: any; // = this\r\n\r\n// gigya\r\ndeclare var gigya: any;\r\n\r\n//------------------------------------------------------------------------------\r\n// クラス\r\n//------------------------------------------------------------------------------\r\n/**\r\n * 追加注文画面コントローラクラス\r\n * */\r\nexport class addOrderController extends baseVueController {\r\n\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// 定数\r\n\t//--------------------------------------------------------------------------\r\n\tprivate readonly ELEMENT_NAME: string = \"#addOrderController\";\r\n\r\n\t// WebAPIのエンドポイント定義\r\n\tprivate readonly WebAPI_GetList: string = \"Addorder/GetList\";\r\n\tprivate readonly WebAPI_GetEditImage: string = \"edit/GetEditThumb\";\r\n\r\n\tprivate readonly WebAPI_OcapiLogin: string = \"Login/Ocapi\";\r\n\tprivate readonly WebAPI_GIGYALogin: string = \"Login/GIGYA\";\r\n\r\n\t// 画面URL\r\n\tprivate readonly ViewURL_Edit: string = \"Edit\";\r\n\tprivate readonly ViewURL_Preview: string = \"Preview\";\r\n\r\n\t// idb関連\r\n\tprivate readonly EDIT_INFO_STORENAME = \"editInfo\";\r\n\tprivate readonly ORDER_INFO_STORENAME = \"orderInfo\";\r\n\tprivate readonly MASTER_INFO_STORENAME = \"masterInfo\";\r\n\r\n\t// 印刷タイプ\r\n\tprivate readonly INSATSU: string = \"1\";\r\n\tprivate readonly GINEN: string = \"2\";\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// 変数\r\n\t//--------------------------------------------------------------------------\r\n\r\n\t// トークン\r\n\tprivate _token: string;\r\n\r\n\t/**\r\n\t * ロゴ1 URL\r\n\t */\r\n\tprivate _logo1Url: string;\r\n\t/**\r\n\t * ロゴ2 URL\r\n\t */\r\n\tprivate _logo2Url: string;\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// プロパティ\r\n\t//--------------------------------------------------------------------------\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// コンストラクタ\r\n\t//--------------------------------------------------------------------------\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// メソッド\r\n\t//--------------------------------------------------------------------------\r\n\t/**\r\n\t * 初期化メソッド\r\n\t * */\r\n\tpublic init(): void {\r\n\r\n\t\t// 複数タブ禁止\r\n\t\tconst multiTabCheck = () => {\r\n\t\t\tMultiTab.forbiddenMultiTab(() => {\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.WARNING_MULTITAB_FORBIDDEN\r\n\t\t\t\t\t, () => { }\r\n\t\t\t\t\t, null\r\n\t\t\t\t\t, true\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t}\r\n\t\tsetInterval(multiTabCheck, MultiTab.INTERVAL);\r\n\r\n\t\t// エラー時のボタン遷移先\r\n\t\tthis.SetErrorPageInfo();\r\n\r\n\t\t// gigya イベントリスナー登録\r\n\t\tif (this._retailerConfig.id == \"0\") {\r\n\t\t\tgigya.socialize.addEventHandlers({\r\n\t\t\t\tonLogin: this.onLoginHandler\r\n\t\t\t\t//onHide: common.onHideHandler\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// リテーラ毎の処理\r\n\t\tthis.initRetailer();\r\n\r\n\t\t// vueオブジェクト生成\r\n\t\tthis._vue = new Vue({\r\n\t\t\tel: this.ELEMENT_NAME,\r\n\t\t\tdata: {\r\n\t\t\t\t// 注文済み一覧\r\n\t\t\t\torderInfos: [],\r\n\t\t\t\t// 読み込み済み状態保持\r\n\t\t\t\torderImgComplete: [],\r\n\t\t\t\t// ヘッダーメニュー\r\n\t\t\t\tHeader: {\r\n\t\t\t\t\tLogo1Url: this._logo1Url,\r\n\t\t\t\t\tLogo2Url: this._logo2Url,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tmethods: {\r\n\t\t\t\t// 戻るボタン\r\n\t\t\t\tbtnClickReturnFlow: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickReturnFlow(event);\r\n\t\t\t\t},\r\n\t\t\t\t// 次へボタン\r\n\t\t\t\tbtnClickNextFlow: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickNextFlow(event);\r\n\t\t\t\t},\r\n\t\t\t\t// 画像url設定\r\n\t\t\t\tgetImgUrl: (order: AddOrder) => {\r\n\t\t\t\t\treturn this.getImgUrl(order);\r\n\t\t\t\t},\r\n\t\t\t\t// 画像読み込み\r\n\t\t\t\timgOnload: () => {\r\n\t\t\t\t\tthis.updateOrderImgComplete();\r\n\t\t\t\t},\r\n\t\t\t\t// 再注文\r\n\t\t\t\treOrder: (order: AddOrder) => {\r\n\t\t\t\t\tthis.reOrder(order);\r\n\t\t\t\t},\r\n\t\t\t\t// コピーして再編集\r\n\t\t\t\treEdit: (order: AddOrder) => {\r\n\t\t\t\t\tthis.reEdit(order);\r\n\t\t\t\t},\r\n\t\t\t\t// ヘッダー\r\n\t\t\t\tbtnClickReturnTop: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickReturnTop(event);\r\n\t\t\t\t},\r\n\t\t\t\tbtnClickFaq: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickFaq(event);\r\n\t\t\t\t},\r\n\t\t\t\tbtnClickOrderHistory: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickOrderHistory(event);\r\n\t\t\t\t}\r\n\t\t\t}, mounted: () => {\r\n\r\n\t\t\t\t// リテーラ別のチャットボット制御\r\n\t\t\t\tvar divChatBot = document.getElementById(\"chava-root\") as HTMLDivElement;\r\n\t\t\t\tif (divChatBot) {\r\n\t\t\t\t\tdivChatBot.style.display = this._retailerConfig.id == \"0\" ? \"block\" : \"none\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// DOM読み込み後\r\n\t\t\t\tthis.doOnload();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * 画面の初期化\r\n\t * */\r\n\tpublic async doOnload(): es6promise.Promise {\r\n\r\n\t\tthat = this;\r\n\r\n\t\t// commonのコールバックを無効化\r\n\t\tcommon.pleaseQuiet = true;\r\n\r\n\t\t// ローディングダイアログ開始\r\n\t\tdialogUtil.showLoading();\r\n\r\n\t\t// tokenを画面から確保\r\n\t\tthis.getAuthToken();\r\n\r\n\t\t// getパラメータの取得\r\n\t\tcommon.setGetParam();\r\n\r\n\t\t// SSO\r\n\t\tLogger.log(\"SSO開始\");\r\n\t\tawait SSO.DoSSO(this._token, this._retailerConfig.id);\r\n\r\n\t\t// SSO(GIGYA)まち\r\n\t\tawait SSO.WaitSSO();\r\n\r\n\t\tlet isFF = this._retailerConfig.id == \"0\" ? true : false;\r\n\r\n\t\t// ログインチェック\r\n\t\tconst isLogin = await common.LoginCheck(this._token);\r\n\r\n\t\tif (isFF) {\r\n\t\t\t// FF\r\n\t\t\tif (!isLogin) {\r\n\t\t\t\tawait common.ShowGIGYALogin().finally(() => {\r\n\t\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.afterGIGYACallBack();\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif (!isLogin) {\r\n\t\t\t\t// OCAPI\r\n\t\t\t\tlet loginOK = false;\r\n\t\t\t\twhile (!loginOK) {\r\n\r\n\t\t\t\t\t// ログインOKになるまで\r\n\t\t\t\t\tawait common.ShowOcapiAndLogin(this._token).then((data) => {\r\n\t\t\t\t\t\tloginOK = data;\r\n\t\t\t\t\t}).catch((e) => {\r\n\t\t\t\t\t\tloginOK = e;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.afterGIGYACallBack();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * 画面初期化\r\n\t * */\r\n\tprivate async initDisp(): es6promise.Promise {\r\n\r\n\t\t// 追加注文画面初期化実行\r\n\t\tvar req = {\r\n\t\t\ttoken: this._token,\r\n\t\t\t//customerId: customerId\r\n\t\t}\r\n\t\tLogger.debug(\"追加注文:API実行します。\", req);\r\n\r\n\t\tconst that = this;\r\n\t\tawait ajax.post(this.WebAPI_GetList, JSON.stringify(req)).then((data: AddOrderList) => {\r\n\r\n\t\t\tLogger.debug(\"追加注文:API実行しました\", data);\r\n\r\n\t\t\t// 注文情報なし\r\n\t\t\tif (data.infos.length == 0) {\r\n\r\n\t\t\t\tconst closeFunc = () => {\r\n\t\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\t\twindow.location.href = decodeURIComponent($('#CallBackURL').val());\r\n\t\t\t\t\tdialogUtil.closeErrorDialog();\r\n\t\t\t\t}\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_ADDORDER_ORDER_NONE, closeFunc, dialogUtil.DialogType.None);\r\n\r\n\t\t\t\tPromise.resolve();\r\n\t\t\t}\r\n\r\n\t\t\t// vue変数にバインド\r\n\t\t\tthis._vue.$data.orderInfos = data.infos;\r\n\r\n\t\t\t// img 描画\r\n\t\t\tthis.DrawThumbNail(data);\r\n\r\n\t\t}).catch((e) => {\r\n\r\n\t\t\tLogger.debug(\"追加注文:API実行失敗しました\");\r\n\r\n\t\t\tconst closeFunc = ()=> {\r\n\t\t\t\tdialogUtil.closeErrorDialog();\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t}\r\n\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_SYSTEM, closeFunc);\r\n\t\t\tPromise.reject();\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tprivate DrawThumbNail(data: AddOrderList): void {\r\n\r\n\t\tlet loadCount = 0;\r\n\t\tdialogUtil.showLoading();\r\n\t\tdata.infos.forEach(e => {\r\n\t\t\t// 画像取得\r\n\t\t\tconst param = \"saveId=\" + e.editId + \"&saveId2=\" + e.idx + \"\";\r\n\t\t\tutil.ajax.postforblob_get(this.WebAPI_GetEditImage, param).then((d: Blob) => {\r\n\t\t\t\tconst img = document.getElementById(e.orderNo);\r\n\t\t\t\t// 画像描画\r\n\t\t\t\tif (img) {\r\n\t\t\t\t\tconst url = window.URL || window.webkitURL;\r\n\t\t\t\t\timg.src = url.createObjectURL(d);\r\n\t\t\t\t}\r\n\t\t\t}).finally(() => {\r\n\t\t\t\tloadCount++;\r\n\t\t\t\tif (data.infos.length == loadCount) {\r\n\t\t\t\t\tdialogUtil.closeLoading();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * リテーラ別の初期化処理\r\n\t * */\r\n\tpublic initRetailer(): void {\r\n\t\t// リテーラロゴURL設定\r\n\t\tthis._logo1Url = this._retailerConfig.logo1;\r\n\t\tthis._logo2Url = this._retailerConfig.logo2;\r\n\t}\r\n\r\n\t/**\r\n\t* 認証トークン取得\r\n\t*/\r\n\tpublic getAuthToken(): string {\r\n\r\n\t\t// hiddenから認証トークン取得&クリア\r\n\t\tthis._token = $(\"#Token\").val();\r\n\t\t//$(\"#Token\").val(\"\");\r\n\t\treturn this._token;\r\n\t}\r\n\r\n\tprivate async onLoginHandler(res: any): es6promise.Promise {\r\n\r\n\t\t// ここではthis使えないのでthatで代替\r\n\r\n\t\tdialogUtil.showLoading();\r\n\r\n\t\tLogger.log('gigya callback 呼び出し。');\r\n\r\n\t\tconst param = {\r\n\t\t\ttoken: that._token,\r\n\t\t\tuid: res.UID,\r\n\t\t\tsignature: res.UIDSignature,\r\n\t\t\tsigtimestamp: res.signatureTimestamp,\r\n\t\t};\r\n\r\n\t\t// GIGYAログインのシグネイチャ検証\r\n\t\tawait ajax.post(that.WebAPI_GIGYALogin, JSON.stringify(param)).catch((e) => {\r\n\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_GIGYA_SIGNATURE_INVALID, dialogUtil.closeErrorDialog);\r\n\t\t\tdialogUtil.closeLoading();\r\n\t\t\t// 検証失敗。\r\n\t\t\tthrow e;\r\n\t\t});\r\n\r\n\t\t// CCとGIGYA間のログイン\r\n\t\tawait ajax.postform(that._retailerConfig.extrSettings.commersCloud.gigyaCcBridge, res.UID).catch((e) => {\r\n\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_CC_LOGIN_WITH_GIGYA, dialogUtil.closeErrorDialog);\r\n\t\t\tdialogUtil.closeLoading();\r\n\t\t\tthrow e;\r\n\t\t});\r\n\r\n\t\tthat.afterGIGYACallBack();\r\n\t}\r\n\r\n\tprivate async afterGIGYACallBack(): es6promise.Promise {\r\n\r\n\t\t// 画面初期化\r\n\t\tdialogUtil.showLoading();\r\n\t\tawait that.initDisp().then(() => {\r\n\r\n\t\t\tLogger.debug(\"追加注文:initDisp完了\");\r\n\r\n\t\t});\r\n\t}\r\n\t//--------------------------------------------------------------------------\r\n\t// イベント\r\n\t//--------------------------------------------------------------------------\r\n\t/**\r\n\t* 前画面遷移ボタン押下メソッド\r\n\t* */\r\n\tpublic btnClickReturnFlow(event: JQueryEventObject): void {\r\n\t\twindow.location.href = decodeURIComponent($('#CallBackURL').val());\r\n\t}\r\n\r\n\t/**\r\n\t * 次画面遷移ボタン押下メソッド\r\n\t * */\r\n\tpublic btnClickNextFlow(event: JQueryEventObject): void {\r\n\t\t// NOP\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * コピーして再編集\r\n\t * @param order\r\n\t */\r\n\tprivate reEdit(order: AddOrder): void {\r\n\t\twindow.location.href = this.ViewURL_Edit + \"?saveId=\" + encodeURIComponent(order.editId) + \"&saveId2=\" + encodeURIComponent(order.idx) + \"&addorder=\" + encodeURIComponent(order.addReOrder);\r\n\t}\r\n\r\n\t/**\r\n\t * 再注文メソッド\r\n\t * @param order\r\n\t */\r\n\tprivate reOrder(order: AddOrder): void {\r\n\r\n\t\tif (order.orderStop) {\r\n\r\n\t\t\tlet msg = this._retailerConfig.id == \"1\" ? constDialogMessage.ERROR_DESIGN_PRINTTYPE_GINEN_STOP_TEXT_ADDORDER_KITAMURA : constDialogMessage.ERROR_DESIGN_PRINTTYPE_GINEN_STOP_TEXT_ADDORDER;\r\n\t\t\tif (order.printType == this.INSATSU) {\r\n\t\t\t\t// 印刷不可の場合\r\n\t\t\t\tmsg = this._retailerConfig.id == \"1\" ? constDialogMessage.ERROR_DESIGN_PRINTTYPE_INSATSU_STOP_TEXT_ADDORDER_KITAMURA : constDialogMessage.ERROR_DESIGN_PRINTTYPE_INSATSU_STOP_TEXT_ADDORDER;\r\n\t\t\t}\r\n\t\t\t// 再注文不可\r\n\t\t\tdialogUtil.createErrorDialog(msg, dialogUtil.closeErrorDialog);\r\n\r\n\t\t} else {\r\n\t\t\t// 再注文可能\r\n\t\t\twindow.location.href = this.ViewURL_Preview + \"?saveId=\" + order.editId + \"&saveId2=\" + order.idx + \"&addOrder=\" + order.addOrder;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * 全画像読み込み判定\r\n\t * */\r\n\tprivate updateOrderImgComplete(): void {\r\n\t\tthis._vue.$data.orderImgComplete.push(\"OK\");\r\n\t\tif (this._vue.$data.orderImgComplete.length == this._vue.$data.orderInfos.length) {\r\n\t\t\tLogger.log('img load all complete');\r\n\t\t\tdialogUtil.closeLoading();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * 画像読み込み\r\n\t * @param order\r\n\t */\r\n\tprivate getImgUrl(order: AddOrder): string {\r\n\t\tconst rt = this.WebAPI_GetEditImage + \"?saveId=\" + order.editId + \"&saveId2=\" + order.idx + \"\";\r\n\t\treturn rt;\r\n\t}\r\n\r\n}\r\n\r\n\r\n","/*/*import { headerController } from \"./header\";*/\r\nimport { footerController } from \"./footer\";\r\nimport { editController } from \"./edit\";\r\nimport { previewController } from \"./preview\";\r\nimport { util, response, cmnPart } from \"./index\";\r\nimport * as es6promise from \"es6-promise\";\r\nimport { hagakiSelectController } from \"./hagakiSelect\";\r\nimport { atenaSelectController } from \"./atenaSelect\";\r\nimport { addOrderController } from \"./addOrder\";\r\nimport { Logger } from \"./util/logger\";\r\nimport { ajax } from \"sonbp/util/index\";\r\nimport { common } from \"./util/common\";\r\nimport { errorController } from \"./error\";\r\nimport { SSO } from \"./util/sso\";\r\n\r\nmodule posca {\r\n\r\n\t/**\r\n\t * スタートポイント\r\n\t * */\r\n\texport function startup() {\r\n\t\t// 遷移先判定\r\n\t\tconst locationNow: string = location.href;\r\n\t\tconst locationNowSplit1: string[] = locationNow.split(\"/\");\r\n\t\tconst locationNowSplit2: string[] = locationNowSplit1[locationNowSplit1.length - 1].split(\"?\");\r\n\r\n\t\tif (0 < locationNowSplit2.length) {\r\n\t\t\t// ログ初期化\r\n\t\t\tLogger.init();\r\n\r\n\t\t\t// 遷移先ページ名取得\r\n\t\t\tconst pageName: string = locationNowSplit2[0].toLocaleLowerCase();\r\n\r\n\t\t\t// リテーラ別情報の取得\r\n\t\t\tGetRetailerConfig().then((resData: cmnPart.commonPartInitEntity) => {\r\n\r\n\t\t\t\t// タイトル設定\r\n\t\t\t\tif (resData.retailerConfig.pageTitle) {\r\n\t\t\t\t\t$(\"#ratailerTitle\").text(resData.retailerConfig.pageTitle);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Vueコントローラの初期化\r\n\t\t\t\tInitController(pageName, resData);\r\n\t\t\t});\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// 該当なし -> エラー画面へ\r\n\t\t\tLogger.log(\"遷移先ページ該当なし location.href[\" + location.href + \"]\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * リテーラ別情報の取得\r\n\t * */\r\n\tasync function GetRetailerConfig(): es6promise.Promise {\r\n\r\n\t\tlet retailerConfig: cmnPart.commonPartInitEntity; \r\n\r\n\t\tawait util.ajax.post(\"Style/GetRetailerConfig\", \"\").then((resData: cmnPart.commonPartInitEntity) => {\r\n\t\t\tretailerConfig = resData;\r\n\r\n\t\t\tLogger.warn(\"リテーラ別情報\", retailerConfig);\r\n\r\n\t\t}, () => {\r\n\t\t\t\tretailerConfig = null;\r\n\t\t});\r\n\r\n\t\treturn retailerConfig\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Vueコントローラの初期化\r\n\t * @param pageName\r\n\t * @param initEntity\r\n\t */\r\n\tfunction InitController(pageName: string, initEntity: cmnPart.commonPartInitEntity): boolean {\r\n\r\n\t\t// PCサイト?\r\n\t\tconst usePcDesign: boolean = util.ui.usePcDesign();\r\n\r\n\t\t// エラーページか?\r\n\t\tlet isError = false;\r\n\r\n\t\t// staticモジュールに設定を渡す。\r\n\t\tutil.ajax.returnTop = initEntity.retailerConfig.returnTop;\r\n\t\tcommon._retailerConf = initEntity.retailerConfig;\r\n\t\tcommon.init();\r\n\r\n\t\tSSO.SetRetailerSetting(initEntity.retailerConfig);\r\n\t\tSSO.init();\r\n\r\n\t\t// 遷移先ページ名に対応する、コントローラを生成\r\n\t\tif (pageName === \"edit\") {\r\n\t\t\t// 編集画面\r\n\t\t\tlet controller: editController;\r\n\t\t\tcontroller = new editController();\r\n\t\t\tcontroller.ScreenCtrl = initEntity.screenCtrl;\r\n\t\t\tcontroller.RetailerConfig = initEntity.retailerConfig;\r\n\t\t\tcontroller.PutRange = initEntity.putRange;\r\n\t\t\tcontroller.PutRangeStamp = initEntity.putRangeStamp;\r\n\t\t\tif (usePcDesign) {\r\n\t\t\t\t// sonbpのオフセットはPC版のみ\r\n\t\t\t\tcontroller.PageAreaOffset = initEntity.pageAreaOffset;\r\n\t\t\t} else {\r\n\t\t\t\tconst obj = {\r\n\t\t\t\t\tx: 0,\r\n\t\t\t\t\ty: 0\r\n\t\t\t\t} as cmnPart.AreaCoordinate;\r\n\t\t\t\tcontroller.PageAreaOffset = obj;\r\n\t\t\t}\r\n\t\t\tcontroller.UsePcDesign = usePcDesign;\r\n\t\t\tcontroller.init();\r\n\t\t}\r\n\t\telse if (pageName === \"preview\") {\r\n\t\t\t// プレビュー画面\r\n\t\t\tlet controller: previewController;\r\n\t\t\tcontroller = new previewController();\r\n\t\t\tcontroller.RetailerConfig = initEntity.retailerConfig;\r\n\t\t\tcontroller.UsePcDesign = usePcDesign;\r\n\t\t\tcontroller.init();\r\n\t\t}\r\n\t\telse if (pageName === \"hagakiselect\") {\r\n\t\t\t// はがき種/枚数選択画面\r\n\t\t\tlet controller: hagakiSelectController;\r\n\t\t\tcontroller = new hagakiSelectController();\r\n\t\t\tcontroller.RetailerConfig = initEntity.retailerConfig;\r\n\t\t\tcontroller.UsePcDesign = usePcDesign;\r\n\t\t\tcontroller.init();\r\n\t\t}\r\n\t\telse if (pageName === \"atenaselect\") {\r\n\t\t\t// 宛名選択画面\r\n\t\t\tlet controller: atenaSelectController;\r\n\t\t\tcontroller = new atenaSelectController();\r\n\t\t\tcontroller.RetailerConfig = initEntity.retailerConfig;\r\n\t\t\tcontroller.UsePcDesign = usePcDesign;\r\n\t\t\tcontroller.init();\r\n\r\n\t\t\t// GIGYA WebView版用にコントローラをグローバルにおいておく。\r\n\t\t\t(window).AtenaController = controller;\r\n\t\t}\r\n\t\telse if (pageName === \"addorder\") {\r\n\t\t\t// 追加注文画面\r\n\t\t\tlet controller: addOrderController;\r\n\t\t\tcontroller = new addOrderController();\r\n\t\t\tcontroller.RetailerConfig = initEntity.retailerConfig;\r\n\t\t\tcontroller.UsePcDesign = usePcDesign;\r\n\t\t\tcontroller.init();\r\n\r\n\t\t\t// GIGYA WebView版用にコントローラをグローバルにおいておく。\r\n\t\t\t(window).AddController = controller;\r\n\t\t}\r\n\t\telse {\r\n\r\n\t\t\tisError = true;\r\n\r\n\t\t\t// エラー画面へ\r\n\t\t\tlet controller: errorController;\r\n\t\t\tcontroller = new errorController();\r\n\t\t\tcontroller.RetailerConfig = initEntity.retailerConfig;\r\n\t\t\tcontroller.UsePcDesign = usePcDesign;\r\n\t\t\tcontroller.init();\r\n\t\t}\r\n\r\n\t\tif (usePcDesign && !isError) {\r\n\t\t\t//// PC用\r\n\t\t\t//// 共通ヘッダー初期化\r\n\t\t\t//let header = new headerController();\r\n\t\t\t//header.RetailerConfig = initEntity.retailerConfig;\r\n\t\t\t//header.init();\r\n\r\n\t\t\t// 共通フッター初期化\r\n\t\t\tlet footer = new footerController();\r\n\t\t\tfooter.RetailerConfig = initEntity.retailerConfig;\r\n\t\t\tfooter.init();\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// SP用\r\n\t\t\t// SPは各画面で実装です。\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n}\r\n\r\nposca.startup();\r\n","import Vue from \"vue\";\r\nimport Enumerable from \"linq\";\r\nimport { baseVueController } from \"./baseVueController\";\r\nimport { screenCtrlEntity } from \"./entity/screenCtrlEntity\";\r\nimport { util, retailerConfig, GetEditInfo, cmnPart } from \"./index\";\r\nimport * as es6promise from \"es6-promise\";\r\n\r\nimport * as sonbpIfconst from \"./sonbpIf/base/constants\";\r\nimport * as idbEdit from \"./entity/idb/editInfo\";\r\nimport { common, constDialogMessage, dialogUtil, idb, ui } from \"./util\";\r\nimport { Logger } from \"./util/logger\";\r\nimport { MultiTab } from \"./util/multitab\";\r\n//import { set } from \"vue/types/umd\";\r\n\r\nimport { EditConst, editModeKind, EDIT_MODE_KIND, kumihanHv, KUMIHAN_HV } from \"./edit/edit.const\";\r\nimport { initTempResponseEntity, photoControll, photoFrame, senderTranEntityEx, uploadPhoto } from \"./edit/edit.entity\";\r\nimport { editStrage, asyncWhenApply } from \"./edit/edit.tool\";\r\nimport { sonbpIFContoroller, itemVenderProperty } from \"./edit/edit.sonbp_if\";\r\nimport * as edLogic from \"./edit/index\";\r\nimport { GaijiLogic } from \"./Gaiji/edit.GaijiLogic\";\r\nimport { SSO } from \"./util/sso\";\r\nimport { AdjustRecord } from \"./util/adjustRecord\";\r\n\r\n\r\n// gigya\r\ndeclare var gigya: any;\r\n\r\n\r\n//------------------------------------------------------------------------------\r\n// クラス\r\n//------------------------------------------------------------------------------\r\n/**\r\n * 編集画面コントローラクラス\r\n * */\r\nexport class editController extends baseVueController {\r\n\r\n// #region ■定数\r\n //--------------------------------------------------------------------------\r\n // 定数\r\n //--------------------------------------------------------------------------\r\n /**\r\n * VueオブジェクトをバインドするID\r\n */\r\n private readonly ELEMENT_NAME: string = \"#editController\";\r\n\r\n /**\r\n * テンポラリデータ初期化(WebAPI)呼び出しURL\r\n */\r\n private readonly WEBAPI_URL_INITTEMP: string = \"Edit/InitTemp\";\r\n /**\r\n * 編集情報取得(WebAPI)呼び出しURL\r\n */\r\n private readonly WEBAPI_URL_GETEDITINF: string = \"Edit/GetEditInfo\";\r\n /**\r\n * スタンプサムネイル取得(WebAPI)呼び出しURL\r\n */\r\n //private readonly WEBAPI_URL_GETSTAMPIMAGE: string = \"Edit/GetStampImage\";\r\n /**\r\n * 画像存在チェック(WebAPI)呼び出しURL\r\n */\r\n private readonly WEBAPI_URL_CHECKUPLOADIMAGES: string = \"Edit/CheckUploadImages\";\r\n\r\n /**\r\n * 画像取得URLの補完用\r\n */\r\n private readonly URL_GETIMAGE: string = \"/posca/img/\";\r\n\r\n /**\r\n * スタンプカテゴリ:全部\r\n */\r\n private readonly STAMP_CATEGORY_ALL: string = \"全表示\";\r\n\r\n// #endregion\r\n\r\n// #region ■変数\r\n //--------------------------------------------------------------------------\r\n // 変数\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * 認証トークン \r\n */\r\n private authToken: string;\r\n\r\n /**\r\n * 組版トークン \r\n */\r\n private kumihanToken: string;\r\n\r\n /**\r\n * タイプ記号\r\n */\r\n private frameId: string;\r\n\r\n /**\r\n * 操作方法 URL\r\n */\r\n private operationHelpUrl: string;\r\n\r\n /**\r\n * ロゴ1 URL\r\n */\r\n private _logo1Url: string;\r\n /**\r\n * ロゴ2 URL\r\n */\r\n private _logo2Url: string;\r\n\r\n /**\r\n * プリント領域について URL\r\n */\r\n private printWarningUrl: string;\r\n\r\n /**\r\n * アップロード画像一覧(Vueバインド用)\r\n */\r\n private uploadPhotoList: uploadPhoto[];\r\n\r\n /**\r\n * アップロードMyステッカー画像一覧(Vueバインド用)\r\n */\r\n private uploadMyStampList: uploadPhoto[];\r\n\r\n /**\r\n * アップロード手書きスタンプ画像一覧(Vueバインド用)\r\n */\r\n private uploadTegakiStampList: uploadPhoto[];\r\n\r\n /**\r\n * 画面制御関連のコンフィグ値\r\n */\r\n private screenCtrl: screenCtrlEntity;\r\n\r\n /**\r\n * 編集モード\r\n */\r\n public editMode: editModeKind;\r\n\r\n /**\r\n * sonbpIF関連操作\r\n */\r\n private sonbpIfController: sonbpIFContoroller;\r\n\r\n /**\r\n * WebAPI[Edit/GetEditInfo]のレスポンスのdata部\r\n */\r\n public editInfo: GetEditInfo.GetEditInfoResponseEntity;\r\n\r\n /**\r\n * 初期化処理完了フラグ\r\n */\r\n private loadComplited: boolean;\r\n\r\n /**\r\n * ガイダンス画像URLリスト\r\n */\r\n private guidanceImgSrcList: string[];\r\n\r\n /**\r\n * オブジェクト配置有効領域\r\n */\r\n private putRange: cmnPart.putRange;\r\n\r\n /**\r\n * オブジェクト配置有効領域(スタンプ)\r\n */\r\n private putRangeStamp: cmnPart.putRangeStamp;\r\n\r\n /**\r\n * ページエリアオフセット情報\r\n */\r\n private pageAreaOffset: cmnPart.AreaCoordinate;\r\n\r\n /**\r\n * F5リロードアクセス?\r\n */\r\n private doReloadedAccess: boolean;\r\n\r\n /**\r\n * beforeunloadイベント時の sessionStorageへの書き込み要否フラグ\r\n */\r\n public doUnloadEventFunc: boolean;\r\n\r\n /**\r\n * リサイズ処理実行許可フラグ\r\n */\r\n private allowResizeFunc: boolean;\r\n\r\n /**\r\n * 画像操作のロジック\r\n */\r\n private _objectManiLogic: edLogic.ObjectManiLogicClass;\r\n private _photoLogic: edLogic.UploadImageLogic.PhotoLogicClass;\r\n private _myStampLogic: edLogic.UploadImageLogic.MyStampLogicClass;\r\n private _tegakiStampLogic: edLogic.UploadImageLogic.TegakiStampLogicClass;\r\n private _mstStampLogic: edLogic.UploadImageLogic.MstStampLogicClass;\r\n private _senderLogic: edLogic.SenderLogicClass;\r\n private _greetingLogic: edLogic.GreetingLogicClass;\r\n\r\n /**\r\n * 外字一覧のロジック\r\n */\r\n public _gaijiLogic: GaijiLogic;\r\n\r\n /**\r\n * 保存処理のロジック\r\n */\r\n public _saveLogic: edLogic.SaveLogicClass;\r\n\r\n\r\n// #endregion\r\n\r\n// #region ■プロパティ\r\n //--------------------------------------------------------------------------\r\n // プロパティ\r\n //--------------------------------------------------------------------------\r\n /**\r\n * 画面制御関連のコンフィグ値\r\n */\r\n public set ScreenCtrl(screenCtrl: screenCtrlEntity) {\r\n this.screenCtrl = screenCtrl;\r\n }\r\n public get ScreenCtrl(): screenCtrlEntity {\r\n return this.screenCtrl;\r\n }\r\n\r\n /**\r\n * リテーラ別設定情報\r\n */\r\n public set RetailerConfig(retailerConfig: retailerConfig.retailerConfigEntity) {\r\n this._retailerConfig = retailerConfig;\r\n }\r\n public get RetailerConfig(): retailerConfig.retailerConfigEntity {\r\n return this._retailerConfig;\r\n }\r\n\r\n /**\r\n * オブジェクト配置有効領域\r\n */\r\n public set PutRange(putRange: cmnPart.putRange) {\r\n this.putRange = putRange;\r\n }\r\n\r\n /**\r\n * オブジェクト配置有効領域(スタンプ)\r\n */\r\n public set PutRangeStamp(putRangeStamp: cmnPart.putRangeStamp) {\r\n this.putRangeStamp = putRangeStamp;\r\n }\r\n\r\n /**\r\n * ページエリアオフセット情報\r\n */\r\n public set PageAreaOffset(pageAreaOffset: cmnPart.AreaCoordinate) {\r\n this.pageAreaOffset = pageAreaOffset;\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■コンストラクタ\r\n //--------------------------------------------------------------------------\r\n // コンストラクタ\r\n //--------------------------------------------------------------------------\r\n constructor() {\r\n super();\r\n\r\n this.frameId = \"-\";\r\n this.editMode = EDIT_MODE_KIND.SET_PHOTO;\r\n this.loadComplited = false;\r\n this.allowResizeFunc = false;\r\n\r\n this.uploadPhotoList = [];\r\n this.uploadMyStampList = [];\r\n this.uploadTegakiStampList = [];\r\n\r\n // 画像操作のロジック\r\n this._objectManiLogic = new edLogic.ObjectManiLogicClass(this);\r\n this._photoLogic = new edLogic.UploadImageLogic.PhotoLogicClass(this, this.uploadPhotoList);\r\n this._myStampLogic = new edLogic.UploadImageLogic.MyStampLogicClass(this, this.uploadMyStampList);\r\n this._tegakiStampLogic = new edLogic.UploadImageLogic.TegakiStampLogicClass(this, this.uploadTegakiStampList);\r\n this._mstStampLogic = new edLogic.UploadImageLogic.MstStampLogicClass(this);\r\n this._senderLogic = new edLogic.SenderLogicClass(this);\r\n this._greetingLogic = new edLogic.GreetingLogicClass(this);\r\n\r\n // 外字\r\n this._gaijiLogic = new GaijiLogic();\r\n\r\n // 保存処理\r\n this._saveLogic = new edLogic.SaveLogicClass(this);\r\n\r\n\r\n this.doReloadedAccess = false;\r\n this.doUnloadEventFunc = true;\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■メソッド(メイン処理全般)\r\n //--------------------------------------------------------------------------\r\n // メソッド\r\n //--------------------------------------------------------------------------\r\n /**\r\n * 初期化メソッド\r\n * */\r\n public init(): void {\r\n\r\n // タッチイベント無効化(sonbp以外)\r\n document.body.addEventListener(\"touchstart\", function (e) {\r\n if (e.touches && e.touches.length > 1) {\r\n e.preventDefault();\r\n }\r\n }, { passive: false });\r\n document.body.addEventListener(\"touchmove\", function (e) {\r\n if (e.touches && e.touches.length > 1) {\r\n e.preventDefault();\r\n }\r\n }, { passive: false });\r\n\r\n Logger.debug(\"ua [\" + window.navigator.userAgent.toLowerCase() + \"]\")\r\n\r\n // sonbpIfコントローラ初期化\r\n this.sonbpIfController = new sonbpIFContoroller(this._usePcDesign);\r\n\r\n // 複数タブ禁止\r\n const multiTabCheck = () => {\r\n MultiTab.forbiddenMultiTab(() => {\r\n dialogUtil.createErrorDialog(constDialogMessage.WARNING_MULTITAB_FORBIDDEN\r\n , () => { }\r\n , null\r\n ,true\r\n );\r\n this._vue.$data.Show.FirstGuidance = false;\r\n })\r\n }\r\n setInterval(multiTabCheck, MultiTab.INTERVAL);\r\n\r\n // エラー時のボタン遷移先\r\n this.SetErrorPageInfo();\r\n\r\n Logger.log(\"初期化メソッド 開始\");\r\n\r\n // ローディングダイアログ開始\r\n util.dialogUtil.showLoading();\r\n\r\n // gigyaイベントリスナー登録\r\n if (this._retailerConfig.id == \"0\") {\r\n gigya.socialize.addEventHandlers({\r\n onLogin: util.common.onLoginHandlerWithSave\r\n //onHide: util.common.onHideHandler\r\n });\r\n }\r\n\r\n // リテーラ別の初期処理\r\n this.initRetailer();\r\n\r\n // F5リロード判定\r\n this.doReloadedAccess = this.doReloaded();\r\n // F5リロード監視\r\n this.unloadHandlerInit();\r\n\r\n if (this._usePcDesign) {\r\n // PC用\r\n // vueオブジェクト生成\r\n this.createVueForPc()\r\n }\r\n else {\r\n // SP用\r\n // vueオブジェクト生成\r\n this.createVueForSp()\r\n }\r\n\r\n\r\n // 画像処理準備\r\n this._objectManiLogic.init(this._vue, this.sonbpIfController, this._usePcDesign, this.authToken);\r\n this._photoLogic.init(this._vue, this.sonbpIfController, this._usePcDesign, this.authToken);\r\n this._myStampLogic.init(this._vue, this.sonbpIfController, this._usePcDesign, this.authToken);\r\n this._tegakiStampLogic.init(this._vue, this.sonbpIfController, this._usePcDesign, this.authToken);\r\n this._mstStampLogic.init(this._vue, this.sonbpIfController, this._usePcDesign, this.authToken);\r\n this._senderLogic.init(this._vue, this.sonbpIfController, this._usePcDesign, this.authToken);\r\n this._greetingLogic.init(this._vue, this.sonbpIfController, this._usePcDesign, this.authToken);\r\n\r\n // 外字処理準備\r\n this._gaijiLogic.Init(this._vue);\r\n\r\n // 保存処理\r\n this._saveLogic.init(this._vue, this.sonbpIfController, this._usePcDesign, this.authToken);\r\n\r\n\r\n // ウィンドウのリサイズイベントハンドラ登録\r\n this.resizeWindowInit();\r\n\r\n Logger.log(\"初期化メソッド 終了\");\r\n }\r\n\r\n /**\r\n * F5リロードイベントとして[beforeunload]イベントを監視\r\n * */\r\n private unloadHandlerInit(): void {\r\n\r\n let that: editController = this;\r\n let func = function () {\r\n that.unloadHandlerFunc(that);\r\n };\r\n window.removeEventListener('beforeunload', func);\r\n window.addEventListener('beforeunload', func);\r\n }\r\n\r\n /**\r\n * [beforeunload]イベント処理本体\r\n * @param contoroller :editController\r\n */\r\n private unloadHandlerFunc(contoroller: editController): void {\r\n if (contoroller.doUnloadEventFunc) {\r\n const dtNow: Date = new Date();\r\n sessionStorage.setItem(EditConst.SESSION_STORAGE_KEY_RELOADED, dtNow.toUTCString());\r\n }\r\n }\r\n\r\n /**\r\n * F5リロード判定\r\n */\r\n private doReloaded(): boolean {\r\n\r\n // 取得\r\n const beforeunloadVal: string = sessionStorage.getItem(EditConst.SESSION_STORAGE_KEY_RELOADED);\r\n Logger.debug(\"beforeunload [\" + beforeunloadVal + \"]\");\r\n // クリア\r\n sessionStorage.setItem(EditConst.SESSION_STORAGE_KEY_RELOADED, \"\");\r\n\r\n return beforeunloadVal ? true : false;\r\n }\r\n\r\n /**\r\n * F5リロード判定\r\n * (IE と safari は未対応)\r\n */\r\n private doReloadedForWin(): boolean {\r\n\r\n let result: boolean = false;\r\n\r\n if (!performance) {\r\n return result;\r\n }\r\n if (!performance.getEntriesByType) {\r\n return result;\r\n }\r\n if (typeof performance.getEntriesByType !== \"function\") {\r\n return result;\r\n }\r\n\r\n const nagigationList: PerformanceEntryList = performance.getEntriesByType(\"navigation\");\r\n if (nagigationList) {\r\n\r\n nagigationList.forEach((navi: any) => {\r\n\r\n Logger.debug(\"navigation[\" + JSON.stringify(navi) + \"]\");\r\n\r\n switch (navi.type) {\r\n case \"navigate\":\r\n // 通常アクセス\r\n break;\r\n case \"reload\":\r\n // 更新によるアクセス\r\n result = true;\r\n break;\r\n case \"back_forward\":\r\n // 戻る・進むでのページ移動アクセス\r\n break;\r\n case \"prerender\":\r\n // linkタグ rel=\"prerender\"での事前アクセス\r\n break;\r\n }\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n\r\n /**\r\n * vueオブジェクト生成(PC用)\r\n */\r\n private createVueForPc():void {\r\n\r\n let that = this;\r\n\r\n // vueオブジェクト生成\r\n this._vue = new Vue({\r\n el: this.ELEMENT_NAME,\r\n data: {\r\n FrameId: {\r\n val: this.frameId,\r\n top: \"\",\r\n },\r\n CanvasHeight: \"559px\",\r\n CanvasWidth: \"378px\",\r\n OperationHelpUrl: this.operationHelpUrl,\r\n PrintWarningUrl: this.printWarningUrl,\r\n UploadPhotoList: this.uploadPhotoList,\r\n UploadMyStampList: this.uploadMyStampList,\r\n UploadTegakiStampList: this.uploadTegakiStampList,\r\n MasterStampList: [],\r\n HideLabel: EditConst.HIDE_AREA_FADE_OUT,\r\n\r\n // ヘッダーメニュー\r\n Header: {\r\n Logo1Url: this._logo1Url,\r\n Logo2Url: this._logo2Url,\r\n },\r\n\r\n // メニュー活性制御\r\n ActiveSetPhotoMenu: true,\r\n ActiveManiPhotoMenu: false,\r\n ActiveGreetingMenu: false,\r\n ActiveSenderMenu: false,\r\n ActiveStampMenu: false,\r\n ActiveMyStampMenu: false,\r\n ActiveTegakiStampMenu: false,\r\n ActiveFinishSelectMenu: false,\r\n\r\n // 赤枠のガイダンスが表示済みかどうか\r\n ShowedImgGuidance : false,\r\n\r\n // 各種表示制御\r\n Show: {\r\n // フルスクリーンガイダンス\r\n FirstGuidance: false,\r\n // 中央ペイン ガイダンス\r\n BalloonGuidance: true,\r\n // 左ペイン\r\n PhotoList: false,\r\n // 右ペイン あいさつ文入力パネル\r\n GreetingPanel: false,\r\n // 右ペイン 差出人情報入力パネル\r\n SenderPanel: false,\r\n // 右ペイン スタンプ選択パネル\r\n StampPanel: false,\r\n // 手書き色変更パネル(PC版は未使用)\r\n TegakiColorPanel: false,\r\n // 右ペイン 隠すボタン\r\n HiddenButton: false,\r\n // 右ペイン 操作メニュー\r\n ToolMenu: false,\r\n // 右ペイン 操作メニュー :画像入替・追加\r\n SetPhotoMenu: true,\r\n // 右ペイン 操作メニュー :画像編集\r\n ManiPhotoMenu: true,\r\n // 右ペイン 操作メニュー :挨拶文編集\r\n GreetingMenu: true,\r\n // 右ペイン 操作メニュー :差出人情報編集\r\n SenderMenu: true,\r\n // 右ペイン 操作メニュー :スタンプ\r\n StampMenu: true,\r\n // 右ペイン 操作メニュー :Myステッカー\r\n MyStampMenu: true,\r\n // 右ペイン 操作メニュー :手書きスタンプ\r\n TegakiStampMenu: true,\r\n\r\n // 右ペイン 操作メニュー :仕上がり選択\r\n FinishSelectMenu: false,\r\n\r\n // 右ペイン オブジェクト操作パネル\r\n OparatePallet: false,\r\n // 右ペイン オブジェクト操作パネル\r\n OparatePalletChangeBright: false,\r\n // 右ペイン オブジェクト操作パネル :スタンプ削除パレット\r\n OparatePalletDelStamp: false,\r\n // 右ペイン オブジェクト操作パネル :文字色パレット\r\n OparatePalletCharColor: false,\r\n // 右ペイン オブジェクト操作パネル :手書きスタンプ色パレット\r\n OparatePalletTegakiColor: false,\r\n // 右ペイン オブジェクト操作パネル :編集の初期化パレット\r\n OparatePalletClear: false,\r\n // 右ペイン オブジェクト操作パネル :補正しないパレット\r\n OparatePalletPhotoCorrect: false,\r\n // 右ペイン オブジェクト操作パネル :枠ぴったりパレット\r\n OparatePalletPitaCorrect: false,\r\n // 右ペイン オブジェクト操作パネル :仕上がり選択\r\n OparatePalletFinishSelect: true,\r\n // 右ペイン オブジェクト操作パネル :仕上がり選択:印刷ボタン\r\n OparatePalletFinishSelectPrint: true,\r\n // 右ペイン オブジェクト操作パネル :仕上がり選択:銀塩ボタン\r\n OparatePalletFinishSelectGinen: true,\r\n // 右ペイン オブジェクト操作パネル :回転・拡縮・移動\r\n OparatePalletTopPart: false,\r\n // 右ペイン オブジェクト操作パネル :文字色(フチ文字色)カラー\r\n ColorPanel: false,\r\n // 右ペイン オブジェクト操作パネル :カバー(全体)\r\n OparatePalletCover: false,\r\n // 右ペイン オブジェクト操作パネル :カバー(上部)\r\n OparatePalletCover4Top: false,\r\n // 右ペイン オブジェクト操作パネル :カバー(下部)\r\n OparatePalletCover4Bottom: false,\r\n\r\n // 右ペイン あいさつ文例集\r\n GreetingDialog: false,\r\n // ダイアログエリア\r\n DialogArea: false,\r\n // メッセージダイアログ\r\n MessageDialog: false,\r\n // 赤枠の説明文パネル\r\n ImgGuidance: true,\r\n\r\n // キタムラ専用処理判別用フラグ\r\n IsKitamura: this._retailerConfig.id === \"1\" ? true : false,\r\n\r\n /*\r\n * デザインマスタにて表示有無が決まるもの\r\n */\r\n // [デザイン強制] 右ペイン 操作メニュー :画像補正するしない\r\n PhotoI2AsDsn: true,\r\n // [デザイン強制] 右ペイン 操作メニュー :挨拶文編集\r\n GreetingMenuAsDsn: true,\r\n // [デザイン強制] 右ペイン 操作メニュー :スタンプ\r\n StampMenuAsDsn: true,\r\n // [デザイン強制] 右ペイン 操作メニュー :Myステッカー\r\n MyStampMenuAsDsn: true,\r\n // [デザイン強制] 右ペイン 操作メニュー :手書きスタンプ\r\n TegakiStampMenuAsDsn: true,\r\n\r\n // 操作方法の表示(空の場合は表示しない)\r\n OperationInfo: this._retailerConfig.operationInfo.edit ? true : false,\r\n\r\n // 保存ボタンの表示制御(1枚無料は表示させない)\r\n SaveButton: false,\r\n\r\n // 明るさ調整用\r\n OparatePalletBrightCover: false,\r\n\r\n // 自動補正\r\n IsImageAutoFilter: true,\r\n\r\n // 枠ぴったり\r\n IsImagePita: false,\r\n\r\n // 写真スタンプ編集中、または手書き編集中\r\n IsShowIframePanel: false,\r\n },\r\n\r\n\r\n // 画像選択モード/削除画像選択モード切り替え\r\n UploadListModeSelect: true,\r\n // 削除画像選択モード OKボタン\r\n EnableUploadListTrashOK: false,\r\n // 選択した写真スタンプのファイルID\r\n MystampFileIdSelected: \"\",\r\n // 画像補正しないボタンの活性制御\r\n EnablePhotoCorrect: false,\r\n EnablePitaCorrect: false,\r\n PhotoCorrectCaption: EditConst.PHOTO_CORRECT_CAPTION_PC_OFF,\r\n EnableNextPageBtn: false,\r\n // 画像の明るさ\r\n PhotoBright: 0,\r\n isBrightDownDisabled: false,\r\n isBrightUpDisabled: false,\r\n\r\n // Myステッカー次回から表示しない\r\n ConfirmMyStampCheckbox: false,\r\n\r\n // 手書きスタンプ用 次回から表示しない\r\n ConfirmTegakiStampCheckbox: false,\r\n\r\n // オブジェクト操作パレットの幅操作\r\n OparatePalletWide: true,\r\n\r\n FinishSelect: {\r\n isGinen: true,\r\n },\r\n\r\n // ダイアログ\r\n DialogMessage: \"\",\r\n DialogYesBtnCaption: \"OK\",\r\n DialogNoBtnCaption: \"キャンセル\",\r\n\r\n // 色定義一覧\r\n ColorOptions: [],\r\n // フォント定義一覧\r\n FontOptions: [],\r\n // 文字色パレット:選択色\r\n SelectCharColor: \"\",\r\n // フチ文字色パレット:選択色\r\n SelectOutlineCharColor: \"\",\r\n // 手書きスタンプ色パレット:選択色\r\n SelectTegakiColor: \"\",\r\n\r\n AlignOptionsY: [\r\n { code: \"0\", label: EditConst.ALIGN_Y_LEFT },\r\n { code: \"1\", label: EditConst.ALIGN_Y_CENTER },\r\n { code: \"2\", label: EditConst.ALIGN_Y_RIGHT },\r\n ],\r\n AlignOptionsT: [\r\n { code: \"0\", label: EditConst.ALIGN_T_TOP },\r\n { code: \"1\", label: EditConst.ALIGN_T_MIDDLE },\r\n { code: \"2\", label: EditConst.ALIGN_T_BOTTOM },\r\n ],\r\n CharLayoutOptions: [\r\n { code: \"1\", label: EditConst.CHAR_LAYOUT_T },\r\n { code: \"0\", label: EditConst.CHAR_LAYOUT_Y },\r\n ],\r\n CharLayoutOptionsEx: [\r\n { code: \"1\", label: EditConst.CHAR_LAYOUT_T },\r\n { code: \"0\", label: EditConst.CHAR_LAYOUT_Y },\r\n { code: \"2\", label: EditConst.CHAR_LAYOUT_CY },\r\n ],\r\n\r\n // あいさつ文\r\n GreetingInfo: {\r\n FontSample: \"\",\r\n AlignY: EditConst.ALIGN_Y_LEFT,\r\n AlignT: EditConst.ALIGN_T_TOP,\r\n CharLayout: EditConst.CHAR_LAYOUT_Y,\r\n Font: \"\",\r\n FontSize: EditConst.FONT_SIZE_DEFAULT_Y,\r\n OutlineFont: false,\r\n Text: \"\",\r\n ShowAlignY: true,\r\n SampleList: [],\r\n UpdBtnEnable: false,\r\n DelBtnEnable: false,\r\n SampleSelNo: \"\",\r\n fade: {\r\n In: false,\r\n Out: false,\r\n }\r\n },\r\n\r\n // 差出人\r\n ContactOptions: [\r\n { code: EditConst.CONTACT_TEL_VAL, label: EditConst.CONTACT_TEL_DISP },\r\n { code: EditConst.CONTACT_CELLULAR_VAL, label: EditConst.CONTACT_CELLULAR_DISP },\r\n { code: EditConst.CONTACT_FAX_VAL, label: EditConst.CONTACT_FAX_DISP },\r\n { code: EditConst.CONTACT_TEL_FAX_VAL, label: EditConst.CONTACT_TEL_FAX_DISP },\r\n ],\r\n SenderInfo: {\r\n IsNormalInput: true,\r\n ShowSenderAlignY: true,\r\n Setting: {\r\n Font: \"\",\r\n FontSample: \"\",\r\n FontSize: EditConst.FONT_SIZE_DEFAULT_Y,\r\n CharLayout: EditConst.CHAR_LAYOUT_Y,\r\n CharLayoutEx: EditConst.CHAR_LAYOUT_Y,\r\n AlignY: EditConst.ALIGN_Y_LEFT,\r\n AlignCY: EditConst.ALIGN_Y_CENTER,\r\n AlignT: EditConst.ALIGN_T_MIDDLE,\r\n OutlineFont: false,\r\n },\r\n NormalInput: {\r\n PersonalUse: true,\r\n ZipCode1: \"\",\r\n ZipCode2: \"\",\r\n Address1: \"\",\r\n Address2: \"\",\r\n Address3: \"\",\r\n Company: {\r\n Name: \"\",\r\n Department: \"\",\r\n Position: \"\"\r\n },\r\n Names: [\r\n { LastName: \"\", FirstName: \"\", LastNameKana: \"\", FirstNameKana: \"\", PS: \"\" },\r\n { LastName: \"\", FirstName: \"\", LastNameKana: \"\", FirstNameKana: \"\", PS: \"\" },\r\n { LastName: \"\", FirstName: \"\", LastNameKana: \"\", FirstNameKana: \"\", PS: \"\" },\r\n { LastName: \"\", FirstName: \"\", LastNameKana: \"\", FirstNameKana: \"\", PS: \"\" },\r\n { LastName: \"\", FirstName: \"\", LastNameKana: \"\", FirstNameKana: \"\", PS: \"\" },\r\n { LastName: \"\", FirstName: \"\", LastNameKana: \"\", FirstNameKana: \"\", PS: \"\" },\r\n ],\r\n Contact: [\r\n { Type: EditConst.CONTACT_TEL_DISP, Tel1: \"\", Tel2: \"\", Tel3: \"\" },\r\n { Type: EditConst.CONTACT_TEL_DISP, Tel1: \"\", Tel2: \"\", Tel3: \"\" },\r\n ],\r\n Email: {\r\n Mail1: \"\",\r\n Mail2: \"\",\r\n },\r\n },\r\n FreeInput: \"\",\r\n DelBtnEnable: false,\r\n fade: {\r\n In: false,\r\n Out: false,\r\n }\r\n },\r\n\r\n // スタンプ関連\r\n Stamp: {\r\n CategoryOptions: [],\r\n Cagegory: \"\",\r\n CagegoryAll: this.STAMP_CATEGORY_ALL,\r\n fade: {\r\n In: false,\r\n Out: false,\r\n }\r\n },\r\n\r\n // Myステッカー関連\r\n MyStamp: {\r\n fade: {\r\n In: false,\r\n Out: false,\r\n }\r\n },\r\n\r\n // 手書きスタンプ関連\r\n TegakiStamp: {\r\n fade: {\r\n In: false,\r\n Out: false,\r\n }\r\n },\r\n\r\n // 仕上がり説明\r\n ReplaceImgGuideBaloon: {\r\n top: \"0\",\r\n left: \"0\",\r\n },\r\n\r\n ReplaceGuidanceBalloon: {\r\n left: \"0\",\r\n top: \"0\"\r\n },\r\n ImgGuidanceMessage: \"\",\r\n\r\n EnableOnChangeForGreeting: true,\r\n EnableOnChangeForSender: true\r\n\r\n },\r\n methods: {\r\n // ヘッダー&フッター関連\r\n btnClickReturnFlow: (event: JQueryEventObject) => {\r\n this.btnClickReturnFlow(event);\r\n },\r\n btnClickNextFlow: (event: JQueryEventObject) => {\r\n this.btnClickNextFlow(event);\r\n },\r\n btnClickSave: (event: JQueryEventObject) => {\r\n that._saveLogic.btnClickSave(event);\r\n },\r\n btnClickOperationHelp: (event: JQueryEventObject) => {\r\n this.btnClickOperationHelp(event);\r\n },\r\n linkClickPrintWarning: (event: JQueryEventObject) => {\r\n this.linkClickPrintWarning(event);\r\n },\r\n // ヘッダー\r\n btnClickReturnTop: (event: JQueryEventObject) => {\r\n this.btnClickReturnTop(event);\r\n },\r\n btnClickFaq: (event: JQueryEventObject) => {\r\n this.btnClickFaq(event);\r\n },\r\n btnClickOrderHistory: (event: JQueryEventObject) => {\r\n this.btnClickOrderHistory(event);\r\n },\r\n // PC用\r\n btnClickReturnFlowFromGuidance: (event: JQueryEventObject) => {\r\n this.btnClickReturnFlowFromGuidance(event);\r\n },\r\n\r\n // ツールメニュー関連\r\n btnClickSetPhotoMenu: (event: JQueryEventObject) => {\r\n that.reqDelAllclear(EDIT_MODE_KIND.SET_PHOTO);\r\n that._photoLogic.btnClickSetPhotoMenu(event);\r\n },\r\n btnClickManiPhotoMenu: (event: JQueryEventObject) => {\r\n that.reqDelAllclear(EDIT_MODE_KIND.MANI_PHOTO);\r\n that._photoLogic.btnClickManiPhotoMenu(event);\r\n },\r\n btnClickGreetingMenu: (event: JQueryEventObject) => {\r\n that._greetingLogic.btnClickGreetingMenu(event);\r\n },\r\n btnClickSenderMenu: (event: JQueryEventObject) => {\r\n that._senderLogic.btnClickSenderMenu(event);\r\n },\r\n btnClickStampMenu: (event: JQueryEventObject) => {\r\n that._mstStampLogic.btnClickStampMenu(event);\r\n },\r\n btnClickMyStampMenu: (event: JQueryEventObject) => {\r\n that.reqDelAllclear(EDIT_MODE_KIND.MYSTAMP);\r\n that._myStampLogic.btnClickStampMenu(event);\r\n },\r\n btnClickTegakiStampMenu: (event: JQueryEventObject) => {\r\n that.reqDelAllclear(EDIT_MODE_KIND.FONTGENIC);\r\n that._tegakiStampLogic.btnClickStampMenu(event);\r\n },\r\n btnClickFinishSelectMenu: (event: JQueryEventObject) => {\r\n this.btnClickFinishSelectMenu(event);\r\n },\r\n btnClickHideInputArea: (event: JQueryEventObject) => {\r\n this.btnClickHideInputArea(event);\r\n },\r\n onInputZipCode1: (event: JQueryEventObject) => {\r\n that._senderLogic.onInputZipCode1(event);\r\n },\r\n onInputZipCode2: (event: JQueryEventObject) => {\r\n that._senderLogic.onInputZipCode2(event);\r\n },\r\n btnClickSearchZipToAddress: (event: JQueryEventObject) => {\r\n that._senderLogic.btnClickSearchZipToAddress(event);\r\n },\r\n onClickImgGuidance: (event: JQueryEventObject) => {\r\n this.btnClickImgGuidance(event);\r\n },\r\n\r\n // 画像一覧関連\r\n imgClickUploadPhoto: (event: JQueryEventObject, fileId: string) => {\r\n that._photoLogic.imgClickUploadImage(event, fileId);\r\n },\r\n imgClickUploadPhotoCover: (event: JQueryEventObject, fileId: string) => {\r\n that._photoLogic.imgClickUploadListImageCoverPc(event, fileId);\r\n },\r\n onChangeUploadFileObj: (event: JQueryEventObject) => {\r\n that._photoLogic.onChangeUploadFileObj(event);\r\n },\r\n onDragStartPhoto: (event: DragEvent, fileId: string) => {\r\n that._photoLogic.onDragStartPhoto(event, fileId);\r\n },\r\n btnClickPhotoListTrash: (event: JQueryEventObject) => {\r\n that._photoLogic.btnClickUploadListTrashPc(event);\r\n },\r\n btnClickPhotoListTrashOK: (event: JQueryEventObject) => {\r\n that._photoLogic.btnClickUploadListTrashOK(event);\r\n },\r\n btnClickPhotoListTrashCancel: (event: JQueryEventObject) => {\r\n that._photoLogic.btnClickUploadListTrashCancelPc(event);\r\n },\r\n\r\n // Myステッカー関連\r\n imgClickUploadMyStamp: (event: JQueryEventObject, fileId: string) => {\r\n if (that._vue.$data.UploadListModeSelect) { \r\n that._myStampLogic.imgClickUploadImageForMystampSelectedPc(event, fileId);\r\n } else {\r\n that._myStampLogic.imgClickUploadImage(event, fileId);\r\n }\r\n },\r\n imgClickUploadMyStampCover: (event: JQueryEventObject, fileId: string) => {\r\n that._myStampLogic.imgClickUploadListImageCoverPc(event, fileId);\r\n },\r\n onChangeUploadMyStampObj: (event: JQueryEventObject) => {\r\n that._myStampLogic.onChangeUploadFileObj(event);\r\n },\r\n btnClickMyStampListTrash: (event: JQueryEventObject) => {\r\n that._myStampLogic.btnClickUploadListTrashPc(event);\r\n },\r\n btnClickMyStampListTrashOK: (event: JQueryEventObject) => {\r\n that._myStampLogic.btnClickUploadListTrashOK(event);\r\n },\r\n btnClickMyStampListTrashCancel: (event: JQueryEventObject) => {\r\n that._myStampLogic.btnClickUploadListTrashCancelPc(event);\r\n },\r\n btnClickUploadMyStamp: (event: JQueryEventObject) => {\r\n that._myStampLogic.btnClickUploadMyStamp(event);\r\n },\r\n btnClickPasteMyStamp: (event: JQueryEventObject) => {\r\n that._myStampLogic.imgClickUploadImage(event, this._vue.$data.MystampFileIdSelected);\r\n for (let i: number = 0; i < this._vue.$data.UploadMyStampList.length; i++) {\r\n this._vue.$data.UploadMyStampList[i].selected = EditConst.IMG_NOSELECT;\r\n }\r\n },\r\n btnClickMyStampListEdit: (event: JQueryEventObject) => {\r\n that._myStampLogic.imgClickUploadImageForMystampEditPc(event, this._vue.$data.MystampFileIdSelected);\r\n },\r\n\r\n // 手書きスタンプ関連\r\n imgClickUploadTegakiStamp: (event: JQueryEventObject, fileId: string) => {\r\n that._tegakiStampLogic.imgClickUploadImage(event, fileId);\r\n },\r\n imgClickUploadTegakiStampCover: (event: JQueryEventObject, fileId: string) => {\r\n that._tegakiStampLogic.imgClickUploadListImageCoverPc(event, fileId);\r\n },\r\n btnClickTegakiStampListTrash: (event: JQueryEventObject) => {\r\n that._tegakiStampLogic.btnClickUploadListTrashPc(event);\r\n },\r\n btnClickTegakiStampListTrashOK: (event: JQueryEventObject) => {\r\n that._tegakiStampLogic.btnClickUploadListTrashOK(event);\r\n },\r\n btnClickTegakiStampListTrashCancel: (event: JQueryEventObject) => {\r\n that._tegakiStampLogic.btnClickUploadListTrashCancelPc(event);\r\n },\r\n btnClickUploadTegakiStamp: (event: JQueryEventObject) => {\r\n that._tegakiStampLogic.btnClickUploadTegakiStamp(event);\r\n },\r\n\r\n\r\n // オブジェクト操作パネル関連\r\n btnClickRotate90: (rotateRight: boolean, event: JQueryEventObject) => {\r\n that._objectManiLogic.btnClickRotate90(rotateRight, event);\r\n },\r\n btnClickRotate1: (rotateRight: boolean, event: JQueryEventObject) => {\r\n that._objectManiLogic.btnClickRotate1(rotateRight, event);\r\n },\r\n btnClickScale: (scaleUp: boolean, event: JQueryEventObject) => {\r\n that._objectManiLogic.btnClickScale(scaleUp, event);\r\n },\r\n btnClickMove: (whichMove: number, event: JQueryEventObject) => {\r\n that._objectManiLogic.btnClickMove(whichMove, event);\r\n },\r\n btnClickChangeBright: (bright: boolean, event: JQueryEventObject) => {\r\n that._photoLogic.btnClickChangeBright(bright, event);\r\n },\r\n btnClickEditClear: (event: JQueryEventObject) => {\r\n that._photoLogic.btnClickEditClear(event);\r\n },\r\n btnClickRemovePhoto: (event: JQueryEventObject) => {\r\n that._photoLogic.btnClickRemovePhoto(event);\r\n },\r\n btnClickPhotoCorrect: (doFilter: boolean, event: JQueryEventObject) => {\r\n if (doFilter == this._vue.$data.Show.IsImageAutoFilter) {\r\n return;\r\n }\r\n that._photoLogic.btnClickPhotoCorrect(event);\r\n },\r\n btnClickPitaCorrect: (doPita: boolean, event: JQueryEventObject) => {\r\n if (doPita == this._vue.$data.Show.IsImagePita) {\r\n return;\r\n }\r\n that._photoLogic.btnClickPitaCorrect(doPita, event);\r\n },\r\n btnClickFinishSelect: (doGinen: boolean, event: JQueryEventObject) => {\r\n that._photoLogic.btnClickFinishSelect(doGinen, event);\r\n this.setImgGuidanceMesage(doGinen);\r\n },\r\n\r\n // あいさつ文パネル関連\r\n onChangeGreetingFont: (event: JQueryEventObject) => {\r\n that._greetingLogic.onChangeGreetingFont(event);\r\n },\r\n onChangeGreetingCharLayout: (event: JQueryEventObject) => {\r\n that._greetingLogic.onChangeGreetingCharLayout(event);\r\n },\r\n btnClickGreetingSample: (event: JQueryEventObject) => {\r\n that._greetingLogic.btnClickGreetingSample(event);\r\n },\r\n btnClickGreetingSet: (requesNew: boolean, event: JQueryEventObject) => {\r\n that._greetingLogic.btnClickGreetingSet(requesNew, event);\r\n },\r\n btnClickGreetingDelete: (event: JQueryEventObject) => {\r\n that._greetingLogic.btnClickGreetingDelete(event);\r\n },\r\n btnClickGreetingSampleOK: (event: JQueryEventObject) => {\r\n that._greetingLogic.btnClickGreetingSampleOK(event);\r\n },\r\n btnClickGreetingSampleCancel: (event: JQueryEventObject) => {\r\n that._greetingLogic.btnClickGreetingSampleCancel(event);\r\n },\r\n imgClickGreetingSample: (no: string) => {\r\n that._greetingLogic.imgClickGreetingSample(no);\r\n },\r\n btnClickGreetingFontSize: (isPlus: boolean, event: JQueryEventObject) => {\r\n that._greetingLogic.btnClickGreetingFontSize(isPlus, event);\r\n },\r\n\r\n // 差出人パネル関連\r\n btnClickSenderInputType: (isNormal: boolean, event: JQueryEventObject) => {\r\n that._senderLogic.btnClickSenderInputType(isNormal, event);\r\n },\r\n onChangeSenderFont: (event: JQueryEventObject) => {\r\n that._senderLogic.onChangeSenderFont(event);\r\n },\r\n onChangeSenderCharLayout: (event: JQueryEventObject) => {\r\n that._senderLogic.onChangeSenderCharLayout(event);\r\n },\r\n btnClickSenderInputUse: (usePersonal: boolean, event: JQueryEventObject) => {\r\n that._senderLogic.btnClickSenderInputUse(usePersonal, event);\r\n },\r\n btnClickSenderSet: (event: JQueryEventObject) => {\r\n that._senderLogic.btnClickSenderSet(event);\r\n },\r\n btnClickSenderDelete: (event: JQueryEventObject) => {\r\n that._senderLogic.btnClickSenderDelete(event);\r\n },\r\n btnClickSenderFontSize: (isPlus: boolean, event: JQueryEventObject) => {\r\n that._senderLogic.btnClickSenderFontSize(isPlus, event);\r\n },\r\n\r\n // スタンプ関連\r\n imgClickStamp: (event: JQueryEventObject, stampId: number) => {\r\n that._mstStampLogic.imgClickStamp(event, stampId);\r\n },\r\n btnClickStampDelete: (event: JQueryEventObject) => {\r\n that._objectManiLogic.btnClickStampDelete(event);\r\n },\r\n radioClickTegakiColor: (colorId: string, event: JQueryEventObject) => {\r\n that._tegakiStampLogic.radioClickTegakiColorPc(colorId, event);\r\n },\r\n\r\n // 外字関連\r\n btnClickGaijiInput: (event: JQueryEventObject) => {\r\n that._gaijiLogic.gaijiInput(event);\r\n },\r\n\r\n // inputフォーカス時のイベント\r\n // 外字が使えるかチェック。\r\n onFocusEnableGaiji: (event: JQueryEventObject) => {\r\n let selFont = that.editInfo.master.font.find(x => x.name == that._vue.$data.SenderInfo.Setting.Font);\r\n that._gaijiLogic.gaijiButtonEnable(event, selFont.gaijiFlg);\r\n },\r\n },\r\n beforeCreate: () => {\r\n //Logger.log(\"beforeCreate()\");\r\n // 初期処理\r\n this.doOnload();\r\n },\r\n created: () => {\r\n },\r\n beforeMount: () => {\r\n },\r\n mounted: () => {\r\n },\r\n beforeUpdate: () => {\r\n },\r\n updated: () => {\r\n\r\n // 初期化直後のキャンバスサイズ調整\r\n if (this.loadComplited) {\r\n this.loadComplited = false;\r\n this.allowResizeFunc = true;\r\n // 初回の単発呼び出し\r\n this.resizeWindowHandler(this);\r\n // リテーラ別のチャットボット制御\r\n var divChatBot = document.getElementById(\"chava-root\") as HTMLDivElement;\r\n if (divChatBot) {\r\n divChatBot.style.display = this._retailerConfig.id == \"0\" ? \"block\" : \"none\";\r\n }\r\n }\r\n },\r\n beforeDestroy: () => {\r\n },\r\n destroyed: () => {\r\n },\r\n computed: {\r\n ActiveUploadPhotoList: function () {\r\n return this.UploadPhotoList.filter(p => p.deleteFlg === false);\r\n },\r\n CategoryStampList: function () {\r\n if (this.Stamp.Cagegory === this.Stamp.CagegoryAll) {\r\n return this.MasterStampList;\r\n }\r\n else {\r\n return this.MasterStampList.filter(s => s.category === this.Stamp.Cagegory);\r\n }\r\n },\r\n ActiveUploadMyStampList: function () {\r\n return this.UploadMyStampList.filter(p => p.deleteFlg === false);\r\n },\r\n ActiveUploadTegakiStampList: function () {\r\n return this.UploadTegakiStampList.filter(p => p.deleteFlg === false);\r\n },\r\n IsMystampSelected: function () {\r\n return util.relic.listFind(this.UploadMyStampList, (p: uploadPhoto) => {\r\n return p.selected === EditConst.IMG_SELECTED;\r\n });\r\n },\r\n },\r\n watch: {\r\n 'Show.IsShowIframePanel': function (newVal, oldVal) {\r\n var divChatBot = document.getElementById(\"chava-root\") as HTMLDivElement;\r\n if (divChatBot) {\r\n if (newVal) {\r\n divChatBot.style.display = \"none\";\r\n } else {\r\n divChatBot.style.display = that._retailerConfig.id == \"0\" ? \"block\" : \"none\";\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n /**\r\n * vueオブジェクト生成(SP用)\r\n */\r\n private createVueForSp(): void {\r\n\r\n let that = this;\r\n\r\n // vueオブジェクト生成\r\n this._vue = new Vue({\r\n el: this.ELEMENT_NAME,\r\n data: {\r\n // ヘッダー関連\r\n // sp\r\n Header: {\r\n Title: \"はがきの編集\"\r\n },\r\n\r\n ReplaceGaijiShortCut: {\r\n top: \"0\",\r\n left: \"0\",\r\n },\r\n FocusGaijiShortCut: \"\",\r\n // ガイダンス関連\r\n Guidance: {\r\n\r\n },\r\n ReplaceImgGuideBaloon: {\r\n top: \"0\",\r\n left: \"0\",\r\n },\r\n // 赤枠のガイダンスが表示済みかどうか\r\n ShowedImgGuidance: false,\r\n ImgGuidanceMessage:\"\",\r\n UploadPhotoList: this.uploadPhotoList,\r\n UploadMyStampList: this.uploadMyStampList,\r\n UploadTegakiStampList: this.uploadTegakiStampList,\r\n MasterStampList: [],\r\n\r\n // 各種表示制御\r\n Show: {\r\n // フルスクリーンガイダンス1\r\n Guidance1: false,\r\n // フルスクリーンガイダンス2\r\n Guidance2: false,\r\n // フルスクリーンガイダンス3\r\n Guidance3: false,\r\n // フルスクリーンガイダンス4\r\n Guidance4: false,\r\n // フルスクリーンガイダンス5\r\n Guidance5: false,\r\n // フルスクリーンロック\r\n ScreenLock: false,\r\n /// 左ペイン\r\n PhotoList: false,\r\n\r\n // sp\r\n /// 編集エリア\r\n EditArea: true,\r\n // sp\r\n // 画像削除ボタン\r\n PhotoDeleteBtn: false,\r\n // sp\r\n // Myステッカー削除ボタン\r\n MyStampListTrashBtn: false,\r\n // sp\r\n // 手書きスタンプ削除ボタン(アップロード一覧から削除するボタン)\r\n TegakiStampListTrashBtn: false,\r\n // sp\r\n // あいさつ文削除ボタン\r\n GreetingDeleteBtn: false,\r\n // あいさつ文更新ボタン\r\n GreetingUpdataBtn: false,\r\n // sp\r\n // 差出人削除ボタン\r\n SenderDeleteBtn: false,\r\n // sp\r\n // スタンプ削除ボタン\r\n StampDeleteBtn: false,\r\n // sp\r\n // 決定ボタン(ホームへ)\r\n CommitNextHomeBtn: false,\r\n \r\n // sp\r\n // デザイン選択に戻る\r\n ReturnFlowBtn: true,\r\n // sp\r\n // 編集画面のホームに戻る(モード変更なし)\r\n ReturnHomeBtn: false,\r\n // sp\r\n // 編集画面のホームに戻る(モード変更あり)\r\n ReturnHomeExBtn: false,\r\n // 編集画面のホームに戻る(モード変更なし-入替操作解除)\r\n ReturnHomeFromSwapItemBtn: false,\r\n // 画像の位置調整画面に戻る\r\n ReturnPhotoManiBtn: false,\r\n // あいさつ文の位置調整画面に戻る\r\n ReturnGreetingHomeBtn: false,\r\n // 差出人の位置調整画面に戻る\r\n ReturnSenderHomeBtn: false,\r\n // スタンプの位置調整画面に戻る\r\n ReturnStampHomeBtn: false,\r\n // Myステッカーの位置調整画面に戻る\r\n ReturnMyStampHomeBtn: false,\r\n // 手書きスタンプの位置調整画面に戻る\r\n ReturnTegakiStampHomeBtn: false,\r\n\r\n // sp\r\n // 次へ(プレビュー画面へ)\r\n NextFlowBtn: true,\r\n // sp\r\n // (画像一覧から)次へ\r\n NextHomeFromImgListBtn: false,\r\n // sp\r\n // (Myステッカー一覧から)次へ\r\n NextHomeFromMyStampListBtn: false,\r\n // sp\r\n // (手書きスタンプ一覧から)次へ\r\n NextHomeFromTegakiStampListBtn: false,\r\n // sp\r\n // フッターメニュー\r\n FooterMenu: true,\r\n // sp\r\n // メッセージエリア\r\n MessageArea: false,\r\n // sp\r\n SenderGaijiMenu: false,\r\n \r\n // 右ペイン あいさつ文入力パネル\r\n GreetingPanel: false,\r\n // 右ペイン 差出人情報入力パネル\r\n SenderPanel: false,\r\n // 右ペイン スタンプ選択パネル\r\n StampPanel: false,\r\n // 手書き色変更パネル(SP版のみ)\r\n TegakiColorPanel: false,\r\n // 右ペイン 隠すボタン\r\n HiddenButton: false,\r\n // 右ペイン 操作メニュー\r\n ToolMenu: false,\r\n // 右ペイン 操作メニュー :画像入替・追加\r\n SetPhotoMenu: true,\r\n //// 右ペイン 操作メニュー :画像編集\r\n //ManiPhotoMenu: true,\r\n // 右ペイン 操作メニュー :挨拶文編集\r\n GreetingMenu: true,\r\n // 右ペイン 操作メニュー :差出人情報編集\r\n SenderMenu: true,\r\n // 右ペイン 操作メニュー :スタンプ\r\n StampMenu: true,\r\n // 右ペイン 操作メニュー :Myステッカー\r\n MyStampMenu: true,\r\n // 右ペイン 操作メニュー :手書きスタンプ\r\n TegakiStampMenu: true,\r\n // 右ペイン 操作メニュー :仕上がり選択\r\n FinishSelectMenu: false,\r\n\r\n // SP\r\n // 画像選択時の操作メニュー\r\n EditImageMenu: false,\r\n // SP\r\n // 画像操作の入替メニュー\r\n SwapItemMenu: true,\r\n\r\n // 右ペイン オブジェクト操作パネル\r\n OparatePallet: false,\r\n // 右ペイン オブジェクト操作パネル :明るさ調整パネル\r\n OparatePalletChangeBright: false,\r\n // 右ペイン オブジェクト操作パネル :スタンプ削除パレット\r\n OparatePalletDelStamp: false,\r\n // 右ペイン オブジェクト操作パネル :文字色パレット\r\n OparatePalletCharColor: false,\r\n // 右ペイン オブジェクト操作パネル :手書きスタンプ色パレット\r\n OparatePalletTegakiColor: false,\r\n // 右ペイン オブジェクト操作パネル :編集の初期化パレット\r\n OparatePalletClear: false,\r\n // 右ペイン オブジェクト操作パネル :補正しないパレット\r\n OparatePalletPhotoCorrect: false,\r\n // 右ペイン オブジェクト操作パネル :枠ぴったりパレット\r\n OparatePalletPitaCorrect: false,\r\n // 右ペイン オブジェクト操作パネル :仕上がり選択\r\n OparatePalletFinishSelect: true,\r\n // 右ペイン オブジェクト操作パネル :仕上がり選択:印刷ボタン\r\n OparatePalletFinishSelectPrint: true,\r\n // 右ペイン オブジェクト操作パネル :仕上がり選択:銀塩ボタン\r\n OparatePalletFinishSelectGinen: true,\r\n // 右ペイン オブジェクト操作パネル :回転・拡縮・移動\r\n OparatePalletTopPart: false,\r\n // 右ペイン オブジェクト操作パネル :文字色(フチ文字色)カラー\r\n ColorPanel: false,\r\n //// 右ペイン オブジェクト操作パネル :カバー(全体)\r\n OparatePalletCover: false,\r\n //// 右ペイン オブジェクト操作パネル :カバー(上部)\r\n //OparatePalletCover4Top: false,\r\n //// 右ペイン オブジェクト操作パネル :カバー(下部)\r\n //OparatePalletCover4Bottom: false,\r\n\r\n OparatePalletBrightCover: false,\r\n\r\n // 自動補正\r\n IsImageAutoFilter: true,\r\n\r\n // 枠ぴったり\r\n IsImagePita: false,\r\n\r\n // SP\r\n // 右ペイン オブジェクト操作パネル :アイテム追加(あいさつ文)\r\n OparatePalletAddGreetingItem: false,\r\n // 右ペイン オブジェクト操作パネル :アイテム追加(差出人)\r\n //OparatePalletAddSenderItem: false,\r\n // 右ペイン オブジェクト操作パネル :アイテム追加(スタンプ)\r\n OparatePalletAddStampItem: false,\r\n // 右ペイン オブジェクト操作パネル :アイテム追加(Myステッカー)\r\n OparatePalletAddMyStampItem: false,\r\n // 右ペイン オブジェクト操作パネル :アイテム追加(手書きスタンプ)\r\n OparatePalletAddTegakiStampItem: false,\r\n // 手書き色変更(SPモードのみ)\r\n OparatePalletChangeTegakiStampColor: false,\r\n\r\n // 右ペイン オブジェクト操作パネル :アイテム削除\r\n //OparatePalletDelItem: false,\r\n // 右ペイン オブジェクト操作パネル :アイテム編集(あいさつ文)\r\n OparatePalletEditGreetingItem: false,\r\n // 右ペイン オブジェクト操作パネル :アイテム編集(差出人)\r\n OparatePalletEditSenderItem: false,\r\n // 右ペイン オブジェクト操作パネル :アイテム編集(スタンプ)\r\n //OparatePalletEditStampItem: false,\r\n\r\n // 右ペイン あいさつ文例集\r\n GreetingDialog: false,\r\n // ダイアログエリア\r\n DialogArea: false,\r\n // メッセージダイアログ\r\n //MessageDialog: false,\r\n // 赤枠の説明文パネル\r\n ImgGuidance: true,\r\n\r\n // SP\r\n StampCategoryList: false,\r\n\r\n // キタムラ専用処理判別用フラグ\r\n IsKitamura: this._retailerConfig.id === \"1\" ? true : false,\r\n\r\n /*\r\n * デザインマスタにて表示有無が決まるもの\r\n */\r\n // [デザイン強制] 右ペイン 操作メニュー :画像補正するしない\r\n PhotoI2AsDsn: true,\r\n // [デザイン強制] 右ペイン 操作メニュー :挨拶文編集\r\n GreetingMenuAsDsn: true,\r\n // [デザイン強制] 右ペイン 操作メニュー :スタンプ\r\n StampMenuAsDsn: true,\r\n // [デザイン強制] 右ペイン 操作メニュー :Myステッカー\r\n MyStampMenuAsDsn: true,\r\n // [デザイン強制] 右ペイン 操作メニュー :手書きスタンプ\r\n TegakiStampMenuAsDsn: true,\r\n\r\n // 保存ボタンの表示制御(1枚無料は表示させない)\r\n SaveButton: false,\r\n\r\n // 外字のショートカット\r\n GaijiShortCutBtn: false,\r\n\r\n // 画像自動補正表示\r\n EditImageFilterMenu: false,\r\n\r\n // 画像枠ぴったり表示\r\n EditImagePitaMenu: false,\r\n\r\n // 仕上げ選択表示\r\n FinishSelectMenuDialog: false,\r\n\r\n // 仕上げ選択アイコン表示\r\n FinishSelectMenuIcon: false,\r\n\r\n // メニューの矢印ホバー制御\r\n ScrollList: {\r\n menuList: { id: \"menuList\", isMenuScrollLeftDisabled: true, isMenuScrollRightDisabled: false, isBtnHidden: true },\r\n imgMenuList: { id: \"imgMenuList\", isMenuScrollLeftDisabled: true, isMenuScrollRightDisabled: false, isBtnHidden: true },\r\n adjustMenuList: { id: \"adjustMenuList\", isMenuScrollLeftDisabled: true, isMenuScrollRightDisabled: false, isBtnHidden: true },\r\n },\r\n\r\n // タイトル表示制御\r\n TitleMain: EditConst.TITLE_MAIN,\r\n },\r\n\r\n // 削除画像選択モード OKボタン\r\n EnableUploadListTrashOK: false,\r\n PhotoCorrectCaption: EditConst.PHOTO_CORRECT_CAPTION_SP_OFF,\r\n EnableNextPageBtn: false,\r\n\r\n // Myステッカー次回から表示しない\r\n ConfirmMyStampCheckbox: false,\r\n // 手書きスタンプ次回から表示しない\r\n ConfirmTegakiStampCheckbox: false,\r\n\r\n FinishSelect: {\r\n isGinen: true,\r\n },\r\n\r\n // 色定義一覧\r\n ColorOptions: [],\r\n // フォント定義一覧\r\n FontOptions: [],\r\n // 文字色パレット:選択色\r\n SelectCharColor: \"\",\r\n // フチ文字色パレット:選択色\r\n SelectOutlineCharColor: \"\",\r\n // 手書きスタンプ色パレット:選択色\r\n SelectTegakiColor: \"\",\r\n SelectTegakiColorSPEdit: \"\",\r\n\r\n AlignOptionsY: [\r\n { code: \"0\", label: EditConst.ALIGN_Y_LEFT },\r\n { code: \"1\", label: EditConst.ALIGN_Y_CENTER },\r\n { code: \"2\", label: EditConst.ALIGN_Y_RIGHT },\r\n ],\r\n AlignOptionsT: [\r\n { code: \"0\", label: EditConst.ALIGN_T_TOP },\r\n { code: \"1\", label: EditConst.ALIGN_T_MIDDLE },\r\n { code: \"2\", label: EditConst.ALIGN_T_BOTTOM },\r\n ],\r\n CharLayoutOptions: [\r\n { code: \"1\", label: EditConst.CHAR_LAYOUT_T },\r\n { code: \"0\", label: EditConst.CHAR_LAYOUT_Y },\r\n ],\r\n CharLayoutOptionsEx: [\r\n { code: \"1\", label: EditConst.CHAR_LAYOUT_T },\r\n { code: \"0\", label: EditConst.CHAR_LAYOUT_Y },\r\n { code: \"2\", label: EditConst.CHAR_LAYOUT_CY },\r\n ],\r\n\r\n // あいさつ文\r\n GreetingInfo: {\r\n FontSample: \"\",\r\n AlignY: EditConst.ALIGN_Y_LEFT,\r\n AlignT: EditConst.ALIGN_T_TOP,\r\n CharLayout: EditConst.CHAR_LAYOUT_Y,\r\n Font: \"\",\r\n FontSize: EditConst.FONT_SIZE_DEFAULT_Y,\r\n OutlineFont: false,\r\n Text: \"\",\r\n ShowAlignY: true,\r\n SampleList: [],\r\n UpdBtnEnable: false,\r\n DelBtnEnable: false,\r\n SampleSelNo: \"\",\r\n },\r\n\r\n // 差出人\r\n ContactOptions: [\r\n { code: EditConst.CONTACT_TEL_VAL, label: EditConst.CONTACT_TEL_DISP },\r\n { code: EditConst.CONTACT_CELLULAR_VAL, label: EditConst.CONTACT_CELLULAR_DISP },\r\n { code: EditConst.CONTACT_FAX_VAL, label: EditConst.CONTACT_FAX_DISP },\r\n { code: EditConst.CONTACT_TEL_FAX_VAL, label: EditConst.CONTACT_TEL_FAX_DISP },\r\n ],\r\n // Sp\r\n FormatOptions: [\r\n { code: EditConst.SENDER_TYPE_PORSONAL, label: EditConst.SENDER_TYPE_PORSONAL_STR },\r\n { code: EditConst.SENDER_TYPE_CORP, label: EditConst.SENDER_TYPE_CORP_STR },\r\n { code: EditConst.SENDER_TYPE_FREE, label: EditConst.SENDER_TYPE_FREE_STR },\r\n ],\r\n SenderInfo: {\r\n IsNormalInput: true,\r\n ShowSenderAlignY: true,\r\n Setting: {\r\n Font: \"\",\r\n FontSample: \"\",\r\n FontSize: EditConst.FONT_SIZE_DEFAULT_Y,\r\n CharLayout: EditConst.CHAR_LAYOUT_Y,\r\n CharLayoutEx: EditConst.CHAR_LAYOUT_Y,\r\n AlignY: EditConst.ALIGN_Y_LEFT,\r\n AlignCY: EditConst.ALIGN_Y_CENTER,\r\n AlignT: EditConst.ALIGN_T_MIDDLE,\r\n OutlineFont: false,\r\n // SP\r\n Format: EditConst.SENDER_TYPE_PORSONAL_STR,\r\n },\r\n NormalInput: {\r\n PersonalUse: true,\r\n ZipCode1: \"\",\r\n ZipCode2: \"\",\r\n Address1: \"\",\r\n Address2: \"\",\r\n Address3: \"\",\r\n Company: {\r\n Name: \"\",\r\n Department: \"\",\r\n Position: \"\"\r\n },\r\n Names: [\r\n { LastName: \"\", FirstName: \"\", LastNameKana: \"\", FirstNameKana: \"\", PS: \"\" },\r\n { LastName: \"\", FirstName: \"\", LastNameKana: \"\", FirstNameKana: \"\", PS: \"\" },\r\n { LastName: \"\", FirstName: \"\", LastNameKana: \"\", FirstNameKana: \"\", PS: \"\" },\r\n { LastName: \"\", FirstName: \"\", LastNameKana: \"\", FirstNameKana: \"\", PS: \"\" },\r\n { LastName: \"\", FirstName: \"\", LastNameKana: \"\", FirstNameKana: \"\", PS: \"\" },\r\n { LastName: \"\", FirstName: \"\", LastNameKana: \"\", FirstNameKana: \"\", PS: \"\" },\r\n ],\r\n Contact: [\r\n { Type: EditConst.CONTACT_TEL_DISP, Tel1: \"\", Tel2: \"\", Tel3: \"\" },\r\n { Type: EditConst.CONTACT_TEL_DISP, Tel1: \"\", Tel2: \"\", Tel3: \"\" },\r\n ],\r\n Email: {\r\n Mail1: \"\",\r\n Mail2: \"\",\r\n },\r\n },\r\n FreeInput: \"\",\r\n DelBtnEnable: false,\r\n },\r\n\r\n // スタンプ関連\r\n Stamp: {\r\n CategoryOptions: [],\r\n Cagegory: \"\",\r\n CagegoryAll: this.STAMP_CATEGORY_ALL,\r\n DelBtnEnable: false,\r\n TargetStamp: \"\",\r\n },\r\n\r\n // Myステッカー関連\r\n MyStamp: {\r\n TargetStamp: \"\",\r\n },\r\n\r\n // 手書きスタンプ関連\r\n TegakiStamp: {\r\n TargetStamp: \"\",\r\n },\r\n\r\n\r\n EnableOnChangeForGreeting: true,\r\n EnableOnChangeForSender: true,\r\n\r\n // SP\r\n // 画像入替関連\r\n SwatpItem: {\r\n doSwap: false,\r\n FromItem: \"\",\r\n ToItem: \"\",\r\n },\r\n\r\n // SP\r\n // 解像度低の場合の考慮\r\n ShortSize: false,\r\n // タッチイベント制御\r\n AllowTouchEvent: true,\r\n\r\n // 画像の明るさ\r\n PhotoBright: 0,\r\n isBrightDownDisabled: false,\r\n isBrightUpDisabled: false,\r\n },\r\n methods: {\r\n // ヘッダー&フッター関連\r\n btnClickReturnFlow: (event: JQueryEventObject) => {\r\n this.btnClickReturnFlow(event);\r\n },\r\n btnClickNextFlow: (event: JQueryEventObject) => {\r\n this.btnClickNextFlow(event);\r\n },\r\n btnClickSave: (event: JQueryEventObject) => {\r\n that._saveLogic.btnClickSave(event);\r\n },\r\n // sp\r\n btnClickReturnHome: (doSetMode: boolean, doCommit: boolean, event: JQueryEventObject) => {\r\n if (that.editMode === EDIT_MODE_KIND.SET_PHOTO) {\r\n //画像枠クリックによる一覧表示は、edit_sonbp_if.js内で完結のためVue側で検知できないため、ここで削除選択をクリアする。\r\n that.reqDelAllclear(EDIT_MODE_KIND.SET_PHOTO);\r\n }\r\n this.btnClickReturnHome(doSetMode, doCommit, event);\r\n },\r\n // sp\r\n returnPhotoManiBtn: (event: JQueryEventObject) => {\r\n that._photoLogic.returnPhotoManiBtn(event);\r\n },\r\n // sp\r\n returnGreetingHomeBtn: (event: JQueryEventObject) => {\r\n that._greetingLogic.returnGreetingHomeBtn(event);\r\n },\r\n // sp\r\n returnSenderHomeBtn: (event: JQueryEventObject) => {\r\n that._senderLogic.returnSenderHomeBtn(event);\r\n },\r\n // sp\r\n returnStampHomeBtn: (event: JQueryEventObject) => {\r\n that._mstStampLogic.returnStampHomeBtn(event);\r\n },\r\n // sp\r\n returnMyStampHomeBtn: (event: JQueryEventObject) => {\r\n this.btnClickReturnHome(true, true, event);\r\n },\r\n // sp\r\n returnTegakiStampHomeBtn: (event: JQueryEventObject) => {\r\n if (this._vue.$data.Show.TegakiColorPanel)\r\n that._tegakiStampLogic.returnStampHomeBtn(event)\r\n else\r\n this.btnClickReturnHome(true, true, event);\r\n },\r\n\r\n\r\n // ガイダンス関連\r\n // sp\r\n btnClickCloseGuidance1: (event: JQueryEventObject) => {\r\n this.btnClickCloseGuidance1(event);\r\n },\r\n // sp\r\n btnClickCloseGuidance2: (event: JQueryEventObject) => {\r\n this.btnClickCloseGuidance2(event);\r\n },\r\n btnClickGuidance2Prev: (event: JQueryEventObject) => {\r\n this.btnClickGuidance2Prev(event);\r\n },\r\n // sp\r\n btnClickCloseGuidance3: (event: JQueryEventObject) => {\r\n this.btnClickCloseGuidance3(event);\r\n },\r\n btnClickGuidance3Prev: (event: JQueryEventObject) => {\r\n this.btnClickCloseGuidance1(event, true);\r\n },\r\n // sp\r\n btnClickCloseGuidance4: (event: JQueryEventObject) => {\r\n this.btnClickCloseGuidance4(event);\r\n },\r\n btnClickGuidance4Prev: (event: JQueryEventObject) => {\r\n this.btnClickCloseGuidance2(event, true);\r\n },\r\n // sp\r\n btnClickCloseGuidance5: (event: JQueryEventObject) => {\r\n this.btnClickCloseGuidance5(event);\r\n },\r\n btnClickGuidance5Prev: (event: JQueryEventObject) => {\r\n this.btnClickCloseGuidance3(event, true);\r\n },\r\n\r\n // ツールメニュー関連\r\n btnClickSetPhotoMenu: (event: JQueryEventObject) => {\r\n that.reqDelAllclear(EDIT_MODE_KIND.SET_PHOTO);\r\n that._photoLogic.btnClickSetPhotoMenu(event);\r\n },\r\n btnClickManiPhotoMenu: (event: JQueryEventObject) => {\r\n that.reqDelAllclear(EDIT_MODE_KIND.MANI_PHOTO);\r\n that._photoLogic.btnClickManiPhotoMenu(event);\r\n },\r\n btnClickGreetingMenu: (event: JQueryEventObject) => {\r\n that._greetingLogic.btnClickGreetingMenu(event);\r\n },\r\n btnClickSenderMenu: (event: JQueryEventObject) => {\r\n that._senderLogic.btnClickSenderMenu(event);\r\n },\r\n btnClickStampMenu: (event: JQueryEventObject) => {\r\n that._mstStampLogic.btnClickStampMenu(event);\r\n },\r\n btnClickMyStampMenu: (event: JQueryEventObject) => {\r\n that.reqDelAllclear(EDIT_MODE_KIND.MYSTAMP);\r\n that._myStampLogic.btnClickStampMenu(event);\r\n },\r\n btnClickTegakiStampMenu: (event: JQueryEventObject) => {\r\n that.reqDelAllclear(EDIT_MODE_KIND.FONTGENIC);\r\n that._tegakiStampLogic.btnClickStampMenu(event);\r\n },\r\n btnClickFinishSelectMenu: (event: JQueryEventObject) => {\r\n this.btnClickFinishSelectMenu(event);\r\n const isGinen = this._vue.$data.FinishSelect.isGinen as boolean;\r\n this.setImgGuidanceMesage(isGinen);\r\n },\r\n // sp\r\n btnClickReturnMainMenu: (event: JQueryEventObject) => {\r\n this.btnClickReturnMainMenu(event);\r\n },\r\n // sp\r\n btnClickImageListMenu: (event: JQueryEventObject) => {\r\n that.reqDelAllclear(EDIT_MODE_KIND.SET_PHOTO);\r\n that._photoLogic.btnClickImageListMenu(event);\r\n },\r\n // sp\r\n btnClickSwapItemMenu: (doStwapStart: boolean, event: JQueryEventObject) => {\r\n that._photoLogic.btnClickSwapItemMenu(doStwapStart, event);\r\n },\r\n // 明るさ調整\r\n btnClickManiChangeBright: (event: JQueryEventObject) => {\r\n that._photoLogic.btnClickManiChangeBright(event);\r\n },\r\n btnClickChangeBright: (bright: boolean, event: JQueryEventObject) => {\r\n that._photoLogic.btnClickChangeBright(bright, event);\r\n },\r\n\r\n // 画像一覧関連\r\n imgClickUploadPhoto: (event: JQueryEventObject, fileId: string) => {\r\n that._photoLogic.imgClickUploadImage(event, fileId);\r\n },\r\n onChangeUploadFileObj: (event: JQueryEventObject) => {\r\n that._photoLogic.onChangeUploadFileObj(event);\r\n },\r\n btnClickPhotoListTrashOK: (event: JQueryEventObject) => {\r\n that._photoLogic.btnClickUploadListTrashOK(event);\r\n },\r\n // sp\r\n btnClickNextHomeFromImgList: (event: JQueryEventObject, fileId: string) => {\r\n that._photoLogic.btnClickNextFromUploadImageListSp(event);\r\n },\r\n // sp\r\n btnClickNextHomeFromMyStampList: (event: JQueryEventObject, fileId: string) => {\r\n that._myStampLogic.btnClickNextFromUploadImageListSp(event);\r\n },\r\n // sp\r\n btnClickNextHomeFromTegakiStampList: (event: JQueryEventObject, fileId: string) => {\r\n that._tegakiStampLogic.btnClickNextFromUploadImageListSp(event);\r\n },\r\n // sp\r\n btnClickNextHomeFromTegakiColorPanel: (event: JQueryEventObject) => {\r\n that._tegakiStampLogic.btnClickNextHomeFromTegakiColorPanelSp(event);\r\n },\r\n\r\n // オブジェクト操作パネル関連\r\n btnClickRotate90: (rotateRight: boolean, event: JQueryEventObject) => {\r\n that._objectManiLogic.btnClickRotate90(rotateRight, event);\r\n },\r\n btnSetPitaCorrect: (doPita: boolean, event: JQueryEventObject) => {\r\n if (doPita == this._vue.$data.Show.IsImagePita) {\r\n return;\r\n }\r\n that._photoLogic.btnClickPitaCorrect(doPita, event);\r\n },\r\n // sp\r\n btnClickEditImagePitaMenu: (event: JQueryEventObject) => {\r\n that._photoLogic.btnClickEditImagePitaMenu(event);\r\n },\r\n btnClickScale: (scaleUp: boolean, event: JQueryEventObject) => {\r\n that._objectManiLogic.btnClickScale(scaleUp, event);\r\n },\r\n btnClickMove: (whichMove: number, event: JQueryEventObject) => {\r\n that._objectManiLogic.btnClickMove(whichMove, event);\r\n },\r\n btnClickRemovePhoto: (event: JQueryEventObject) => {\r\n that._photoLogic.btnClickRemovePhoto(event);\r\n },\r\n btnSetPhotoCorrect: (doFilter: boolean, event: JQueryEventObject) => {\r\n if (doFilter == this._vue.$data.Show.IsImageAutoFilter) {\r\n return;\r\n }\r\n that._photoLogic.btnClickPhotoCorrect(event);\r\n },\r\n btnSetFinishSelectCorrect: (doGinen: boolean, event: JQueryEventObject) => {\r\n that._photoLogic.btnClickFinishSelect(doGinen, event);\r\n const isGinen = this._vue.$data.FinishSelect.isGinen as boolean;\r\n this.setImgGuidanceMesage(isGinen);\r\n },\r\n // SP\r\n btnClickEditGreetingItem: (doAdd: boolean, event: JQueryEventObject) => {\r\n that._greetingLogic.btnClickEditGreetingItem(doAdd, event);\r\n },\r\n // SP\r\n btnClickEditSenderItem: (event: JQueryEventObject) => {\r\n that._senderLogic.btnClickEditSenderItem(event);\r\n },\r\n // SP\r\n btnClickEditStampItem: (event: JQueryEventObject) => {\r\n that._mstStampLogic.btnClickEditStampItem(event);\r\n },\r\n // SP\r\n btnClickEditMyStampItem: (event: JQueryEventObject) => {\r\n that._myStampLogic.btnClickEditStampItem(event);\r\n },\r\n // SP\r\n btnClickEditTegakiStampItem: (event: JQueryEventObject) => {\r\n that._tegakiStampLogic.btnClickEditStampItem(event);\r\n },\r\n // SP\r\n btnClickChangeTegakiStampColor: (event: JQueryEventObject) => {\r\n that._tegakiStampLogic.btnClickChangeTegakiStampColorSp(event);\r\n },\r\n btnClickMenuScroll: (id: string, i: number) => {\r\n var moveWidth = $(window).width() > 600 ? 100 : 50;\r\n if (document.getElementById(id).children.length >= 3) {\r\n moveWidth = document.getElementById(id).children[1].clientWidth;\r\n }\r\n document.getElementById(id).scrollLeft += moveWidth * i;\r\n this.setScrollMenuList(id);\r\n },\r\n\r\n // あいさつ文パネル関連\r\n onChangeGreetingFont: (event: JQueryEventObject) => {\r\n that._greetingLogic.onChangeGreetingFont(event);\r\n },\r\n onChangeGreetingCharLayout: (event: JQueryEventObject) => {\r\n that._greetingLogic.onChangeGreetingCharLayout(event);\r\n },\r\n btnClickGreetingSample: (event: JQueryEventObject) => {\r\n that._greetingLogic.btnClickGreetingSample(event);\r\n },\r\n btnClickGreetingSet: (requesNew: boolean, event: JQueryEventObject) => {\r\n that._greetingLogic.btnClickGreetingSet(requesNew, event);\r\n },\r\n btnClickGreetingDelete: (event: JQueryEventObject) => {\r\n that._greetingLogic.btnClickGreetingDelete(event);\r\n },\r\n btnClickGreetingSampleOK: (event: JQueryEventObject) => {\r\n that._greetingLogic.btnClickGreetingSampleOK(event);\r\n },\r\n btnClickGreetingSampleCancel: (event: JQueryEventObject) => {\r\n that._greetingLogic.btnClickGreetingSampleCancel(event);\r\n },\r\n imgClickGreetingSample: (no: string) => {\r\n that._greetingLogic.imgClickGreetingSample(no);\r\n },\r\n btnClickGreetingFontSize: (isPlus: boolean, event: JQueryEventObject) => {\r\n that._greetingLogic.btnClickGreetingFontSize(isPlus, event);\r\n },\r\n\r\n // 差出人パネル関連\r\n onChangeSenderFont: (event: JQueryEventObject) => {\r\n that._senderLogic.onChangeSenderFont(event);\r\n },\r\n onChangeSenderCharLayout: (event: JQueryEventObject) => {\r\n that._senderLogic.onChangeSenderCharLayout(event);\r\n },\r\n btnClickSenderSet: (event: JQueryEventObject) => {\r\n that._senderLogic.btnClickSenderSet(event);\r\n },\r\n btnClickSenderDelete: (event: JQueryEventObject) => {\r\n that._senderLogic.btnClickSenderDelete(event);\r\n },\r\n btnClickSenderFontSize: (isPlus: boolean, event: JQueryEventObject) => {\r\n that._senderLogic.btnClickSenderFontSize(isPlus, event);\r\n },\r\n // SP\r\n onChangeSenderFormat: (event: JQueryEventObject) => {\r\n that._senderLogic.onChangeSenderFormat(event);\r\n },\r\n\r\n // スタンプ関連\r\n imgClickStamp: (event: JQueryEventObject, stampId: number) => {\r\n that._mstStampLogic.imgClickStamp(event, stampId);\r\n },\r\n btnClickStampDelete: (event: JQueryEventObject) => {\r\n that._objectManiLogic.btnClickStampDelete(event);\r\n },\r\n // SP\r\n btnClickStampSet: (event: JQueryEventObject) => {\r\n that._mstStampLogic.btnClickStampSet(event);\r\n },\r\n // SP\r\n cmbClickStampCategory: (event: JQueryEventObject) => {\r\n that._mstStampLogic.cmbClickStampCategory(event);\r\n },\r\n // SP\r\n imgClickStampCategory: (event: JQueryEventObject) => {\r\n that._mstStampLogic.imgClickStampCategory(event);\r\n },\r\n // Sp\r\n imgClickStampForSp: (event: JQueryEventObject, stampId: number) => {\r\n that._mstStampLogic.imgClickStampForSp(event, stampId);\r\n },\r\n\r\n // Myステッカー関連\r\n imgClickUploadMyStamp: (event: JQueryEventObject, fileId: string) => {\r\n that._myStampLogic.imgClickUploadImage(event, fileId);\r\n },\r\n onChangeUploadMyStampObj: (event: JQueryEventObject) => {\r\n that._myStampLogic.onChangeUploadFileObj(event);\r\n },\r\n btnClickMyStampListTrashOK: (event: JQueryEventObject) => {\r\n that._myStampLogic.btnClickUploadListTrashOK(event);\r\n },\r\n btnClickUploadMyStamp: (event: JQueryEventObject) => {\r\n that._myStampLogic.btnClickUploadMyStamp(event);\r\n },\r\n // SP\r\n btnClickMyStampEditSp: (event: JQueryEventObject) => {\r\n that._myStampLogic.btnClickMyStampEditSp(event);\r\n },\r\n\r\n // 手書きスタンプ関連\r\n imgClickUploadTegakiStamp: (event: JQueryEventObject, fileId: string) => {\r\n that._tegakiStampLogic.imgClickUploadImage(event, fileId);\r\n },\r\n btnClickTegakiStampListTrashOK: (event: JQueryEventObject) => {\r\n that._tegakiStampLogic.btnClickUploadListTrashOK(event);\r\n },\r\n btnClickUploadTegakiStamp: (event: JQueryEventObject) => {\r\n that._tegakiStampLogic.btnClickUploadTegakiStamp(event);\r\n },\r\n\r\n // 外字関連\r\n btnClickGaijiInput: (event: JQueryEventObject) => {\r\n that._gaijiLogic.gaijiInput(event);\r\n },\r\n\r\n // inputフォーカス時のイベント\r\n // 外字が使えるかチェック。\r\n onFocusEnableGaiji: (event: JQueryEventObject) => {\r\n let selFont = that.editInfo.master.font.find(x => x.name == that._vue.$data.SenderInfo.Setting.Font);\r\n that._gaijiLogic.gaijiButtonEnable(event, selFont.gaijiFlg);\r\n },\r\n // 郵便番号の入力\r\n onInputZipCode1: (event: JQueryEventObject) => {\r\n that._senderLogic.onInputZipCode1(event);\r\n },\r\n onInputZipCode2: (event: JQueryEventObject)=>{\r\n that._senderLogic.onInputZipCode2(event);\r\n },\r\n //住所検索(SP版)\r\n btnClickSearchZipToAddress: (event: JQueryEventObject) => {\r\n that._senderLogic.btnClickSearchZipToAddress(event);\r\n },\r\n onClickImgGuidance: (event: JQueryEventObject) => {\r\n this.btnClickImgGuidance(event);\r\n },\r\n scrollMenu: (id: string) => {\r\n this.setScrollMenuList(id);\r\n },\r\n },\r\n beforeCreate: () => {\r\n //Logger.log(\"beforeCreate()\");\r\n // 初期処理\r\n this.doOnload();\r\n },\r\n created: () => {\r\n },\r\n beforeMount: () => {\r\n },\r\n mounted: () => {\r\n },\r\n beforeUpdate: () => {\r\n },\r\n updated: () => {\r\n\r\n // 初期化直後のキャンバスサイズ調整\r\n if (this.loadComplited) {\r\n this.loadComplited = false;\r\n this.allowResizeFunc = true;\r\n // 初回の単発呼び出し\r\n this.resizeWindowHandler(this);\r\n // リテーラ別のチャットボット制御\r\n var divChatBot = document.getElementById(\"chava-root\") as HTMLDivElement;\r\n if (divChatBot) {\r\n divChatBot.style.display = this._retailerConfig.id == \"0\" && this._vue.$data.Header.Title == EditConst.TITLE_MAIN ? \"block\" : \"none\";\r\n }\r\n }\r\n this.resizeWindowHandlerForScrollMenu(this);\r\n },\r\n beforeDestroy: () => {\r\n },\r\n destroyed: () => {\r\n },\r\n computed: {\r\n ActiveUploadPhotoList: function () {\r\n return this.UploadPhotoList.filter(p => p.deleteFlg === false);\r\n },\r\n CategoryStampList: function () {\r\n if (this.Stamp.Cagegory === this.Stamp.CagegoryAll) {\r\n return this.MasterStampList;\r\n }\r\n else {\r\n return this.MasterStampList.filter(s => s.category === this.Stamp.Cagegory);\r\n }\r\n },\r\n ActiveUploadMyStampList: function () {\r\n return this.UploadMyStampList.filter(p => p.deleteFlg === false);\r\n },\r\n ActiveUploadTegakiStampList: function () {\r\n return this.UploadTegakiStampList.filter(p => p.deleteFlg === false);\r\n },\r\n ShowMenuDialogNextFlow: function () {\r\n return this.$data.Show.EditImageFilterMenu || this.$data.Show.EditImagePitaMenu || (this.$data.Show.FinishSelectMenuDialog && this.$data.Header.Title == EditConst.TITLE_MAIN);\r\n },\r\n },\r\n watch: {\r\n 'Header.Title': function (newVal, oldVal) {\r\n var divChatBot = document.getElementById(\"chava-root\") as HTMLDivElement;\r\n if (divChatBot) {\r\n if (newVal != EditConst.TITLE_MAIN &&\r\n newVal != EditConst.TITLE_MANIPHOTO &&\r\n newVal != EditConst.TITLE_STAMP &&\r\n newVal != EditConst.TITLE_MYSTAMP &&\r\n newVal != EditConst.TITLE_GREETING &&\r\n newVal != EditConst.TITLE_SENDER &&\r\n newVal != EditConst.TITLE_TEGAKISTAMP\r\n ) {\r\n divChatBot.style.display = \"none\";\r\n } else {\r\n divChatBot.style.display = that._retailerConfig.id == \"0\" ? \"block\" : \"none\";\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * リテーラ別の初期化処理\r\n */\r\n public initRetailer(): void {\r\n // リテーラロゴURL設定\r\n this._logo1Url = this._retailerConfig.logo1;\r\n this._logo2Url = this._retailerConfig.logo2;\r\n }\r\n\r\n /**\r\n * ウィンドウのリサイズイベントハンドラ登録\r\n */\r\n public resizeWindowInit(): void {\r\n // SPでは初回しか実行させない\r\n // 画面サイズが変わることはない\r\n //(キーボード表示によってイベント発火させたくないため)\r\n if (!ui.usePcDesign()) {\r\n return;\r\n }\r\n\r\n let that: editController = this;\r\n let f = function () {\r\n that.resizeWindowHandler(that);\r\n that.resizeWindowHandlerForScrollMenu(that);\r\n };\r\n window.removeEventListener('resize', f);\r\n window.addEventListener('resize', f);\r\n }\r\n /**\r\n * ウィンドウのリサイズイベントハンドラ(メニューバー変更用)\r\n */\r\n public resizeWindowHandlerForScrollMenu(contoroller: editController): void {\r\n if (contoroller._usePcDesign) {\r\n return;\r\n }\r\n // メニューの矢印ホバー制御\r\n [\"menuList\", \"imgMenuList\", \"adjustMenuList\"].forEach(id => {\r\n this.setScrollMenuList(id);\r\n });\r\n }\r\n\r\n /**\r\n * ウィンドウのリサイズイベントハンドラ\r\n * @param contoroller : editMainController\r\n */\r\n public resizeWindowHandler(contoroller: editController): void {\r\n\r\n if (!contoroller.allowResizeFunc) {\r\n Logger.debug(\"resizeWindowHandler() not allow func yet. [\" + contoroller.allowResizeFunc + \"]\");\r\n return;\r\n }\r\n\r\n if (contoroller._usePcDesign) {\r\n // PCの場合\r\n\r\n // ページエリアサイズ算出\r\n const pageSize = contoroller.calcSonbpPageAreaSize();\r\n const setPageSize: number = pageSize.height;\r\n\r\n // sonbpへ通知\r\n contoroller.sonbpIfController.resizeContents(setPageSize);\r\n\r\n // ハガキの比率(横/縦) 長辺から短辺を求める用\r\n const ratio: number = 1.04 / 1.48;\r\n // 編集エリアの幅\r\n const editAreaWidth: number = $(\"#editArea\").width();\r\n\r\n if (contoroller.sonbpIfController.PdfPageSizeHeight < contoroller.sonbpIfController.PdfPageSizeWidth) {\r\n // 横長テンプレートの場合\r\n\r\n // タイプ記号の位置調整\r\n {\r\n // ページサイズ(長辺)から、ハガキの高さ算出\r\n const hagakiHeight: number = setPageSize * ratio;\r\n // ページサイズ(長辺) - ハガキの高さ = ハガキの上下の余白\r\n const space: number = setPageSize - hagakiHeight;\r\n // ハガキはページエリアの中心中央に配置される想定\r\n contoroller._vue.$data.FrameId.top = Math.ceil(space / 2) + \"px\";\r\n }\r\n\r\n // ページエリアのサイズ変更に合わせて吹き出しの位置を調整\r\n {\r\n // ページエリアサイズ(長辺)から、ハガキの幅算出\r\n const hagakiWidth: number = setPageSize;\r\n contoroller.setGuidanceBalloonPos(editAreaWidth, setPageSize, hagakiWidth);\r\n contoroller.setImgBorderGuidanceBalloonPos(editAreaWidth, setPageSize, setPageSize * ratio, false);\r\n }\r\n }\r\n else {\r\n // 縦長テンプレートの場合\r\n\r\n // ページエリアのサイズ変更に合わせて吹き出しの位置を調整\r\n {\r\n // ページエリアサイズ(長辺)から、ハガキの幅算出\r\n const hagakiWidth: number = setPageSize * ratio;\r\n contoroller.setGuidanceBalloonPos(editAreaWidth, setPageSize, hagakiWidth);\r\n contoroller.setImgBorderGuidanceBalloonPos(editAreaWidth, setPageSize, hagakiWidth, true);\r\n }\r\n }\r\n\r\n }\r\n else {\r\n // SPの場合\r\n // sonbpへ通知\r\n contoroller.sonbpIfController.resizeContents(null);\r\n\r\n // 赤枠の吹き出しの位置調整\r\n contoroller.setSpImgBorderGuidanceBalloonPos(\r\n contoroller.sonbpIfController.PdfPageSizeHeight,\r\n contoroller.sonbpIfController.PdfPageSizeWidth);\r\n }\r\n }\r\n\r\n /**\r\n * ページエリア、ハガキサイズに連動して赤枠ガイダンス表示位置を調整(SP)\r\n * @param pdfHeight :PDFエリアの高さ\r\n */\r\n private setSpImgBorderGuidanceBalloonPos(pdfHeight, pdfWidth) {\r\n // 編集エリア\r\n const editAreaHeight: number = $(\"#editArea\").height();\r\n const editAreaWidth: number = $(\"#editArea\").width();\r\n\r\n // 吹き出しの高さ\r\n const popUpHeight = 25;\r\n\r\n // 表示幅から表示している高さを計算\r\n const ratio = editAreaWidth / pdfWidth;\r\n const hagakiHeight = pdfHeight * ratio;\r\n\r\n // 同じSPでも画面の大きさによって表示範囲が異なるため、その対応\r\n const space = hagakiHeight > editAreaHeight ? (editAreaWidth - pdfWidth) / 2 : (editAreaHeight - hagakiHeight) / 2;\r\n const topPos = hagakiHeight > editAreaHeight ? editAreaHeight - popUpHeight : hagakiHeight + space - popUpHeight; \r\n\r\n this._vue.$data.ReplaceImgGuideBaloon.top = topPos + \"px\";\r\n this._vue.$data.ReplaceImgGuideBaloon.left = \"10px\";\r\n }\r\n\r\n /**\r\n * ページエリア、ハガキサイズに連動して赤枠ガイダンス表示位置を調整(PC)\r\n * @param editAreaWidth :編集エリアの幅\r\n * @param pageSize :ハガキのサイズ(長辺)\r\n * @param minPageSize :ハガキのサイズ(短辺)\r\n * @param partrait :ハガキが縦長かどうか\r\n */\r\n private setImgBorderGuidanceBalloonPos(editAreaWidth: number, pageSize: number, minPageSize: number, isPortrait: boolean) {\r\n\r\n // ハガキの幅と高さ\r\n const hagakiWidth = isPortrait ? minPageSize : pageSize;\r\n const hagakiHeight = isPortrait ? pageSize : minPageSize;\r\n\r\n // ハガキの余白: 編集エリアの横幅 - ハガキの幅\r\n const spaceWidth: number = editAreaWidth - hagakiWidth;\r\n\r\n // X座標:余白 + 赤枠分\r\n const redWidthRate = isPortrait ? 0.05 : 0.03;\r\n this._vue.$data.ReplaceImgGuideBaloon.left = (Math.ceil(spaceWidth / 2) + Math.ceil(hagakiWidth * redWidthRate)) + \"px\";\r\n\r\n // ハガキの上下の余白\r\n const editHeight = $('#editArea').height();\r\n const typeNoHeight = $('#editArea .p-editCanvasArea__framId').outerHeight(true);\r\n const printAreaHeight = $('#printWarning').height();\r\n const screenHeight = editHeight - typeNoHeight - printAreaHeight;\r\n const spaceHeight: number = Math.ceil((screenHeight - hagakiHeight) / 2);\r\n\r\n // 吹き出しの高さ\r\n // 表示していない場合は要素の高さを取得できないため、取得できない場合は固定値とする\r\n const elm = this._vue.$refs.imageGuidance as HTMLInputElement\r\n const guideHeight: number = this._vue.$data.Show.ImgGuidance ? elm.getBoundingClientRect().height + 20 : 95;\r\n\r\n // Y座標:ハガキのページエリアの高さ + 上下の余白 - 赤枠と吹き出し位置を考慮した値\r\n this._vue.$data.ReplaceImgGuideBaloon.top = (hagakiHeight + spaceHeight - guideHeight) + \"px\";\r\n }\r\n\r\n /**\r\n * ページエリア、ハガキサイズに連動してガイダンス表示位置を調整\r\n * @param editAreaWidth :編集エリアの場合\r\n * @param pageSize :ページサイズ(長辺)\r\n * @param hagakiWidth :ハガキの幅\r\n */\r\n private setGuidanceBalloonPos(editAreaWidth: number, pageSize: number, hagakiWidth: number) {\r\n\r\n // ページエリアサイズ(長辺) - ハガキの幅 = ハガキの左右の余白\r\n const space: number = editAreaWidth - hagakiWidth;\r\n\r\n // X座標:ハガキはページエリアの中心中央に配置される想定 +15は吹き出しのとんがり部分など考慮分\r\n this._vue.$data.ReplaceGuidanceBalloon.left = (hagakiWidth + Math.ceil(space / 2) + 15) + \"px\";\r\n\r\n // Y座標\r\n this._vue.$data.ReplaceGuidanceBalloon.top = Math.ceil(pageSize / 2) + \"px\";\r\n\r\n }\r\n\r\n\r\n /**\r\n * 業務側初期処理\r\n */\r\n private async doOnload(): es6promise.Promise {\r\n\r\n if (MultiTab.isOldTab()) {\r\n Logger.log(\"複数タブ操作 古いタブの為初期化を中断しました。\");\r\n return;\r\n }\r\n\r\n Logger.log(\"業務側初期処理 開始\");\r\n\r\n\r\n // getパラメータの取得\r\n common.setGetParam();\r\n\r\n // 認証トークン取得\r\n this.getAuthToken();\r\n\r\n const prePagePreview: boolean = this.checkFromPrev();\r\n const browserReload: boolean = this.checkBrowserReload();\r\n\r\n Logger.debug(\"テンポラリデータ初期化呼び出し\");\r\n\r\n // テンポラリデータ初期化(WebAPI)呼び出し\r\n let initTemp: initTempResponseEntity;\r\n if (prePagePreview || browserReload) {\r\n // プレビュー画面から戻ってきた,F5の場合は初期化しない.\r\n initTemp = new initTempResponseEntity();\r\n initTemp.photoControll = new photoControll();\r\n initTemp.photoControll.leavePhoto = false;\r\n if (prePagePreview) {\r\n Logger.debug(\"初期化ルート:プレビュー画面から来た\");\r\n } else if(browserReload) {\r\n Logger.debug(\"初期化ルート:F5押された\");\r\n }\r\n } else {\r\n // 通常ルートは初期化する.\r\n initTemp = await this.initTemp(this.authToken);\r\n Logger.debug(\"初期化ルート:通常\");\r\n }\r\n\r\n if (initTemp === null) {\r\n Logger.error(\"テンポラリデータ初期化 失敗\");\r\n dialogUtil.createErrorDialog(constDialogMessage.ERROR_SYSTEM + '(1)', function () {\r\n dialogUtil.closeErrorDialog();\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n });\r\n return;\r\n }\r\n\r\n Logger.debug(\"編集情報取得呼び出し\");\r\n\r\n // 編集情報取得(WebAPI)呼び出し\r\n const that = this;\r\n this.editInfo = await this.getEditInfo(this.authToken, prePagePreview);\r\n if (this.editInfo === null) {\r\n Logger.error(\"編集情報取得呼び出し 失敗\");\r\n dialogUtil.createErrorDialog(constDialogMessage.ERROR_SYSTEM + '(2)', function () {\r\n dialogUtil.closeErrorDialog();\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n window.location.href = that._retailerConfig.returnTop;\r\n });\r\n return;\r\n }\r\n this.kumihanToken = this.editInfo.kumihanToken;\r\n\r\n Logger.debug(\"indexedDBの初期化\");\r\n\r\n // indexedDBの初期化\r\n let idbEditInfo: idbEdit.editInfo;\r\n idbEditInfo = editStrage.initStorage(initTemp.photoControll.leavePhoto, prePagePreview, browserReload, this.editInfo.info.saveAs,this.editInfo.master.design.dsnNo);\r\n if (!idbEditInfo) {\r\n Logger.debug(\"WebStorageの初期化失敗\");\r\n dialogUtil.createErrorDialog(constDialogMessage.ERROR_SYSTEM + '(3)', function () {\r\n dialogUtil.closeErrorDialog();\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n });\r\n return;\r\n }\r\n\r\n\r\n // テンプレート期限チェック\r\n if (this.editInfo.master.design.isExpire) {\r\n dialogUtil.createErrorDialog(constDialogMessage.ERROR_DESIGN_EXPIRED_TEXT, function () {\r\n window.location.href = that._retailerConfig.orderHistory;\r\n });\r\n return;\r\n }\r\n\r\n // 編集期限チェック\r\n if (this.editInfo.info.isExpire) {\r\n dialogUtil.createErrorDialog(constDialogMessage.ERROR_DATA_EXPIRED_TEXT, function () {\r\n window.location.href = that._retailerConfig.orderHistory;\r\n });\r\n return;\r\n }\r\n\r\n // 注文停止チェック\r\n if (this.editInfo.master.design.orderStop == EditConst.PRINT_TYPE_BOTH) {\r\n // 受付停止中\r\n let msg = this._retailerConfig.id == EditConst.KITAMURA ? constDialogMessage.ERROR_DESIGN_PRINTTYPE_ORDER_STOP_TEXT_KITAMURA : constDialogMessage.ERROR_DESIGN_PRINTTYPE_ORDER_STOP_TEXT;\r\n dialogUtil.createErrorDialog(msg, function () {\r\n window.location.href = that._retailerConfig.orderHistory;\r\n });\r\n return;\r\n\r\n } else if (this.editInfo.master.design.orderStop == EditConst.PRINT_TYPE_PRINT) {\r\n // 印刷停止中\r\n if (this.editInfo.master.design.printType == EditConst.PRINT_TYPE_BOTH) {\r\n\r\n // 印刷停止中デザインのため、銀塩に切り替えます。\r\n let msg = this._retailerConfig.id == EditConst.KITAMURA ? constDialogMessage.ERROR_DESIGN_PRINTTYPE_INSATSU_STOP_TEXT_KITAMURA : constDialogMessage.ERROR_DESIGN_PRINTTYPE_INSATSU_STOP_TEXT;\r\n dialogUtil.createErrorDialog(msg, dialogUtil.closeErrorDialog);\r\n this.editInfo.master.design.printType = EditConst.PRINT_TYPE_GINEN;\r\n\r\n } else {\r\n let msg = this._retailerConfig.id == EditConst.KITAMURA ? constDialogMessage.ERROR_DESIGN_PRINTTYPE_ORDER_STOP_TEXT_KITAMURA : constDialogMessage.ERROR_DESIGN_PRINTTYPE_ORDER_STOP_TEXT;\r\n dialogUtil.createErrorDialog(msg, function () {\r\n window.location.href = that._retailerConfig.orderHistory;\r\n });\r\n return;\r\n }\r\n\r\n } else if (this.editInfo.master.design.orderStop == EditConst.PRINT_TYPE_GINEN) {\r\n // 銀塩停止中\r\n if (this.editInfo.master.design.printType == EditConst.PRINT_TYPE_BOTH) {\r\n\r\n // 銀塩停止中デザインのため、印刷に切り替えます。\r\n let msg = this._retailerConfig.id == EditConst.KITAMURA ? constDialogMessage.ERROR_DESIGN_PRINTTYPE_GINEN_STOP_TEXT_KITAMURA : constDialogMessage.ERROR_DESIGN_PRINTTYPE_GINEN_STOP_TEXT;\r\n dialogUtil.createErrorDialog(msg, dialogUtil.closeErrorDialog);\r\n this.editInfo.master.design.printType = EditConst.PRINT_TYPE_PRINT;\r\n\r\n } else {\r\n let msg = this._retailerConfig.id == EditConst.KITAMURA ? constDialogMessage.ERROR_DESIGN_PRINTTYPE_ORDER_STOP_TEXT_KITAMURA : constDialogMessage.ERROR_DESIGN_PRINTTYPE_ORDER_STOP_TEXT;\r\n dialogUtil.createErrorDialog(msg, function () {\r\n window.location.href = that._retailerConfig.orderHistory;\r\n });\r\n return;\r\n }\r\n }\r\n\r\n // リテーラ出力タイプ判定 -> 設定されているアウトプットに応じたデザイン以外がきたら返す。\r\n //if (this._retailerConfig.poscaSettings.printType != EditConst.PRINT_TYPE_BOTH) {\r\n // if (this.editInfo.master.design.printType != this._retailerConfig.poscaSettings.printType) {\r\n // dialogUtil.createErrorDialog(constDialogMessage.ERROR_DESIGN_PRINTTYPE_INDVALID_TEXT, function () {\r\n // window.location.href = that._retailerConfig.orderHistory;\r\n // });\r\n // return;\r\n // }\r\n //}\r\n\r\n // 1枚無料チェック\r\n if (this.editInfo.isTrial) {\r\n\r\n // デザイン選択画面に戻る。\r\n\r\n // 許可されているリテーラか?\r\n if (!this._retailerConfig.poscaSettings.allowTrial) {\r\n dialogUtil.createErrorDialog(constDialogMessage.ERROR_TRIAL_RETAILER_INVALID, function () {\r\n window.location.href = that._retailerConfig.returnTop;\r\n });\r\n return;\r\n }\r\n\r\n // 年賀デザインか \r\n if (this.editInfo.master.design.dsnType != EditConst.NENGA) {\r\n dialogUtil.createErrorDialog(constDialogMessage.ERROR_TRIAL_DESIGN_INVALID, function () {\r\n window.location.href = that._retailerConfig.returnTop;\r\n });\r\n return;\r\n }\r\n \r\n } else {\r\n // 1枚無料でなければ一時保存ボタンを表示する。\r\n this._vue.$data.Show.SaveButton = true;\r\n }\r\n\r\n // URLの補完\r\n this.editInfo.master.font.forEach(row => row.url = this.URL_GETIMAGE + row.url);\r\n this.editInfo.master.greeting.forEach(row => row.url = this.URL_GETIMAGE + row.url);\r\n\r\n // vueオブジェクトに連携\r\n let defFontColor: GetEditInfo.GetEditInfoColorEntity;\r\n {\r\n if (this._usePcDesign) {\r\n this._vue.$data.FrameId.val = this.editInfo.master.design.dsnNo;\r\n }\r\n this._vue.$data.ColorOptions = this.editInfo.master.color;\r\n this._vue.$data.FontOptions = this.editInfo.master.font.sort((f, s) => {\r\n var r = 0;\r\n if (f.seq < s.seq) { r = -1; }\r\n else if (f.seq > s.seq) { r = 1; }\r\n return r;\r\n });\r\n\r\n // デフォルトフォントカラー\r\n defFontColor = util.relic.listFind(this.editInfo.master.color, (clr: GetEditInfo.GetEditInfoColorEntity) => {\r\n return clr.id == this.editInfo.master.design.fontColor;\r\n });\r\n if (!defFontColor) {\r\n defFontColor = this.editInfo.master.color[0];\r\n }\r\n // 文字色\r\n this._vue.$data.SelectCharColor = defFontColor.id;\r\n // フチ文字は白(1番目)を選択\r\n this._vue.$data.SelectOutlineCharColor = this.editInfo.master.color[0].id;\r\n // 手書きスタンプ色\r\n this._vue.$data.SelectTegakiColor = \"\";\r\n\r\n // デフォルトフォント名取得\r\n const defFont: GetEditInfo.GetEditInfoFontEntity = this.getDefaultFont();\r\n \r\n // あいさつ文\r\n this.editInfo.master.greeting.forEach(row => row.selected = false);\r\n this._vue.$data.GreetingInfo.Font = defFont.name;\r\n this._vue.$data.GreetingInfo.FontSample = defFont.url;\r\n\r\n // 差出人\r\n this._vue.$data.SenderInfo.Setting.Font = defFont.name;\r\n this._vue.$data.SenderInfo.Setting.FontSample = defFont.url;\r\n\r\n // スタンプ\r\n this._vue.$data.Stamp.CategoryOptions.push({ code: 0, label: this.STAMP_CATEGORY_ALL });\r\n for (let i: number = 0; i < this.editInfo.master.stampCategory.length; i++) {\r\n this._vue.$data.Stamp.CategoryOptions.push({ code: i + 1, label: this.editInfo.master.stampCategory[i] });\r\n }\r\n this._vue.$data.Stamp.Cagegory = this._vue.$data.Stamp.CategoryOptions[1].label;\r\n\r\n //デザインマスタ機能制限\r\n if (this.editInfo.master.design.editMode == EditConst.DSN_MST_EDIT_MODE_LIMIT) {\r\n this._vue.$data.Show.PhotoI2AsDsn = false;\r\n this._vue.$data.Show.GreetingMenuAsDsn = false;\r\n this._vue.$data.Show.StampMenuAsDsn = false;\r\n this._vue.$data.Show.MyStampMenuAsDsn = false;\r\n this._vue.$data.Show.TegakiStampMenuAsDsn = false;\r\n }\r\n }\r\n\r\n // sonbpコントローラに連携\r\n this.sonbpIfController.tempId = this.editInfo.tempId;\r\n this.sonbpIfController.encCreateDate = this.editInfo.encCreateDate;\r\n this.sonbpIfController.AuthToken = this.authToken;\r\n this.sonbpIfController.PutRange = this.putRange;\r\n this.sonbpIfController.PutRangeStamp = this.putRangeStamp;\r\n this.sonbpIfController.GreetingDesign = this.editInfo.master.design.greeting;\r\n this.sonbpIfController.SenderDesign = this.editInfo.master.design.sender;\r\n this.sonbpIfController.DefaultFontColor = defFontColor;\r\n this.sonbpIfController.ColorMasterList = this.editInfo.master.color;\r\n this.sonbpIfController.DesignMaster = this.editInfo.master.design;\r\n\r\n // あいさつ文一覧の復元\r\n this.sonbpIfController.restoreGreetingList(prePagePreview, idbEditInfo.greetingInfo, this.editInfo.info.greeting, this.editInfo.master.font, this.editInfo.master.color);\r\n\r\n Logger.debug(\"あいさつ文一覧の復元\", this.sonbpIfController.GreetingList);\r\n\r\n // 差出人情報の復元\r\n if (this.editInfo.info.sender && this.editInfo.info.sender.senderInfo.addresses.length > 0) {\r\n this.sonbpIfController.restoreSenderInfo(this.editInfo.info.sender, this.editInfo.master.font, this.editInfo.master.color);\r\n this._vue.$data.SenderInfo.Setting.FontSample = this.setFontSample(this.editInfo.info.sender.font);\r\n }\r\n else {\r\n this.sonbpIfController.SenderInfo = senderTranEntityEx.createDef(this.editInfo.master.design.sender, this.editInfo.master.font, this.editInfo.master.color);\r\n }\r\n this._vue.$data.SenderInputData = this.sonbpIfController.SenderInfo;\r\n\r\n Logger.debug(\"差出人情報の復元\", this.sonbpIfController.SenderInfo);\r\n\r\n\r\n // 画像一覧にアップロード数分の画像枠を用意\r\n this._photoLogic.restoreUoloadPhotoList(!initTemp.photoControll.leavePhoto, true, idbEditInfo, this.editInfo);\r\n\r\n\r\n // 画像枠情報の復元\r\n let setLen = 0;\r\n for (let i: number = 0; i < this.editInfo.info.photoUse.length; i++) {\r\n const pf: photoFrame = new photoFrame();\r\n pf.fileId = this.editInfo.info.photoUse[i].fileId;\r\n pf.idx = this.editInfo.info.photoUse[i].idx + \"\";\r\n pf.useI2 = this.editInfo.info.photoUse[i].isUseI2;\r\n pf.brightId = this.editInfo.info.photoUse[i].brightId;\r\n this.sonbpIfController.PhotoFrameList.push(pf);\r\n setLen++;\r\n }\r\n Logger.debug(\"画像枠情報の復元\", this.sonbpIfController.PhotoFrameList);\r\n\r\n // スタンプのマスタ情報の連携\r\n this.editInfo.master.stamp.forEach(row => row.url = this.URL_GETIMAGE + row.url);\r\n this._vue.$data.MasterStampList = this.editInfo.master.stamp;\r\n\r\n\r\n // Myステッカーのアップロード情報の復元\r\n this._myStampLogic.restoreUoloadList((prePagePreview || browserReload), false, idbEditInfo?.myStampList, this.editInfo.info.myStamp);\r\n\r\n // 手書きスタンプのアップロード情報の復元\r\n this._tegakiStampLogic.restoreUoloadList((prePagePreview || browserReload), false, idbEditInfo?.fontgenicList, this.editInfo.info.fontgenic);\r\n\r\n\r\n // 有効高さ判定(流用元が[600]pxまでは許容していた模様。iPhone5は[568]のため調整)\r\n const controllerHeight: number = $(\"#editController\").height();\r\n if (controllerHeight < 600) {\r\n this._vue.$data.ShortSize = true;\r\n }\r\n Logger.debug(\"controllerHeight [\" + controllerHeight + \"] ShortSize[\" + this._vue.$data.ShortSize + \"]\");\r\n\r\n Logger.log(\"sonbp初期化&sonbp起動\");\r\n this.sonbpIfController.Vue = this._vue;\r\n this.sonbpIfController.setOnChangeInitFunc((editMode: editModeKind, vps: itemVenderProperty): void => {\r\n\r\n switch (vps?.item_type) {\r\n case sonbpIfconst.ITYPE_PHOTO_BOX:\r\n if (this._usePcDesign) {\r\n\r\n if (vps.file_id == \"@DUMMY@\" || editMode == EDIT_MODE_KIND.SET_PHOTO)\r\n this._photoLogic.btnClickSetPhotoMenu(null, vps);\r\n else\r\n this._photoLogic.btnClickManiPhotoMenu(null, vps);\r\n } else {\r\n if (editMode != EDIT_MODE_KIND.MANI_PHOTO)\r\n this._photoLogic.btnClickSetPhotoMenu(null, vps);\r\n }\r\n break;\r\n\r\n case sonbpIfconst.ITYPE_STAMP_IMG:\r\n this._mstStampLogic.btnClickStampMenu(null, vps);\r\n break;\r\n\r\n case sonbpIfconst.ITYPE_MYSTAMP_IMG:\r\n this._myStampLogic.btnClickStampMenu(null, vps);\r\n break;\r\n\r\n case sonbpIfconst.ITYPE_GREETING_TXT:\r\n this._greetingLogic.btnClickGreetingMenu(null, vps);\r\n break;\r\n\r\n case sonbpIfconst.ITYPE_SENDER_TXT:\r\n this._senderLogic.btnClickSenderMenu(null, vps);\r\n break;\r\n\r\n case sonbpIfconst.ITYPE_FONTGENIC_IMG:\r\n this._tegakiStampLogic.btnClickStampMenu(null, vps);\r\n break;\r\n }\r\n });\r\n this.sonbpIfController.start(this.pageAreaOffset).then(async (sonbpRes: boolean) => {\r\n // 画像存在チェック\r\n let photoList: string[] = [];\r\n let mystampList: string[] = [];\r\n let fontgenicList: string[] = [];\r\n\r\n this.sonbpIfController.getPhotoList((list: itemVenderProperty[]) => {\r\n photoList = list.map(v => v.file_id).filter(v => v !== this.sonbpIfController.EMPTY_PHOTOBOX_FILE_ID);\r\n }, () => { });\r\n this.sonbpIfController.getMyStampList((list: itemVenderProperty[]) => {\r\n mystampList = list.map(v => v.file_id);\r\n });\r\n this.sonbpIfController.getTegakiStampList((list: itemVenderProperty[]) => {\r\n fontgenicList = list.map(v => v.file_id);\r\n });\r\n\r\n // 画像が1枚でもあれば再編集と判断し、チェックAPIを実行\r\n if (photoList.length > 0 || mystampList.length > 0 || fontgenicList.length > 0) {\r\n // sonbpの使用画像とサーバのアップロード一覧のチェック\r\n var checkRet = await this.getCheckUploadImagesInfo(this.authToken, photoList, mystampList, fontgenicList);\r\n if (checkRet !== null) {\r\n let target: string = \"\";\r\n\r\n if (!checkRet.photo) target += \"・写真
    \";\r\n if (!checkRet.mystamp) target += \"・写真スタンプ
    \";\r\n if (!checkRet.fontgenic) target += \"・手書きスタンプ
    \";\r\n if (!checkRet.photo || !checkRet.mystamp || !checkRet.fontgenic) {\r\n dialogUtil.createErrorDialog(target + constDialogMessage.WARN_EDIT_CHECKUPLOADIMAGES, function () {\r\n dialogUtil.closeErrorDialog();\r\n });\r\n }\r\n } else {\r\n dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_CHECKUPLOADIMAGES, function () {\r\n dialogUtil.closeErrorDialog();\r\n });\r\n }\r\n } else {\r\n Logger.debug(\"画像存在チェック不要\");\r\n }\r\n\r\n // 結果判定\r\n if (sonbpRes) {\r\n\r\n Logger.debug(\"sonbpへの設定モード[\" + this.sonbpIfController.EditMode + \"]\");\r\n this.editMode = this.sonbpIfController.EditMode;\r\n\r\n let showGuidance1PC = false;\r\n let showFristGuidance = false;\r\n\r\n if (this._usePcDesign) {\r\n // PC用\r\n // ガイダンスの表示制御\r\n if (this.showGuidance(prePagePreview, this.doReloadedAccess, true)) {\r\n // ある場合\r\n showGuidance1PC = true;\r\n await this.getGuidanceImgSrcList();\r\n dialogUtil.showGuidance1Dlg(this.guidanceImgSrcList)\r\n .then(() => console.debug(\"ガイダンス正常終了\"))\r\n .catch(() => console.debug(\"ガイダンス異常終了\"))\r\n .finally(() => {\r\n showGuidance1PC = false;\r\n this._vue.$data.Show.FirstGuidance = showFristGuidance;\r\n });\r\n }\r\n } else {\r\n // SP用\r\n // ガイダンスの表示制御\r\n if (this.showGuidance(prePagePreview, this.doReloadedAccess, this.sonbpIfController.ExistsPhotoBox)) {\r\n await this.getGuidanceImgSrcList();\r\n // ある場合\r\n $(\"#guidanceImage1\").css(\"background-image\", `url(${this.guidanceImgSrcList[0]})`);\r\n $(\"#guidanceImage2\").css(\"background-image\", `url(${this.guidanceImgSrcList[1]})`);\r\n $(\"#guidanceImage3\").css(\"background-image\", `url(${this.guidanceImgSrcList[2]})`);\r\n $(\"#guidanceImage4\").css(\"background-image\", `url(${this.guidanceImgSrcList[3]})`);\r\n $(\"#guidanceImage5\").css(\"background-image\", `url(${this.guidanceImgSrcList[4]})`);\r\n $(\"#guidance1\").removeClass(\"visHidden\");\r\n $(\"#guidance2\").removeClass(\"visHidden\");\r\n $(\"#guidance3\").removeClass(\"visHidden\");\r\n $(\"#guidance4\").removeClass(\"visHidden\");\r\n $(\"#guidance5\").removeClass(\"visHidden\");\r\n this._vue.$data.Show.ScreenLock = true;\r\n this._vue.$data.Show.Guidance1 = true;\r\n\r\n }\r\n else {\r\n // 上記以外の場合\r\n this._vue.$data.Show.ScreenLock = false;\r\n }\r\n }\r\n\r\n // 画面構成パーツの表示制御\r\n // sonbpに設定したモードを判定\r\n if (this._usePcDesign) {\r\n if (this.sonbpIfController.EditMode === EDIT_MODE_KIND.SET_PHOTO && this.sonbpIfController.ExistsPhotoBox) {\r\n // 画像読込・配置モードの場合\r\n\r\n if (this._usePcDesign) {\r\n // PC用\r\n // 画像一覧の件数判定\r\n if (this._photoLogic.NotEmptyUploadNum === 0) {\r\n // 0件の場合\r\n showFristGuidance = true;\r\n this._vue.$data.Show.FirstGuidance = !showGuidance1PC;\r\n }\r\n this._vue.$data.Show.BalloonGuidance = true;\r\n\r\n this._vue.$data.Show.PhotoList = true;\r\n this._vue.$data.Show.OparatePallet = true;\r\n\r\n this._vue.$data.Show.ToolMenu = true;\r\n\r\n // ツールメニューの表示制御\r\n this._vue.$data.Show.FinishSelectMenu = false;\r\n this._vue.$data.ActiveSetPhotoMenu = true;\r\n }\r\n\r\n // オブジェクト操作パレットの制御\r\n this.setModeOparatePallet(EDIT_MODE_KIND.SET_PHOTO, null);\r\n }\r\n else {\r\n // テンプレートに画像枠がない場合\r\n\r\n // 出力タイプ判定\r\n if (this.sonbpIfController.EditMode === EDIT_MODE_KIND.SET_PHOTO && !this.sonbpIfController.ExistsPhotoBox) {\r\n // 銀塩・印刷両方\r\n\r\n // 仕上がり選択だけできる、特殊な画像読込・配置モードを設定\r\n this._vue.$data.Show.FirstGuidance = false;\r\n this._vue.$data.Show.BalloonGuidance = false;\r\n this._vue.$data.Show.PhotoList = false;\r\n this._vue.$data.Show.ToolMenu = true;\r\n this._vue.$data.Show.OparatePallet = true;\r\n\r\n // ツールメニューの表示制御\r\n this._vue.$data.ActiveSetPhotoMenu = false\r\n this._vue.$data.Show.SetPhotoMenu = false;\r\n this._vue.$data.Show.ManiPhotoMenu = false;\r\n this._vue.$data.Show.FinishSelectMenu = true;\r\n this._vue.$data.ActiveFinishSelectMenu = true;\r\n\r\n // オブジェクト操作パレットの制御\r\n this.setModeOparatePallet(EDIT_MODE_KIND.SET_PHOTO, null);\r\n }\r\n else {\r\n // 上記以外\r\n if (this.sonbpIfController.EditMode === EDIT_MODE_KIND.SENDER) {\r\n // 差出人操作モード\r\n this._senderLogic.InitSenderPallet();\r\n this._vue.$data.Show.FirstGuidance = false;\r\n this._vue.$data.Show.BalloonGuidance = false;\r\n this._vue.$data.Show.ToolMenu = true;\r\n this._vue.$data.Show.OparatePallet = true;\r\n this._vue.$data.Show.SenderPanel = true;\r\n this._vue.$data.Show.FinishSelectMenu = false;\r\n this._vue.$data.Show.HideButton = true;\r\n\r\n // ツールメニューの表示制御\r\n this._vue.$data.Show.SetPhotoMenu = false;\r\n this._vue.$data.Show.ManiPhotoMenu = false;\r\n this._vue.$data.Show.GreetingMenu = true;\r\n this._vue.$data.ActiveSenderMenu = true;\r\n\r\n // オブジェクト操作パレットの制御\r\n this.setModeOparatePallet(EDIT_MODE_KIND.SENDER, null);\r\n }\r\n else {\r\n // 上記以外の場合(あいさつ文操作モードを想定)\r\n this._vue.$data.Show.FirstGuidance = false;\r\n this._vue.$data.Show.ToolMenu = false;\r\n this._vue.$data.Show.OparatePallet = true;\r\n this._vue.$data.Show.GreetingPanel = false;\r\n this._vue.$data.Show.FinishSelectMenu = false;\r\n\r\n // ツールメニューの表示制御\r\n this._vue.$data.Show.SetPhotoMenu = false;\r\n this._vue.$data.Show.ManiPhotoMenu = false;\r\n this._vue.$data.Show.GreetingMenu = false;\r\n this._vue.$data.Show.SenderMenu = false;\r\n this._vue.$data.ActiveGreetingMenu = true;\r\n\r\n // オブジェクト操作パレットの制御\r\n this.setModeOparatePallet(EDIT_MODE_KIND.GREETING, null);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // SP用\r\n // →画像読込・配置モード 一択\r\n // 画像枠の個数判定\r\n this.sonbpIfController.getPhotoList((list: itemVenderProperty[]) => {\r\n if (1 < list.length) {\r\n // 画像枠複数ありの場合\r\n this._vue.$data.Show.SwapItemMenu = true;\r\n }\r\n else {\r\n // 上記以外の場合\r\n this._vue.$data.Show.SwapItemMenu = false;\r\n }\r\n\r\n this._vue.$data.Show.FinishSelectMenu = (this.editInfo.master.design.printType === EditConst.PRINT_TYPE_BOTH) ? true : false;\r\n }, () => { });\r\n\r\n // オブジェクト操作パレットの制御\r\n this.setModeOparatePallet(EDIT_MODE_KIND.SET_PHOTO, null);\r\n }\r\n\r\n // モードとは別に差出人デザイン情報がない場合は、メニューを非表示\r\n this._vue.$data.Show.SenderMenu = (that._senderLogic.ExistsSenderDesgin) ? true : false;\r\n\r\n // 仕上がり選択->デフォルト銀塩、印刷で保存している場合は保存状態復帰\r\n let setModeGinen: boolean = true;\r\n if (this.editInfo.master.design.printType === EditConst.PRINT_TYPE_BOTH) {\r\n\r\n const printType: string = prePagePreview ? idbEditInfo.printType : this.editInfo.info.printType;\r\n\r\n // 銀塩・印刷 両方\r\n if (printType) {\r\n if (printType === EditConst.PRINT_TYPE_PRINT) {\r\n setModeGinen = false;\r\n }\r\n }\r\n else {\r\n if (this.editInfo.master.design.defPrintType === EditConst.PRINT_TYPE_PRINT) {\r\n setModeGinen = false;\r\n }\r\n }\r\n }\r\n else if (this.editInfo.master.design.printType === EditConst.PRINT_TYPE_PRINT) {\r\n // 印刷専用\r\n setModeGinen = false;\r\n }\r\n else {\r\n // 上記以外(銀塩を想定)\r\n setModeGinen = true;\r\n }\r\n\r\n // 判定\r\n if (setModeGinen) {\r\n this.sonbpIfController.setAreaView(sonbpIfconst.ATYPE_GINEN);\r\n } else {\r\n this.sonbpIfController.setAreaView(sonbpIfconst.ATYPE_PRING);\r\n }\r\n this._vue.$data.FinishSelect.isGinen = setModeGinen;\r\n\r\n // 仕上がりのメッセージを表示\r\n this.setImgGuidanceMesage(setModeGinen);\r\n\r\n // F5リロード時のスタンプ補完\r\n if (prePagePreview || browserReload) {\r\n this.resetUpdateListOfStamps();\r\n }\r\n\r\n // スタンプの利用有無同期\r\n this.resetUsedOfStamps();\r\n\r\n // 次へボタンの活性制御\r\n this.allowNextPage((allow: boolean) => {\r\n this._vue.$data.EnableNextPageBtn = allow;\r\n });\r\n\r\n this.loadComplited = true;\r\n\r\n // 表示制限解除\r\n this.cancelRestrction();\r\n }\r\n else {\r\n // sonbp起動失敗\r\n Logger.error(\"sonbp起動失敗-1\");\r\n dialogUtil.createErrorDialog(constDialogMessage.ERROR_SYSTEM + '(4)', function () {\r\n dialogUtil.closeErrorDialog();\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n });\r\n return;\r\n }\r\n }).then(() => {\r\n\r\n // 編集モード判定\r\n if (this.sonbpIfController.EditMode === EDIT_MODE_KIND.SET_PHOTO) {\r\n // 画像読込・配置モードの場合(何かしら画像をアップしていたらサムネイルを取得する。)\r\n if (0 < this._photoLogic.NotEmptyUploadNum || 0 < this._tegakiStampLogic.NotEmptyUploadNum || 0 < this._myStampLogic.NotEmptyUploadNum) {\r\n Logger.debug(\"画像サムネイルダウンロード開始\");\r\n this.getAllUploadThumbnails().then(() => {\r\n\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n }).catch(() => {\r\n Logger.error(\"画像サムネイルダウンロード 失敗\");\r\n dialogUtil.createErrorDialog(constDialogMessage.ERROR_SYSTEM + '(6)' + \"]\", function () {\r\n dialogUtil.closeErrorDialog();\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n });\r\n });\r\n }\r\n else {\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n }\r\n }\r\n else {\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n }\r\n\r\n // SSO\r\n Logger.log(\"SSO開始\");\r\n SSO.DoSSO(this.authToken, this._retailerConfig.id); \r\n\r\n try {\r\n new AdjustRecord(\r\n this._retailerConfig.extrSettings.adjust?.token,\r\n this._retailerConfig.extrSettings.adjust?.eventID.editStart);\r\n } catch(er) {\r\n Logger.error(`AdjustError:${er}`);\r\n }\r\n\r\n }).catch((err: number) => {\r\n Logger.error(\"sonbp起動失敗-2 [\" + err + \"]\");\r\n dialogUtil.createErrorDialog(constDialogMessage.ERROR_SYSTEM + '(5)' + \"[\" + err + \"]\", function () {\r\n dialogUtil.closeErrorDialog();\r\n // ローディングダイアログ終了\r\n util.dialogUtil.closeLoading();\r\n });\r\n return;\r\n });\r\n\r\n // 外字情報のセット\r\n this._gaijiLogic.SetGaijiList(this.editInfo.master.gaijiList);\r\n\r\n }\r\n\r\n /**\r\n * フォントサンプル画像変更\r\n * @param fontId\r\n */\r\n private setFontSample(fontId: string) {\r\n // フォント設定していない場合は初期値を返却\r\n if (this._vue.$data.SenderInfo.Setting.Font == \"\") {\r\n return this.editInfo.master.font[0].url;\r\n }\r\n\r\n const selFont = this.editInfo.master.font.find(x => x.id == fontId);\r\n return selFont.url;\r\n }\r\n\r\n /**\r\n * デフォルトフォントを取得\r\n */\r\n public getDefaultFont(): GetEditInfo.GetEditInfoFontEntity {\r\n\r\n let result: GetEditInfo.GetEditInfoFontEntity;\r\n\r\n // デザインマスタで指定されたフォントを検索\r\n const defFont: GetEditInfo.GetEditInfoFontEntity = util.relic.listFind(this.editInfo.master.font, (f: GetEditInfo.GetEditInfoFontEntity) => {\r\n return f.id === this.editInfo.master.design.fontType;\r\n })\r\n\r\n if (defFont) {\r\n // 該当ありの場合\r\n result = defFont;\r\n }\r\n else {\r\n // 上記以外の場合\r\n result = this.editInfo.master.font[0];\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * 認証トークン取得\r\n */\r\n private getAuthToken(): void {\r\n // hiddenから認証トークン取得&クリア \r\n // -> クリアするとSafariでブラウザバックしたときにTokenが空になってしまうので消さない\r\n this.authToken = $(\"#Token\").val();\r\n //$(\"#Token\").val(\"\");\r\n }\r\n\r\n /**\r\n * ガイダンスの表示制御\r\n * @param prePagePreview :プレビュー画面からの遷移?\r\n * @param doReloadedAccess :F5リロードアクセス?\r\n * @param existsPhotoBox :テンプレートに画像枠あり?\r\n */\r\n private showGuidance(prePagePreview: boolean, doReloadedAccess: boolean, existsPhotoBox: boolean): boolean {\r\n\r\n let result: boolean = true;\r\n \r\n // 再編集フラグ取得\r\n const isEdit: boolean = this.getIsEdit();\r\n\r\n Logger.debug(\"showGuidance prePagePreview[\" + prePagePreview + \"] existsPhotoBox[\" + existsPhotoBox + \"] isEdit[\" + isEdit + \"] doReloadedAccess[\" + this.doReloadedAccess + \"]\");\r\n\r\n // 表示条件判定\r\n if (doReloadedAccess || prePagePreview || !existsPhotoBox || isEdit || this.editInfo.master.design.dsnType === EditConst.MOCYU) {\r\n result = false;\r\n }\r\n\r\n Logger.debug(\"showGuidance[\" + result + \"]\");\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * ガイダンス画像を対象img要素に適用\r\n */\r\n private async getGuidanceImgSrcList() {\r\n var url = this._usePcDesign ? \"img/pc/desktop/default/startup_guidance_0\" : \"/posca/img/sp/common/default/startup_guidance_sp_0\";\r\n this.guidanceImgSrcList = [];\r\n for (let i: number = 1; i <= 5; i++) {\r\n var infix = this._retailerConfig.id == \"1\" && i == 5 ? \"_kitamura\" : \"\";\r\n await util.ajax.postforblob_get(`${url}${i}${infix}.png`, \"\").then((b: Blob) => {\r\n var url = window.URL || window.webkitURL;\r\n this.guidanceImgSrcList.push(url.createObjectURL(b));\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * 表示制限解除\r\n */\r\n private cancelRestrction(): void {\r\n\r\n // Vueオブジェクト生成前に表示したくないパーツの制限を解除\r\n if (this._usePcDesign) {\r\n // PCの場合\r\n\r\n $(\"#contents\").removeClass(\"transparent\");\r\n $(\"#flowButtonArea\").removeClass(\"transparent\");\r\n $(\"#fullScreenGuidanceArea\").removeClass(\"transparent\");\r\n $(\"#dialogArea\").removeClass(\"visibility-hidden\");\r\n }\r\n else {\r\n // SPの場合\r\n $(\"#closeEvent\").removeClass(\"close-event\");\r\n $(\"#header\").removeClass(\"visHidden\");\r\n $(\"#footer\").removeClass(\"visHidden\");\r\n $(\"#dialogArea\").removeClass(\"visHidden\");\r\n $(\"#flowButtonArea\").removeClass(\"visHidden\");\r\n $(\"#commentEditPage\").removeClass(\"visHidden\");\r\n $(\"#senderEditPage\").removeClass(\"visHidden\");\r\n $(\".imageListScroll\").removeClass(\"visHidden\");\r\n $(\".stampScroll\").removeClass(\"visHidden\");\r\n $(\"#footerMenu\").removeClass(\"visHidden\");\r\n $(\"#messageArea\").removeClass(\"visHidden\");\r\n }\r\n }\r\n\r\n /**\r\n * テンポラリデータ初期化(WebAPI)呼び出し\r\n * @param authToken 認証トークン\r\n */\r\n private async initTemp(authToken: string): es6promise.Promise {\r\n\r\n let result: initTempResponseEntity;\r\n\r\n // 入力パラメータ\r\n const param = {\r\n token: authToken\r\n }\r\n\r\n await util.ajax.post(this.WEBAPI_URL_INITTEMP, JSON.stringify(param)).then((resData: initTempResponseEntity) => {\r\n result = resData;\r\n\r\n Logger.debug(\"WebAPI_InitTemp result[\" + JSON.stringify(result) + \"]\");\r\n\r\n }).catch(() => {\r\n\r\n result = null;\r\n });\r\n\r\n return result\r\n }\r\n\r\n /**\r\n * 編集情報取得(WebAPI)呼び出し\r\n * @param authToken :認証トークン\r\n * @param sessionSender :セッションの差出人を使用するか?\r\n */\r\n private async getEditInfo(authToken: string, sessionSender: boolean): es6promise.Promise {\r\n\r\n let result: GetEditInfo.GetEditInfoResponseEntity;\r\n\r\n // 入力パラメータ\r\n const param = {\r\n token: authToken,\r\n sessionSender: sessionSender\r\n }\r\n await util.ajax.post(this.WEBAPI_URL_GETEDITINF, JSON.stringify(param)).then((resData: GetEditInfo.GetEditInfoResponseEntity) => {\r\n result = resData;\r\n\r\n //Logger.debug(\"WebAPI_GetEditInfo result[\" + JSON.stringify(result) + \"]\");\r\n\r\n }).catch(() => {\r\n\r\n result = null;\r\n });\r\n\r\n return result\r\n }\r\n\r\n /**\r\n * 画像存在チェック(WebAPI)呼び出し\r\n * @param authToken :認証トークン\r\n */\r\n private async getCheckUploadImagesInfo(authToken: string, photoList: string[], mystampList: string[], fontgenicList: string[]): es6promise.Promise {\r\n\r\n let result: GetEditInfo.GetEditInfoCheckUploadImagesEntity;\r\n\r\n // 入力パラメータ\r\n const param = {\r\n Token: authToken,\r\n photoList: photoList,\r\n mystampList: mystampList,\r\n fontgenicList: fontgenicList\r\n }\r\n await util.ajax.post(this.WEBAPI_URL_CHECKUPLOADIMAGES, JSON.stringify(param)).then((resData: GetEditInfo.GetEditInfoCheckUploadImagesEntity) => {\r\n result = resData;\r\n\r\n Logger.debug(\"WebAPI_CheckUploadImages result[\" + JSON.stringify(result) + \"]\");\r\n\r\n }).catch(() => {\r\n result = null;\r\n });\r\n\r\n return result\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■メソッド(内部制御系)\r\n\r\n /**\r\n * 次へボタンの活性制御判定\r\n * */\r\n public allowNextPage(nextFunc: (allow: boolean) => void) {\r\n\r\n this.sonbpIfController.getPhotoList(\r\n (list: itemVenderProperty[]) => {\r\n if (list.length === 0) {\r\n nextFunc(true);\r\n }\r\n else {\r\n const emptyItem: itemVenderProperty = util.relic.listFind(list, (p: itemVenderProperty) => {\r\n return p.file_id === this.sonbpIfController.EMPTY_PHOTOBOX_FILE_ID;\r\n })\r\n\r\n if (emptyItem === undefined) {\r\n nextFunc(true);\r\n }\r\n else {\r\n nextFunc(false);\r\n }\r\n }\r\n },\r\n () => {\r\n nextFunc(false);\r\n });\r\n\r\n }\r\n\r\n /**\r\n * タッチイベントを制御します。\r\n * @param allow\r\n */\r\n public touchEventChange(allow: boolean): void {\r\n\r\n // -> SP版の編集画面ではピンチアウトできないことにしたが、\r\n // ピンチアウトする場合のときのためにこの関数を残しておく。\r\n /*this._vue.$data.AllowTouchEvent = allow;*/\r\n }\r\n\r\n /**\r\n * オブジェクト操作パレットの項目表示制御\r\n * @param editMode :編集モード\r\n * @param selectItem :選択アイテム情報\r\n */\r\n public setModeOparatePallet(editMode: string, selectItem: itemVenderProperty) {\r\n\r\n if (this._usePcDesign) {\r\n // PC用\r\n this.setModeOparatePalletForPc(editMode, selectItem);\r\n }\r\n else {\r\n // SP用\r\n this.setModeOparatePalletForSp(editMode, selectItem);\r\n }\r\n\r\n }\r\n\r\n /**\r\n * オブジェクト操作パレットの項目表示制御(PC用)\r\n * @param editMode :編集モード\r\n * @param selectItem :選択アイテム情報\r\n */\r\n private setModeOparatePalletForPc(editMode: string, selectItem: itemVenderProperty) {\r\n\r\n // デフォルト文字色\r\n let defFontColor: GetEditInfo.GetEditInfoColorEntity = util.relic.listFind(this.editInfo.master.color, (c: GetEditInfo.GetEditInfoColorEntity) => {\r\n return c.id == this.editInfo.master.design.fontColor;\r\n });\r\n if (!defFontColor) {\r\n defFontColor = this.editInfo.master.color[0];\r\n }\r\n\r\n if (editMode === EDIT_MODE_KIND.SET_PHOTO) {\r\n // 画像入替・追加\r\n this._vue.$data.Show.OparatePalletDelStamp = false;\r\n this._vue.$data.Show.OparatePalletCharColor = false;\r\n this._vue.$data.Show.OparatePalletTegakiColor = false;\r\n this._vue.$data.Show.OparatePalletTopPart = false;\r\n this._vue.$data.Show.OparatePalletClear = false;\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n this._vue.$data.Show.OparatePalletCover4Top = false;\r\n this._vue.$data.Show.OparatePalletCover4Bottom = false;\r\n this._vue.$data.Show.OparatePalletPhotoCorrect = false;\r\n this._vue.$data.Show.OparatePalletPitaCorrect = false;\r\n this._vue.$data.Show.OparatePalletFinishSelect = true;\r\n this._vue.$data.Show.HideButton = false;\r\n\r\n if (this.editInfo.master.design.printType === EditConst.PRINT_TYPE_PRINT) {\r\n // 印刷専用の場合\r\n this._vue.$data.OparatePalletWide = false;\r\n this._vue.$data.Show.OparatePalletFinishSelectPrint = true;\r\n this._vue.$data.Show.OparatePalletFinishSelectGinen = false;\r\n this._vue.$data.FinishSelect.isGinen = false;\r\n\r\n this._vue.$data.Show.OparatePallet = false;\r\n }\r\n else if (this.editInfo.master.design.printType === EditConst.PRINT_TYPE_GINEN) {\r\n // 銀塩専用の場合\r\n this._vue.$data.OparatePalletWide = false;\r\n this._vue.$data.Show.OparatePalletFinishSelectPrint = false;\r\n this._vue.$data.Show.OparatePalletFinishSelectGinen = true;\r\n this._vue.$data.FinishSelect.isGinen = true;\r\n\r\n this._vue.$data.Show.OparatePallet = false;\r\n }\r\n else {\r\n // 上記以外の場合\r\n this._vue.$data.OparatePalletWide = true;\r\n this._vue.$data.Show.OparatePalletFinishSelectPrint = true;\r\n this._vue.$data.Show.OparatePalletFinishSelectGinen = true;\r\n }\r\n\r\n }\r\n else if (editMode === EDIT_MODE_KIND.MANI_PHOTO) {\r\n // 画像編集\r\n this._vue.$data.Show.OparatePalletDelStamp = false;\r\n this._vue.$data.Show.OparatePalletCharColor = false;\r\n this._vue.$data.Show.OparatePalletTegakiColor = false;\r\n this._vue.$data.Show.OparatePalletTopPart = true;\r\n this._vue.$data.Show.OparatePalletClear = true;\r\n this._vue.$data.Show.OparatePalletPhotoCorrect = true;\r\n this._vue.$data.Show.OparatePalletPitaCorrect = true;\r\n if (selectItem !== null && selectItem.file_id !== this.sonbpIfController.EMPTY_PHOTOBOX_FILE_ID) {\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n }\r\n else {\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n }\r\n this._vue.$data.Show.OparatePalletCover4Top = false;\r\n this._vue.$data.Show.OparatePalletCover4Bottom = false;\r\n this._vue.$data.Show.OparatePalletFinishSelect = false;\r\n this._vue.$data.OparatePalletWide = false;\r\n this._vue.$data.Show.HideButton = false;\r\n }\r\n else if (editMode === EDIT_MODE_KIND.GREETING) {\r\n // あいさつ文編集\r\n this._vue.$data.Show.OparatePalletDelStamp = false;\r\n this._vue.$data.Show.OparatePalletCharColor = true;\r\n this._vue.$data.Show.OparatePalletTegakiColor = false;\r\n this._vue.$data.Show.OparatePalletClear = false;\r\n this._vue.$data.Show.OparatePalletPhotoCorrect = false;\r\n this._vue.$data.Show.OparatePalletPitaCorrect = false;\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n this._vue.$data.Show.OparatePalletFinishSelect = false;\r\n this._vue.$data.OparatePalletWide = false;\r\n this._vue.$data.Show.OparatePalletTopPart = true;\r\n this._vue.$data.Show.HideButton = true;\r\n\r\n // 作成済みのあいさつ文が存在するか判定\r\n if (0 < this.sonbpIfController.GreetingList.length) {\r\n // あり\r\n this._vue.$data.Show.OparatePalletCover4Top = false;\r\n this._vue.$data.Show.OparatePalletCover4Bottom = false;\r\n this._vue.$data.GreetingInfo.UpdBtnEnable = true;\r\n this._vue.$data.GreetingInfo.DelBtnEnable = true;\r\n }\r\n else {\r\n // なし\r\n this._vue.$data.Show.OparatePalletCover4Top = true;\r\n this._vue.$data.Show.OparatePalletCover4Bottom = false;\r\n this._vue.$data.GreetingInfo.UpdBtnEnable = false;\r\n this._vue.$data.GreetingInfo.DelBtnEnable = false;\r\n }\r\n // 文字色\r\n this._vue.$data.SelectCharColor = defFontColor.id;\r\n // フチ文字色\r\n this._vue.$data.SelectOutlineCharColor = this.editInfo.master.color[0].id;\r\n }\r\n else if (editMode === EDIT_MODE_KIND.SENDER) {\r\n // 差出人情報編集\r\n this._vue.$data.Show.OparatePalletDelStamp = false;\r\n this._vue.$data.Show.OparatePalletTopPart = true;\r\n this._vue.$data.Show.OparatePalletClear = false;\r\n this._vue.$data.Show.OparatePalletPhotoCorrect = false;\r\n this._vue.$data.Show.OparatePalletPitaCorrect = false; \r\n this._vue.$data.Show.OparatePalletFinishSelect = false;\r\n this._vue.$data.OparatePalletWide = false;\r\n this._vue.$data.Show.OparatePalletCharColor = true;\r\n this._vue.$data.Show.OparatePalletTegakiColor = false;\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n this._vue.$data.Show.OparatePalletCover4Top = true;\r\n this._vue.$data.Show.OparatePalletCover4Bottom = false;\r\n this._vue.$data.Show.HideButton = true;\r\n // 文字色\r\n this._vue.$data.SelectCharColor = defFontColor.id;\r\n // フチ文字色\r\n this._vue.$data.SelectOutlineCharColor = this.editInfo.master.color[0].id;\r\n }\r\n else if (editMode === EDIT_MODE_KIND.STAMP) {\r\n // スタンプ\r\n this._vue.$data.Show.OparatePalletDelStamp = true;\r\n this._vue.$data.Show.OparatePalletCharColor = false;\r\n this._vue.$data.Show.OparatePalletTegakiColor = false;\r\n this._vue.$data.Show.OparatePalletTopPart = true;\r\n this._vue.$data.Show.OparatePalletClear = false;\r\n this._vue.$data.Show.OparatePalletPhotoCorrect = false;\r\n this._vue.$data.Show.OparatePalletPitaCorrect = false; \r\n this._vue.$data.Show.OparatePalletFinishSelect = false;\r\n this._vue.$data.Show.OparatePalletCover4Top = false;\r\n this._vue.$data.Show.OparatePalletCover4Bottom = false;\r\n this._vue.$data.OparatePalletWide = false;\r\n this._vue.$data.Show.HideButton = true;\r\n } else if (editMode === EDIT_MODE_KIND.MYSTAMP) {\r\n // Myステッカー\r\n this._vue.$data.Show.OparatePalletDelStamp = true;\r\n this._vue.$data.Show.OparatePalletCharColor = false;\r\n this._vue.$data.Show.OparatePalletTegakiColor = false;\r\n this._vue.$data.Show.OparatePalletTopPart = true;\r\n this._vue.$data.Show.OparatePalletClear = false;\r\n this._vue.$data.Show.OparatePalletPhotoCorrect = false;\r\n this._vue.$data.Show.OparatePalletPitaCorrect = false; \r\n this._vue.$data.Show.OparatePalletFinishSelect = false;\r\n this._vue.$data.Show.OparatePalletCover4Top = false;\r\n this._vue.$data.Show.OparatePalletCover4Bottom = false;\r\n this._vue.$data.OparatePalletWide = false;\r\n this._vue.$data.Show.HideButton = true;\r\n } else if (editMode === EDIT_MODE_KIND.FONTGENIC) {\r\n // 手書きスタンプ\r\n this._vue.$data.Show.OparatePalletDelStamp = true;\r\n this._vue.$data.Show.OparatePalletCharColor = false;\r\n this._vue.$data.Show.OparatePalletTegakiColor = true;\r\n this._vue.$data.Show.OparatePalletTopPart = true;\r\n this._vue.$data.Show.OparatePalletClear = false;\r\n this._vue.$data.Show.OparatePalletPhotoCorrect = false;\r\n this._vue.$data.Show.OparatePalletPitaCorrect = false; \r\n this._vue.$data.Show.OparatePalletFinishSelect = false;\r\n this._vue.$data.Show.OparatePalletCover4Top = false;\r\n this._vue.$data.Show.OparatePalletCover4Bottom = false;\r\n this._vue.$data.OparatePalletWide = false;\r\n this._vue.$data.Show.HideButton = true;\r\n // 手書きスタンプ色\r\n this._vue.$data.SelectTegakiColor = \"\";\r\n }\r\n\r\n\r\n }\r\n\r\n /**\r\n * オブジェクト操作パレットの項目表示制御(SP用)\r\n * @param editMode :編集モード\r\n * @param selectItem :選択アイテム情報\r\n */\r\n public setModeOparatePalletForSp(editMode: string, selectItem: itemVenderProperty) {\r\n\r\n this._vue.$data.Show.OparatePalletAddGreetingItem = false;\r\n this._vue.$data.Show.OparatePalletAddStampItem = false;\r\n this._vue.$data.Show.OparatePalletAddMyStampItem = false;\r\n this._vue.$data.Show.OparatePalletAddTegakiStampItem = false;\r\n this._vue.$data.Show.OparatePalletChangeTegakiStampColor = false;\r\n this._vue.$data.Show.OparatePalletPitaCorrect = false,\r\n\r\n\r\n this._vue.$data.Show.OparatePalletEditGreetingItem = false;\r\n this._vue.$data.Show.OparatePalletEditSenderItem = false;\r\n\r\n this._vue.$data.Show.GreetingDeleteBtn = false;\r\n this._vue.$data.Show.SenderDeleteBtn = false;\r\n this._vue.$data.Show.StampDeleteBtn = false;\r\n\r\n\r\n if (editMode === EDIT_MODE_KIND.SET_PHOTO) {\r\n // 画像入替・追加\r\n this.returnHomeFunc(selectItem);\r\n if (this.editInfo.master.design.printType === EditConst.PRINT_TYPE_PRINT) {\r\n // 印刷専用の場合\r\n this._vue.$data.FinishSelect.isGinen = false;\r\n this._vue.$data.Show.FinishSelectMenuIcon = false;\r\n }\r\n else if (this.editInfo.master.design.printType === EditConst.PRINT_TYPE_GINEN) {\r\n // 銀塩専用の場合\r\n this._vue.$data.FinishSelect.isGinen = true;\r\n this._vue.$data.Show.FinishSelectMenuIcon = false;\r\n }\r\n else {\r\n // 上記以外の場合\r\n this._vue.$data.Show.FinishSelectMenuIcon = true;\r\n }\r\n }\r\n else if (editMode === EDIT_MODE_KIND.MANI_PHOTO) {\r\n // 画像編集\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n this._vue.$data.Show.OparatePalletPitaCorrect = true;\r\n\r\n }\r\n else if (editMode === EDIT_MODE_KIND.GREETING) {\r\n // あいさつ文編集\r\n this.sonbpIfController.getGreetingTextList((list: itemVenderProperty[]) => {\r\n if (0 < list.length) {\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n this._vue.$data.GreetingInfo.DelBtnEnable = true;\r\n this._vue.$data.GreetingInfo.UpdBtnEnable = true;\r\n }\r\n else {\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n this._vue.$data.GreetingInfo.DelBtnEnable = false;\r\n this._vue.$data.GreetingInfo.UpdBtnEnable = false;\r\n }\r\n });\r\n\r\n this._vue.$data.Show.OparatePalletAddGreetingItem = true;\r\n this._vue.$data.Show.OparatePalletEditGreetingItem = true;\r\n this._vue.$data.Show.GreetingDeleteBtn = true;\r\n }\r\n else if (editMode === EDIT_MODE_KIND.SENDER) {\r\n // 差出人情報編集\r\n this.sonbpIfController.getSenderTextList((list: itemVenderProperty[]) => {\r\n if (0 < list.length) {\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n this._vue.$data.SenderInfo.DelBtnEnable = true;\r\n }\r\n else {\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n this._vue.$data.SenderInfo.DelBtnEnable = false;\r\n }\r\n });\r\n\r\n this._vue.$data.Show.OparatePalletEditSenderItem = true;\r\n this._vue.$data.Show.SenderDeleteBtn = true;\r\n\r\n }\r\n else if (editMode === EDIT_MODE_KIND.STAMP) {\r\n // スタンプ\r\n this.sonbpIfController.getMstStampList((list: itemVenderProperty[]) => {\r\n if (0 < list.length) {\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n this._vue.$data.Stamp.DelBtnEnable = true;\r\n }\r\n else {\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n this._vue.$data.Stamp.DelBtnEnable = false;\r\n }\r\n });\r\n\r\n this._vue.$data.Show.OparatePalletAddStampItem = true;\r\n this._vue.$data.Show.StampDeleteBtn = true;\r\n }\r\n else if (editMode === EDIT_MODE_KIND.MYSTAMP) {\r\n // Myステッカー\r\n this.sonbpIfController.getMyStampList((list: itemVenderProperty[]) => {\r\n if (0 < list.length) {\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n this._vue.$data.Stamp.DelBtnEnable = true;\r\n }\r\n else {\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n this._vue.$data.Stamp.DelBtnEnable = false;\r\n }\r\n });\r\n\r\n this._vue.$data.Show.OparatePalletAddMyStampItem = true;\r\n this._vue.$data.Show.StampDeleteBtn = true;\r\n }\r\n else if (editMode === EDIT_MODE_KIND.FONTGENIC) {\r\n // 手書きスタンプ\r\n this.sonbpIfController.getTegakiStampList((list: itemVenderProperty[]) => {\r\n if (0 < list.length) {\r\n this._vue.$data.Show.OparatePalletCover = false;\r\n this._vue.$data.Stamp.DelBtnEnable = true;\r\n }\r\n else {\r\n this._vue.$data.Show.OparatePalletCover = true;\r\n this._vue.$data.Stamp.DelBtnEnable = false;\r\n }\r\n });\r\n\r\n this._vue.$data.Show.OparatePalletAddTegakiStampItem = true;\r\n this._vue.$data.Show.OparatePalletChangeTegakiStampColor = true;\r\n this._vue.$data.Show.StampDeleteBtn = true;\r\n }\r\n\r\n }\r\n\r\n /**\r\n * 全枠のサムネイル画像をまとめて取得\r\n */\r\n private getAllUploadThumbnails(): es6promise.Promise {\r\n const that = this;\r\n\r\n // アップロード画像のサムネイル取得\r\n return new es6promise.Promise(async function (resolve, reject) {\r\n let promises: any[] = [];\r\n let err: boolean = false;\r\n\r\n Logger.debug(\"全枠のサムネイル画像をまとめて取得\");\r\n\r\n // アップロード画像ファイル数分繰り返し\r\n for (let i: number = 0; i < that.uploadPhotoList.length; i++) {\r\n\r\n if (util.verify.isEmpty(that.uploadPhotoList[i].fileId)) {\r\n continue;\r\n }\r\n\r\n Logger.debug(\"対象アップロード画像ファイル i[\" + i + \"] [\" + that.uploadPhotoList[i].fileId + \"]\");\r\n\r\n // 10個ずつ実行\r\n promises.push(that._photoLogic.getThumbnail(that.uploadPhotoList[i].fileId, that.uploadPhotoList[i].width, that.uploadPhotoList[i].height));\r\n if (i % 10 == 9 || that.uploadPhotoList.length <= i + 1) {\r\n await asyncWhenApply(promises).then(function () {\r\n Logger.debug(\"アップロード画像のサムネイル取得 arguments[\" + JSON.stringify(arguments) + \"]\");\r\n promises = [];\r\n }).catch(function (e) {\r\n Logger.error(\"アップロード画像のサムネイル取得エラー\", e);\r\n err = true;\r\n });\r\n }\r\n\r\n // 結果判定\r\n if (err) {\r\n Logger.error(\"画像サムネイルダウンロード失敗\");\r\n break;\r\n }\r\n }\r\n\r\n // Myステッカーアップロード画像ファイル数分繰り返し\r\n promises = [];\r\n for (let i: number = 0; i < that.uploadMyStampList.length; i++) {\r\n\r\n let myStamp = that.uploadMyStampList[i];\r\n\r\n if (util.verify.isEmpty(myStamp.fileId)) {\r\n continue;\r\n }\r\n\r\n Logger.debug(\"対象Myステッカーアップロード画像ファイル i[\" + i + \"] [\" + myStamp.fileId + \"]\");\r\n\r\n // 10個ずつ実行\r\n promises.push(that._myStampLogic.getThumbnail(myStamp.fileId, myStamp.width, myStamp.height));\r\n if (i % 10 == 9 || that.uploadMyStampList.length <= i + 1) {\r\n await asyncWhenApply(promises).then(function () {\r\n Logger.debug(\"Myステッカーアップロード画像のサムネイル取得 arguments[\" + JSON.stringify(arguments) + \"]\");\r\n promises = [];\r\n }).catch(function (e) {\r\n Logger.error(\"Myステッカーアップロード画像のサムネイル取得エラー\", e);\r\n err = true;\r\n });\r\n }\r\n\r\n // 結果判定\r\n if (err) {\r\n Logger.error(\"Myステッカーサムネイルダウンロード失敗\");\r\n break;\r\n }\r\n }\r\n that.sonbpIfController.getMyStampList((list: itemVenderProperty[]) => {\r\n for (let i = 0; i < list.length; i++) {\r\n if (list[i].item_type === sonbpIfconst.ITYPE_MYSTAMP_IMG) {\r\n let upstmp: uploadPhoto = util.relic.listFind(that.uploadMyStampList, (upStamp: uploadPhoto) => { return upStamp.fileId === list[i].file_id; });\r\n if (upstmp) {\r\n upstmp.isUsed = true;\r\n }\r\n }\r\n }\r\n });\r\n\r\n if (!err) {\r\n Logger.debug(\"Myステッカーサムネイルダウンロード全成功\");\r\n resolve();\r\n } else {\r\n Logger.error(\"Myステッカーサムネイルダウンロード失敗\");\r\n reject();\r\n }\r\n\r\n\r\n // 手書きスタンプアップロード画像ファイル数分繰り返し\r\n promises = [];\r\n for (let i: number = 0; i < that.uploadTegakiStampList.length; i++) {\r\n\r\n let tegaki = that.uploadTegakiStampList[i];\r\n\r\n if (util.verify.isEmpty(tegaki.fileId)) {\r\n continue;\r\n }\r\n\r\n Logger.debug(\"対象手書きスタンプアップロード画像ファイル i[\" + i + \"] [\" + tegaki.fileId + \"]\");\r\n\r\n // 10個ずつ実行\r\n promises.push(that._tegakiStampLogic.getThumbnail(tegaki.fileId, tegaki.width, tegaki.height));\r\n if (i % 10 == 9 || that.uploadTegakiStampList.length <= i + 1) {\r\n await asyncWhenApply(promises).then(function () {\r\n Logger.debug(\"手書きスタンプアップロード画像のサムネイル取得 arguments[\" + JSON.stringify(arguments) + \"]\");\r\n promises = [];\r\n }).catch(function (e) {\r\n Logger.error(\"手書きスタンプアップロード画像のサムネイル取得エラー\", e);\r\n err = true;\r\n });\r\n }\r\n\r\n // 結果判定\r\n if (err) {\r\n Logger.error(\"手書きスタンプサムネイルダウンロード失敗\");\r\n break;\r\n }\r\n }\r\n\r\n if (!err) {\r\n Logger.debug(\"画像サムネイルダウンロード全成功\");\r\n resolve();\r\n } else {\r\n Logger.error(\"画像サムネイルダウンロード失敗\");\r\n reject();\r\n }\r\n });\r\n\r\n }\r\n\r\n /**\r\n * ホームメニューへの遷移処理\r\n */\r\n private returnHomeFunc(selectItem: itemVenderProperty) {\r\n\r\n // タイトル\r\n this._vue.$data.Header.Title = EditConst.TITLE_MAIN;\r\n\r\n // 戻るボタン\r\n this._vue.$data.Show.ReturnFlowBtn = true;\r\n this._vue.$data.Show.ReturnHomeBtn = false;\r\n this._vue.$data.Show.ReturnHomeExBtn = false;\r\n this._vue.$data.Show.ReturnPhotoManiBtn = false;\r\n this._vue.$data.Show.ReturnGreetingHomeBtn = false;\r\n this._vue.$data.Show.ReturnSenderHomeBtn = false;\r\n this._vue.$data.Show.ReturnStampHomeBtn = false;\r\n this._vue.$data.Show.ReturnMyStampHomeBtn = false;\r\n this._vue.$data.Show.ReturnTegakiStampHomeBtn = false;\r\n this._vue.$data.Show.FinishSelectMenuDialog = false;\r\n this._vue.$data.Show.EditImageFilterMenu = false;\r\n this._vue.$data.Show.EditImagePitaMenu = false;\r\n // 次へボタン\r\n this._vue.$data.Show.NextFlowBtn = true;\r\n this._vue.$data.Show.NextHomeFromImgListBtn = false;\r\n this._vue.$data.Show.NextHomeFromMyStampListBtn = false;\r\n this._vue.$data.Show.NextHomeFromTegakiStampListBtn = false;\r\n this._vue.$data.Show.CommitNextHomeBtn = false;\r\n // 削除ボタン\r\n this._vue.$data.Show.PhotoDeleteBtn = false;\r\n this._vue.$data.Show.MyStampListTrashBtn = false;\r\n this._vue.$data.Show.TegakiStampListTrashBtn = false;\r\n this._vue.$data.Show.GreetingDeleteBtn = false;\r\n this._vue.$data.Show.SenderDeleteBtn = false;\r\n this._vue.$data.Show.StampDeleteBtn = false;\r\n // 更新ボタン\r\n this._vue.$data.Show.GreetingUpdataBtn = false;\r\n\r\n // 編集エリア\r\n this._vue.$data.Show.EditArea = true;\r\n this._vue.$data.Show.MyStampList = false;\r\n this._vue.$data.Show.TegakiStampList = false;\r\n // 画像一覧\r\n this._vue.$data.Show.PhotoList = false;\r\n // あいさつ文パネル\r\n this._vue.$data.Show.GreetingPanel = false;\r\n // 差出人パネル\r\n this._vue.$data.Show.SenderPanel = false;\r\n // スタンプパネル\r\n this._vue.$data.Show.StampPanel = false;\r\n this._vue.$data.Show.MyStampPanel = false;\r\n this._vue.$data.Show.TegakiStampPanel = false;\r\n this._vue.$data.Show.TegakiColorPanel = false;\r\n\r\n // フッターメニュー\r\n this._vue.$data.Show.FooterMenu = true;\r\n // オブジェクト操作メニュー\r\n this._vue.$data.Show.OparatePallet = false;\r\n this._vue.$data.Show.OparatePalletChangeBright = false;\r\n\r\n // メインメニュー表示\r\n this._vue.$data.Show.EditImageMenu = false;\r\n this._vue.$data.Show.SetPhotoMenu = true;\r\n\r\n // メインメニュー表示 = アイテム未選択\r\n this.sonbpIfController.selectItemClear();\r\n }\r\n\r\n /**\r\n * 仕上がりのメッセージをセットする。\r\n * @param isGinen\r\n */\r\n private setImgGuidanceMesage(isGinen: boolean)\r\n {\r\n // 仕上がり変更したらメッセージを表示\r\n this._vue.$data.Show.ImgGuidance = true;\r\n const msg = isGinen ? EditConst.IMAGE_GUIDANCE_MESSAGE_GINEN : EditConst.IMAGE_GUIDANCE_MESSAGE_INSATSU;\r\n this._vue.$data.ImgGuidanceMessage = msg;\r\n }\r\n\r\n// #endregion\r\n\r\n// #region ■イベント\r\n //--------------------------------------------------------------------------\r\n // イベント\r\n //--------------------------------------------------------------------------\r\n\r\n// #region ■イベント(画面遷移関連)\r\n\r\n /**\r\n * 前画面遷移ボタン押下メソッド\r\n * @param event\r\n */\r\n public btnClickReturnFlow(event: JQueryEventObject): void {\r\n\r\n Logger.debug(\"前画面遷移ボタン押下メソッド [\" + /*this._retailerConfig.editReturnBtn +*/ \"]\");\r\n\r\n this._saveLogic.saveReady(true, this._saveLogic.saveBodyForReturnFlow);\r\n }\r\n\r\n /**\r\n * 前画面遷移ボタン押下メソッド(ガイダンス表示)(PC用)\r\n * @param event\r\n */\r\n public btnClickReturnFlowFromGuidance(event: JQueryEventObject): void {\r\n\r\n Logger.debug(\"前画面遷移ボタン押下メソッド(ガイダンス) [\" + /*this._retailerConfig.editReturnBtn +*/ \"]\");\r\n\r\n let showConfirmDlg: boolean = false;\r\n\r\n // 画像枠ありのテンプレートか判定\r\n if (this.sonbpIfController.ExistsPhotoBox) {\r\n // ありの場合\r\n showConfirmDlg = false;\r\n }\r\n else {\r\n // 上記以外の場合\r\n showConfirmDlg = true;\r\n }\r\n\r\n this._saveLogic.saveReady(showConfirmDlg, this._saveLogic.saveBodyForReturnFlow);\r\n }\r\n\r\n /**\r\n * 次画面遷移ボタン押下メソッド\r\n * */\r\n public btnClickNextFlow(event: JQueryEventObject): void {\r\n\r\n // sonbpの画像とアップロード一覧のチェック\r\n let msg = this.checkSonbpList();\r\n if (msg) {\r\n util.dialogUtil.createErrorDialog(\r\n msg,\r\n () => {\r\n util.dialogUtil.closeErrorDialog();\r\n },\r\n util.dialogUtil.DialogType.Warning\r\n )\r\n // 不整合あればここで処理終了\r\n return;\r\n }\r\n\r\n let emptyItems: string[] = [];\r\n let useConfirm: boolean = false;\r\n\r\n // あいさつ文の登録数判定\r\n this.sonbpIfController.getGreetingTextList((greetingList: itemVenderProperty[]) => {\r\n if (this.editInfo.master.design.editMode != EditConst.DSN_MST_EDIT_MODE_LIMIT) {\r\n if (greetingList.length === 0) {\r\n useConfirm = true;\r\n emptyItems.push(\"・あいさつ文\");\r\n }\r\n }\r\n\r\n // 差出人情報の登録数判定\r\n if (this._vue.$data.Show.SenderMenu === true) {\r\n this.sonbpIfController.getSenderTextList((senderList: itemVenderProperty[]) => {\r\n if (senderList.length === 0) {\r\n useConfirm = true;\r\n emptyItems.push(\"・差出人情報\");\r\n }\r\n this.nextFlowFunc(useConfirm, emptyItems);\r\n\r\n });\r\n }\r\n else {\r\n this.nextFlowFunc(useConfirm, emptyItems);\r\n }\r\n });\r\n\r\n }\r\n\r\n /**\r\n * 次画面遷移ボタン押下処理本体\r\n * @param useConfirm :確認メッセージ必要?\r\n * @param emptyItems :登録数0件の項目名\r\n */\r\n private nextFlowFunc(useConfirm: boolean, emptyItems: string[]) {\r\n\r\n // 判定\r\n if (!useConfirm) {\r\n this._saveLogic.saveReady(true, this._saveLogic.saveBody);\r\n }\r\n else {\r\n let msg: string = constDialogMessage.INFO_EDIT_NEXTPAGE_CHECK;\r\n msg = msg + \"
    \" + emptyItems.join(\"
    \");\r\n\r\n // 確認メッセージ表示\r\n util.dialogUtil.createYesNoDialog(\r\n msg,\r\n () => {\r\n util.dialogUtil.closeYesNoDialog();\r\n this._saveLogic.saveReady(true, this._saveLogic.saveBody);\r\n },\r\n util.dialogUtil.closeYesNoDialog,\r\n EditConst.NEXTPAGE_CONFIRM_YES, EditConst.NEXTPAGE_CONFIRM_NO,\r\n util.dialogUtil.DialogType.Infomation)\r\n }\r\n\r\n }\r\n\r\n /**\r\n * ユーザがアップロードした画像一覧にない画像をsonbpが使用していないかチェック\r\n * return 空文字:不整合無し\r\n * ダイアログメッセージ:不整合有り(sonbpの画像がアップロード一覧にない。)\r\n * */\r\n private checkSonbpList(): string{\r\n\r\n // sonbpの使用一覧を取得する。\r\n let photoList: string[];\r\n let mystampList: string[];\r\n let fontgenicList: string[];\r\n this.sonbpIfController.getPhotoList((list: itemVenderProperty[]) => {\r\n photoList = list.map(v => v.file_id).filter(v => v !== this.sonbpIfController.EMPTY_PHOTOBOX_FILE_ID);\r\n }, () => { });\r\n this.sonbpIfController.getMyStampList((list: itemVenderProperty[]) => {\r\n mystampList = list.map(v => v.file_id);\r\n });\r\n this.sonbpIfController.getTegakiStampList((list: itemVenderProperty[]) => {\r\n fontgenicList = list.map(v => v.file_id);\r\n });\r\n\r\n // チェック用ローカル関数\r\n function CheckDiff(uploadList: uploadPhoto[], sonbpListWithAtmark: string[]) :boolean{\r\n // アップロード一覧からIDのリスト作成(不要な@は取り除く)\r\n let uploadFileKeyList = uploadList.map(x => {\r\n return x.fileId;\r\n }).filter(x => x != undefined);\r\n let sonbpList = sonbpListWithAtmark.map(x => {\r\n return x?.split('@')[0];\r\n }).filter(x => x != undefined);\r\n Logger.log(\"sonbpList:\", sonbpList);\r\n Logger.log(\"uploadList:\", uploadFileKeyList);\r\n // sonbpとアップロード一覧を突き合わせ結果(sonbpだけに存在しているものはfalse)\r\n let diff = sonbpList.map(x => {\r\n return {\r\n isExist: uploadFileKeyList.includes(x),\r\n id: x\r\n }\r\n });\r\n if (diff.filter(x => x.isExist == false).length > 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n if (!CheckDiff(this.uploadPhotoList, photoList)) {\r\n return constDialogMessage.WARN_EDIT_CHECK_SONBP_UPLOADIMAGES_DIFF;\r\n } else if (!CheckDiff(this.uploadMyStampList, mystampList)) {\r\n return constDialogMessage.WARN_EDIT_CHECK_SONBP_UPLOADMYSTAMPS_DIFF;\r\n } else if (!CheckDiff(this.uploadTegakiStampList, fontgenicList)) {\r\n return constDialogMessage.WARN_EDIT_CHECK_SONBP_UPLOADTEGAKISTAMPS_DIFF;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * ヘッダーの最初に戻る押下\r\n * @param event\r\n * @override\r\n */\r\n public btnClickReturnTop(event: JQueryEventObject): void {\r\n Logger.debug(\"最初に戻るボタン押下メソッド \");\r\n this._saveLogic.saveReady(true, this._saveLogic.saveBodyForReturnFlow);\r\n }\r\n\r\n /**\r\n * 操作方法ボタン押下メソッド\r\n * */\r\n public btnClickOperationHelp(event: JQueryEventObject): void {\r\n util.ui.windowOpen(this._retailerConfig.operationInfo.edit);\r\n }\r\n\r\n /**\r\n * プリント領域についてリンク押下メソッド\r\n * */\r\n public linkClickPrintWarning(event: JQueryEventObject): void {\r\n util.ui.windowOpen(this._retailerConfig.printWarning);\r\n }\r\n\r\n\r\n// #endregion\r\n\r\n// #region ■イベント(操作補助関連)\r\n\r\n /**\r\n * ガイダンス2の戻るボタン押下メソッド(SP用)\r\n * */\r\n public btnClickGuidance2Prev(event: JQueryEventObject): void {\r\n\r\n this._vue.$data.Show.Guidance1 = true;\r\n this._vue.$data.Show.Guidance2 = false;\r\n this._vue.$data.Show.Guidance3 = false;\r\n this._vue.$data.Show.Guidance4 = false;\r\n this._vue.$data.Show.Guidance5 = false;\r\n\r\n }\r\n\r\n /**\r\n * ガイダンス1の×ボタン押下メソッド(SP用)\r\n * */\r\n public btnClickCloseGuidance1(event: JQueryEventObject, isBack?: boolean): void {\r\n\r\n if (this._vue.$data.Show.Guidance1 || (this._vue.$data.Show.Guidance3 && isBack)) {\r\n this._vue.$data.Show.Guidance1 = false;\r\n this._vue.$data.Show.Guidance2 = true;\r\n this._vue.$data.Show.Guidance3 = false;\r\n this._vue.$data.Show.Guidance4 = false;\r\n this._vue.$data.Show.Guidance5 = false;\r\n }\r\n }\r\n\r\n /**\r\n * ガイダンス2の×ボタン押下メソッド(SP用)\r\n * */\r\n public btnClickCloseGuidance2(event: JQueryEventObject, isBack?: boolean): void {\r\n\r\n if (this._vue.$data.Show.Guidance2 || (this._vue.$data.Show.Guidance4 && isBack)) {\r\n this._vue.$data.Show.Guidance1 = false;\r\n this._vue.$data.Show.Guidance2 = false;\r\n this._vue.$data.Show.Guidance3 = true;\r\n this._vue.$data.Show.Guidance4 = false;\r\n this._vue.$data.Show.Guidance5 = false;\r\n }\r\n\r\n }\r\n public btnClickCloseGuidance3(event: JQueryEventObject, isBack?: boolean): void {\r\n if (this._vue.$data.Show.Guidance3 || (this._vue.$data.Show.Guidance5 && isBack)) {\r\n this._vue.$data.Show.Guidance1 = false;\r\n this._vue.$data.Show.Guidance2 = false;\r\n this._vue.$data.Show.Guidance3 = false;\r\n this._vue.$data.Show.Guidance4 = true;\r\n this._vue.$data.Show.Guidance5 = false;\r\n }\r\n }\r\n public btnClickCloseGuidance4(event: JQueryEventObject): void {\r\n if (this._vue.$data.Show.Guidance4) {\r\n this._vue.$data.Show.Guidance1 = false;\r\n this._vue.$data.Show.Guidance2 = false;\r\n this._vue.$data.Show.Guidance3 = false;\r\n this._vue.$data.Show.Guidance4 = false;\r\n this._vue.$data.Show.Guidance5 = true;\r\n }\r\n }\r\n public btnClickCloseGuidance5(event: JQueryEventObject): void {\r\n if (this._vue.$data.Show.Guidance5) {\r\n this._vue.$data.Show.Guidance1 = false;\r\n this._vue.$data.Show.Guidance2 = false;\r\n this._vue.$data.Show.Guidance3 = false;\r\n this._vue.$data.Show.Guidance4 = false;\r\n this._vue.$data.Show.Guidance5 = false;\r\n }\r\n this._vue.$data.Show.ScreenLock = false;\r\n }\r\n\r\n /**\r\n * ツールメニュー:仕上がり選択押下メソッド(画像枠=0の場合の特殊メニュー)\r\n * */\r\n public btnClickFinishSelectMenu(event: JQueryEventObject): void {\r\n\r\n if (this.editMode === EDIT_MODE_KIND.SET_PHOTO) {\r\n return;\r\n }\r\n\r\n // sonbpへ処理モード変更依頼\r\n this.sonbpIfController.setMode(EDIT_MODE_KIND.SET_PHOTO,\r\n () => {\r\n // 正常終了の場合\r\n this.editMode = EDIT_MODE_KIND.SET_PHOTO;\r\n // パネルの表示制御\r\n this._vue.$data.Show.BalloonGuidance = false;\r\n this._vue.$data.Show.PhotoList = false;\r\n this._vue.$data.Show.OparatePallet = true;\r\n this._vue.$data.Show.GreetingPanel = false;\r\n this._vue.$data.Show.SenderPanel = false;\r\n this._vue.$data.Show.StampPanel = false;\r\n this._vue.$data.Show.MyStampPanel = false;\r\n this._vue.$data.Show.TegakiStampPanel = false;\r\n this._vue.$data.Show.TegakiColorPanel = false;\r\n\r\n // ツールメニューの活性制御\r\n this._vue.$data.ActiveSetPhotoMenu = false;\r\n this._vue.$data.ActiveManiPhotoMenu = false;\r\n this._vue.$data.ActiveGreetingMenu = false;\r\n this._vue.$data.ActiveSenderMenu = false;\r\n this._vue.$data.ActiveStampMenu = false;\r\n this._vue.$data.ActiveMyStampMenu = false;\r\n this._vue.$data.ActiveTegakiStampMenu = false;\r\n this._vue.$data.ActiveFinishSelectMenu = true;\r\n\r\n // オブジェクト操作パレットの表示制御\r\n this.setModeOparatePallet(EDIT_MODE_KIND.SET_PHOTO, null);\r\n },\r\n () => {\r\n // 異常終了の場合\r\n util.dialogUtil.createErrorDialog(constDialogMessage.ERROR_EDIT_CHANGE_MODE, dialogUtil.closeErrorDialog, dialogUtil.DialogType.Warning);\r\n });\r\n\r\n }\r\n\r\n /**\r\n * 画像の赤枠ガイダンスを消す\r\n * @param event\r\n */\r\n public btnClickImgGuidance(event: JQueryEventObject): void {\r\n this._vue.$data.Show.ImgGuidance = false;\r\n }\r\n\r\n /**\r\n * 操作メニュー(入力欄を隠す)\r\n * @param event\r\n */\r\n public btnClickHideInputArea(event: JQueryEventObject): void {\r\n if (this.editMode === EDIT_MODE_KIND.GREETING) {\r\n //console.log(\"greet\");\r\n if (this._vue.$data.GreetingInfo.fade.Out) {\r\n //console.log(\"フェードイン\");\r\n this._vue.$data.GreetingInfo.fade.In = true;\r\n this._vue.$data.GreetingInfo.fade.Out = false;\r\n this._vue.$data.HideLabel = EditConst.HIDE_AREA_FADE_OUT;\r\n } else {\r\n //console.log(\"フェードアウト\");\r\n this._vue.$data.GreetingInfo.fade.In = false;\r\n this._vue.$data.GreetingInfo.fade.Out = true;\r\n this._vue.$data.HideLabel = EditConst.HIDE_AREA_FADE_IN;\r\n }\r\n } else if (this.editMode === EDIT_MODE_KIND.SENDER) {\r\n //console.log(\"sender\");\r\n if (this._vue.$data.SenderInfo.fade.Out) {\r\n //console.log(\"フェードイン\");\r\n this._vue.$data.SenderInfo.fade.In = true;\r\n this._vue.$data.SenderInfo.fade.Out = false;\r\n this._vue.$data.HideLabel = EditConst.HIDE_AREA_FADE_OUT;\r\n } else {\r\n //console.log(\"フェードアウト\");\r\n this._vue.$data.SenderInfo.fade.In = false;\r\n this._vue.$data.SenderInfo.fade.Out = true;\r\n this._vue.$data.HideLabel = EditConst.HIDE_AREA_FADE_IN;\r\n }\r\n } else if (this.editMode === EDIT_MODE_KIND.STAMP) {\r\n //console.log(\"stamp\");\r\n if (this._vue.$data.Stamp.fade.Out) {\r\n //console.log(\"フェードイン\");\r\n this._vue.$data.Stamp.fade.In = true;\r\n this._vue.$data.Stamp.fade.Out = false;\r\n this._vue.$data.HideLabel = EditConst.HIDE_AREA_FADE_OUT;\r\n } else {\r\n //console.log(\"フェードアウト\");\r\n this._vue.$data.Stamp.fade.In = false;\r\n this._vue.$data.Stamp.fade.Out = true;\r\n this._vue.$data.HideLabel = EditConst.HIDE_AREA_FADE_IN;\r\n }\r\n } else if (this.editMode === EDIT_MODE_KIND.MYSTAMP) {\r\n //console.log(\"stamp\");\r\n if (this._vue.$data.MyStamp.fade.Out) {\r\n //console.log(\"フェードイン\");\r\n this._vue.$data.MyStamp.fade.In = true;\r\n this._vue.$data.MyStamp.fade.Out = false;\r\n this._vue.$data.HideLabel = EditConst.HIDE_AREA_FADE_OUT;\r\n } else {\r\n //console.log(\"フェードアウト\");\r\n this._vue.$data.MyStamp.fade.In = false;\r\n this._vue.$data.MyStamp.fade.Out = true;\r\n this._vue.$data.HideLabel = EditConst.HIDE_AREA_FADE_IN;\r\n }\r\n } else if (this.editMode === EDIT_MODE_KIND.FONTGENIC) {\r\n //console.log(\"stamp\");\r\n if (this._vue.$data.TegakiStamp.fade.Out) {\r\n //console.log(\"フェードイン\");\r\n this._vue.$data.TegakiStamp.fade.In = true;\r\n this._vue.$data.TegakiStamp.fade.Out = false;\r\n this._vue.$data.HideLabel = EditConst.HIDE_AREA_FADE_OUT;\r\n } else {\r\n //console.log(\"フェードアウト\");\r\n this._vue.$data.TegakiStamp.fade.In = false;\r\n this._vue.$data.TegakiStamp.fade.Out = true;\r\n this._vue.$data.HideLabel = EditConst.HIDE_AREA_FADE_IN;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * ホームへ戻る(/決定)ボタン押下(SP)\r\n * @param doSetMode :モード変更する?\r\n * @param doCommit :コミットする?\r\n * @param event :\r\n */\r\n public btnClickReturnHome(doSetMode: boolean, doCommit: boolean, event: JQueryEventObject): void {\r\n\r\n Logger.debug(\"ホームへ戻るボタン押下 mode=[\" + this.editMode + \"]\");\r\n\r\n // 選択アイテム取得\r\n let selectItem: itemVenderProperty = this.sonbpIfController.getSelectItem();\r\n Logger.debug(\"選択アイテム取得\", selectItem);\r\n\r\n if (doSetMode) {\r\n // モード変更\r\n this.sonbpIfController.setMode(EDIT_MODE_KIND.SET_PHOTO, () => {\r\n this.editMode = EDIT_MODE_KIND.SET_PHOTO;\r\n\r\n // タッチイベント制御(有効)\r\n this.touchEventChange(true);\r\n\r\n if (doCommit) {\r\n // 操作確定\r\n // 面倒くさいが、決定が押された時にスタンプ使用フラグを立ててやる必要がある\r\n this.sonbpIfController.getMyStampList((list: itemVenderProperty[]) => {\r\n for (let i = 0; i < list.length;i++) {\r\n if (list[i].item_type === sonbpIfconst.ITYPE_MYSTAMP_IMG) {\r\n let upstmp: uploadPhoto = util.relic.listFind(this.uploadMyStampList, (upStamp: uploadPhoto) => { return upStamp.fileId === list[i].file_id; });\r\n if (upstmp) {\r\n upstmp.isUsed = true;\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.sonbpIfController.historyCommit();\r\n this.returnHomeFunc(selectItem);\r\n }\r\n else {\r\n // 操作取り消し\r\n this.sonbpIfController.historyAllUndo(\r\n () => {\r\n\r\n // SPの戻るはロールバックなので、スタンプの利用有無を再同期\r\n this.resetUsedOfStamps();\r\n\r\n this.returnHomeFunc(selectItem);\r\n }, () => {\r\n dialogUtil.createErrorDialog(\r\n constDialogMessage.ERROR_EDIT_ROLLBACK,\r\n () => {\r\n dialogUtil.closeErrorDialog\r\n this.returnHomeFunc(selectItem);\r\n });\r\n });\r\n }\r\n\r\n }, () => { })\r\n }\r\n else {\r\n this.returnHomeFunc(selectItem);\r\n }\r\n }\r\n\r\n /**\r\n * メニュー戻るボタン押下(SP)\r\n * @param event\r\n */\r\n public btnClickReturnMainMenu(event: JQueryEventObject): void {\r\n\r\n Logger.debug(\"メニュー戻るボタン押下\");\r\n\r\n // 選択解除\r\n this.sonbpIfController.selectItemClear();\r\n // 操作メニュー非表示\r\n this._vue.$data.Show.EditImageMenu = false;\r\n // メインメニュー表示\r\n this._vue.$data.Show.SetPhotoMenu = true;\r\n }\r\n\r\n /**\r\n * メニュースクロール(SP)\r\n * @param id\r\n */\r\n public setScrollMenuList(id: string): void {\r\n if (!$(`#${id}`) || !$(`#${id}`).prop('scrollWidth')) {\r\n return;\r\n }\r\n \r\n this._vue.$data.Show.ScrollList[id].isBtnHidden = $(`#${id}`).width() == $(`#${id}`).prop('scrollWidth');\r\n this._vue.$data.Show.ScrollList[id].isMenuScrollLeftDisabled = $(`#${id}`).scrollLeft() == 0;\r\n this._vue.$data.Show.ScrollList[id].isMenuScrollRightDisabled = ($(`#${id}`).scrollLeft() + $(`#${id}`).width() >= $(`#${id}`).prop('scrollWidth'));\r\n //console.log(`leftWidth(${$(`#${id}`).scrollLeft()})+width(${$(`#${id}`).width()})>=Scroll(${$(`#${id}`).prop('scrollWidth')})`);\r\n }\r\n\r\n// #endregion\r\n\r\n// #endregion\r\n\r\n// #region ■内部関数\r\n //--------------------------------------------------------------------------\r\n // 内部関数\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * sonbpへ通知するページエリアサイズを算出\r\n */\r\n private calcSonbpPageAreaSize(): { width: number, height: number } {\r\n\r\n let pageAreaHeight: number;\r\n\r\n // フレームIDの高さ取得\r\n const framIdHeight: number = $(\".p-editCanvasArea__framId\").outerHeight(true);\r\n // プリント領域リンクの高さ取得\r\n const printWarningHeight: number = $(\"#printWarning\").height();\r\n // 編集エリアのサイズ\r\n const editAreaHeight: number = $(\"#editArea\").height();\r\n\r\n Logger.debug(\"editH[\" + editAreaHeight + \"] frameH[\" + framIdHeight + \"] warH[\" + printWarningHeight + \"]\");\r\n\r\n // ページエリアのサイズ算出\r\n pageAreaHeight = editAreaHeight - (framIdHeight * 2) - (printWarningHeight * 2);\r\n\r\n Logger.debug(\"ページエリアのサイズ(高さ)[\" + pageAreaHeight + \"]\");\r\n\r\n // 高さ基準で正方形\r\n let setWidth: number = pageAreaHeight;\r\n let setHeight: number = pageAreaHeight;\r\n\r\n return {\r\n width: setWidth,\r\n height: setHeight\r\n };\r\n }\r\n\r\n /**\r\n * プレビュー画面からきた判定をします。\r\n * プレビュー画面からであればtrue\r\n * それ以外であればfalse\r\n */\r\n private checkFromPrev(): boolean {\r\n // まずはリファラで判定\r\n const referrer = document.referrer;\r\n const sessionStorageFlg = this.checkFromPrev_SessionStorage();\r\n if (referrer) {\r\n const splited = referrer.split('/');\r\n if (splited[splited.length - 1].toLowerCase() == \"preview\") {\r\n Logger.debug(\"戻る判定:リファラPreview\");\r\n return true;\r\n }\r\n }\r\n // 最後はブラウザバックで判定。\r\n if (window.performance.navigation.type == 2) {\r\n // 戻るボタンを押されたとき\r\n // プレビューはブラウザバックからのみで編集画面に戻る\r\n if (sessionStorageFlg) {\r\n Logger.debug(\"戻る判定:ブラウザバック\");\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n\r\n }\r\n\r\n /**\r\n * F5チェック\r\n */\r\n private checkBrowserReload(): boolean {\r\n // F5は。\r\n if (window.performance.navigation.type == 1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * 前回プレビュー画面だったかどうかの判定。\r\n * プレビュー画面のロード時にtrueをセットしている。\r\n */\r\n private checkFromPrev_SessionStorage(): boolean {\r\n\r\n let fromPrev = sessionStorage.getItem(EditConst.SESSION_STORAGE_FROM_PREV);\r\n if (fromPrev && fromPrev == \"true\") {\r\n Logger.info(\"プレビュー画面からの遷移\");\r\n sessionStorage.removeItem(EditConst.SESSION_STORAGE_FROM_PREV);\r\n return true;\r\n }\r\n return false;\r\n //return false;\r\n }\r\n\r\n /**\r\n * F5リロードされるとPDFそのままなのにアップロード一覧だけidb引継ぎで差異発生するため補完する。\r\n */\r\n private resetUpdateListOfStamps() {\r\n\r\n let hokanFunc = (usedList: itemVenderProperty[], upList: uploadPhoto[], dbList: any, max: number) => {\r\n\r\n let idx = 0;\r\n\r\n for (; idx < max; idx++) {\r\n if (upList[idx].isEmpty) break;\r\n }\r\n\r\n for (let i = 0; i < usedList.length; i++) {\r\n let vp = usedList[i];\r\n let targetId = vp.file_id.split('@')[0];\r\n let upRow = util.relic.listFind(upList, (row) => { return row.fileId === targetId });\r\n let dbRow = util.relic.listFind(dbList, (row) => { return row.fileId === targetId });\r\n if (!upRow && dbRow) {\r\n // DBからの補完\r\n const ulp = upList[idx];\r\n ulp.fileId = dbRow.fileId;\r\n ulp.isUsed = true;\r\n ulp.width = dbRow.width;\r\n ulp.height = dbRow.height;\r\n ulp.uploadDate = dbRow.uploadDate\r\n ulp.fileName = dbRow.uploadFileName;\r\n ulp.isEmpty = false;\r\n ulp.fileKey = \"\";\r\n\r\n idx++;\r\n }\r\n }\r\n }\r\n\r\n // マイスタンプのアップロード一覧補完\r\n this.sonbpIfController.getMyStampList((vpList: itemVenderProperty[]) => {\r\n hokanFunc(vpList, this.uploadMyStampList, this.editInfo.info.myStamp, this._myStampLogic.UploadNumMax());\r\n });\r\n\r\n // 手書きスタンプのアップロード一覧補完\r\n this.sonbpIfController.getTegakiStampList((vpList: itemVenderProperty[]) => {\r\n hokanFunc(vpList, this.uploadTegakiStampList, this.editInfo.info.fontgenic, this._tegakiStampLogic.UploadNumMax());\r\n });\r\n\r\n // 画像のアップロード一覧補完\r\n this.sonbpIfController.getPhotoList((vpList: itemVenderProperty[]) => {\r\n hokanFunc(vpList, this.uploadPhotoList, this.editInfo.info.photo, this._photoLogic.UploadNumMax());\r\n }, () => { });\r\n }\r\n\r\n /**\r\n * 削除前にモード切換えを考慮し、モード切り替えたら画像削除モードOFFして削除選択をALLクリアする\r\n */\r\n private reqDelAllclear(mode: editModeKind) {\r\n\r\n //if (this.editMode === mode) return;\r\n\r\n this.Vue.$data.UploadListModeSelect = true;\r\n\r\n let list = this.uploadPhotoList;\r\n if (mode == EDIT_MODE_KIND.MYSTAMP) list = this.uploadMyStampList;\r\n if (mode == EDIT_MODE_KIND.FONTGENIC) list = this.uploadTegakiStampList;\r\n\r\n list.forEach(row => {\r\n row.reqDelete = false;\r\n row.selected = EditConst.IMG_NOSELECT;\r\n });\r\n }\r\n\r\n /**\r\n * Sonbp-Canvasのスタンプ配置内容に合わせてアップロードリストの利用フラグを初期化する\r\n */\r\n private resetUsedOfStamps() {\r\n\r\n let that = this;\r\n\r\n let setFunc = (usedList: itemVenderProperty[], uploadList: uploadPhoto[]) => {\r\n uploadList.forEach(row => {\r\n if (row.isEmpty) {\r\n row.isUsed = false;\r\n } else {\r\n let targetId = row.fileId\r\n let used: itemVenderProperty = util.relic.listFind(usedList, (vp: itemVenderProperty) => { return vp.file_id.split('@')[0] === targetId });\r\n row.isUsed = used != undefined;\r\n }\r\n });\r\n };\r\n\r\n // マイスタンプの利用有無同期\r\n this.sonbpIfController.getMyStampList((vpList: itemVenderProperty[]) => {\r\n setFunc(vpList, that.uploadMyStampList);\r\n });\r\n\r\n // 手書きスタンプの利用有無同期\r\n this.sonbpIfController.getTegakiStampList((vpList: itemVenderProperty[]) => {\r\n setFunc(vpList, that.uploadTegakiStampList);\r\n });\r\n\r\n // 写真の利用有無同期\r\n // ※再編集後に新規注文始めた場合、idbの写真が利用フラグONのまま残るのを回避\r\n this.sonbpIfController.getPhotoList((list: itemVenderProperty[]) => {\r\n let usedIds = Enumerable.from(list).select(v => v.file_id.split('@')[0]).where(v => v != this.sonbpIfController.EMPTY_PHOTOBOX_FILE_ID).toArray();\r\n this.uploadPhotoList.forEach(row => {\r\n let uploadId = row.fileId;\r\n row.isUsed = usedIds.indexOf(uploadId) >= 0;\r\n });\r\n }, () => { });\r\n }\r\n\r\n// #endregion\r\n\r\n}\r\n\r\n","import Vue from \"vue\";\r\nimport { baseVueController } from \"./baseVueController\";\r\nimport * as es6promise from \"es6-promise\";\r\nimport { idb, ui } from \"./util\";\r\nimport { dialogUtil } from \"./util/dialog\";\r\nimport { constDialogMessage } from \"./util/const\";\r\nimport { editInfo } from \"./entity/idb/editInfo\";\r\nimport { common } from \"./util/common\";\r\nimport { orderInfo } from \"./entity/idb/orderInfo\";\r\nimport { MultiTab } from \"./util/multitab\";\r\nimport { Logger } from \"./util/logger\";\r\nimport { util } from \".\";\r\nimport { SSO } from \"./util/sso\";\r\n\r\n// gigya\r\ndeclare var gigya: any;\r\n\r\n//------------------------------------------------------------------------------\r\n// クラス\r\n//------------------------------------------------------------------------------\r\n/**\r\n * プレビュー画面コントローラクラス\r\n * */\r\nexport class previewController extends baseVueController {\r\n\r\n //--------------------------------------------------------------------------\r\n // 定数\r\n //--------------------------------------------------------------------------\r\n private readonly ELEMENT_NAME: string = \"#previewController\";\r\n\r\n // セッションストレージ用 戻る判定\r\n private readonly SESSION_STORAGE_FROM_PREV: string = \"POSCA_FROM_PREV\";\r\n\r\n // idb関連\r\n private readonly EDIT_INFO_STORENAME: string = \"editInfo\";\r\n private readonly OREDER_INFO_STORENAME: string = \"orderInfo\";\r\n\r\n // WebAPIのエンドポイント定義\r\n private readonly WebAPI_GetEditImage: string = \"Edit/GetEditThumb\";\r\n\r\n // 画面URL\r\n private readonly ViewURL_Edit: string = \"Edit\";\r\n private readonly ViewURL_HagakiSelect: string = \"HagakiSelect\";\r\n private readonly ViewURL_AddOrder: string = \"AddOrder\";\r\n\r\n /**\r\n * ガイダンスの表示タイムアウト値(ms)\r\n * */\r\n private readonly GUIDANCE_SHOW_TIMEOUT: number = 30000;\r\n /**\r\n * sessionStorage格納用キー:F5リロード判定用\r\n */\r\n private readonly SESSION_STORAGE_KEY_RELOADED: string = \"PREVIEW_RELOADED\";\r\n /**\r\n * sessionStorage格納用キー:編集画面からの再遷移判定用\r\n */\r\n private readonly SESSION_STORAGE_KEY_FROMEDIT: string = \"PREVIEW_FROMEDIT\";\r\n\r\n // 戻るボタン文言\r\n private readonly PC_GO_EDIT = \"絵柄面の編集に戻る\";\r\n private readonly PC_GO_ADD_ORDER = \"追加注文に戻る\";\r\n private readonly SP_GO_EDIT = \"戻る\";\r\n private readonly SP_GO_ADD_ORDER = \"戻る\";\r\n\r\n //--------------------------------------------------------------------------\r\n // 変数\r\n //--------------------------------------------------------------------------\r\n\r\n // idb\r\n private _editInfo: editInfo;\r\n private _orderInfo: orderInfo;\r\n\r\n private _token: string;\r\n\r\n /**\r\n * ロゴ1 URL\r\n */\r\n private _logo1Url: string;\r\n /**\r\n * ロゴ2 URL\r\n */\r\n private _logo2Url: string;\r\n\r\n /**\r\n * F5リロードアクセス?(SP用)\r\n */\r\n private doReloadedAccess: boolean;\r\n\r\n /**\r\n * beforeunloadイベント時の sessionStorageへの書き込み要否フラグ(SP用)\r\n */\r\n private doUnloadEventFunc: boolean;\r\n\r\n /**\r\n * 印刷タイプ(1:印刷, 2: 銀塩, 0:印刷・銀塩 両方)\r\n */\r\n private readonly PRINT_TYPE_PRINT: string = \"1\";\r\n private readonly PRINT_TYPE_GINEN: string = \"2\";\r\n private readonly PRINT_TYPE_BOTH: string = \"0\";\r\n\r\n\r\n //--------------------------------------------------------------------------\r\n // プロパティ\r\n //--------------------------------------------------------------------------\r\n\r\n\r\n //--------------------------------------------------------------------------\r\n // コンストラクタ\r\n //--------------------------------------------------------------------------\r\n constructor() {\r\n super();\r\n\r\n this.doReloadedAccess = false;\r\n this.doUnloadEventFunc = true;\r\n }\r\n\r\n\r\n //--------------------------------------------------------------------------\r\n // メソッド\r\n //--------------------------------------------------------------------------\r\n /**\r\n * 初期化メソッド\r\n * */\r\n public init(): void {\r\n\r\n // Androidの場合はmeta属性のmaximumを消す(拡大ができなくなるため)\r\n if (ui.isAndroid()) {\r\n const metaInfo = $('meta[name=\"viewport\"]');\r\n $(metaInfo).attr('content', 'width=device-width, initial-scale=1.0');\r\n }\r\n\r\n // 複数タブ禁止\r\n const multiTabCheck = () => {\r\n MultiTab.forbiddenMultiTab(() => {\r\n dialogUtil.createErrorDialog(constDialogMessage.WARNING_MULTITAB_FORBIDDEN\r\n , () => { }\r\n , null\r\n , true\r\n );\r\n })\r\n }\r\n setInterval(multiTabCheck, MultiTab.INTERVAL);\r\n\r\n // エラー時のボタン遷移先\r\n this.SetErrorPageInfo();\r\n\r\n // gigya イベントリスナー登録\r\n if (this._retailerConfig.id == \"0\") {\r\n gigya.socialize.addEventHandlers({\r\n onLogin: common.onLoginHandlerWithSave\r\n //onHide: common.onHideHandler\r\n });\r\n\t\t}\r\n\r\n // リテーラ毎の処理\r\n this.initRetailer();\r\n\r\n // vueオブジェクト生成\r\n this._vue = new Vue({\r\n el: this.ELEMENT_NAME,\r\n data: {\r\n editInfo: null,\r\n PrevButtonMessage: \"\",\r\n // ヘッダーメニュー\r\n Header: {\r\n Logo1Url: this._logo1Url,\r\n Logo2Url: this._logo2Url,\r\n },\r\n // 印刷か銀塩か\r\n isGinen: false,\r\n // 表示制御\r\n Show: {\r\n // 操作方法の表示(空の場合は表示しない)\r\n OperationInfo: this._retailerConfig.operationInfo.preview ? true : false,\r\n // 1枚無料は保存ボタンを表示しない\r\n SaveButton: false,\r\n // ガイダンス\r\n ImgGuidance: false,\r\n },\r\n\r\n // 仕上がり説明\r\n ReplaceImgGuideBaloon: {\r\n top: \"0\",\r\n left: \"0\",\r\n },\r\n },\r\n methods: {\r\n // 戻るボタン\r\n btnClickReturnFlow: (event: JQueryEventObject) => {\r\n this.btnClickReturnFlow(event);\r\n },\r\n // 次へボタン\r\n btnClickNextFlow: (event: JQueryEventObject) => {\r\n this.btnClickNextFlow(event);\r\n },\r\n // 一時保存\r\n btnClickSave: (event: JQueryEventObject) => {\r\n this.btnClickSave(event);\r\n },\r\n // 操作方法\r\n btnClickOperationHelp: (event: JQueryEventObject) => {\r\n this.btnClickOperationHelp(event);\r\n },\r\n // ガイダンス閉じる\r\n btnClickGuidanceClose: (event: JQueryEventObject) => {\r\n this.btnClickGuidanceClose(event);\r\n },\r\n // ヘッダー\r\n btnClickReturnTop: (event: JQueryEventObject) => {\r\n this.btnClickReturnTop(event);\r\n },\r\n btnClickFaq: (event: JQueryEventObject) => {\r\n this.btnClickFaq(event);\r\n },\r\n btnClickOrderHistory: (event: JQueryEventObject) => {\r\n this.btnClickOrderHistory(event);\r\n },\r\n // 説明文を消す\r\n onClickImgGuidance: (event: JQueryEventObject) => {\r\n this.btnClickImgGuidance(event);\r\n }\r\n },\r\n mounted: () => {\r\n // リテーラ別のチャットボット制御\r\n var divChatBot = document.getElementById(\"chava-root\") as HTMLDivElement;\r\n if (divChatBot) {\r\n divChatBot.style.display = this._retailerConfig.id == \"0\" ? \"block\" : \"none\";\r\n }\r\n\r\n this.doOnload();\r\n },\r\n });\r\n \r\n }\r\n\r\n /**\r\n * リテーラ別の初期化処理\r\n * */\r\n public initRetailer(): void {\r\n // リテーラロゴURL設定\r\n this._logo1Url = this._retailerConfig.logo1;\r\n this._logo2Url = this._retailerConfig.logo2;\r\n }\r\n\r\n /**\r\n * 画面初期化\r\n * */\r\n private async doOnload(): es6promise.Promise {\r\n\r\n Logger.info(\"Preview start\");\r\n\r\n // 複数タブの整合性破壊阻止\r\n if (MultiTab.isOldTab()) {\r\n Logger.log(\"複数タブ操作 古いタブの為初期化を中断しました。\");\r\n return;\r\n }\r\n\r\n // ローディングダイアログ開始\r\n dialogUtil.showLoading();\r\n\r\n // tokenを画面から確保\r\n this.getAuthToken();\r\n\r\n // SSO\r\n Logger.log(\"SSO開始\");\r\n await SSO.DoSSO(this._token, this._retailerConfig.id);\r\n\r\n if (!this._usePcDesign) {\r\n // SP用\r\n // F5リロード判定\r\n this.doReloadedAccess = this.doReloaded();\r\n // F5リロード監視\r\n this.unloadHandlerInit();\r\n }\r\n\r\n Logger.info(\"idb init start\");\r\n\r\n // idb初期化&接続\r\n //await idb.initiDB().catch(() => {\r\n // // エラーメッセージを返す\r\n // return es6promise.Promise.reject(constDialogMessage.ERROR_LOCAL_DB_CONNECT);\r\n //});\r\n // 上記をコメントアウトするとなぜか vueオブジェクトの生成が完了しないタイミングで\r\n // 「戻るボタンの文言」の処理が実行されるため、ダミー関数を呼ばせています。\r\n await this.dummyFucn();\r\n\r\n // 途中復帰か?\r\n if (this.getIsReturn()) {\r\n\r\n await SSO.WaitSSO();\r\n\r\n // idbの整合\r\n await common.InitReturn(this._token);\r\n\r\n // 戻るボタンの文言\r\n this._vue.$data.PrevButtonMessage = this.GetPrevButtonMessage(this._usePcDesign, false);\r\n\r\n } else {\r\n\r\n // 戻るボタンの文言\r\n this._vue.$data.PrevButtonMessage = this.GetPrevButtonMessage(this._usePcDesign, true);\r\n\t\t}\r\n\r\n // idbからのデータ読み込み\r\n this.loadIDB().then(async () => {\r\n\r\n if (!this._usePcDesign) {\r\n // SP用\r\n // ガイダンス表示制御\r\n this.showGuidance();\r\n }\r\n\r\n Logger.info(\"start initDisp\");\r\n // 画面初期化\r\n this.initDisp().catch((msg) => {\r\n dialogUtil.createErrorDialog(msg, dialogUtil.closeErrorDialog);\r\n return es6promise.Promise.reject;\r\n\r\n }).finally(() => {\r\n\r\n // ローディングダイアログ閉じる\r\n dialogUtil.closeLoading();\r\n\r\n });\r\n\r\n // 1枚無料は保存ボタンを表示させない。\r\n if (!this._orderInfo.isTrial) {\r\n this._vue.$data.Show.SaveButton = true;\r\n\t\t\t}\r\n\r\n }).catch((msg) => {\r\n dialogUtil.createErrorDialog(msg, dialogUtil.closeErrorDialog);\r\n return es6promise.Promise.reject;\r\n });\r\n\t}\r\n\r\n private async dummyFucn(): es6promise.Promise {\r\n return \"\";\r\n }\r\n\r\n /**\r\n * 戻るボタンの文言を取得します。\r\n * @param isPC\r\n * @param isGotoEdit\r\n */\r\n private GetPrevButtonMessage(isPC:boolean,isGotoEdit:boolean): string{\r\n\r\n if (isPC) {\r\n if (isGotoEdit) {\r\n return this.PC_GO_EDIT;\r\n } else {\r\n return this.PC_GO_ADD_ORDER;\r\n\t\t\t}\r\n } else {\r\n if (isGotoEdit) {\r\n return this.SP_GO_EDIT;\r\n } else {\r\n return this.SP_GO_ADD_ORDER;\r\n }\r\n\t\t}\r\n }\r\n\r\n /**\r\n * \r\n * idbからデータを読み込んでローカルに保持します。\r\n * \r\n * */\r\n private async loadIDB(): es6promise.Promise {\r\n\r\n // editInfoからの取得\r\n this._editInfo = util.lstorage.get(util.lstorage.KEY_EDIT, true);\r\n if (!this._editInfo) {\r\n // エラーメッセージを返す\r\n return es6promise.Promise.reject(constDialogMessage.ERROR_LOCAL_DB_READ);\r\n }\r\n\r\n // orderInfoからの取得\r\n this._orderInfo = util.lstorage.get(util.lstorage.KEY_ORDER, true);\r\n if (!this._orderInfo) {\r\n // nullであれば新規に作成する。\r\n this._orderInfo = new orderInfo();\r\n if (!util.lstorage.set(util.lstorage.KEY_ORDER, this._orderInfo)) {\r\n // エラーメッセージを返す\r\n return es6promise.Promise.reject(constDialogMessage.ERROR_LOCAL_DB_READ);\r\n }\r\n }\r\n\r\n\t}\r\n\r\n /**\r\n * 編集状態サムネイル取得\r\n * imgの縦横サイズが欲しいのでjqueryで処理する。\r\n * */\r\n private async initDisp(): es6promise.Promise {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n const img = document.getElementById(\"previewImage\");\r\n\r\n // imgタグに描画\r\n const param = \"tempEditId=\" + this._editInfo.tempId + \"&token=\" + this._token + \"×tamp=\" + common.getTimeStamp();\r\n const that = this;\r\n\r\n // 画像取得\r\n util.ajax.postforblob_get(this.WebAPI_GetEditImage, param).then((data: Blob) => {\r\n\r\n // 画像描画\r\n var url = window.URL || window.webkitURL;\r\n img.src = url.createObjectURL(data);\r\n\r\n // サイズ変更\r\n const sizeFit = function () {\r\n\r\n const content = document.getElementById(\"contents\");\r\n\r\n if (that.getIsPC()) {\r\n\r\n // PC\r\n\r\n // 縦横判定\r\n let isH = true;\r\n if (img.naturalHeight > img.naturalWidth) isH = false;\r\n\r\n //// 拡縮率\r\n //const scale = isH ? 0.70 : 0.98; //ヨコの場合は高さの70%\r\n\r\n //// 描画サイズ\r\n //let dstImgHeight = content.clientHeight * scale;\r\n //const dstImgWidth = dstImgHeight * (img.naturalWidth / img.naturalHeight);\r\n\r\n //// 高さ(横デザインの時に必要)\r\n //let top = isH ? 100 : 0;\r\n\r\n let top = isH ? '15%' : '';\r\n let width = isH ? '40%' : '';\r\n let height = isH ? '' : '95%';\r\n\r\n // 画面の中央に表示する。\r\n $(\"#previewImage\").css({\r\n top: top,\r\n width: width,\r\n height: height\r\n });\r\n\r\n const minWidth = isH ? $(\"#previewImage\").height() : $(\"#previewImage\").width();\r\n const maxWidth = isH ? $(\"#previewImage\").width() : $(\"#previewImage\").height();\r\n that.setImgBorderGuidanceBalloonPos($('#contents').width(), maxWidth, minWidth, !isH);\r\n } else {\r\n\r\n // SP\r\n let aspect = img.naturalWidth / img.naturalHeight;\r\n let actHeight = window.outerWidth / aspect;\r\n\r\n // 上のガイドボタンの高さ\r\n let guideH = $('#header').height();\r\n\r\n // 下のガイドボタンの高さ\r\n let guideF = $('#footer').height();\r\n\r\n // 下の保存ボタンの高さ\r\n let saveH = $('#save').height();\r\n // プレビュー表示可能なエリア\r\n let enableHeight = $(window).height() - (guideH + guideF + saveH);\r\n\r\n if (actHeight > enableHeight) {\r\n\r\n // 幅一杯にしたとき高さが一杯なので、高さで調整する。\r\n let widthD = (enableHeight * img.naturalWidth / img.naturalHeight) - 15; // 微調整\r\n let left = (outerWidth - widthD) / 2;\r\n $(\"#previewImage\").css({\r\n position: \"absolute\",\r\n left: left,\r\n top: guideH + 2,\r\n width: widthD,\r\n border: '1px solid #333333',\r\n });\r\n\r\n } else {\r\n\r\n let top = ($(window).height() / 2) - (actHeight / 2) - 30; // 画面中央だと少し余白が不自然なので固定であげておく。\r\n\r\n // 幅一杯表示可能。\r\n // 画面の中央に表示する。\r\n $(\"#previewImage\").css({\r\n position: \"absolute\",\r\n top: top,\r\n width: 'calc(100% - 2px)',\r\n border: '1px solid #333333',\r\n });\r\n\r\n }\r\n that.setSpImgBorderGuidanceBalloonPos($(\"#previewImage\").height(), $(\"#previewImage\").width());\r\n }\r\n\r\n resolve(\"\");\r\n }\r\n img.onload = sizeFit;\r\n\r\n // 失敗時\r\n img.onerror = function () {\r\n $('#nextFlow').addClass('is-disabled');\r\n reject(constDialogMessage.ERROR_GET_PREVIEW_TEXT);\r\n }\r\n\r\n // リサイズ\r\n $(window).resize(function () {\r\n // PCのみリサイズ(SPは不要)\r\n if (ui.usePcDesign()) {\r\n sizeFit();\r\n } \r\n });\r\n\r\n // 銀塩用の注意書きを表示するか?\r\n if (this._editInfo.printType == this.PRINT_TYPE_GINEN) {\r\n // isGinen\r\n this._vue.$data.isGinen = true;\r\n this._vue.$data.Show.ImgGuidance = true;\r\n }\r\n\r\n // 画像を読み込んでから実施すること。\r\n // 戻るボタンで編集画面にいってもInitTempを呼ばないようにフラグをたてておく\r\n Logger.info(\"set fromPrevInfo\");\r\n this.setFromPrev();\r\n\r\n\r\n });\r\n\r\n \r\n\r\n })\r\n \r\n }\r\n\r\n /**\r\n * 認証トークン取得\r\n */\r\n private getAuthToken(): void {\r\n\r\n // hiddenから認証トークン取得&クリア\r\n this._token = $(\"#Token\").val();\r\n $(\"Token\").val(\"\");\r\n\r\n }\r\n\r\n /**\r\n * ガイダンスの表示制御(SP用)\r\n */\r\n private showGuidance(): void {\r\n\r\n // 再編集であるか判定\r\n if (this.getIsEdit()) {\r\n return;\r\n }\r\n\r\n // 追加注文であるか判定\r\n if (this.getIsReturn()) {\r\n return;\r\n }\r\n\r\n // F5リロードアクセスであるか判定\r\n if (this.doReloadedAccess) {\r\n return;\r\n }\r\n\r\n // ハガキ選択画面からの遷移であるかの判定\r\n if (this.checkFromReferrer(\"hagakiselect\")) {\r\n return;\r\n }\r\n\r\n // 編集画面からの再遷移であるかの判定\r\n if (this.checkFromReferrer(\"edit\")) {\r\n const fromEdit: string = sessionStorage.getItem(this.SESSION_STORAGE_KEY_FROMEDIT);\r\n if (fromEdit) {\r\n if (this._editInfo.tempId === fromEdit) {\r\n // 一致する場合は、再遷移\r\n return;\r\n }\r\n else {\r\n // 上記以外の場合は、判定値更新\r\n sessionStorage.setItem(this.SESSION_STORAGE_KEY_FROMEDIT, this._editInfo.tempId);\r\n }\r\n }\r\n else {\r\n sessionStorage.setItem(this.SESSION_STORAGE_KEY_FROMEDIT, this._editInfo.tempId);\r\n }\r\n }\r\n\r\n // ガイダンス表示\r\n var guidance = $(\"#previewGuidanceArea\")\r\n if (guidance.css(\"display\") === \"none\") {\r\n var elem = $(\"#previewController\");\r\n elem.removeClass().addClass(\"anmon\");\r\n guidance.css(\"display\", \"block\");\r\n }\r\n\r\n // 時間経過でガイダンスを閉じる\r\n setTimeout(() => {\r\n this.btnClickGuidanceClose(null);\r\n }, this.GUIDANCE_SHOW_TIMEOUT);\r\n }\r\n\r\n /**\r\n * リファラ判定をします。\r\n * ハガキ選択画面からであれば true\r\n * それ以外であれば false\r\n * */\r\n private checkFromReferrer(pageName: string): boolean {\r\n const referrer = document.referrer;\r\n if (referrer) {\r\n const splitAdr = referrer.split('/');\r\n const splitParam = splitAdr[splitAdr.length - 1].split('?');\r\n if (splitParam[0].toLowerCase() == pageName) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * F5リロードイベントとして[beforeunload]イベントを監視\r\n * */\r\n private unloadHandlerInit(): void {\r\n\r\n let that: previewController = this;\r\n let func = function () {\r\n that.unloadHandlerFunc(that);\r\n };\r\n window.removeEventListener('beforeunload', func);\r\n window.addEventListener('beforeunload', func);\r\n }\r\n\r\n /**\r\n * [beforeunload]イベント処理本体\r\n * @param contoroller :editController\r\n */\r\n private unloadHandlerFunc(contoroller: previewController): void {\r\n if (contoroller.doUnloadEventFunc) {\r\n const dtNow: Date = new Date();\r\n sessionStorage.setItem(this.SESSION_STORAGE_KEY_RELOADED, dtNow.toUTCString());\r\n }\r\n }\r\n\r\n /**\r\n * F5リロード判定\r\n */\r\n private doReloaded(): boolean {\r\n\r\n // 取得\r\n const beforeunloadVal: string = sessionStorage.getItem(this.SESSION_STORAGE_KEY_RELOADED);\r\n Logger.debug(\"beforeunload [\" + beforeunloadVal + \"]\");\r\n // クリア\r\n sessionStorage.setItem(this.SESSION_STORAGE_KEY_RELOADED, \"\");\r\n\r\n return beforeunloadVal ? true : false;\r\n }\r\n\r\n /**\r\n * プレビュー画面にいたことを保持しておく。\r\n * */\r\n private setFromPrev(): void {\r\n // タブ単位\r\n sessionStorage.setItem(this.SESSION_STORAGE_FROM_PREV,\"true\");\r\n\t}\r\n\r\n\r\n //--------------------------------------------------------------------------\r\n // イベント\r\n //--------------------------------------------------------------------------\r\n /**\r\n * 前画面遷移ボタン押下メソッド\r\n * */\r\n public btnClickReturnFlow(event: JQueryEventObject): void {\r\n\r\n // 画面遷時は、sessionStorageに書き込まない\r\n this.doUnloadEventFunc = false;\r\n\r\n if (this.getIsReturn()) {\r\n\r\n // 追加注文時は追加注文画面に戻る。\r\n window.location.href = this.ViewURL_AddOrder;\r\n } else {\r\n\r\n // 編集画面に戻る。\r\n let getParam = common.getGetParam();\r\n window.location.href = this.ViewURL_Edit + getParam;\r\n //history.back();\r\n\t\t}\r\n \r\n }\r\n\r\n /**\r\n * 次画面遷移ボタン押下メソッド\r\n * */\r\n public btnClickNextFlow(event: JQueryEventObject): void {\r\n\r\n // 画面遷時は、sessionStorageに書き込まない\r\n this.doUnloadEventFunc = false;\r\n\r\n // 1枚おためしはカートに遷移する。\r\n if (this._orderInfo.isTrial) {\r\n\r\n // カート遷移→強制保存\r\n common.SaveDataForceForCart(this._token,true);\r\n\r\n } else {\r\n\r\n // 通常注文はハガキ選択画面に遷移\r\n var form = document.createElement('form');\r\n form.action = this.ViewURL_HagakiSelect;\r\n form.method = 'POST';\r\n $('body').append(form);\r\n\r\n form.submit();\r\n\t\t}\r\n }\r\n\r\n /**\r\n * 一時保存ボタン押下メソッド\r\n * */\r\n public btnClickSave(event: JQueryEventObject): void {\r\n\r\n const editInfo: editInfo = util.lstorage.get(util.lstorage.KEY_EDIT, false);\r\n const orderInfo: orderInfo = util.lstorage.get(util.lstorage.KEY_ORDER, false);\r\n common.SaveData(this._token, editInfo, orderInfo);\r\n\r\n }\r\n\r\n /**\r\n * 操作方法ボタン押下メソッド\r\n * */\r\n public btnClickOperationHelp(event: JQueryEventObject): void {\r\n\r\n ui.windowOpen(this._retailerConfig.operationInfo.preview, \"\", null, null);\r\n\r\n }\r\n\r\n /**\r\n * ガイダンス閉じる\r\n * @param event\r\n */\r\n public btnClickGuidanceClose(event: JQueryEventObject): void {\r\n var guidance = $(\"#previewGuidanceArea\")\r\n if (guidance.css(\"display\") !== \"none\") {\r\n var elem = $(\"#previewController\");\r\n elem.removeClass().addClass(\"anmoff\");\r\n $(\"#previewGuidanceArea\").css(\"display\", \"none\");\r\n }\r\n }\r\n\r\n /**\r\n * 説明文のバルーンボタン押下メソッド\r\n * @param event\r\n */\r\n public btnClickImgGuidance(event: JQueryEventObject): void {\r\n this._vue.$data.Show.ImgGuidance = false;\r\n }\r\n\r\n /**\r\n * ページエリア、ハガキサイズに連動して赤枠ガイダンス表示位置を調整(SP)\r\n * @param pdfHeight :PDFエリアの高さ\r\n * @param pdfWidth :PDFエリアの幅\r\n */\r\n private setSpImgBorderGuidanceBalloonPos(pdfHeight, pdfWidth) {\r\n // 表示エリア\r\n const editAreaHeight: number = $(window).height() - $('#header').height() - $('#footer').height() - $('#commonMenuArea').height();\r\n const editAreaWidth: number = $(window).width();\r\n\r\n // 吹き出しの高さ\r\n const popUpHeight = 30;\r\n\r\n // 表示幅から表示している高さを計算\r\n const ratio = editAreaWidth / pdfWidth;\r\n const hagakiHeight = pdfHeight * ratio;\r\n\r\n // 同じSPでも画面の大きさによって表示範囲が異なるため、その対応\r\n const space = hagakiHeight > editAreaHeight ? (editAreaWidth - pdfWidth) / 2 : (editAreaHeight - hagakiHeight) / 2;\r\n const topPos = hagakiHeight > editAreaHeight ? editAreaHeight - popUpHeight - 10 : hagakiHeight + space - popUpHeight;\r\n\r\n this._vue.$data.ReplaceImgGuideBaloon.top = topPos + \"px\";\r\n this._vue.$data.ReplaceImgGuideBaloon.left = \"10px\";\r\n }\r\n\r\n /**\r\n * ページエリア、ハガキサイズに連動して赤枠ガイダンス表示位置を調整(PC)\r\n * @param editAreaWidth :編集エリアの幅\r\n * @param pageSize :ハガキのサイズ(長辺)\r\n * @param minPageSize :ハガキのサイズ(短辺)\r\n * @param partrait :ハガキが縦長かどうか\r\n */\r\n private setImgBorderGuidanceBalloonPos(editAreaWidth: number, pageSize: number, minPageSize: number, isPortrait: boolean) {\r\n // ハガキの幅と高さ\r\n const hagakiWidth = isPortrait ? minPageSize : pageSize;\r\n const hagakiHeight = isPortrait ? pageSize : minPageSize;\r\n\r\n // ハガキの余白: 編集エリアの横幅 - ハガキの幅\r\n const spaceWidth: number = editAreaWidth - hagakiWidth;\r\n\r\n // X座標:余白 + 赤枠分\r\n const redWidthRate = isPortrait ? 0.05 : 0.03;\r\n this._vue.$data.ReplaceImgGuideBaloon.left = (Math.ceil(spaceWidth / 2) + Math.ceil(hagakiWidth * redWidthRate)) + \"px\";\r\n\r\n // ハガキの上下の余白\r\n const editHeight = $('#contents').height();\r\n const spaceHeight: number = Math.ceil((editHeight - hagakiHeight) / 2);\r\n\r\n // 吹き出しの高さ\r\n // 表示していない場合は要素の高さを取得できないため、取得できない場合は固定値とする\r\n const elm = this._vue.$refs.imageGuidance as HTMLInputElement\r\n const guideHeight: number = this._vue.$data.Show.ImgGuidance ? elm.getBoundingClientRect().height + 40 : 95;\r\n\r\n // Y座標:ハガキのページエリアの高さ + 上下の余白 - 赤枠と吹き出し位置を考慮した値\r\n this._vue.$data.ReplaceImgGuideBaloon.top = (hagakiHeight + spaceHeight - guideHeight) + \"px\";\r\n }\r\n \r\n \r\n}\r\n","\r\nimport Vue from \"vue\";\r\nimport { baseVueController } from \"./baseVueController\";\r\nimport { ajax, idb, lstorage, ui } from \"./util\";\r\nimport * as es6promise from \"es6-promise\";\r\nimport { dialogUtil } from \"./util/dialog\";\r\nimport { orderInfo } from \"./entity/idb/orderInfo\";\r\nimport { editInfo } from \"./entity/idb/editInfo\";\r\nimport { hagakiMasterInfo, masterInfo } from \"./entity/idb/masterInfo\";\r\nimport { constDialogMessage } from \"./util/const\";\r\nimport { common } from \"./util/common\";\r\nimport { MultiTab } from \"./util/multitab\";\r\nimport { util } from \".\";\r\nimport { Logger } from \"./util/logger\";\r\nimport { SSO } from \"./util/sso\";\r\n\r\n// gigya\r\ndeclare var gigya: any;\r\n\r\n//------------------------------------------------------------------------------\r\n// クラス\r\n//------------------------------------------------------------------------------\r\n/**\r\n * はがき種/枚数選択画面コントローラクラス\r\n * */\r\nexport class hagakiSelectController extends baseVueController {\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// 定数\r\n\t//--------------------------------------------------------------------------\r\n\tprivate readonly ELEMENT_NAME: string = \"#hagakiSelectController\";\r\n\r\n\t// 印刷タイプ\r\n\tprivate readonly INSATSU: string = \"1\";\r\n\tprivate readonly GINEN: string = \"2\";\r\n\r\n\t// idb関連\r\n\tprivate readonly EDIT_INFO_STORENAME: string = \"editInfo\";\r\n\tprivate readonly OREDER_INFO_STORENAME: string = \"orderInfo\";\r\n\tprivate readonly MASTER_INFO_STORENAME: string = \"masterInfo\";\r\n\r\n\t// 画面URL\r\n\tprivate readonly ViewURL_Preview: string = \"Preview\"; // 戻る\r\n\tprivate readonly ViewURL_AtenaSelect: string = \"AtenaSelect\"; // 次へ\r\n\r\n\t// 保存期限日数\r\n\tprivate readonly SAVE_LIMIT = 90;\r\n\r\n\t// 戻る/次へボタン文言\r\n\tprivate readonly PC_GO_CART = \"変更しないで戻る\";\r\n\tprivate readonly PC_GO_ATENA_SELECT = \"変更する\";\r\n\tprivate readonly SP_GO_CART = \"戻る\";\r\n\tprivate readonly SP_GO_ATENA_SELECT = \"確定\";\r\n\r\n\tprivate readonly NORMAL_PREV = \"戻る\";\r\n\tprivate readonly NORMAL_ATENA = \"次へ\";\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// 変数\r\n\t//--------------------------------------------------------------------------\r\n\t// idb\r\n\tprivate _editInfo: editInfo;\r\n\tprivate _orderInfo: orderInfo;\r\n\tprivate _masterInfo: masterInfo;\r\n\r\n\t/**\r\n\t * ロゴ1 URL\r\n\t */\r\n\tprivate _logo1Url: string;\r\n\t/**\r\n\t * ロゴ2 URL\r\n\t */\r\n\tprivate _logo2Url: string;\r\n\r\n\t// 認証トークン\r\n\tprivate _token: string;\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// プロパティ\r\n\t//--------------------------------------------------------------------------\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// コンストラクタ\r\n\t//--------------------------------------------------------------------------\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// メソッド\r\n\t//--------------------------------------------------------------------------\r\n\t/**\r\n\t * 初期化メソッド\r\n\t * */\r\n\tpublic init(): void {\r\n\r\n\t\tconsole.log(\"hagakiSelect start\");\r\n\r\n\t\t// 複数タブ禁止\r\n\t\tconst multiTabCheck = () => {\r\n\t\t\tMultiTab.forbiddenMultiTab(() => {\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.WARNING_MULTITAB_FORBIDDEN\r\n\t\t\t\t\t, () => { }\r\n\t\t\t\t\t, null\r\n\t\t\t\t\t, true\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t}\r\n\t\tsetInterval(multiTabCheck, MultiTab.INTERVAL);\r\n\r\n\t\t// エラー時のボタン遷移先\r\n\t\tthis.SetErrorPageInfo();\r\n\r\n\t\t// vueオブジェクト生成\r\n\t\tthis._vue = new Vue({\r\n\t\t\tel: this.ELEMENT_NAME,\r\n\t\t\tdata: {\r\n\t\t\t\t// 保管期限\r\n\t\t\t\tsaveLimit: \"YYYY年MM月DD日\",\r\n\t\t\t\t// ハガキ種選択コンボ\r\n\t\t\t\thagakiTypes: [],\r\n\t\t\t\t// 選択されているハガキ種\r\n\t\t\t\thagakiTypeSelected: {},\r\n\t\t\t\t// 入力された注文枚数\r\n\t\t\t\tinputHagakiQuantity: \"\",\r\n\t\t\t\t// 注文最小数\r\n\t\t\t\torderMin: 0,\r\n\t\t\t\t// 注文最大数\r\n\t\t\t\torderMax: 0,\r\n\t\t\t\t// 戻るボタンの表示制御\r\n\t\t\t\t//isPrevShow: true,\r\n\t\t\t\t// プルダウン表示用(SPのみ)\r\n\t\t\t\ttypeName: \"\",\r\n\t\t\t\t// 読み込み完了フラグ\r\n\t\t\t\tloadComplete: false,\r\n\t\t\t\t// ヘッダーメニュー\r\n\t\t\t\tHeader: {\r\n\t\t\t\t\tLogo1Url: this._logo1Url,\r\n\t\t\t\t\tLogo2Url: this._logo2Url,\r\n\t\t\t\t},\r\n\t\t\t\t// ボタン文言\r\n\t\t\t\tPrevButtonMessage: \"\",\r\n\t\t\t\tNextButtonMessage: \"\",\r\n\t\t\t\t// 表示制御\r\n\t\t\t\tShow: {\r\n\t\t\t\t\t// 操作方法の表示(空の場合は表示しない)\r\n\t\t\t\t\tOperationInfo: this._retailerConfig.operationInfo.hagakiSelect ? true : false,\r\n\r\n\t\t\t\t\t// 投函代行関連文言表示\r\n\t\t\t\t\tIsShowSupplement: (this._retailerConfig.id === \"0\" || this._retailerConfig.id === \"36\") ? true : false,\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\tmethods: {\r\n\t\t\t\t// 戻るボタン\r\n\t\t\t\tbtnClickReturnFlow: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickReturnFlow(event);\r\n\t\t\t\t},\r\n\t\t\t\t// 進むボタン\r\n\t\t\t\tbtnClickNextFlow: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickNextFlow(event);\r\n\t\t\t\t},\r\n\t\t\t\t// 一時保存\r\n\t\t\t\tbtnClickSave: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickSave(event);\r\n\t\t\t\t},\r\n\t\t\t\t// 操作方法\r\n\t\t\t\tbtnClickOperationHelp: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickOperationHelp(event);\r\n\t\t\t\t},\r\n\t\t\t\t// ハガキ枚数入力 -> 次へボタン制御\r\n\t\t\t\thagakiNumChange: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.hagakiNumChange(event);\r\n\t\t\t\t},\r\n\t\t\t\t// ヘッダー\r\n\t\t\t\tbtnClickReturnTop: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickReturnTop(event);\r\n\t\t\t\t},\r\n\t\t\t\tbtnClickFaq: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickFaq(event);\r\n\t\t\t\t},\r\n\t\t\t\tbtnClickOrderHistory: (event: JQueryEventObject) => {\r\n\t\t\t\t\tthis.btnClickOrderHistory(event);\r\n\t\t\t\t}\r\n\t\t\t}, mounted: () => {\r\n\r\n\t\t\t\t// リテーラ別のチャットボット制御\r\n\t\t\t\tvar divChatBot = document.getElementById(\"chava-root\") as HTMLDivElement;\r\n\t\t\t\tif (divChatBot) {\r\n\t\t\t\t\tdivChatBot.style.display = this._retailerConfig.id == \"0\" ? \"block\" : \"none\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// DOM読み込み後に実行する。\r\n\t\t\t\tthis.doOnload();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// リテーラ別の初期処理\r\n\t\tthis.initRetailer();\r\n\t}\r\n\r\n\t/**\r\n\t * リテーラ別の初期化処理\r\n\t * */\r\n\tpublic initRetailer(): void {\r\n\t\tif (this.getIsAddOrder()) {\r\n\r\n\t\t\t// 追加注文時\r\n\t\t\tthis._vue.$data.orderMin = this._retailerConfig.poscaSettings.addOrderNum.addOrderMin\r\n\t\t\tthis._vue.$data.orderMax = this._retailerConfig.poscaSettings.addOrderNum.addOrderMax\r\n\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// 通常注文時\r\n\t\t\tthis._vue.$data.orderMin = this._retailerConfig.poscaSettings.orderNum.orderMin\r\n\t\t\tthis._vue.$data.orderMax = this._retailerConfig.poscaSettings.orderNum.orderMax\r\n\r\n\t\t}\r\n\r\n\t\t// リテーラロゴURL設定\r\n\t\tthis._vue.$data.Header.Logo1Url = this._retailerConfig.logo1;\r\n\t\tthis._vue.$data.Header.Logo2Url = this._retailerConfig.logo2;\r\n\t}\r\n\r\n\t/**\r\n\t * 画面初期化\r\n\t * */\r\n\tprivate async doOnload(): es6promise.Promise {\r\n\r\n\t\t// ローディングダイアログ開始\r\n\t\tdialogUtil.showLoading();\r\n\r\n\t\t// gigya イベントリスナー登録\r\n\t\tif (this._retailerConfig.id == \"0\") {\r\n\t\t\tgigya.socialize.addEventHandlers({\r\n\t\t\t\tonLogin: common.onLoginHandlerWithSave\r\n\t\t\t\t//onHide: common.onHideHandler\r\n\t\t\t});\r\n\t\t}\r\n\t\t// tokenを画面から確保\r\n\t\tthis.getAuthToken();\r\n\r\n\t\t// SSO\r\n\t\tLogger.log(\"SSO開始\");\r\n\t\tawait SSO.DoSSO(this._token, this._retailerConfig.id);\r\n\r\n\t\t// 「戻るボタンの文言」の処理が実行されるため、ダミー関数を呼ばせています。\r\n\t\tawait this.dummyFucn();\r\n\r\n\t\t// 途中復帰か?\r\n\t\tif (this.getIsReturn()) {\r\n\r\n\t\t\tawait SSO.WaitSSO();\r\n\t\t\tawait common.InitReturn(this._token);\r\n\r\n\t\t\t// 戻る/次へボタンの制御\r\n\t\t\tif (this.getIsPC()) {\r\n\r\n\t\t\t\tthis._vue.$data.PrevButtonMessage = this.PC_GO_CART;\r\n\t\t\t\tthis._vue.$data.NextButtonMessage = this.PC_GO_ATENA_SELECT;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tthis._vue.$data.PrevButtonMessage = this.SP_GO_CART;\r\n\t\t\t\tthis._vue.$data.NextButtonMessage = this.SP_GO_ATENA_SELECT;\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tthis._vue.$data.PrevButtonMessage = this.NORMAL_PREV;\r\n\t\t\tthis._vue.$data.NextButtonMessage = this.NORMAL_ATENA;\r\n\t\t}\r\n\r\n\t\t// idbからのデータ読み込み\r\n\t\tthis.loadIDB().then(() => {\r\n\r\n\t\t\t// 画面初期化\r\n\t\t\tthis.initDisp().then(() => {\r\n\t\t\t\t// 選択状態復帰\r\n\t\t\t\tthis.returnOrder();\r\n\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_SYSTEM, dialogUtil.closeErrorDialog);\r\n\t\t\t\treturn es6promise.Promise.reject;\r\n\r\n\t\t\t}).finally(() => {\r\n\r\n\t\t\t\tthis._vue.$data.loadComplete = true;\r\n\r\n\t\t\t\t// \"contents\"要素の子要素の非表示を解除\r\n\t\t\t\t$(\"#contents\").removeClass(\"visHidden\");\r\n\r\n\t\t\t\t// フォーカスセット\r\n\t\t\t\t$(\"#countSelect\").focus();\r\n\r\n\t\t\t\t// ダイアログ閉じ\r\n\t\t\t\tdialogUtil.closeLoading();\r\n\r\n\t\t\t});\r\n\r\n\r\n\t\t}).catch((msg) => {\r\n\t\t\tdialogUtil.createErrorDialog(msg, dialogUtil.closeErrorDialog);\r\n\t\t\treturn es6promise.Promise.reject;\r\n\t\t});\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * 画面の初期表示\r\n\t * */\r\n\tprivate async initDisp(): es6promise.Promise {\r\n\r\n\t\treturn new Promise((res, rej) => {\r\n\r\n\t\t\ttry {\r\n\t\t\t\t// seq順に並び替え\r\n\t\t\t\tthis._masterInfo.hagakiMasterInfo.sort((a, b) => {\r\n\t\t\t\t\treturn a.seq - b.seq;\r\n\t\t\t\t})\r\n\r\n\t\t\t\t// プルダウン用にバインド\r\n\t\t\t\tthis._vue.$data.hagakiTypes = this._masterInfo.hagakiMasterInfo;\r\n\r\n\t\t\t\t// 初期選択状態の値設定\r\n\t\t\t\tthis._vue.$data.hagakiTypeSelected = this._masterInfo.hagakiMasterInfo[0];\r\n\r\n\t\t\t\t// 保存日のお知らせ\r\n\t\t\t\tthis.getSaveLimit(this.SAVE_LIMIT);\r\n\r\n\t\t\t\tres(\"\");\r\n\t\t\t} catch (e) {\r\n\t\t\t\trej(e);\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tprivate async dummyFucn(): es6promise.Promise {\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\t/**\r\n\t * 注文情報からの状態復帰\r\n\t * */\r\n\tprivate returnOrder(): void {\r\n\r\n\t\t// 注文情報が空の場合(=初めてこの画面に来た)は、何もしない。\r\n\t\tif (this._orderInfo == null) return;\r\n\t\tif (Object.keys(this._orderInfo).length == 0) return;\r\n\r\n\t\tconst orderSelected = this._orderInfo.postcardType;\r\n\t\tconst item = this._masterInfo.hagakiMasterInfo.filter(function (x) {\r\n\t\t\treturn x.id == orderSelected\r\n\t\t})[0];\r\n\r\n\t\tif (!item) return;\r\n\r\n\t\tif (this._editInfo.printType == this.INSATSU) {\r\n\t\t\tif (item.id == \"8\") {\r\n\t\t\t\t// 印刷でディズニータイプは無効\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// 選択状態アイテムの設定\r\n\t\tthis._vue.$data.hagakiTypeSelected = item;\r\n\r\n\t\t// 枚数の更新\r\n\t\tthis._vue.$data.inputHagakiQuantity = this._orderInfo.num;\r\n\r\n\t\t// ボタン有効化\r\n\t\tthis.enableNextButton();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * 保存期限を計算する。\r\n\t * */\r\n\tprivate getSaveLimit(addDay: number): void {\r\n\r\n\t\tconst date = new Date();\r\n\t\tdate.setDate(date.getDate() + addDay);\r\n\r\n\t\tconst yyyy = date.getFullYear();\r\n\t\tconst MM = (\"0\" + (date.getMonth() + 1)).slice(-2);\r\n\t\tconst dd = (\"0\" + date.getDate()).slice(-2);\r\n\r\n\t\tthis._vue.$data.saveLimit = yyyy + \"年\" + MM + \"月\" + dd + \"日\";\r\n\t}\r\n\r\n\t/**\r\n\t * indexedDBからの読み込み\r\n\t * @param event\r\n\t */\r\n\tprivate async loadIDB(): es6promise.Promise {\r\n\r\n\t\t// 編集情報マスタから読み込み\r\n\t\tthis._editInfo = lstorage.get(lstorage.KEY_EDIT, true);\r\n\t\tif (!this._editInfo) {\r\n\t\t\t// 読み込み失敗\r\n\t\t\treturn es6promise.Promise.reject(constDialogMessage.ERROR_LOCAL_DB_READ);\r\n\t\t}\r\n\r\n\t\t// マスタからハガキ種読み込み\r\n\t\tconst getMaster: masterInfo = lstorage.get(lstorage.KEY_MASTER, true);\r\n\t\tif (getMaster) {\r\n\t\t\tthis._masterInfo = new masterInfo();\r\n\t\t\tif (this._editInfo.printType == this.GINEN) {\r\n\t\t\t\t// ディズニーは銀塩のみ。\r\n\t\t\t\tthis._masterInfo.hagakiMasterInfo = getMaster.hagakiMasterInfo.filter(x => x.id != \"7\"); // 1枚無料ハガキは表示させない。\r\n\t\t\t} else {\r\n\t\t\t\t// 印刷タイプではディズニーハガキは許可しない。\r\n\t\t\t\tthis._masterInfo.hagakiMasterInfo = getMaster.hagakiMasterInfo.filter(x => {\r\n\t\t\t\t\tif (!(x.id == \"7\" || x.id == \"8\")) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// 読み込み失敗\r\n\t\t\treturn es6promise.Promise.reject(constDialogMessage.ERROR_LOCAL_DB_READ);\r\n\t\t}\r\n\r\n\t\t// 注文情報からの取得。(途中保存の場合は前回入力した状態から復帰する。)\r\n\t\tthis._orderInfo = lstorage.get(lstorage.KEY_ORDER, true);\r\n\t\tif (!this._orderInfo) {\r\n\t\t\t// 空の場合はorderInfo新規作成\r\n\t\t\tthis._orderInfo = new orderInfo();\r\n\t\t\tif (!lstorage.set(lstorage.KEY_ORDER, this._orderInfo)) {\r\n\t\t\t\t// 新規作成失敗\r\n\t\t\t\treturn es6promise.Promise.reject(constDialogMessage.ERROR_LOCAL_DB_WRITE);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * 入力された状態をidbに保存する。\r\n\t * */\r\n\tprivate saveOrderInfo(hagakiNum: number, idx: string): es6promise.Promise {\r\n\r\n\t\treturn new Promise((res, rej) => {\r\n\r\n\t\t\t// 更新\r\n\t\t\tthis._orderInfo.num = hagakiNum;\r\n\t\t\tthis._orderInfo.postcardType = idx;\r\n\r\n\t\t\tif (lstorage.set(lstorage.KEY_ORDER, this._orderInfo)) {\r\n\t\t\t\tres(\"\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\trej();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * 入力エリアの半角チェックを行います。\r\n\t * */\r\n\tprivate validateNum(input: string): boolean {\r\n\t\tconst pattern = /^[-]?([1-9]\\d*|0)(\\.\\d+)?$/;\r\n\t\treturn pattern.test(input);\r\n\t}\r\n\r\n\t/**\r\n\t * 入力エリアの数値チェックを行います。\r\n\t * */\r\n\tprivate validateRange(input: string): boolean {\r\n\t\tconst n = parseInt(input);\r\n\t\tconst min = this._vue.$data.orderMin;\r\n\t\tconst max = this._vue.$data.orderMax;\r\n\t\tif (n >= min && max >= n) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * 次へボタンの有効\r\n\t * */\r\n\tprivate enableNextButton(): void {\r\n\t\t$(\"#nextBtnDiv\").removeClass(\"is-disabled\");\r\n\t}\r\n\r\n\t/**\r\n\t * 次へボタンの無効\r\n\t * */\r\n\tprivate disableNextButton(): void {\r\n\t\t$(\"#nextBtnDiv\").addClass(\"is-disabled\");\r\n\t}\r\n\r\n\t/**\r\n\t * 認証トークン取得\r\n\t */\r\n\tprivate getAuthToken(): void {\r\n\r\n\t\t// hiddenから認証トークン取得&クリア\r\n\t\tthis._token = $(\"#Token\").val();\r\n\t\t//$(\"#Token\").val(\"\");\r\n\r\n\t}\r\n\r\n\t//--------------------------------------------------------------------------\r\n\t// イベント\r\n\t//--------------------------------------------------------------------------\r\n\t/**\r\n\t* 前画面遷移ボタン押下メソッド\r\n\t* */\r\n\tpublic btnClickReturnFlow(event: JQueryEventObject): void {\r\n\r\n\t\tif (this.getIsReturn()) {\r\n\r\n\t\t\t// カートからgetで遷移したときはカートに返す。\r\n\t\t\t// ローディング開始\r\n\t\t\tdialogUtil.showLoading();\r\n\r\n\t\t\tcommon.SaveDataForceForCart(this._token);\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// 通常系はプレビューに戻る。\r\n\t\t\tconst form = document.createElement('form');\r\n\t\t\tform.action = this.ViewURL_Preview;\r\n\t\t\tform.method = 'POST';\r\n\t\t\t$('body').append(form);\r\n\r\n\t\t\tform.submit();\r\n\t\t\t//history.back();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * 次画面遷移ボタン押下メソッド\r\n\t * */\r\n\tpublic btnClickNextFlow(event: JQueryEventObject): void {\r\n\r\n\t\t// 半角チェック\r\n\t\tconst inputNum = this._vue.$data.inputHagakiQuantity;\r\n\t\tif (!this.validateNum(inputNum)) {\r\n\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_HAGAKINUM_VALIDATION_CHARACTER, dialogUtil.closeErrorDialog, dialogUtil.DialogType.None);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// 枚数チェック\r\n\t\tif (!this.validateRange(inputNum)) {\r\n\t\t\tdialogUtil.createErrorDialog(\"枚数は\" + this._vue.$data.orderMin + \"枚~\" + this._vue.$data.orderMax + \"枚の範囲で入力してください。\"\r\n\t\t\t\t, dialogUtil.closeErrorDialog, dialogUtil.DialogType.None);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// ローディング開始\r\n\t\tdialogUtil.showLoading();\r\n\r\n\t\t// indexedDBのパラメータを更新したのち、画面遷移\r\n\t\tconst hagakiType = this._vue.$data.hagakiTypeSelected as hagakiMasterInfo\r\n\t\tthis.saveOrderInfo(parseInt(inputNum), hagakiType.id).then(() => {\r\n\r\n\t\t\tif (this.getAtenaStop()) {\r\n\t\t\t\tconst that = this;\r\n\t\t\t\tconst okFunc = function () {\r\n\t\t\t\t\t// 宛名受付停止期間内はカートへ直接投下\r\n\t\t\t\t\tdialogUtil.closeYesNoDialog();\r\n\t\t\t\t\tcommon.SaveDataForceForCart(that._token);\r\n\t\t\t\t}\r\n\t\t\t\tconst ngFunc = function () {\r\n\t\t\t\t\tdialogUtil.closeYesNoDialog();\r\n\t\t\t\t}\r\n\t\t\t\tdialogUtil.createYesNoDialog(constDialogMessage.INFO_ATENA_ORDER_STOP, okFunc, ngFunc,\"OK\",\"キャンセル\");\r\n\r\n\t\t\t}else if (this._retailerConfig.poscaSettings.allowAtena) {\r\n\t\t\t\t// 宛名印刷OKリテーラ\r\n\t\t\t\t// 通常注文であれば宛名選択画面へ。\r\n\t\t\t\tconst form = document.createElement('form');\r\n\t\t\t\tform.action = this.ViewURL_AtenaSelect;\r\n\t\t\t\tform.method = 'POST';\r\n\t\t\t\t$('body').append(form);\r\n\r\n\t\t\t\tform.submit();\r\n\t\t\t} else {\r\n\t\t\t\t// 宛名印刷不可リテーラ→カートへ→強制保存\r\n\t\t\t\tcommon.SaveDataForceForCart(this._token);\r\n\t\t\t}\r\n\r\n\t\t}).catch((e) => {\r\n\r\n\t\t\t// idb更新失敗\r\n\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_LOCAL_DB_WRITE, dialogUtil.closeErrorDialog);\r\n\r\n\t\t}).finally(() => {\r\n\r\n\t\t\tdialogUtil.closeLoading();\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * デザインとリテーラと仕上げから宛名受付期間内か判定します。\r\n\t * */\r\n\tprivate getAtenaStop(): boolean {\r\n\r\n\t\tconst isInsatsu = this._editInfo.printType == this.INSATSU ? true : false;\r\n\t\tif (isInsatsu) {\r\n\r\n\t\t\t// Hiddenから受付停止中かどうかチェック\r\n\t\t\tconst v = $('#atenaOrderStopInsatsu').val().toLowerCase();\r\n\t\t\tif (v == \"true\") {\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\t\r\n\t\t} else {\r\n\t\t\tconst v = $('#atenaOrderStopGinen').val().toLowerCase();\r\n\t\t\tif (v == \"true\") {\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * ハガキ入力枚数チェックイベント\r\n\t * */\r\n\tprivate hagakiNumChange(event: JQueryEventObject): void {\r\n\r\n\t\tif (this._vue.$data.inputHagakiQuantity.length > 0) {\r\n\t\t\t\r\n\t\t\tif (this._vue.$data.inputHagakiQuantity > this._vue.$data.orderMax) {\r\n\t\t\t\t// 上限を超えての入力をしたとき\r\n\t\t\t\tdialogUtil.createErrorDialog(\"枚数は\" + this._vue.$data.orderMin + \"枚~\" + this._vue.$data.orderMax + \"枚の範囲で入力してください。\", () => {\r\n\t\t\t\t\tthis._vue.$data.inputHagakiQuantity = this._vue.$data.inputHagakiQuantity.substr(0, 3);\r\n\t\t\t\t\tdialogUtil.closeErrorDialog();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t});\r\n\t\t\t\treturn;\r\n\t\t\t} else if (this._vue.$data.inputHagakiQuantity.length > 3) {\r\n\t\t\t\t// 3桁を超えて入力したとき\r\n\t\t\t\tdialogUtil.createErrorDialog(\"入力可能な文字数は3桁までです。\", () => {\r\n\t\t\t\t\tthis._vue.$data.inputHagakiQuantity = this._vue.$data.inputHagakiQuantity.substr(0, 3);\r\n\t\t\t\t\tdialogUtil.closeErrorDialog();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t});\r\n\t\t\t\treturn;\r\n }\r\n\t\t\t// 何かしらの入力。\r\n\t\t\tthis.enableNextButton();\r\n\t\t} else {\r\n\t\t\t// 何も入っていない。\r\n\t\t\tthis.disableNextButton();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * 一時保存ボタン押下メソッド\r\n\t * */\r\n\tpublic btnClickSave(event: JQueryEventObject): void {\r\n\r\n\t\t// 半角チェック\r\n\t\tconst inputNum = this._vue.$data.inputHagakiQuantity;\r\n\t\tif (!this.validateNum(inputNum)) {\r\n\t\t\tdialogUtil.createErrorDialog(constDialogMessage.ERROR_HAGAKINUM_VALIDATION_CHARACTER, dialogUtil.closeErrorDialog, dialogUtil.DialogType.None);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// 枚数チェック\r\n\t\tif (!this.validateRange(inputNum)) {\r\n\t\t\tdialogUtil.createErrorDialog(\"枚数は\" + this._vue.$data.orderMin + \"枚~\" + this._vue.$data.orderMax + \"枚の範囲で入力してください。\"\r\n\t\t\t\t, dialogUtil.closeErrorDialog, dialogUtil.DialogType.None);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// ハガキ種\r\n\t\tconst postcardType = this._vue.$data.hagakiTypeSelected.id;\r\n\r\n\t\t// idb更新\r\n\t\tthis.saveOrderInfo(inputNum, postcardType).then(() => {\r\n\t\t\t// 最新のidbで保存する。\r\n\t\t\tconst editInfo: editInfo = lstorage.get(lstorage.KEY_EDIT, false);\r\n\t\t\tconst orderInfo: orderInfo = lstorage.get(lstorage.KEY_ORDER, false);\r\n\t\t\tcommon.SaveData(this._token, editInfo, orderInfo);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * 操作方法ボタン押下メソッド\r\n\t * */\r\n\tprivate btnClickOperationHelp(event: JQueryEventObject): void {\r\n\r\n\t\tui.windowOpen(this._retailerConfig.operationInfo.hagakiSelect, \"\", null, null);\r\n\r\n\t}\r\n\r\n}\r\n\r\n\r\n","import { baseVueController } from \"./baseVueController\";\r\n\r\n//------------------------------------------------------------------------------\r\n// クラス\r\n//------------------------------------------------------------------------------\r\n/**\r\n * エラー画面画面コントローラクラス\r\n * */\r\nexport class errorController extends baseVueController {\r\n\r\n\tpublic init(): void {\r\n\t\t// エラー時のボタン遷移先\r\n\t\tthis.SetErrorPageInfo();\r\n\t}\r\n\r\n\tpublic initRetailer(): void {\r\n\t\t// NOP\r\n\t}\r\n\r\n\tpublic btnClickReturnFlow(event: JQueryEventObject): void {\r\n\t\t// NOP\r\n\t}\r\n\r\n\tpublic btnClickNextFlow(event: JQueryEventObject): void {\r\n\t\t// NOP\t\t\t\r\n\t}\r\n}","/*\r\n * sonbpIF連携のお試し。\r\n * \r\n * 【注意点】\r\n * SonbpIfの実体jsファイルは分離してあるため、import使うとブラウザ上での編集画面以外では SonbpIf⇒not defined エラーとなる。\r\n * コーディング中だけimportで型チェックを行い、ビルド時はdeclareで逃げるが手軽。\r\n * \r\n */\r\n\r\n//import * as SonbpIf from \"SonbpIf\";\r\ndeclare var SonbpIf: any;\r\ndeclare var sonbp: any;\r\n\r\nexport class SonbpIfTestDriver {\r\n\r\n\tpublic start() {\r\n\r\n\t\t// テスト用\r\n\t\tvar prms = location.search.substring(1).split('&');\r\n\t\tfor (var i = 0; prms[i]; i++) {\r\n\t\t\tvar k = prms[i].split('=');\r\n\t\t\tprms[k[0]] = k[1];\r\n\t\t}\r\n\r\n\t\t// sonbp CanvsのdivId\r\n\t\tvar box_view = \"box_view\";\r\n\t\tif (prms[\"box_view\"]) box_view = prms[\"box_view\"];\r\n\r\n\t\t// PC/SPモード\r\n\t\tvar client = \"PC\";\r\n\t\tif (prms[\"client\"]) client = prms[\"client\"];\r\n\r\n\t\tif (client == \"SP\") {\r\n\t\t\t$(\"#box_contents\").height(\"200px\");\r\n\t\t}\r\n\r\n\t\t// [sonbp] ローディング UI表示\r\n\t\t// 画面いっぱいに、ロード中のUIを表示します。\r\n\t\tsonbp.ui.loading.init();\r\n\t\tsonbp.ui.loading.start();\r\n\r\n\t\t//SonbpIfClassは画面シングルトンで利用\r\n\t\tvar sonbpIf = new SonbpIf.SonbpIfClass();\r\n\t\tdocument[\"_sonbpIf\"] = sonbpIf;\r\n\r\n\t\t//オプション指定\r\n\t\tsonbpIf.setOption({\r\n\t\t\tput_range: {\r\n\t\t\t\tw: 248.17,\t//87.55,\r\n\t\t\t\th: 384.01\t//135.47\r\n\t\t\t},\r\n\t\t\tput_range_stamp: {\r\n\t\t\t\tw: 283.846, // 立ち落としサイズ調整済\r\n\t\t\t\th: 420,\r\n\t\t\t},\r\n\t\t\tpage_offset: {\r\n\t\t\t\tx: 10,\r\n\t\t\t\ty: 10\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//セッションエラーコールバック\r\n\t\tsonbpIf.onApiError(function (e: any): boolean {\r\n\r\n\t\t\tconsole.log(\"onApiError\", e);\r\n\t\t\tif (e.responseCode == 401) {\r\n\t\t\t\tconsole.log(\"セッションチェックNG \");\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\t//sonbp初期化\r\n\t\tsonbpIf.sonbpInit(null, box_view, \"ffpsc/\", \"\", client, \"test_token_value\", function (res) {\r\n\t\t\tif (res.code == 0) {\r\n\r\n\t\t\t\t//sonbp起動\r\n\t\t\t\tsonbpIf.sonbpStart(function (res) {\r\n\t\t\t\t\tif (res.code == 0) {\r\n\r\n\t\t\t\t\t\t// 処理モード設定\r\n\t\t\t\t\t\tsonbpIf.setMode(\"PHOTO_RGST\", function (res) {\r\n\t\t\t\t\t\t\tif (res.code == 0) {\r\n\r\n\t\t\t\t\t\t\t\t//編集開始\r\n\t\t\t\t\t\t\t\tsonbp.ui.loading.stop();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\r\n\t\t\t\t\t\t\t\tconsole.error(res);\r\n\t\t\t\t\t\t\t\tdisplayNotice(res.msg);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\r\n\t\t\t\t\t\tconsole.error(res);\r\n\t\t\t\t\t\tdisplayNotice(res.msg);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\tconsole.error(res);\r\n\t\t\t\tdisplayNotice(res.msg);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//エラー表示は業務側に任せる\r\n\t\tfunction displayNotice(msg) {\r\n\t\t\talert(\"message: \" + msg);\r\n\t\t}\r\n\r\n\t\t//---------------------------------------------------\r\n\t\t//連携テスト(基本動作)\r\n\t\t//---------------------------------------------------\r\n\r\n\t\t//sonbp初期化\r\n\t\t$(\"#sonbpInit\").click(function () {\r\n\t\t\tdocument.location.href = \"./sonbpiftest?box_view=\" + $(\"#sonbpInit_box\").val();\r\n\t\t});\r\n\r\n\t\t//sonbp起動\r\n\t\t$(\"#sonbpStart\").click(function () {\r\n\t\t\tdocument.location.href = \"./sonbpiftest?file_key=\" + $(\"#sonbpStart_fkey\").val();\r\n\t\t});\r\n\r\n\t\t//Canvasサイズ調整\r\n\t\t$(\"#resizeContents\").click(function () {\r\n\t\t\t$(\"#box_contents\").css(\"width\", $(\"#resizeContents_w\").val()).css(\"height\", $(\"#resizeContents_h\").val());\r\n\r\n\t\t\tlet asize = ($(\"#resizeContents_asize\").val() == \"\") ? undefined : Number($(\"#resizeContents_asize\").val());\r\n\t\t\tsonbpIf.resizeContents(asize);\r\n\t\t});\r\n\r\n\t\t//処理モード切換え\r\n\t\t$(\"#posca_mode\").on(\"change\", function () {\r\n\t\t\tlet preSel = sonbpIf.getSelectItem();\r\n\t\t\tsonbpIf.setMode($(\"#posca_mode\").val(), function (res) {\r\n\t\t\t\tif (res.code != 0) {\r\n\t\t\t\t\tconsole.error(res);\r\n\t\t\t\t\tdisplayNotice(res.msg);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//debug SPのzoom確認用\r\n\t\t\t\tif (preSel != null && client == \"SP\" && $(\"#posca_mode\").val() == \"PHOTO_MANI\") {\r\n\t\t\t\t\tsonbpIf.selectItem(\r\n\t\t\t\t\t\tpreSel.item_type,\r\n\t\t\t\t\t\tpreSel.idx,\r\n\t\t\t\t\t\tfunction (res) {\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//PDF保存\r\n\t\t$(\"#menu_save2\").click(function () {\r\n\t\t\tif ($(\"#menu_save2_flg\").prop(\"checked\")) {\r\n\t\t\t\t//sonbpの中身壊してエラーにする\r\n\t\t\t\t(sonbpIf)._ifdto.bpView._editToken = \"dummy\";\r\n\t\t\t}\r\n\r\n\t\t\tsonbp.ui.loading.start();\r\n\t\t\tsonbpIf.save(function (res) {\r\n\t\t\t\tif (res.code != 0) {\r\n\t\t\t\t\tconsole.error(res);\r\n\t\t\t\t\tdisplayNotice(res.msg);\r\n\t\t\t\t}\r\n\t\t\t\tsonbp.ui.loading.stop();\r\n\t\t\t});\r\n\t\t\treturn false;\r\n\t\t});\r\n\r\n\t\t//仕上がり変更\r\n\t\t$(\"#setAreaView\").click(function () {\r\n\t\t\tsonbpIf.setAreaView($(\"#setAreaView_type\").val());\r\n\t\t});\r\n\r\n\t\t//レイヤー情報取得\r\n\t\t$(\"#getLayers\").click(function () {\r\n\t\t\tvar result = sonbpIf.getLayers();\r\n\t\t\tconsole.log(\"getLayers result -->\", result);\r\n\t\t});\r\n\r\n\t\t//ページサイズ取得\r\n\t\t$(\"#getPageSize\").click(function () {\r\n\t\t\tvar result = sonbpIf.getPageSize();\r\n\t\t\tconsole.log(\"getPageSize result -->\", result);\r\n\t\t});\r\n\r\n\t\t//---------------------------------------------------\r\n\t\t//連携テスト(アイテム操作/共通)\r\n\t\t//---------------------------------------------------\r\n\r\n\t\t//アイテム選択指示\r\n\t\t$(\"#selectItem\").click(function () {\r\n\t\t\tsonbpIf.selectItem(\r\n\t\t\t\t$(\"#selectItem_type\").val(),\r\n\t\t\t\t$(\"#selectItem_idx\").val(),\r\n\t\t\t\tfunction (res) {\r\n\t\t\t\t\tconsole.log(\"selectItem result -->\", res);\r\n\t\t\t\t});\r\n\t\t});\r\n\r\n\t\t//アイテム選択通知\r\n\t\t$(\"#onChangeSelectItem\").click(function () {\r\n\t\t\tsonbpIf.onChangeSelectItem(function (vps) {\r\n\t\t\t\tconsole.log(\"onChangeSelectItem -->\", vps);\r\n\t\t\t})\r\n\t\t});\r\n\r\n\t\t//選択アイテム取得\r\n\t\t$(\"#getSelectItems\").click(function () {\r\n\t\t\tvar result = sonbpIf.getSelectItem();\r\n\t\t\tconsole.log(\"getSelectItems result -->\", result);\r\n\t\t});\r\n\r\n\t\t//アイテムリスト取得\r\n\t\t$(\"#getItems\").click(function () {\r\n\t\t\tvar prm = [];\r\n\t\t\tif ($(\"#getItems_type\").val().length > 0) {\r\n\t\t\t\tprm = $(\"#getItems_type\").val().split(',');\r\n\t\t\t}\r\n\r\n\t\t\tsonbpIf.getItems(prm, function (res, list) {\r\n\t\t\t\tconsole.log(\"getItems result -->\", res, list);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//アイテム回転\r\n\t\t$(\"#rotateItem\").click(function () {\r\n\t\t\tsonbpIf.rotateItem(Number($(\"#rotateItem_deg\").val()), function (res) {\r\n\t\t\t\tconsole.log(\"rotateItem result -->\", res);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//アイテム拡大縮小\r\n\t\t$(\"#scaleItem\").click(function () {\r\n\t\t\tsonbpIf.scaleItem(Number($(\"#scaleItem_scale\").val()), function (res) {\r\n\t\t\t\tconsole.log(\"scaleItem result -->\", res);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//アイテム移動\r\n\t\t$(\"#moveItem\").click(function () {\r\n\t\t\tsonbpIf.moveItem(Number($(\"#moveItem_x\").val()), Number($(\"#moveItem_y\").val()), function (res) {\r\n\t\t\t\tconsole.log(\"moveItem result -->\", res);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//履歴初期化\r\n\t\t$(\"#historyStart\").click(function () {\r\n\t\t\tlet res = sonbpIf.historyStart();\r\n\t\t\tconsole.log(\"historyStart result -->\", res);\r\n\t\t});\r\n\r\n\t\t//履歴Undo\r\n\t\t$(\"#historyAllUndo\").click(function () {\r\n\t\t\tsonbpIf.historyAllUndo(function (res) {\r\n\t\t\t\tconsole.log(\"historyAllUndo result -->\", res);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//履歴Commit\r\n\t\t$(\"#historyCommit\").click(function () {\r\n\t\t\tlet res = sonbpIf.historyCommit();\r\n\t\t\tconsole.log(\"historyCommit result -->\", res);\r\n\t\t});\r\n\r\n\t\t//---------------------------------------------------\r\n\t\t//連携テスト(アイテム操作/画像操作)\r\n\t\t//---------------------------------------------------\r\n\r\n\t\t//画像リスト取得\r\n\t\t$(\"#getPhotoList\").click(function () {\r\n\t\t\tvar prm = [];\r\n\t\t\tsonbpIf.getPhotoList(function (res, list) {\r\n\t\t\t\tconsole.log(\"getPhotoList result -->\", res, list);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//写真枠に画像を配置(カレント枠)\r\n\t\t$(\"#setPhoto\").click(function () {\r\n\t\t\tvar file_key = $(\"#setPhoto_fkey\").val();\r\n\t\t\tvar file_id = $(\"#setPhoto_fid\").val()\r\n\t\t\tvar keep_flg = $(\"#setPhoto_keep\").prop(\"checked\");\r\n\t\t\tEncodeFileKey(file_key, function (fkey) {\r\n\t\t\t\tsonbpIf.setPhoto(fkey, file_id, { w: 1024, h: 768 }, keep_flg, function (res) {\r\n\t\t\t\t\tconsole.log(\"setPhoto result -->\", res);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//画像枠から配置画像削除(ID指定)\r\n\t\t$(\"#removePhotoById\").click(function () {\r\n\t\t\tvar file_id = $(\"#removePhotoById_fid\").val().split(\",\");\r\n\t\t\tsonbpIf.removePhotoById(file_id, function (res) {\r\n\t\t\t\tconsole.log(\"removePhotoById result -->\", res);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//画像枠から配置画像削除(カレント枠)\r\n\t\t$(\"#removePhoto\").click(function () {\r\n\t\t\tsonbpIf.removePhoto(function (res) {\r\n\t\t\t\tconsole.log(\"removePhoto result -->\", res);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//写真枠に画像を配置(ドラッグ&ドロップ)\r\n\t\tvar fids = [\"cat-1057829_1920\", \"IMG_12\", \"Koala\", \"Koala_mini\"];\r\n\t\tfor (var i = 0; i < fids.length; i++) {\r\n\t\t\tlet pureFileId = fids[i];\r\n\t\t\tlet vpFileId = pureFileId + \"@0\";\r\n\t\t\tlet file_key = \"PHOTO@20210308@ID0003@\" + pureFileId + \"@on@0\";\r\n\t\t\tEncodeFileKey(file_key, function (fkey) {\r\n\t\t\t\tlet image = new Image();\r\n\r\n\t\t\t\timage.onload = function (e) {\r\n\t\t\t\t\tconsole.log(pureFileId);\r\n\t\t\t\t}\r\n\r\n\t\t\t\timage.ondragstart = function (e) {\r\n\t\t\t\t\tsonbpIf.setPhotoDragger(e, image, fkey, vpFileId, { w: image.naturalWidth, h: image.naturalHeight }, function (res) {\r\n\t\t\t\t\t\tconsole.log(\"setPhotoDragger result -->\", res);\r\n\t\t\t\t\t\tif (res.ex) console.error(res.ex);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\timage.title = pureFileId;\r\n\t\t\t\timage.src = \"./SonbpIfTest/prev?fid=\" + pureFileId;\r\n\r\n\t\t\t\tdocument.getElementById(\"setPhotoDragger_div\").appendChild(image);\r\n\t\t\t});\r\n\t\t}\r\n\t\t//fake\r\n\t\t{\r\n\t\t\tlet file_id = \"Fake_file_key\";\r\n\t\t\tlet file_key = \"PHOTO@20210308@ID0003@\" + file_id + \"@on@0\";\r\n\t\t\tEncodeFileKey(file_key, function (fkey) {\r\n\t\t\t\tlet image = new Image();\r\n\r\n\t\t\t\timage.ondragstart = function (e) {\r\n\t\t\t\t\tsonbpIf.setPhotoDragger(e, image, fkey, file_id, null, function (res) {\r\n\t\t\t\t\t\tconsole.log(\"setPhotoDragger result -->\", res);\r\n\t\t\t\t\t\tif (res.ex) console.error(res.ex);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\timage.title = file_id;\r\n\t\t\t\timage.src = \"./SonbpIfTest/prev?fid=IMG_12\";\r\n\r\n\t\t\t\tdocument.getElementById(\"setPhotoDragger_div\").appendChild(image);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t//2つの画像を入れ替え(タッチ式)\r\n\t\t$(\"#mutualTradePhoto\").click(function () {\r\n\t\t\tvar idxA = $(\"#mutualTradePhoto_idxA\").val();\r\n\t\t\tvar idxB = $(\"#mutualTradePhoto_idxB\").val();\r\n\t\t\tsonbpIf.mutualTradePhoto(idxA, idxB, function (res) {\r\n\t\t\t\tconsole.log(\"mutualTradePhoto result -->\", res);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//---------------------------------------------------\r\n\t\t//連携テスト(アイテム操作/スタンプ操作)\r\n\t\t//---------------------------------------------------\r\n\r\n\t\t//スタンプリスト取得\r\n\t\t$(\"#getStampList\").click(function () {\r\n\t\t\tvar prm = [];\r\n\t\t\tsonbpIf.getStampList(function (res, list) {\r\n\t\t\t\tconsole.log(\"getStampList result -->\", res, list);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//スタンプを配置\r\n\t\t$(\"#setStamp\").click(function () {\r\n\t\t\tvar idx = $(\"#setStamp_idx\").val();\r\n\t\t\tvar file_key = $(\"#setStamp_fkey\").val();\r\n\t\t\tvar file_id = $(\"#setStamp_fid\").val();\r\n\t\t\tvar w = Number($(\"#setStamp_w\").val());\r\n\t\t\tvar h = Number($(\"#setStamp_h\").val());\r\n\t\t\tEncodeFileKey(file_key, function (fkey) {\r\n\t\t\t\tsonbpIf.setStamp(\"STAMP_IMG\", idx, fkey, file_id, { w: w, h: h }, function (res) {\r\n\t\t\t\t\tconsole.log(\"setStamp result -->\", res);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//マイスタンプを配置\r\n\t\t$(\"#setMyStamp\").click(function () {\r\n\t\t\tvar idx = $(\"#setMyStamp_idx\").val();\r\n\t\t\tvar file_key = $(\"#setMyStamp_fkey\").val();\r\n\t\t\tvar file_id = $(\"#setMyStamp_fid\").val();\r\n\t\t\tvar w = Number($(\"#setMyStamp_w\").val());\r\n\t\t\tvar h = Number($(\"#setMyStamp_h\").val());\r\n\t\t\tEncodeFileKey(file_key, function (fkey) {\r\n\t\t\t\tsonbpIf.setStamp(\"MYSTAMP_IMG\", idx, fkey, file_id, { w: w, h: h }, function (res) {\r\n\t\t\t\t\tconsole.log(\"setMyStamp result -->\", res);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//手書きスタンプを配置\r\n\t\t$(\"#setFgStamp\").click(function () {\r\n\t\t\tvar idx = $(\"#setFgStamp_idx\").val();\r\n\t\t\tvar file_key = $(\"#setFgStamp_fkey\").val();\r\n\t\t\tvar file_id = $(\"#setFgStamp_fid\").val();\r\n\t\t\tvar w = Number($(\"#setFgStamp_w\").val());\r\n\t\t\tvar h = Number($(\"#setFgStamp_h\").val());\r\n\t\t\tEncodeFileKey(file_key, function (fkey) {\r\n\t\t\t\tsonbpIf.setStampByFontGenic(idx, fkey, file_id, { w: w, h: h }, function (res) {\r\n\t\t\t\t\tconsole.log(\"setFgStamp result -->\", res);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t\t//手書きスタンプを配置(テストケース追加)\r\n\t\t$(\"#setFgStamp_sample_set\").click(function () {\r\n\t\t\tvar vals = $(\"#setFgStamp_sample\").val().split(',');\r\n\t\t\t$(\"#setFgStamp_fkey\").val(\"FONTGENIC@20210308@ID0003@\" + vals[0]);\r\n\t\t\t$(\"#setFgStamp_fid\").val(vals[0]);\r\n\t\t\t$(\"#setFgStamp_w\").val(vals[1]);\r\n\t\t\t$(\"#setFgStamp_h\").val(vals[2]);\r\n\t\t});\r\n\r\n\t\t//スタンプ削除(ID指定)\r\n\t\t$(\"#removeStampById\").click(function () {\r\n\t\t\tvar file_id = $(\"#removeStampById_fid\").val().split(\",\");\r\n\t\t\tvar item_type = $(\"#removeStampById_itemtype\").val();\r\n\t\t\tsonbpIf.removeStampById(item_type, file_id, function (res) {\r\n\t\t\t\tconsole.log(\"removeStampById result -->\", res);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//スタンプ削除(カレント枠)\r\n\t\t$(\"#removeStamp\").click(function () {\r\n\t\t\tsonbpIf.removeStamp(function (res) {\r\n\t\t\t\tconsole.log(\"removeStamp result -->\", res);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//---------------------------------------------------\r\n\t\t//連携テスト(アイテム操作/テキスト操作)\r\n\t\t//---------------------------------------------------\r\n\r\n\t\t//テキストリスト取得\r\n\t\t$(\"#getTextList\").click(function () {\r\n\t\t\tvar prm = [];\r\n\t\t\tsonbpIf.getTextList(function (res, list) {\r\n\t\t\t\tconsole.log(\"getTextList result -->\", res, list);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//テキストを配置\r\n\t\t$(\"#setText\").click(function () {\r\n\t\t\tvar itype = $(\"#setText_itype\").val();\r\n\t\t\tvar idx = $(\"#setText_idx\").val();\r\n\t\t\tvar dposi = $(\"#setText_dposi\").val();\r\n\t\t\tif (dposi && dposi != \"\") {\r\n\t\t\t\tdposi = JSON.parse(dposi);\r\n\t\t\t} else {\r\n\t\t\t\tdposi = null;\r\n\t\t\t}\r\n\t\t\tvar muki = $(\"#setText_muki\").val();\r\n\t\t\tvar srcId = $(\"#setText_srcId\").val();\r\n\t\t\tInitTextData(srcId, function (tjson) {\r\n\t\t\t\t//console.log(tjson);\r\n\r\n\t\t\t\tsonbpIf.setText(itype, idx, tjson, dposi, muki, function (res) {\r\n\t\t\t\t\tconsole.log(\"setText result -->\", res);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//テキスト削除(カレント枠)\r\n\t\t$(\"#removeText\").click(function () {\r\n\t\t\tsonbpIf.removeText(function (res) {\r\n\t\t\t\tconsole.log(\"removeText result -->\", res);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\r\n\t};\r\n\r\n}\r\n\r\n$(function () {\r\n\r\n\t$(\".pp\").click(function () {\r\n\t\tvar div = $(\"#\" + this.dataset[\"pp\"]);\r\n\t\tif (div.is(\":hidden\")) {\r\n\t\t\tdiv.css(\"display\", \"inline\");\r\n\t\t} else {\r\n\t\t\tdiv.css(\"display\", \"none\");\r\n\t\t}\r\n\t});\r\n});\r\n\r\nfunction EncodeFileKey(file_key: string, callback: (fkey: string) => void): void {\r\n\r\n\tconst option = {\r\n\t\turl: \"./SonbpIfTest/EncodeFileKey?fkey=\" + file_key,\r\n\t\ttype: 'GET',\r\n\t\tdataType: 'json',\r\n\t\tscriptCharset: 'utf-8',\r\n\t\ttimeout: 10000\r\n\t};\r\n\r\n\t$.ajax(option).done((data, textStatus, jqXHR) => {\r\n\t\tcallback(data);\r\n\t}).fail((jqXHR: JQueryXHR, textStatus: string, errorThrown: string) => {\r\n\t\tconsole.error(textStatus, jqXHR);\r\n\t});\r\n}\r\n\r\nfunction InitTextData(srcId: string, callback: (json: string) => void): void {\r\n\r\n\tconst option = {\r\n\t\turl: \"./SonbpIfTest/InitTextData?srcId=\" + srcId,\r\n\t\ttype: 'GET',\r\n\t\tdataType: 'json',\r\n\t\tscriptCharset: 'utf-8',\r\n\t\ttimeout: 10000\r\n\t};\r\n\r\n\t$.ajax(option).done((data, textStatus, jqXHR) => {\r\n\t\tcallback(data);\r\n\t}).fail((jqXHR: JQueryXHR, textStatus: string, errorThrown: string) => {\r\n\t\tconsole.error(textStatus, jqXHR);\r\n\t});\r\n}\r\n\r\n(window).SonbpIfTestDriver = new SonbpIfTestDriver();\r\n"],"names":["module","exports","isFunction","x","isArray","Array","Object","prototype","toString","call","len","vertxNext","customSchedulerFn","asap","callback","arg","queue","flush","scheduleFlush","browserWindow","window","undefined","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","self","process","isWorker","Uint8ClampedArray","importScripts","MessageChannel","useSetTimeout","globalSetTimeout","setTimeout","i","channel","iterations","observer","node","then","onFulfillment","onRejection","parent","this","child","constructor","noop","PROMISE_ID","makePromise","_state","arguments","invokeCallback","_result","subscribe","resolve$1","object","promise","resolve","nextTick","document","createTextNode","observe","characterData","data","port1","onmessage","port2","postMessage","vertx","Function","require","runOnLoop","runOnContext","e","attemptVertx","Math","random","substring","PENDING","FULFILLED","REJECTED","handleMaybeThenable","maybeThenable","then$$1","thenable","fulfill","reject","value","reason","handleOwnThenable","sealed","error","fulfillmentHandler","rejectionHandler","tryThen","_label","handleForeignThenable","TypeError","type","publishRejection","_onerror","publish","_subscribers","length","subscribers","settled","detail","hasCallback","succeeded","id","Enumerator","Constructor","input","_instanceConstructor","_remaining","_enumerate","Error","_eachEntry","entry","c","resolve$$1","_then","didError","_settledAt","Promise$1","_willSettleAt","state","enumerator","Promise","resolver","needsResolver","initializePromise","needsNew","catch","finally","all","entries","race","_","_setScheduler","scheduleFn","_setAsap","asapFn","_asap","polyfill","local","g","P","promiseToString","cast","factory","global","w","noGlobal","arr","getProto","getPrototypeOf","slice","flat","array","concat","apply","push","indexOf","class2type","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","obj","nodeType","item","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","code","doc","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","isArrayLike","jquery","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","map","elem","first","eq","last","even","grep","_elem","odd","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","expando","replace","isReady","msg","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","invert","matches","callbackExpect","guid","Symbol","iterator","split","_i","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","pushNative","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","getElementsByTagName","getElementsByClassName","qsa","test","testContext","scope","toSelector","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","location","activeElement","hasFocus","href","tabIndex","checked","selected","selectedIndex","_matchIndexes","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","rootjQuery","root","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","has","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","noValue","method","fail","Callbacks","flag","createOptions","firing","memory","fired","locked","firingIndex","fire","once","stopOnFalse","remove","empty","disable","lock","fireWith","Deferred","func","tuples","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","notifyWith","resolveWith","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","getData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","values","hide","toggle","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","button","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","focus","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","height","parseInt","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","trim","_jQuery","_$","$","noConflict","hex_chr","md5cycle","k","d","md5blk","md5blks","md5blk_array","md51","tail","lo","hi","rhex","hex","toUtf8","str","unescape","hexToBinaryString","bytes","substr","SparkMD5","ArrayBuffer","clamp","min","from","targetArray","sourceArray","byteLength","begin","Uint8Array","appendBinary","_buff","_length","_hash","buff","_finish","getState","setState","destroy","hashBinary","returnUInt8Array","buffer","subarray","utf8Str2ArrayBuffer","md51_array","emptyObject","freeze","isUndef","isDef","isTrue","isPrimitive","isObject","_toString","toRawType","isRegExp","isValidArrayIndex","floor","isPromise","stringify","toNumber","makeMap","expectsLowerCase","isBuiltInTag","isReservedAttribute","camelizeRE","camelize","capitalize","charAt","hyphenateRE","hyphenate","ctx","boundFn","_from","toObject","res","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","getTime","keysA","keysB","looseIndexOf","called","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","unicodeRegExp","isReserved","def","bailRE","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","navigator","userAgent","isIE","isIE9","isEdge","isIOS","isFF","nativeWatch","watch","supportsPassive","isServerRendering","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","_Set","hasSymbol","Reflect","ownKeys","Set","clear","tip","generateComponentTrace","formatComponentName","hasConsole","classifyRE","vm","trace","includeFile","$root","cid","_isVue","$options","_componentTag","__file","$parent","tree","currentRecursiveSequence","repeat","Dep","subs","addSub","sub","removeSub","depend","addDep","update","targetStack","pushTarget","popTarget","VNode","elm","componentOptions","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","defineProperties","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","forEach","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","__proto__","protoAugment","copyAugment","walk","asRootData","isExtensible","defineReactive$$1","customSetter","shallow","property","getOwnPropertyDescriptor","childOb","dependArray","newVal","del","items","strats","mergeData","toVal","fromVal","mergeDataOrFn","parentVal","childVal","instanceData","defaultData","mergeHook","dedupeHooks","mergeAssets","assertObjectType","propsData","defaultStrat","key$1","methods","inject","provide","validateComponentName","mergeOptions","components","checkComponents","normalizeProps","normalized","normalizeInject","dirs","directives","def$$1","normalizeDirectives","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","default","_props","getType","getPropDefaultValue","prevShouldObserve","required","valid","expectedTypes","assertedType","assertType","expectedType","haveExpectedTypes","some","validator","receivedType","isExplicable","isBoolean","styleValue","getInvalidTypeMessage","assertProp","simpleCheckRE","functionTypeCheckRE","isSameType","Number","EXPLICABLE_TYPES","handleError","info","errorCaptured","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","mark","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","setImmediate","counter","textNode","cb","_resolve","initProxy","perf","clearMarks","clearMeasures","startTag","endTag","allowedGlobals","warnNonPresent","warnReservedPrefix","hasProxy","Proxy","isBuiltInModifier","hasHandler","isAllowed","$data","getHandler","render","_withStripped","_renderProxy","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","passive","once$$1","capture","createFnInvoker","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","preserve","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","lastIndex","_isVList","resolveInject","provideKey","_provided","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","renderList","renderSlot","fallbackRender","bindObject","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","markStatic","staticRenderFns","markOnce","markStaticNode","bindObjectListeners","existing","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_l","_t","_q","_m","_f","_k","_b","_v","_e","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","_compiled","needNormalization","listeners","injections","scopedSlots","_scopeId","_c","cloneAndMarkFunctionalResult","renderContext","devtoolsMeta","mergeProps","componentVNodeHooks","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","parentVnode","renderChildren","isUpdatingChildComponent","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","$vnode","_vnode","$attrs","$listeners","propKeys","_propKeys","oldListeners","_parentListeners","updateComponentListeners","$forceUpdate","updateChildComponent","_isMounted","callHook","_inactive","activatedChildren","activateChildComponent","deactivateChildComponent","$destroy","hooksToMerge","createComponent","baseCtor","errorComp","resolved","currentRenderingInstance","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","ensureCtor","component","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","transformModel","keyInLowerCase","extractPropsFromVNodeData","functional","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook$1","installComponentHooks","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","simpleNormalizeChildren","pre","applyNS","class","registerDeepBindings","_createElement","force","comp","__esModule","toStringTag","getFirstComponentChild","remove$1","$off","_target","onceHandler","setActiveInstance","prevActiveInstance","isInInactiveTree","direct","_directInactive","$children","_hasHookEvent","$emit","MAX_UPDATE_COUNT","circular","waiting","flushing","currentFlushTimestamp","getNow","createEvent","flushSchedulerQueue","watcher","user","activatedQueue","updatedQueue","callActivatedHooks","_watcher","callUpdatedHooks","emit","uid$2","Watcher","expOrFn","isRenderWatcher","_watchers","lazy","dirty","deps","newDeps","depIds","newDepIds","expression","path","segments","parsePath","cleanupDeps","queueWatcher","oldValue","evaluate","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","initState","propsOptions","isRoot","initProps","initMethods","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","uid$3","super","superOptions","modifiedOptions","latest","sealedOptions","resolveModifiedOptions","extendOptions","Vue","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","Comp","initProps$1","initComputed$1","mixin","use","getComponentName","pruneCache","keepAliveInstance","pruneCacheEntry","_uid","vnodeComponentOptions","initInternalComponent","_self","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","initProvide","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","i$1","cbs","lowerCaseEvent","eventsMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","ref","renderError","renderMixin","patternTypes","builtInComponents","KeepAlive","include","exclude","cacheVNode","vnodeToCache","keyToCache","created","destroyed","mounted","updated","configDef","util","defineReactive","delete","observable","plugin","installedPlugins","_installedPlugins","install","initUse","initMixin$1","definition","initAssetRegisters","initGlobalAPI","ssrContext","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","childNode","mergeClassData","staticClass","dynamicClass","stringifyClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","query","querySelector","nodeOps","tagName","multiple","createElementNS","newNode","referenceNode","setTextContent","setStyleScope","scopeId","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","isInPre","baseSetAttr","setAttributeNS","__ieph","blocker","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","chr","index$1","expressionPos","expressionEndPos","warn$1","klass","validDivisionCharRE","parseFilters","exp","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","lastFilterIndex","pushFilter","wrapFilter","baseWarn","range","pluckModuleFunction","modules","dynamic","rangeSetItem","plain","addAttr","dynamicAttrs","addRawAttr","attrsMap","attrsList","addDirective","isDynamicArg","prependModifierMarker","addHandler","important","prevent","middle","native","nativeEvents","newHandler","getRawBindingAttr","rawAttrsMap","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","removeFromMap","getAndRemoveAttrByRegex","genComponentModel","number","baseValueExpression","valueExpression","assignment","genAssignmentCode","lastIndexOf","eof","isStringStart","parseString","parseBracket","parseModel","inBracket","stringQuote","target$1","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","updateDOMListeners","change","normalizeEvents","svgContainer","updateDOMProps","oldProps","_value","strCur","shouldUpdateValue","checkVal","composing","notInFocus","isNotInFocusAndDirty","_vModifiers","isDirtyWithModifiers","parseStyleText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","cssVarRE","importantRE","setProp","normalizedName","normalize","vendorNames","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","classList","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","getTransitionInfo","propCount","ended","onEnd","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","checkDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","removeNode","isUnknownElement$$1","inVPre","ignore","creatingElmInVPre","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","checkDuplicateKeys","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","childElm","createRmCb","seenKeys","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","hydrationBailed","isRenderedModule","assertNodeMatch","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i$2","createPatchFunction","vmodel","directive","binding","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","o","hasNoMatchingOption","actuallySetSelected","isMultiple","initEvent","dispatchEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","transitionProps","mode","getRealChild","compOptions","extractTransitionData","placeholder","h","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","applyTranslation","oldPos","dx","dy","moved","transform","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","hasMove","_reflow","propertyName","_hasMove","HTMLUnknownElement","HTMLElement","updateComponent","template","mountComponent","defaultTagRE","regexEscapeRE","buildRegex","delimiters","close","parseText","tagRE","tokenValue","rawTokens","klass$1","staticKeys","transformNode","classBinding","genData","decoder","style$1","styleBinding","he","isUnaryTag","canBeLeftOpenTag","isNonPhrasingTag","attribute","dynamicArgAttribute","ncname","qnameCapture","startTagOpen","startTagClose","doctype","comment","conditionalComment","isPlainTextElement","reCache","decodingMap","encodedAttr","encodedAttrWithNewLines","isIgnoreNewlineTag","shouldIgnoreFirstNewline","decodeAttr","shouldDecodeNewlines","re","warn$2","transforms","preTransforms","postTransforms","platformIsPreTag","platformMustUseProp","platformGetTagNamespace","maybeComponent","onRE","dirRE","forAliasRE","forIteratorRE","stripParensRE","dynamicArgRE","argRE","bindRE","modifierRE","slotRE","lineBreakRE","whitespaceRE$1","invalidAttributeRE","decodeHTMLCached","emptySlotScopeToken","createASTElement","makeAttrsMap","isPreTag","currentParent","preserveWhitespace","whitespaceOption","inPre","warned","warnOnce","closeElement","element","trimEndingWhitespace","processed","processElement","if","elseif","else","checkRootConstraints","addIfCondition","block","forbidden","findPrevElement","slotScope","slotTarget","lastNode","lastTag","expectHTML","isUnaryTag$$1","canBeLeftOpenTag$$1","endTagLength","stackedTag","reStackedTag","rest$1","chars","parseEndTag","textEnd","commentEnd","shouldKeepComment","advance","conditionalEnd","doctypeMatch","endTagMatch","curIndex","startTagMatch","parseStartTag","handleStartTag","rest","unarySlash","unary","shouldDecodeNewlinesForHref","outputSourceRange","lowerCasedTag","lowerCasedTagName","comments","start$1","ieNSBug","ieNSPrefix","guardIESVGBug","reduce","cumulated","processPre","processRawAttrs","processFor","processIf","processOnce","end$1","for","iterator2","iterator1","processKey","checkInFor","processRef","slotTargetDynamic","slotBinding","getSlotName","slotBinding$1","ref$1","dynamic$1","slotContainer","processSlotContent","slotName","processComponent","syncGen","isDynamic","hasBindings","parseModifiers","camel","argMatch","checkForAliasModel","processAttrs","inMatch","alias","iteratorMatch","parseFor","condition","ifConditions","_el","cloneASTElement","modules$1","preTransformNode","typeBinding","ifCondition","ifConditionExtra","hasElse","elseIfCondition","branch0","branch1","branch2","isStaticKey","isPlatformReservedTag","baseOptions","_warn","genSelect","valueBinding","trueValueBinding","falseValueBinding","genCheckboxModel","genRadioModel","value$1","needCompositionGuard","genDefaultModel","genStaticKeys","genStaticKeysCached","optimize","markStatic$1","markStaticRoots","static","isDirectChildOfTemplateFor","l$1","staticInFor","staticRoot","fnExpRE","fnInvokeRE","simplePathRE","esc","tab","space","up","down","keyNames","genGuard","modifierCode","ctrl","alt","meta","genHandlers","staticHandlers","dynamicHandlers","handlerCode","genHandler","isMethodPath","isFunctionExpression","isFunctionInvocation","genModifierCode","keyModifier","genFilterCode","genKeyFilter","keyVal","keyName","baseDirectives","wrapListeners","wrapData","cloak","CodegenState","dataGenFns","onceId","generate","ast","genElement","staticProcessed","genStatic","onceProcessed","genOnce","forProcessed","genFor","ifProcessed","genIf","genChildren","genProps","bind$$1","genSlot","componentName","genData$2","genComponent","originalPreState","altGen","altEmpty","genIfConditions","conditions","genTernaryExp","altHelper","needRuntime","hasRuntime","gen","genDirectives","containsSlotChild","needsKey","generatedSlots","genScopedSlot","inlineRenderFns","genInlineTemplate","isLegacySyntax","reverseProxy","checkSkip","altGenElement","altGenNode","el$1","normalizationType$1","needsNormalization","getNormalizationType","genNode","genComment","transformSpecialNewlines","genText","staticProps","dynamicProps","prohibitedKeywordRE","unaryOperatorsRE","stripStringRE","detectErrors","checkNode","checkFor","checkFunctionParameterExpression","checkEvent","checkExpression","stripped","keywordMatch","checkIdentifier","ident","repeat$1","createFunction","errors","createCompileToFunctionFn","warn$$1","lines","lineLength","pad","length$1","generateCodeFrame","tips","fnGenErrors","baseCompile","finalOptions","leadingSpaceLength","compileToFunctions","getShouldDecode","idToTemplate","mount","outerHTML","getOuterHTML","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","globalThis","Logger","isDebug","devUrl","optionalParams","log","debug","constProcCd","constDialogMessage","verify","TransErrorPage","errorPage","post","textStatus","errorThrown","postform","withCredentials","getForCCLoginCheck","postForCCSessions","jwt","postforblob","postforblob_get","New","Saved","SaveErrorPosca","SaveErrorCC","InCart","InCartErrorPosca","InCartErrorCC","InCartDuplicateCC","ConfirmOrder","ConfirmOrderError","Composing","Done","Cancel","CompError","INFO_SAVE_FINISHED","INFO_ATENA_ORDER_STOP","ERROR_SYSTEM","ERROR_IMAGE","ERROR_DELETE_IMAGE","ERROR_SERVER_ACCESS_TEXT","ERROR_SERVICE_STOPPED_TEXT","ERROR_FILE_NG_TEXT","ERROR_IMAGE_FORMAT_TEXT","ERROR_SESSION_TIME_OUT_TRY_AGAIN_TEXT","ERROR_EDIT_DATA_OVER_MAX_TEXT","INFO_HAVE_NOT_SAVE_IMAGE_TEXT","ERROR_DESIGN_EXPIRED_TEXT","ERROR_DESIGN_PRINTTYPE_INDVALID_TEXT","ERROR_DESIGN_PRINTTYPE_ORDER_STOP_TEXT","ERROR_DESIGN_PRINTTYPE_INSATSU_STOP_TEXT","ERROR_DESIGN_PRINTTYPE_GINEN_STOP_TEXT","ERROR_DESIGN_PRINTTYPE_INSATSU_STOP_TEXT_ADDORDER","ERROR_DESIGN_PRINTTYPE_GINEN_STOP_TEXT_ADDORDER","ERROR_DESIGN_PRINTTYPE_ORDER_STOP_TEXT_KITAMURA","ERROR_DESIGN_PRINTTYPE_INSATSU_STOP_TEXT_KITAMURA","ERROR_DESIGN_PRINTTYPE_GINEN_STOP_TEXT_KITAMURA","ERROR_DESIGN_PRINTTYPE_INSATSU_STOP_TEXT_ADDORDER_KITAMURA","ERROR_DESIGN_PRINTTYPE_GINEN_STOP_TEXT_ADDORDER_KITAMURA","ERROR_DATA_EXPIRED_TEXT","ERROR_SENDER_INFO_REGIST_TEXT","ERROR_DESIGN_FRAME_EXPIRED_TEXT","ERROR_SERVICE_PAUSE_TEXT","ERROR_IMAGE_UPLOAD_OVER_MAX_TEXT","ERROR_IMAGE_NOT_AVAILABLE_TEXT","ERROR_IMAGE_CHECKSUM_TEXT","ERROR_IMAGE_ANALYZER_BASE_TEXT","ERROR_TRIAL_RETAILER_INVALID","ERROR_TRIAL_DESIGN_INVALID","ERROR_GET_PREVIEW_TEXT","ERROR_CC_LOGIN_WITH_GIGYA","ERROR_CC_LOGIN_CHECK","ERROR_GIGYA_SIGNATURE_INVALID","ERROR_GIGYA_ERROR","ERROR_GIGYA_LOGIN","ERROR_OCAPI_LOGIN","ERROR_SAVE_DATA","ERROR_LOGIN","ERROR_LOGIN_CHECK","ERROR_LOGIN_SESSION_TIMEOUT","ERROR_GET_SAVETOKEN","ERROR_GET_CARTTOKEN","ERROR_CHECK_SAVE","ERROR_SAVE","ERROR_ADD_CART_CHECK_DUPLICATE","ERROR_ADD_CART_CHECK","ERROR_TRANS_ATENA","ERROR_LOCAL_DB_READ","ERROR_LOCAL_DB_WRITE","ERROR_LOCAL_DB_CONNECT","ERROR_HAGAKI_SELECT","ERROR_HAGAKINUM_VALIDATION_RANGE","ERROR_HAGAKINUM_VALIDATION_CHARACTER","ERROR_ADDORDER_ORDER_NONE","WARNING_PHOTO_LIMIT","WARNING_MULTITAB_FORBIDDEN","INFO_EDIT_NEXTPAGE_CHECK","INFO_EDIT_DEL_PHOTO_CHECK","INFO_EDIT_EXISTS_WILDCARDCHAR","INFO_EDIT_EXISTS_WILDCARDCHAR2","ERROR_EDIT_CHANGE_MODE","ERROR_EDIT_DEL_PHOTO","ERROR_EDIT_SWAP_PHOTO","ERROR_EDIT_DL_PHOTO_THUMBNAIL","ERROR_EDIT_CREATE_GREETING","ERROR_EDIT_CREATE_SENDER","ERROR_EDIT_DEL_SENDER","ERROR_EDIT_CREATE_STAMP","ERROR_EDIT_DEL_STAMP","ERROR_EDIT_ROLLBACK","ERROR_EDIT_EDIT_CLEAR","ERROR_EDIT_REMOVE_PHOTO","ERROR_EDIT_MOVE_PHOTO","ERROR_EDIT_SCALEUP_PHOTO","ERROR_EDIT_SCALEDOWN_PHOTO","ERROR_EDIT_ROTATE_PHOTO","ERROR_EDIT_SET_PHOTO","ERROR_EDIT_CREATE_MYSTAMP","ERROR_EDIT_DEL_MYSTAMP","ERROR_EDIT_CREATE_TEGAKISTAMP","ERROR_EDIT_DEL_TEGAKISTAMP","ERROR_EDIT_CHANGE_TEGAKISTAMP","ERROR_EDIT_CHECKUPLOADIMAGES","WARN_EDIT_PHOTO_FORMAT_CHECK","WARN_EDIT_PHOTO_SIZE_CHECK","WARN_EDIT_NOSEL_GREETING_SAMPLE","WARN_EDIT_GREETING_MAX_NUM","WARN_EDIT_INPUT_CHECK","WARN_EDIT_INPUT_CHECK_FONTSIZE","WARN_EDIT_FORMAT_CHECK_FONTSIZE","WARN_EDIT_INPUT_CHECK_CHARCOLOR","WARN_EDIT_INPUT_CHECK_OUTCHARCOLOR","WARN_EDIT_INPUT_CHECK_TEXT","WARN_EDIT_CHECK_GREETINGTEXT","WARN_EDIT_CHECK_FREESENDERTEXT","WARN_EDIT_INPUT_CHECK_SENDERTEXT","WARN_EDIT_CHARNUM_CHECK_SENDERTEXT","WARN_EDIT_FORMAT_CHECK_ZIP1","WARN_EDIT_FORMAT_CHECK_ZIP2","WARN_EDIT_FORMAT_CHECK_ADDRESS","WARN_EDIT_FORMAT_CHECK_TEL","WARN_EDIT_FORMAT_CHECK_LEN_TEL1","WARN_EDIT_FORMAT_CHECK_LEN_TEL2","WARN_EDIT_FORMAT_CHECK_LEN_TEL3","WARN_EDIT_FORMAT_CHECK_NAME","WARN_EDIT_FORMAT_CHECK_RUBI","WARN_EDIT_FORMAT_CHECK_PS","WARN_EDIT_FORMAT_CHECK_TITLE","WARN_EDIT_FORMAT_CHECK_EMAIL","WARN_EDIT_FORMAT_CHECK_CORPNAME","WARN_EDIT_FORMAT_CHECK_CORPBUSYO","WARN_EDIT_EMPTY_CHECK","WARN_EDIT_RELATION_CHECK","WARN_EDIT_HALF_NUMBER_CHECK","WARN_EDIT_BASE","WARN_EDIT_CHECKUPLOADIMAGES","WARN_EDIT_CHECK_SONBP_UPLOADIMAGES_DIFF","WARN_EDIT_CHECK_SONBP_UPLOADMYSTAMPS_DIFF","WARN_EDIT_CHECK_SONBP_UPLOADTEGAKISTAMPS_DIFF","WARN_GAIJI_NOT_SUPPORT_FONT","isEmpty","isNotEmpty","getStringByte","isLengthZero","isNotLengthZero","validNumber","validHankakuChar","validStringLen","maxLen","targetLen","validSpaceAll","rt","txt","validFontSize","fontSize","msgList","ui","idb","windowOpen","features","tabOpen","postRedirect","action","form","usePcDesign","isWebView","isiOS","ua","isAndroid","isEnabledAdjustApp","ngBrowser","_db","editStore","orderStore","masterStore","initiDB","rej","oprenreq","indexedDB","onupgradeneeded","createObjectStore","keyPath","onsuccess","objectStoreNames","allowNull","req","transaction","objectStore","wantUpd","store","put","dialogUtil","relic","DialogType","closeCheckSaveDialog","closeOCAPI","closeLoading","createErrorDialog","noBtn","isPC","dialogParent","section","header","h1","divP","divIcon","Warning","None","footer","buttonOK","closeErrorDialog","createYesNoDialog","yesFunc","noFunc","yesCapton","noCapton","buttonNO","buttonYES","closeYesNoDialog","createCheckSaveDialog","DlgName","divM","createSaveDialog","div1","div2","dl","dt","dd","buttonCancel","keyup","closeSaveDialog","createSelectSaveMethodDialog","overRideFunc","otherNameFunc","divH","dlgMsg","divXbutton","label","closeSelectSaveMethodDialog","createCautionSelectSaveMethodDialog","isEdit","isLogined","nopFunc","buttonNOP","closeCautionSelectSaveMethodDialog","createSaveDoneDialog","saveAs","saveDate","expireDate","h3","span","Content","contentDiv","dd1","dd2","showLoading","showOCAPIDialog","conf","loginid","pass","loginId","regist","forgotPassword","showLoginFailedMessageOCAPI","showMyStampHowToDlg","usePc","okFunc","cancelFunc","headerMsg","divMes","divMesHead","divImg","divMesFoot","divMesFoot2","checkdiv","checkNext","checkLabel","buttonCANCEL","closeMyStampHowToDialog","showTegakiStampHowToDlg","dlg","closeFnc","btn","chk","showGuidance1Dlg","guidanceImgSrcList","showGuidance2Dlg","closeGuidanceDlg","showGuidance3Dlg","showGuidance4Dlg","showGuidance5Dlg","listFind","chkFunc","dupli","lstorage","photo","KEY_EDIT","KEY_ORDER","KEY_MASTER","KEY_GETPARAM","KEY_BUSINESS","valTmp","localStorage","setItem","getVal","getItem","removeItem","eventID","_logic","_token","_eventID","isTarget","logicFactory","logicExec","adjustiOSLogic","adjustAndroidLogic","WebViewJavascriptBridge","WVJBCallbacks","WVJBIframe","setupWebViewJavascriptBridge","bridge","environment","AdjustConfig","EnvironmentSandbox","EnvironmentProduction","adjustConfig","Adjust","appDidLaunch","adjustEvent","AdjustEvent","trackEvent","adjustLogicBase","onCreate","common","WebAPI_SendSaveData","WebAPI_OcapiLogin","WebAPI_GIGYALogin","WebAPI_LoginCheck","WebAPI_UpdateStatus","pleaseQuiet","SaveData","editInfo","orderInfo","customFunc","retailerId","LoginCheck","isLogin","ShowGIGYALogin","SaveToCommersCloud","ShowOcapiAndLogin","_retailerConf","extrSettings","ocapi","rs","loginOCAPI","ocapiClientId","CallOcapiSessions","webkit","messageHandlers","gigyaJsCallback","gigya","accounts","showScreenSet","screenSet","authFlow","onLogin_Complete_App","UID","UIDSignature","signatureTimestamp","locationNowSplit1","pageName","toLocaleLowerCase","auth","AddController","getAuthToken","signature","sigtimestamp","commersCloud","gigyaCcBridge","doOnload","AtenaController","afterGIGYACallback","tkn","closeFunc","saveAsIdb","GetSaveAs","DoSaveOverRide","DoSave","saveOK","ShowSaveAsDialog","PleaseReLogin","UpdateSaveName","DoSaveBusiness","retBus","UpdateProcCd","CheckSaveDataCC","commersCloudInfo","saveToken","saveCheckURL","checkFlag","SaveDataCC","saveURL","f","ocapiLoginCheckURL","isLogind","einf","oinf","ccToken","CheckAddCartCC","AddCartCC","GetCartToken","clientId","Req","reqStr","ocapiSessionsURL","procCd","InitTemp","GetEditInfo","ei","SetRetailerSetting","InitReturn","master","design","isExpire","orderHistory","tempId","printType","dsnNo","photoList","fileId","deleteFlg","fileName","uploadFileName","uploadDate","isUsed","photoUseList","photoUse","useI2","isUseI2","brightId","svp","sonbpVp","y","angle","greetingInfo","greeting","greetingNo","fontId","font","size","colorId","color","outlineColor","align","direction","stampInfo","stamp","stampId","myStampList","myStamp","myStampUseList","myStampUse","uploadStampUseInfo","fontgenicList","fontgenic","fontgenicUseList","fontgenicUse","oi","postcardType","orderNum","mi","masterInfo","hagakiMasterInfo","hagaki","SaveDataForceForCart","isTrial","cartFunc","AddCart","editFlg","cartTokens","cartURL","ccCheckRs","cartToken","cartCheckURL","addCart","AdjustRecord","adjust","editEnd","er","cartAddURL","GIGYAError","UpdateCustomerId","CustomerId","customerId","onLoginHandlerWithSave","LoginCheckCC","LoginCheckPosca","getTimeStamp","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","setGetParam","prm","kv","getParam","tmpKey","designNo","trial","returnUrl","saveId","saveId2","addOrder","cart_line_key","getGetParam","gparam","hatenaOrAnd","CommonFunc","_editId","_backUrl","_loginFlg","_vue","editId","backUrl","loginFlg","vue","_retailerConfig","retailerConfig","_usePcDesign","getIsReturn","getIsPC","getIsEdit","getIsAddOrder","SetErrorPageInfo","returnTop","btnClickReturnTop","getInfo","decodeURIComponent","btnClickFaq","faq","preview","btnClickOrderHistory","ELEMENT_NAME","initRetailer","CopyrightText","_copyrightText","UserRuleCaption","_userRuleCaption","PersonalInfoCaption","_personalInfoCaption","PrivacyPolicyCaption","_privacyPolicyCaption","UseEnvelopCaption","_useEnvelopCaption","SeparatorCaption","_separatorCaption","EnableCopyright","_enableCopyright","EnableUserRule","_enableUserRule","EnablePersonalInfo","_enablePersonalInfo","EnablePrivacyPolicy","_enablePrivacyPolicy","EnableUseEnvelop","_enableUseEnvelop","linkClickUserRule","linkClickPersonalInfo","linkClickPrivacyPolicy","linkClickUseEnvelop","copyright","tos","personalInfo","privacyPolicy","useEnvelop","btnClickReturnFlow","btnClickNextFlow","baseVueController","Functions","True","Blank","Types","funcCache","Utils","createLambda","regexp","maxLength","paramNumber","argArray","dollar","isIEnumerable","methodName","dispose","hasNativeIteratorSupport","IEnumerator","initialize","tryGetNext","yielder","Yielder","moveNext","yieldReturn","yieldBreak","Enumerable","getEnumerator","createEnumerable","createEnumerator","extendTo","enumerableProto","typeProto","ArrayEnumerable","recallFrom","getSource","choice","cycle","isFirst","atEnd","Windows","make","flags","regex","rangeDown","rangeTo","take","repeatWithFinalize","initializer","finalizer","toInfinity","toNegativeInfinity","unfold","enumerableFactory","traverseBreadthFirst","resultSelector","nestLevel","selectMany","any","traverseDepthFirst","enumeratorStack","flatten","middleEnumerator","pairwise","scan","isUseSeed","WhereSelectEnumerable","collectionSelector","middleSeq","where","predicate","WhereEnumerable","choose","typeName","zip","firstEnumerator","secondEnumerator","enumerators","takeExceptLast","inner","outerKeySelector","innerKeySelector","compareSelector","outerEnumerator","lookup","innerElements","innerCount","toLookup","innerElement","groupJoin","isEnumerated","alternate","alternateValueOrSequence","alternateSequence","alternateEnumerator","retVal","defaultIfEmpty","distinct","except","distinctUntilChanged","compareKey","Dictionary","intersect","outs","sequenceEqual","union","orderBy","keySelector","comparer","OrderedEnumerable","orderByDescending","shuffle","weightedSample","weightSelector","sortedByBound","totalWeight","weight","bound","draw","lower","upper","groupBy","elementSelector","toEnumerable","partitionBy","hasResultSelector","group","Grouping","hasNext","aggregate","average","sum","maxBy","minBy","elementAt","found","elementAtOrDefault","firstOrDefault","lastOrDefault","single","singleOrDefault","skipWhile","isSkipEnd","takeWhile","q","takeFromLast","sourceEnumerator","asEnumerable","dict","Lookup","toDictionary","toJSONString","replacer","toJoinedString","separator","doAction","write","writeLine","writeln","letBind","share","sharedEnumerator","disposed","DisposableEnumerable","memoize","catchError","finallyAction","descending","createOrderedEnumerable","thenBy","thenByDescending","indexes","sortContext","SortContext","GenerateKeys","orderedEnumerable","currentContext","index1","index2","comparison","prevSource","prevPredicate","prevSelector","callHasOwnProperty","computeHashCode","HashEntry","EntryList","addLast","newEntry","countField","entryList","buckets","currentEntry","dictionary","kvp","groupKey","MultiTab","ITYPE_PHOTO_BOX","ITYPE_STAMP_IMG","ITYPE_MYSTAMP_IMG","ITYPE_FONTGENIC_IMG","ITYPE_GREETING_TXT","ITYPE_SENDER_TXT","isUsedAlready","INTERVAL","TAB_ID","forbiddenMultiTab","tabid","SESSION_TAB_ID","sessionStorage","LOCAL_TAB_ID","isOldTab","EditConst","EDIT_MODE_KIND","KUMIHAN_HV","CHAR_LAYOUT_Y","CHAR_LAYOUT_T","CHAR_LAYOUT_CY","ALIGN_Y_LEFT","ALIGN_Y_CENTER","ALIGN_Y_RIGHT","ALIGN_T_TOP","ALIGN_T_MIDDLE","ALIGN_T_BOTTOM","CONTACT_TEL_DISP","CONTACT_CELLULAR_DISP","CONTACT_FAX_DISP","CONTACT_TEL_FAX_DISP","CONTACT_TEL_VAL","CONTACT_CELLULAR_VAL","CONTACT_FAX_VAL","CONTACT_TEL_FAX_VAL","DSN_MST_EDIT_MODE_OFF","DSN_MST_EDIT_MODE_LIMIT","PHOTO_CORRECT_CAPTION_PC_OFF","PHOTO_CORRECT_CAPTION_PC_ON","PHOTO_CORRECT_CAPTION_SP_OFF","PHOTO_CORRECT_CAPTION_SP_ON","SENDER_TYPE_PORSONAL","SENDER_TYPE_PORSONAL_STR","SENDER_TYPE_CORP","SENDER_TYPE_CORP_STR","SENDER_TYPE_FREE","SENDER_TYPE_FREE_STR","FONT_SIZE_DEFAULT_T","FONT_SIZE_DEFAULT_Y","FONT_SIZE_MIN","FONT_SIZE_MAX","FONT_SIZE_STEP","PRINT_TYPE_PRINT","PRINT_TYPE_GINEN","PRINT_TYPE_BOTH","DIRECTION_T","DIRECTION_Y","DIRECTION_CY","ALIGN_9","ALIGN_8","ALIGN_7","ALIGN_6","ALIGN_3","NENGA","MOCYU","KANCYU","TSUNEN","GREETING_DEFAULT_WIDTH","GREETING_DEFAULT_HEIGHT","LAYOUTCD_HOJIN_T","LAYOUTCD_HOJIN_Y","LAYOUTCD_HOJIN_CY","LAYOUTCD_PERSONAL_T","LAYOUTCD_PERSONAL_Y","LAYOUTCD_PERSONAL_CY","NEXTPAGE_CONFIRM_YES","NEXTPAGE_CONFIRM_NO","GREETING_SAMPLE_WILDCARD","GREETING_SAMPLE_WILDCARD2","NEXTPAGE_NAME","IMG_SELECTED","IMG_NOSELECT","TITLE_MAIN","TITLE_IMAGELIST","TITLE_MANIPHOTO","TITLE_SWAPPHOTO","TITLE_GREETING","TITLE_GREETING_EDIT","TITLE_SENDER","TITLE_SENDER_EDIT","TITLE_STAMP","TITLE_STAMP_EDIT","TITLE_MYSTAMP","TITLE_MYSTAMP_EDIT","TITLE_TEGAKISTAMP","TITLE_TEGAKISTAMP_EDIT","TITLE_TEGAKISTAMP_COLOR","TITLE_CHANGE_BRIGHT","SENDER_APPLY_BTN_ADD","SENDER_APPLY_BTN_UPD","HIDE_AREA_FADE_IN","HIDE_AREA_FADE_OUT","GUIDANCE_SHOW_TIMEOUT","SESSION_STORAGE_KEY_RELOADED","SESSION_STORAGE_FROM_PREV","SENDER_ITEM_NAME_ZIP","SENDER_ITEM_NAME_ZIP1","SENDER_ITEM_NAME_ZIP2","SENDER_ITEM_CAPTION_ADDRESS1","SENDER_ITEM_CAPTION_ADDRESS2","SENDER_ITEM_CAPTION_ADDRESS3","SENDER_ITEM_CAPTION_NAME","SENDER_ITEM_CAPTION_LNAME","SENDER_ITEM_CAPTION_FNAME","SENDER_ITEM_CAPTION_LRUBI","SENDER_ITEM_CAPTION_FRUBI","SENDER_ITEM_CAPTION_PS","SENDER_ITEM_CAPTION_TITLE","SENDER_ITEM_CAPTION_TEL1","SENDER_ITEM_CAPTION_TEL2","SENDER_ITEM_CAPTION_TEL1_1","SENDER_ITEM_CAPTION_TEL1_2","SENDER_ITEM_CAPTION_TEL1_3","SENDER_ITEM_CAPTION_TEL2_1","SENDER_ITEM_CAPTION_TEL2_2","SENDER_ITEM_CAPTION_TEL2_3","SENDER_ITEM_CAPTION_EMAIL1","SENDER_ITEM_CAPTION_EMAIL2","SENDER_ITEM_CAPTION_COMPANY","SENDER_ITEM_CAPTION_DEPARTMENT","SENDER_MAXLEN_FREE","SENDER_MAXLEN_JUSHO","SENDER_MAXLEN_LASTNAME","SENDER_MAXLEN_FIRSTNAME","SENDER_MAXLEN_RUBI","SENDER_MAXLEN_PS","SENDER_MAXLEN_COMPANY","SENDER_MAXLEN_DEPARTMENT","SENDER_MAXLEN_TITLE","SENDER_MAXLEN_ZIP1","SENDER_MAXLEN_ZIP2","SENDER_MAXLEN_TEL1","SENDER_MAXLEN_TEL2","SENDER_MAXLEN_TEL3","SENDER_MAXLEN_EMAIL","GREETING_MAXLEN","GREETING_VERT_CONV","GREETING_VERT_NO_CONV","KITAMURA","IMAGE_GUIDANCE_MESSAGE_GINEN","IMAGE_GUIDANCE_MESSAGE_INSATSU","editStrage","directionToCharlayout","directionToHv","charlayoutToDirection","charlayout","alignToAlignDispVal","charLayout","align2Pivot","hv","pivot","pivot2Align","telTypeToTelDispVal","telType","calcCheckSum","spark","reader","FileReader","blobSlice","File","chunkSize","chunks","currentChunk","loadNext","readAsArrayBuffer","md5","asyncWhenApply","promises","initStorage","leavePhoto","prePagePreview","browserReload","setEditInfo","readEditInfo","writeStorage","writeStorageToPhoto","setPhotoList","writeStorageToMyStamp","setMyStampList","writeStorageToTegakiStamp","setTegakiStampList","readStorageForEditInfo","editmystampSdkCallbackA","editmystampSdkCallbackB","editmystampSdkIFrame","thumbnailUrl","fileKey","reqDelete","createDef","senderMaster","fontMaster","colorMaster","newItem","senderTranEntityEx","outlineChar","fontColorMaster","outlineFontColorMaster","Tel1DispVal","Tel2DispVal","sender","senderInfo","addresses","corps","names","emails","free","staff","isHojin","defAddress","topstr","yubin1","yubin2","jusho1","jusho2","jusho3","telType1","telTopStr1","telNo1_1","telNo1_2","telNo1_3","telEndStr1","telType2","telTopStr2","telNo2_1","telNo2_2","telNo2_3","telEndStr2","defCorp","maekabu","busyo","defNames","title","firstName","firstRubi","lastName","lastRubi","ps","defEmail","address","endstr","kumihanUrl","WEBAPI_URL_GREETING","WEBAPI_URL_SENDER","doKumihanGreeting","inputParam","session","valueOf","msize","widthKumi","heightKumi","ftype","color1","color2","vertGreetConvType","payload","resData","doKumihanSender","layout_cd","adr1_topstr","adr1_post1","adr1_post2","adr1_adr1","adr1_adr2","adr1_adr3","adr1_teltype1","adr1_teltopstr1","adr1_telno1","adr1_telno11","adr1_telno12","adr1_telno13","adr1_telendstr1","adr1_teltype2","adr1_teltopstr2","adr1_telno2","adr1_telno21","adr1_telno22","adr1_telno23","adr1_telendstr2","adr1_teltype3","adr1_teltopstr3","adr1_telno3","adr1_telno31","adr1_telno32","adr1_telno33","adr1_telendstr3","corp1_maekabu","corp1_name","corp1_busyo","name1_title","name1_fname","name1_lname","name1_ps","name1_fruby","name1_lruby","name2_title","name2_fname","name2_lname","name2_ps","name2_fruby","name2_lruby","name3_title","name3_fname","name3_lname","name3_ps","name3_fruby","name3_lruby","name4_title","name4_fname","name4_lname","name4_ps","name4_fruby","name4_lruby","name5_title","name5_fname","name5_lname","name5_ps","name5_fruby","name5_lruby","name6_title","name6_fname","name6_lname","name6_ps","name6_fruby","name6_lruby","eh1_topstr","eh1_mailtype","eh1_adr","eh1_endstr","eh2_topstr","eh2_mailtype","eh2_adr","eh2_endstr","kumihanRequestParam","CANVAS_DIV_ID","MOVE_ITEM_AMOUNT_DEFAULT","EMPTY_PHOTOBOX_FILE_ID","GREETING_SET_MODE_NEW","GREETING_SET_MODE_UPD","SONBP_URI_PREFIX","POSCA_VIRTUAL_DIR","SONBP_CLIENT_PC","SONBP_CLIENT_SP","sonbpIf","SonbpIf","SonbpIfClass","enablePhotobox","enableSender","editMode","greetingList","photoFrameList","existsPhotoBox","authToken","pdfPageSizeWidth","pdfPageSizeHeight","greetingDesign","senderDesign","putRange","putRangeStamp","defaultFontColor","colorMasterList","designMaster","_onChangeInit","vps","setOnChangeInitFunc","pageAreaOffset","setOption","put_range","put_range_stamp","page_offset","sonbpClient","getFirstItem","itemtype","vp","item_type","sonbpInit","onChangeSelectItem","Show","OparatePalletCover","EnablePhotoCorrect","EnablePitaCorrect","PhotoCorrectCaption","IsImageAutoFilter","IsImagePita","isBrightDownDisabled","isBrightUpDisabled","OparatePalletBrightCover","file_id","targetFrame","pf","waku_pita","fileIdSplit","PhotoBright","EnableOnChangeForGreeting","onChangeGreetingSelectItem","OparatePalletCover4Top","OparatePalletCover4Bottom","EnableOnChangeForSender","setSenderOrder","SelectTegakiColor","colorNo","SwapItemMenu","SwatpItem","doSwap","FromItem","ToItem","mutualTradePhoto","MessageArea","EditImageMenu","SetPhotoMenu","ReturnFlowBtn","ReturnHomeFromSwapItemBtn","Header","Title","EditArea","FooterMenu","ReturnHomeBtn","ReturnHomeExBtn","NextFlowBtn","NextHomeFromImgListBtn","NextHomeFromMyStampListBtn","NextHomeFromTegakiStampListBtn","PhotoDeleteBtn","MySTampDeleteBtn","TegakiStampListTrashBtn","EnableUploadListTrashOK","PhotoList","onExhangePhtoItem","pfA","PhotoFrameList","waku","pfB","fileId_","useI2_","brightId_","onApiError","responseCode","sonbpStart","pageSize","getPageSize","layers","getLayers","layer_type","def_posi","getItems","firstPhotoBox","selPhotoFrame","ph","idParts","firstSender","firstGreeting","firstComment","setMode","selectItem","errFunc","selGreeting","GreetingInfo","FontSize","Font","FontSample","CharLayout","AlignY","alignDispVal","ShowAlignY","AlignT","OutlineFont","GreetingText","SelectCharColor","SelectOutlineCharColor","Text","callbackOk","callbackNg","createPhotoFileKey","toCorrect","bright","correctVal","encCreateDate","resizeContents","pageAreaSize","setPhoto","fromCorrectEvent","imgSize","removePhotoById","fileIds","removeMyStampById","removeStampById","removeTegakiStampById","removePhotoByCurrent","removePhoto","getPhotoList","itemType","getSelectItem","setPhotoWakuPita","doPita","setSelectFirstItem","callUnSel","getItmType","rotateItem","deg","scaleItem","moveItem","moveUpItem","moveDownItem","moveRightItem","moveLeftItem","selectItemClear","setText","isSetModeNew","reqParam","muki","sonbp","c2d","chgNum","constant","MM","PT","removeText","getTextList","targetList","getGreetingTextList","callbackNext","getSenderTextList","setGreetingText","hasNoDesignMst","useDefpos","setSenderText","setOrder","restoreGreetingList","restoreFromIdb","idbGreetingList","restoreSenderInfo","senderDb","setAreaView","area_type","save","SenderInfo","Setting","NormalInput","PersonalUse","CharLayoutEx","getCharLayout","layout","fontSizeDefault","ShowSenderAlignY","FreeInput","IsNormalInput","ZipCode1","ZipCode2","Address1","Address2","Address3","Contact","Type","Tel1","Tel2","Tel3","Email","Mail1","Mail2","Names","LastName","LastNameKana","FirstName","FirstNameKana","PS","Company","Name","Department","Position","Format","layoutCd","isFree","createStampFileKey","createMyStampFileKey","setStamp","stampMaster","img_size","setMyStamp","setTegakiStamp","fileIdWidthAtmark","setStampByFontGenic","removeStampByCurrent","removeStamp","getAllStampList","getStampList","getMstStampList","getMyStampList","getTegakiStampList","idxA","idxB","historyStart","historyCommit","historyAllUndo","onDragStartPhoto","imgElement","Image","setPhotoDragger","edctrl","_edctrl","sonbpIfController","_authToken","setShowFlgAllOFF","BalloonGuidance","OparatePallet","GreetingPanel","SenderPanel","StampPanel","MyStampPanel","TegakiStampPanel","ActiveSetPhotoMenu","ActiveManiPhotoMenu","ActiveGreetingMenu","ActiveSenderMenu","ActiveStampMenu","ActiveMyStampMenu","ActiveTegakiStampMenu","ActiveFinishSelectMenu","ReturnStampHomeBtn","ReturnMyStampHomeBtn","ReturnTegakiStampHomeBtn","CommitNextHomeBtn","StampDeleteBtn","MyStampListTrashBtn","TegakiColorPanel","MyStampList","TegakiStampList","SetMyStampMenu","_uploadPhotoList","_photoLogic","_uploadImageList","_uploadMyStampList","_myStampLogic","_uploadTegakiStampList","_tegakiStampLogic","btnClickRotate90","rotateRight","setDeg","btnClickRotate1","btnClickScale","scaleUp","setScale","btnClickMove","whichMove","btnClickStampDelete","stampList","Stamp","DelBtnEnable","row","usedFlg","upimg","BaseLogicClass","btnClickEditStampItem","touchEventChange","setStampEditMode","returnStampHomeBtn","VIEW_ITEM_TYPE","btnClickReturnHome","VIEW_TITLE","setModeOparatePalletForSp","VIEW_MODE","UseCount","uploadList","_isPhotoFlg","restoreUoloadList","isFromIdb","idbList","editInfoList","rowIdx","ulp","uploadPhoto","fileNameKey","deleteDate","UploadNumMax","btnClickUploadListTrashOK","removeIds","getRemoveTargetIds","requestRemove","Infomation","imgClickUploadImage","imgClickUploadImagePc","imgClickUploadImageSp","onChangeUploadFileObj","files","fileList","NotEmptyUploadNum","validMsgList","validFileList","resultMsg","uploadFileValid","FirstGuidance","uploadImageFileCover","messageList","messageListTop5","getTop5Message","UploadListModeSelect","PUT_MAX","setImageBody","enableUploadListImageTrashOK","imgClickUploadListImageCoverPc","btnClickUploadListTrashPc","btnClickUploadListTrashCancelPc","btnClickUploadListMystampEditCancelPc","selImage","targetSelected","otherSelected","btnClickNextFromUploadImageListSp","selPhoto","setSaveUploadInfo","setUploadList","afterRemove","delNum","nextKey","commonSetStampBody","targetPhoto","okNextFunc","idxTmp","callSonbpIfSetStamp","targetId","getThumbnail","fileObject","setIdx","WEBAPI_URL_GETTHUMBNAIL","setImgSrc","imgSrcIdx","thumnail","readAsDataURL","reqDels","normalErr","fatalErr","uploadResult","uploadImageFileBody","argDetails","resEntity","fatalErrMsg","RetailerConfig","uploadImageFile","fd","FormData","commonUploadImageFileSend","WEBAPI_URL_UPLOADIMAGE","fatalResponse","BaseStampLogicClass","UPLOAD_IMAGE_NUM_MAX","WEBAPI_URL_CHANGEBRIGHT","ScreenCtrl","photoUlFileNumMax","restoreUoloadPhotoList","idbEditInfo","btnClickStampMenu","btnClickSetPhotoMenu","selectedItemVp","setModeOparatePallet","btnClickManiPhotoMenu","ImgGuidance","updPhotoCorrectCaption","btnClickFinishSelect","doGinen","FinishSelect","isGinen","btnClickPhotoCorrect","isUseI2ON","pureFileId","vpFileId","btnClickPitaCorrect","btnClickEditClear","btnClickRemovePhoto","UploadPhotoList","allowNextPage","allow","EnableNextPageBtn","btnClickManiChangeBright","OparatePalletChangeBright","btnClickChangeBright","brightNum","changePhotoBright","vpList","btnClickImageListMenu","btnClickSwapItemMenu","doStwapStart","btnClickEditImagePitaMenu","EditImagePitaMenu","returnPhotoManiBtn","ReturnPhotoManiBtn","useItems","delListIds","nextFun","emptyPhotoFrames","photoUlFileSizeMax","UploadImageLogicClass","SSO","HideLabel","MyStamp","fade","In","Out","btnClickUploadMyStamp","ConfirmMyStampCheckbox","imgClickUploadImageForMystampEditPc","btnClickUploadMyStampEdit","btnClickMyStampEditSp","editMystampStart","IsShowIframePanel","cbOK","cbCancel","editmystampCallbackAfter","newFileKey","pathname","imgClickUploadImageForMystampSelectedPc","MystampFileIdSelected","WEBAPI_URL_CHANGETEGAKICOLOR","TegakiStamp","btnClickUploadTegakiStamp","ConfirmTegakiStampCheckbox","fontgenicStart","radioClickTegakiColorPc","changeTegakiStampColor","btnClickChangeTegakiStampColorSp","SelectTegakiColorSPEdit","btnClickNextHomeFromTegakiColorPanelSp","selItem","uploadTegakiStampChangeColor","fontgenicSdkInit","blob","onloadend","base64String","fontgenicCallbackAfter","fontgenicSdkCreate","base64","uploadTegakiStampCover","bin","atob","uploadTegakiStamp","photoEntity","imgClickStamp","btnClickStampSet","TargetStamp","cmbClickStampCategory","StampCategoryList","DialogArea","imgClickStampCategory","imgClickStampForSp","WEBAPI_URL_SEARCHADDRESS","kumihanToken","showAddrSearchErroDlg","errorMsg","zipCode1","btnClickSenderMenu","InitSenderPallet","ReturnSenderHomeBtn","SenderDeleteBtn","setSenderEditMode","ShowGaijiButton","onChangeSenderFont","selFont","onChangeSenderCharLayout","btnClickSenderSet","getSenderOrder","validSenderOrder","masterSize","editUtil","kumihan","kumihanContoroller","kumihanURL","kumihanSenderRequestParam","getLayoutCd","rgb","telType2Gaiji","endFlg","GaijiShortCutBtn","FocusGaijiShortCut","kumihanGreetingRequestParam","btnClickSenderDelete","btnClickSenderFontSize","isPlus","returnSenderHomeBtn","SenderGaijiMenu","btnClickSenderInputType","isNormal","btnClickSenderInputUse","usePersonal","btnClickEditSenderItem","onChangeSenderFormat","SetBtnCaption","defFont","getDefaultFont","ExistsSenderDesgin","fontColor","exists","changeAction","gaijiFlg","_gaijiLogic","DisplayOnGaijiButton","IsUseGaiji","TargetDivId","DisplayNoneGaijiButton","formatSenderErrMessage","itemName","validSenderZipcode","zipcode1","zipcode2","requiredMsgList","validSenderEmail","validSenderTel","tel1","tel2","tel3","telIndex","captionTel","captionTel_1","captionTel_2","captionTel_3","validSenderNames","selFontColor","order","selOutlineFontColor","AlignCY","telTypeStrToVal","email1","email2","getInputSenderName","corp","telTypeStr","texts","onInputZipCode1","zipCode2","onInputZipCode2","searchAddrBtn","btnClickSearchZipToAddress","codeZip","zipno","searchZipToAddress","address1","address2","address3","GREETING_NUM_MAX","btnClickGreetingMenu","initGreetingPanel","GreetingUpdataBtn","ReturnGreetingHomeBtn","GreetingDeleteBtn","setGreetingEditMode","onChangeGreetingFont","onChangeGreetingCharLayout","btnClickGreetingSample","SampleList","MessageDialog","GreetingDialog","imgClickGreetingSample","btnClickGreetingSet","requesNew","updateItemIdx","GreetingList","getGreetingOrder","validGreetingOrder","hasSampleWildCard","hasSampleWildCard2","greetingSetFunc","returnGreetingHomeBtn","btnClickGreetingDelete","textList","UpdBtnEnable","btnClickGreetingSampleOK","SampleSelNo","btnClickGreetingSampleCancel","btnClickGreetingFontSize","btnClickEditGreetingItem","doAdd","ExistsGreetingDesgin","extraFunc","kumihanParam","masterHv","psize","greetingDefSize","shortSide","longSide","greetingTranEntityEx","WEBAPI_URL_SAVESTATE","btnClickSave","saveReady","saveBody","saveState","switchParam","nextFunc","existsSender","createVpFunc","r","selPf","setPhotoUse","setGreeting","rotate","fileIdParts","doUnloadEventFunc","getEditReturnURL","editReturnBtn","saveBodyForReturnFlow","_allowGaijiDiv","Init","scrollWindowInit","resizeWindowInit","SetGaijiList","_gaijiList","ShowButton","ShowGaijiList","setGaijiFunc","yomi","character","moji","SetGaiji","valLeft","valTop","valHeight","outerWidth","outerHeight","column","calcTop","closeGaijiDialog","mySpaceStart","mySpaceEnd","gaijiInput","gaijiButtonEnable","targetIdName","showFlg","moveGaijiShortCut","gaijiShortCutSize","shortCutWidth","gaijiShortCut","shortCutHeight","topPos","bottom","ReplaceGaijiShortCut","senderMenuArea","visualViewport","createRange","aaa","selectionStart","np","setSelectionRange","CustomEvent","posw_InsertAtCaret","_tkn","WebAPI_OCAPISSO","WebAPI_GIGYASSO","GIGYASSOMain","GIGYALoginCheck","gigyaLoginResult","SSOCopmlete","getAccountInfo","CallBackGetAccountInfo","errorCode","uidSignature","GIGYASSO","errorMessage","timestamp","OCAPISSOMain","OCAPIAccountLoginCheck","ocapiLoginResult","responseStatus","OCAPISSO","authorization","accountLoginCheckURL","DoSSO","WaitSSO","WEBAPI_URL_INITTEMP","WEBAPI_URL_GETEDITINF","WEBAPI_URL_CHECKUPLOADIMAGES","URL_GETIMAGE","STAMP_CATEGORY_ALL","frameId","loadComplited","allowResizeFunc","uploadPhotoList","uploadMyStampList","uploadTegakiStampList","_objectManiLogic","_mstStampLogic","_senderLogic","_greetingLogic","GaijiLogic","_saveLogic","doReloadedAccess","screenCtrl","sonbpIFContoroller","setInterval","socialize","addEventHandlers","onLogin","doReloaded","unloadHandlerInit","createVueForPc","createVueForSp","unloadHandlerFunc","contoroller","dtNow","toUTCString","beforeunloadVal","doReloadedForWin","getEntriesByType","nagigationList","navi","FrameId","CanvasHeight","CanvasWidth","OperationHelpUrl","operationHelpUrl","PrintWarningUrl","printWarningUrl","UploadMyStampList","UploadTegakiStampList","MasterStampList","Logo1Url","_logo1Url","Logo2Url","_logo2Url","ShowedImgGuidance","HiddenButton","ToolMenu","ManiPhotoMenu","GreetingMenu","SenderMenu","StampMenu","MyStampMenu","TegakiStampMenu","FinishSelectMenu","OparatePalletDelStamp","OparatePalletCharColor","OparatePalletTegakiColor","OparatePalletClear","OparatePalletPhotoCorrect","OparatePalletPitaCorrect","OparatePalletFinishSelect","OparatePalletFinishSelectPrint","OparatePalletFinishSelectGinen","OparatePalletTopPart","ColorPanel","IsKitamura","PhotoI2AsDsn","GreetingMenuAsDsn","StampMenuAsDsn","MyStampMenuAsDsn","TegakiStampMenuAsDsn","OperationInfo","operationInfo","edit","SaveButton","OparatePalletWide","DialogMessage","DialogYesBtnCaption","DialogNoBtnCaption","ColorOptions","FontOptions","AlignOptionsY","AlignOptionsT","CharLayoutOptions","CharLayoutOptionsEx","ContactOptions","CategoryOptions","Cagegory","CagegoryAll","ReplaceImgGuideBaloon","ReplaceGuidanceBalloon","ImgGuidanceMessage","btnClickOperationHelp","linkClickPrintWarning","btnClickReturnFlowFromGuidance","reqDelAllclear","btnClickMyStampMenu","btnClickTegakiStampMenu","btnClickFinishSelectMenu","btnClickHideInputArea","onClickImgGuidance","btnClickImgGuidance","imgClickUploadPhoto","imgClickUploadPhotoCover","btnClickPhotoListTrash","btnClickPhotoListTrashOK","btnClickPhotoListTrashCancel","imgClickUploadMyStamp","imgClickUploadMyStampCover","onChangeUploadMyStampObj","btnClickMyStampListTrash","btnClickMyStampListTrashOK","btnClickMyStampListTrashCancel","btnClickPasteMyStamp","btnClickMyStampListEdit","imgClickUploadTegakiStamp","imgClickUploadTegakiStampCover","btnClickTegakiStampListTrash","btnClickTegakiStampListTrashOK","btnClickTegakiStampListTrashCancel","doFilter","setImgGuidanceMesage","radioClickTegakiColor","btnClickGaijiInput","onFocusEnableGaiji","beforeCreate","beforeUpdate","resizeWindowHandler","divChatBot","beforeDestroy","ActiveUploadPhotoList","CategoryStampList","category","ActiveUploadMyStampList","ActiveUploadTegakiStampList","IsMystampSelected","oldVal","Guidance","Guidance1","Guidance2","Guidance3","Guidance4","Guidance5","ScreenLock","OparatePalletAddGreetingItem","OparatePalletAddStampItem","OparatePalletAddMyStampItem","OparatePalletAddTegakiStampItem","OparatePalletChangeTegakiStampColor","OparatePalletEditGreetingItem","OparatePalletEditSenderItem","EditImageFilterMenu","FinishSelectMenuDialog","FinishSelectMenuIcon","ScrollList","menuList","isMenuScrollLeftDisabled","isMenuScrollRightDisabled","isBtnHidden","imgMenuList","adjustMenuList","TitleMain","FormatOptions","ShortSize","AllowTouchEvent","doSetMode","doCommit","returnMyStampHomeBtn","returnTegakiStampHomeBtn","btnClickCloseGuidance1","btnClickCloseGuidance2","btnClickGuidance2Prev","btnClickCloseGuidance3","btnClickGuidance3Prev","btnClickCloseGuidance4","btnClickGuidance4Prev","btnClickCloseGuidance5","btnClickGuidance5Prev","btnClickReturnMainMenu","btnClickNextHomeFromImgList","btnClickNextHomeFromMyStampList","btnClickNextHomeFromTegakiStampList","btnClickNextHomeFromTegakiColorPanel","btnSetPitaCorrect","btnSetPhotoCorrect","btnSetFinishSelectCorrect","btnClickEditMyStampItem","btnClickEditTegakiStampItem","btnClickChangeTegakiStampColor","btnClickMenuScroll","moveWidth","clientWidth","setScrollMenuList","scrollMenu","resizeWindowHandlerForScrollMenu","ShowMenuDialogNextFlow","logo1","logo2","setPageSize","calcSonbpPageAreaSize","ratio","editAreaWidth","PdfPageSizeHeight","PdfPageSizeWidth","hagakiWidth","setGuidanceBalloonPos","setImgBorderGuidanceBalloonPos","setSpImgBorderGuidanceBalloonPos","pdfHeight","pdfWidth","editAreaHeight","hagakiHeight","minPageSize","isPortrait","spaceWidth","redWidthRate","screenHeight","spaceHeight","imageGuidance","guideHeight","checkFromPrev","checkBrowserReload","initTemp","initTempResponseEntity","photoControll","getEditInfo","orderStop","poscaSettings","allowTrial","dsnType","seq","defFontColor","clr","stampCategory","AuthToken","PutRange","PutRangeStamp","GreetingDesign","SenderDesign","DefaultFontColor","ColorMasterList","DesignMaster","setFontSample","SenderInputData","photoFrame","controllerHeight","sonbpRes","mystampList","getCheckUploadImagesInfo","checkRet","mystamp","EditMode","showGuidance","getGuidanceImgSrcList","ExistsPhotoBox","HideButton","setModeGinen","defPrintType","resetUpdateListOfStamps","resetUsedOfStamps","cancelRestrction","getAllUploadThumbnails","editStart","gaijiList","fontType","infix","URL","webkitURL","createObjectURL","sessionSender","Token","emptyItem","setModeOparatePalletForPc","returnHomeFunc","upstmp","upStamp","tegaki","showConfirmDlg","checkSonbpList","emptyItems","useConfirm","senderList","nextFlowFunc","CheckDiff","sonbpListWithAtmark","uploadFileKeyList","sonbpList","isExist","includes","printWarning","isBack","pageAreaHeight","framIdHeight","printWarningHeight","referrer","sessionStorageFlg","checkFromPrev_SessionStorage","splited","navigation","fromPrev","hokanFunc","usedList","upList","dbList","upRow","dbRow","setFunc","used","usedIds","uploadId","EDIT_INFO_STORENAME","OREDER_INFO_STORENAME","WebAPI_GetEditImage","ViewURL_Edit","ViewURL_HagakiSelect","ViewURL_AddOrder","SESSION_STORAGE_KEY_FROMEDIT","PC_GO_EDIT","PC_GO_ADD_ORDER","SP_GO_EDIT","SP_GO_ADD_ORDER","metaInfo","PrevButtonMessage","btnClickGuidanceClose","dummyFucn","GetPrevButtonMessage","loadIDB","initDisp","_orderInfo","isGotoEdit","_editInfo","img","sizeFit","isH","naturalHeight","naturalWidth","aspect","actHeight","guideH","guideF","saveH","enableHeight","widthD","resize","setFromPrev","checkFromReferrer","fromEdit","guidance","splitAdr","editHeight","INSATSU","GINEN","MASTER_INFO_STORENAME","ViewURL_Preview","ViewURL_AtenaSelect","SAVE_LIMIT","PC_GO_CART","PC_GO_ATENA_SELECT","SP_GO_CART","SP_GO_ATENA_SELECT","NORMAL_PREV","NORMAL_ATENA","saveLimit","hagakiTypes","hagakiTypeSelected","inputHagakiQuantity","orderMin","orderMax","loadComplete","NextButtonMessage","hagakiSelect","IsShowSupplement","hagakiNumChange","addOrderNum","addOrderMin","addOrderMax","returnOrder","_masterInfo","getSaveLimit","orderSelected","enableNextButton","addDay","setDate","yyyy","getMaster","saveOrderInfo","hagakiNum","validateNum","validateRange","disableNextButton","inputNum","hagakiType","getAtenaStop","allowAtena","WebAPI_GetAtenaParam","_doPrintAtena","onLoginHandler","description","_description","hasBarcode","_hasBarcode","barcodeDescription","_barcodeDescription","unitPrice","_unitPrice","atenaSelect","notPrinting","printing","getThumbnailClass","_hasSender","atenaViewSettings","hasSender","changePrintState","printFlg","printId","notPrintId","getAtenaParam","isAnotherName","callBackURL","doCopy","showBackBtn","_isSave","ele1","sign","atenaURL","WebAPI_GetList","ORDER_INFO_STORENAME","orderInfos","orderImgComplete","getImgUrl","imgOnload","updateOrderImgComplete","reOrder","reEdit","afterGIGYACallBack","infos","DrawThumbNail","loadCount","orderNo","addReOrder","startup","locationNowSplit2","GetRetailerConfig","pageTitle","initEntity","isError","controller","editController","PageAreaOffset","UsePcDesign","previewController","hagakiSelectController","atenaSelectController","addOrderController","errorController","footerController","InitController","prms","search","box_view","client","displayNotice","alert","asize","preSel","_ifdto","bpView","_editToken","file_key","keep_flg","EncodeFileKey","fkey","fids","ondragstart","vals","itype","dposi","srcId","tjson","dataset","SonbpIfTestDriver"],"sourceRoot":""}