react-thailand-address-autocomplete
Version:
Autocomplete Thailand address input component for React.js
1,193 lines (1,080 loc) • 1.15 MB
JavaScript
module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 9);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports) {
// shim for using process in browser
var process = module.exports = {};
// cached from whatever global is present so that test runners that stub it
// don't break things. But we need to wrap it in a try catch in case it is
// wrapped in strict mode code which doesn't define any globals. It's inside a
// function because try/catches deoptimize in certain engines.
var cachedSetTimeout;
var cachedClearTimeout;
function defaultSetTimout() {
throw new Error('setTimeout has not been defined');
}
function defaultClearTimeout () {
throw new Error('clearTimeout has not been defined');
}
(function () {
try {
if (typeof setTimeout === 'function') {
cachedSetTimeout = setTimeout;
} else {
cachedSetTimeout = defaultSetTimout;
}
} catch (e) {
cachedSetTimeout = defaultSetTimout;
}
try {
if (typeof clearTimeout === 'function') {
cachedClearTimeout = clearTimeout;
} else {
cachedClearTimeout = defaultClearTimeout;
}
} catch (e) {
cachedClearTimeout = defaultClearTimeout;
}
} ())
function runTimeout(fun) {
if (cachedSetTimeout === setTimeout) {
//normal enviroments in sane situations
return setTimeout(fun, 0);
}
// if setTimeout wasn't available but was latter defined
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
cachedSetTimeout = setTimeout;
return setTimeout(fun, 0);
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedSetTimeout(fun, 0);
} catch(e){
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedSetTimeout.call(null, fun, 0);
} catch(e){
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
return cachedSetTimeout.call(this, fun, 0);
}
}
}
function runClearTimeout(marker) {
if (cachedClearTimeout === clearTimeout) {
//normal enviroments in sane situations
return clearTimeout(marker);
}
// if clearTimeout wasn't available but was latter defined
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
cachedClearTimeout = clearTimeout;
return clearTimeout(marker);
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedClearTimeout(marker);
} catch (e){
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedClearTimeout.call(null, marker);
} catch (e){
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
// Some versions of I.E. have different rules for clearTimeout vs setTimeout
return cachedClearTimeout.call(this, marker);
}
}
}
var queue = [];
var draining = false;
var currentQueue;
var queueIndex = -1;
function cleanUpNextTick() {
if (!draining || !currentQueue) {
return;
}
draining = false;
if (currentQueue.length) {
queue = currentQueue.concat(queue);
} else {
queueIndex = -1;
}
if (queue.length) {
drainQueue();
}
}
function drainQueue() {
if (draining) {
return;
}
var timeout = runTimeout(cleanUpNextTick);
draining = true;
var len = queue.length;
while(len) {
currentQueue = queue;
queue = [];
while (++queueIndex < len) {
if (currentQueue) {
currentQueue[queueIndex].run();
}
}
queueIndex = -1;
len = queue.length;
}
currentQueue = null;
draining = false;
runClearTimeout(timeout);
}
process.nextTick = function (fun) {
var args = new Array(arguments.length - 1);
if (arguments.length > 1) {
for (var i = 1; i < arguments.length; i++) {
args[i - 1] = arguments[i];
}
}
queue.push(new Item(fun, args));
if (queue.length === 1 && !draining) {
runTimeout(drainQueue);
}
};
// v8 likes predictible objects
function Item(fun, array) {
this.fun = fun;
this.array = array;
}
Item.prototype.run = function () {
this.fun.apply(null, this.array);
};
process.title = 'browser';
process.browser = true;
process.env = {};
process.argv = [];
process.version = ''; // empty string to avoid regexp issues
process.versions = {};
function noop() {}
process.on = noop;
process.addListener = noop;
process.once = noop;
process.off = noop;
process.removeListener = noop;
process.removeAllListeners = noop;
process.emit = noop;
process.prependListener = noop;
process.prependOnceListener = noop;
process.listeners = function (name) { return [] }
process.binding = function (name) {
throw new Error('process.binding is not supported');
};
process.cwd = function () { return '/' };
process.chdir = function (dir) {
throw new Error('process.chdir is not supported');
};
process.umask = function() { return 0; };
/***/ }),
/* 1 */
/***/ (function(module, exports) {
module.exports = require("react");
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
/* eslint-disable no-unused-vars */
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var propIsEnumerable = Object.prototype.propertyIsEnumerable;
function toObject(val) {
if (val === null || val === undefined) {
throw new TypeError('Object.assign cannot be called with null or undefined');
}
return Object(val);
}
function shouldUseNative() {
try {
if (!Object.assign) {
return false;
}
// Detect buggy property enumeration order in older V8 versions.
// https://bugs.chromium.org/p/v8/issues/detail?id=4118
var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
test1[5] = 'de';
if (Object.getOwnPropertyNames(test1)[0] === '5') {
return false;
}
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
var test2 = {};
for (var i = 0; i < 10; i++) {
test2['_' + String.fromCharCode(i)] = i;
}
var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
return test2[n];
});
if (order2.join('') !== '0123456789') {
return false;
}
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
var test3 = {};
'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
test3[letter] = letter;
});
if (Object.keys(Object.assign({}, test3)).join('') !==
'abcdefghijklmnopqrst') {
return false;
}
return true;
} catch (err) {
// We don't expect any of the above to throw, but better to be safe.
return false;
}
}
module.exports = shouldUseNative() ? Object.assign : function (target, source) {
var from;
var to = toObject(target);
var symbols;
for (var s = 1; s < arguments.length; s++) {
from = Object(arguments[s]);
for (var key in from) {
if (hasOwnProperty.call(from, key)) {
to[key] = from[key];
}
}
if (getOwnPropertySymbols) {
symbols = getOwnPropertySymbols(from);
for (var i = 0; i < symbols.length; i++) {
if (propIsEnumerable.call(from, symbols[i])) {
to[symbols[i]] = from[symbols[i]];
}
}
}
}
return to;
};
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/**
* Copyright (c) 2013-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
module.exports = ReactPropTypesSecret;
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(process) {/**
* Copyright (c) 2013-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
if (process.env.NODE_ENV !== 'production') {
var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&
Symbol.for &&
Symbol.for('react.element')) ||
0xeac7;
var isValidElement = function(object) {
return typeof object === 'object' &&
object !== null &&
object.$$typeof === REACT_ELEMENT_TYPE;
};
// By explicitly using `prop-types` you are opting into new development behavior.
// http://fb.me/prop-types-in-prod
var throwOnDirectAccess = true;
module.exports = __webpack_require__(14)(isValidElement, throwOnDirectAccess);
} else {
// By explicitly using `prop-types` you are opting into new production behavior.
// http://fb.me/prop-types-in-prod
module.exports = __webpack_require__(13)();
}
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(process) {/**
* Copyright (c) 2013-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var printWarning = function() {};
if (process.env.NODE_ENV !== 'production') {
var ReactPropTypesSecret = __webpack_require__(3);
var loggedTypeFailures = {};
printWarning = function(text) {
var message = 'Warning: ' + text;
if (typeof console !== 'undefined') {
console.error(message);
}
try {
// --- Welcome to debugging React ---
// This error was thrown as a convenience so that you can use this stack
// to find the callsite that caused this warning to fire.
throw new Error(message);
} catch (x) {}
};
}
/**
* Assert that the values match with the type specs.
* Error messages are memorized and will only be shown once.
*
* @param {object} typeSpecs Map of name to a ReactPropType
* @param {object} values Runtime values that need to be type-checked
* @param {string} location e.g. "prop", "context", "child context"
* @param {string} componentName Name of the component for error messages.
* @param {?Function} getStack Returns the component stack.
* @private
*/
function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
if (process.env.NODE_ENV !== 'production') {
for (var typeSpecName in typeSpecs) {
if (typeSpecs.hasOwnProperty(typeSpecName)) {
var error;
// Prop type validation may throw. In case they do, we don't want to
// fail the render phase where it didn't fail before. So we log it.
// After these have been cleaned up, we'll let them throw.
try {
// This is intentionally an invariant that gets caught. It's the same
// behavior as without this statement except with a better message.
if (typeof typeSpecs[typeSpecName] !== 'function') {
var err = Error(
(componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +
'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'
);
err.name = 'Invariant Violation';
throw err;
}
error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
} catch (ex) {
error = ex;
}
if (error && !(error instanceof Error)) {
printWarning(
(componentName || 'React class') + ': type specification of ' +
location + ' `' + typeSpecName + '` is invalid; the type checker ' +
'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +
'You may have forgotten to pass an argument to the type checker ' +
'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +
'shape all require an argument).'
)
}
if (error instanceof Error && !(error.message in loggedTypeFailures)) {
// Only monitor this failure once because there tends to be a lot of the
// same error.
loggedTypeFailures[error.message] = true;
var stack = getStack ? getStack() : '';
printWarning(
'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')
);
}
}
}
}
}
module.exports = checkPropTypes;
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(process) {
if (process.env.NODE_ENV === 'production') {
module.exports = __webpack_require__(21);
} else {
module.exports = __webpack_require__(20);
}
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(global) {
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var React = __webpack_require__(1);
var PropTypes = __webpack_require__(4);
var _require = __webpack_require__(17),
findDOMNode = _require.findDOMNode;
var scrollIntoView = __webpack_require__(10);
var IMPERATIVE_API = ['blur', 'checkValidity', 'click', 'focus', 'select', 'setCustomValidity', 'setSelectionRange', 'setRangeText'];
function getScrollOffset() {
return {
x: window.pageXOffset !== undefined ? window.pageXOffset : (document.documentElement || document.body.parentNode || document.body).scrollLeft,
y: window.pageYOffset !== undefined ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop
};
}
var Autocomplete = function (_React$Component) {
_inherits(Autocomplete, _React$Component);
function Autocomplete(props) {
_classCallCheck(this, Autocomplete);
var _this = _possibleConstructorReturn(this, (Autocomplete.__proto__ || Object.getPrototypeOf(Autocomplete)).call(this, props));
_this.state = {
isOpen: false,
highlightedIndex: null
};
_this._debugStates = [];
_this.ensureHighlightedIndex = _this.ensureHighlightedIndex.bind(_this);
_this.exposeAPI = _this.exposeAPI.bind(_this);
_this.handleInputFocus = _this.handleInputFocus.bind(_this);
_this.handleInputBlur = _this.handleInputBlur.bind(_this);
_this.handleChange = _this.handleChange.bind(_this);
_this.handleKeyDown = _this.handleKeyDown.bind(_this);
_this.handleInputClick = _this.handleInputClick.bind(_this);
_this.maybeAutoCompleteText = _this.maybeAutoCompleteText.bind(_this);
return _this;
}
_createClass(Autocomplete, [{
key: 'componentWillMount',
value: function componentWillMount() {
// this.refs is frozen, so we need to assign a new object to it
this.refs = {};
this._ignoreBlur = false;
this._ignoreFocus = false;
this._scrollOffset = null;
this._scrollTimer = null;
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
clearTimeout(this._scrollTimer);
this._scrollTimer = null;
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (this.state.highlightedIndex !== null) {
this.setState(this.ensureHighlightedIndex);
}
if (nextProps.autoHighlight && (this.props.value !== nextProps.value || this.state.highlightedIndex === null)) {
this.setState(this.maybeAutoCompleteText);
}
}
}, {
key: 'componentDidMount',
value: function componentDidMount() {
if (this.isOpen()) {
this.setMenuPositions();
}
}
}, {
key: 'componentDidUpdate',
value: function componentDidUpdate(prevProps, prevState) {
if (this.state.isOpen && !prevState.isOpen || 'open' in this.props && this.props.open && !prevProps.open) this.setMenuPositions();
this.maybeScrollItemIntoView();
if (prevState.isOpen !== this.state.isOpen) {
this.props.onMenuVisibilityChange(this.state.isOpen);
}
}
}, {
key: 'exposeAPI',
value: function exposeAPI(el) {
var _this2 = this;
this.refs.input = el;
IMPERATIVE_API.forEach(function (ev) {
return _this2[ev] = el && el[ev] && el[ev].bind(el);
});
}
}, {
key: 'maybeScrollItemIntoView',
value: function maybeScrollItemIntoView() {
if (this.isOpen() && this.state.highlightedIndex !== null) {
var itemNode = this.refs['item-' + this.state.highlightedIndex];
var menuNode = this.refs.menu;
scrollIntoView(findDOMNode(itemNode), findDOMNode(menuNode), { onlyScrollIfNeeded: true });
}
}
}, {
key: 'handleKeyDown',
value: function handleKeyDown(event) {
if (Autocomplete.keyDownHandlers[event.key]) Autocomplete.keyDownHandlers[event.key].call(this, event);else if (!this.isOpen()) {
this.setState({
isOpen: true
});
}
}
}, {
key: 'handleChange',
value: function handleChange(event) {
this.props.onChange(event, event.target.value);
}
}, {
key: 'getFilteredItems',
value: function getFilteredItems(props) {
var items = props.items;
if (props.shouldItemRender) {
items = items.filter(function (item) {
return props.shouldItemRender(item, props.value);
});
}
if (props.sortItems) {
items.sort(function (a, b) {
return props.sortItems(a, b, props.value);
});
}
return items;
}
}, {
key: 'maybeAutoCompleteText',
value: function maybeAutoCompleteText(state, props) {
var highlightedIndex = state.highlightedIndex;
var value = props.value,
getItemValue = props.getItemValue;
var index = highlightedIndex === null ? 0 : highlightedIndex;
var items = this.getFilteredItems(props);
for (var i = 0; i < items.length; i++) {
if (props.isItemSelectable(items[index])) break;
index = (index + 1) % items.length;
}
var matchedItem = items[index] && props.isItemSelectable(items[index]) ? items[index] : null;
if (value !== '' && matchedItem) {
var itemValue = getItemValue(matchedItem);
var itemValueDoesMatch = itemValue.toLowerCase().indexOf(value.toLowerCase()) === 0;
if (itemValueDoesMatch) {
return { highlightedIndex: index };
}
}
return { highlightedIndex: null };
}
}, {
key: 'ensureHighlightedIndex',
value: function ensureHighlightedIndex(state, props) {
if (state.highlightedIndex >= this.getFilteredItems(props).length) {
return { highlightedIndex: null };
}
}
}, {
key: 'setMenuPositions',
value: function setMenuPositions() {
var node = this.refs.input;
var rect = node.getBoundingClientRect();
var computedStyle = global.window.getComputedStyle(node);
var marginBottom = parseInt(computedStyle.marginBottom, 10) || 0;
var marginLeft = parseInt(computedStyle.marginLeft, 10) || 0;
var marginRight = parseInt(computedStyle.marginRight, 10) || 0;
this.setState({
menuTop: rect.bottom + marginBottom,
menuLeft: rect.left + marginLeft,
menuWidth: rect.width + marginLeft + marginRight
});
}
}, {
key: 'highlightItemFromMouse',
value: function highlightItemFromMouse(index) {
this.setState({ highlightedIndex: index });
}
}, {
key: 'selectItemFromMouse',
value: function selectItemFromMouse(item) {
var _this3 = this;
var value = this.props.getItemValue(item);
// The menu will de-render before a mouseLeave event
// happens. Clear the flag to release control over focus
this.setIgnoreBlur(false);
this.setState({
isOpen: false,
highlightedIndex: null
}, function () {
_this3.props.onSelect(value, item);
});
}
}, {
key: 'setIgnoreBlur',
value: function setIgnoreBlur(ignore) {
this._ignoreBlur = ignore;
}
}, {
key: 'renderMenu',
value: function renderMenu() {
var _this4 = this;
var items = this.getFilteredItems(this.props).map(function (item, index) {
var element = _this4.props.renderItem(item, _this4.state.highlightedIndex === index, { cursor: 'default' });
return React.cloneElement(element, {
onMouseEnter: _this4.props.isItemSelectable(item) ? function () {
return _this4.highlightItemFromMouse(index);
} : null,
onClick: _this4.props.isItemSelectable(item) ? function () {
return _this4.selectItemFromMouse(item);
} : null,
ref: function ref(e) {
return _this4.refs['item-' + index] = e;
}
});
});
var style = {
left: this.state.menuLeft,
top: this.state.menuTop,
minWidth: this.state.menuWidth
};
var menu = this.props.renderMenu(items, this.props.value, style);
return React.cloneElement(menu, {
ref: function ref(e) {
return _this4.refs.menu = e;
},
// Ignore blur to prevent menu from de-rendering before we can process click
onTouchStart: function onTouchStart() {
return _this4.setIgnoreBlur(true);
},
onMouseEnter: function onMouseEnter() {
return _this4.setIgnoreBlur(true);
},
onMouseLeave: function onMouseLeave() {
return _this4.setIgnoreBlur(false);
}
});
}
}, {
key: 'handleInputBlur',
value: function handleInputBlur(event) {
var _this5 = this;
if (this._ignoreBlur) {
this._ignoreFocus = true;
this._scrollOffset = getScrollOffset();
this.refs.input.focus();
return;
}
var setStateCallback = void 0;
var highlightedIndex = this.state.highlightedIndex;
if (this.props.selectOnBlur && highlightedIndex !== null) {
var items = this.getFilteredItems(this.props);
var item = items[highlightedIndex];
var value = this.props.getItemValue(item);
setStateCallback = function setStateCallback() {
return _this5.props.onSelect(value, item);
};
}
this.setState({
isOpen: false,
highlightedIndex: null
}, setStateCallback);
var onBlur = this.props.inputProps.onBlur;
if (onBlur) {
onBlur(event);
}
}
}, {
key: 'handleInputFocus',
value: function handleInputFocus(event) {
var _this6 = this;
if (this._ignoreFocus) {
this._ignoreFocus = false;
var _scrollOffset = this._scrollOffset,
x = _scrollOffset.x,
y = _scrollOffset.y;
this._scrollOffset = null;
// Focus will cause the browser to scroll the <input> into view.
// This can cause the mouse coords to change, which in turn
// could cause a new highlight to happen, cancelling the click
// event (when selecting with the mouse)
window.scrollTo(x, y);
// Some browsers wait until all focus event handlers have been
// processed before scrolling the <input> into view, so let's
// scroll again on the next tick to ensure we're back to where
// the user was before focus was lost. We could do the deferred
// scroll only, but that causes a jarring split second jump in
// some browsers that scroll before the focus event handlers
// are triggered.
clearTimeout(this._scrollTimer);
this._scrollTimer = setTimeout(function () {
_this6._scrollTimer = null;
window.scrollTo(x, y);
}, 0);
return;
}
this.setState({ isOpen: true });
var onFocus = this.props.inputProps.onFocus;
if (onFocus) {
onFocus(event);
}
}
}, {
key: 'isInputFocused',
value: function isInputFocused() {
var el = this.refs.input;
return el.ownerDocument && el === el.ownerDocument.activeElement;
}
}, {
key: 'handleInputClick',
value: function handleInputClick() {
// Input will not be focused if it's disabled
if (this.isInputFocused() && !this.isOpen()) this.setState({ isOpen: true });
}
}, {
key: 'composeEventHandlers',
value: function composeEventHandlers(internal, external) {
return external ? function (e) {
internal(e);external(e);
} : internal;
}
}, {
key: 'isOpen',
value: function isOpen() {
return 'open' in this.props ? this.props.open : this.state.isOpen;
}
}, {
key: 'render',
value: function render() {
if (this.props.debug) {
// you don't like it, you love it
this._debugStates.push({
id: this._debugStates.length,
state: this.state
});
}
var inputProps = this.props.inputProps;
var open = this.isOpen();
return React.createElement(
'div',
_extends({ style: _extends({}, this.props.wrapperStyle) }, this.props.wrapperProps),
this.props.renderInput(_extends({}, inputProps, {
role: 'combobox',
'aria-autocomplete': 'list',
'aria-expanded': open,
autoComplete: 'off',
ref: this.exposeAPI,
onFocus: this.handleInputFocus,
onBlur: this.handleInputBlur,
onChange: this.handleChange,
onKeyDown: this.composeEventHandlers(this.handleKeyDown, inputProps.onKeyDown),
onClick: this.composeEventHandlers(this.handleInputClick, inputProps.onClick),
value: this.props.value
})),
open && this.renderMenu(),
this.props.debug && React.createElement(
'pre',
{ style: { marginLeft: 300 } },
JSON.stringify(this._debugStates.slice(Math.max(0, this._debugStates.length - 5), this._debugStates.length), null, 2)
)
);
}
}]);
return Autocomplete;
}(React.Component);
Autocomplete.propTypes = {
/**
* The items to display in the dropdown menu
*/
items: PropTypes.array.isRequired,
/**
* The value to display in the input field
*/
value: PropTypes.any,
/**
* Arguments: `event: Event, value: String`
*
* Invoked every time the user changes the input's value.
*/
onChange: PropTypes.func,
/**
* Arguments: `value: String, item: Any`
*
* Invoked when the user selects an item from the dropdown menu.
*/
onSelect: PropTypes.func,
/**
* Arguments: `item: Any, value: String`
*
* Invoked for each entry in `items` and its return value is used to
* determine whether or not it should be displayed in the dropdown menu.
* By default all items are always rendered.
*/
shouldItemRender: PropTypes.func,
/**
* Arguments: `item: Any`
*
* Invoked when attempting to select an item. The return value is used to
* determine whether the item should be selectable or not.
* By default all items are selectable.
*/
isItemSelectable: PropTypes.func,
/**
* Arguments: `itemA: Any, itemB: Any, value: String`
*
* The function which is used to sort `items` before display.
*/
sortItems: PropTypes.func,
/**
* Arguments: `item: Any`
*
* Used to read the display value from each entry in `items`.
*/
getItemValue: PropTypes.func.isRequired,
/**
* Arguments: `item: Any, isHighlighted: Boolean, styles: Object`
*
* Invoked for each entry in `items` that also passes `shouldItemRender` to
* generate the render tree for each item in the dropdown menu. `styles` is
* an optional set of styles that can be applied to improve the look/feel
* of the items in the dropdown menu.
*/
renderItem: PropTypes.func.isRequired,
/**
* Arguments: `items: Array<Any>, value: String, styles: Object`
*
* Invoked to generate the render tree for the dropdown menu. Ensure the
* returned tree includes every entry in `items` or else the highlight order
* and keyboard navigation logic will break. `styles` will contain
* { top, left, minWidth } which are the coordinates of the top-left corner
* and the width of the dropdown menu.
*/
renderMenu: PropTypes.func,
/**
* Styles that are applied to the dropdown menu in the default `renderMenu`
* implementation. If you override `renderMenu` and you want to use
* `menuStyle` you must manually apply them (`this.props.menuStyle`).
*/
menuStyle: PropTypes.object,
/**
* Arguments: `props: Object`
*
* Invoked to generate the input element. The `props` argument is the result
* of merging `props.inputProps` with a selection of props that are required
* both for functionality and accessibility. At the very least you need to
* apply `props.ref` and all `props.on<event>` event handlers. Failing to do
* this will cause `Autocomplete` to behave unexpectedly.
*/
renderInput: PropTypes.func,
/**
* Props passed to `props.renderInput`. By default these props will be
* applied to the `<input />` element rendered by `Autocomplete`, unless you
* have specified a custom value for `props.renderInput`. Any properties
* supported by `HTMLInputElement` can be specified, apart from the
* following which are set by `Autocomplete`: value, autoComplete, role,
* aria-autocomplete. `inputProps` is commonly used for (but not limited to)
* placeholder, event handlers (onFocus, onBlur, etc.), autoFocus, etc..
*/
inputProps: PropTypes.object,
/**
* Props that are applied to the element which wraps the `<input />` and
* dropdown menu elements rendered by `Autocomplete`.
*/
wrapperProps: PropTypes.object,
/**
* This is a shorthand for `wrapperProps={{ style: <your styles> }}`.
* Note that `wrapperStyle` is applied before `wrapperProps`, so the latter
* will win if it contains a `style` entry.
*/
wrapperStyle: PropTypes.object,
/**
* Whether or not to automatically highlight the top match in the dropdown
* menu.
*/
autoHighlight: PropTypes.bool,
/**
* Whether or not to automatically select the highlighted item when the
* `<input>` loses focus.
*/
selectOnBlur: PropTypes.bool,
/**
* Arguments: `isOpen: Boolean`
*
* Invoked every time the dropdown menu's visibility changes (i.e. every
* time it is displayed/hidden).
*/
onMenuVisibilityChange: PropTypes.func,
/**
* Used to override the internal logic which displays/hides the dropdown
* menu. This is useful if you want to force a certain state based on your
* UX/business logic. Use it together with `onMenuVisibilityChange` for
* fine-grained control over the dropdown menu dynamics.
*/
open: PropTypes.bool,
debug: PropTypes.bool
};
Autocomplete.defaultProps = {
value: '',
wrapperProps: {},
wrapperStyle: {
display: 'inline-block'
},
inputProps: {},
renderInput: function renderInput(props) {
return React.createElement('input', props);
},
onChange: function onChange() {},
onSelect: function onSelect() {},
isItemSelectable: function isItemSelectable() {
return true;
},
renderMenu: function renderMenu(items, value, style) {
return React.createElement('div', { style: _extends({}, style, this.menuStyle), children: items });
},
menuStyle: {
borderRadius: '3px',
boxShadow: '0 2px 12px rgba(0, 0, 0, 0.1)',
background: 'rgba(255, 255, 255, 0.9)',
padding: '2px 0',
fontSize: '90%',
position: 'fixed',
overflow: 'auto',
maxHeight: '50%' },
autoHighlight: true,
selectOnBlur: false,
onMenuVisibilityChange: function onMenuVisibilityChange() {}
};
Autocomplete.keyDownHandlers = {
ArrowDown: function ArrowDown(event) {
event.preventDefault();
var items = this.getFilteredItems(this.props);
if (!items.length) return;
var highlightedIndex = this.state.highlightedIndex;
var index = highlightedIndex === null ? -1 : highlightedIndex;
for (var i = 0; i < items.length; i++) {
var p = (index + i + 1) % items.length;
if (this.props.isItemSelectable(items[p])) {
index = p;
break;
}
}
if (index > -1 && index !== highlightedIndex) {
this.setState({
highlightedIndex: index,
isOpen: true
});
}
},
ArrowUp: function ArrowUp(event) {
event.preventDefault();
var items = this.getFilteredItems(this.props);
if (!items.length) return;
var highlightedIndex = this.state.highlightedIndex;
var index = highlightedIndex === null ? items.length : highlightedIndex;
for (var i = 0; i < items.length; i++) {
var p = (index - (1 + i) + items.length) % items.length;
if (this.props.isItemSelectable(items[p])) {
index = p;
break;
}
}
if (index !== items.length) {
this.setState({
highlightedIndex: index,
isOpen: true
});
}
},
Enter: function Enter(event) {
var _this7 = this;
// Key code 229 is used for selecting items from character selectors (Pinyin, Kana, etc)
if (event.keyCode !== 13) return;
// In case the user is currently hovering over the menu
this.setIgnoreBlur(false);
if (!this.isOpen()) {
// menu is closed so there is no selection to accept -> do nothing
return;
} else if (this.state.highlightedIndex == null) {
// input has focus but no menu item is selected + enter is hit -> close the menu, highlight whatever's in input
this.setState({
isOpen: false
}, function () {
_this7.refs.input.select();
});
} else {
// text entered + menu item has been highlighted + enter is hit -> update value to that of selected menu item, close the menu
event.preventDefault();
var item = this.getFilteredItems(this.props)[this.state.highlightedIndex];
var value = this.props.getItemValue(item);
this.setState({
isOpen: false,
highlightedIndex: null
}, function () {
//this.refs.input.focus() // TODO: file issue
_this7.refs.input.setSelectionRange(value.length, value.length);
_this7.props.onSelect(value, item);
});
}
},
Escape: function Escape() {
// In case the user is currently hovering over the menu
this.setIgnoreBlur(false);
this.setState({
highlightedIndex: null,
isOpen: false
});
},
Tab: function Tab() {
// In case the user is currently hovering over the menu
this.setIgnoreBlur(false);
}
};
module.exports = Autocomplete;
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(23)))
/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {
!function(e,C){if(true)module.exports=C();else if("function"===typeof define&&define.amd)define([],C);else{var A=C();for(var B in A)("object"===typeof exports?exports:e)[B]=A[B]}}(this,function(){return function(e){function C(B){if(A[B])return A[B].exports;var D=A[B]={i:B,l:!1,exports:{}};return e[B].call(D.exports,D,D.exports,C),D.l=!0,D.exports}var A={};return C.m=e,C.c=A,C.d=function(e,A,B){C.o(e,A)||Object.defineProperty(e,A,{configurable:!1,enumerable:!0,get:B})},C.n=function(e){var A=e&&e.__esModule?function(){return e.default}:function(){return e};return C.d(A,"a",A),A},C.o=function(e,C){return Object.prototype.hasOwnProperty.call(e,C)},C.p="",C(C.s=0)}([function(e,C,A){e.exports=A(1)},function(e,C,A){"use strict";Object.defineProperty(C,"__esModule",{value:!0});var B=A(2);C.default=B.a},function(e,C,A){"use strict";var B=A(3),D=A.n(B),E=[],F=[],a=function(){var e,C=D.a,A=[],B=[],a=[];C.lookup&&C.words&&(A=C.lookup.split("|"),B=C.words.split("|"),C=C.data),e=function(e){function C(e){var C=e.charCodeAt(0);return B[C<97?C-65:26+C-97]}return"number"===typeof e&&(e=A[e]),e.replace(/[A-Z]/gi,C)},C.forEach(function(C){var A=1;3===C.length&&(A=2),C[A].forEach(function(B){B[A].forEach(function(D){D[A]=D[A]instanceof Array?D[A]:[D[A]],D[A].forEach(function(E){var l={tumbon:e(D[0]),city:e(B[0]),province:e(C[0]),zipcode:E};2===A&&(l.tumbon_code=D[1]||!1,l.city_code=B[1]||!1,l.province_code=C[1]||!1),-1===F.indexOf(l.province)&&F.push(l.province),a.push(l)})})})}),E=a},l=function(e,C){if(!e)return[];if(0===Object.keys(e).length&&e.constructor===Object)return[];0===E.length&&a();var A=Object.keys(e)[0];return E.filter(function(C){return C[A].toString().startsWith(e[A])}).slice(0,C)};C.a={search:l,provinces:F}},function(e,C){e.exports={data:[["\u0e01\u0e23\u0e30\u0e1a\u0e35\u0e48",[["I\u0e17\u0e48\u0e2d\u0e21",[["I\u0e17\u0e48\u0e2d\u0e21o",81120],["I\u0e17\u0e48\u0e2d\u0e21\u0e43\u0e15\u0e49",81120],["I\u0e1e\u0e19",81170],[0,81170],["\u0e1e\u0e23\u0e38\u0e14\u0e34\u0e19C",81120],["LQ\u0e02\u0e32\u0e27",81120],["\u0e40\u0e1e\u0e2b\u0e25\u0e32",81120]]],[1,[["\u0e04\u0e35\u0e23\u0e35\u0e27\u0e07",81160],[1,81160],["S\u0e15\u0e48\u0e2d",81160],["S\u0e40\u0e02\u0e19",81160]]],[2,[["\u0e14\u0e34\u0e19\u0e2d\u0e38\u0e14\u0e21",81190],[3,81190],["JyN",81190],[2,81190]]],["\u0e2d\u0e48\u0e32\u0e27\u0e25\u0e36\u0e01",[["I\u0e22\u0e32",81110],["Ip",81110],["Co",81110],[4,81110],["\u0e2d\u0e48\u0e32\u0e27\u0e25\u0e36\u0e01f",81110],["\u0e2d\u0e48\u0e32\u0e27\u0e25\u0e36\u0e01o",81110],["\u0e2d\u0e48\u0e32\u0e27\u0e25\u0e36\u0e01\u0e43\u0e15\u0e49",81110],[5,81110],["\u0e41\u0e2b\u0e25\u0e21\u0e2a\u0e31\u0e01",81110]]],["P\u0e25\u0e31\u0e19l",[[6,81120],["\u0e28\u0e32\u0e25\u0e32\u0e14\u0e48\u0e32\u0e19",81150],["Pw",81120],["P\u0e25\u0e31\u0e19lf",81150],["P\u0e25\u0e31\u0e19lM",81150]]],[7,[["\u0e1e\u0e23\u0e38\u0e40\u0e15\u0e35\u0e22\u0e27",81140],[8,80240],["\u0e2b\u0e19\u0e49\u0e32S",81140],[9,81140],[7,81140],["K\u0e2b\u0e32\u0e23",80240]]],["F\u0e01\u0e23\u0e30\u0e1a\u0e35\u0e48",[["\u0e01\u0e23\u0e30\u0e1a\u0e35\u0e48f",81e3],["\u0e01\u0e23\u0e30\u0e1a\u0e35\u0e48M",81e3],["I\u0e1b\u0e23\u0e30\u0e2a\u0e07\u0e04\u0e4c",81e3],["\u0e17\u0e31\u0e1a\u0e1b\u0e23\u0e34\u0e01",81e3],[10,81e3],["A\u0e17\u0e30\u0e40\u0e25",81180],["\u0e2d\u0e48\u0e32\u0e27C\u0e07",81e3],["S\u0e04\u0e23\u0e32\u0e21",81e3],[11,81e3],["\u0e44\u0e2a\u0e44\u0e17\u0e22",81e3]]],[12,[["I\u0e02C\u0e19",81130],["I\u0e40\u0e02\u0e21\u0e49\u0e32",81130],[13,81130],["\u0e1b\u0e01\u0e32\u0e2a\u0e31\u0e22",81130],["L\u0e22\u0e39\u0e07",81130],["PO\u0e1a\u0e2d\u0e22\u0e32",81130],[12,81130],[14,81130]]]]],["\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e21\u0e2b\u0e32\u0e19\u0e04\u0e23",[[15,[["I\u0e15\u0e49\u0e19y",10600],[15,10600],["Dv\u0e20\u0e39\u0e25\u0e48\u0e32\u0e07",10600],["\u0e2a\u0e21\u0e40\u0e14\u0e47\u0e08\u0e40\u0e08\u0e49\u0e32W\u0e22\u0e32",10600]]],["Iq\u0e27\u0e32",[["i\u0e01\u0e2d\u0e07\u0e14\u0e34\u0e19",10510],["i\u0e01\u0e2d\u0e07\u0e14\u0e34\u0e19\u0e43\u0e15\u0e49",10510],[16,10510],["q\u0e27\u0e32\u0e15\u0e30\u0e27\u0e31\u0e19\u0e15\u0e01",10510],["q\u0e27\u0e32\u0e15\u0e30\u0e27\u0e31\u0e19\u0e2d\u0e2d\u0e01",10510]]],[17,[[18,10110],[17,10110],[19,10110],[19,10260]]],[20,[[20,10230],["\u0e23\u0e32\u0e21\u0e2d\u0e34\u0e19\u0e17\u0e23\u0e32",10230]]],[21,[[21,10900],["\u0e08\u0e2d\u0e21\u0e1e\u0e25",10900],["\u0e08\u0e31\u0e19\u0e17\u0e23\u0e40\u0e01\u0e29\u0e21",10900],[22,10900],["\u0e40\u0e2aC\u0e19\u0e34\u0e04\u0e21",10900]]],[23,[[23,10150],[24,10150],["D\u0e04\u0e49\u0e2d",10150],[25,10150]]],[26,[[26,10210],["\u0e2aC\u0e21\u0e1a\u0e34\u0e19",10210],["\u0e2a\u0e35\u0e01\u0e31\u0e19",10210]]],[3,[[3,10400]]],[27,[[27,10300],["\u0e16\u0e19\u0e19\u0e19\u0e04\u0e23\u0e44\u0e0a\u0e22O",10300],["\u0e27\u0e0a\u0e34\u0e23\u0e1e\u0e22\u0e32\u0e1a\u0e32\u0e25",10300],["\u0e2a\u0e27\u0e19\u0e08\u0e34\u0e15\u0e23\u0e25\u0e14\u0e32",10300],["\u0e2a\u0e27\u0e19\u0e08\u0e34\u0e15\u0e23\u0e25\u0e14\u0e32",10303],["\u0e2a\u0e35\u0e48\u0e41\u0e22\u0e01\u0e21\u0e2b\u0e32C\u0e04",10300]]],[13,[["I\u0e0a\u0e31\u0e01W",10170],["\u0e09\u0e34\u0e21\u0e1e\u0e25\u0e35",10170],[13,10170],[28,10170],["D\u0e23\u0e30\u0e21\u0e32\u0e14",10170],["D\u0e40\u0e0a\u0e37\u0e2d\u0e01\u0e2b\u0e19\u0e31\u0e07",10170]]],[29,[[29,10170],["\u0e28\u0e32\u0e25\u0e32\u0e18\u0e23\u0e23\u0e21\u0e2a\u0e1e\u0e19\u0e4c",10170]]],[30,[[30,10140],[25,10140]]],["\u0e18\u0e19\u0e1a\u0e38\u0e23\u0e35",[["\u0e14\u0e32\u0e27\u0e04\u0e30\u0e19\u0e2d\u0e07",10600],["\u0e15\u0e25\u0e32\u0e14\u0e1e\u0e25\u0e39",10600],["D\u0e22\u0e35\u0e48\u0e40\u0e23\u0e37\u0e2d",10600],["\u0e1a\u0e38\u0e04\u0e04\u0e42\u0e25",10600],["\u0e27\u0e31\u0e14\u0e01\u0e31\u0e25\u0e22\u0e32\u0e13\u0e4c",10600],["\u0e2a\u0e33\u0e40\u0e2b\u0e23\u0e48",10600],["\u0e2b\u0e34\u0e23\u0e31\u0e0d\u0e23\u0e39\u0e08\u0e35",10600]]],["D\u0e01\u0e2d\u0e01f",[["D\u0e02\u0e38\u0e19\u0e19\u0e19\u0e17\u0e4c",10700],["D\u0e02\u0e38\u0e19O",10700],["B\u0e0a\u0e48\u0e32\u0e07\u0e2b\u0e25\u0e48\u0e2d",10700],["\u0e28\u0e34\u0e23\u0e34\u0e23\u0e32\u0e0a",10700],["\u0e2d\u0e23\u0e38\u0e13\u0e2d\u0e31\u0e21\u0e23\u0e34\u0e19\u0e17\u0e23\u0e4c",10700]]],["D\u0e01\u0e2d\u0e01M",[["\u0e27\u0e31\u0e14EW",10600],["\u0e27\u0e31\u0e14\u0e2d\u0e23\u0e38\u0e13",10600]]],[31,[["I\u0e08\u0e31\u0e48\u0e19",10240],["e\u0e2b\u0e21\u0e32\u0e01",10240],["e\u0e2b\u0e21\u0e32\u0e01",10250]]],[24,[[32,10150],["\u0e41\u0e2a\u0e21\u0e14\u0e33",10150]]],[33,[[33,10120],["D\u0e42\u0e04\u0e25\u0e48",10120],["\u0e27\u0e31\u0e14W\u0e22\u0e32\u0e44\u0e01\u0e23",10120]]],[34,[[34,10800],["\u0e27\u0e07\u0e28\u0e4c\u0e2a\u0e27\u0e48\u0e32\u0e07",10800]]],[35,[[35,10260]]],[36,[[36,10150]]],[37,[["D\u0e1a\u0e33\u0e2b\u0e23\u0e38",10700],[37,10700],["D\u0e22\u0e35\u0e48\u0e02\u0e31\u0e19",10700],[38,10700]]],[39,[[39,10500],["\u0e21\u0e2b\u0e32\u0e1e\u0e24\u0e12\u0e32\u0e23\u0e32\u0e21",10500],["\u0e2a\u0e35\u0e25\u0e21",10500],["\u0e2a\u0e35\u0e48W\u0e22\u0e32",10500],["\u0e2a\u0e38\u0e23\u0e34\u0e22\u0e27\u0e07\u0e28\u0e4c",10500]]],[40,[[41,10220],[41,10230],["\u0e2d\u0e19\u0e38\u0e2a\u0e32\u0e27\u0e23\u0e35\u0e22\u0e4c",10220]]],[42,[[42,10160],["D\u0e41\u0e04o",10160],[43,10160],[44,10160]]],["x\u0e01\u0e38\u0e48\u0e21",[["I\u0e01\u0e38\u0e48\u0e21",10230],["I\u0e01\u0e38\u0e48\u0e21",10240],["\u0e19\u0e27\u0e21\u0e34\u0e19\u0e17\u0e23\u0e4c",10230],["\u0e19\u0e27\u0e25\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c",10230]]],[45,[[45,10330],["\u0e23\u0e2d\u0e07F",10330],["\u0e25\u0e38\u0e21\u0e1e\u0e34\u0e19\u0e35",10330],[46,10330],[46,10110],[46,10120],[46,10400],[46,10500]]],[47,[[48,10250],[47,10250],[49,10250]]],["\u0e1b\u0e49\u0e2d\u0e21\u0e1b\u0e23\u0e32\u0e1a\u0e28\u0e31\u0e15\u0e23\u0e39\u0e1e\u0e48\u0e32\u0e22",[["I\u0e21\u0e2b\u0e32C\u0e04",10100],["B\u0e1a\u0e32\u0e15\u0e23",10100],["\u0e1b\u0e49\u0e2d\u0e21\u0e1b\u0e23\u0e32\u0e1a",10100],["\u0e27\u0e31\u0e14\u0e40\u0e17\u0e1e\u0e28\u0e34\u0e23\u0e34\u0e19\u0e17\u0e23\u0e4c",10100],["\u0e27\u0e31\u0e14\u0e42\u0e2a\u0e21\u0e19\u0e31\u0e2a",10100]]],["\u0e1e\u0e0d\u0e32\u0e44\u0e17",[["q\u0e40\u0e2a\u0e19\u0e43\u0e19",10400]]],["W\u0e19\u0e04\u0e23",[["\u0e0a\u0e19\u0e30\u0e2a\u0e07\u0e04\u0e23\u0e32\u0e21",10200],["\u0e15\u0e25\u0e32\u0e14\u0e22\u0e2d\u0e14",10200],["\u0e1a\u0e27\u0e23\u0e19\u0e34\u0e40\u0e27\u0e28",10200],["D\u0e02\u0e38\u0e19\u0e1e\u0e23\u0e2b\u0e21",10200],["B\u0e1e\u0e32\u0e19\u0e16\u0e21",10200],["W\u0e1a\u0e23\u0e21\u0e21\u0e2b\u0e32\u0e23\u0e32\u0e0aG",10200],["G\u0e1a\u0e39\u0e23\u0e1e\u0e32\u0e20\u0e34\u0e23\u0e21\u0e22\u0e4c",10200],["\u0e27\u0e31\u0e14\u0e23\u0e32\u0e0a\u0e1a\u0e1e\u0e34\u0e18",10200],["\u0e27\u0e31\u0e14qW\u0e22\u0e32",10200],["\u0e28\u0e32\u0e25\u0e40\u0e08\u0e49\u0e32\u0e1e\u0e48\u0e2d\u0e40\u0e2a\u0e37\u0e2d",10200],[50,10200],["\u0e40\u0e2a\u0e32\u0e0a\u0e34\u0e07\u0e0a\u0e49\u0e32",10200]]],[19,[[51,10260]]],["\u0e20\u0e32\u0e29\u0e35\u0e40\u0e08\u0e23\u0e34\u0e0d",[[52,10160],[53,10160],[51,10160],[54,10160],["D\u0e2b\u0e27\u0e49\u0e32",10160],["D\u0e41\u0e27\u0e01",10160],["rI\u0e20\u0e32\u0e29\u0e35\u0e40\u0e08\u0e23\u0e34\u0e0d",10160]]],[55,[[55,10510],["\u0e41\u0e2a\u0e19\u0e41\u0e2a\u0e1a",10510]]],[56,[["\u0e0a\u0e48\u0e2d\u0e07\u0e19\u0e19\u0e17\u0e23\u0e35",10120],["D\u0e42\u0e1e\u0e07\u0e1e\u0e32\u0e07",10120]]],["\u0e23\u0e32\u0e0a\u0e40\u0e17\u0e27\u0e35",[["\u0e16\u0e19\u0e19\u0e1e\u0e0d\u0e32\u0e44\u0e17",10400],["\u0e16\u0e19\u0e19\u0e40\u0e1e\u0e0a\u0e23\u0e1a\u0e38\u0e23\u0e35",10400],["J\u0e1e\u0e0d\u0e32\u0e44\u0e17",10400],["\u0e21\u0e31\u0e01\u0e01\u0e30\u0e2a\u0e31\u0e19",10400]]],[57,[["D\u0e1b\u0e30\u0e01\u0e2d\u0e01",10140],[57,10140]]],[58,[["\u0e02\u0e38\u0e21N",10520],["I\u0e2a\u0e2d\u0e07\u0e15\u0e49\u0e19\u0e19\u0e38\u0e48\u0e19",10520],["Iq\u0e1b\u0e23\u0e30\u0e40\u0e27\u0e28",10520],["\u0e17\u0e31\u0e1a\u0e22\u0e32\u0e27",10520],[58,10520],["v\u0e1b\u0e25\u0e32\u0e17\u0e34\u0e27",10520]]],[59,[["\u0e08\u0e23\u0e40\u0e02\u0e49X",10230],[59,10230]]],[60,[["I\u0e40\u0e08\u0e49\u0e32\u0e04\u0e38\u0e13\u0e2a\u0e34\u0e07\u0e2b\u0e4c",10310],[61,10310],[60,10310],["\u0e2a\u0e30\u0e1e\u0e32\u0e19\u0e2a\u0e2d\u0e07",10310]]],[62,[["I\u0e15\u0e31\u0e19o",10110],["I\u0e40\u0e15\u0e22o",10110],["W\u0e42\u0e02\u0e19\u0e07o",10110],["W\u0e42\u0e02\u0e19\u0e07o",10260]]],[63,[[63,10250]]],[64,[[64,10240],[64,10250],["\u0e23\u0e32\u0e29\u0e0e\u0e23\u0e4c\u0e1e\u0e31\u0e12C",10240],[280,10250]]],[65,[["\u0e08\u0e31\u0e01\u0e23\u0e27\u0e23\u0e23\u0e14\u0e34\u0e4c",10100],[66,10100],[65,10100]]],["\u0e2a\u0e32\u0e17\u0e2