diff --git a/.gitignore b/.gitignore
index cb08935ec4..6f6d3d642f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,8 @@
.DS_Store
node_modules/
-bundles/
-PIG/bundles/
-Parse-Dashboard/public/bundles/
+# bundles/
+# PIG/bundles/
+# Parse-Dashboard/public/bundles/
Parse-Dashboard/parse-dashboard-config.json
npm-debug.log
.eslintcache
diff --git a/PIG/bundles/PIG.bundle.js b/PIG/bundles/PIG.bundle.js
new file mode 100644
index 0000000000..98257fa298
--- /dev/null
+++ b/PIG/bundles/PIG.bundle.js
@@ -0,0 +1,10657 @@
+/*
+ * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
+ * This devtool is neither made for production nor for readable output files.
+ * It uses "eval()" calls to create a separate source file in the browser devtools.
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
+ * or disable the default devtool with "devtool: false".
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
+ */
+/******/ (() => { // webpackBootstrap
+/******/ var __webpack_modules__ = ({
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js":
+/*!***************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js ***!
+ \***************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/array/from */ \"../node_modules/core-js-pure/stable/array/from.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js":
+/*!*******************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js ***!
+ \*******************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/array/is-array */ \"../node_modules/core-js-pure/stable/array/is-array.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js":
+/*!******************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js ***!
+ \******************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/bind */ \"../node_modules/core-js-pure/stable/instance/bind.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js":
+/*!********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js ***!
+ \********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/concat */ \"../node_modules/core-js-pure/stable/instance/concat.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/entries.js":
+/*!*********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/entries.js ***!
+ \*********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/entries */ \"../node_modules/core-js-pure/stable/instance/entries.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/entries.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/every.js":
+/*!*******************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/every.js ***!
+ \*******************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/every */ \"../node_modules/core-js-pure/stable/instance/every.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/every.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js":
+/*!********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js ***!
+ \********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/filter */ \"../node_modules/core-js-pure/stable/instance/filter.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/find-index.js":
+/*!************************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/find-index.js ***!
+ \************************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/find-index */ \"../node_modules/core-js-pure/stable/instance/find-index.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/find-index.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js":
+/*!******************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js ***!
+ \******************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/find */ \"../node_modules/core-js-pure/stable/instance/find.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js":
+/*!**********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js ***!
+ \**********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/for-each */ \"../node_modules/core-js-pure/stable/instance/for-each.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js":
+/*!**********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js ***!
+ \**********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/includes */ \"../node_modules/core-js-pure/stable/instance/includes.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js":
+/*!**********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js ***!
+ \**********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/index-of */ \"../node_modules/core-js-pure/stable/instance/index-of.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/keys.js":
+/*!******************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/keys.js ***!
+ \******************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/keys */ \"../node_modules/core-js-pure/stable/instance/keys.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/keys.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js":
+/*!*****************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js ***!
+ \*****************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/map */ \"../node_modules/core-js-pure/stable/instance/map.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js":
+/*!********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js ***!
+ \********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/reduce */ \"../node_modules/core-js-pure/stable/instance/reduce.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js":
+/*!*******************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js ***!
+ \*******************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/slice */ \"../node_modules/core-js-pure/stable/instance/slice.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/sort.js":
+/*!******************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/sort.js ***!
+ \******************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/sort */ \"../node_modules/core-js-pure/stable/instance/sort.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/sort.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/splice.js":
+/*!********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/splice.js ***!
+ \********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/splice */ \"../node_modules/core-js-pure/stable/instance/splice.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/splice.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js":
+/*!*************************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js ***!
+ \*************************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/starts-with */ \"../node_modules/core-js-pure/stable/instance/starts-with.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/instance/values.js":
+/*!********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/instance/values.js ***!
+ \********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/instance/values */ \"../node_modules/core-js-pure/stable/instance/values.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/instance/values.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js":
+/*!*******************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js ***!
+ \*******************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/json/stringify */ \"../node_modules/core-js-pure/stable/json/stringify.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/map.js":
+/*!********************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/map.js ***!
+ \********************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/map */ \"../node_modules/core-js-pure/stable/map/index.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/map.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/number/is-integer.js":
+/*!**********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/number/is-integer.js ***!
+ \**********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/number/is-integer */ \"../node_modules/core-js-pure/stable/number/is-integer.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/number/is-integer.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js":
+/*!******************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js ***!
+ \******************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/assign */ \"../node_modules/core-js-pure/stable/object/assign.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/object/create.js":
+/*!******************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/object/create.js ***!
+ \******************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/create */ \"../node_modules/core-js-pure/stable/object/create.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/object/create.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js":
+/*!*****************************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js ***!
+ \*****************************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/define-properties */ \"../node_modules/core-js-pure/stable/object/define-properties.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js":
+/*!***************************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js ***!
+ \***************************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/define-property */ \"../node_modules/core-js-pure/stable/object/define-property.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/object/entries.js":
+/*!*******************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/object/entries.js ***!
+ \*******************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/entries */ \"../node_modules/core-js-pure/stable/object/entries.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/object/entries.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/object/freeze.js":
+/*!******************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/object/freeze.js ***!
+ \******************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/freeze */ \"../node_modules/core-js-pure/stable/object/freeze.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/object/freeze.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js":
+/*!***************************************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js ***!
+ \***************************************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/get-own-property-descriptor */ \"../node_modules/core-js-pure/stable/object/get-own-property-descriptor.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js":
+/*!****************************************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js ***!
+ \****************************************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/get-own-property-descriptors */ \"../node_modules/core-js-pure/stable/object/get-own-property-descriptors.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js":
+/*!************************************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js ***!
+ \************************************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/get-own-property-symbols */ \"../node_modules/core-js-pure/stable/object/get-own-property-symbols.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-prototype-of.js":
+/*!****************************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-prototype-of.js ***!
+ \****************************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/get-prototype-of */ \"../node_modules/core-js-pure/stable/object/get-prototype-of.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-prototype-of.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js":
+/*!****************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js ***!
+ \****************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/object/keys */ \"../node_modules/core-js-pure/stable/object/keys.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/parse-int.js":
+/*!**************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/parse-int.js ***!
+ \**************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/parse-int */ \"../node_modules/core-js-pure/stable/parse-int.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/parse-int.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js":
+/*!************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js ***!
+ \************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/promise */ \"../node_modules/core-js-pure/stable/promise/index.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js":
+/*!**********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js ***!
+ \**********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/reflect/construct */ \"../node_modules/core-js-pure/stable/reflect/construct.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/set-interval.js":
+/*!*****************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/set-interval.js ***!
+ \*****************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/set-interval */ \"../node_modules/core-js-pure/stable/set-interval.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/set-interval.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js":
+/*!****************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js ***!
+ \****************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/set-timeout */ \"../node_modules/core-js-pure/stable/set-timeout.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/set.js":
+/*!********************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/set.js ***!
+ \********************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/set */ \"../node_modules/core-js-pure/stable/set/index.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/set.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js":
+/*!***********************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js ***!
+ \***********************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/symbol */ \"../node_modules/core-js-pure/stable/symbol/index.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js-stable/weak-map.js":
+/*!*************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js-stable/weak-map.js ***!
+ \*************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/stable/weak-map */ \"../node_modules/core-js-pure/stable/weak-map/index.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js-stable/weak-map.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/array/from.js":
+/*!********************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/array/from.js ***!
+ \********************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/array/from */ \"../node_modules/core-js-pure/features/array/from.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/array/from.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/array/is-array.js":
+/*!************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/array/is-array.js ***!
+ \************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/array/is-array */ \"../node_modules/core-js-pure/features/array/is-array.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/array/is-array.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js":
+/*!*****************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js ***!
+ \*****************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/get-iterator-method */ \"../node_modules/core-js-pure/features/get-iterator-method.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/instance/bind.js":
+/*!***********************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/instance/bind.js ***!
+ \***********************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/instance/bind */ \"../node_modules/core-js-pure/features/instance/bind.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/instance/bind.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/instance/index-of.js":
+/*!***************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/instance/index-of.js ***!
+ \***************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/instance/index-of */ \"../node_modules/core-js-pure/features/instance/index-of.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/instance/index-of.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/instance/slice.js":
+/*!************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/instance/slice.js ***!
+ \************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/instance/slice */ \"../node_modules/core-js-pure/features/instance/slice.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/instance/slice.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/map.js":
+/*!*************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/map.js ***!
+ \*************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/map */ \"../node_modules/core-js-pure/features/map/index.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/map.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/object/create.js":
+/*!***********************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/object/create.js ***!
+ \***********************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/object/create */ \"../node_modules/core-js-pure/features/object/create.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/object/create.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/object/define-property.js":
+/*!********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/object/define-property.js ***!
+ \********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/object/define-property */ \"../node_modules/core-js-pure/features/object/define-property.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/object/define-property.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/object/get-own-property-descriptor.js":
+/*!********************************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/object/get-own-property-descriptor.js ***!
+ \********************************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/object/get-own-property-descriptor */ \"../node_modules/core-js-pure/features/object/get-own-property-descriptor.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/object/get-own-property-descriptor.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js":
+/*!*********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js ***!
+ \*********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/object/get-prototype-of */ \"../node_modules/core-js-pure/features/object/get-prototype-of.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js":
+/*!*********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js ***!
+ \*********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/object/set-prototype-of */ \"../node_modules/core-js-pure/features/object/set-prototype-of.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/promise.js":
+/*!*****************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/promise.js ***!
+ \*****************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/promise */ \"../node_modules/core-js-pure/features/promise/index.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/promise.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/reflect/construct.js":
+/*!***************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/reflect/construct.js ***!
+ \***************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/reflect/construct */ \"../node_modules/core-js-pure/features/reflect/construct.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/reflect/construct.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/reflect/get.js":
+/*!*********************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/reflect/get.js ***!
+ \*********************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/reflect/get */ \"../node_modules/core-js-pure/features/reflect/get.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/reflect/get.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/symbol.js":
+/*!****************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/symbol.js ***!
+ \****************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/symbol */ \"../node_modules/core-js-pure/features/symbol/index.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/symbol.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js":
+/*!*************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js ***!
+ \*************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! core-js-pure/features/symbol/iterator */ \"../node_modules/core-js-pure/features/symbol/iterator.js\");\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js":
+/*!**************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js ***!
+ \**************************************************************************/
+/***/ ((module) => {
+
+eval("function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js":
+/*!************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js ***!
+ \************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs3/core-js/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js/array/is-array.js\");\n\nfunction _arrayWithHoles(arr) {\n if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/arrayWithoutHoles.js":
+/*!***************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/arrayWithoutHoles.js ***!
+ \***************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs3/core-js/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js/array/is-array.js\");\n\nvar arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ \"../node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (_Array$isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/arrayWithoutHoles.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js":
+/*!*******************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js ***!
+ \*******************************************************************************/
+/***/ ((module) => {
+
+eval("function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/asyncToGenerator.js":
+/*!**************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/asyncToGenerator.js ***!
+ \**************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _Promise = __webpack_require__(/*! @babel/runtime-corejs3/core-js/promise */ \"../node_modules/@babel/runtime-corejs3/core-js/promise.js\");\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n _Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new _Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/asyncToGenerator.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js":
+/*!************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js ***!
+ \************************************************************************/
+/***/ ((module) => {
+
+eval("function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/construct.js":
+/*!*******************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/construct.js ***!
+ \*******************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs3/core-js/reflect/construct */ \"../node_modules/@babel/runtime-corejs3/core-js/reflect/construct.js\");\n\nvar _bindInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js/instance/bind */ \"../node_modules/@babel/runtime-corejs3/core-js/instance/bind.js\");\n\nvar setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \"../node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ \"../node_modules/@babel/runtime-corejs3/helpers/isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = _Reflect$construct;\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n\n var Constructor = _bindInstanceProperty(Function).apply(Parent, a);\n\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/construct.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/createClass.js":
+/*!*********************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/createClass.js ***!
+ \*********************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js/object/define-property.js\");\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n\n _Object$defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/createClass.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js":
+/*!************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js ***!
+ \************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js/object/define-property.js\");\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n _Object$defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/get.js":
+/*!*************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/get.js ***!
+ \*************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _Reflect$get = __webpack_require__(/*! @babel/runtime-corejs3/core-js/reflect/get */ \"../node_modules/@babel/runtime-corejs3/core-js/reflect/get.js\");\n\nvar _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/get-own-property-descriptor */ \"../node_modules/@babel/runtime-corejs3/core-js/object/get-own-property-descriptor.js\");\n\nvar superPropBase = __webpack_require__(/*! ./superPropBase.js */ \"../node_modules/@babel/runtime-corejs3/helpers/superPropBase.js\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && _Reflect$get) {\n module.exports = _get = _Reflect$get;\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n\n var desc = _Object$getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/get.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js":
+/*!************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js ***!
+ \************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/set-prototype-of */ \"../node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js\");\n\nvar _Object$getPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/get-prototype-of */ \"../node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js\");\n\nfunction _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || _Object$getPrototypeOf(o);\n };\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/inherits.js":
+/*!******************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/inherits.js ***!
+ \******************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _Object$create = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/create */ \"../node_modules/@babel/runtime-corejs3/core-js/object/create.js\");\n\nvar setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \"../node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = _Object$create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/inherits.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js":
+/*!*******************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js ***!
+ \*******************************************************************************/
+/***/ ((module) => {
+
+eval("function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/isNativeFunction.js":
+/*!**************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/isNativeFunction.js ***!
+ \**************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _indexOfInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js/instance/index-of */ \"../node_modules/@babel/runtime-corejs3/core-js/instance/index-of.js\");\n\nfunction _isNativeFunction(fn) {\n var _context;\n\n return _indexOfInstanceProperty(_context = Function.toString.call(fn)).call(_context, \"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/isNativeFunction.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/isNativeReflectConstruct.js":
+/*!**********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/isNativeReflectConstruct.js ***!
+ \**********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs3/core-js/reflect/construct */ \"../node_modules/@babel/runtime-corejs3/core-js/reflect/construct.js\");\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false;\n if (_Reflect$construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/isNativeReflectConstruct.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/iterableToArray.js":
+/*!*************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/iterableToArray.js ***!
+ \*************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _Symbol = __webpack_require__(/*! @babel/runtime-corejs3/core-js/symbol */ \"../node_modules/@babel/runtime-corejs3/core-js/symbol.js\");\n\nvar _getIteratorMethod = __webpack_require__(/*! @babel/runtime-corejs3/core-js/get-iterator-method */ \"../node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js\");\n\nvar _Array$from = __webpack_require__(/*! @babel/runtime-corejs3/core-js/array/from */ \"../node_modules/@babel/runtime-corejs3/core-js/array/from.js\");\n\nfunction _iterableToArray(iter) {\n if (typeof _Symbol !== \"undefined\" && _getIteratorMethod(iter) != null || iter[\"@@iterator\"] != null) return _Array$from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/iterableToArray.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js":
+/*!******************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js ***!
+ \******************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _Symbol = __webpack_require__(/*! @babel/runtime-corejs3/core-js/symbol */ \"../node_modules/@babel/runtime-corejs3/core-js/symbol.js\");\n\nvar _getIteratorMethod = __webpack_require__(/*! @babel/runtime-corejs3/core-js/get-iterator-method */ \"../node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js\");\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof _Symbol !== \"undefined\" && _getIteratorMethod(arr) || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js":
+/*!*************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js ***!
+ \*************************************************************************/
+/***/ ((module) => {
+
+eval("function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/nonIterableSpread.js":
+/*!***************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/nonIterableSpread.js ***!
+ \***************************************************************************/
+/***/ ((module) => {
+
+eval("function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/nonIterableSpread.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js":
+/*!***********************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js ***!
+ \***********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _typeof = (__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\")[\"default\"]);\n\nvar assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ \"../node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js":
+/*!************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js ***!
+ \************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/set-prototype-of */ \"../node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js\");\n\nfunction _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js":
+/*!***********************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js ***!
+ \***********************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ \"../node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js\");\n\nvar iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ \"../node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ \"../node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js\");\n\nvar nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ \"../node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/superPropBase.js":
+/*!***********************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/superPropBase.js ***!
+ \***********************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ \"../node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/superPropBase.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js":
+/*!***************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js ***!
+ \***************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ \"../node_modules/@babel/runtime-corejs3/helpers/arrayWithoutHoles.js\");\n\nvar iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ \"../node_modules/@babel/runtime-corejs3/helpers/iterableToArray.js\");\n\nvar unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ \"../node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ \"../node_modules/@babel/runtime-corejs3/helpers/nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/typeof.js":
+/*!****************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/typeof.js ***!
+ \****************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _Symbol = __webpack_require__(/*! @babel/runtime-corejs3/core-js/symbol */ \"../node_modules/@babel/runtime-corejs3/core-js/symbol.js\");\n\nvar _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs3/core-js/symbol/iterator */ \"../node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js\");\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof _Symbol === \"function\" && typeof _Symbol$iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/typeof.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js":
+/*!************************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js ***!
+ \************************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _sliceInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js/instance/slice */ \"../node_modules/@babel/runtime-corejs3/core-js/instance/slice.js\");\n\nvar _Array$from = __webpack_require__(/*! @babel/runtime-corejs3/core-js/array/from */ \"../node_modules/@babel/runtime-corejs3/core-js/array/from.js\");\n\nvar arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ \"../node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n var _context;\n\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n\n var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return _Array$from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/helpers/wrapNativeSuper.js":
+/*!*************************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/helpers/wrapNativeSuper.js ***!
+ \*************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("var _Map = __webpack_require__(/*! @babel/runtime-corejs3/core-js/map */ \"../node_modules/@babel/runtime-corejs3/core-js/map.js\");\n\nvar _Object$create = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/create */ \"../node_modules/@babel/runtime-corejs3/core-js/object/create.js\");\n\nvar getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ \"../node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js\");\n\nvar setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \"../node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js\");\n\nvar isNativeFunction = __webpack_require__(/*! ./isNativeFunction.js */ \"../node_modules/@babel/runtime-corejs3/helpers/isNativeFunction.js\");\n\nvar construct = __webpack_require__(/*! ./construct.js */ \"../node_modules/@babel/runtime-corejs3/helpers/construct.js\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof _Map === \"function\" ? new _Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = _Object$create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/helpers/wrapNativeSuper.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime-corejs3/regenerator/index.js":
+/*!*******************************************************************!*\
+ !*** ../node_modules/@babel/runtime-corejs3/regenerator/index.js ***!
+ \*******************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! regenerator-runtime */ \"../node_modules/regenerator-runtime/runtime.js\");\n\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime-corejs3/regenerator/index.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@babel/runtime/regenerator/index.js":
+/*!***********************************************************!*\
+ !*** ../node_modules/@babel/runtime/regenerator/index.js ***!
+ \***********************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("module.exports = __webpack_require__(/*! regenerator-runtime */ \"../node_modules/regenerator-runtime/runtime.js\");\n\n\n//# sourceURL=webpack:///../node_modules/@babel/runtime/regenerator/index.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@react-dnd/asap/dist/esm/browser/asap.js":
+/*!****************************************************************!*\
+ !*** ../node_modules/@react-dnd/asap/dist/esm/browser/asap.js ***!
+ \****************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"asap\": () => (/* binding */ asap)\n/* harmony export */ });\n/* harmony import */ var _raw__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./raw */ \"../node_modules/@react-dnd/asap/dist/esm/browser/raw.js\");\n // rawAsap provides everything we need except exception management.\n// RawTasks are recycled to reduce GC churn.\n\nvar freeTasks = []; // We queue errors to ensure they are thrown in right order (FIFO).\n// Array-as-queue is good enough here, since we are just dealing with exceptions.\n\nvar pendingErrors = [];\nvar requestErrorThrow = _raw__WEBPACK_IMPORTED_MODULE_0__.rawAsap.makeRequestCallFromTimer(throwFirstError);\n\nfunction throwFirstError() {\n if (pendingErrors.length) {\n throw pendingErrors.shift();\n }\n}\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\n\n\nfunction asap(task) {\n var rawTask;\n\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n\n rawTask.task = task;\n (0,_raw__WEBPACK_IMPORTED_MODULE_0__.rawAsap)(rawTask);\n} // We wrap tasks with recyclable task objects. A task object implements\n// `call`, just like a function.\n\nvar RawTask =\n/** @class */\nfunction () {\n function RawTask() {}\n\n RawTask.prototype.call = function () {\n try {\n this.task.call();\n } catch (error) {\n if (asap.onerror) {\n // This hook exists purely for testing purposes.\n // Its name will be periodically randomized to break any code that\n // depends on its existence.\n asap.onerror(error);\n } else {\n // In a web browser, exceptions are not fatal. However, to avoid\n // slowing down the queue of pending tasks, we rethrow the error in a\n // lower priority turn.\n pendingErrors.push(error);\n requestErrorThrow();\n }\n } finally {\n this.task = null;\n freeTasks[freeTasks.length] = this;\n }\n };\n\n return RawTask;\n}();\n\n//# sourceURL=webpack:///../node_modules/@react-dnd/asap/dist/esm/browser/asap.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@react-dnd/asap/dist/esm/browser/index.js":
+/*!*****************************************************************!*\
+ !*** ../node_modules/@react-dnd/asap/dist/esm/browser/index.js ***!
+ \*****************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"asap\": () => (/* reexport safe */ _asap__WEBPACK_IMPORTED_MODULE_0__.asap)\n/* harmony export */ });\n/* harmony import */ var _asap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./asap */ \"../node_modules/@react-dnd/asap/dist/esm/browser/asap.js\");\n\n\n//# sourceURL=webpack:///../node_modules/@react-dnd/asap/dist/esm/browser/index.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@react-dnd/asap/dist/esm/browser/raw.js":
+/*!***************************************************************!*\
+ !*** ../node_modules/@react-dnd/asap/dist/esm/browser/raw.js ***!
+ \***************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"rawAsap\": () => (/* binding */ rawAsap)\n/* harmony export */ });\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n } // Equivalent to push, but avoids a function call.\n\n\n queue[queue.length] = task;\n}\nvar queue = []; // Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\n// @ts-ignore\n\nvar flushing = false; // `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\n\nvar requestFlush; // The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\n\nvar index = 0; // If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\n\nvar capacity = 1024; // The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\n\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index; // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n\n index = index + 1;\n queue[currentIndex].call(); // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n\n queue.length -= index;\n index = 0;\n }\n }\n\n queue.length = 0;\n index = 0;\n flushing = false;\n} // `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\n\n\nvar scope = typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver; // MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\n\nif (typeof BrowserMutationObserver === 'function') {\n requestFlush = makeRequestCallFromMutationObserver(flush); // MessageChannels are desirable because they give direct access to the HTML\n // task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n // 11-12, and in web workers in many engines.\n // Although message channels yield to any queued rendering and IO tasks, they\n // would be better than imposing the 4ms delay of timers.\n // However, they do not work reliably in Internet Explorer or Safari.\n // Internet Explorer 10 is the only browser that has setImmediate but does\n // not have MutationObservers.\n // Although setImmediate yields to the browser's renderer, it would be\n // preferrable to falling back to setTimeout since it does not have\n // the minimum 4ms penalty.\n // Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n // Desktop to a lesser extent) that renders both setImmediate and\n // MessageChannel useless for the purposes of ASAP.\n // https://github.com/kriskowal/q/issues/396\n // Timers are implemented universally.\n // We fall back to timers in workers in most engines, and in foreground\n // contexts in the following browsers.\n // However, note that even this simple case requires nuances to operate in a\n // broad spectrum of browsers.\n //\n // - Firefox 3-13\n // - Internet Explorer 6-9\n // - iPad Safari 4.3\n // - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n} // `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\n\n\nrawAsap.requestFlush = requestFlush; // To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\n\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode('');\n observer.observe(node, {\n characterData: true\n });\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n} // The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0); // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n} // This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\n\n\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer; // ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n\n//# sourceURL=webpack:///../node_modules/@react-dnd/asap/dist/esm/browser/raw.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@react-dnd/invariant/dist/invariant.esm.js":
+/*!******************************************************************!*\
+ !*** ../node_modules/@react-dnd/invariant/dist/invariant.esm.js ***!
+ \******************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"invariant\": () => (/* binding */ invariant)\n/* harmony export */ });\n/**\r\n * Use invariant() to assert state which your program assumes to be true.\r\n *\r\n * Provide sprintf-style format (only %s is supported) and arguments\r\n * to provide information about what broke and what you were\r\n * expecting.\r\n *\r\n * The invariant message will be stripped in production, but the invariant\r\n * will remain to ensure logic does not differ in production.\r\n */\nfunction invariant(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n if (true) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n\n throw error;\n }\n}\n\n\n//# sourceMappingURL=invariant.esm.js.map\n\n\n//# sourceURL=webpack:///../node_modules/@react-dnd/invariant/dist/invariant.esm.js?");
+
+/***/ }),
+
+/***/ "../node_modules/@react-dnd/shallowequal/dist/shallowequal.esm.js":
+/*!************************************************************************!*\
+ !*** ../node_modules/@react-dnd/shallowequal/dist/shallowequal.esm.js ***!
+ \************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"shallowEqual\": () => (/* binding */ shallowEqual)\n/* harmony export */ });\nfunction shallowEqual(objA, objB, compare, compareContext) {\n var compareResult = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (compareResult !== void 0) {\n return !!compareResult;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); // Test for A's keys different from B.\n\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n compareResult = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (compareResult === false || compareResult === void 0 && valueA !== valueB) {\n return false;\n }\n }\n\n return true;\n}\n\n\n//# sourceMappingURL=shallowequal.esm.js.map\n\n\n//# sourceURL=webpack:///../node_modules/@react-dnd/shallowequal/dist/shallowequal.esm.js?");
+
+/***/ }),
+
+/***/ "../node_modules/ace-builds/src-noconflict/ace.js":
+/*!********************************************************!*\
+ !*** ../node_modules/ace-builds/src-noconflict/ace.js ***!
+ \********************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("/* module decorator */ module = __webpack_require__.nmd(module);\n/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && require.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar require = function(module, callback) {\n var packagedModule = _require(\"\", module, callback);\n if (packagedModule == undefined && require.original)\n return require.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _require(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.require || !root.require.packaged) {\n require.original = root.require;\n root.require = require;\n root.require.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nif (typeof Element != \"undefined\" && !Element.prototype.remove) {\n Object.defineProperty(Element.prototype, \"remove\", {\n enumerable: false,\n writable: true,\n configurable: true,\n value: function() { this.parentNode && this.parentNode.removeChild(this); }\n });\n}\n\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nexports.OS = {\n LINUX: \"LINUX\",\n MAC: \"MAC\",\n WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function() {\n if (exports.isMac) {\n return exports.OS.MAC;\n } else if (exports.isLinux) {\n return exports.OS.LINUX;\n } else {\n return exports.OS.WINDOWS;\n }\n};\nvar _navigator = typeof navigator == \"object\" ? navigator : {};\n\nvar os = (/mac|win|linux/i.exec(_navigator.platform) || [\"other\"])[0].toLowerCase();\nvar ua = _navigator.userAgent || \"\";\nvar appName = _navigator.appName || \"\";\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE = \n (appName == \"Microsoft Internet Explorer\" || appName.indexOf(\"MSAppHost\") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]); // for ie\n \nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = ua.match(/ Gecko\\/\\d+/);\nexports.isOpera = typeof opera == \"object\" && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\n\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\n\nexports.isEdge = parseFloat(ua.split(\" Edge/\")[1]) || undefined;\n\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\n\nexports.isAndroid = ua.indexOf(\"Android\") >= 0;\n\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\n\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\n\nif (exports.isIOS) exports.isMac = true;\n\nexports.isMobile = exports.isIOS || exports.isAndroid;\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar useragent = require(\"./useragent\"); \nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\n\nexports.buildDom = function buildDom(arr, parent, refs) {\n if (typeof arr == \"string\" && arr) {\n var txt = document.createTextNode(arr);\n if (parent)\n parent.appendChild(txt);\n return txt;\n }\n \n if (!Array.isArray(arr)) {\n if (arr && arr.appendChild && parent)\n parent.appendChild(arr);\n return arr;\n }\n if (typeof arr[0] != \"string\" || !arr[0]) {\n var els = [];\n for (var i = 0; i < arr.length; i++) {\n var ch = buildDom(arr[i], parent, refs);\n ch && els.push(ch);\n }\n return els;\n }\n \n var el = document.createElement(arr[0]);\n var options = arr[1];\n var childIndex = 1;\n if (options && typeof options == \"object\" && !Array.isArray(options))\n childIndex = 2;\n for (var i = childIndex; i < arr.length; i++)\n buildDom(arr[i], el, refs);\n if (childIndex == 2) {\n Object.keys(options).forEach(function(n) {\n var val = options[n];\n if (n === \"class\") {\n el.className = Array.isArray(val) ? val.join(\" \") : val;\n } else if (typeof val == \"function\" || n == \"value\" || n[0] == \"$\") {\n el[n] = val;\n } else if (n === \"ref\") {\n if (refs) refs[val] = el;\n } else if (n === \"style\") {\n if (typeof val == \"string\") el.style.cssText = val;\n } else if (val != null) {\n el.setAttribute(n, val);\n }\n });\n }\n if (parent)\n parent.appendChild(el);\n return el;\n};\n\nexports.getDocumentHead = function(doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\n\nexports.createElement = function(tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\n\nexports.removeChildren = function(element) {\n element.innerHTML = \"\";\n};\n\nexports.createTextNode = function(textContent, element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createTextNode(textContent);\n};\n\nexports.createFragment = function(element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createDocumentFragment();\n};\n\nexports.hasCssClass = function(el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function(el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\n\nexports.toggleCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function(node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n } else {\n exports.removeCssClass(node, className);\n }\n};\n\nexports.hasCssString = function(id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n if ((sheets = doc.querySelectorAll(\"style\"))) {\n while (index < sheets.length)\n if (sheets[index++].id === id)\n return true;\n }\n};\n\nvar strictCSP;\nvar cssCache = [];\nexports.useStrictCSP = function(value) {\n strictCSP = value;\n if (value == false) insertPendingStyles();\n else if (!cssCache) cssCache = [];\n};\n\nfunction insertPendingStyles() {\n var cache = cssCache;\n cssCache = null;\n cache && cache.forEach(function(item) {\n importCssString(item[0], item[1]);\n });\n}\n\nfunction importCssString(cssText, id, target) {\n if (typeof document == \"undefined\")\n return;\n if (cssCache) {\n if (target) {\n insertPendingStyles();\n } else if (target === false) {\n return cssCache.push([cssText, id]);\n }\n }\n if (strictCSP) return;\n\n var container = target;\n if (!target || !target.getRootNode) {\n container = document;\n } else {\n container = target.getRootNode();\n if (!container || container == target)\n container = document;\n }\n \n var doc = container.ownerDocument || container;\n if (id && exports.hasCssString(id, container))\n return null;\n \n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n \n var style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n\n if (container == doc)\n container = exports.getDocumentHead(doc);\n container.insertBefore(style, container.firstChild);\n}\nexports.importCssString = importCssString;\n\nexports.importCssStylsheet = function(uri, doc) {\n exports.buildDom([\"link\", {rel: \"stylesheet\", href: uri}], exports.getDocumentHead(doc));\n};\nexports.scrollbarWidth = function(document) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n\n outer.appendChild(inner);\n\n var body = document.documentElement;\n body.appendChild(outer);\n\n var noScrollbar = inner.offsetWidth;\n\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n\n if (noScrollbar == withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n\n body.removeChild(outer);\n\n return noScrollbar-withScrollbar;\n};\n\nexports.computedStyle = function(element, style) {\n return window.getComputedStyle(element, \"\") || {};\n};\n\nexports.setStyle = function(styles, property, value) {\n if (styles[property] !== value) {\n styles[property] = value;\n }\n};\n\nexports.HAS_CSS_ANIMATION = false;\nexports.HAS_CSS_TRANSFORMS = false;\nexports.HI_DPI = useragent.isWin\n ? typeof window !== \"undefined\" && window.devicePixelRatio >= 1.5\n : true;\n\nif (useragent.isChromeOS) exports.HI_DPI = false;\n\nif (typeof document !== \"undefined\") {\n var div = document.createElement(\"div\");\n if (exports.HI_DPI && div.style.transform !== undefined)\n exports.HAS_CSS_TRANSFORMS = true;\n if (!useragent.isEdge && typeof div.style.animationName !== \"undefined\")\n exports.HAS_CSS_ANIMATION = true;\n div = null;\n}\n\nif (exports.HAS_CSS_TRANSFORMS) {\n exports.translate = function(element, tx, ty) {\n element.style.transform = \"translate(\" + Math.round(tx) + \"px, \" + Math.round(ty) +\"px)\";\n };\n} else {\n exports.translate = function(element, tx, ty) {\n element.style.top = Math.round(ty) + \"px\";\n element.style.left = Math.round(tx) + \"px\";\n };\n}\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nexports.inherits = function(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\n\nexports.mixin = function(obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\n\nexports.implement = function(proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./oop\");\nvar Keys = (function() {\n var ret = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',\n 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'\n },\n\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\" : 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8, \n \"control\": 1\n },\n\n FUNCTION_KEYS : {\n 8 : \"Backspace\",\n 9 : \"Tab\",\n 13 : \"Return\",\n 19 : \"Pause\",\n 27 : \"Esc\",\n 32 : \"Space\",\n 33 : \"PageUp\",\n 34 : \"PageDown\",\n 35 : \"End\",\n 36 : \"Home\",\n 37 : \"Left\",\n 38 : \"Up\",\n 39 : \"Right\",\n 40 : \"Down\",\n 44 : \"Print\",\n 45 : \"Insert\",\n 46 : \"Delete\",\n 96 : \"Numpad0\",\n 97 : \"Numpad1\",\n 98 : \"Numpad2\",\n 99 : \"Numpad3\",\n 100: \"Numpad4\",\n 101: \"Numpad5\",\n 102: \"Numpad6\",\n 103: \"Numpad7\",\n 104: \"Numpad8\",\n 105: \"Numpad9\",\n '-13': \"NumpadEnter\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n\n PRINTABLE_KEYS: {\n 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\',221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n };\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret[\"return\"];\n ret.escape = ret.esc;\n ret.del = ret[\"delete\"];\n ret[173] = '-';\n \n (function() {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) { \n ret.KEY_MODS[i] = mods.filter(function(x) {\n return i & ret.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n })();\n\n ret.KEY_MODS[0] = \"\";\n ret.KEY_MODS[-1] = \"input-\";\n\n return ret;\n})();\noop.mixin(exports, Keys);\n\nexports.keyCodeToString = function(keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar keys = require(\"./keys\");\nvar useragent = require(\"./useragent\");\n\nvar pressedKeys = null;\nvar ts = 0;\n\nvar activeListenerOptions;\nfunction detectListenerOptionsSupport() {\n activeListenerOptions = false;\n try {\n document.createComment(\"\").addEventListener(\"test\", function() {}, { \n get passive() { \n activeListenerOptions = {passive: false};\n }\n });\n } catch(e) {}\n}\n\nfunction getListenerOptions() {\n if (activeListenerOptions == undefined)\n detectListenerOptionsSupport();\n return activeListenerOptions;\n}\n\nfunction EventListener(elem, type, callback) {\n this.elem = elem;\n this.type = type;\n this.callback = callback;\n}\nEventListener.prototype.destroy = function() {\n removeListener(this.elem, this.type, this.callback);\n this.elem = this.type = this.callback = undefined;\n};\n\nvar addListener = exports.addListener = function(elem, type, callback, destroyer) {\n elem.addEventListener(type, callback, getListenerOptions());\n if (destroyer)\n destroyer.$toDestroy.push(new EventListener(elem, type, callback));\n};\n\nvar removeListener = exports.removeListener = function(elem, type, callback) {\n elem.removeEventListener(type, callback, getListenerOptions());\n};\nexports.stopEvent = function(e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\n\nexports.stopPropagation = function(e) {\n if (e.stopPropagation)\n e.stopPropagation();\n};\n\nexports.preventDefault = function(e) {\n if (e.preventDefault)\n e.preventDefault();\n};\nexports.getButton = function(e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n return e.button;\n};\n\nexports.capture = function(el, eventHandler, releaseCaptureHandler) {\n var ownerDocument = el && el.ownerDocument || document;\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n\n removeListener(ownerDocument, \"mousemove\", eventHandler);\n removeListener(ownerDocument, \"mouseup\", onMouseUp);\n removeListener(ownerDocument, \"dragstart\", onMouseUp);\n }\n\n addListener(ownerDocument, \"mousemove\", eventHandler);\n addListener(ownerDocument, \"mouseup\", onMouseUp);\n addListener(ownerDocument, \"dragstart\", onMouseUp);\n \n return onMouseUp;\n};\n\nexports.addMouseWheelListener = function(el, callback, destroyer) {\n if (\"onmousewheel\" in el) {\n addListener(el, \"mousewheel\", function(e) {\n var factor = 8;\n if (e.wheelDeltaX !== undefined) {\n e.wheelX = -e.wheelDeltaX / factor;\n e.wheelY = -e.wheelDeltaY / factor;\n } else {\n e.wheelX = 0;\n e.wheelY = -e.wheelDelta / factor;\n }\n callback(e);\n }, destroyer);\n } else if (\"onwheel\" in el) {\n addListener(el, \"wheel\", function(e) {\n var factor = 0.35;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = e.deltaX * factor || 0;\n e.wheelY = e.deltaY * factor || 0;\n break;\n case e.DOM_DELTA_LINE:\n case e.DOM_DELTA_PAGE:\n e.wheelX = (e.deltaX || 0) * 5;\n e.wheelY = (e.deltaY || 0) * 5;\n break;\n }\n \n callback(e);\n }, destroyer);\n } else {\n addListener(el, \"DOMMouseScroll\", function(e) {\n if (e.axis && e.axis == e.HORIZONTAL_AXIS) {\n e.wheelX = (e.detail || 0) * 5;\n e.wheelY = 0;\n } else {\n e.wheelX = 0;\n e.wheelY = (e.detail || 0) * 5;\n }\n callback(e);\n }, destroyer);\n }\n};\n\nexports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName, destroyer) {\n var clicks = 0;\n var startX, startY, timer; \n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n } else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n } else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600);\n\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n \n e._clicks = clicks;\n\n eventHandler[callbackName](\"mousedown\", e);\n\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function(el) {\n addListener(el, \"mousedown\", onMousedown, destroyer);\n });\n};\n\nvar getModifierHash = function(e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n};\n\nexports.getModifierString = function(e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\n\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n } else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n \n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n \n if (!hashId && keyCode === 13) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n \n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n \n return callback(e, hashId, keyCode);\n}\n\n\nexports.addCommandKeyListener = function(el, callback, destroyer) {\n if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, \"keydown\", function(e) {\n lastKeyDownKeyCode = e.keyCode;\n }, destroyer);\n addListener(el, \"keypress\", function(e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n }, destroyer);\n } else {\n var lastDefaultPrevented = null;\n\n addListener(el, \"keydown\", function(e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n }, destroyer);\n\n addListener(el, \"keypress\", function(e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n }, destroyer);\n\n addListener(el, \"keyup\", function(e) {\n pressedKeys[e.keyCode] = null;\n }, destroyer);\n\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\n\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function(callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + (postMessageId++);\n \n var listener = function(e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n removeListener(win, \"message\", listener);\n callback();\n }\n };\n \n addListener(win, \"message\", listener);\n win.postMessage(messageName, \"*\");\n };\n}\n\nexports.$idleBlocked = false;\nexports.onIdle = function(cb, timeout) {\n return setTimeout(function handler() {\n if (!exports.$idleBlocked) {\n cb();\n } else {\n setTimeout(handler, 100);\n }\n }, timeout);\n};\n\nexports.$idleBlockId = null;\nexports.blockIdle = function(delay) {\n if (exports.$idleBlockId)\n clearTimeout(exports.$idleBlockId);\n \n exports.$idleBlocked = true;\n exports.$idleBlockId = setTimeout(function() {\n exports.$idleBlocked = false;\n }, delay || 100);\n};\n\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\n\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function(callback) {\n setTimeout(callback, 17);\n };\n});\n\nace.define(\"ace/range\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nvar comparePoints = function(p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nvar Range = function(startRow, startColumn, endRow, endColumn) {\n this.start = {\n row: startRow,\n column: startColumn\n };\n\n this.end = {\n row: endRow,\n column: endColumn\n };\n};\n\n(function() {\n this.isEqual = function(range) {\n return this.start.row === range.start.row &&\n this.end.row === range.end.row &&\n this.start.column === range.start.column &&\n this.end.column === range.end.column;\n };\n this.toString = function() {\n return (\"Range: [\" + this.start.row + \"/\" + this.start.column +\n \"] -> [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n\n this.contains = function(row, column) {\n return this.compare(row, column) == 0;\n };\n this.compareRange = function(range) {\n var cmp,\n end = range.end,\n start = range.start;\n\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n } else if (cmp == 0) {\n return 1;\n } else {\n return 0;\n }\n } else if (cmp == -1) {\n return -2;\n } else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n } else if (cmp == 1) {\n return 42;\n } else {\n return 0;\n }\n }\n };\n this.comparePoint = function(p) {\n return this.compare(p.row, p.column);\n };\n this.containsRange = function(range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n this.intersects = function(range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n this.isEnd = function(row, column) {\n return this.end.row == row && this.end.column == column;\n };\n this.isStart = function(row, column) {\n return this.start.row == row && this.start.column == column;\n };\n this.setStart = function(row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n } else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n this.setEnd = function(row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n } else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n this.inside = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideStart = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideEnd = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.compare = function(row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n\n if (row < this.start.row)\n return -1;\n\n if (row > this.end.row)\n return 1;\n\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n\n return 0;\n };\n this.compareStart = function(row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareEnd = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareInside = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.clipRows = function(firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = {row: lastRow + 1, column: 0};\n else if (this.end.row < firstRow)\n var end = {row: firstRow, column: 0};\n\n if (this.start.row > lastRow)\n var start = {row: lastRow + 1, column: 0};\n else if (this.start.row < firstRow)\n var start = {row: firstRow, column: 0};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n this.extend = function(row, column) {\n var cmp = this.compare(row, column);\n\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = {row: row, column: column};\n else\n var end = {row: row, column: column};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n\n this.isEmpty = function() {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n this.isMultiLine = function() {\n return (this.start.row !== this.end.row);\n };\n this.clone = function() {\n return Range.fromPoints(this.start, this.end);\n };\n this.collapseRows = function() {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n this.toScreenRange = function(session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n\n return new Range(\n screenPosStart.row, screenPosStart.column,\n screenPosEnd.row, screenPosEnd.column\n );\n };\n this.moveBy = function(row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n\n}).call(Range.prototype);\nRange.fromPoints = function(start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\n\nRange.comparePoints = function(p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\n\n\nexports.Range = Range;\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nexports.last = function(a) {\n return a[a.length - 1];\n};\n\nexports.stringReverse = function(string) {\n return string.split(\"\").reverse().join(\"\");\n};\n\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n\n if (count >>= 1)\n string += string;\n }\n return result;\n};\n\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\n\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\n\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\n\nexports.copyObject = function(obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\n\nexports.copyArray = function(array){\n var copy = [];\n for (var i=0, l=array.length; i Date.now() - 50)\n return true;\n return $cancelT = false;\n },\n cancel: function() {\n $cancelT = Date.now();\n }\n};\n\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module) {\n\"use strict\";\n\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar clipboard = require(\"../clipboard\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\nvar HAS_FOCUS_ARGS = useragent.isChrome > 63;\nvar MAX_LINE_LENGTH = 400;\n\nvar KEYS = require(\"../lib/keys\");\nvar MODS = KEYS.KEY_MODS;\nvar isIOS = useragent.isIOS;\nvar valueResetRegex = isIOS ? /\\s/ : /\\n/;\nvar isMobile = useragent.isMobile;\n\nvar TextInput = function(parentNode, host) {\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", false);\n\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var sendingText = false;\n var tempStyle = '';\n \n if (!isMobile)\n text.style.fontSize = \"1px\";\n\n var commandMode = false;\n var ignoreFocusEvents = false;\n \n var lastValue = \"\";\n var lastSelectionStart = 0;\n var lastSelectionEnd = 0;\n var lastRestoreEnd = 0;\n try { var isFocused = document.activeElement === text; } catch(e) {}\n \n event.addListener(text, \"blur\", function(e) {\n if (ignoreFocusEvents) return;\n host.onBlur(e);\n isFocused = false;\n }, host);\n event.addListener(text, \"focus\", function(e) {\n if (ignoreFocusEvents) return;\n isFocused = true;\n if (useragent.isEdge) {\n try {\n if (!document.hasFocus())\n return;\n } catch(e) {}\n }\n host.onFocus(e);\n if (useragent.isEdge)\n setTimeout(resetSelection);\n else\n resetSelection();\n }, host);\n this.$focusScroll = false;\n this.focus = function() {\n if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n return text.focus({ preventScroll: true });\n\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n try {\n var isTransformed = text.getBoundingClientRect().top != 0;\n } catch(e) {\n return;\n }\n var ancestors = [];\n if (isTransformed) {\n var t = text.parentElement;\n while (t && t.nodeType == 1) {\n ancestors.push(t);\n t.setAttribute(\"ace_nocontext\", true);\n if (!t.parentElement && t.getRootNode)\n t = t.getRootNode().host;\n else\n t = t.parentElement;\n }\n }\n text.focus({ preventScroll: true });\n if (isTransformed) {\n ancestors.forEach(function(p) {\n p.removeAttribute(\"ace_nocontext\");\n });\n }\n setTimeout(function() {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function() {\n text.blur();\n };\n this.isFocused = function() {\n return isFocused;\n };\n \n host.on(\"beforeEndOperation\", function() {\n var curOp = host.curOp;\n var commandName = curOp && curOp.command && curOp.command.name;\n if (commandName == \"insertstring\")\n return;\n var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);\n if (inComposition && isUserAction) {\n lastValue = text.value = \"\";\n onCompositionEnd();\n }\n resetSelection();\n });\n \n var resetSelection = isIOS\n ? function(value) {\n if (!isFocused || (copied && !value) || sendingText) return;\n if (!value) \n value = \"\";\n var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n if (newValue != text.value)\n text.value = lastValue = newValue;\n \n var selectionStart = 4;\n var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));\n\n if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {\n text.setSelectionRange(selectionStart, selectionEnd);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n : function() {\n if (inComposition || sendingText)\n return;\n if (!isFocused && !afterContextMenu)\n return;\n inComposition = true;\n \n var selectionStart = 0;\n var selectionEnd = 0;\n var line = \"\";\n\n if (host.session) {\n var selection = host.selection;\n var range = selection.getRange();\n var row = selection.cursor.row;\n selectionStart = range.start.column;\n selectionEnd = range.end.column;\n line = host.session.getLine(row);\n\n if (range.start.row != row) {\n var prevLine = host.session.getLine(row - 1);\n selectionStart = range.start.row < row - 1 ? 0 : selectionStart;\n selectionEnd += prevLine.length + 1;\n line = prevLine + \"\\n\" + line;\n }\n else if (range.end.row != row) {\n var nextLine = host.session.getLine(row + 1);\n selectionEnd = range.end.row > row + 1 ? nextLine.length : selectionEnd;\n selectionEnd += line.length + 1;\n line = line + \"\\n\" + nextLine;\n }\n else if (isMobile && row > 0) {\n line = \"\\n\" + line;\n selectionEnd += 1;\n selectionStart += 1;\n }\n\n if (line.length > MAX_LINE_LENGTH) {\n if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {\n line = line.slice(0, MAX_LINE_LENGTH);\n } else {\n line = \"\\n\";\n if (selectionStart == selectionEnd) {\n selectionStart = selectionEnd = 0;\n }\n else {\n selectionStart = 0;\n selectionEnd = 1;\n }\n }\n }\n }\n\n var newValue = line + \"\\n\\n\";\n if (newValue != lastValue) {\n text.value = lastValue = newValue;\n lastSelectionStart = lastSelectionEnd = newValue.length;\n }\n if (afterContextMenu) {\n lastSelectionStart = text.selectionStart;\n lastSelectionEnd = text.selectionEnd;\n }\n if (\n lastSelectionEnd != selectionEnd \n || lastSelectionStart != selectionStart \n || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n ) {\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n } catch(e){}\n }\n inComposition = false;\n };\n this.resetSelection = resetSelection;\n\n if (isFocused)\n host.onFocus();\n\n\n var isAllSelected = function(text) {\n return text.selectionStart === 0 && text.selectionEnd >= lastValue.length\n && text.value === lastValue && lastValue\n && text.selectionEnd !== lastSelectionEnd;\n };\n\n var onSelect = function(e) {\n if (inComposition)\n return;\n if (copied) {\n copied = false;\n } else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n } else if (isMobile && text.selectionStart != lastSelectionStart) {\n resetSelection();\n }\n };\n\n var inputHandler = null;\n this.setInputHandler = function(cb) {inputHandler = cb;};\n this.getInputHandler = function() {return inputHandler;};\n var afterContextMenu = false;\n \n var sendText = function(value, fromInput) {\n if (afterContextMenu)\n afterContextMenu = false;\n if (pasted) {\n resetSelection();\n if (value)\n host.onPaste(value);\n pasted = false;\n return \"\";\n } else {\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n \n var extendLeft = lastSelectionStart;\n var extendRight = lastValue.length - lastSelectionEnd;\n \n var inserted = value;\n var restoreStart = value.length - selectionStart;\n var restoreEnd = value.length - selectionEnd;\n \n var i = 0;\n while (extendLeft > 0 && lastValue[i] == value[i]) {\n i++;\n extendLeft--;\n }\n inserted = inserted.slice(i);\n i = 1;\n while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {\n i++;\n extendRight--;\n }\n restoreStart -= i-1;\n restoreEnd -= i-1;\n var endIndex = inserted.length - i + 1;\n if (endIndex < 0) {\n extendLeft = -endIndex;\n endIndex = 0;\n } \n inserted = inserted.slice(0, endIndex);\n if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)\n return \"\";\n sendingText = true;\n var shouldReset = false;\n if (useragent.isAndroid && inserted == \". \") {\n inserted = \" \";\n shouldReset = true;\n }\n \n if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {\n host.onTextInput(inserted);\n } else {\n host.onTextInput(inserted, {\n extendLeft: extendLeft,\n extendRight: extendRight,\n restoreStart: restoreStart,\n restoreEnd: restoreEnd\n });\n }\n sendingText = false;\n \n lastValue = value;\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n lastRestoreEnd = restoreEnd;\n return shouldReset ? \"\\n\" : inserted;\n }\n };\n var onInput = function(e) {\n if (inComposition)\n return onCompositionUpdate();\n if (e && e.inputType) {\n if (e.inputType == \"historyUndo\") return host.execCommand(\"undo\");\n if (e.inputType == \"historyRedo\") return host.execCommand(\"redo\");\n }\n var data = text.value;\n var inserted = sendText(data, true);\n if (\n data.length > MAX_LINE_LENGTH + 100 \n || valueResetRegex.test(inserted)\n || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd\n ) {\n resetSelection();\n }\n };\n \n var handleClipboardData = function(e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n } else {\n return clipboardData.getData(mime);\n }\n } catch(e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n\n var doCopy = function(e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n\n if (handleClipboardData(e, data)) {\n if (isIOS) {\n resetSelection(data);\n copied = data;\n setTimeout(function () {\n copied = false;\n }, 10);\n }\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n } else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function(){\n copied = false;\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n \n var onCut = function(e) {\n doCopy(e, true);\n };\n \n var onCopy = function(e) {\n doCopy(e, false);\n };\n \n var onPaste = function(e) {\n var data = handleClipboardData(e);\n if (clipboard.pasteCancelled())\n return;\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n\n event.addCommandKeyListener(text, host.onCommandKey.bind(host), host);\n\n event.addListener(text, \"select\", onSelect, host);\n event.addListener(text, \"input\", onInput, host);\n\n event.addListener(text, \"cut\", onCut, host);\n event.addListener(text, \"copy\", onCopy, host);\n event.addListener(text, \"paste\", onPaste, host);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function(e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n }, host);\n }\n var onCompositionStart = function(e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly) \n return;\n \n inComposition = {};\n\n if (commandMode)\n return;\n \n if (e.data)\n inComposition.useTextareaForIME = false;\n \n setTimeout(onCompositionUpdate, 0);\n host._signal(\"compositionStart\");\n host.on(\"mousedown\", cancelComposition);\n \n var range = host.getSelectionRange();\n range.end.row = range.start.row;\n range.end.column = range.start.column;\n inComposition.markerRange = range;\n inComposition.selectionStart = lastSelectionStart;\n host.onCompositionStart(inComposition);\n \n if (inComposition.useTextareaForIME) {\n lastValue = text.value = \"\";\n lastSelectionStart = 0;\n lastSelectionEnd = 0;\n }\n else {\n if (text.msGetInputContext)\n inComposition.context = text.msGetInputContext();\n if (text.getInputContext)\n inComposition.context = text.getInputContext();\n }\n };\n\n var onCompositionUpdate = function() {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n if (commandMode)\n return cancelComposition();\n \n if (inComposition.useTextareaForIME) {\n host.onCompositionUpdate(text.value);\n }\n else {\n var data = text.value;\n sendText(data);\n if (inComposition.markerRange) {\n if (inComposition.context) {\n inComposition.markerRange.start.column = inComposition.selectionStart\n = inComposition.context.compositionStartOffset;\n }\n inComposition.markerRange.end.column = inComposition.markerRange.start.column\n + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;\n }\n }\n };\n\n var onCompositionEnd = function(e) {\n if (!host.onCompositionEnd || host.$readOnly) return;\n inComposition = false;\n host.onCompositionEnd();\n host.off(\"mousedown\", cancelComposition);\n if (e) onInput();\n };\n \n\n function cancelComposition() {\n ignoreFocusEvents = true;\n text.blur();\n text.focus();\n ignoreFocusEvents = false;\n }\n\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);\n \n function onKeyup(e) {\n if (e.keyCode == 27 && text.value.length < text.selectionStart) {\n if (!inComposition)\n lastValue = text.value;\n lastSelectionStart = lastSelectionEnd = -1;\n resetSelection();\n }\n syncComposition();\n }\n\n event.addListener(text, \"compositionstart\", onCompositionStart, host);\n event.addListener(text, \"compositionupdate\", onCompositionUpdate, host);\n event.addListener(text, \"keyup\", onKeyup, host);\n event.addListener(text, \"keydown\", syncComposition, host);\n event.addListener(text, \"compositionend\", onCompositionEnd, host);\n\n this.getElement = function() {\n return text;\n };\n this.setCommandMode = function(value) {\n commandMode = value;\n text.readOnly = false;\n };\n \n this.setReadOnly = function(readOnly) {\n if (!commandMode)\n text.readOnly = readOnly;\n };\n\n this.setCopyWithEmptySelection = function(value) {\n };\n\n this.onContextMenu = function(e) {\n afterContextMenu = true;\n resetSelection();\n host._emit(\"nativecontextmenu\", {target: host, domEvent: e});\n this.moveToMouse(e, true);\n };\n \n this.moveToMouse = function(e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n + \"text-indent: -\" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + \"px;\";\n\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight -2;\n var move = function(e) {\n dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n }; \n move(e);\n\n if (e.type != \"mousedown\")\n return;\n\n host.renderer.$isMousePressed = true;\n\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n host.renderer.$isMousePressed = false;\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$moveTextAreaToCursor();\n }, 0);\n }\n\n var onContextMenu = function(e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu, host);\n event.addListener(text, \"mousedown\", function(e) {\n e.preventDefault();\n onContextMenuClose();\n }, host);\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu, host);\n event.addListener(text, \"contextmenu\", onContextMenu, host);\n \n if (isIOS)\n addIosSelectionHandler(parentNode, host, text);\n\n function addIosSelectionHandler(parentNode, host, text) {\n var typingResetTimeout = null;\n var typing = false;\n \n text.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout) clearTimeout(typingResetTimeout);\n typing = true;\n }, true);\n\n text.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n }, true);\n var detectArrowKeys = function(e) {\n if (document.activeElement !== text) return;\n if (typing || inComposition || host.$mouseHandler.isMousePressed) return;\n\n if (copied) {\n return;\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n \n var key = null;\n var modifier = 0;\n if (selectionStart == 0) {\n key = KEYS.up;\n } else if (selectionStart == 1) {\n key = KEYS.home;\n } else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == \"\\n\") {\n key = KEYS.end;\n } else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == \" \") {\n key = KEYS.left;\n modifier = MODS.option;\n } else if (\n selectionStart < lastSelectionStart\n || (\n selectionStart == lastSelectionStart \n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd\n )\n ) {\n key = KEYS.left;\n } else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n key = KEYS.down;\n } else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == \" \") {\n key = KEYS.right;\n modifier = MODS.option;\n } else if (\n selectionEnd > lastSelectionEnd\n || (\n selectionEnd == lastSelectionEnd \n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd\n )\n ) {\n key = KEYS.right;\n }\n \n if (selectionStart !== selectionEnd)\n modifier |= MODS.shift;\n\n if (key) {\n var result = host.onCommandKey({}, modifier, key);\n if (!result && host.commands) {\n key = KEYS.keyCodeToString(key);\n var command = host.commands.findKeyCommand(modifier, key);\n if (command)\n host.execCommand(command);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n resetSelection(\"\");\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function() {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n};\n\nexports.TextInput = TextInput;\nexports.$setUserAgentForTests = function(_isMobile, _isIOS) {\n isMobile = _isMobile;\n isIOS = _isIOS;\n};\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar useragent = require(\"../lib/useragent\");\n\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 550; // milliseconds\n\nfunction DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n\n exports.forEach(function(x) {\n mouseHandler[x] = this[x];\n }, this);\n\n mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n}\n\n(function() {\n\n this.onMouseDown = function(ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n\n this.startSelect = function(pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n if (!this.mousedownEvent) return;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n if (editor.renderer.scroller.setCapture) {\n editor.renderer.scroller.setCapture();\n }\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n };\n\n this.select = function() {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n } else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n\n this.extendSelectionBy = function(unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n } else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n } else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n\n this.selectEnd =\n this.selectAllEnd =\n this.selectByWordsEnd =\n this.selectByLinesEnd = function() {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n if (this.editor.renderer.scroller.releaseCapture) {\n this.editor.renderer.scroller.releaseCapture();\n }\n };\n\n this.focusWait = function() {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n\n this.onDoubleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n } else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n\n this.onTripleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n } else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n\n this.onQuadClick = function(ev) {\n var editor = this.editor;\n\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n\n this.onMouseWheel = function(ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n \n var editor = this.editor;\n \n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n \n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = dt ? ev.wheelX / dt : prevScroll.vx;\n var vy = dt ? ev.wheelY / dt : prevScroll.vy;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n \n var direction = Math.abs(vx / vy);\n \n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n \n if (canScroll) {\n prevScroll.allowed = t;\n } else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n \n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n\n}).call(DefaultHandlers.prototype);\n\nexports.DefaultHandlers = DefaultHandlers;\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n\n if (cmp < 0)\n return {cursor: range.start, anchor: range.end};\n else\n return {cursor: range.end, anchor: range.start};\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nfunction Tooltip (parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n}\n\n(function() {\n this.$init = function() {\n this.$element = dom.createElement(\"div\");\n this.$element.className = \"ace_tooltip\";\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n this.getElement = function() {\n return this.$element || this.$init();\n };\n this.setText = function(text) {\n this.getElement().textContent = text;\n };\n this.setHtml = function(html) {\n this.getElement().innerHTML = html;\n };\n this.setPosition = function(x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n this.setClassName = function(className) {\n dom.addCssClass(this.getElement(), className);\n };\n this.show = function(text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n\n this.hide = function() {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n }\n };\n this.getHeight = function() {\n return this.getElement().offsetHeight;\n };\n this.getWidth = function() {\n return this.getElement().offsetWidth;\n };\n \n this.destroy = function() {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n\n}).call(Tooltip.prototype);\n\nexports.Tooltip = Tooltip;\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event\",\"ace/tooltip\"], function(require, exports, module) {\n\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar event = require(\"../lib/event\");\nvar Tooltip = require(\"../tooltip\").Tooltip;\n\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor.container);\n\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function(e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n\n if (gutterRegion == \"foldWidgets\")\n return;\n\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n\n\n var tooltipTimeout, mouseEvent, tooltipAnnotation;\n\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var annotation = gutter.$annotations[row];\n if (!annotation)\n return hideTooltip();\n\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n\n if (tooltipAnnotation == annotation)\n return;\n tooltipAnnotation = annotation.text.join(\" \");\n\n tooltip.setHtml(tooltipAnnotation);\n tooltip.show();\n editor._signal(\"showGutterTooltip\", tooltip);\n editor.on(\"mousewheel\", hideTooltip);\n\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n } else {\n var gutterElement = mouseEvent.domEvent.target;\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n }\n\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltipAnnotation) {\n tooltip.hide();\n tooltipAnnotation = null;\n editor._signal(\"hideGutterTooltip\", tooltip);\n editor.off(\"mousewheel\", hideTooltip);\n }\n }\n\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function(e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n\n if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n\n event.addListener(editor.renderer.$gutter, \"mouseout\", function(e) {\n mouseEvent = null;\n if (!tooltipAnnotation || tooltipTimeout)\n return;\n\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n }, editor);\n \n editor.on(\"changeSession\", hideTooltip);\n}\n\nfunction GutterTooltip(parentNode) {\n Tooltip.call(this, parentNode);\n}\n\noop.inherits(GutterTooltip, Tooltip);\n\n(function(){\n this.setPosition = function(x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n\n}).call(GutterTooltip.prototype);\n\n\n\nexports.GutterHandler = GutterHandler;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar MouseEvent = exports.MouseEvent = function(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n \n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n\n this.$pos = null;\n this.$inSelection = null;\n \n this.propagationStopped = false;\n this.defaultPrevented = false;\n};\n\n(function() { \n \n this.stopPropagation = function() {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n \n this.preventDefault = function() {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n \n this.stop = function() {\n this.stopPropagation();\n this.preventDefault();\n };\n this.getDocumentPosition = function() {\n if (this.$pos)\n return this.$pos;\n \n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n this.inSelection = function() {\n if (this.$inSelection !== null)\n return this.$inSelection;\n \n var editor = this.editor;\n \n\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n\n return this.$inSelection;\n };\n this.getButton = function() {\n return event.getButton(this.domEvent);\n };\n this.getShiftKey = function() {\n return this.domEvent.shiftKey;\n };\n \n this.getAccelKey = useragent.isMac\n ? function() { return this.domEvent.metaKey; }\n : function() { return this.domEvent.ctrlKey; };\n \n}).call(MouseEvent.prototype);\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\n\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\n\nfunction DragdropHandler(mouseHandler) {\n\n var editor = mouseHandler.editor;\n\n var dragImage = dom.createElement(\"div\");\n dragImage.style.cssText = \"top:-100px;position:absolute;z-index:2147483647;opacity:0.5\";\n dragImage.textContent = \"\\xa0\";\n\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n\n exports.forEach(function(x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.on(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n\n this.onDragStart = function(e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function(){\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n editor.container.appendChild(dragImage);\n\n dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);\n setTimeout(function() {\n editor.container.removeChild(dragImage);\n });\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n\n isInternal = true;\n this.setState(\"drag\");\n };\n\n this.onDragEnd = function(e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.$resetCursorStyle();\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n\n this.onDragEnter = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragOver = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragLeave = function(e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n\n this.onDrop = function(e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n } else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n } else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler), editor);\n\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.moveCursorToPosition(cursor);\n cursorMovedTime = now;\n cursorPointOnCaretMoved = {x: x, y: y};\n } else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n } else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = {row: cursor.row, column: cursor.column};\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n } else {\n autoScrollStartTime = null;\n }\n }\n\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.selection.fromOrientedRange(range);\n if (editor.isFocused() && !isInternal)\n editor.$resetCursorStyle();\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function() {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function(type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n } catch (e) {}\n var dropEffect = \"none\";\n\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n\n return dropEffect;\n }\n}\n\n(function() {\n\n this.dragWait = function() {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n\n this.dragWaitEnd = function() {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n\n this.dragReadyEnd = function(e) {\n this.editor.$resetCursorStyle();\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n\n this.startDrag = function(){\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n\n this.onMouseDrag = function(e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n\n this.onMouseDown = function(e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n } else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n\n}).call(DragdropHandler.prototype);\n\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/mouse/touch_handler\",[\"require\",\"exports\",\"module\",\"ace/mouse/mouse_event\",\"ace/lib/event\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar event = require(\"../lib/event\");\nvar dom = require(\"../lib/dom\");\n\nexports.addTouchListeners = function(el, editor) {\n var mode = \"scroll\";\n var startX;\n var startY;\n var touchStartT;\n var lastT;\n var longTouchTimer;\n var animationTimer;\n var animationSteps = 0;\n var pos;\n var clickCount = 0;\n var vX = 0;\n var vY = 0;\n var pressed;\n var contextMenu;\n \n function createContextMenu() {\n var clipboard = window.navigator && window.navigator.clipboard;\n var isOpen = false;\n var updateMenu = function() {\n var selected = editor.getCopyText();\n var hasUndo = editor.session.getUndoManager().hasUndo();\n contextMenu.replaceChild(\n dom.buildDom(isOpen ? [\"span\",\n !selected && [\"span\", { class: \"ace_mobile-button\", action: \"selectall\" }, \"Select All\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"copy\" }, \"Copy\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"cut\" }, \"Cut\"],\n clipboard && [\"span\", { class: \"ace_mobile-button\", action: \"paste\" }, \"Paste\"],\n hasUndo && [\"span\", { class: \"ace_mobile-button\", action: \"undo\" }, \"Undo\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"find\" }, \"Find\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"openCommandPallete\" }, \"Pallete\"]\n ] : [\"span\"]),\n contextMenu.firstChild\n );\n };\n var handleClick = function(e) {\n var action = e.target.getAttribute(\"action\");\n\n if (action == \"more\" || !isOpen) {\n isOpen = !isOpen;\n return updateMenu();\n }\n if (action == \"paste\") {\n clipboard.readText().then(function (text) {\n editor.execCommand(action, text);\n });\n }\n else if (action) {\n if (action == \"cut\" || action == \"copy\") {\n if (clipboard)\n clipboard.writeText(editor.getCopyText());\n else\n document.execCommand(\"copy\");\n }\n editor.execCommand(action);\n }\n contextMenu.firstChild.style.display = \"none\";\n isOpen = false;\n if (action != \"openCommandPallete\")\n editor.focus();\n };\n contextMenu = dom.buildDom([\"div\",\n {\n class: \"ace_mobile-menu\",\n ontouchstart: function(e) {\n mode = \"menu\";\n e.stopPropagation();\n e.preventDefault();\n editor.textInput.focus();\n },\n ontouchend: function(e) {\n e.stopPropagation();\n e.preventDefault();\n handleClick(e);\n },\n onclick: handleClick\n },\n [\"span\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"more\" }, \"...\"]\n ], editor.container);\n }\n function showContextMenu() {\n if (!contextMenu) createContextMenu();\n var cursor = editor.selection.cursor;\n var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);\n var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;\n var scrollLeft = editor.renderer.scrollLeft;\n var rect = editor.container.getBoundingClientRect();\n contextMenu.style.top = pagePos.pageY - rect.top - 3 + \"px\";\n if (pagePos.pageX - rect.left < rect.width - 70) {\n contextMenu.style.left = \"\";\n contextMenu.style.right = \"10px\";\n } else {\n contextMenu.style.right = \"\";\n contextMenu.style.left = leftOffset + scrollLeft - rect.left + \"px\";\n }\n contextMenu.style.display = \"\";\n contextMenu.firstChild.style.display = \"none\";\n editor.on(\"input\", hideContextMenu);\n }\n function hideContextMenu(e) {\n if (contextMenu)\n contextMenu.style.display = \"none\";\n editor.off(\"input\", hideContextMenu);\n }\n\n function handleLongTap() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n var range = editor.selection.getRange();\n var inSelection = range.contains(pos.row, pos.column);\n if (range.isEmpty() || !inSelection) {\n editor.selection.moveToPosition(pos);\n editor.selection.selectWord();\n }\n mode = \"wait\";\n showContextMenu();\n }\n function switchToSelectionMode() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n editor.selection.moveToPosition(pos);\n var range = clickCount >= 2\n ? editor.selection.getLineRange(pos.row)\n : editor.session.getBracketRange(pos);\n if (range && !range.isEmpty()) {\n editor.selection.setRange(range);\n } else {\n editor.selection.selectWord();\n }\n mode = \"wait\";\n }\n event.addListener(el, \"contextmenu\", function(e) {\n if (!pressed) return;\n var textarea = editor.textInput.getElement();\n textarea.focus();\n }, editor);\n event.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n if (longTouchTimer || touches.length > 1) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n touchStartT = -1;\n mode = \"zoom\";\n return;\n }\n \n pressed = editor.$mouseHandler.isMousePressed = true;\n var h = editor.renderer.layerConfig.lineHeight;\n var w = editor.renderer.layerConfig.lineHeight;\n var t = e.timeStamp;\n lastT = t;\n var touchObj = touches[0];\n var x = touchObj.clientX;\n var y = touchObj.clientY;\n if (Math.abs(startX - x) + Math.abs(startY - y) > h)\n touchStartT = -1;\n \n startX = e.clientX = x;\n startY = e.clientY = y;\n vX = vY = 0;\n \n var ev = new MouseEvent(e, editor);\n pos = ev.getDocumentPosition();\n\n if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {\n clickCount++;\n e.preventDefault();\n e.button = 0;\n switchToSelectionMode();\n } else {\n clickCount = 0;\n var cursor = editor.selection.cursor;\n var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;\n \n var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);\n var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);\n var rect = editor.renderer.scroller.getBoundingClientRect();\n var offsetTop = editor.renderer.layerConfig.offset;\n var offsetLeft = editor.renderer.scrollLeft;\n var weightedDistance = function(x, y) {\n x = x / w;\n y = y / h - 0.75;\n return x * x + y * y;\n };\n \n if (e.clientX < rect.left) {\n mode = \"zoom\";\n return;\n }\n \n var diff1 = weightedDistance(\n e.clientX - rect.left - cursorPos.left + offsetLeft,\n e.clientY - rect.top - cursorPos.top + offsetTop\n );\n var diff2 = weightedDistance(\n e.clientX - rect.left - anchorPos.left + offsetLeft,\n e.clientY - rect.top - anchorPos.top + offsetTop\n );\n if (diff1 < 3.5 && diff2 < 3.5)\n mode = diff1 > diff2 ? \"cursor\" : \"anchor\";\n \n if (diff2 < 3.5)\n mode = \"anchor\";\n else if (diff1 < 3.5)\n mode = \"cursor\";\n else\n mode = \"scroll\";\n longTouchTimer = setTimeout(handleLongTap, 450);\n }\n touchStartT = t;\n }, editor);\n\n event.addListener(el, \"touchend\", function (e) {\n pressed = editor.$mouseHandler.isMousePressed = false;\n if (animationTimer) clearInterval(animationTimer);\n if (mode == \"zoom\") {\n mode = \"\";\n animationSteps = 0;\n } else if (longTouchTimer) {\n editor.selection.moveToPosition(pos);\n animationSteps = 0;\n showContextMenu();\n } else if (mode == \"scroll\") {\n animate();\n hideContextMenu();\n } else {\n showContextMenu();\n }\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }, editor);\n event.addListener(el, \"touchmove\", function (e) {\n if (longTouchTimer) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }\n var touches = e.touches;\n if (touches.length > 1 || mode == \"zoom\") return;\n\n var touchObj = touches[0];\n\n var wheelX = startX - touchObj.clientX;\n var wheelY = startY - touchObj.clientY;\n\n if (mode == \"wait\") {\n if (wheelX * wheelX + wheelY * wheelY > 4)\n mode = \"cursor\";\n else\n return e.preventDefault();\n }\n\n startX = touchObj.clientX;\n startY = touchObj.clientY;\n\n e.clientX = touchObj.clientX;\n e.clientY = touchObj.clientY;\n\n var t = e.timeStamp;\n var dt = t - lastT;\n lastT = t;\n if (mode == \"scroll\") {\n var mouseEvent = new MouseEvent(e, editor);\n mouseEvent.speed = 1;\n mouseEvent.wheelX = wheelX;\n mouseEvent.wheelY = wheelY;\n if (10 * Math.abs(wheelX) < Math.abs(wheelY)) wheelX = 0;\n if (10 * Math.abs(wheelY) < Math.abs(wheelX)) wheelY = 0;\n if (dt != 0) {\n vX = wheelX / dt;\n vY = wheelY / dt;\n }\n editor._emit(\"mousewheel\", mouseEvent);\n if (!mouseEvent.propagationStopped) {\n vX = vY = 0;\n }\n }\n else {\n var ev = new MouseEvent(e, editor);\n var pos = ev.getDocumentPosition();\n if (mode == \"cursor\")\n editor.selection.moveCursorToPosition(pos);\n else if (mode == \"anchor\")\n editor.selection.setSelectionAnchor(pos.row, pos.column);\n editor.renderer.scrollCursorIntoView(pos);\n e.preventDefault();\n }\n }, editor);\n\n function animate() {\n animationSteps += 60;\n animationTimer = setInterval(function() {\n if (animationSteps-- <= 0) {\n clearInterval(animationTimer);\n animationTimer = null;\n }\n if (Math.abs(vX) < 0.01) vX = 0;\n if (Math.abs(vY) < 0.01) vY = 0;\n if (animationSteps < 20) vX = 0.9 * vX;\n if (animationSteps < 20) vY = 0.9 * vY;\n var oldScrollTop = editor.session.getScrollTop();\n editor.renderer.scrollBy(10 * vX, 10 * vY);\n if (oldScrollTop == editor.session.getScrollTop())\n animationSteps = 0;\n }, 10);\n }\n};\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\nvar dom = require(\"./dom\");\n\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\n\nexports.loadScript = function(path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n\n s.src = path;\n head.appendChild(s);\n\n s.onload = s.onreadystatechange = function(_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function(url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nvar EventEmitter = {};\nvar stopPropagation = function() { this.propagationStopped = true; };\nvar preventDefault = function() { this.defaultPrevented = true; };\n\nEventEmitter._emit =\nEventEmitter._dispatchEvent = function(eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n\n if (typeof e != \"object\" || !e)\n e = {};\n\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n\n listeners = listeners.slice();\n for (var i=0; i 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n } else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\n\nexports.setModuleUrl = function(name, subst) {\n return options.$moduleUrls[name] = subst;\n};\n\nexports.$loading = {};\nexports.loadModule = function(moduleName, onLoad) {\n var module, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n\n try {\n module = require(moduleName);\n } catch (e) {}\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n\n exports.$loading[moduleName].push(onLoad);\n\n if (exports.$loading[moduleName].length > 1)\n return;\n\n var afterLoad = function() {\n require([moduleName], function(module) {\n exports._emit(\"load.module\", {name: moduleName, module: module});\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function(onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n\n if (!exports.get(\"packaged\"))\n return afterLoad();\n \n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n reportErrorIfPathIsNotConfigured();\n};\n\nvar reportErrorIfPathIsNotConfigured = function() {\n if (\n !options.basePath && !options.workerPath \n && !options.modePath && !options.themePath\n && !Object.keys(options.$moduleUrls).length\n ) {\n console.error(\n \"Unable to infer path to ace from script src,\",\n \"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes\",\n \"or with webpack use ace/webpack-resolver\"\n );\n reportErrorIfPathIsNotConfigured = function() {};\n }\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n options.packaged = packaged || require.packaged || module.packaged || (global.define && __webpack_require__.amdD.packaged);\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i 0){\n\t\t\tif (action == 0x10){\n\t\t\t\tfor(i = condPos; i < ix; i++){\n\t\t\t\t\tlevels[i] = 1;\n\t\t\t\t}\n\t\t\t\tcondPos = -1;\n\t\t\t} else {\n\t\t\t\tcondPos = -1;\n\t\t\t}\n\t\t}\n\t\tcond = impTab[newState][6];\n\t\tif (cond){\n\t\t\tif(condPos == -1){\n\t\t\t\tcondPos = ix;\n\t\t\t}\n\t\t}else{\n\t\t\tif (condPos > -1){\n\t\t\t\tfor(i = condPos; i < ix; i++){\n\t\t\t\t\tlevels[i] = newLevel;\n\t\t\t\t}\n\t\t\t\tcondPos = -1;\n\t\t\t}\n\t\t}\n\t\tif (charTypes[ix] == B){\n\t\t\tlevels[ix] = 0;\n\t\t}\n\t\thiLevel |= newLevel;\n\t}\n\tif (hasUBAT_S){\n\t\tfor(i = 0; i < len; i++){\n\t\t\tif(charTypes[i] == S){\n\t\t\t\tlevels[i] = dir;\n\t\t\t\tfor(var j = i - 1; j >= 0; j--){\n\t\t\t\t\tif(charTypes[j] == WS){\n\t\t\t\t\t\tlevels[j] = dir;\n\t\t\t\t\t}else{\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\t}\n}\n\nfunction _invertLevel(lev, levels, _array) {\n\tif (hiLevel < lev){\n\t\treturn;\n\t}\n\tif (lev == 1 && dir == RTL && !hasUBAT_B){\n\t\t_array.reverse();\n\t\treturn;\n\t}\n\tvar len = _array.length, start = 0, end, lo, hi, tmp;\n\twhile(start < len){\n\t\tif (levels[start] >= lev){\n\t\t\tend = start + 1;\n\t\twhile(end < len && levels[end] >= lev){\n\t\t\tend++;\n\t\t}\n\t\tfor(lo = start, hi = end - 1 ; lo < hi; lo++, hi--){\n\t\t\ttmp = _array[lo];\n\t\t\t_array[lo] = _array[hi];\n\t\t\t_array[hi] = tmp;\n\t\t}\n\t\tstart = end;\n\t}\n\tstart++;\n\t}\n}\n\nfunction _getCharClass(chars, types, classes, ix) {\t\t\t\n\tvar cType = types[ix], wType, nType, len, i;\n\tswitch(cType){\n\t\tcase L:\n\t\tcase R:\n\t\t\tlastArabic = false;\n\t\tcase ON:\n\t\tcase AN:\n\t\t\treturn cType;\n\t\tcase EN:\n\t\t\treturn lastArabic ? AN : EN;\n\t\tcase AL:\n\t\t\tlastArabic = true;\n\t\t\thasUBAT_AL = true;\n\t\t\treturn R;\n\t\tcase WS:\n\t\t\treturn ON;\n\t\tcase CS:\n\t\t\tif (ix < 1 || (ix + 1) >= types.length ||\n\t\t\t\t((wType = classes[ix - 1]) != EN && wType != AN) ||\n\t\t\t\t((nType = types[ix + 1]) != EN && nType != AN)){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\tif (lastArabic){nType = AN;}\n\t\t\treturn nType == wType ? nType : ON;\n\t\tcase ES:\n\t\t\twType = ix > 0 ? classes[ix - 1] : B;\n\t\t\tif (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\treturn ON;\n\t\tcase ET:\n\t\t\tif (ix > 0 && classes[ix - 1] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\tif (lastArabic){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\ti = ix + 1;\n\t\t\tlen = types.length;\n\t\t\twhile (i < len && types[i] == ET){\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < len && types[i] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\treturn ON;\n\t\tcase NSM:\n\t\t\tlen = types.length;\n\t\t\ti = ix + 1;\n\t\t\twhile (i < len && types[i] == NSM){\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < len){\n\t\t\t\tvar c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n\t\t\t\t\n\t\t\t\twType = types[i];\n\t\t\t\tif (rtlCandidate && (wType == R || wType == AL)){\n\t\t\t\t\treturn R;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ix < 1 || (wType = types[ix - 1]) == B){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\treturn classes[ix - 1];\n\t\tcase B:\n\t\t\tlastArabic = false;\n\t\t\thasUBAT_B = true;\n\t\t\treturn dir;\n\t\tcase S:\n\t\t\thasUBAT_S = true;\n\t\t\treturn ON;\n\t\tcase LRE:\n\t\tcase RLE:\n\t\tcase LRO:\n\t\tcase RLO:\n\t\tcase PDF:\n\t\t\tlastArabic = false;\n\t\tcase BN:\n\t\t\treturn ON;\n\t}\n}\n\nfunction _getCharacterType( ch ) {\t\t\n\tvar uc = ch.charCodeAt(0), hi = uc >> 8;\n\t\n\tif (hi == 0) {\t\t\n\t\treturn ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n\t} else if (hi == 5) {\n\t\treturn (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n\t} else if (hi == 6) {\n\t\tif (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n\t\t\treturn NSM;\n\t\telse if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n\t\t\treturn AN;\n\t\telse if (uc == 0x066A)\n\t\t\treturn ET;\n\t\telse if (/[\\u06f0-\\u06f9]/.test(ch))\n\t\t\treturn EN;\t\t\t\n\t\telse\n\t\t\treturn AL;\n\t} else if (hi == 0x20 && uc <= 0x205F) {\n\t\treturn UnicodeTBL20[uc & 0xFF];\n\t} else if (hi == 0xFE) {\n\t\treturn (uc >= 0xFE70 ? AL : ON);\n\t}\t\t\n\treturn ON;\t\n}\n\nfunction _isArabicDiacritics( ch ) {\n\treturn (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\nexports.RLE = 7;\n\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function(text, textCharTypes, isRtl) {\n\tif (text.length < 2)\n\t\treturn {};\n\t\t\n\tvar chars = text.split(\"\"), logicalFromVisual = new Array(chars.length),\n\t\tbidiLevels = new Array(chars.length), levels = []; \n\n\tdir = isRtl ? RTL : LTR;\n\n\t_computeLevels(chars, levels, chars.length, textCharTypes);\n\n\tfor (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++);\n\n\t_invertLevel(2, levels, logicalFromVisual);\n\t_invertLevel(1, levels, logicalFromVisual);\n\n\tfor (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n\t\tif (textCharTypes[i] === AN) {\n\t\t\tlevels[i] = exports.AN;\n\t\t} else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE) \n\t\t\t|| textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n\t\t\tlevels[i] = exports.ON_R;\n\t\t} else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n\t\t\tlevels[i - 1] = levels[i] = exports.R_H;\n\t\t\ti++;\n\t\t}\n\t}\n\tif (chars[chars.length - 1] === exports.DOT)\n\t\tlevels[chars.length - 1] = exports.B;\n\t\t\t\t\n\tif (chars[0] === '\\u202B')\n\t\tlevels[0] = exports.RLE;\n\t\t\t\t\n\tfor (var i = 0; i < logicalFromVisual.length; i++) {\n\t\tbidiLevels[i] = levels[logicalFromVisual[i]];\n\t}\n\n\treturn {'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels};\n};\nexports.hasBidiCharacters = function(text, textCharTypes){\n\tvar ret = false;\n\tfor (var i = 0; i < text.length; i++){\n\t\ttextCharTypes[i] = _getCharacterType(text.charAt(i));\n\t\tif (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))\n\t\t\tret = true;\n\t}\n\treturn ret;\n};\t\nexports.getVisualFromLogicalIdx = function(logIdx, rowMap) {\n\tfor (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n\t\tif (rowMap.logicalFromVisual[i] == logIdx)\n\t\t\treturn i;\n\t}\n\treturn 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\"], function(require, exports, module) {\n\"use strict\";\n\nvar bidiUtil = require(\"./lib/bidiutil\");\nvar lang = require(\"./lib/lang\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\u202B]/;\nvar BidiHandler = function(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.$isRtl = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.EOF = \"\\xB6\";\n this.RLE = \"\\u202B\";\n this.contentWidth = 0;\n this.fontMetrics = null;\n this.rtlLineOffset = 0;\n this.wrapOffset = 0;\n this.isMoveLeftOperation = false;\n this.seenBidi = bidiRE.test(session.getValue());\n};\n\n(function() {\n this.isBidiRow = function(screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n\n this.onChange = function(delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n } \n else {\n this.currentRow = null;\n }\n };\n\n this.getDocumentRow = function() {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n\n return docRow;\n };\n\n this.getSplitIndex = function() {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n\n prevIndex = currentIndex;\n splitIndex++;\n }\n } else {\n splitIndex = this.currentRow;\n }\n\n return splitIndex;\n };\n\n this.updateRowLine = function(docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n \n var isLastRow = (docRow === this.session.getLength() - 1),\n endOfLine = isLastRow ? this.EOF : this.EOL;\n\n this.wrapIndent = 0;\n this.line = this.session.getLine(docRow);\n this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n\n if(splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :\n this.line.substring(splits[splits.length - 1]);\n } else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n }\n if (splitIndex == splits.length)\n this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;\n } else {\n this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function(ch, i){\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n\n if (this.isRtlDir) {\n this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;\n this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;\n }\n };\n \n this.updateBidiMap = function() {\n var textCharTypes = [];\n if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {\n this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);\n } else {\n this.bidiMap = {};\n }\n };\n this.markAsDirty = function() {\n this.currentRow = null;\n };\n this.updateCharacterWidths = function(fontMetrics) {\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n\n this.fontMetrics = fontMetrics;\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;\n\n this.currentRow = null;\n };\n\n this.setShowInvisibles = function(showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n\n this.setEolChar = function(eolChar) {\n this.EOL = eolChar; \n };\n\n this.setContentWidth = function(width) {\n this.contentWidth = width;\n };\n\n this.isRtlLine = function(row) {\n if (this.$isRtl) return true;\n if (row != undefined)\n return (this.session.getLine(row).charAt(0) == this.RLE);\n else\n return this.isRtlDir; \n };\n\n this.setRtlDirection = function(editor, isRtlDir) {\n var cursor = editor.getCursorPosition(); \n for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {\n if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)\n editor.session.doc.removeInLine(row, 0, 1);\n else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)\n editor.session.doc.insert({column: 0, row: row}, editor.session.$bidiHandler.RLE);\n }\n };\n this.getPosLeft = function(col) {\n col -= this.wrapIndent;\n var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;\n var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap),\n levels = this.bidiMap.bidiLevels, left = 0;\n\n if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n \n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n\n if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))\n left += this.charWidths[levels[visualIdx]];\n\n if (this.wrapIndent)\n left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n\n if (this.isRtlDir)\n left += this.rtlLineOffset;\n\n return left;\n };\n this.getSelections = function(startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0,\n selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent,\n isSelected = false, isSelectedPrev = false, selectionStart = 0;\n \n if (this.wrapIndent)\n offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n } else if (!isSelected && isSelectedPrev) {\n selections.push({left: selectionStart, width: offset - selectionStart});\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n\n if (isSelected && (visIdx === levels.length)) {\n selections.push({left: selectionStart, width: offset - selectionStart});\n }\n\n if(this.isRtlDir) {\n for (var i = 0; i < selections.length; i++) {\n selections[i].left += this.rtlLineOffset;\n }\n }\n return selections;\n };\n this.offsetToCol = function(posX) {\n if(this.isRtlDir)\n posX -= this.rtlLineOffset;\n\n var logicalIdx = 0, posX = Math.max(posX, 0),\n offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels,\n charWidth = this.charWidths[levels[visualIdx]];\n\n if (this.wrapIndent)\n posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n \n while(posX > offset + charWidth/2) {\n offset += charWidth;\n if(visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n \n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)){\n if(posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n\n } else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)){\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n\n } else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))){\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n } else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n\n if (logicalIdx === 0 && this.isRtlDir)\n logicalIdx++;\n\n return (logicalIdx + this.wrapIndent);\n };\n\n}).call(BidiHandler.prototype);\n\nexports.BidiHandler = BidiHandler;\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Selection = function(session) {\n this.session = session;\n this.doc = session.getDocument();\n\n this.clearSelection();\n this.cursor = this.lead = this.doc.createAnchor(0, 0);\n this.anchor = this.doc.createAnchor(0, 0);\n this.$silent = false;\n\n var self = this;\n this.cursor.on(\"change\", function(e) {\n self.$cursorChanged = true;\n if (!self.$silent)\n self._emit(\"changeCursor\");\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n\n this.anchor.on(\"change\", function() {\n self.$anchorChanged = true;\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n });\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.isEmpty = function() {\n return this.$isEmpty || (\n this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column\n );\n };\n this.isMultiLine = function() {\n return !this.$isEmpty && this.anchor.row != this.cursor.row;\n };\n this.getCursor = function() {\n return this.lead.getPosition();\n };\n this.setSelectionAnchor = function(row, column) {\n this.$isEmpty = false;\n this.anchor.setPosition(row, column);\n };\n this.getAnchor = \n this.getSelectionAnchor = function() {\n if (this.$isEmpty)\n return this.getSelectionLead();\n \n return this.anchor.getPosition();\n };\n this.getSelectionLead = function() {\n return this.lead.getPosition();\n };\n this.isBackwards = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n this.getRange = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n\n if (this.$isEmpty)\n return Range.fromPoints(lead, lead);\n\n return this.isBackwards()\n ? Range.fromPoints(lead, anchor)\n : Range.fromPoints(anchor, lead);\n };\n this.clearSelection = function() {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n this.selectAll = function() {\n this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);\n };\n this.setRange =\n this.setSelectionRange = function(range, reverse) {\n var start = reverse ? range.end : range.start;\n var end = reverse ? range.start : range.end;\n this.$setSelection(start.row, start.column, end.row, end.column);\n };\n\n this.$setSelection = function(anchorRow, anchorColumn, cursorRow, cursorColumn) {\n if (this.$silent)\n return;\n var wasEmpty = this.$isEmpty;\n var wasMultiselect = this.inMultiSelectMode;\n this.$silent = true;\n this.$cursorChanged = this.$anchorChanged = false;\n this.anchor.setPosition(anchorRow, anchorColumn);\n this.cursor.setPosition(cursorRow, cursorColumn);\n this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);\n this.$silent = false;\n if (this.$cursorChanged)\n this._emit(\"changeCursor\");\n if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)\n this._emit(\"changeSelection\");\n };\n\n this.$moveSelection = function(mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n\n mover.call(this);\n };\n this.selectTo = function(row, column) {\n this.$moveSelection(function() {\n this.moveCursorTo(row, column);\n });\n };\n this.selectToPosition = function(pos) {\n this.$moveSelection(function() {\n this.moveCursorToPosition(pos);\n });\n };\n this.moveTo = function(row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n this.moveToPosition = function(pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n this.selectUp = function() {\n this.$moveSelection(this.moveCursorUp);\n };\n this.selectDown = function() {\n this.$moveSelection(this.moveCursorDown);\n };\n this.selectRight = function() {\n this.$moveSelection(this.moveCursorRight);\n };\n this.selectLeft = function() {\n this.$moveSelection(this.moveCursorLeft);\n };\n this.selectLineStart = function() {\n this.$moveSelection(this.moveCursorLineStart);\n };\n this.selectLineEnd = function() {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n this.selectFileEnd = function() {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n this.selectFileStart = function() {\n this.$moveSelection(this.moveCursorFileStart);\n };\n this.selectWordRight = function() {\n this.$moveSelection(this.moveCursorWordRight);\n };\n this.selectWordLeft = function() {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n this.getWordRange = function(row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n this.selectWord = function() {\n this.setSelectionRange(this.getWordRange());\n };\n this.selectAWord = function() {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n\n this.getLineRange = function(row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n } else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n this.selectLine = function() {\n this.setSelectionRange(this.getLineRange());\n };\n this.moveCursorUp = function() {\n this.moveCursorBy(-1, 0);\n };\n this.moveCursorDown = function() {\n this.moveCursorBy(1, 0);\n };\n this.wouldMoveIntoSoftTab = function(cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length-1 == tabSize;\n };\n this.moveCursorLeft = function() {\n var cursor = this.lead.getPosition(),\n fold;\n\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n } else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n } else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n this.moveCursorRight = function() {\n var cursor = this.lead.getPosition(),\n fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n } else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n this.moveCursorLineStart = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(\n row, null, firstColumnPosition.row,\n firstColumnPosition.column\n );\n\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n this.moveCursorLineEnd = function() {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n this.moveCursorFileEnd = function() {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n this.moveCursorFileStart = function() {\n this.moveCursorTo(0, 0);\n };\n this.moveCursorLongWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n this.moveCursorLongWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n\n var leftOfCursor = lang.stringReverse(str);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n\n this.$shortWordEndIndex = function(rightOfCursor) {\n var index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n\n tokenRe.lastIndex = 0;\n if (this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index ++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n\n return index;\n };\n\n this.moveCursorShortWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n\n var index = this.$shortWordEndIndex(rightOfCursor);\n\n this.moveCursorTo(row, column + index);\n };\n\n this.moveCursorShortWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n\n return this.moveCursorTo(row, column - index);\n };\n\n this.moveCursorWordRight = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n\n this.moveCursorWordLeft = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n this.moveCursorBy = function(rows, chars) {\n var screenPos = this.session.documentToScreenPosition(\n this.lead.row,\n this.lead.column\n );\n\n var offsetX;\n\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n } else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n \n if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {\n var widget = this.session.lineWidgets[this.lead.row];\n if (rows < 0)\n rows -= widget.rowsAbove || 0;\n else if (rows > 0)\n rows += widget.rowCount - (widget.rowsAbove || 0);\n }\n \n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n \n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n \n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n this.moveCursorToPosition = function(position) {\n this.moveCursorTo(position.row, position.column);\n };\n this.moveCursorTo = function(row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n this.moveCursorToScreen = function(row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n this.detach = function() {\n this.lead.detach();\n this.anchor.detach();\n };\n\n this.fromOrientedRange = function(range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n\n this.toOrientedRange = function(range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n } else {\n range = r;\n }\n\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n this.getRangeOfMovements = function(func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start, end);\n } catch(e) {\n return Range.fromPoints(start, start);\n } finally {\n this.moveCursorToPosition(start);\n }\n };\n\n this.toJSON = function() {\n if (this.rangeCount) {\n var data = this.ranges.map(function(r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n } else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n\n this.fromJSON = function(data) {\n if (data.start == undefined) {\n if (this.rangeList && data.length > 1) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--; ) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n } else {\n data = data[0];\n }\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n\n this.isEqual = function(data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n\n for (var i = this.ranges.length; i--; ) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n\n}).call(Selection.prototype);\n\nexports.Selection = Selection;\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar config = require(\"./config\");\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = function(rules) {\n this.states = rules;\n\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = {defaultToken: \"text\"};\n var flag = \"g\";\n\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive)\n flag = \"gi\";\n if (rule.regex == null)\n continue;\n\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n } else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", { \n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n } else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n } else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function(match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n } else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n \n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n \n splitterRurles.forEach(function(rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n};\n\n(function() {\n this.$setMaxTokenCount = function(m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n \n this.$applyToken = function(str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{type: types, value: str}];\n\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n\n this.$arrayTokens = function(str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n\n this.removeCapturingGroups = function(src) {\n var r = src.replace(\n /\\\\.|\\[(?:\\\\.|[^\\\\\\]])*|\\(\\?[:=!<]|(\\()/g,\n function(x, y) {return y ? \"(?:\" : x;}\n );\n return r;\n };\n\n this.createSplitterRegexp = function(src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function(\n m, esc, parenOpen, parenClose, square, index\n ) {\n if (inChClass) {\n inChClass = square != \"]\";\n } else if (square) {\n inChClass = true;\n } else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index+1;\n lastCapture.stack = -1;\n }\n stack--;\n } else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\") src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\") src += \"$\";\n \n return new RegExp(src, (flag||\"\").replace(\"g\", \"\"));\n };\n this.getLineTokens = function(line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n } else\n var stack = [];\n\n var currentState = startState || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n\n var token = {type: null, value: \"\"};\n\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: skipped};\n }\n }\n\n for (var i = 0; i < match.length-2; i++) {\n if (match[i + 1] === undefined)\n continue;\n\n rule = state[mapping[i]];\n\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n } else {\n currentState = rule.next(currentState, stack);\n }\n \n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: value};\n }\n } else if (type) {\n if (token.type)\n tokens.push(token);\n token = {type: null, value: \"\"};\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n\n if (lastIndex == line.length)\n break;\n\n lastIndex = index;\n\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 500),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n\n if (token.type)\n tokens.push(token);\n \n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens : tokens,\n state : stack.length ? stack : currentState\n };\n };\n \n this.reportError = config.reportError;\n \n}).call(Tokenizer.prototype);\n\nexports.Tokenizer = Tokenizer;\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"../lib/lang\");\n\nvar TextHighlightRules = function() {\n\n this.$rules = {\n \"start\" : [{\n token : \"empty_line\",\n regex : '^$'\n }, {\n defaultToken : \"text\"\n }]\n };\n};\n\n(function() {\n\n this.addRules = function(rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n\n this.getRules = function() {\n return this.$rules;\n };\n\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n } else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n\n this.addRules(embedRules, prefix);\n\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));\n }\n\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n\n this.getEmbeds = function() {\n return this.$embeds;\n };\n\n var pushState = function(currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function(currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n\n this.normalizeRules = function() {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n } else if (next == \"pop\") {\n rule.next = popState;\n }\n\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n } else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (Array.isArray(includeName))\n toInsert = includeName.map(function(x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function(x) {return !x.next;});\n state.splice.apply(state, args);\n i--;\n }\n \n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(\n rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive\n );\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n\n this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n this.$keywordList = [];\n Object.keys(map).forEach(function(className) {\n var a = map[className];\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--; ) {\n var word = list[i];\n this.$keywordList.push(word);\n if (ignoreCase)\n word = word.toLowerCase(); \n keywords[word] = className;\n }\n }, this);\n map = null;\n return ignoreCase\n ? function(value) {return keywords[value.toLowerCase()] || defaultToken; }\n : function(value) {return keywords[value] || defaultToken; };\n };\n\n this.getKeywords = function() {\n return this.$keywords;\n };\n\n}).call(TextHighlightRules.prototype);\n\nexports.TextHighlightRules = TextHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nvar Behaviour = function() {\n this.$behaviours = {};\n};\n\n(function () {\n\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n \n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n \n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n \n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n } else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n \n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n } else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n\n}).call(Behaviour.prototype);\n\nexports.Behaviour = Behaviour;\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"./range\").Range;\nvar TokenIterator = function(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n};\n\n(function() { \n this.stepBackward = function() {\n this.$tokenIndex -= 1;\n \n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n \n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.stepForward = function() {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentTokenRow = function () {\n return this.$row;\n }; \n this.getCurrentTokenColumn = function() {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n \n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n \n return column; \n };\n this.getCurrentTokenPosition = function() {\n return {row: this.$row, column: this.getCurrentTokenColumn()};\n };\n this.getCurrentTokenRange = function() {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n \n}).call(TokenIterator.prototype);\n\nexports.TokenIterator = TokenIterator;\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\n\nvar SAFE_INSERT_IN_TOKENS =\n [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS =\n [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\", \"comment\"];\n\nvar context;\nvar contextCache = {};\nvar defaultQuotes = {'\"' : '\"', \"'\" : \"'\"};\n\nvar initContext = function(editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = {rangeCount: editor.multiSelect.rangeCount};\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\n\nvar getWrapped = function(selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\n\nvar CstyleBehaviour = function(options) {\n this.add(\"braces\", \"insertion\", function(state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options && options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n } else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n } else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n } else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n } else if (closing) {\n var next_indent = this.$getIndent(line);\n } else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n } else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n\n this.add(\"braces\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n } else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n\n this.add(\"parens\", \"insertion\", function(state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n } else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"parens\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"brackets\", \"insertion\", function(state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n } else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"brackets\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"string_dquotes\", \"insertion\", function(state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) \n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n } else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column-1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n \n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n \n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n \n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n } else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(leftChar);\n if (isWordBefore || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n var charBefore = line[cursor.column - 2];\n if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore)))\n return null;\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1,1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n};\n\n \nCstyleBehaviour.isSaneInsertion = function(editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n if (/[)}\\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))\n return true;\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\n\nCstyleBehaviour.$matchTokenType = function(token, types) {\n return types.indexOf(token.type || token) > -1;\n};\n\nCstyleBehaviour.recordAutoInsert = function(editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\n\nCstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isMaybeInsertedClosing(cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\n\nCstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\n\nCstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\n\nCstyleBehaviour.popAutoInsertedClosing = function() {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\n\nCstyleBehaviour.clearMaybeInsertedClosing = function() {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\n\n\n\noop.inherits(CstyleBehaviour, Behaviour);\n\nexports.CstyleBehaviour = CstyleBehaviour;\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nvar wordChars = [48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2];\n\nvar code = 0;\nvar str = [];\nfor (var i = 0; i < wordChars.length; i += 2) {\n str.push(code += wordChars[i]);\n if (wordChars[i + 1])\n str.push(45, code += wordChars[i + 1]);\n}\n\nexports.wordChars = String.fromCharCode.apply(null, str);\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar config = require(\"../config\");\n\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = require(\"../unicode\");\nvar lang = require(\"../lib/lang\");\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\n\nvar Mode = function() {\n this.HighlightRules = TextHighlightRules;\n};\n\n(function() {\n this.$defaultBehaviour = new CstyleBehaviour();\n\n this.tokenRe = new RegExp(\"^[\" + unicode.wordChars + \"\\\\$_]+\", \"g\");\n\n this.nonTokenRe = new RegExp(\"^(?:[^\" + unicode.wordChars + \"\\\\$_]|\\\\s])+\", \"g\");\n\n this.getTokenizer = function() {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n\n this.toggleCommentLines = function(state, session, startRow, endRow) {\n var doc = session.doc;\n\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n\n var comment = function(line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({row: i, column: line.length}, lineCommentEnd);\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n\n var uncomment = function(line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n\n var testRemove = function(line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n } else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n } else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n \n insertAtTabStop = session.getUseSoftTabs();\n\n var uncomment = function(line, i) {\n var m = line.match(regexpStart);\n if (!m) return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function(line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({row: i, column: minIndent}, commentWithSpace);\n else\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n var testRemove = function(line, i) {\n return regexpStart.test(line);\n };\n \n var shouldInsertSpace = function(line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n };\n }\n\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n\n\n var minEmptyLength = Infinity;\n iter(function(line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n } else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n\n iter(shouldRemove ? uncomment : comment);\n };\n\n this.toggleBlockComment = function(state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n } else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.autoOutdent = function(state, doc, row) {\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n this.createWorker = function(session) {\n return null;\n };\n\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n var Mode = mapping[i];\n var id = Mode.prototype.$id;\n var mode = config.$modes[id];\n if (!mode)\n config.$modes[id] = mode = new Mode();\n if (!config.$modes[i])\n config.$modes[i] = mode;\n this.$embeds.push(i);\n this.$modes[i] = mode;\n }\n }\n\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\", \n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n\n for (var i = 0; i < delegations.length; i++) {\n (function(scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function() {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this));\n }\n };\n\n this.$delegator = function(method, args, defaultHandler) {\n var state = args[0] || \"start\";\n if (typeof state != \"string\") {\n if (Array.isArray(state[2])) {\n var language = state[2][state[2].length - 1];\n var mode = this.$modes[language];\n if (mode)\n return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1)));\n }\n state = state[0] || \"start\";\n }\n \n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]]) continue;\n\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n\n this.transformAction = function(state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n \n this.getKeywords = function(append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { \n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n \n this.$createKeywordList = function() {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function(word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nfunction throwDeltaError(delta, errorText){\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\n\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\n\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\n\nexports.applyDelta = function(docLines, delta, doNotValidate) {\n \n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n } else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n } else {\n docLines.splice(\n row, endRow - row + 1,\n line.substring(0, startColumn) + docLines[endRow].substring(endColumn)\n );\n }\n break;\n }\n};\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\n\nvar Anchor = exports.Anchor = function(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n \n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.getPosition = function() {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n this.getDocument = function() {\n return this.document;\n };\n this.$insertRight = false;\n this.onChange = function(delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n\n if (delta.start.row > this.row)\n return;\n \n var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n \n function $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n }\n \n function $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n \n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n }\n this.setPosition = function(row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n } else {\n pos = this.$clipPositionToDocument(row, column);\n }\n\n if (this.row == pos.row && this.column == pos.column)\n return;\n\n var old = {\n row: this.row,\n column: this.column\n };\n\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n this.detach = function() {\n this.document.off(\"change\", this.$onChange);\n };\n this.attach = function(doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n this.$clipPositionToDocument = function(row, column) {\n var pos = {};\n\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n\n if (column < 0)\n pos.column = 0;\n\n return pos;\n };\n\n}).call(Anchor.prototype);\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\n\nvar Document = function(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n } else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({row: 0, column: 0}, textOrLines);\n } else {\n this.insert({row: 0, column:0}, textOrLines);\n }\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setValue = function(text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({row: 0, column: 0}, text);\n };\n this.getValue = function() {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n this.createAnchor = function(row, column) {\n return new Anchor(this, row, column);\n };\n if (\"aaa\".split(/a/).length === 0) {\n this.$split = function(text) {\n return text.replace(/\\r\\n|\\r/g, \"\\n\").split(\"\\n\");\n };\n } else {\n this.$split = function(text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n }\n\n\n this.$detectNewLine = function(text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n this.getNewLineCharacter = function() {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n\n this.$autoNewLine = \"\";\n this.$newLineMode = \"auto\";\n this.setNewLineMode = function(newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n this.getNewLineMode = function() {\n return this.$newLineMode;\n };\n this.isNewLine = function(text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n this.getLine = function(row) {\n return this.$lines[row] || \"\";\n };\n this.getLines = function(firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n this.getAllLines = function() {\n return this.getLines(0, this.getLength());\n };\n this.getLength = function() {\n return this.$lines.length;\n };\n this.getTextRange = function(range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n this.getLinesForRange = function(range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n } else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n this.insertLines = function(row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n this.removeLines = function(firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n this.insertNewLine = function(position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n this.insert = function(position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n \n return this.insertMergedLines(position, this.$split(text));\n };\n this.insertInLine = function(position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n \n return this.clonePos(end);\n };\n \n this.clippedPos = function(row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n } else if (row < 0) {\n row = 0;\n } else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return {row: row, column: column};\n };\n \n this.clonePos = function(pos) {\n return {row: pos.row, column: pos.column};\n };\n \n this.pos = function(row, column) {\n return {row: row, column: column};\n };\n \n this.$clipPosition = function(position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n } else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n this.insertFullLines = function(row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n } else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({row: row, column: column}, lines);\n }; \n this.insertMergedLines = function(position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n \n return this.clonePos(end);\n };\n this.remove = function(range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({start: start, end: end})\n });\n return this.clonePos(start);\n };\n this.removeInLine = function(row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({start: start, end: end})\n }, true);\n \n return this.clonePos(start);\n };\n this.removeFullLines = function(firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow );\n var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 );\n var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow );\n var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); \n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n \n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n this.removeNewLine = function(row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n this.replace = function(range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n \n return end;\n };\n this.applyDeltas = function(deltas) {\n for (var i=0; i=0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n this.applyDelta = function(delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n \n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n \n this.$safeApplyDelta = function(delta) {\n var docLength = this.$lines.length;\n if (\n delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength\n ) {\n this.applyDelta(delta);\n }\n };\n \n this.$splitAndapplyLargeDelta = function(delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row; \n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n this.revertDelta = function(delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n this.indexToPosition = function(index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return {row: i, column: index + lines[i].length + newlineLength};\n }\n return {row: l-1, column: index + lines[l-1].length + newlineLength};\n };\n this.positionToIndex = function(pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n\n return index + pos.column;\n };\n\n}).call(Document.prototype);\n\nexports.Document = Document;\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\n\nvar BackgroundTokenizer = function(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n\n var self = this;\n\n this.$worker = function() {\n if (!self.running) { return; }\n\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n \n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines ++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) {\n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n \n if (endLine == -1)\n endLine = currentLine;\n \n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n this.setTokenizer = function(tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n\n this.start(0);\n };\n this.setDocument = function(doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n\n this.stop();\n };\n this.fireUpdateEvent = function(firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", {data: data});\n };\n this.start = function(startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n \n this.scheduleStart = function() {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n\n this.$updateOnChange = function(delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n this.lines[startRow] = null;\n } else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n\n this.stop();\n };\n this.stop = function() {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n this.getTokens = function(row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n this.getState = function(row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n\n this.$tokenizeRow = function(row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n\n var data = this.tokenizer.getLineTokens(line, state, row);\n\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n } else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n\n return this.lines[row] = data.tokens;\n };\n\n}).call(BackgroundTokenizer.prototype);\n\nexports.BackgroundTokenizer = BackgroundTokenizer;\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\n\nvar SearchHighlight = function(regExp, clazz, type) {\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type || \"text\";\n};\n\n(function() {\n this.MAX_RANGES = 500;\n \n this.setRegexp = function(regExp) {\n if (this.regExp+\"\" == regExp+\"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n\n this.update = function(html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function(match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n\n for (var j = ranges.length; j --; ) {\n markerLayer.drawSingleLineMarker(\n html, ranges[j].toScreenRange(session), this.clazz, config);\n }\n }\n };\n\n}).call(SearchHighlight.prototype);\n\nexports.SearchHighlight = SearchHighlight;\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../range\").Range;\nfunction FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n } else {\n folds = this.folds = [ folds ];\n }\n\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column,\n last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n\n this.folds.forEach(function(fold) {\n fold.setFoldLine(this);\n }, this);\n}\n\n(function() {\n this.shiftRow = function(shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function(fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n\n this.addFold = function(fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function(a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n } else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n } else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n\n this.containsRow = function(row) {\n return row >= this.start.row && row <= this.end.row;\n };\n\n this.walk = function(callback, endRow, endColumn) {\n var lastEnd = 0,\n folds = this.folds,\n fold,\n cmp, stop, isNewRow = true;\n\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n\n this.getNextFoldTo = function(row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n } else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n\n this.addRemoveChars = function(row, column, len) {\n var ret = this.getNextFoldTo(row, column),\n fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row)\n {\n window.console && window.console.log(row, column, fold);\n } else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n\n this.split = function(row, column) {\n var pos = this.getNextFoldTo(row, column);\n \n if (!pos || pos.kind == \"inside\")\n return null;\n \n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n \n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n\n this.merge = function(foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n\n this.toString = function() {\n var ret = [this.range.toString() + \": [\" ];\n\n this.folds.forEach(function(fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n\n this.idxToPosition = function(idx) {\n var lastFoldEndColumn = 0;\n\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n\n lastFoldEndColumn = fold.end.column;\n }\n\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n}).call(FoldLine.prototype);\n\nexports.FoldLine = FoldLine;\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar Range = require(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\n\nvar RangeList = function() {\n this.ranges = [];\n this.$bias = 1;\n};\n\n(function() {\n this.comparePoints = comparePoints;\n\n this.pointIndex = function(pos, excludeEdges, startIndex) {\n var list = this.ranges;\n\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i-2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n\n return -i-1;\n }\n return -i - 1;\n };\n\n this.add = function(range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n\n this.addList = function(list) {\n var removed = [];\n for (var i = list.length; i--; ) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n\n this.substractPoint = function(pos) {\n var i = this.pointIndex(pos);\n\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n this.merge = function() {\n var removed = [];\n var list = this.ranges;\n \n list = list.sort(function(a, b) {\n return comparePoints(a.start, b.start);\n });\n \n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n \n this.ranges = list;\n\n return removed;\n };\n\n this.contains = function(row, column) {\n return this.pointIndex({row: row, column: column}) >= 0;\n };\n\n this.containsPoint = function(pos) {\n return this.pointIndex(pos) >= 0;\n };\n\n this.rangeAtPoint = function(pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n\n\n this.clipRows = function(startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n\n var startIndex = this.pointIndex({row: startRow, column: 0});\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({row: endRow, column: 0}, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n\n this.removeAll = function() {\n return this.ranges.splice(0, this.ranges.length);\n };\n\n this.attach = function(session) {\n if (this.session)\n this.detach();\n\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n\n this.session.on('change', this.onChange);\n };\n\n this.detach = function() {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n\n this.$onChange = function(delta) {\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var ranges = this.ranges;\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row >= startRow)\n break;\n }\n \n if (delta.action == \"insert\") {\n var lineDif = endRow - startRow;\n var colDiff = -start.column + end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > startRow)\n break;\n \n if (r.start.row == startRow && r.start.column >= start.column) {\n if (r.start.column == start.column && this.$bias <= 0) {\n } else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$bias < 0) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) {\n if (r.end.column > r.start.column && r.end.column == ranges[i+1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n } else {\n var lineDif = startRow - endRow;\n var colDiff = start.column - end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n \n if (r.start.row > endRow)\n break;\n \n if (r.end.row < endRow\n && (\n startRow < r.end.row \n || startRow == r.end.row && start.column < r.end.column\n )\n ) {\n r.end.row = startRow;\n r.end.column = start.column;\n }\n else if (r.end.row == endRow) {\n if (r.end.column <= end.column) {\n if (lineDif || r.end.column > start.column) {\n r.end.column = start.column;\n r.end.row = start.row;\n }\n }\n else {\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n else if (r.end.row > endRow) {\n r.end.row += lineDif;\n }\n \n if (r.start.row < endRow\n && (\n startRow < r.start.row \n || startRow == r.start.row && start.column < r.start.column\n )\n ) {\n r.start.row = startRow;\n r.start.column = start.column;\n }\n else if (r.start.row == endRow) {\n if (r.start.column <= end.column) {\n if (lineDif || r.start.column > start.column) {\n r.start.column = start.column;\n r.start.row = start.row;\n }\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n else if (r.start.row > endRow) {\n r.start.row += lineDif;\n }\n }\n }\n\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n\n}).call(RangeList.prototype);\n\nexports.RangeList = RangeList;\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/lib/oop\"], function(require, exports, module) {\n\"use strict\";\n\nvar RangeList = require(\"../range_list\").RangeList;\nvar oop = require(\"../lib/oop\");\nvar Fold = exports.Fold = function(range, placeholder) {\n this.foldLine = null;\n this.placeholder = placeholder;\n this.range = range;\n this.start = range.start;\n this.end = range.end;\n\n this.sameRow = range.start.row == range.end.row;\n this.subFolds = this.ranges = [];\n};\n\noop.inherits(Fold, RangeList);\n\n(function() {\n\n this.toString = function() {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n\n this.setFoldLine = function(foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function(fold) {\n fold.setFoldLine(foldLine);\n });\n };\n\n this.clone = function() {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function(subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n\n this.addSubFold = function(fold) {\n if (this.range.isEqual(fold))\n return;\n consumeRange(fold, this.start);\n\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n var firstConsumed = 0;\n\n if (cmp == 0) {\n if (afterStart.range.containsRange(fold))\n return afterStart.addSubFold(fold);\n else\n firstConsumed = 1;\n }\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n if (cmp == 0) j++;\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length;\n for (var k = firstConsumed; k < last; k++) {\n fold.addSubFold(consumedFolds[k]);\n }\n fold.setFoldLine(this.foldLine);\n\n return fold;\n };\n \n this.restoreRange = function(range) {\n return restoreRange(range, this.start);\n };\n\n}).call(Fold.prototype);\n\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../range\").Range;\nvar FoldLine = require(\"./fold_line\").FoldLine;\nvar Fold = require(\"./fold\").Fold;\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\n\nfunction Folding() {\n this.getFoldAt = function(row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var range = folds[i].range;\n if (range.contains(row, column)) {\n if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) {\n continue;\n } else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) {\n continue;\n }\n return folds[i];\n }\n }\n };\n this.getFoldsInRange = function(range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n\n start.column += 1;\n end.column -= 1;\n\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n } else if (cmp == 2) {\n continue;\n } else\n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n\n return foundFolds;\n };\n\n this.getFoldsInRangeList = function(ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function(range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n } else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function() {\n var folds = [];\n var foldLines = this.$foldData;\n \n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n\n return folds;\n };\n this.getFoldStringAt = function(row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n\n this.getFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n } else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n\n this.getFoldedRowCount = function(first, last) {\n var foldData = this.$foldData, rowCount = last-first+1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i],\n end = foldLine.end.row,\n start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last-start;\n else\n rowCount = 0; // in one fold\n }\n break;\n } else if (end >= first){\n if (start >= first) // fold inside range\n rowCount -= end-start;\n else\n rowCount -= end-first+1;\n }\n }\n return rowCount;\n };\n\n this.$addFoldLine = function(foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function(a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function(placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n \n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n \n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n if (!fold.collapseChildren) {\n folds.forEach(function(subFold) {\n fold.addSubFold(subFold);\n });\n }\n }\n\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n } else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n } else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n\n return fold;\n };\n\n this.addFolds = function(folds) {\n folds.forEach(function(fold) {\n this.addFold(fold);\n }, this);\n };\n\n this.removeFold = function(fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n } else\n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n } else\n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n } else\n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n } else\n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n\n this.removeFolds = function(folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n\n cloneFolds.forEach(function(fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n\n this.expandFold = function(fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function(subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row+1, fold.end.row, fold.collapseChildren-1);\n }\n fold.subFolds = [];\n };\n\n this.expandFolds = function(folds) {\n folds.forEach(function(fold) {\n this.expandFold(fold);\n }, this);\n };\n\n this.unfold = function(location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n if (expandInner == null) expandInner = true;\n } else if (typeof location == \"number\") {\n range = new Range(location, 0, location, this.getLine(location).length);\n } else if (\"row\" in location) {\n range = Range.fromPoints(location, location);\n } else if (Array.isArray(location)) {\n folds = [];\n location.forEach(function(range) {\n folds = folds.concat(this.unfold(range));\n }, this);\n return folds;\n } else {\n range = location;\n }\n \n folds = this.getFoldsInRangeList(range);\n var outermostFolds = folds;\n while (\n folds.length == 1\n && Range.comparePoints(folds[0].start, range.start) < 0 \n && Range.comparePoints(folds[0].end, range.end) > 0\n ) {\n this.expandFolds(folds);\n folds = this.getFoldsInRangeList(range);\n }\n \n if (expandInner != false) {\n this.removeFolds(folds);\n } else {\n this.expandFolds(folds);\n }\n if (outermostFolds.length)\n return outermostFolds;\n };\n this.isRowFolded = function(docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n\n this.getRowFoldEnd = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n\n this.getRowFoldStart = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n\n this.getFoldDisplayLine = function(foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n\n if (placeholder != null) {\n textLine += placeholder;\n } else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n\n this.getDisplayLine = function(row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n } else {\n return this.getFoldDisplayLine(\n foldLine, row, endColumn, startRow, startColumn);\n }\n };\n\n this.$cloneFoldData = function() {\n var fd = [];\n fd = this.$foldData.map(function(foldLine) {\n var folds = foldLine.folds.map(function(fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n\n return fd;\n };\n\n this.toggleFold = function(tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n\n if (fold) {\n this.expandFold(fold);\n return;\n } else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n } else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n } else if (bracketPos = this.findMatchingBracket({row: cursor.row, column: cursor.column + 1})) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n\n range.start.column++;\n } else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n } else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n } else if (folds.length == 1 ) {\n fold = folds[0];\n }\n }\n\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n\n this.addFold(placeholder, range);\n };\n\n this.getCommentFoldRange = function(row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token && token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type));\n iterator.stepForward();\n }\n \n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + 2;\n\n iterator = new TokenIterator(this, row, column);\n \n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (!re.test(state))\n lastRow = iterator.$row;\n } else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type));\n token = iterator.stepBackward();\n } else\n token = iterator.getCurrentToken();\n\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2;\n return range;\n }\n };\n\n this.foldAll = function(startRow, endRow, depth, test) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n \n if (test && !test(row)) continue;\n\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow\n ) {\n row = range.end.row;\n range.collapseChildren = depth;\n this.addFold(\"...\", range);\n }\n }\n };\n \n this.foldToLevel = function(level) {\n this.foldAll();\n while (level-- > 0)\n this.unfold(null, false);\n };\n \n this.foldAllComments = function() {\n var session = this;\n this.foldAll(null, null, null, function(row) {\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"text\" && /^\\s+$/.test(token.value))\n continue;\n if (/comment/.test(token.type))\n return true;\n return false;\n }\n });\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function(style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n \n if (this.$foldStyle == style)\n return;\n\n this.$foldStyle = style;\n \n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n\n this.$setFolding = function(foldMode) {\n if (this.$foldMode == foldMode)\n return;\n \n this.$foldMode = foldMode;\n \n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n \n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n \n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n \n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n\n this.onFoldWidgetClick = function(row, e) {\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n \n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n \n this.$toggleFoldWidget = function(row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n \n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n } else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n } else if (range) {\n if (options.all) \n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n \n return range;\n };\n \n \n \n this.toggleFoldWidget = function(toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n \n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n \n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n\n if (fold) {\n this.removeFold(fold);\n } else {\n this.addFold(\"...\", range);\n }\n }\n };\n\n this.updateFoldWidgets = function(delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n } else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function(e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\n\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\n\n\nfunction BracketMatch() {\n\n this.findMatchingBracket = function(position, chr) {\n if (position.column == 0) return null;\n\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column-1);\n if (charBeforeCursor == \"\") return null;\n\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n \n this.getBracketRange = function(pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = {row: pos.row, column: pos.column + 1};\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n } else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n \n return range;\n };\n this.getMatchingBracketRanges = function(pos) {\n var line = this.getLine(pos.row);\n\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = {row: pos.row, column: pos.column + 1};\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n }\n\n if (!match)\n return null;\n\n var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);\n var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)\n : this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return [startRange];\n var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);\n\n return [startRange, endRange];\n };\n\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\",\n \"<\": \">\",\n \">\": \"<\"\n };\n\n this.$findOpeningBracket = function(bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n \n if (!typeRe){\n typeRe = new RegExp(\n \"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n + \")+\"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n \n while (true) {\n \n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n \n value = token.value;\n valueIndex = value.length - 1;\n }\n \n return null;\n };\n\n this.$findClosingBracket = function(bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n\n if (!typeRe){\n typeRe = new RegExp(\n \"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n + \")+\"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n\n while (true) {\n\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n\n valueIndex = 0;\n }\n \n return null;\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar BidiHandler = require(\"./bidihandler\").BidiHandler;\nvar config = require(\"./config\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Selection = require(\"./selection\").Selection;\nvar TextMode = require(\"./mode/text\").Mode;\nvar Range = require(\"./range\").Range;\nvar Document = require(\"./document\").Document;\nvar BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = require(\"./search_highlight\").SearchHighlight;\n\nvar EditSession = function(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function() {\n return this.join(\"\\n\");\n };\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(text);\n\n this.setDocument(text);\n this.selection = new Selection(this);\n this.$bidiHandler = new BidiHandler(this);\n\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n};\n\n\nEditSession.$uid = 0;\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setDocument = function(doc) {\n if (this.doc)\n this.doc.off(\"change\", this.$onChange);\n\n this.doc = doc;\n doc.on(\"change\", this.$onChange);\n\n if (this.bgTokenizer)\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.resetCaches();\n };\n this.getDocument = function() {\n return this.doc;\n };\n this.$resetRowCache = function(docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n\n this.$getRowCacheIndex = function(cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n\n return low -1;\n };\n\n this.resetCaches = function() {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (this.bgTokenizer)\n this.bgTokenizer.start(0);\n };\n\n this.onChangeFold = function(e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n\n this.onChange = function(delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager) {\n if (removedFolds && removedFolds.length) {\n this.$undoManager.add({\n action: \"removeFolds\",\n folds: removedFolds\n }, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n }\n this.$undoManager.add(delta, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n \n this.$informUndoManager.schedule();\n }\n\n this.bgTokenizer && this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n this.setValue = function(text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n\n this.$resetRowCache(0);\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n this.getValue =\n this.toString = function() {\n return this.doc.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.getState = function(row) {\n return this.bgTokenizer.getState(row);\n };\n this.getTokens = function(row) {\n return this.bgTokenizer.getTokens(row);\n };\n this.getTokenAt = function(row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n } else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n this.setUndoManager = function(undoManager) {\n this.$undoManager = undoManager;\n \n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n \n if (undoManager) {\n var self = this;\n undoManager.addSession(this);\n this.$syncInformUndoManager = function() {\n self.$informUndoManager.cancel();\n self.mergeUndoDeltas = false;\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n } else {\n this.$syncInformUndoManager = function() {};\n }\n };\n this.markUndoGroup = function() {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n \n this.$defaultUndoManager = {\n undo: function() {},\n redo: function() {},\n hasUndo: function() {},\n hasRedo: function() {},\n reset: function() {},\n add: function() {},\n addSelection: function() {},\n startNewGroup: function() {},\n addSession: function() {}\n };\n this.getUndoManager = function() {\n return this.$undoManager || this.$defaultUndoManager;\n };\n this.getTabString = function() {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n } else {\n return \"\\t\";\n }\n };\n this.setUseSoftTabs = function(val) {\n this.setOption(\"useSoftTabs\", val);\n };\n this.getUseSoftTabs = function() {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n this.setTabSize = function(tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n this.getTabSize = function() {\n return this.$tabSize;\n };\n this.isTabStop = function(position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n this.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n this.getNavigateWithinSoftTabs = function() {\n return this.$navigateWithinSoftTabs;\n };\n\n this.$overwrite = false;\n this.setOverwrite = function(overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n this.getOverwrite = function() {\n return this.$overwrite;\n };\n this.toggleOverwrite = function() {\n this.setOverwrite(!this.$overwrite);\n };\n this.addGutterDecoration = function(row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n this.removeGutterDecoration = function(row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n this.getBreakpoints = function() {\n return this.$breakpoints;\n };\n this.setBreakpoints = function(rows) {\n this.$breakpoints = [];\n for (var i=0; i 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column-1, column+1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n\n var start = column;\n if (start > 0) {\n do {\n start--;\n }\n while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n\n return new Range(row, start, row, end);\n };\n this.getAWordRange = function(row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n this.setNewLineMode = function(newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n this.getNewLineMode = function() {\n return this.doc.getNewLineMode();\n };\n this.setUseWorker = function(useWorker) { this.setOption(\"useWorker\", useWorker); };\n this.getUseWorker = function() { return this.$useWorker; };\n this.onReloadTokenizer = function(e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n\n this.$modes = config.$modes;\n this.$mode = null;\n this.$modeId = null;\n this.setMode = function(mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n } else {\n path = mode || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function(m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n } else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n\n this.$onChangeMode = function(mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode) \n return;\n \n var oldMode = this.$mode;\n this.$mode = mode;\n\n this.$stopWorker();\n\n if (this.$useWorker)\n this.$startWorker();\n\n var tokenizer = mode.getTokenizer();\n\n if(tokenizer.on !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.on(\"update\", onReloadTokenizer);\n }\n\n if (!this.bgTokenizer) {\n this.bgTokenizer = new BackgroundTokenizer(tokenizer);\n var _self = this;\n this.bgTokenizer.on(\"update\", function(e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n } else {\n this.bgTokenizer.setTokenizer(tokenizer);\n }\n\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n\n \n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\", {oldMode: oldMode, mode: mode});\n }\n };\n\n this.$stopWorker = function() {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n\n this.$startWorker = function() {\n try {\n this.$worker = this.$mode.createWorker(this);\n } catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n this.getMode = function() {\n return this.$mode;\n };\n\n this.$scrollTop = 0;\n this.setScrollTop = function(scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n this.getScrollTop = function() {\n return this.$scrollTop;\n };\n\n this.$scrollLeft = 0;\n this.setScrollLeft = function(scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n this.getScrollLeft = function() {\n return this.$scrollLeft;\n };\n this.getScreenWidth = function() {\n this.$computeWidth();\n if (this.lineWidgets) \n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n \n this.getLineWidgetMaxWidth = function() {\n if (this.lineWidgetsWidth != null) return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function(w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n\n this.$computeWidth = function(force) {\n if (this.$modified || force) {\n this.$modified = false;\n\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n this.getLine = function(row) {\n return this.doc.getLine(row);\n };\n this.getLines = function(firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n this.getLength = function() {\n return this.doc.getLength();\n };\n this.getTextRange = function(range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n this.insert = function(position, text) {\n return this.doc.insert(position, text);\n };\n this.remove = function(range) {\n return this.doc.remove(range);\n };\n this.removeFullLines = function(firstRow, lastRow){\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n this.undoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.revertDelta(delta);\n } else if (delta.folds) {\n this.addFolds(delta.folds);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionBefore)\n this.selection.fromJSON(deltas.selectionBefore);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, true));\n }\n this.$fromUndo = false;\n };\n this.redoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.$safeApplyDelta(delta);\n }\n }\n\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionAfter)\n this.selection.fromJSON(deltas.selectionAfter);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, false));\n }\n this.$fromUndo = false;\n };\n this.setUndoSelect = function(enable) {\n this.$undoSelect = enable;\n };\n\n this.$getUndoSelection = function(deltas, isUndo) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n\n var range, point;\n\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (!delta.start) continue; // skip folds\n if (!range) {\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n } else {\n range = Range.fromPoints(delta.start, delta.start);\n }\n continue;\n }\n \n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n } else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n }\n }\n return range;\n };\n this.replace = function(range, text) {\n return this.doc.replace(range, text);\n };\n this.moveText = function(fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function(x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n\n return toRange;\n };\n this.indentRows = function(startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row=startRow; row<=endRow; row++)\n this.doc.insertInLine({row: row, column: 0}, indentString);\n };\n this.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n } else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n\n this.$moveLines = function(firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0) return 0;\n var diff = row-firstRow;\n } else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength()-1) return 0;\n var diff = row-lastRow;\n } else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function(x){\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n \n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow+diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n this.moveLinesUp = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n this.moveLinesDown = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n this.duplicateLines = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n\n\n this.$clipRowToDocument = function(row) {\n return Math.max(0, Math.min(row, this.doc.getLength()-1));\n };\n\n this.$clipColumnToRow = function(row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n\n\n this.$clipPositionToDocument = function(row, column) {\n column = Math.max(0, column);\n\n if (row < 0) {\n row = 0;\n column = 0;\n } else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len-1).length;\n } else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n\n return {\n row: row,\n column: column\n };\n };\n\n this.$clipRangeToDocument = function(range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n } else {\n range.start.column = this.$clipColumnToRow(\n range.start.row,\n range.start.column\n );\n }\n\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n } else {\n range.end.column = this.$clipColumnToRow(\n range.end.row,\n range.end.column\n );\n }\n return range;\n };\n this.$wrapLimit = 80;\n this.$useWrapMode = false;\n this.$wrapLimitRange = {\n min : null,\n max : null\n };\n this.setUseWrapMode = function(useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n\n this._signal(\"changeWrapMode\");\n }\n };\n this.getUseWrapMode = function() {\n return this.$useWrapMode;\n };\n this.setWrapLimitRange = function(min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n this.adjustWrapLimit = function(desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = {min: $printMargin, max: $printMargin};\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n\n this.$constrainWrapLimit = function(wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n\n return wrapLimit;\n };\n this.getWrapLimit = function() {\n return this.$wrapLimit;\n };\n this.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n this.getWrapLimitRange = function() {\n return {\n min : this.$wrapLimitRange.min,\n max : this.$wrapLimitRange.max\n };\n };\n\n this.$updateInternalDataOnChange = function(delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n \n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n\n lastRow = firstRow;\n } else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n } else\n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n } else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n\n return removedFolds;\n };\n\n this.$updateRowLengthCache = function(firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n\n this.$updateWrapData = function(firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row ++;\n } else {\n tokens = [];\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(\n placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n } else {\n walkTokens = this.$getDisplayTokens(\n lines[row].substring(lastColumn, column),\n tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this),\n foldLine.end.row,\n lines[foldLine.end.row].length + 1\n );\n\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n var CHAR = 1,\n CHAR_EXT = 2,\n PLACEHOLDER_START = 3,\n PLACEHOLDER_BODY = 4,\n PUNCTUATION = 9,\n SPACE = 10,\n TAB = 11,\n TAB_SPACE = 12;\n\n\n this.$computeWrapSplits = function(tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n\n var isCode = this.$wrapAsCode;\n\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var len = screenPos - lastSplit;\n for (var i = lastSplit; i < screenPos; i++) {\n var ch = tokens[i];\n if (ch === 12 || ch === 2) len -= 1;\n }\n\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit -(wrapLimit>>2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split --;\n }\n } else {\n while (split > minSplit && tokens[split] < SPACE) {\n split --;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n this.$getDisplayTokens = function(str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n } else if((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n } else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n } else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n\n return [screenColumn, column];\n };\n\n this.lineWidgets = null;\n this.getRowLength = function(row) {\n var h = 1;\n if (this.lineWidgets)\n h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n \n if (!this.$useWrapMode || !this.$wrapData[row])\n return h;\n else\n return this.$wrapData[row].length + h;\n };\n this.getRowLineCount = function(row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n } else {\n return this.$wrapData[row].length + 1;\n }\n };\n\n this.getRowWrapIndent = function(screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n } else {\n return 0;\n }\n };\n this.getScreenLastRowColumn = function(screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n this.getDocumentLastRowColumn = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n this.getDocumentLastRowColumnPosition = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n this.getRowSplitData = function(row) {\n if (!this.$useWrapMode) {\n return undefined;\n } else {\n return this.$wrapData[row];\n }\n };\n this.getScreenTabSize = function(screenColumn) {\n return this.$tabSize - (screenColumn % this.$tabSize | 0);\n };\n\n\n this.screenToDocumentRow = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n\n\n this.screenToDocumentColumn = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n this.screenToDocumentPosition = function(screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return {row: 0, column: 0};\n\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n } else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row+1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n } else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n } else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if(splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n\n return {row: docRow, column: docColumn};\n };\n this.documentToScreenPosition = function(docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n\n docRow = pos.row;\n docColumn = pos.column;\n\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n\n var rowEnd, row = 0;\n\n\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ?foldLine.start.row :Infinity;\n\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ?foldLine.start.row :Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n\n screenRow += this.getRowLength(row);\n row = rowEnd;\n\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n } else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow ++;\n screenRowOffset++;\n }\n textLine = textLine.substring(\n wrapRow[screenRowOffset - 1] || 0, textLine.length\n );\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n \n if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)\n screenRow += this.lineWidgets[row].rowsAbove;\n\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n this.documentToScreenColumn = function(row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n this.documentToScreenRow = function(docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n this.getScreenLength = function() {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n } else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row :Infinity;\n\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row ++;\n if (row > foldStart) {\n row = fold.end.row+1;\n fold = this.$foldData[i++];\n foldStart = fold ?fold.start.row :Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n\n return screenRows;\n };\n this.$setFontMetrics = function(fm) {\n if (!this.$enableVarChar) return;\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n \n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n } else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n \n return [screenColumn, column];\n };\n };\n \n this.destroy = function() {\n if (this.bgTokenizer) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer = null;\n }\n this.$stopWorker();\n this.removeAllListeners();\n if (this.doc) {\n this.doc.off(\"change\", this.$onChange);\n }\n this.selection.detach();\n };\n\n this.isFullWidth = isFullWidth;\n function isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n }\n\n}).call(EditSession.prototype);\n\nrequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nrequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\n\n\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function(value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n } else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function() {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n }, \n wrapMethod: {\n set: function(val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: {\n set: function() {\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n },\n initialValue: true \n },\n firstLineNumber: {\n set: function() {this._signal(\"changeBreakpoint\");},\n initialValue: 1\n },\n useWorker: {\n set: function(useWorker) {\n this.$useWorker = useWorker;\n\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: {initialValue: true},\n tabSize: {\n set: function(tabSize) {\n tabSize = parseInt(tabSize);\n if (tabSize > 0 && this.$tabSize !== tabSize) {\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n }\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: {initialValue: false},\n foldStyle: {\n set: function(val) {this.setFoldStyle(val);},\n handlesSet: true\n },\n overwrite: {\n set: function(val) {this._signal(\"changeOverwrite\");},\n initialValue: false\n },\n newLineMode: {\n set: function(val) {this.doc.setNewLineMode(val);},\n get: function() {return this.doc.getNewLineMode();},\n handlesSet: true\n },\n mode: {\n set: function(val) { this.setMode(val); },\n get: function() { return this.$modeId; },\n handlesSet: true\n }\n});\n\nexports.EditSession = EditSession;\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\n\nvar Search = function() {\n this.$options = {};\n};\n\n(function() {\n this.set = function(options) {\n oop.mixin(this.$options, options);\n return this;\n };\n this.getOptions = function() {\n return lang.copyObject(this.$options);\n };\n this.setOptions = function(options) {\n this.$options = options;\n };\n this.find = function(session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n\n var firstRange = null;\n iterator.forEach(function(sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)\n ) {\n firstRange = null;\n return false;\n }\n \n return true;\n });\n\n return firstRange;\n };\n this.findAll = function(session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n \n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n \n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex\n ) {\n continue;\n }\n ranges.push(prevRange = new Range(\n row, startIndex, row + len - 1, endIndex\n ));\n if (len > 2)\n row = row + len - 2;\n }\n } else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.start.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row)\n i++;\n\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row)\n j--;\n \n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n\n return ranges;\n };\n this.replace = function(input, replacement) {\n var options = this.$options;\n\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n\n if (!re)\n return;\n\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n \n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--; ) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n \n return replacement;\n };\n\n this.$assembleRegExp = function(options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n\n var needle = options.needle;\n\n if (!options.needle)\n return options.re = false;\n\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n\n try {\n var re = new RegExp(needle, modifier);\n } catch(e) {\n re = false;\n }\n return options.re = re;\n };\n\n this.$assembleMultilineRegExp = function(needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++) try {\n re.push(new RegExp(parts[i], modifier));\n } catch(e) {\n return false;\n }\n return re;\n };\n\n this.$matchIterator = function(session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n \n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n \n if (backwards) {\n var forEach = function(callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function(callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n \n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function(row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0 || startRow + len > session.getLength()) return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1) return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset) return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function(row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length) break;\n re.lastIndex = last += 1;\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function(row, startIndex, callback) {\n var line = session.getLine(row);\n var last;\n var m;\n re.lastIndex = startIndex;\n while((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row,last + length))\n return true;\n if (!length) {\n re.lastIndex = last += 1;\n if (last >= line.length) return false;\n }\n }\n };\n }\n return {forEach: forEach};\n };\n\n}).call(Search.prototype);\n\nfunction addWordBoundary(needle, options) {\n function wordBoundary(c) {\n if (/\\w/.test(c) || options.regExp) return \"\\\\b\";\n return \"\";\n }\n return wordBoundary(needle[0]) + needle\n + wordBoundary(needle[needle.length - 1]);\n}\n\nexports.Search = Search;\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar keyUtil = require(\"../lib/keys\");\nvar useragent = require(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\n\nfunction HashHandler(config, platform) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = true;\n}\n\nfunction MultiHashHandler(config, platform) {\n HashHandler.call(this, config, platform);\n this.$singleCommand = false;\n}\n\nMultiHashHandler.prototype = HashHandler.prototype;\n\n(function() {\n \n\n this.addCommand = function(command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n\n this.commands[command.name] = command;\n\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n\n this.removeCommand = function(command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n } else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n\n this.bindKey = function(key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({exec: command, bindKey: key, name: command.name || key});\n \n key.split(\"|\").forEach(function(keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function(keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n \n function getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position \n || (command.isDefault ? -100 : 0);\n }\n this._addCommandToBinding = function(keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n } else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n } else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n } else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n \n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n\n this.addCommands = function(commands) {\n commands && Object.keys(commands).forEach(function(name) {\n var command = commands[name];\n if (!command)\n return;\n \n if (typeof command === \"string\")\n return this.bindKey(command, name);\n\n if (typeof command === \"function\")\n command = { exec: command };\n\n if (typeof command !== \"object\")\n return;\n\n if (!command.name)\n command.name = name;\n\n this.addCommand(command);\n }, this);\n };\n\n this.removeCommands = function(commands) {\n Object.keys(commands).forEach(function(name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n\n this.bindKeys = function(keyList) {\n Object.keys(keyList).forEach(function(key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n\n this._buildKeyHash = function(command) {\n this.bindKey(command.bindKey, command);\n };\n this.parseKeys = function(keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(x){return x;});\n var key = parts.pop();\n\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return {key: key, hashId: -1};\n else if (parts.length == 1 && parts[0] == \"shift\")\n return {key: key.toUpperCase(), hashId: -1};\n\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return {key: key, hashId: hashId};\n };\n\n this.findKeyCommand = function findKeyCommand(hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n\n this.handleKeyboard = function(data, hashId, keyString, keyCode) {\n if (keyCode < 0) return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n \n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return {command: \"null\"};\n }\n }\n \n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return {command: command};\n };\n \n this.getStatusText = function(editor, data) {\n return data.$keyChain || \"\";\n };\n\n}).call(HashHandler.prototype);\n\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar MultiHashHandler = require(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\n\nvar CommandManager = function(platform, commands) {\n MultiHashHandler.call(this, commands, platform);\n this.byName = this.commands;\n this.setDefaultHandler(\"exec\", function(e) {\n return e.command.exec(e.editor, e.args || {});\n });\n};\n\noop.inherits(CommandManager, MultiHashHandler);\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.exec = function(command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--; ) {\n if (this.exec(command[i], editor, args)) return true;\n }\n return false;\n }\n\n if (typeof command === \"string\")\n command = this.commands[command];\n\n if (!command)\n return false;\n\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n\n if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor))\n return false;\n\n var e = {editor: editor, command: command, args: args};\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n\n return e.returnValue === false ? false : true;\n };\n\n this.toggleRecording = function(editor) {\n if (this.$inReplay)\n return;\n\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.off(\"exec\", this.$addCommandToMacro);\n\n if (!this.macro.length)\n this.macro = this.oldMacro;\n\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function(e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n\n this.replay = function(editor) {\n if (this.$inReplay || !this.macro)\n return;\n\n if (this.recording)\n return this.toggleRecording(editor);\n\n try {\n this.$inReplay = true;\n this.macro.forEach(function(x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n } finally {\n this.$inReplay = false;\n }\n };\n\n this.trimMacro = function(m) {\n return m.map(function(x){\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n\n}).call(CommandManager.prototype);\n\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"../lib/lang\");\nvar config = require(\"../config\");\nvar Range = require(\"../range\").Range;\n\nfunction bindKey(win, mac) {\n return {win: win, mac: mac};\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n description: \"Show settings menu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/settings_menu\", function(module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n}, {\n name: \"goToNextError\",\n description: \"Go to next error\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function(editor) {\n config.loadModule(\"./ext/error_marker\", function(module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"goToPreviousError\",\n description: \"Go to previous error\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function(editor) {\n config.loadModule(\"./ext/error_marker\", function(module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"selectall\",\n description: \"Select all\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function(editor) { editor.selectAll(); },\n readOnly: true\n}, {\n name: \"centerselection\",\n description: \"Center selection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function(editor) { editor.centerSelection(); },\n readOnly: true\n}, {\n name: \"gotoline\",\n description: \"Go to line...\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function(editor, line) {\n if (typeof line === \"number\" && !isNaN(line))\n editor.gotoLine(line);\n editor.prompt({ $type: \"gotoLine\" });\n },\n readOnly: true\n}, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function(editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function(editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"toggleFoldWidget\",\n description: \"Toggle fold widget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function(editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"toggleParentFoldWidget\",\n description: \"Toggle parent fold widget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function(editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldall\",\n description: \"Fold all\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function(editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldAllComments\",\n description: \"Fold all comments\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function(editor) { editor.session.foldAllComments(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldOther\",\n description: \"Fold other\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function(editor) { \n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"unfoldall\",\n description: \"Unfold all\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function(editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"findnext\",\n description: \"Find next\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function(editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"findprevious\",\n description: \"Find previous\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function(editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"selectOrFindNext\",\n description: \"Select or find next\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function(editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext(); \n },\n readOnly: true\n}, {\n name: \"selectOrFindPrevious\",\n description: \"Select or find previous\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function(editor) { \n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n}, {\n name: \"find\",\n description: \"Find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor);});\n },\n readOnly: true\n}, {\n name: \"overwrite\",\n description: \"Overwrite\",\n bindKey: \"Insert\",\n exec: function(editor) { editor.toggleOverwrite(); },\n readOnly: true\n}, {\n name: \"selecttostart\",\n description: \"Select to start\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function(editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"gotostart\",\n description: \"Go to start\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function(editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"selectup\",\n description: \"Select up\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function(editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"golineup\",\n description: \"Go line up\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function(editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttoend\",\n description: \"Select to end\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function(editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"gotoend\",\n description: \"Go to end\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function(editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"selectdown\",\n description: \"Select down\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function(editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"golinedown\",\n description: \"Go line down\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function(editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectwordleft\",\n description: \"Select word left\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function(editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotowordleft\",\n description: \"Go to word left\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function(editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttolinestart\",\n description: \"Select to line start\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotolinestart\",\n description: \"Go to line start\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function(editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectleft\",\n description: \"Select left\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function(editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotoleft\",\n description: \"Go to left\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function(editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectwordright\",\n description: \"Select word right\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function(editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotowordright\",\n description: \"Go to word right\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function(editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttolineend\",\n description: \"Select to line end\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotolineend\",\n description: \"Go to line end\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function(editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectright\",\n description: \"Select right\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function(editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotoright\",\n description: \"Go to right\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function(editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectpagedown\",\n description: \"Select page down\",\n bindKey: \"Shift-PageDown\",\n exec: function(editor) { editor.selectPageDown(); },\n readOnly: true\n}, {\n name: \"pagedown\",\n description: \"Page down\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function(editor) { editor.scrollPageDown(); },\n readOnly: true\n}, {\n name: \"gotopagedown\",\n description: \"Go to page down\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function(editor) { editor.gotoPageDown(); },\n readOnly: true\n}, {\n name: \"selectpageup\",\n description: \"Select page up\",\n bindKey: \"Shift-PageUp\",\n exec: function(editor) { editor.selectPageUp(); },\n readOnly: true\n}, {\n name: \"pageup\",\n description: \"Page up\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function(editor) { editor.scrollPageUp(); },\n readOnly: true\n}, {\n name: \"gotopageup\",\n description: \"Go to page up\",\n bindKey: \"PageUp\",\n exec: function(editor) { editor.gotoPageUp(); },\n readOnly: true\n}, {\n name: \"scrollup\",\n description: \"Scroll up\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: \"scrolldown\",\n description: \"Scroll down\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: \"selectlinestart\",\n description: \"Select line start\",\n bindKey: \"Shift-Home\",\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectlineend\",\n description: \"Select line end\",\n bindKey: \"Shift-End\",\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"togglerecording\",\n description: \"Toggle recording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function(editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n}, {\n name: \"replaymacro\",\n description: \"Replay macro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function(editor) { editor.commands.replay(editor); },\n readOnly: true\n}, {\n name: \"jumptomatching\",\n description: \"Jump to matching\",\n bindKey: bindKey(\"Ctrl-\\\\|Ctrl-P\", \"Command-\\\\\"),\n exec: function(editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"selecttomatching\",\n description: \"Select to matching\",\n bindKey: bindKey(\"Ctrl-Shift-\\\\|Ctrl-Shift-P\", \"Command-Shift-\\\\\"),\n exec: function(editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"expandToMatching\",\n description: \"Expand to matching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function(editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"passKeysToBrowser\",\n description: \"Pass keys to browser\",\n bindKey: bindKey(null, null),\n exec: function() {},\n passEvent: true,\n readOnly: true\n}, {\n name: \"copy\",\n description: \"Copy\",\n exec: function(editor) {\n },\n readOnly: true\n},\n{\n name: \"cut\",\n description: \"Cut\",\n exec: function(editor) {\n var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty();\n var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange();\n editor._emit(\"cut\", range);\n\n if (!range.isEmpty())\n editor.session.remove(range);\n editor.clearSelection();\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"paste\",\n description: \"Paste\",\n exec: function(editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n}, {\n name: \"removeline\",\n description: \"Remove line\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function(editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n}, {\n name: \"duplicateSelection\",\n description: \"Duplicate selection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function(editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"sortlines\",\n description: \"Sort lines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function(editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n}, {\n name: \"togglecomment\",\n description: \"Toggle comment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function(editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"toggleBlockComment\",\n description: \"Toggle block comment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function(editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"modifyNumberUp\",\n description: \"Modify number up\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function(editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"modifyNumberDown\",\n description: \"Modify number down\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function(editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"replace\",\n description: \"Replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor, true);});\n }\n}, {\n name: \"undo\",\n description: \"Undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function(editor) { editor.undo(); }\n}, {\n name: \"redo\",\n description: \"Redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function(editor) { editor.redo(); }\n}, {\n name: \"copylinesup\",\n description: \"Copy lines up\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function(editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"movelinesup\",\n description: \"Move lines up\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function(editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"copylinesdown\",\n description: \"Copy lines down\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function(editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"movelinesdown\",\n description: \"Move lines down\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function(editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"del\",\n description: \"Delete\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function(editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"backspace\",\n description: \"Backspace\",\n bindKey: bindKey(\n \"Shift-Backspace|Backspace\",\n \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"\n ),\n exec: function(editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"cut_or_delete\",\n description: \"Cut or delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function(editor) { \n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n } else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolinestart\",\n description: \"Remove to line start\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function(editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolineend\",\n description: \"Remove to line end\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function(editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolinestarthard\",\n description: \"Remove to line start hard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function(editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolineendhard\",\n description: \"Remove to line end hard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function(editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removewordleft\",\n description: \"Remove word left\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function(editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removewordright\",\n description: \"Remove word right\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function(editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"outdent\",\n description: \"Outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"indent\",\n description: \"Indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function(editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"blockoutdent\",\n description: \"Block outdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"blockindent\",\n description: \"Block indent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function(editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"insertstring\",\n description: \"Insert string\",\n exec: function(editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"inserttext\",\n description: \"Insert text\",\n exec: function(editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"splitline\",\n description: \"Split line\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function(editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"transposeletters\",\n description: \"Transpose letters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function(editor) { editor.transposeLetters(); },\n multiSelectAction: function(editor) {editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"touppercase\",\n description: \"To uppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function(editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"tolowercase\",\n description: \"To lowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function(editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"autoindent\",\n description: \"Auto Indent\",\n bindKey: bindKey(null, null),\n exec: function(editor) { editor.autoIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"animate\"\n}, {\n name: \"expandtoline\",\n description: \"Expand to line\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function(editor) {\n var range = editor.selection.getRange();\n\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"joinlines\",\n description: \"Join lines\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n } else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n}, {\n name: \"invertSelection\",\n description: \"Invert selection\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n } else {\n newRanges.push(new Range(ranges[i-1].end.row, ranges[i-1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n\n editor.exitMultiSelectMode();\n editor.clearSelection();\n\n for(var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n}, {\n name: \"addLineAfter\",\n description: \"Add new line after the current line\",\n exec: function(editor) {\n editor.selection.clearSelection();\n editor.navigateLineEnd();\n editor.insert(\"\\n\");\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"addLineBefore\",\n description: \"Add new line before the current line\",\n exec: function(editor) {\n editor.selection.clearSelection();\n var cursor = editor.getCursorPosition();\n editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);\n editor.insert(\"\\n\");\n if (cursor.row === 0) editor.navigateUp();\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"openCommandPallete\",\n description: \"Open command pallete\",\n bindKey: bindKey(\"F1\", \"F1\"),\n exec: function(editor) {\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n}, {\n name: \"modeSelect\",\n description: \"Change language mode...\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n editor.prompt({ $type: \"modes\" });\n },\n readOnly: true\n}];\n\nfor (var i = 1; i < 9; i++) {\n exports.commands.push({\n name: \"foldToLevel\" + i,\n description: \"Fold To Level \" + i,\n level: i,\n exec: function(editor) { editor.session.foldToLevel(this.level); },\n scrollIntoView: \"center\",\n readOnly: true\n });\n}\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\",\"ace/clipboard\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar useragent = require(\"./lib/useragent\");\nvar TextInput = require(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = require(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = require(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = require(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Search = require(\"./search\").Search;\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = require(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = require(\"./commands/default_commands\").commands;\nvar config = require(\"./config\");\nvar TokenIterator = require(\"./token_iterator\").TokenIterator;\n\nvar clipboard = require(\"./clipboard\");\nvar Editor = function(renderer, session, options) {\n this.$toDestroy = [];\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n\n this.keyBinding = new KeyBinding(this);\n\n this.$search = new Search().set({\n wrap: true\n });\n\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n\n this.$initOperationListeners();\n \n this._$emitInputEvent = lang.delayedCall(function() {\n this._signal(\"input\", {});\n if (this.session && this.session.bgTokenizer)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n \n this.on(\"change\", function(_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n\n this.setSession(session || options && options.session || new EditSession(\"\"));\n config.resetOptions(this);\n if (options)\n this.setOptions(options);\n config._signal(\"editor\", this);\n};\n\nEditor.$uid = 0;\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$initOperationListeners = function() {\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n this.on(\"change\", function() {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.docChanged = true;\n }.bind(this), true);\n \n this.on(\"changeSelection\", function() {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n\n this.curOp = null;\n this.prevOp = {};\n this.startOperation = function(commandEvent) {\n if (this.curOp) {\n if (!commandEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commandEvent) {\n this.previousCommand = null;\n commandEvent = {};\n }\n\n this.$opResetTimer.schedule();\n this.curOp = this.session.curOp = {\n command: commandEvent.command || {},\n args: commandEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n this.curOp.selectionBefore = this.selection.toJSON();\n };\n\n this.endOperation = function(e) {\n if (this.curOp && this.session) {\n if (e && e.returnValue === false || !this.session)\n return (this.curOp = null);\n if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\")\n return;\n this._signal(\"beforeEndOperation\");\n if (!this.curOp) return;\n var command = this.curOp.command;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n var sel = this.selection.toJSON();\n this.curOp.selectionAfter = sel;\n this.$lastSel = this.selection.toJSON();\n this.session.getUndoManager().addSelection(sel);\n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n this.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\n this.$historyTracker = function(e) {\n if (!this.$mergeUndoDeltas)\n return;\n\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n\n this.mergeNextCommand = true;\n } else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n\n if (\n this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000\n ) {\n shouldMerge = false; // the sequence is too long\n }\n\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n this.setKeyboardHandler = function(keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\" && keyboardHandler != \"ace\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function(module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n } else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n this.getKeyboardHandler = function() {\n return this.keyBinding.getKeyboardHandler();\n };\n this.setSession = function(session) {\n if (this.session == session)\n return;\n if (this.curOp) this.endOperation();\n this.curOp = {};\n\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n \n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n \n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n \n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n \n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n \n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n \n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n \n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n \n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n \n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n \n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n \n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n \n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n \n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n \n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n \n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n \n this.onChangeMode();\n \n this.onCursorChange();\n \n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n } else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n \n this.curOp = null;\n \n oldSession && oldSession._signal(\"changeEditor\", {oldEditor: this});\n session && session._signal(\"changeEditor\", {editor: this});\n \n if (session && session.bgTokenizer)\n session.bgTokenizer.scheduleStart();\n };\n this.getSession = function() {\n return this.session;\n };\n this.setValue = function(val, cursorPos) {\n this.session.doc.setValue(val);\n\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n\n return val;\n };\n this.getValue = function() {\n return this.session.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.resize = function(force) {\n this.renderer.onResize(force);\n };\n this.setTheme = function(theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n this.getTheme = function() {\n return this.renderer.getTheme();\n };\n this.setStyle = function(style) {\n this.renderer.setStyle(style);\n };\n this.unsetStyle = function(style) {\n this.renderer.unsetStyle(style);\n };\n this.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container).fontSize;\n };\n this.setFontSize = function(size) {\n this.setOption(\"fontSize\", size);\n };\n\n this.$highlightBrackets = function() {\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function () {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n if (session.$bracketHighlight) {\n session.$bracketHighlight.markerIds.forEach(function(id) {\n session.removeMarker(id);\n });\n session.$bracketHighlight = null;\n }\n var ranges = session.getMatchingBracketRanges(self.getCursorPosition());\n if (!ranges && session.$mode.getMatching) \n ranges = session.$mode.getMatching(self.session);\n if (!ranges)\n return;\n\n var markerType = \"ace_bracket\";\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n } else if (ranges.length == 1) {\n markerType = \"ace_error_bracket\";\n }\n if (ranges.length == 2) {\n if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)\n ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];\n else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)\n ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];\n }\n\n session.$bracketHighlight = {\n ranges: ranges,\n markerIds: ranges.map(function(range) {\n return session.addMarker(range, markerType, \"text\");\n })\n };\n }, 50);\n };\n this.$highlightTags = function() {\n if (this.$highlightTagPending)\n return;\n var self = this;\n this.$highlightTagPending = true;\n setTimeout(function() {\n self.$highlightTagPending = false;\n \n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n \n var pos = self.getCursorPosition();\n var iterator = new TokenIterator(self.session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n \n if (!token || !/\\b(?:tag-open|tag-name)/.test(token.type)) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n return;\n }\n \n if (token.type.indexOf(\"tag-open\") !== -1) {\n token = iterator.stepForward();\n if (!token)\n return;\n }\n \n var tag = token.value;\n var currentTag = token.value;\n var depth = 0;\n var prevToken = iterator.stepBackward();\n \n if (prevToken.value === '<'){\n do {\n prevToken = token;\n token = iterator.stepForward();\n\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n currentTag = token.value;\n if (tag === currentTag) {\n if (prevToken.value === '<') {\n depth++;\n } else if (prevToken.value === '') {\n depth--;\n }\n }\n } else if (tag === currentTag && token.value === '/>') { // self closing tag\n depth--;\n }\n }\n \n } while (token && depth >= 0);\n } else {\n do {\n token = prevToken;\n prevToken = iterator.stepBackward();\n\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n if (tag === token.value) {\n if (prevToken.value === '<') {\n depth++;\n } else if (prevToken.value === '') {\n depth--;\n }\n }\n } else if (token.value === '/>') { // self closing tag\n var stepCount = 0;\n var tmpToken = prevToken;\n while (tmpToken) {\n if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {\n depth--;\n break;\n } else if (tmpToken.value === '<') {\n break;\n }\n tmpToken = iterator.stepBackward();\n stepCount++;\n }\n for (var i = 0; i < stepCount; i++) {\n iterator.stepForward();\n }\n }\n }\n } while (prevToken && depth <= 0);\n iterator.stepForward();\n }\n \n if (!token) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n return;\n }\n \n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn();\n var range = new Range(row, column, row, column+token.value.length);\n var sbm = session.$backMarkers[session.$tagHighlight];\n if (session.$tagHighlight && sbm != undefined && range.compareRange(sbm.range) !== 0) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n }\n \n if (!session.$tagHighlight)\n session.$tagHighlight = session.addMarker(range, \"ace_bracket\", \"text\");\n }, 50);\n };\n this.focus = function() {\n var _self = this;\n setTimeout(function() {\n if (!_self.isFocused())\n _self.textInput.focus();\n });\n this.textInput.focus();\n };\n this.isFocused = function() {\n return this.textInput.isFocused();\n };\n this.blur = function() {\n this.textInput.blur();\n };\n this.onFocus = function(e) {\n if (this.$isFocused)\n return;\n this.$isFocused = true;\n this.renderer.showCursor();\n this.renderer.visualizeFocus();\n this._emit(\"focus\", e);\n };\n this.onBlur = function(e) {\n if (!this.$isFocused)\n return;\n this.$isFocused = false;\n this.renderer.hideCursor();\n this.renderer.visualizeBlur();\n this._emit(\"blur\", e);\n };\n\n this.$cursorChange = function() {\n this.renderer.updateCursor();\n this.$highlightBrackets();\n this.$highlightTags();\n this.$updateHighlightActiveLine();\n };\n this.onDocumentChange = function(delta) {\n var wrap = this.session.$useWrapMode;\n var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\n this.renderer.updateLines(delta.start.row, lastRow, wrap);\n\n this._signal(\"change\", delta);\n this.$cursorChange();\n };\n\n this.onTokenizerUpdate = function(e) {\n var rows = e.data;\n this.renderer.updateLines(rows.first, rows.last);\n };\n\n\n this.onScrollTopChange = function() {\n this.renderer.scrollToY(this.session.getScrollTop());\n };\n\n this.onScrollLeftChange = function() {\n this.renderer.scrollToX(this.session.getScrollLeft());\n };\n this.onCursorChange = function() {\n this.$cursorChange();\n this._signal(\"changeSelection\");\n };\n\n this.$updateHighlightActiveLine = function() {\n var session = this.getSession();\n\n var highlight;\n if (this.$highlightActiveLine) {\n if (this.$selectionStyle != \"line\" || !this.selection.isMultiLine())\n highlight = this.getCursorPosition();\n if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty())\n highlight = false;\n if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\n highlight = false;\n }\n\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n } else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n } else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n\n this.onSelectionChange = function(e) {\n var session = this.session;\n\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n } else {\n this.$updateHighlightActiveLine();\n }\n\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n\n this._signal(\"changeSelection\");\n };\n\n this.$getSelectionHighLightRegexp = function() {\n var session = this.session;\n\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n\n var startColumn = selection.start.column;\n var endColumn = selection.end.column;\n var line = session.getLine(selection.start.row);\n \n var needle = line.substring(startColumn, endColumn);\n if (needle.length > 5000 || !/[\\w\\d]/.test(needle))\n return;\n\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n \n var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1);\n if (!re.test(wordWithBoundary))\n return;\n \n return re;\n };\n\n\n this.onChangeFrontMarker = function() {\n this.renderer.updateFrontMarkers();\n };\n\n this.onChangeBackMarker = function() {\n this.renderer.updateBackMarkers();\n };\n\n\n this.onChangeBreakpoint = function() {\n this.renderer.updateBreakpoints();\n };\n\n this.onChangeAnnotation = function() {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n\n\n this.onChangeMode = function(e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n\n\n this.onChangeWrapLimit = function() {\n this.renderer.updateFull();\n };\n\n this.onChangeWrapMode = function() {\n this.renderer.onResize(true);\n };\n\n\n this.onChangeFold = function() {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n this.getSelectedText = function() {\n return this.session.getTextRange(this.getSelectionRange());\n };\n this.getCopyText = function() {\n var text = this.getSelectedText();\n var nl = this.session.doc.getNewLineCharacter();\n var copyLine= false;\n if (!text && this.$copyWithEmptySelection) {\n copyLine = true;\n var ranges = this.selection.getAllRanges();\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (i && ranges[i - 1].start.row == range.start.row)\n continue;\n text += this.session.getLine(range.start.row) + nl;\n }\n }\n var e = {text: text};\n this._signal(\"copy\", e);\n clipboard.lineMode = copyLine ? e.text : false;\n return e.text;\n };\n this.onCopy = function() {\n this.commands.exec(\"copy\", this);\n };\n this.onCut = function() {\n this.commands.exec(\"cut\", this);\n };\n this.onPaste = function(text, event) {\n var e = {text: text, event: event};\n this.commands.exec(\"paste\", this, e);\n };\n \n this.$handlePaste = function(e) {\n if (typeof e == \"string\") \n e = {text: e};\n this._signal(\"paste\", e);\n var text = e.text;\n\n var lineMode = text === clipboard.lineMode;\n var session = this.session;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n if (lineMode)\n session.insert({ row: this.selection.lead.row, column: 0 }, text);\n else\n this.insert(text);\n } else if (lineMode) {\n this.selection.rangeList.ranges.forEach(function(range) {\n session.insert({ row: range.start.row, column: 0 }, text);\n });\n } else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n \n var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]);\n if (lines.length != ranges.length || isFullLine)\n return this.commands.exec(\"insertstring\", this, text);\n \n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n session.remove(range);\n \n session.insert(range.start, lines[i]);\n }\n }\n };\n\n this.execCommand = function(command, args) {\n return this.commands.exec(command, this, args);\n };\n this.insert = function(text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n if (!this.inVirtualSelectionMode) {\n this.session.mergeUndoDeltas = false;\n this.mergeNextCommand = false;\n }\n }\n text = transform.text;\n\n }\n }\n \n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n session.insert(cursor, text);\n\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(\n new Range(cursor.row, start + transform.selection[0],\n cursor.row, start + transform.selection[1]));\n } else { // Transform relative to the current row.\n this.selection.setSelectionRange(\n new Range(cursor.row + transform.selection[0],\n transform.selection[1],\n cursor.row + transform.selection[2],\n transform.selection[3]));\n }\n }\n if (this.$enableAutoIndent) {\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n\n session.insert({row: cursor.row+1, column: 0}, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n }\n };\n\n this.autoIndent = function () {\n var session = this.session;\n var mode = session.getMode();\n\n var startRow, endRow;\n if (this.selection.isEmpty()) {\n startRow = 0;\n endRow = session.doc.getLength() - 1;\n } else {\n var selectedRange = this.getSelectionRange();\n\n startRow = selectedRange.start.row;\n endRow = selectedRange.end.row;\n }\n\n var prevLineState = \"\";\n var prevLine = \"\";\n var lineIndent = \"\";\n var line, currIndent, range;\n var tab = session.getTabString();\n\n for (var row = startRow; row <= endRow; row++) {\n if (row > 0) {\n prevLineState = session.getState(row - 1);\n prevLine = session.getLine(row - 1);\n lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);\n }\n\n line = session.getLine(row);\n currIndent = mode.$getIndent(line);\n if (lineIndent !== currIndent) {\n if (currIndent.length > 0) {\n range = new Range(row, 0, row, currIndent.length);\n session.remove(range);\n }\n if (lineIndent.length > 0) {\n session.insert({row: row, column: 0}, lineIndent);\n }\n }\n\n mode.autoOutdent(prevLineState, session, row);\n }\n };\n\n\n this.onTextInput = function(text, composition) {\n if (!composition)\n return this.keyBinding.onTextInput(text);\n \n this.startOperation({command: { name: \"insertstring\" }});\n var applyComposition = this.applyComposition.bind(this, text, composition);\n if (this.selection.rangeCount)\n this.forEachSelection(applyComposition);\n else\n applyComposition();\n this.endOperation();\n };\n \n this.applyComposition = function(text, composition) {\n if (composition.extendLeft || composition.extendRight) {\n var r = this.selection.getRange();\n r.start.column -= composition.extendLeft;\n r.end.column += composition.extendRight;\n if (r.start.column < 0) {\n r.start.row--;\n r.start.column += this.session.getLine(r.start.row).length + 1;\n }\n this.selection.setRange(r);\n if (!text && !r.isEmpty())\n this.remove();\n }\n if (text || !this.selection.isEmpty())\n this.insert(text, true);\n if (composition.restoreStart || composition.restoreEnd) {\n var r = this.selection.getRange();\n r.start.column -= composition.restoreStart;\n r.end.column -= composition.restoreEnd;\n this.selection.setRange(r);\n }\n };\n\n this.onCommandKey = function(e, hashId, keyCode) {\n return this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n this.setOverwrite = function(overwrite) {\n this.session.setOverwrite(overwrite);\n };\n this.getOverwrite = function() {\n return this.session.getOverwrite();\n };\n this.toggleOverwrite = function() {\n this.session.toggleOverwrite();\n };\n this.setScrollSpeed = function(speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n this.getScrollSpeed = function() {\n return this.getOption(\"scrollSpeed\");\n };\n this.setDragDelay = function(dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n this.getDragDelay = function() {\n return this.getOption(\"dragDelay\");\n };\n this.setSelectionStyle = function(val) {\n this.setOption(\"selectionStyle\", val);\n };\n this.getSelectionStyle = function() {\n return this.getOption(\"selectionStyle\");\n };\n this.setHighlightActiveLine = function(shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n this.getHighlightActiveLine = function() {\n return this.getOption(\"highlightActiveLine\");\n };\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption(\"highlightGutterLine\");\n };\n this.setHighlightSelectedWord = function(shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n this.getHighlightSelectedWord = function() {\n return this.$highlightSelectedWord;\n };\n\n this.setAnimatedScroll = function(shouldAnimate){\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n\n this.getAnimatedScroll = function(){\n return this.renderer.getAnimatedScroll();\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.renderer.getShowInvisibles();\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n\n this.getDisplayIndentGuides = function() {\n return this.renderer.getDisplayIndentGuides();\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.renderer.getShowPrintMargin();\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.renderer.getPrintMarginColumn();\n };\n this.setReadOnly = function(readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n this.getReadOnly = function() {\n return this.getOption(\"readOnly\");\n };\n this.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n this.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n this.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n this.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n this.setShowFoldWidgets = function(show) {\n this.setOption(\"showFoldWidgets\", show);\n\n };\n this.getShowFoldWidgets = function() {\n return this.getOption(\"showFoldWidgets\");\n };\n\n this.setFadeFoldWidgets = function(fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n\n this.getFadeFoldWidgets = function() {\n return this.getOption(\"fadeFoldWidgets\");\n };\n this.remove = function(dir) {\n if (this.selection.isEmpty()){\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.removeWordRight = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeWordLeft = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineStart = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n if (this.selection.isEmpty())\n this.selection.selectLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineEnd = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.splitLine = function() {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n this.transposeLetters = function() {\n if (!this.selection.isEmpty()) {\n return;\n }\n\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column-1);\n range = new Range(cursor.row, column-1, cursor.row, column+1);\n }\n else {\n swap = line.charAt(column-1) + line.charAt(column-2);\n range = new Range(cursor.row, column-2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n this.toLowerCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.toUpperCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.indent = function() {\n var session = this.session;\n var range = this.getSelectionRange();\n\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n } else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n \n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n } else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n this.blockIndent = function() {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n this.blockOutdent = function() {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n this.sortLines = function() {\n var rows = this.$getSelectedRows();\n var session = this.session;\n\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n\n lines.sort(function(a, b) {\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n if (a.toLowerCase() > b.toLowerCase()) return 1;\n return 0;\n });\n\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i-rows.first]);\n }\n };\n this.toggleCommentLines = function() {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n\n this.toggleBlockComment = function() {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n this.getNumberAt = function(row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if(m.index <= column && m.index+m[0].length >= column){\n var number = {\n value: m[0],\n start: m.index,\n end: m.index+m[0].length\n };\n return number;\n }\n }\n return null;\n };\n this.modifyNumber = function(amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column-1, row, column);\n\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n\n\n if(fp !== nr.end && column < fp){\n amount *= Math.pow(10, nr.end - column - 1);\n } else {\n amount *= Math.pow(10, nr.end - column);\n }\n\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start +1, column + nnr.length - nr.value.length));\n\n }\n } else {\n this.toggleWord();\n }\n };\n\n this.$toggleWordPairs = [\n [\"first\", \"last\"],\n [\"true\", \"false\"],\n [\"yes\", \"no\"],\n [\"width\", \"height\"],\n [\"top\", \"bottom\"],\n [\"right\", \"left\"],\n [\"on\", \"off\"],\n [\"x\", \"y\"],\n [\"get\", \"set\"],\n [\"max\", \"min\"],\n [\"horizontal\", \"vertical\"],\n [\"show\", \"hide\"],\n [\"add\", \"remove\"],\n [\"up\", \"down\"],\n [\"before\", \"after\"],\n [\"even\", \"odd\"],\n [\"in\", \"out\"],\n [\"inside\", \"outside\"],\n [\"next\", \"previous\"],\n [\"increase\", \"decrease\"],\n [\"attach\", \"detach\"],\n [\"&&\", \"||\"],\n [\"==\", \"!=\"]\n ];\n\n this.toggleWord = function () {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n this.selection.selectWord();\n var currentState = this.getSelectedText();\n var currWordStart = this.selection.getWordRange().start.column;\n var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\\s/);\n var delta = column - currWordStart - 1;\n if (delta < 0) delta = 0;\n var curLength = 0, itLength = 0;\n var that = this;\n if (currentState.match(/[A-Za-z0-9_]+/)) {\n wordParts.forEach(function (item, i) {\n itLength = curLength + item.length;\n if (delta >= curLength && delta <= itLength) {\n currentState = item;\n that.selection.clearSelection();\n that.moveCursorTo(row, curLength + currWordStart);\n that.selection.selectTo(row, itLength + currWordStart);\n }\n curLength = itLength;\n });\n }\n\n var wordPairs = this.$toggleWordPairs;\n var reg;\n for (var i = 0; i < wordPairs.length; i++) {\n var item = wordPairs[i];\n for (var j = 0; j <= 1; j++) {\n var negate = +!j;\n var firstCondition = currentState.match(new RegExp('^\\\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\\\s?$', 'i'));\n if (firstCondition) {\n var secondCondition = currentState.match(new RegExp('([_]|^|\\\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\\\s)', 'g'));\n if (secondCondition) {\n reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) {\n var res = item[negate];\n if (result.toUpperCase() == result) {\n res = res.toUpperCase();\n } else if (result.charAt(0).toUpperCase() == result.charAt(0)) {\n res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1);\n }\n return res;\n });\n this.insert(reg);\n reg = \"\";\n }\n }\n }\n }\n };\n this.removeLines = function() {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n\n this.duplicateSelection = function() {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n } else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n\n sel.setSelectionRange(range, reverse);\n }\n };\n this.moveLinesDown = function() {\n this.$moveLines(1, false);\n };\n this.moveLinesUp = function() {\n this.$moveLines(-1, false);\n };\n this.moveText = function(range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n this.copyLinesUp = function() {\n this.$moveLines(-1, true);\n };\n this.copyLinesDown = function() {\n this.$moveLines(1, true);\n };\n this.$moveLines = function(dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1) moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n } else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n \n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff) ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1) rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy) diff = 0;\n totalDiff += diff;\n }\n \n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n this.$getSelectedRows = function(range) {\n range = (range || this.getSelectionRange()).collapseRows();\n\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n\n this.onCompositionStart = function(compositionState) {\n this.renderer.showComposition(compositionState);\n };\n\n this.onCompositionUpdate = function(text) {\n this.renderer.setCompositionText(text);\n };\n\n this.onCompositionEnd = function() {\n this.renderer.hideComposition();\n };\n this.getFirstVisibleRow = function() {\n return this.renderer.getFirstVisibleRow();\n };\n this.getLastVisibleRow = function() {\n return this.renderer.getLastVisibleRow();\n };\n this.isRowVisible = function(row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n this.isRowFullyVisible = function(row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n this.$getVisibleRowCount = function() {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n\n this.$moveByPage = function(dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n\n if (select === true) {\n this.selection.$moveSelection(function(){\n this.moveCursorBy(rows, 0);\n });\n } else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n\n var scrollTop = renderer.scrollTop;\n\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n\n renderer.animateScrolling(scrollTop);\n };\n this.selectPageDown = function() {\n this.$moveByPage(1, true);\n };\n this.selectPageUp = function() {\n this.$moveByPage(-1, true);\n };\n this.gotoPageDown = function() {\n this.$moveByPage(1, false);\n };\n this.gotoPageUp = function() {\n this.$moveByPage(-1, false);\n };\n this.scrollPageDown = function() {\n this.$moveByPage(1);\n };\n this.scrollPageUp = function() {\n this.$moveByPage(-1);\n };\n this.scrollToRow = function(row) {\n this.renderer.scrollToRow(row);\n };\n this.scrollToLine = function(line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n this.centerSelection = function() {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n this.getCursorPosition = function() {\n return this.selection.getCursor();\n };\n this.getCursorPositionScreen = function() {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n this.getSelectionRange = function() {\n return this.selection.getRange();\n };\n this.selectAll = function() {\n this.selection.selectAll();\n };\n this.clearSelection = function() {\n this.selection.clearSelection();\n };\n this.moveCursorTo = function(row, column) {\n this.selection.moveCursorTo(row, column);\n };\n this.moveCursorToPosition = function(pos) {\n this.selection.moveCursorToPosition(pos);\n };\n this.jumpToMatching = function(select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var token = prevToken || iterator.stepForward();\n\n if (!token) return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n \n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n \n if (prevToken.value === '<') {\n depth[token.value]++;\n }\n else if (prevToken.value === '') {\n depth[token.value]--;\n }\n \n if (depth[token.value] === -1) {\n matchType = 'tag';\n found = true;\n }\n }\n\n if (!found) {\n prevToken = token;\n token = iterator.stepForward();\n i = 0;\n }\n } while (token && !found);\n if (!matchType)\n return;\n\n var range, pos;\n if (matchType === 'bracket') {\n range = this.session.getBracketRange(cursor);\n if (!range) {\n range = new Range(\n iterator.getCurrentTokenRow(),\n iterator.getCurrentTokenColumn() + i - 1,\n iterator.getCurrentTokenRow(),\n iterator.getCurrentTokenColumn() + i - 1\n );\n pos = range.start;\n if (expand || pos.row === cursor.row && Math.abs(pos.column - cursor.column) < 2)\n range = this.session.getBracketRange(pos);\n }\n }\n else if (matchType === 'tag') {\n if (token && token.type.indexOf('tag-name') !== -1) \n var tag = token.value;\n else\n return;\n\n range = new Range(\n iterator.getCurrentTokenRow(),\n iterator.getCurrentTokenColumn() - 2,\n iterator.getCurrentTokenRow(),\n iterator.getCurrentTokenColumn() - 2\n );\n if (range.compare(cursor.row, cursor.column) === 0) {\n found = false;\n do {\n token = prevToken;\n prevToken = iterator.stepBackward();\n \n if (prevToken) {\n if (prevToken.type.indexOf('tag-close') !== -1) {\n range.setEnd(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1);\n }\n\n if (token.value === tag && token.type.indexOf('tag-name') !== -1) {\n if (prevToken.value === '<') {\n depth[tag]++;\n }\n else if (prevToken.value === '') {\n depth[tag]--;\n }\n \n if (depth[tag] === 0)\n found = true;\n }\n }\n } while (prevToken && !found);\n }\n if (token && token.type.indexOf('tag-name')) {\n pos = range.start;\n if (pos.row == cursor.row && Math.abs(pos.column - cursor.column) < 2)\n pos = range.end;\n }\n }\n\n pos = range && range.cursor || pos;\n if (pos) {\n if (select) {\n if (range && expand) {\n this.selection.setRange(range);\n } else if (range && range.isEqual(this.getSelectionRange())) {\n this.clearSelection();\n } else {\n this.selection.selectTo(pos.row, pos.column);\n }\n } else {\n this.selection.moveTo(pos.row, pos.column);\n }\n }\n };\n this.gotoLine = function(lineNumber, column, animate) {\n this.selection.clearSelection();\n this.session.unfold({row: lineNumber - 1, column: column || 0});\n this.exitMultiSelectMode && this.exitMultiSelectMode();\n this.moveCursorTo(lineNumber - 1, column || 0);\n\n if (!this.isRowFullyVisible(lineNumber - 1))\n this.scrollToLine(lineNumber - 1, true, animate);\n };\n this.navigateTo = function(row, column) {\n this.selection.moveTo(row, column);\n };\n this.navigateUp = function(times) {\n if (this.selection.isMultiLine() && !this.selection.isBackwards()) {\n var selectionStart = this.selection.anchor.getPosition();\n return this.moveCursorToPosition(selectionStart);\n }\n this.selection.clearSelection();\n this.selection.moveCursorBy(-times || -1, 0);\n };\n this.navigateDown = function(times) {\n if (this.selection.isMultiLine() && this.selection.isBackwards()) {\n var selectionEnd = this.selection.anchor.getPosition();\n return this.moveCursorToPosition(selectionEnd);\n }\n this.selection.clearSelection();\n this.selection.moveCursorBy(times || 1, 0);\n };\n this.navigateLeft = function(times) {\n if (!this.selection.isEmpty()) {\n var selectionStart = this.getSelectionRange().start;\n this.moveCursorToPosition(selectionStart);\n }\n else {\n times = times || 1;\n while (times--) {\n this.selection.moveCursorLeft();\n }\n }\n this.clearSelection();\n };\n this.navigateRight = function(times) {\n if (!this.selection.isEmpty()) {\n var selectionEnd = this.getSelectionRange().end;\n this.moveCursorToPosition(selectionEnd);\n }\n else {\n times = times || 1;\n while (times--) {\n this.selection.moveCursorRight();\n }\n }\n this.clearSelection();\n };\n this.navigateLineStart = function() {\n this.selection.moveCursorLineStart();\n this.clearSelection();\n };\n this.navigateLineEnd = function() {\n this.selection.moveCursorLineEnd();\n this.clearSelection();\n };\n this.navigateFileEnd = function() {\n this.selection.moveCursorFileEnd();\n this.clearSelection();\n };\n this.navigateFileStart = function() {\n this.selection.moveCursorFileStart();\n this.clearSelection();\n };\n this.navigateWordRight = function() {\n this.selection.moveCursorWordRight();\n this.clearSelection();\n };\n this.navigateWordLeft = function() {\n this.selection.moveCursorWordLeft();\n this.clearSelection();\n };\n this.replace = function(replacement, options) {\n if (options)\n this.$search.set(options);\n\n var range = this.$search.find(this.session);\n var replaced = 0;\n if (!range)\n return replaced;\n\n if (this.$tryReplace(range, replacement)) {\n replaced = 1;\n }\n\n this.selection.setSelectionRange(range);\n this.renderer.scrollSelectionIntoView(range.start, range.end);\n\n return replaced;\n };\n this.replaceAll = function(replacement, options) {\n if (options) {\n this.$search.set(options);\n }\n\n var ranges = this.$search.findAll(this.session);\n var replaced = 0;\n if (!ranges.length)\n return replaced;\n\n var selection = this.getSelectionRange();\n this.selection.moveTo(0, 0);\n\n for (var i = ranges.length - 1; i >= 0; --i) {\n if(this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n\n this.selection.setSelectionRange(selection);\n\n return replaced;\n };\n\n this.$tryReplace = function(range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n } else {\n return null;\n }\n };\n this.getLastSearchOptions = function() {\n return this.$search.getOptions();\n };\n this.find = function(needle, options, animate) {\n if (!options)\n options = {};\n\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({needle: needle});\n }\n\n this.$search.set(options);\n if (!options.start)\n this.$search.set({start: range});\n\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n this.findNext = function(options, animate) {\n this.find({skipCurrent: true, backwards: false}, options, animate);\n };\n this.findPrevious = function(options, animate) {\n this.find(options, {skipCurrent: true, backwards: true}, animate);\n };\n\n this.revealRange = function(range, animate) {\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n this.undo = function() {\n this.session.getUndoManager().undo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.redo = function() {\n this.session.getUndoManager().redo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.destroy = function() {\n if (this.$toDestroy) {\n this.$toDestroy.forEach(function(el) {\n el.destroy();\n });\n this.$toDestroy = null;\n }\n if (this.$mouseHandler)\n this.$mouseHandler.destroy();\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session)\n this.session.destroy();\n if (this._$emitInputEvent)\n this._$emitInputEvent.cancel();\n this.removeAllListeners();\n };\n this.setAutoScrollEditorIntoView = function(enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function() {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function() {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function() {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())\n ) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n } else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n } else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function(enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n\n\n this.$resetCursorStyle = function() {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n this.prompt = function(message, options, callback) {\n var editor = this;\n config.loadModule(\"./ext/prompt\", function (module) {\n module.prompt(editor, message, options, callback);\n });\n };\n\n}).call(Editor.prototype);\n\n\n\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function(style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", {data: style});\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function() {this.$updateHighlightActiveLine();},\n initialValue: true\n },\n highlightSelectedWord: {\n set: function(shouldHighlight) {this.$onSelectionChange();},\n initialValue: true\n },\n readOnly: {\n set: function(readOnly) {\n this.textInput.setReadOnly(readOnly);\n this.$resetCursorStyle(); \n },\n initialValue: false\n },\n copyWithEmptySelection: {\n set: function(value) {\n this.textInput.setCopyWithEmptySelection(value);\n },\n initialValue: false\n },\n cursorStyle: {\n set: function(val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: {initialValue: true},\n wrapBehavioursEnabled: {initialValue: true},\n enableAutoIndent: {initialValue: true},\n autoScrollEditorIntoView: {\n set: function(val) {this.setAutoScrollEditorIntoView(val);}\n },\n keyboardHandler: {\n set: function(val) { this.setKeyboardHandler(val); },\n get: function() { return this.$keybindingId; },\n handlesSet: true\n },\n value: {\n set: function(val) { this.session.setValue(val); },\n get: function() { return this.getValue(); },\n handlesSet: true,\n hidden: true\n },\n session: {\n set: function(val) { this.setSession(val); },\n get: function() { return this.session; },\n handlesSet: true,\n hidden: true\n },\n \n showLineNumbers: {\n set: function(show) {\n this.renderer.$gutterLayer.setShowLineNumbers(show);\n this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);\n if (show && this.$relativeLineNumbers)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n },\n initialValue: true\n },\n relativeLineNumbers: {\n set: function(value) {\n if (this.$showLineNumbers && value)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n }\n },\n placeholder: {\n set: function(message) {\n if (!this.$updatePlaceholder) {\n this.$updatePlaceholder = function() {\n var value = this.session && (this.renderer.$composition || this.getValue());\n if (value && this.renderer.placeholderNode) {\n this.renderer.off(\"afterRender\", this.$updatePlaceholder);\n dom.removeCssClass(this.container, \"ace_hasPlaceholder\");\n this.renderer.placeholderNode.remove();\n this.renderer.placeholderNode = null;\n } else if (!value && !this.renderer.placeholderNode) {\n this.renderer.on(\"afterRender\", this.$updatePlaceholder);\n dom.addCssClass(this.container, \"ace_hasPlaceholder\");\n var el = dom.createElement(\"div\");\n el.className = \"ace_placeholder\";\n el.textContent = this.$placeholder || \"\";\n this.renderer.placeholderNode = el;\n this.renderer.content.appendChild(this.renderer.placeholderNode);\n } else if (!value && this.renderer.placeholderNode) {\n this.renderer.placeholderNode.textContent = this.$placeholder || \"\";\n }\n }.bind(this);\n this.on(\"input\", this.$updatePlaceholder);\n }\n this.$updatePlaceholder();\n }\n },\n\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n displayIndentGuides: \"renderer\",\n showGutter: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n hasCssTransforms: \"renderer\",\n maxPixelHeight: \"renderer\",\n useTextareaForIME: \"renderer\",\n\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimeout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n navigateWithinSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\n\n\nvar relativeNumberRenderer = {\n getText: function(session, row) {\n return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? \"\\xb7\" : \"\"))) + \"\";\n },\n getWidth: function(session, lastLineNumber, config) {\n return Math.max(\n lastLineNumber.toString().length,\n (config.lastRow + 1).toString().length,\n 2\n ) * config.characterWidth;\n },\n update: function(e, editor) {\n editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);\n },\n attach: function(editor) {\n editor.renderer.$gutterLayer.$renderer = this;\n editor.on(\"changeSelection\", this.update);\n this.update(null, editor);\n },\n detach: function(editor) {\n if (editor.renderer.$gutterLayer.$renderer == this)\n editor.renderer.$gutterLayer.$renderer = null;\n editor.off(\"changeSelection\", this.update);\n this.update(null, editor);\n }\n};\n\nexports.Editor = Editor;\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar UndoManager = function() {\n this.$maxRev = 0;\n this.$fromUndo = false;\n this.reset();\n};\n\n(function() {\n \n this.addSession = function(session) {\n this.$session = session;\n };\n this.add = function(delta, allowMerge, session) {\n if (this.$fromUndo) return;\n if (delta == this.$lastDelta) return;\n if (!this.$keepRedoStack) this.$redoStack.length = 0;\n if (allowMerge === false || !this.lastDeltas) {\n this.lastDeltas = [];\n this.$undoStack.push(this.lastDeltas);\n delta.id = this.$rev = ++this.$maxRev;\n }\n if (delta.action == \"remove\" || delta.action == \"insert\")\n this.$lastDelta = delta;\n this.lastDeltas.push(delta);\n };\n \n this.addSelection = function(selection, rev) {\n this.selections.push({\n value: selection,\n rev: rev || this.$rev\n });\n };\n \n this.startNewGroup = function() {\n this.lastDeltas = null;\n return this.$rev;\n };\n \n this.markIgnored = function(from, to) {\n if (to == null) to = this.$rev + 1;\n var stack = this.$undoStack;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id <= from)\n break;\n if (delta.id < to)\n delta.ignore = true;\n }\n this.lastDeltas = null;\n };\n \n this.getSelection = function(rev, after) {\n var stack = this.selections;\n for (var i = stack.length; i--;) {\n var selection = stack[i];\n if (selection.rev < rev) {\n if (after)\n selection = stack[i + 1];\n return selection;\n }\n }\n };\n \n this.getRevision = function() {\n return this.$rev;\n };\n \n this.getDeltas = function(from, to) {\n if (to == null) to = this.$rev + 1;\n var stack = this.$undoStack;\n var end = null, start = 0;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id < to && !end)\n end = i+1;\n if (delta.id <= from) {\n start = i + 1;\n break;\n }\n }\n return stack.slice(start, end);\n };\n \n this.getChangedRanges = function(from, to) {\n if (to == null) to = this.$rev + 1;\n \n };\n \n this.getChangedLines = function(from, to) {\n if (to == null) to = this.$rev + 1;\n \n };\n this.undo = function(session, dontSelect) {\n this.lastDeltas = null;\n var stack = this.$undoStack;\n \n if (!rearrangeUndoStack(stack, stack.length))\n return;\n \n if (!session)\n session = this.$session;\n \n if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length)\n this.$redoStack = [];\n \n this.$fromUndo = true;\n \n var deltaSet = stack.pop();\n var undoSelectionRange = null;\n if (deltaSet) {\n undoSelectionRange = session.undoChanges(deltaSet, dontSelect);\n this.$redoStack.push(deltaSet);\n this.$syncRev();\n }\n \n this.$fromUndo = false;\n\n return undoSelectionRange;\n };\n this.redo = function(session, dontSelect) {\n this.lastDeltas = null;\n \n if (!session)\n session = this.$session;\n \n this.$fromUndo = true;\n if (this.$redoStackBaseRev != this.$rev) {\n var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);\n rebaseRedoStack(this.$redoStack, diff);\n this.$redoStackBaseRev = this.$rev;\n this.$redoStack.forEach(function(x) {\n x[0].id = ++this.$maxRev;\n }, this);\n }\n var deltaSet = this.$redoStack.pop();\n var redoSelectionRange = null;\n \n if (deltaSet) {\n redoSelectionRange = session.redoChanges(deltaSet, dontSelect);\n this.$undoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n \n return redoSelectionRange;\n };\n \n this.$syncRev = function() {\n var stack = this.$undoStack;\n var nextDelta = stack[stack.length - 1];\n var id = nextDelta && nextDelta[0].id || 0;\n this.$redoStackBaseRev = id;\n this.$rev = id;\n };\n this.reset = function() {\n this.lastDeltas = null;\n this.$lastDelta = null;\n this.$undoStack = [];\n this.$redoStack = [];\n this.$rev = 0;\n this.mark = 0;\n this.$redoStackBaseRev = this.$rev;\n this.selections = [];\n };\n this.canUndo = function() {\n return this.$undoStack.length > 0;\n };\n this.canRedo = function() {\n return this.$redoStack.length > 0;\n };\n this.bookmark = function(rev) {\n if (rev == undefined)\n rev = this.$rev;\n this.mark = rev;\n };\n this.isAtBookmark = function() {\n return this.$rev === this.mark;\n };\n \n this.toJSON = function() {\n \n };\n \n this.fromJSON = function() {\n \n };\n \n this.hasUndo = this.canUndo;\n this.hasRedo = this.canRedo;\n this.isClean = this.isAtBookmark;\n this.markClean = this.bookmark;\n \n this.$prettyPrint = function(delta) {\n if (delta) return stringifyDelta(delta);\n return stringifyDelta(this.$undoStack) + \"\\n---\\n\" + stringifyDelta(this.$redoStack);\n };\n}).call(UndoManager.prototype);\n\nfunction rearrangeUndoStack(stack, pos) {\n for (var i = pos; i--; ) {\n var deltaSet = stack[i];\n if (deltaSet && !deltaSet[0].ignore) {\n while(i < pos - 1) {\n var swapped = swapGroups(stack[i], stack[i + 1]);\n stack[i] = swapped[0];\n stack[i + 1] = swapped[1];\n i++;\n }\n return true;\n }\n }\n}\n\nvar Range = require(\"./range\").Range;\nvar cmp = Range.comparePoints;\nvar comparePoints = Range.comparePoints;\n\nfunction $updateMarkers(delta) {\n var isInsert = delta.action == \"insert\";\n var start = delta.start;\n var end = delta.end;\n var rowShift = (end.row - start.row) * (isInsert ? 1 : -1);\n var colShift = (end.column - start.column) * (isInsert ? 1 : -1);\n if (isInsert) end = start;\n\n for (var i in this.marks) {\n var point = this.marks[i];\n var cmp = comparePoints(point, start);\n if (cmp < 0) {\n continue; // delta starts after the range\n }\n if (cmp === 0) {\n if (isInsert) {\n if (point.bias == 1) {\n cmp = 1;\n }\n else {\n point.bias == -1;\n continue;\n }\n }\n }\n var cmp2 = isInsert ? cmp : comparePoints(point, end);\n if (cmp2 > 0) {\n point.row += rowShift;\n point.column += point.row == end.row ? colShift : 0;\n continue;\n }\n if (!isInsert && cmp2 <= 0) {\n point.row = start.row;\n point.column = start.column;\n if (cmp2 === 0)\n point.bias = 1;\n }\n }\n}\n\n\n\nfunction clonePos(pos) {\n return {row: pos.row,column: pos.column};\n}\nfunction cloneDelta(d) {\n return {\n start: clonePos(d.start),\n end: clonePos(d.end),\n action: d.action,\n lines: d.lines.slice()\n };\n}\nfunction stringifyDelta(d) {\n d = d || this;\n if (Array.isArray(d)) {\n return d.map(stringifyDelta).join(\"\\n\");\n }\n var type = \"\";\n if (d.action) {\n type = d.action == \"insert\" ? \"+\" : \"-\";\n type += \"[\" + d.lines + \"]\";\n } else if (d.value) {\n if (Array.isArray(d.value)) {\n type = d.value.map(stringifyRange).join(\"\\n\");\n } else {\n type = stringifyRange(d.value);\n }\n }\n if (d.start) {\n type += stringifyRange(d);\n }\n if (d.id || d.rev) {\n type += \"\\t(\" + (d.id || d.rev) + \")\";\n }\n return type;\n}\nfunction stringifyRange(r) {\n return r.start.row + \":\" + r.start.column \n + \"=>\" + r.end.row + \":\" + r.end.column;\n}\n\nfunction swap(d1, d2) {\n var i1 = d1.action == \"insert\";\n var i2 = d2.action == \"insert\";\n \n if (i1 && i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n } else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n } else {\n return null;\n }\n } else if (i1 && !i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n } else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n } else {\n return null;\n }\n } else if (!i1 && i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n } else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n } else {\n return null;\n }\n } else if (!i1 && !i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n } else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n } else {\n return null;\n }\n }\n return [d2, d1];\n}\nfunction swapGroups(ds1, ds2) {\n for (var i = ds1.length; i--; ) {\n for (var j = 0; j < ds2.length; j++) {\n if (!swap(ds1[i], ds2[j])) {\n while (i < ds1.length) {\n while (j--) {\n swap(ds2[j], ds1[i]);\n }\n j = ds2.length;\n i++;\n } \n return [ds1, ds2];\n }\n }\n }\n ds1.selectionBefore = ds2.selectionBefore = \n ds1.selectionAfter = ds2.selectionAfter = null;\n return [ds2, ds1];\n}\nfunction xform(d1, c1) {\n var i1 = d1.action == \"insert\";\n var i2 = c1.action == \"insert\";\n \n if (i1 && i2) {\n if (cmp(d1.start, c1.start) < 0) {\n shift(c1, d1, 1);\n } else {\n shift(d1, c1, 1);\n }\n } else if (i1 && !i2) {\n if (cmp(d1.start, c1.end) >= 0) {\n shift(d1, c1, -1);\n } else if (cmp(d1.start, c1.start) <= 0) {\n shift(c1, d1, +1);\n } else {\n shift(d1, Range.fromPoints(c1.start, d1.start), -1);\n shift(c1, d1, +1);\n }\n } else if (!i1 && i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n } else if (cmp(c1.start, d1.start) <= 0) {\n shift(d1, c1, +1);\n } else {\n shift(c1, Range.fromPoints(d1.start, c1.start), -1);\n shift(d1, c1, +1);\n }\n } else if (!i1 && !i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n } else if (cmp(c1.end, d1.start) <= 0) {\n shift(d1, c1, -1);\n } else {\n var before, after;\n if (cmp(d1.start, c1.start) < 0) {\n before = d1;\n d1 = splitDelta(d1, c1.start);\n }\n if (cmp(d1.end, c1.end) > 0) {\n after = splitDelta(d1, c1.end);\n }\n\n shiftPos(c1.end, d1.start, d1.end, -1);\n if (after && !before) {\n d1.lines = after.lines;\n d1.start = after.start;\n d1.end = after.end;\n after = d1;\n }\n\n return [c1, before, after].filter(Boolean);\n }\n }\n return [c1, d1];\n}\n \nfunction shift(d1, d2, dir) {\n shiftPos(d1.start, d2.start, d2.end, dir);\n shiftPos(d1.end, d2.start, d2.end, dir);\n}\nfunction shiftPos(pos, start, end, dir) {\n if (pos.row == (dir == 1 ? start : end).row) {\n pos.column += dir * (end.column - start.column);\n }\n pos.row += dir * (end.row - start.row);\n}\nfunction splitDelta(c, pos) {\n var lines = c.lines;\n var end = c.end;\n c.end = clonePos(pos); \n var rowsBefore = c.end.row - c.start.row;\n var otherLines = lines.splice(rowsBefore, lines.length);\n \n var col = rowsBefore ? pos.column : pos.column - c.start.column;\n lines.push(otherLines[0].substring(0, col));\n otherLines[0] = otherLines[0].substr(col) ; \n var rest = {\n start: clonePos(pos),\n end: end,\n lines: otherLines,\n action: c.action\n };\n return rest;\n}\n\nfunction moveDeltasByOne(redoStack, d) {\n d = cloneDelta(d);\n for (var j = redoStack.length; j--;) {\n var deltaSet = redoStack[j];\n for (var i = 0; i < deltaSet.length; i++) {\n var x = deltaSet[i];\n var xformed = xform(x, d);\n d = xformed[0];\n if (xformed.length != 2) {\n if (xformed[2]) {\n deltaSet.splice(i + 1, 1, xformed[1], xformed[2]);\n i++;\n } else if (!xformed[1]) {\n deltaSet.splice(i, 1);\n i--;\n }\n }\n }\n if (!deltaSet.length) {\n redoStack.splice(j, 1); \n }\n }\n return redoStack;\n}\nfunction rebaseRedoStack(redoStack, deltaSets) {\n for (var i = 0; i < deltaSets.length; i++) {\n var deltas = deltaSets[i];\n for (var j = 0; j < deltas.length; j++) {\n moveDeltasByOne(redoStack, deltas[j]);\n }\n }\n}\n\nexports.UndoManager = UndoManager;\n\n});\n\nace.define(\"ace/layer/lines\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"../lib/dom\");\n\nvar Lines = function(element, canvasHeight) {\n this.element = element;\n this.canvasHeight = canvasHeight || 500000;\n this.element.style.height = (this.canvasHeight * 2) + \"px\";\n \n this.cells = [];\n this.cellCache = [];\n this.$offsetCoefficient = 0;\n};\n\n(function() {\n \n this.moveContainer = function(config) {\n dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);\n }; \n \n this.pageChanged = function(oldConfig, newConfig) {\n return (\n Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==\n Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight)\n );\n };\n \n this.computeLineTop = function(row, config, session) {\n var screenTop = config.firstRowScreen * config.lineHeight;\n var screenPage = Math.floor(screenTop / this.canvasHeight);\n var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;\n return lineTop - (screenPage * this.canvasHeight);\n };\n \n this.computeLineHeight = function(row, config, session) {\n return config.lineHeight * session.getRowLineCount(row);\n };\n \n this.getLength = function() {\n return this.cells.length;\n };\n \n this.get = function(index) {\n return this.cells[index];\n };\n \n this.shift = function() {\n this.$cacheCell(this.cells.shift());\n };\n \n this.pop = function() {\n this.$cacheCell(this.cells.pop());\n };\n \n this.push = function(cell) {\n if (Array.isArray(cell)) {\n this.cells.push.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i=0; i foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$lines.getLength() > index + 1)\n this.$lines.pop();\n \n break;\n }\n\n cell = this.$lines.get(++index);\n if (cell) {\n cell.row = row;\n } else {\n cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$lines.push(cell);\n }\n\n this.$renderCell(cell, config, fold, row);\n row++;\n }\n \n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n\n this.$updateGutterWidth = function(config) {\n var session = this.session;\n \n var gutterRenderer = session.gutterRenderer || this.$renderer;\n \n var firstLineNumber = session.$firstLineNumber;\n var lastLineText = this.$lines.last() ? this.$lines.last().text : \"\";\n \n if (this.$fixedWidth || session.$useWrapMode)\n lastLineText = session.getLength() + firstLineNumber - 1;\n\n var gutterWidth = gutterRenderer \n ? gutterRenderer.getWidth(session, lastLineText, config)\n : lastLineText.toString().length * config.characterWidth;\n \n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.parentNode.style.width = \n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._signal(\"changeGutterWidth\", gutterWidth);\n }\n };\n \n this.$updateCursorRow = function() {\n if (!this.$highlightGutterLine)\n return;\n \n var position = this.session.selection.getCursor();\n if (this.$cursorRow === position.row)\n return;\n \n this.$cursorRow = position.row;\n };\n \n this.updateLineHighlight = function() {\n if (!this.$highlightGutterLine)\n return;\n var row = this.session.selection.cursor.row;\n this.$cursorRow = row;\n\n if (this.$cursorCell && this.$cursorCell.row == row)\n return;\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n var cells = this.$lines.cells;\n this.$cursorCell = null;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.row >= this.$cursorRow) {\n if (cell.row > this.$cursorRow) {\n var fold = this.session.getFoldLine(this.$cursorRow);\n if (i > 0 && fold && fold.start.row == cells[i - 1].row)\n cell = cells[i - 1];\n else\n break;\n }\n cell.element.className = \"ace_gutter-active-line \" + cell.element.className;\n this.$cursorCell = cell;\n break;\n }\n }\n };\n \n this.scrollLines = function(config) {\n var oldConfig = this.config;\n this.config = config;\n \n this.$updateCursorRow();\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n \n this.$lines.moveContainer(config);\n\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n this.session.getLength() - 1);\n var oldLastRow = this.oldLastRow;\n this.oldLastRow = lastRow;\n \n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n\n if (oldConfig.firstRow < config.firstRow)\n for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)\n this.$lines.shift();\n\n if (oldLastRow > lastRow)\n for (var row=this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row>0; row--)\n this.$lines.pop();\n\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));\n }\n\n if (lastRow > oldLastRow) {\n this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));\n }\n \n this.updateLineHighlight();\n \n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n\n this.$renderLines = function(config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n\n var cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$renderCell(cell, config, foldLine, row);\n fragment.push(cell);\n\n row++;\n }\n return fragment;\n };\n \n this.$renderCell = function(cell, config, fold, row) {\n var element = cell.element;\n \n var session = this.session;\n \n var textNode = element.childNodes[0];\n var foldWidget = element.childNodes[1];\n\n var firstLineNumber = session.$firstLineNumber;\n \n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var foldStart = fold ? fold.start.row : Number.MAX_VALUE;\n \n var className = \"ace_gutter-cell \";\n if (this.$highlightGutterLine) {\n if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {\n className += \"ace_gutter-active-line \";\n if (this.$cursorCell != cell) {\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n this.$cursorCell = cell;\n }\n }\n }\n \n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row])\n className += this.$annotations[row].className;\n if (element.className != className)\n element.className = className;\n\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n\n if (c) {\n var className = \"ace_fold-widget ace_\" + c;\n if (c == \"start\" && row == foldStart && row < fold.end.row)\n className += \" ace_closed\";\n else\n className += \" ace_open\";\n if (foldWidget.className != className)\n foldWidget.className = className;\n\n var foldHeight = config.lineHeight + \"px\";\n dom.setStyle(foldWidget.style, \"height\", foldHeight);\n dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n } else {\n if (foldWidget) {\n dom.setStyle(foldWidget.style, \"display\", \"none\");\n }\n }\n \n var text = (gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber).toString();\n \n if (text !== textNode.data) {\n textNode.data = text;\n }\n \n dom.setStyle(cell.element.style, \"height\", this.$lines.computeLineHeight(row, config, session) + \"px\");\n dom.setStyle(cell.element.style, \"top\", this.$lines.computeLineTop(row, config, session) + \"px\");\n \n cell.text = text;\n return cell;\n };\n\n this.$fixedWidth = false;\n \n this.$highlightGutterLine = true;\n this.$renderer = \"\";\n this.setHighlightGutterLine = function(highlightGutterLine) {\n this.$highlightGutterLine = highlightGutterLine;\n };\n \n this.$showLineNumbers = true;\n this.$renderer = \"\";\n this.setShowLineNumbers = function(show) {\n this.$renderer = !show && {\n getWidth: function() {return 0;},\n getText: function() {return \"\";}\n };\n };\n \n this.getShowLineNumbers = function() {\n return this.$showLineNumbers;\n };\n \n this.$showFoldWidgets = true;\n this.setShowFoldWidgets = function(show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n \n this.getShowFoldWidgets = function() {\n return this.$showFoldWidgets;\n };\n\n this.$computePadding = function() {\n if (!this.element.firstChild)\n return {left: 0, right: 0};\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = (parseInt(style.borderLeftWidth) || 0)\n + (parseInt(style.paddingLeft) || 0) + 1;\n this.$padding.right = (parseInt(style.borderRightWidth) || 0)\n + (parseInt(style.paddingRight) || 0);\n return this.$padding;\n };\n\n this.getRegion = function(point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n\n}).call(Gutter.prototype);\n\nfunction onCreateCell(element) {\n var textNode = document.createTextNode('');\n element.appendChild(textNode);\n \n var foldWidget = dom.createElement(\"span\");\n element.appendChild(foldWidget);\n \n return element;\n}\n\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\n\nvar Marker = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n};\n\n(function() {\n\n this.$padding = 0;\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n this.setSession = function(session) {\n this.session = session;\n };\n \n this.setMarkers = function(markers) {\n this.markers = markers;\n };\n \n this.elt = function(className, css) {\n var x = this.i != -1 && this.element.childNodes[this.i];\n if (!x) {\n x = document.createElement(\"div\");\n this.element.appendChild(x);\n this.i = -1;\n } else {\n this.i++;\n }\n x.style.cssText = css;\n x.className = className;\n };\n\n this.update = function(config) {\n if (!config) return;\n\n this.config = config;\n\n this.i = 0;\n var html;\n for (var key in this.markers) {\n var marker = this.markers[key];\n\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty()) continue;\n\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n marker.renderer(html, range, left, top, config);\n } else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n } else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n } else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n } else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n if (this.i !=-1) {\n while (this.i < this.element.childElementCount)\n this.element.removeChild(this.element.lastChild);\n }\n };\n\n this.$getTop = function(row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n\n function getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n }\n this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0; \n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n this.drawSingleLineMarker(stringBuilder, lineRange, \n clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end),\n layerConfig, row == end ? 0 : 1, extraStyle);\n }\n };\n this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height = config.lineHeight;\n var top = this.$getTop(range.start.row, config);\n var left = padding + range.start.column * config.characterWidth;\n extraStyle = extraStyle || \"\";\n\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n } else {\n this.elt(\n clazz + \" ace_br1 ace_start\",\n \"height:\"+ height+ \"px;\"+ \"right:0;\"+ \"top:\"+top+ \"px;left:\"+ left+ \"px;\" + (extraStyle || \"\")\n );\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n } else {\n top = this.$getTop(range.end.row, config);\n var width = range.end.column * config.characterWidth;\n\n this.elt(\n clazz + \" ace_br12\",\n \"height:\"+ height+ \"px;\"+\n \"width:\"+ width+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:\"+ padding+ \"px;\"+ (extraStyle || \"\")\n );\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n \n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n\n this.elt(\n clazz + (radiusClass ? \" ace_br\" + radiusClass : \"\"),\n \"height:\"+ height+ \"px;\"+\n \"right:0;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:\"+ padding+ \"px;\"+ (extraStyle || \"\")\n );\n };\n this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\n if (this.session.$bidiHandler.isBidiRow(range.start.row))\n return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle);\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n\n this.elt(\n clazz,\n \"height:\"+ height+ \"px;\"+\n \"width:\"+ width+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:\"+ left+ \"px;\"+ (extraStyle || \"\")\n );\n };\n this.drawBidiSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n\n selections.forEach(function(selection) {\n this.elt(\n clazz,\n \"height:\" + height + \"px;\" +\n \"width:\" + selection.width + (extraLength || 0) + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + (padding + selection.left) + \"px;\" + (extraStyle || \"\")\n );\n }, this);\n };\n\n this.drawFullLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n\n this.elt(\n clazz,\n \"height:\"+ height+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:0;right:0;\"+ (extraStyle || \"\")\n );\n };\n \n this.drawScreenLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n\n this.elt(\n clazz,\n \"height:\"+ height+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:0;right:0;\"+ (extraStyle || \"\")\n );\n };\n\n}).call(Marker.prototype);\n\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/layer/lines\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar Lines = require(\"./lines\").Lines;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\n\nvar Text = function(parentEl) {\n this.dom = dom; \n this.element = this.dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n this.$lines = new Lines(this.element);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.EOF_CHAR = \"\\xB6\";\n this.EOL_CHAR_LF = \"\\xAC\";\n this.EOL_CHAR_CRLF = \"\\xa4\";\n this.EOL_CHAR = this.EOL_CHAR_LF;\n this.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\n this.SPACE_CHAR = \"\\xB7\";\n this.$padding = 0;\n this.MAX_LINE_LENGTH = 10000;\n\n this.$updateEolChar = function() {\n var doc = this.session.doc;\n var unixMode = doc.getNewLineCharacter() == \"\\n\" && doc.getNewLineMode() != \"windows\";\n var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.element.style.margin = \"0 \" + padding + \"px\";\n };\n\n this.getLineHeight = function() {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n\n this.getCharacterWidth = function() {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n \n this.$setFontMetrics = function(measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", function(e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n\n this.checkForSizeChanges = function() {\n this.$fontMetrics.checkForSizeChanges();\n };\n this.$pollSizeChanges = function() {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n this.setSession = function(session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n\n this.showInvisibles = false;\n this.showSpaces = false;\n this.showTabs = false;\n this.showEOL = false;\n this.setShowInvisibles = function(showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n\n this.showInvisibles = showInvisibles;\n if (typeof showInvisibles == \"string\") {\n this.showSpaces = /tab/i.test(showInvisibles);\n this.showTabs = /space/i.test(showInvisibles);\n this.showEOL = /eol/i.test(showInvisibles);\n } else {\n this.showSpaces = this.showTabs = this.showEOL = showInvisibles;\n }\n this.$computeTabString();\n return true;\n };\n\n this.displayIndentGuides = true;\n this.setDisplayIndentGuides = function(display) {\n if (this.displayIndentGuides == display)\n return false;\n\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n\n this.$tabStrings = [];\n this.onChangeTabSize =\n this.$computeTabString = function() {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showTabs) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_tab\";\n span.textContent = lang.stringRepeat(this.TAB_CHAR, i);\n tabStr.push(span);\n } else {\n tabStr.push(this.dom.createTextNode(lang.stringRepeat(\" \", i), this.element));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = this.showSpaces ? \" ace_invisible ace_invisible_space\" : \"\";\n var spaceContent = this.showSpaces\n ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)\n : lang.stringRepeat(\" \", this.tabSize);\n\n var tabClass = this.showTabs ? \" ace_invisible ace_invisible_tab\" : \"\";\n var tabContent = this.showTabs \n ? lang.stringRepeat(this.TAB_CHAR, this.tabSize)\n : spaceContent;\n\n var span = this.dom.createElement(\"span\");\n span.className = className + spaceClass;\n span.textContent = spaceContent;\n this.$tabStrings[\" \"] = span;\n \n var span = this.dom.createElement(\"span\");\n span.className = className + tabClass;\n span.textContent = tabContent;\n this.$tabStrings[\"\\t\"] = span;\n }\n };\n\n this.updateLines = function(config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n return this.update(config);\n }\n \n this.config = config;\n\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n } else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx ++;\n }\n\n var heightChanged = false;\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row :Infinity;\n }\n if (row > last)\n break;\n\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n this.dom.removeChildren(lineElement);\n this.$renderLine(\n lineElement, row, row == foldStart ? foldLine : false\n );\n\n if (heightChanged)\n lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + \"px\";\n\n var height = (config.lineHeight * this.session.getRowLength(row)) + \"px\";\n if (lineElement.style.height != height) {\n heightChanged = true;\n lineElement.style.height = height;\n }\n }\n row++;\n }\n if (heightChanged) {\n while (lineElementsIdx < this.$lines.cells.length) {\n var cell = this.$lines.cells[lineElementsIdx++];\n cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + \"px\";\n }\n }\n };\n\n this.scrollLines = function(config) {\n var oldConfig = this.config;\n this.config = config;\n\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n \n this.$lines.moveContainer(config);\n \n var lastRow = config.lastRow;\n var oldLastRow = oldConfig ? oldConfig.lastRow : -1;\n\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n\n if (oldConfig.firstRow < config.firstRow)\n for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)\n this.$lines.shift();\n\n if (oldConfig.lastRow > config.lastRow)\n for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--)\n this.$lines.pop();\n\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));\n }\n\n if (config.lastRow > oldConfig.lastRow) {\n this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));\n }\n };\n\n this.$renderLinesFragment = function(config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n\n var line = this.$lines.createCell(row, config, this.session);\n \n var lineEl = line.element;\n this.dom.removeChildren(lineEl);\n dom.setStyle(lineEl.style, \"height\", this.$lines.computeLineHeight(row, config, this.session) + \"px\");\n dom.setStyle(lineEl.style, \"top\", this.$lines.computeLineTop(row, config, this.session) + \"px\");\n this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);\n\n if (this.$useLineGroups()) {\n lineEl.className = \"ace_line_group\";\n } else {\n lineEl.className = \"ace_line\";\n }\n fragment.push(line);\n\n row++;\n }\n return fragment;\n };\n\n this.update = function(config) {\n this.$lines.moveContainer(config);\n \n this.config = config;\n\n var firstRow = config.firstRow;\n var lastRow = config.lastRow;\n\n var lines = this.$lines;\n while (lines.getLength())\n lines.pop();\n \n lines.push(this.$renderLinesFragment(config, firstRow, lastRow));\n };\n\n this.$textToken = {\n \"text\": true,\n \"rparen\": true,\n \"lparen\": true\n };\n\n this.$renderToken = function(parent, screenColumn, token, value) {\n var self = this;\n var re = /(\\t)|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\uFEFF\\uFFF9-\\uFFFC]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n \n var valueFragment = this.dom.createFragment(this.element);\n\n var m;\n var i = 0;\n while (m = re.exec(value)) {\n var tab = m[1];\n var simpleSpace = m[2];\n var controlCharacter = m[3];\n var cjkSpace = m[4];\n var cjk = m[5];\n \n if (!self.showSpaces && simpleSpace)\n continue;\n\n var before = i != m.index ? value.slice(i, m.index) : \"\";\n\n i = m.index + m[0].length;\n \n if (before) {\n valueFragment.appendChild(this.dom.createTextNode(before, this.element));\n }\n \n if (tab) {\n var tabSize = self.session.getScreenTabSize(screenColumn + m.index);\n valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));\n screenColumn += tabSize - 1;\n } else if (simpleSpace) {\n if (self.showSpaces) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);\n valueFragment.appendChild(span);\n } else {\n valueFragment.appendChild(this.com.createTextNode(simpleSpace, this.element));\n }\n } else if (controlCharacter) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space ace_invalid\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length);\n valueFragment.appendChild(span);\n } else if (cjkSpace) {\n screenColumn += 1;\n \n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = self.showSpaces ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;\n valueFragment.appendChild(span);\n } else if (cjk) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = \"ace_cjk\";\n span.textContent = cjk;\n valueFragment.appendChild(span);\n }\n }\n \n valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element));\n\n if (!this.$textToken[token.type]) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var span = this.dom.createElement(\"span\");\n if (token.type == \"fold\")\n span.style.width = (token.value.length * this.config.characterWidth) + \"px\";\n \n span.className = classes;\n span.appendChild(valueFragment);\n \n parent.appendChild(span);\n }\n else {\n parent.appendChild(valueFragment);\n }\n \n return screenColumn + value.length;\n };\n\n this.renderIndentGuide = function(parent, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n var count = cols/this.tabSize;\n for (var i=0; i= splitChars) {\n screenColumn = this.$renderToken(\n lineEl, screenColumn,\n token, value.substring(0, splitChars - chars)\n );\n value = value.substring(splitChars - chars);\n chars = splitChars;\n\n lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n\n lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element));\n\n split ++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(\n lineEl, screenColumn, token, value\n );\n }\n }\n }\n \n if (splits[splits.length - 1] > this.MAX_LINE_LENGTH)\n this.$renderOverflowMessage(lineEl, screenColumn, null, \"\", true);\n };\n\n this.$renderSimpleLine = function(parent, tokens) {\n var screenColumn = 0;\n var token = tokens[0];\n var value = token.value;\n if (this.displayIndentGuides)\n value = this.renderIndentGuide(parent, value);\n if (value)\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n for (var i = 1; i < tokens.length; i++) {\n token = tokens[i];\n value = token.value;\n if (screenColumn + value.length > this.MAX_LINE_LENGTH)\n return this.$renderOverflowMessage(parent, screenColumn, token, value);\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n }\n };\n \n this.$renderOverflowMessage = function(parent, screenColumn, token, value, hide) {\n token && this.$renderToken(parent, screenColumn, token,\n value.slice(0, this.MAX_LINE_LENGTH - screenColumn));\n \n var overflowEl = this.dom.createElement(\"span\");\n overflowEl.className = \"ace_inline_button ace_keyword ace_toggle_wrap\";\n overflowEl.textContent = hide ? \"\" : \"\";\n \n parent.appendChild(overflowEl); \n };\n this.$renderLine = function(parent, row, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n\n var lastLineEl = parent;\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length) {\n this.$renderWrappedLine(parent, tokens, splits);\n var lastLineEl = parent.lastChild;\n } else {\n var lastLineEl = parent;\n if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n this.$renderSimpleLine(lastLineEl, tokens);\n }\n } else if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n\n if (this.showEOL && lastLineEl) {\n if (foldLine)\n row = foldLine.end.row;\n\n var invisibleEl = this.dom.createElement(\"span\");\n invisibleEl.className = \"ace_invisible ace_invisible_eol\";\n invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR;\n \n lastLineEl.appendChild(invisibleEl);\n }\n };\n\n this.$getFoldLineTokens = function(row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n\n col = from + value.length;\n idx += 1;\n }\n\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n } else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n\n var tokens = session.getTokens(row);\n foldLine.walk(function(placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n } else {\n if (isNewRow)\n tokens = session.getTokens(row);\n\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n\n return renderTokens;\n };\n\n this.$useLineGroups = function() {\n return this.session.getUseWrapMode();\n };\n\n this.destroy = function() {};\n}).call(Text.prototype);\n\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"../lib/dom\");\n\nvar Cursor = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n \n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = this.$updateOpacity.bind(this);\n};\n\n(function() {\n \n this.$updateOpacity = function(val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n dom.setStyle(cursors[i].style, \"opacity\", val ? \"\" : \"0\");\n };\n\n this.$startCssAnimation = function() {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n cursors[i].style.animationDuration = this.blinkInterval + \"ms\";\n\n this.$isAnimating = true;\n setTimeout(function() {\n if (this.$isAnimating) {\n dom.addCssClass(this.element, \"ace_animate-blinking\");\n }\n }.bind(this));\n };\n \n this.$stopCssAnimation = function() {\n this.$isAnimating = false;\n dom.removeCssClass(this.element, \"ace_animate-blinking\");\n };\n\n this.$padding = 0;\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n\n this.setSession = function(session) {\n this.session = session;\n };\n\n this.setBlinking = function(blinking) {\n if (blinking != this.isBlinking) {\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n\n this.setBlinkInterval = function(blinkInterval) {\n if (blinkInterval != this.blinkInterval) {\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n\n this.setSmoothBlinking = function(smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.restartTimer();\n }\n };\n\n this.addCursor = function() {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n\n this.removeCursor = function() {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n\n this.hideCursor = function() {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n\n this.showCursor = function() {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n\n this.restartTimer = function() {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n this.$stopCssAnimation();\n\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = false;\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n \n update(true);\n\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible) {\n this.$stopCssAnimation();\n return;\n }\n\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = true;\n setTimeout(function() {\n if (this.$isSmoothBlinking) {\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }\n }.bind(this));\n }\n \n if (dom.HAS_CSS_ANIMATION) {\n this.$startCssAnimation();\n } else {\n var blink = function(){\n this.timeoutId = setTimeout(function() {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n \n this.intervalId = setInterval(function() {\n update(true);\n blink();\n }, this.blinkInterval);\n blink();\n }\n };\n\n this.getPixelPosition = function(position, onScreen) {\n if (!this.config || !this.session)\n return {left : 0, top : 0};\n\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n\n return {left : cursorLeft, top : cursorTop};\n };\n\n this.isCursorInView = function(pixelPos, config) {\n return pixelPos.top >= 0 && pixelPos.top < config.maxHeight;\n };\n\n this.update = function(config) {\n this.config = config;\n\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n\n if (selections === undefined || selections.length === 0){\n selections = [{cursor: null}];\n }\n\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n\n var element = this.cursors[cursorIndex++] || this.addCursor();\n var style = element.style;\n \n if (!this.drawCursor) {\n if (!this.isCursorInView(pixelPos, config)) {\n dom.setStyle(style, \"display\", \"none\");\n } else {\n dom.setStyle(style, \"display\", \"block\");\n dom.translate(element, pixelPos.left, pixelPos.top);\n dom.setStyle(style, \"width\", Math.round(config.characterWidth) + \"px\");\n dom.setStyle(style, \"height\", config.lineHeight + \"px\");\n }\n } else {\n this.drawCursor(element, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n \n this.drawCursor = null;\n\n this.$setOverwrite = function(overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n\n this.destroy = function() {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n\n}).call(Cursor.prototype);\n\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar ScrollBar = function(parent) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + this.classSuffix;\n\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.inner.textContent = \"\\xa0\";\n this.element.appendChild(this.inner);\n\n parent.appendChild(this.element);\n\n this.setVisible(false);\n this.skipEvent = false;\n\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n};\n\n(function() {\n oop.implement(this, EventEmitter);\n\n this.setVisible = function(isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n}).call(ScrollBar.prototype);\nvar VScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollTop = 0;\n this.scrollHeight = 0;\n renderer.$scrollbarWidth = \n this.width = dom.scrollbarWidth(parent.ownerDocument);\n this.inner.style.width =\n this.element.style.width = (this.width || 15) + 5 + \"px\";\n this.$minWidth = 0;\n};\n\noop.inherits(VScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = '-v';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", {data: this.scrollTop});\n }\n this.skipEvent = false;\n };\n this.getWidth = function() {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n this.setHeight = function(height) {\n this.element.style.height = height + \"px\";\n };\n this.setInnerHeight = \n this.setScrollHeight = function(height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n } else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n this.setScrollTop = function(scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n\n}).call(VScrollBar.prototype);\nvar HScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollLeft = 0;\n this.height = renderer.$scrollbarWidth;\n this.inner.style.height =\n this.element.style.height = (this.height || 15) + 5 + \"px\";\n};\n\noop.inherits(HScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = '-h';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", {data: this.scrollLeft});\n }\n this.skipEvent = false;\n };\n this.getHeight = function() {\n return this.isVisible ? this.height : 0;\n };\n this.setWidth = function(width) {\n this.element.style.width = width + \"px\";\n };\n this.setInnerWidth = function(width) {\n this.inner.style.width = width + \"px\";\n };\n this.setScrollWidth = function(width) {\n this.inner.style.width = width + \"px\";\n };\n this.setScrollLeft = function(scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n\n}).call(HScrollBar.prototype);\n\n\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\n\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(require, exports, module) {\n\"use strict\";\n\nvar event = require(\"./lib/event\");\n\n\nvar RenderLoop = function(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.$recursionLimit = 2;\n this.window = win || window;\n var _self = this;\n this._flush = function(ts) {\n _self.pending = false;\n var changes = _self.changes;\n\n if (changes) {\n event.blockIdle(100);\n _self.changes = 0;\n _self.onRender(changes);\n }\n \n if (_self.changes) {\n if (_self.$recursionLimit-- < 0) return;\n _self.schedule();\n } else {\n _self.$recursionLimit = 2;\n }\n };\n};\n\n(function() {\n\n this.schedule = function(change) {\n this.changes = this.changes | change;\n if (this.changes && !this.pending) {\n event.nextFrame(this._flush);\n this.pending = true;\n }\n };\n\n this.clear = function(change) {\n var changes = this.changes;\n this.changes = 0;\n return changes;\n };\n\n}).call(RenderLoop.prototype);\n\nexports.RenderLoop = RenderLoop;\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\n\nvar CHAR_COUNT = 256;\nvar USE_OBSERVER = typeof ResizeObserver == \"function\";\nvar L = 200;\n\nvar FontMetrics = exports.FontMetrics = function(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n \n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n \n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n \n \n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n \n this.$measureNode.textContent = lang.stringRepeat(\"X\", CHAR_COUNT);\n \n this.$characterSize = {width: 0, height: 0};\n \n \n if (USE_OBSERVER)\n this.$addObserver();\n else\n this.checkForSizeChanges();\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n \n this.$characterSize = {width: 0, height: 0};\n \n this.$setMeasureNodeStyles = function(style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n } else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n\n this.checkForSizeChanges = function(size) {\n if (size === undefined)\n size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", {data: size});\n }\n };\n \n this.$addObserver = function() {\n var self = this;\n this.$observer = new window.ResizeObserver(function(e) {\n self.checkForSizeChanges();\n });\n this.$observer.observe(this.$measureNode);\n };\n\n this.$pollSizeChanges = function() {\n if (this.$pollSizeChangesTimer || this.$observer)\n return this.$pollSizeChangesTimer;\n var self = this;\n \n return this.$pollSizeChangesTimer = event.onIdle(function cb() {\n self.checkForSizeChanges();\n event.onIdle(cb, 500);\n }, 500);\n };\n \n this.setPolling = function(val) {\n if (val) {\n this.$pollSizeChanges();\n } else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n\n this.$measureSizes = function(node) {\n var size = {\n height: (node || this.$measureNode).clientHeight,\n width: (node || this.$measureNode).clientWidth / CHAR_COUNT\n };\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n\n this.$measureCharWidth = function(ch) {\n this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n \n this.getCharacterWidth = function(ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n\n this.destroy = function() {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$observer)\n this.$observer.disconnect();\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n\n \n this.$getZoom = function getZoom(element) {\n if (!element || !element.parentElement) return 1;\n return (window.getComputedStyle(element).zoom || 1) * getZoom(element.parentElement);\n };\n this.$initTransformMeasureNodes = function() {\n var t = function(t, l) {\n return [\"div\", {\n style: \"position: absolute;top:\" + t + \"px;left:\" + l + \"px;\"\n }];\n };\n this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el);\n };\n this.transformCoordinates = function(clientPos, elPos) {\n if (clientPos) {\n var zoom = this.$getZoom(this.el);\n clientPos = mul(1 / zoom, clientPos);\n }\n function solve(l1, l2, r) {\n var det = l1[1] * l2[0] - l1[0] * l2[1];\n return [\n (-l2[1] * r[0] + l2[0] * r[1]) / det,\n (+l1[1] * r[0] - l1[0] * r[1]) / det\n ];\n }\n function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }\n function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }\n function mul(a, b) { return [a * b[0], a * b[1]]; }\n\n if (!this.els)\n this.$initTransformMeasureNodes();\n \n function p(el) {\n var r = el.getBoundingClientRect();\n return [r.left, r.top];\n }\n\n var a = p(this.els[0]);\n var b = p(this.els[1]);\n var c = p(this.els[2]);\n var d = p(this.els[3]);\n\n var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a)));\n\n var m1 = mul(1 + h[0], sub(b, a));\n var m2 = mul(1 + h[1], sub(c, a));\n \n if (elPos) {\n var x = elPos;\n var k = h[0] * x[0] / L + h[1] * x[1] / L + 1;\n var ut = add(mul(x[0], m1), mul(x[1], m2));\n return add(mul(1 / k / L, ut), a);\n }\n var u = sub(clientPos, a);\n var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u);\n return mul(L, f);\n };\n \n}).call(FontMetrics.prototype);\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar config = require(\"./config\");\nvar GutterLayer = require(\"./layer/gutter\").Gutter;\nvar MarkerLayer = require(\"./layer/marker\").Marker;\nvar TextLayer = require(\"./layer/text\").Text;\nvar CursorLayer = require(\"./layer/cursor\").Cursor;\nvar HScrollBar = require(\"./scrollbar\").HScrollBar;\nvar VScrollBar = require(\"./scrollbar\").VScrollBar;\nvar RenderLoop = require(\"./renderloop\").RenderLoop;\nvar FontMetrics = require(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = \"\\\n.ace_br1 {border-top-left-radius : 3px;}\\\n.ace_br2 {border-top-right-radius : 3px;}\\\n.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\\\n.ace_br4 {border-bottom-right-radius: 3px;}\\\n.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\\\n.ace_br8 {border-bottom-left-radius : 3px;}\\\n.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_editor {\\\nposition: relative;\\\noverflow: hidden;\\\npadding: 0;\\\nfont: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\\\ndirection: ltr;\\\ntext-align: left;\\\n-webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\\n}\\\n.ace_scroller {\\\nposition: absolute;\\\noverflow: hidden;\\\ntop: 0;\\\nbottom: 0;\\\nbackground-color: inherit;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\ncursor: text;\\\n}\\\n.ace_content {\\\nposition: absolute;\\\nbox-sizing: border-box;\\\nmin-width: 100%;\\\ncontain: style size layout;\\\nfont-variant-ligatures: no-common-ligatures;\\\n}\\\n.ace_dragging .ace_scroller:before{\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\nbottom: 0;\\\ncontent: '';\\\nbackground: rgba(250, 250, 250, 0.01);\\\nz-index: 1000;\\\n}\\\n.ace_dragging.ace_dark .ace_scroller:before{\\\nbackground: rgba(0, 0, 0, 0.01);\\\n}\\\n.ace_selecting, .ace_selecting * {\\\ncursor: text !important;\\\n}\\\n.ace_gutter {\\\nposition: absolute;\\\noverflow : hidden;\\\nwidth: auto;\\\ntop: 0;\\\nbottom: 0;\\\nleft: 0;\\\ncursor: default;\\\nz-index: 4;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\ncontain: style size layout;\\\n}\\\n.ace_gutter-active-line {\\\nposition: absolute;\\\nleft: 0;\\\nright: 0;\\\n}\\\n.ace_scroller.ace_scroll-left {\\\nbox-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\\\n}\\\n.ace_gutter-cell {\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\npadding-left: 19px;\\\npadding-right: 6px;\\\nbackground-repeat: no-repeat;\\\n}\\\n.ace_gutter-cell.ace_error {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==\\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_warning {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==\\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_info {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=\\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_dark .ace_gutter-cell.ace_info {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_scrollbar {\\\ncontain: strict;\\\nposition: absolute;\\\nright: 0;\\\nbottom: 0;\\\nz-index: 6;\\\n}\\\n.ace_scrollbar-inner {\\\nposition: absolute;\\\ncursor: text;\\\nleft: 0;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-v{\\\noverflow-x: hidden;\\\noverflow-y: scroll;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-h {\\\noverflow-x: scroll;\\\noverflow-y: hidden;\\\nleft: 0;\\\n}\\\n.ace_print-margin {\\\nposition: absolute;\\\nheight: 100%;\\\n}\\\n.ace_text-input {\\\nposition: absolute;\\\nz-index: 0;\\\nwidth: 0.5em;\\\nheight: 1em;\\\nopacity: 0;\\\nbackground: transparent;\\\n-moz-appearance: none;\\\nappearance: none;\\\nborder: none;\\\nresize: none;\\\noutline: none;\\\noverflow: hidden;\\\nfont: inherit;\\\npadding: 0 1px;\\\nmargin: 0 -1px;\\\ncontain: strict;\\\n-ms-user-select: text;\\\n-moz-user-select: text;\\\n-webkit-user-select: text;\\\nuser-select: text;\\\nwhite-space: pre!important;\\\n}\\\n.ace_text-input.ace_composition {\\\nbackground: transparent;\\\ncolor: inherit;\\\nz-index: 1000;\\\nopacity: 1;\\\n}\\\n.ace_composition_placeholder { color: transparent }\\\n.ace_composition_marker { \\\nborder-bottom: 1px solid;\\\nposition: absolute;\\\nborder-radius: 0;\\\nmargin-top: 1px;\\\n}\\\n[ace_nocontext=true] {\\\ntransform: none!important;\\\nfilter: none!important;\\\nclip-path: none!important;\\\nmask : none!important;\\\ncontain: none!important;\\\nperspective: none!important;\\\nmix-blend-mode: initial!important;\\\nz-index: auto;\\\n}\\\n.ace_layer {\\\nz-index: 1;\\\nposition: absolute;\\\noverflow: hidden;\\\nword-wrap: normal;\\\nwhite-space: pre;\\\nheight: 100%;\\\nwidth: 100%;\\\nbox-sizing: border-box;\\\npointer-events: none;\\\n}\\\n.ace_gutter-layer {\\\nposition: relative;\\\nwidth: auto;\\\ntext-align: right;\\\npointer-events: auto;\\\nheight: 1000000px;\\\ncontain: style size layout;\\\n}\\\n.ace_text-layer {\\\nfont: inherit !important;\\\nposition: absolute;\\\nheight: 1000000px;\\\nwidth: 1000000px;\\\ncontain: style size layout;\\\n}\\\n.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {\\\ncontain: style size layout;\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\n}\\\n.ace_hidpi .ace_text-layer,\\\n.ace_hidpi .ace_gutter-layer,\\\n.ace_hidpi .ace_content,\\\n.ace_hidpi .ace_gutter {\\\ncontain: strict;\\\nwill-change: transform;\\\n}\\\n.ace_hidpi .ace_text-layer > .ace_line, \\\n.ace_hidpi .ace_text-layer > .ace_line_group {\\\ncontain: strict;\\\n}\\\n.ace_cjk {\\\ndisplay: inline-block;\\\ntext-align: center;\\\n}\\\n.ace_cursor-layer {\\\nz-index: 4;\\\n}\\\n.ace_cursor {\\\nz-index: 4;\\\nposition: absolute;\\\nbox-sizing: border-box;\\\nborder-left: 2px solid;\\\ntransform: translatez(0);\\\n}\\\n.ace_multiselect .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_slim-cursors .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_overwrite-cursors .ace_cursor {\\\nborder-left-width: 0;\\\nborder-bottom: 1px solid;\\\n}\\\n.ace_hidden-cursors .ace_cursor {\\\nopacity: 0.2;\\\n}\\\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\\\nopacity: 0;\\\n}\\\n.ace_smooth-blinking .ace_cursor {\\\ntransition: opacity 0.18s;\\\n}\\\n.ace_animate-blinking .ace_cursor {\\\nanimation-duration: 1000ms;\\\nanimation-timing-function: step-end;\\\nanimation-name: blink-ace-animate;\\\nanimation-iteration-count: infinite;\\\n}\\\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\\\nanimation-duration: 1000ms;\\\nanimation-timing-function: ease-in-out;\\\nanimation-name: blink-ace-animate-smooth;\\\n}\\\n@keyframes blink-ace-animate {\\\nfrom, to { opacity: 1; }\\\n60% { opacity: 0; }\\\n}\\\n@keyframes blink-ace-animate-smooth {\\\nfrom, to { opacity: 1; }\\\n45% { opacity: 1; }\\\n60% { opacity: 0; }\\\n85% { opacity: 0; }\\\n}\\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\\nposition: absolute;\\\nz-index: 3;\\\n}\\\n.ace_marker-layer .ace_selection {\\\nposition: absolute;\\\nz-index: 5;\\\n}\\\n.ace_marker-layer .ace_bracket {\\\nposition: absolute;\\\nz-index: 6;\\\n}\\\n.ace_marker-layer .ace_error_bracket {\\\nposition: absolute;\\\nborder-bottom: 1px solid #DE5555;\\\nborder-radius: 0;\\\n}\\\n.ace_marker-layer .ace_active-line {\\\nposition: absolute;\\\nz-index: 2;\\\n}\\\n.ace_marker-layer .ace_selected-word {\\\nposition: absolute;\\\nz-index: 4;\\\nbox-sizing: border-box;\\\n}\\\n.ace_line .ace_fold {\\\nbox-sizing: border-box;\\\ndisplay: inline-block;\\\nheight: 11px;\\\nmargin-top: -2px;\\\nvertical-align: middle;\\\nbackground-image:\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\\nbackground-repeat: no-repeat, repeat-x;\\\nbackground-position: center center, top left;\\\ncolor: transparent;\\\nborder: 1px solid black;\\\nborder-radius: 2px;\\\ncursor: pointer;\\\npointer-events: auto;\\\n}\\\n.ace_dark .ace_fold {\\\n}\\\n.ace_fold:hover{\\\nbackground-image:\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_tooltip {\\\nbackground-color: #FFF;\\\nbackground-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\\\nborder: 1px solid gray;\\\nborder-radius: 1px;\\\nbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\\ncolor: black;\\\nmax-width: 100%;\\\npadding: 3px 4px;\\\nposition: fixed;\\\nz-index: 999999;\\\nbox-sizing: border-box;\\\ncursor: default;\\\nwhite-space: pre;\\\nword-wrap: break-word;\\\nline-height: normal;\\\nfont-style: normal;\\\nfont-weight: normal;\\\nletter-spacing: normal;\\\npointer-events: none;\\\n}\\\n.ace_folding-enabled > .ace_gutter-cell {\\\npadding-right: 13px;\\\n}\\\n.ace_fold-widget {\\\nbox-sizing: border-box;\\\nmargin: 0 -12px 0 1px;\\\ndisplay: none;\\\nwidth: 11px;\\\nvertical-align: top;\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: center;\\\nborder-radius: 3px;\\\nborder: 1px solid transparent;\\\ncursor: pointer;\\\n}\\\n.ace_folding-enabled .ace_fold-widget {\\\ndisplay: inline-block; \\\n}\\\n.ace_fold-widget.ace_end {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_fold-widget.ace_closed {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\\n}\\\n.ace_fold-widget:hover {\\\nborder: 1px solid rgba(0, 0, 0, 0.3);\\\nbackground-color: rgba(255, 255, 255, 0.2);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\\n}\\\n.ace_fold-widget:active {\\\nborder: 1px solid rgba(0, 0, 0, 0.4);\\\nbackground-color: rgba(0, 0, 0, 0.05);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\\n}\\\n.ace_dark .ace_fold-widget {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_end {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_closed {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_dark .ace_fold-widget:hover {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\nbackground-color: rgba(255, 255, 255, 0.1);\\\n}\\\n.ace_dark .ace_fold-widget:active {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\n}\\\n.ace_inline_button {\\\nborder: 1px solid lightgray;\\\ndisplay: inline-block;\\\nmargin: -1px 8px;\\\npadding: 0 5px;\\\npointer-events: auto;\\\ncursor: pointer;\\\n}\\\n.ace_inline_button:hover {\\\nborder-color: gray;\\\nbackground: rgba(200,200,200,0.2);\\\ndisplay: inline-block;\\\npointer-events: auto;\\\n}\\\n.ace_fold-widget.ace_invalid {\\\nbackground-color: #FFB4B4;\\\nborder-color: #DE5555;\\\n}\\\n.ace_fade-fold-widgets .ace_fold-widget {\\\ntransition: opacity 0.4s ease 0.05s;\\\nopacity: 0;\\\n}\\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\\ntransition: opacity 0.05s ease 0.05s;\\\nopacity:1;\\\n}\\\n.ace_underline {\\\ntext-decoration: underline;\\\n}\\\n.ace_bold {\\\nfont-weight: bold;\\\n}\\\n.ace_nobold .ace_bold {\\\nfont-weight: normal;\\\n}\\\n.ace_italic {\\\nfont-style: italic;\\\n}\\\n.ace_error-marker {\\\nbackground-color: rgba(255, 0, 0,0.2);\\\nposition: absolute;\\\nz-index: 9;\\\n}\\\n.ace_highlight-marker {\\\nbackground-color: rgba(255, 255, 0,0.2);\\\nposition: absolute;\\\nz-index: 8;\\\n}\\\n.ace_mobile-menu {\\\nposition: absolute;\\\nline-height: 1.5;\\\nborder-radius: 4px;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\nbackground: white;\\\nbox-shadow: 1px 3px 2px grey;\\\nborder: 1px solid #dcdcdc;\\\ncolor: black;\\\n}\\\n.ace_dark > .ace_mobile-menu {\\\nbackground: #333;\\\ncolor: #ccc;\\\nbox-shadow: 1px 3px 2px grey;\\\nborder: 1px solid #444;\\\n}\\\n.ace_mobile-button {\\\npadding: 2px;\\\ncursor: pointer;\\\noverflow: hidden;\\\n}\\\n.ace_mobile-button:hover {\\\nbackground-color: #eee;\\\nopacity:1;\\\n}\\\n.ace_mobile-button:active {\\\nbackground-color: #ddd;\\\n}\\\n.ace_placeholder {\\\nfont-family: arial;\\\ntransform: scale(0.9);\\\ntransform-origin: left;\\\nwhite-space: pre;\\\nopacity: 0.7;\\\nmargin: 0 10px;\\\n}\";\n\nvar useragent = require(\"./lib/useragent\");\nvar HIDE_TEXTAREA = useragent.isIE;\n\ndom.importCssString(editorCss, \"ace_editor.css\", false);\n\nvar VirtualRenderer = function(container, theme) {\n var _self = this;\n\n this.container = container || dom.createElement(\"div\");\n\n dom.addCssClass(this.container, \"ace_editor\");\n if (dom.HI_DPI) dom.addCssClass(this.container, \"ace_hidpi\");\n\n this.setTheme(theme);\n if (config.get(\"useStrictCSP\") == null) \n config.set(\"useStrictCSP\", false);\n\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", true);\n\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n \n this.container.appendChild(this.scroller);\n\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n\n this.$markerBack = new MarkerLayer(this.content);\n\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n\n this.$markerFront = new MarkerLayer(this.content);\n\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n\n this.scrollBar = \n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.on(\"scroll\", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.on(\"scroll\", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n\n this.scrollTop = 0;\n this.scrollLeft = 0;\n\n this.cursorPos = {\n row : 0,\n column : 0\n };\n\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.on(\"changeCharacterSize\", function(e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n\n this.layerConfig = {\n width : 1,\n padding : 0,\n firstRow : 0,\n firstRowScreen: 0,\n lastRow : 0,\n lineHeight : 0,\n characterWidth : 0,\n minHeight : 1,\n maxHeight : 1,\n offset : 0,\n height : 1,\n gutterOffset: 1\n };\n \n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n \n this.margin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n \n this.$keepTextAreaAtCursor = !useragent.isIOS;\n\n this.$loop = new RenderLoop(\n this.$renderChanges.bind(this),\n this.container.ownerDocument.defaultView\n );\n this.$loop.schedule(this.CHANGE_FULL);\n\n this.updateCharacterSize();\n this.setPadding(4);\n config.resetOptions(this);\n config._signal(\"renderer\", this);\n};\n\n(function() {\n\n this.CHANGE_CURSOR = 1;\n this.CHANGE_MARKER = 2;\n this.CHANGE_GUTTER = 4;\n this.CHANGE_SCROLL = 8;\n this.CHANGE_LINES = 16;\n this.CHANGE_TEXT = 32;\n this.CHANGE_SIZE = 64;\n this.CHANGE_MARKER_BACK = 128;\n this.CHANGE_MARKER_FRONT = 256;\n this.CHANGE_FULL = 512;\n this.CHANGE_H_SCROLL = 1024;\n\n oop.implement(this, EventEmitter);\n\n this.updateCharacterSize = function() {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n dom.setStyle(this.scroller.style, \"line-height\", this.lineHeight + \"px\");\n };\n this.setSession = function(session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n \n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n \n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n \n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n this.updateLines = function(firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n\n this.onChangeNewLineMode = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n \n this.onChangeTabSize = function() {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n this.updateText = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n this.updateFull = function(force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n this.updateFontSize = function() {\n this.$textLayer.checkForSizeChanges();\n };\n\n this.$changes = 0;\n this.$updateSizeAsync = function() {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n this.onResize = function(force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n\n \n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n\n if (force)\n this.$gutterLayer.$padding = null;\n\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n };\n \n this.$updateCachedSize = function(force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n\n changes = changes | this.CHANGE_SCROLL;\n }\n\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n \n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n \n this.gutterWidth = gutterWidth;\n \n dom.setStyle(this.scrollBarH.element.style, \"left\", gutterWidth + \"px\");\n dom.setStyle(this.scroller.style, \"left\", gutterWidth + this.margin.left + \"px\");\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h);\n dom.setStyle(this.$gutter.style, \"left\", this.margin.left + \"px\");\n \n var right = this.scrollBarV.getWidth() + \"px\";\n dom.setStyle(this.scrollBarH.element.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"bottom\", this.scrollBarH.getHeight());\n\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) {\n changes |= this.CHANGE_FULL;\n }\n }\n \n size.$dirty = !width || !height;\n\n if (changes)\n this._signal(\"resize\", oldSize);\n\n return changes;\n };\n\n this.onGutterResize = function(width) {\n var gutterWidth = this.$showGutter ? width : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else {\n this.$computeLayerConfig();\n }\n };\n this.adjustWrapLimit = function() {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n this.setAnimatedScroll = function(shouldAnimate){\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n this.getAnimatedScroll = function() {\n return this.$animatedScroll;\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.getOption(\"showInvisibles\");\n };\n this.getDisplayIndentGuides = function() {\n return this.getOption(\"displayIndentGuides\");\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.getOption(\"showPrintMargin\");\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.setOption(\"printMarginColumn\", showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.getOption(\"printMarginColumn\");\n };\n this.getShowGutter = function(){\n return this.getOption(\"showGutter\");\n };\n this.setShowGutter = function(show){\n return this.setOption(\"showGutter\", show);\n };\n\n this.getFadeFoldWidgets = function(){\n return this.getOption(\"fadeFoldWidgets\");\n };\n\n this.setFadeFoldWidgets = function(show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption(\"highlightGutterLine\");\n };\n\n this.$updatePrintMargin = function() {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n\n var style = this.$printMarginEl.style;\n style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n \n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n this.getContainerElement = function() {\n return this.container;\n };\n this.getMouseEventTarget = function() {\n return this.scroller;\n };\n this.getTextAreaContainer = function() {\n return this.container;\n };\n this.$moveTextAreaToCursor = function() {\n if (this.$isMousePressed) return;\n var style = this.textarea.style;\n var composition = this.$composition;\n if (!this.$keepTextAreaAtCursor && !composition) {\n dom.translate(this.textarea, -100, 0);\n return;\n }\n var pixelPos = this.$cursorLayer.$pixelPos;\n if (!pixelPos)\n return;\n if (composition && composition.markerRange)\n pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true);\n \n var config = this.layerConfig;\n var posTop = pixelPos.top;\n var posLeft = pixelPos.left;\n posTop -= config.offset;\n\n var h = composition && composition.useTextareaForIME ? this.lineHeight : HIDE_TEXTAREA ? 0 : 1;\n if (posTop < 0 || posTop > config.height - h) {\n dom.translate(this.textarea, 0, 0);\n return;\n }\n\n var w = 1;\n var maxTop = this.$size.height - h;\n if (!composition) {\n posTop += this.lineHeight;\n }\n else {\n if (composition.useTextareaForIME) {\n var val = this.textarea.value;\n w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]);\n }\n else {\n posTop += this.lineHeight + 2;\n }\n }\n \n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n\n posLeft += this.gutterWidth + this.margin.left;\n\n dom.setStyle(style, \"height\", h + \"px\");\n dom.setStyle(style, \"width\", w + \"px\");\n dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop));\n };\n this.getFirstVisibleRow = function() {\n return this.layerConfig.firstRow;\n };\n this.getFirstFullyVisibleRow = function() {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n this.getLastFullyVisibleRow = function() {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n this.getLastVisibleRow = function() {\n return this.layerConfig.lastRow;\n };\n\n this.$padding = null;\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n \n this.setScrollMargin = function(top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top|0;\n sm.bottom = bottom|0;\n sm.right = right|0;\n sm.left = left|0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n \n this.setMargin = function(top, bottom, left, right) {\n var sm = this.margin;\n sm.top = top|0;\n sm.bottom = bottom|0;\n sm.right = right|0;\n sm.left = left|0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height);\n this.updateFull();\n };\n this.getHScrollBarAlwaysVisible = function() {\n return this.$hScrollBarAlwaysVisible;\n };\n this.setHScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n this.getVScrollBarAlwaysVisible = function() {\n return this.$vScrollBarAlwaysVisible;\n };\n this.setVScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n\n this.$updateScrollBarV = function() {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n this.$updateScrollBarH = function() {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n \n this.$frozen = false;\n this.freeze = function() {\n this.$frozen = true;\n };\n \n this.unfreeze = function() {\n this.$frozen = false;\n };\n\n this.$renderChanges = function(changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return; \n } \n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n \n this._signal(\"beforeRender\", changes);\n \n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL\n ) {\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - this.layerConfig.firstRow) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n \n dom.translate(this.content, -this.scrollLeft, -config.offset);\n \n var width = config.width + 2 * this.$padding + \"px\";\n var height = config.minHeight + \"px\";\n \n dom.setStyle(this.content.style, \"width\", width);\n dom.setStyle(this.content.style, \"height\", height);\n }\n if (changes & this.CHANGE_H_SCROLL) {\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller\" : \"ace_scroller ace_scroll-left\";\n }\n if (changes & this.CHANGE_FULL) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n this.$changedLines = null;\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n\n if (this.$showGutter) {\n if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES)\n this.$gutterLayer.update(config);\n else\n this.$gutterLayer.scrollLines(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n\n if (changes & this.CHANGE_TEXT) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_CURSOR) {\n if (this.$highlightGutterLine)\n this.$gutterLayer.updateLineHighlight(config);\n }\n\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n\n this._signal(\"afterRender\", changes);\n };\n\n \n this.$autosize = function() {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight, \n Math.max((this.$minLines || 1) * this.lineHeight, height)\n ) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n \n var hideScrollbars = desiredHeight <= 2 * this.lineHeight;\n var vScroll = !hideScrollbars && height > maxHeight;\n \n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n \n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n \n this._signal(\"autosize\");\n }\n };\n \n this.$computeLayerConfig = function() {\n var session = this.session;\n var size = this.$size;\n \n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n\n var longestLine = this.$getLongestLine();\n \n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n\n var minHeight = size.scrollerHeight + this.lineHeight;\n \n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n \n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top,\n Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, \n longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n \n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n\n var offset = this.scrollTop % this.lineHeight;\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n\n offset = this.scrollTop - firstRowScreen * lineHeight;\n\n var changes = 0;\n if (this.layerConfig.width != longestLine || hScrollChanged) \n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n \n this.layerConfig = {\n width : longestLine,\n padding : this.$padding,\n firstRow : firstRow,\n firstRowScreen: firstRowScreen,\n lastRow : lastRow,\n lineHeight : lineHeight,\n characterWidth : this.characterWidth,\n minHeight : minHeight,\n maxHeight : maxHeight,\n offset : offset,\n gutterOffset : lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height : this.$size.scrollerHeight\n };\n\n if (this.session.$bidiHandler)\n this.session.$bidiHandler.setContentWidth(longestLine - this.$padding);\n\n return changes;\n };\n\n this.$updateLines = function() {\n if (!this.$changedLines) return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n\n var layerConfig = this.layerConfig;\n\n if (firstRow > layerConfig.lastRow + 1) { return; }\n if (lastRow < layerConfig.firstRow) { return; }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n\n this.$getLongestLine = function() {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n \n if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH)\n charCount = this.$textLayer.MAX_LINE_LENGTH + 30;\n\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n this.updateFrontMarkers = function() {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n this.updateBackMarkers = function() {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n this.addGutterDecoration = function(row, className){\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n this.removeGutterDecoration = function(row, className){\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n this.updateBreakpoints = function(rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.setAnnotations = function(annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.updateCursor = function() {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n this.hideCursor = function() {\n this.$cursorLayer.hideCursor();\n };\n this.showCursor = function() {\n this.$cursorLayer.showCursor();\n };\n\n this.scrollSelectionIntoView = function(anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n this.scrollCursorIntoView = function(cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n\n var left = pos.left;\n var top = pos.top;\n \n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n \n var scrollTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n \n if (scrollTop + topMargin > top) {\n if (offset && scrollTop + topMargin > top + this.lineHeight)\n top -= offset * this.$size.scrollerHeight;\n if (top === 0)\n top = -this.scrollMargin.top;\n this.session.setScrollTop(top);\n } else if (scrollTop + this.$size.scrollerHeight - bottomMargin < top + this.lineHeight) {\n if (offset && scrollTop + this.$size.scrollerHeight - bottomMargin < top - this.lineHeight)\n top += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(top + this.lineHeight + bottomMargin - this.$size.scrollerHeight);\n }\n\n var scrollLeft = this.scrollLeft;\n\n if (scrollLeft > left) {\n if (left < this.$padding + 2 * this.layerConfig.characterWidth)\n left = -this.scrollMargin.left;\n this.session.setScrollLeft(left);\n } else if (scrollLeft + this.$size.scrollerWidth < left + this.characterWidth) {\n this.session.setScrollLeft(Math.round(left + this.characterWidth - this.$size.scrollerWidth));\n } else if (scrollLeft <= this.$padding && left - scrollLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n };\n this.getScrollTop = function() {\n return this.session.getScrollTop();\n };\n this.getScrollLeft = function() {\n return this.session.getScrollLeft();\n };\n this.getScrollTopRow = function() {\n return this.scrollTop / this.lineHeight;\n };\n this.getScrollBottomRow = function() {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n this.scrollToRow = function(row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n\n this.alignCursor = function(cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = {row: cursor, column: 0};\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n\n this.session.setScrollTop(offset);\n return offset;\n };\n\n this.STEPS = 8;\n this.$calcSteps = function(fromValue, toValue){\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n\n var func = function(t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n\n return steps;\n };\n this.scrollToLine = function(line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0});\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n\n this.animateScrolling = function(fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n \n if (fromValue == toValue)\n return;\n \n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n \n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = {from: fromValue, to: toValue, steps: steps};\n\n clearInterval(this.$timer);\n\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n this.$timer = setInterval(function() {\n if (!_self.session) \n return clearInterval(_self.$timer);\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n } else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n } else {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n callback && callback();\n }\n }, 10);\n };\n this.scrollToY = function(scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n this.scrollToX = function(scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n this.scrollTo = function(x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(x);\n };\n this.scrollBy = function(deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n this.isScrollableBy = function(deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n\n this.pixelToScreenCoordinates = function(x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = {top:0, left: 0};\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n } else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n \n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n\n return {row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX};\n };\n\n this.screenToTextCoordinates = function(x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = {top:0, left: 0};\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n } else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n this.textToScreenCoordinates = function(row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n \n var y = pos.row * this.lineHeight;\n\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n this.visualizeFocus = function() {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n this.visualizeBlur = function() {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n this.showComposition = function(composition) {\n this.$composition = composition;\n if (!composition.cssText) {\n composition.cssText = this.textarea.style.cssText;\n }\n if (composition.useTextareaForIME == undefined)\n composition.useTextareaForIME = this.$useTextareaForIME;\n \n if (this.$useTextareaForIME) {\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n this.$cursorLayer.element.style.display = \"none\";\n }\n else {\n composition.markerId = this.session.addMarker(composition.markerRange, \"ace_composition_marker\", \"text\");\n }\n };\n this.setCompositionText = function(text) {\n var cursor = this.session.selection.cursor;\n this.addToken(text, \"composition_placeholder\", cursor.row, cursor.column);\n this.$moveTextAreaToCursor();\n };\n this.hideComposition = function() {\n if (!this.$composition)\n return;\n \n if (this.$composition.markerId)\n this.session.removeMarker(this.$composition.markerId);\n\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = this.$composition.cssText;\n var cursor = this.session.selection.cursor;\n this.removeExtraToken(cursor.row, cursor.column);\n this.$composition = null;\n this.$cursorLayer.element.style.display = \"\";\n };\n \n this.addToken = function(text, type, row, column) {\n var session = this.session;\n session.bgTokenizer.lines[row] = null;\n var newToken = {type: type, value: text};\n var tokens = session.getTokens(row);\n if (column == null) {\n tokens.push(newToken);\n } else {\n var l = 0;\n for (var i =0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (column <= l) {\n var diff = token.value.length - (l - column);\n var before = token.value.slice(0, diff);\n var after = token.value.slice(diff);\n \n tokens.splice(i, 1, {type: token.type, value: before}, newToken, {type: token.type, value: after});\n break;\n }\n }\n }\n this.updateLines(row, row);\n };\n\n this.removeExtraToken = function(row, column) {\n this.updateLines(row, row);\n };\n this.setTheme = function(theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange',{theme:theme});\n\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n } else {\n afterLoad(theme);\n }\n\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n if (module.$id)\n _self.$themeId = module.$id;\n dom.importCssString(\n module.cssText,\n module.cssClass,\n _self.container\n );\n\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n\n var padding = \"padding\" in module ? module.padding \n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n\n _self._dispatchEvent('themeLoaded', {theme:module});\n cb && cb();\n }\n };\n this.getTheme = function() {\n return this.$themeId;\n };\n this.setStyle = function(style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n this.unsetStyle = function(style) {\n dom.removeCssClass(this.container, style);\n };\n \n this.setCursorStyle = function(style) {\n dom.setStyle(this.scroller.style, \"cursor\", style);\n };\n this.setMouseCursor = function(cursorStyle) {\n dom.setStyle(this.scroller.style, \"cursor\", cursorStyle);\n };\n \n this.attachToShadowRoot = function() {\n dom.importCssString(editorCss, \"ace_editor.css\", this.container);\n };\n this.destroy = function() {\n this.freeze();\n this.$fontMetrics.destroy();\n this.$cursorLayer.destroy();\n this.removeAllListeners();\n this.container.textContent = \"\";\n };\n\n}).call(VirtualRenderer.prototype);\n\n\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n animatedScroll: {initialValue: false},\n showInvisibles: {\n set: function(value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function(val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function() {\n return this.$showPrintMargin && this.$printMarginColumn; \n }\n },\n showGutter: {\n set: function(show){\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n fadeFoldWidgets: {\n set: function(show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function(show) {\n this.$gutterLayer.setShowFoldWidgets(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function(show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function(shouldHighlight) {\n this.$gutterLayer.setHighlightGutterLine(shouldHighlight);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n hScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function(size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function(name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function(val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function(val) {\n if (!(this.$minLines < 0x1ffffffffffff))\n this.$minLines = 0;\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function(val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function(val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function(val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n theme: {\n set: function(val) { this.setTheme(val); },\n get: function() { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n },\n hasCssTransforms: {\n },\n useTextareaForIME: {\n initialValue: !useragent.isMobile && !useragent.isIE\n }\n});\n\nexports.VirtualRenderer = VirtualRenderer;\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar net = require(\"../lib/net\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar config = require(\"../config\");\n\nfunction $workerBlob(workerUrl) {\n var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl) {\n if (typeof Worker == \"undefined\")\n return { postMessage: function() {}, terminate: function() {} };\n if (config.get(\"loadWorkerFromBlob\")) {\n var blob = $workerBlob(workerUrl);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n }\n return new Worker(workerUrl);\n}\n\nvar WorkerClient = function(worker) {\n if (!worker.postMessage)\n worker = this.$createWorkerFromOldConfig.apply(this, arguments);\n\n this.$worker = worker;\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n if (require.nameToUrl && !require.toUrl)\n require.toUrl = require.nameToUrl;\n\n if (config.get(\"packaged\") || !require.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(require.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(require.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod,\n classname : classname\n });\n return this.$worker;\n };\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n if (data.data && data.data.err)\n data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code};\n this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n\n var messageBuffer = [];\n var workerClient = new WorkerClient({\n messageBuffer: messageBuffer,\n terminate: function() {},\n postMessage: function(e) {\n messageBuffer.push(e);\n if (!main) return;\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n });\n\n workerClient.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n workerClient.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (messageBuffer.length)\n processNext();\n });\n\n return workerClient;\n};\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar oop = require(\"./lib/oop\");\n\nvar PlaceHolder = function(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate);\n this.$others = others;\n \n this.$onCursorChange = function() {\n setTimeout(function() {\n _self.onCursorChange();\n });\n };\n \n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || {length: -1};\n this.$undoStackDepth = undoStack.length;\n this.setup();\n\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setup = function() {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n \n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function(other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n this.showOtherMarkers = function() {\n if (this.othersActive) return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function(anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column+_self.length), _self.othersClass, null, false);\n });\n };\n this.hideOtherMarkers = function() {\n if (!this.othersActive) return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n this.onUpdate = function(delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n \n var range = delta;\n if (range.start.row !== range.end.row) return;\n if (range.start.row !== this.pos.row) return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n \n this.updateAnchors(delta);\n \n if (inMainRange)\n this.length += lengthDiff;\n\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n } else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n \n this.$updating = false;\n this.updateMarkers();\n };\n \n this.updateAnchors = function(delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n \n this.updateMarkers = function() {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function(pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column+_self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n\n this.onCursorChange = function(event) {\n if (this.$updating || !this.session) return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n } else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n }; \n this.detach = function() {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.off(\"change\", this.$onUpdate);\n this.session.selection.off(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n this.cancel = function() {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(this.session, true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n}).call(PlaceHolder.prototype);\n\n\nexports.PlaceHolder = PlaceHolder;\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module) {\n\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\n\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n \n if (ctrl && useragent.isMac)\n button = ev.button;\n\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n \n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n \n if (button !== 0)\n return;\n\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function(e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n \n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n \n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n } else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n } else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n \n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n \n editor.inVirtualSelectionMode = true;\n \n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function() {\n var tmpSel = selection.toOrientedRange();\n\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n } else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.inVirtualSelectionMode = false;\n });\n\n } else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true; \n var initialRange;\n var rectSel = [];\n var blockSelect = function() {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n \n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n };\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n } else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n \n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead); \n else\n selection.moveToPosition(pos);\n \n screenCursor = {row: -1, column: -1};\n\n var onMouseSelectionEnd = function(e) {\n blockSelect();\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n };\n\n var onSelectionInterval = blockSelect;\n\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function() {onSelectionInterval();}, 20);\n\n return e.preventDefault();\n }\n}\n\n\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(require, exports, module) {\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n description: \"Add cursor above\",\n exec: function(editor) { editor.selectMoreLines(-1); },\n bindKey: {win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorBelow\",\n description: \"Add cursor below\",\n exec: function(editor) { editor.selectMoreLines(1); },\n bindKey: {win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorAboveSkipCurrent\",\n description: \"Add cursor above (skip current)\",\n exec: function(editor) { editor.selectMoreLines(-1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorBelowSkipCurrent\",\n description: \"Add cursor below (skip current)\",\n exec: function(editor) { editor.selectMoreLines(1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectMoreBefore\",\n description: \"Select more before\",\n exec: function(editor) { editor.selectMore(-1); },\n bindKey: {win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectMoreAfter\",\n description: \"Select more after\",\n exec: function(editor) { editor.selectMore(1); },\n bindKey: {win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectNextBefore\",\n description: \"Select next before\",\n exec: function(editor) { editor.selectMore(-1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectNextAfter\",\n description: \"Select next after\",\n exec: function(editor) { editor.selectMore(1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"toggleSplitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function(editor) {\n if (editor.multiSelect.rangeCount > 1)\n editor.multiSelect.joinSelections();\n else\n editor.multiSelect.splitIntoLines();\n },\n bindKey: {win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\"},\n readOnly: true\n}, {\n name: \"splitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function(editor) { editor.multiSelect.splitIntoLines(); },\n readOnly: true\n}, {\n name: \"alignCursors\",\n description: \"Align cursors\",\n exec: function(editor) { editor.alignCursors(); },\n bindKey: {win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\"},\n scrollIntoView: \"cursor\"\n}, {\n name: \"findAll\",\n description: \"Find all\",\n exec: function(editor) { editor.findAll(); },\n bindKey: {win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n description: \"Single selection\",\n bindKey: \"esc\",\n exec: function(editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function(editor) {return editor && editor.inMultiSelectMode;}\n}];\n\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(require, exports, module) {\n\nvar RangeList = require(\"./range_list\").RangeList;\nvar Range = require(\"./range\").Range;\nvar Selection = require(\"./selection\").Selection;\nvar onMouseDown = require(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = require(\"./lib/event\");\nvar lang = require(\"./lib/lang\");\nvar commands = require(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require(\"./search\").Search;\nvar search = new Search();\n\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = require(\"./edit_session\").EditSession;\n(function() {\n this.getSelectionMarkers = function() {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function() {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function(range, $blockChangeEvents) {\n if (!range)\n return;\n\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n\n if (!range.cursor)\n range.cursor = range.end;\n\n var removed = this.rangeList.add(range);\n\n this.$onAddRange(range);\n\n if (removed.length)\n this.$onRemoveRange(removed);\n\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n this.toSingleRange = function(range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function(pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function() {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n };\n\n this.$onAddRange = function(range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", {range: range});\n };\n\n this.$onRemoveRange = function(removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n\n for (var i = removed.length; i--; ) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n\n this._signal(\"removeRange\", {ranges: removed});\n\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function() {\n if (this.rangeList)\n return;\n\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function() {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n this.splitIntoLines = function () {\n var ranges = this.ranges.length ? this.ranges : [this.getRange()];\n var newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var row = range.start.row;\n var endRow = range.end.row;\n if (row === endRow) {\n newRanges.push(range.clone());\n } else {\n newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));\n while (++row < endRow)\n newRanges.push(this.getLineRange(row, true));\n newRanges.push(new Range(endRow, 0, endRow, range.end.column));\n }\n if (i == 0 && !this.isBackwards())\n newRanges = newRanges.reverse();\n }\n this.toSingleRange();\n for (var i = newRanges.length; i--;)\n this.addRange(newRanges[i]);\n };\n \n this.joinSelections = function () {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n } else {\n var cursor = this.session.documentToScreenPosition(this.cursor);\n var anchor = this.session.documentToScreenPosition(this.anchor);\n\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function(screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n } else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n } else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n\n if (startRow == endRow)\n includeEmptyLines = true;\n\n var docEnd;\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(\n this.session.screenToDocumentPosition(row, startColumn, startOffsetX),\n this.session.screenToDocumentPosition(row, endColumn, endOffsetX)\n );\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n\n if (yBackwards)\n rectSel.reverse();\n\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = require(\"./editor\").Editor;\n(function() {\n this.updateSelectionMarkers = function() {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function(orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function(range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n\n this.removeSelectionMarkers = function(ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--; ) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n\n this.$onAddRange = function(e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onRemoveRange = function(e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onMultiSelect = function(e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onSingleSelect = function(e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n\n this.$onMultiSelectExec = function(e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n } else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n } else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n } else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n } else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n }; \n this.forEachSelection = function(cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n \n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n \n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n if (selection.ranges[0])\n selection.fromOrientedRange(selection.ranges[0]);\n \n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n \n return result;\n };\n this.exitMultiSelectMode = function() {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n\n this.getSelectedText = function() {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n } else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n \n this.$checkMultiselectChange = function(e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row \n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n else\n this.multiSelect.mergeOverlappingRanges();\n }\n };\n this.findAll = function(needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n } \n this.$search.set(options);\n \n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n\n var selection = this.multiSelect;\n\n if (!additive)\n selection.toSingleRange(ranges[0]);\n\n for (var i = ranges.length; i--; )\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n \n return ranges.length;\n };\n this.selectMoreLines = function(dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n } else {\n var anchor = lead;\n }\n\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n } else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n } else {\n if (skip)\n var toRemove = range.cursor;\n }\n\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function(dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n\n var words = [];\n for (var i = all.length; i--; ) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n sel.fromOrientedRange(sel.ranges[0]);\n };\n this.selectMore = function(dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function() {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function(r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n \n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n \n if (fr < 0) fr = 0;\n if (lr >= max) lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({row: fr, column: 0}, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n } else {\n sameRowRanges.forEach(function(r) {\n sel.substractPoint(r.cursor);\n });\n\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function(r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function(r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n\n this.$reAlignText = function(lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n\n return lines.map(function(line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\n\n\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function(e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n\n addAltCursorListeners(editor);\n}\n\nfunction addAltCursorListeners(editor){\n if (!editor.textInput) return;\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function(e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n } else if (altCursor) {\n reset();\n }\n }, editor);\n\n event.addListener(el, \"keyup\", reset, editor);\n event.addListener(el, \"blur\", reset, editor);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\n\nexports.MultiSelect = MultiSelect;\n\n\nrequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function(val) {\n MultiSelect(this);\n if (val) {\n this.on(\"changeSession\", this.$multiselectOnSessionChange);\n this.on(\"mousedown\", onMouseDown);\n } else {\n this.off(\"changeSession\", this.$multiselectOnSessionChange);\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function(val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\n\n(function() {\n\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n return null;\n };\n\n this.indentationBlock = function(session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n\n if (level == -1)\n continue;\n\n if (level <= startLevel) {\n var token = session.getTokenAt(row, 0);\n if (!token || token.type !== \"string\")\n break;\n }\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n\n this.openingBracketBlock = function(session, bracket, row, column, typeRe) {\n var start = {row: row, column: column + 1};\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n\n if (fw == \"start\" && end.row > start.row) {\n end.row --;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n\n this.closingBracketBlock = function(session, bracket, row, column, typeRe) {\n var end = {row: row, column: column};\n var start = session.$findOpeningBracket(bracket, end);\n\n if (!start)\n return;\n\n start.column++;\n end.column--;\n\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = \".ace-tm .ace_gutter {\\\nbackground: #f0f0f0;\\\ncolor: #333;\\\n}\\\n.ace-tm .ace_print-margin {\\\nwidth: 1px;\\\nbackground: #e8e8e8;\\\n}\\\n.ace-tm .ace_fold {\\\nbackground-color: #6B72E6;\\\n}\\\n.ace-tm {\\\nbackground-color: #FFFFFF;\\\ncolor: black;\\\n}\\\n.ace-tm .ace_cursor {\\\ncolor: black;\\\n}\\\n.ace-tm .ace_invisible {\\\ncolor: rgb(191, 191, 191);\\\n}\\\n.ace-tm .ace_storage,\\\n.ace-tm .ace_keyword {\\\ncolor: blue;\\\n}\\\n.ace-tm .ace_constant {\\\ncolor: rgb(197, 6, 11);\\\n}\\\n.ace-tm .ace_constant.ace_buildin {\\\ncolor: rgb(88, 72, 246);\\\n}\\\n.ace-tm .ace_constant.ace_language {\\\ncolor: rgb(88, 92, 246);\\\n}\\\n.ace-tm .ace_constant.ace_library {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_invalid {\\\nbackground-color: rgba(255, 0, 0, 0.1);\\\ncolor: red;\\\n}\\\n.ace-tm .ace_support.ace_function {\\\ncolor: rgb(60, 76, 114);\\\n}\\\n.ace-tm .ace_support.ace_constant {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_support.ace_type,\\\n.ace-tm .ace_support.ace_class {\\\ncolor: rgb(109, 121, 222);\\\n}\\\n.ace-tm .ace_keyword.ace_operator {\\\ncolor: rgb(104, 118, 135);\\\n}\\\n.ace-tm .ace_string {\\\ncolor: rgb(3, 106, 7);\\\n}\\\n.ace-tm .ace_comment {\\\ncolor: rgb(76, 136, 107);\\\n}\\\n.ace-tm .ace_comment.ace_doc {\\\ncolor: rgb(0, 102, 255);\\\n}\\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\\ncolor: rgb(128, 159, 191);\\\n}\\\n.ace-tm .ace_constant.ace_numeric {\\\ncolor: rgb(0, 0, 205);\\\n}\\\n.ace-tm .ace_variable {\\\ncolor: rgb(49, 132, 149);\\\n}\\\n.ace-tm .ace_xml-pe {\\\ncolor: rgb(104, 104, 91);\\\n}\\\n.ace-tm .ace_entity.ace_name.ace_function {\\\ncolor: #0000A2;\\\n}\\\n.ace-tm .ace_heading {\\\ncolor: rgb(12, 7, 255);\\\n}\\\n.ace-tm .ace_list {\\\ncolor:rgb(185, 6, 144);\\\n}\\\n.ace-tm .ace_meta.ace_tag {\\\ncolor:rgb(0, 22, 142);\\\n}\\\n.ace-tm .ace_string.ace_regex {\\\ncolor: rgb(255, 0, 0)\\\n}\\\n.ace-tm .ace_marker-layer .ace_selection {\\\nbackground: rgb(181, 213, 255);\\\n}\\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\\nbox-shadow: 0 0 3px 0px white;\\\n}\\\n.ace-tm .ace_marker-layer .ace_step {\\\nbackground: rgb(252, 255, 0);\\\n}\\\n.ace-tm .ace_marker-layer .ace_stack {\\\nbackground: rgb(164, 229, 101);\\\n}\\\n.ace-tm .ace_marker-layer .ace_bracket {\\\nmargin: -1px 0 0 -1px;\\\nborder: 1px solid rgb(192, 192, 192);\\\n}\\\n.ace-tm .ace_marker-layer .ace_active-line {\\\nbackground: rgba(0, 0, 0, 0.07);\\\n}\\\n.ace-tm .ace_gutter-active-line {\\\nbackground-color : #dcdcdc;\\\n}\\\n.ace-tm .ace_marker-layer .ace_selected-word {\\\nbackground: rgb(250, 250, 255);\\\nborder: 1px solid rgb(200, 200, 250);\\\n}\\\n.ace-tm .ace_indent-guide {\\\nbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\\n}\\\n\";\nexports.$id = \"ace/theme/textmate\";\n\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"./lib/dom\");\n\nfunction LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n \n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n}\n\n(function() {\n this.getRowLength = function(row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else \n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n } else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n\n this.$getWidgetScreenLength = function() {\n var screenRows = 0;\n this.lineWidgets.forEach(function(w){\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n }; \n \n this.$onChangeEditor = function(e) {\n this.attach(e.editor);\n };\n \n this.attach = function(editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n\n if (this.editor == editor)\n return;\n\n this.detach();\n this.editor = editor;\n \n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n this.detach = function(e) {\n var editor = this.editor;\n if (!editor)\n return;\n \n this.editor = null;\n editor.widgetManager = null;\n \n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function(w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n\n this.updateOnFold = function(e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n } else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n \n this.updateOnChange = function(delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n \n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n } else if (delta.action == \"remove\") {\n var removed = lineWidgets.splice(startRow + 1, len);\n if (!lineWidgets[startRow] && removed[removed.length - 1]) {\n lineWidgets[startRow] = removed.pop();\n }\n removed.forEach(function(w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n } else {\n var args = new Array(len);\n if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {\n if (delta.start.column > lineWidgets[startRow].column)\n startRow++;\n }\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n \n this.$updateRows = function() {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n var noWidgets = true;\n lineWidgets.forEach(function(w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n\n this.$registerLineWidget = function(w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n \n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n \n this.session.lineWidgets[w.row] = w;\n return w;\n };\n \n this.addLineWidget = function(w) {\n this.$registerLineWidget(w);\n w.session = this.session;\n \n if (!this.editor) return w;\n \n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n \n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n \n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n \n this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\n \n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n \n this.removeLineWidget = function(w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy) try {\n w.editor.destroy();\n } catch(e){}\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n } else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\n this.$updateRows();\n };\n \n this.getWidgetsAtRow = function(row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n \n this.onWidgetChanged = function(w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n \n this.measureWidgets = function(e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n \n if (!changedWidgets || !changedWidgets.length) return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el) continue;\n if (w.session != this.session) continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n \n w.h = w.el.offsetHeight;\n \n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n \n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", {data:{start:{row: min}}});\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n \n this.renderWidgets = function(e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n \n while (first > 0 && !lineWidgets[first])\n first--;\n \n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el) continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({row: i, column:0}, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n \n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n \n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n \n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n } else {\n w.el.style.right = \"\";\n }\n }\n };\n \n}).call(LineWidgets.prototype);\n\n\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar LineWidgets = require(\"../line_widgets\").LineWidgets;\nvar dom = require(\"../lib/dom\");\nvar Range = require(\"../range\").Range;\n\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\n\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n \n var i = binarySearch(annotations, {row: row, column: -1}, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n \n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n \n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n \n \n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\n\nexports.showErrorMarker = function(editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n \n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function(w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n } else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n } else if (oldWidget) {\n return;\n } else {\n gutterAnno = {\n text: [\"Looks good!\"],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n \n var w = {\n row: pos.row, \n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n \n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n \n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join(\" \");\n \n el.appendChild(dom.createElement(\"div\"));\n \n var kb = function(_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return {command: \"null\"};\n }\n };\n \n w.destroy = function() {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n \n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n \n editor.session.widgetManager.addLineWidget(w);\n \n w.el.onmousedown = editor.focus.bind(editor);\n \n editor.renderer.scrollCursorIntoView(null, 0.5, {bottom: w.el.offsetHeight});\n};\n\n\ndom.importCssString(\"\\\n .error_widget_wrapper {\\\n background: inherit;\\\n color: inherit;\\\n border:none\\\n }\\\n .error_widget {\\\n border-top: solid 2px;\\\n border-bottom: solid 2px;\\\n margin: 5px 0;\\\n padding: 10px 40px;\\\n white-space: pre-wrap;\\\n }\\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\\n border-color: #ff5a5a\\\n }\\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\\n border-color: #F1D817\\\n }\\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\\n border-color: #5a5a5a\\\n }\\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\\n border-color: #5aaa5a\\\n }\\\n .error_widget_arrow {\\\n position: absolute;\\\n border: solid 5px;\\\n border-top-color: transparent!important;\\\n border-right-color: transparent!important;\\\n border-left-color: transparent!important;\\\n top: -5px;\\\n }\\\n\", \"error_marker.css\", false);\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/range\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\n\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\n\nvar Range = require(\"./range\").Range;\nvar Editor = require(\"./editor\").Editor;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nrequire(\"./worker/worker_client\");\nrequire(\"./keyboard/hash_handler\");\nrequire(\"./placeholder\");\nrequire(\"./multi_select\");\nrequire(\"./mode/folding/fold_mode\");\nrequire(\"./theme/textmate\");\nrequire(\"./ext/error_marker\");\n\nexports.config = require(\"./config\");\nexports.require = require;\n\nif (true)\n exports.define = __webpack_require__.amdD;\nexports.edit = function(el, options) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n } else if (el) {\n value = el.textContent;\n el.innerHTML = \"\";\n }\n\n var doc = exports.createEditSession(value);\n\n var editor = new Editor(new Renderer(el), doc, options);\n\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode) env.textarea = oldNode;\n event.addListener(window, \"resize\", env.onResize);\n editor.on(\"destroy\", function() {\n event.removeListener(window, \"resize\", env.onResize);\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function(text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.Range = Range;\nexports.Editor = Editor;\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.VirtualRenderer = Renderer;\nexports.version = exports.config.version;\n}); (function() {\n ace.require([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n if (!window.ace)\n window.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n window.ace[key] = a[key];\n window.ace[\"default\"] = window.ace;\n if ( true && module) {\n module.exports = window.ace;\n }\n });\n })();\n \n\n//# sourceURL=webpack:///../node_modules/ace-builds/src-noconflict/ace.js?");
+
+/***/ }),
+
+/***/ "../node_modules/ace-builds/src-noconflict/ext-language_tools.js":
+/*!***********************************************************************!*\
+ !*** ../node_modules/ace-builds/src-noconflict/ext-language_tools.js ***!
+ \***********************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("/* module decorator */ module = __webpack_require__.nmd(module);\nace.define(\"ace/snippets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/lang\",\"ace/range\",\"ace/range_list\",\"ace/keyboard/hash_handler\",\"ace/tokenizer\",\"ace/clipboard\",\"ace/editor\"], function(require, exports, module) {\n\"use strict\";\nvar dom = require(\"./lib/dom\");\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar lang = require(\"./lib/lang\");\nvar Range = require(\"./range\").Range;\nvar RangeList = require(\"./range_list\").RangeList;\nvar HashHandler = require(\"./keyboard/hash_handler\").HashHandler;\nvar Tokenizer = require(\"./tokenizer\").Tokenizer;\nvar clipboard = require(\"./clipboard\");\n\nvar VARIABLES = {\n CURRENT_WORD: function(editor) {\n return editor.session.getTextRange(editor.session.getWordRange());\n },\n SELECTION: function(editor, name, indentation) {\n var text = editor.session.getTextRange();\n if (indentation)\n return text.replace(/\\n\\r?([ \\t]*\\S)/g, \"\\n\" + indentation + \"$1\");\n return text;\n },\n CURRENT_LINE: function(editor) {\n return editor.session.getLine(editor.getCursorPosition().row);\n },\n PREV_LINE: function(editor) {\n return editor.session.getLine(editor.getCursorPosition().row - 1);\n },\n LINE_INDEX: function(editor) {\n return editor.getCursorPosition().row;\n },\n LINE_NUMBER: function(editor) {\n return editor.getCursorPosition().row + 1;\n },\n SOFT_TABS: function(editor) {\n return editor.session.getUseSoftTabs() ? \"YES\" : \"NO\";\n },\n TAB_SIZE: function(editor) {\n return editor.session.getTabSize();\n },\n CLIPBOARD: function(editor) {\n return clipboard.getText && clipboard.getText();\n },\n FILENAME: function(editor) {\n return /[^/\\\\]*$/.exec(this.FILEPATH(editor))[0];\n },\n FILENAME_BASE: function(editor) {\n return /[^/\\\\]*$/.exec(this.FILEPATH(editor))[0].replace(/\\.[^.]*$/, \"\");\n },\n DIRECTORY: function(editor) {\n return this.FILEPATH(editor).replace(/[^/\\\\]*$/, \"\");\n },\n FILEPATH: function(editor) { return \"/not implemented.txt\"; },\n WORKSPACE_NAME: function() { return \"Unknown\"; },\n FULLNAME: function() { return \"Unknown\"; },\n BLOCK_COMMENT_START: function(editor) {\n var mode = editor.session.$mode || {};\n return mode.blockComment && mode.blockComment.start || \"\";\n },\n BLOCK_COMMENT_END: function(editor) {\n var mode = editor.session.$mode || {};\n return mode.blockComment && mode.blockComment.end || \"\";\n },\n LINE_COMMENT: function(editor) {\n var mode = editor.session.$mode || {};\n return mode.lineCommentStart || \"\";\n },\n CURRENT_YEAR: date.bind(null, {year: \"numeric\"}),\n CURRENT_YEAR_SHORT: date.bind(null, {year: \"2-digit\"}),\n CURRENT_MONTH: date.bind(null, {month: \"numeric\"}),\n CURRENT_MONTH_NAME: date.bind(null, {month: \"long\"}),\n CURRENT_MONTH_NAME_SHORT: date.bind(null, {month: \"short\"}),\n CURRENT_DATE: date.bind(null, {day: \"2-digit\"}),\n CURRENT_DAY_NAME: date.bind(null, {weekday: \"long\"}),\n CURRENT_DAY_NAME_SHORT: date.bind(null, {weekday: \"short\"}),\n CURRENT_HOUR: date.bind(null, {hour: \"2-digit\", hour12: false}),\n CURRENT_MINUTE: date.bind(null, {minute: \"2-digit\"}),\n CURRENT_SECOND: date.bind(null, {second: \"2-digit\"})\n};\n\nVARIABLES.SELECTED_TEXT = VARIABLES.SELECTION;\n\nfunction date(dateFormat) {\n var str = new Date().toLocaleString(\"en-us\", dateFormat);\n return str.length == 1 ? \"0\" + str : str;\n}\n\nvar SnippetManager = function() {\n this.snippetMap = {};\n this.snippetNameMap = {};\n};\n\n(function() {\n oop.implement(this, EventEmitter);\n \n this.getTokenizer = function() {\n return SnippetManager.$tokenizer || this.createTokenizer();\n };\n \n this.createTokenizer = function() {\n function TabstopToken(str) {\n str = str.substr(1);\n if (/^\\d+$/.test(str))\n return [{tabstopId: parseInt(str, 10)}];\n return [{text: str}];\n }\n function escape(ch) {\n return \"(?:[^\\\\\\\\\" + ch + \"]|\\\\\\\\.)\";\n }\n var formatMatcher = {\n regex: \"/(\" + escape(\"/\") + \"+)/\", \n onMatch: function(val, state, stack) {\n var ts = stack[0];\n ts.fmtString = true;\n ts.guard = val.slice(1, -1);\n ts.flag = \"\";\n return \"\";\n },\n next: \"formatString\"\n };\n \n SnippetManager.$tokenizer = new Tokenizer({\n start: [\n {regex: /\\\\./, onMatch: function(val, state, stack) {\n var ch = val[1];\n if (ch == \"}\" && stack.length) {\n val = ch;\n } else if (\"`$\\\\\".indexOf(ch) != -1) {\n val = ch;\n }\n return [val];\n }},\n {regex: /}/, onMatch: function(val, state, stack) {\n return [stack.length ? stack.shift() : val];\n }},\n {regex: /\\$(?:\\d+|\\w+)/, onMatch: TabstopToken},\n {regex: /\\$\\{[\\dA-Z_a-z]+/, onMatch: function(str, state, stack) {\n var t = TabstopToken(str.substr(1));\n stack.unshift(t[0]);\n return t;\n }, next: \"snippetVar\"},\n {regex: /\\n/, token: \"newline\", merge: false}\n ],\n snippetVar: [\n {regex: \"\\\\|\" + escape(\"\\\\|\") + \"*\\\\|\", onMatch: function(val, state, stack) {\n var choices = val.slice(1, -1).replace(/\\\\[,|\\\\]|,/g, function(operator) {\n return operator.length == 2 ? operator[1] : \"\\x00\";\n }).split(\"\\x00\").map(function(value){\n return {value: value};\n });\n stack[0].choices = choices;\n return [choices[0]];\n }, next: \"start\"},\n formatMatcher,\n {regex: \"([^:}\\\\\\\\]|\\\\\\\\.)*:?\", token: \"\", next: \"start\"}\n ],\n formatString: [\n {regex: /:/, onMatch: function(val, state, stack) {\n if (stack.length && stack[0].expectElse) {\n stack[0].expectElse = false;\n stack[0].ifEnd = {elseEnd: stack[0]};\n return [stack[0].ifEnd];\n }\n return \":\";\n }},\n {regex: /\\\\./, onMatch: function(val, state, stack) {\n var ch = val[1];\n if (ch == \"}\" && stack.length)\n val = ch;\n else if (\"`$\\\\\".indexOf(ch) != -1)\n val = ch;\n else if (ch == \"n\")\n val = \"\\n\";\n else if (ch == \"t\")\n val = \"\\t\";\n else if (\"ulULE\".indexOf(ch) != -1)\n val = {changeCase: ch, local: ch > \"a\"};\n return [val];\n }},\n {regex: \"/\\\\w*}\", onMatch: function(val, state, stack) {\n var next = stack.shift();\n if (next)\n next.flag = val.slice(1, -1);\n this.next = next && next.tabstopId ? \"start\" : \"\";\n return [next || val];\n }, next: \"start\"},\n {regex: /\\$(?:\\d+|\\w+)/, onMatch: function(val, state, stack) {\n return [{text: val.slice(1)}];\n }},\n {regex: /\\${\\w+/, onMatch: function(val, state, stack) {\n var token = {text: val.slice(2)};\n stack.unshift(token);\n return [token];\n }, next: \"formatStringVar\"},\n {regex: /\\n/, token: \"newline\", merge: false},\n {regex: /}/, onMatch: function(val, state, stack) {\n var next = stack.shift();\n this.next = next && next.tabstopId ? \"start\" : \"\";\n return [next || val];\n }, next: \"start\"}\n ],\n formatStringVar: [\n {regex: /:\\/\\w+}/, onMatch: function(val, state, stack) {\n var ts = stack[0];\n ts.formatFunction = val.slice(2, -1);\n return [stack.shift()];\n }, next: \"formatString\"},\n formatMatcher,\n {regex: /:[\\?\\-+]?/, onMatch: function(val, state, stack) {\n if (val[1] == \"+\")\n stack[0].ifEnd = stack[0];\n if (val[1] == \"?\")\n stack[0].expectElse = true;\n }, next: \"formatString\"},\n {regex: \"([^:}\\\\\\\\]|\\\\\\\\.)*:?\", token: \"\", next: \"formatString\"}\n ]\n });\n return SnippetManager.$tokenizer;\n };\n\n this.tokenizeTmSnippet = function(str, startState) {\n return this.getTokenizer().getLineTokens(str, startState).tokens.map(function(x) {\n return x.value || x;\n });\n };\n \n this.getVariableValue = function(editor, name, indentation) {\n if (/^\\d+$/.test(name))\n return (this.variables.__ || {})[name] || \"\";\n if (/^[A-Z]\\d+$/.test(name))\n return (this.variables[name[0] + \"__\"] || {})[name.substr(1)] || \"\";\n \n name = name.replace(/^TM_/, \"\");\n if (!this.variables.hasOwnProperty(name))\n return \"\";\n var value = this.variables[name];\n if (typeof value == \"function\")\n value = this.variables[name](editor, name, indentation);\n return value == null ? \"\" : value;\n };\n \n this.variables = VARIABLES;\n this.tmStrFormat = function(str, ch, editor) {\n if (!ch.fmt) return str;\n var flag = ch.flag || \"\";\n var re = ch.guard;\n re = new RegExp(re, flag.replace(/[^gim]/g, \"\"));\n var fmtTokens = typeof ch.fmt == \"string\" ? this.tokenizeTmSnippet(ch.fmt, \"formatString\") : ch.fmt;\n var _self = this;\n var formatted = str.replace(re, function() {\n var oldArgs = _self.variables.__;\n _self.variables.__ = [].slice.call(arguments);\n var fmtParts = _self.resolveVariables(fmtTokens, editor);\n var gChangeCase = \"E\";\n for (var i = 0; i < fmtParts.length; i++) {\n var ch = fmtParts[i];\n if (typeof ch == \"object\") {\n fmtParts[i] = \"\";\n if (ch.changeCase && ch.local) {\n var next = fmtParts[i + 1];\n if (next && typeof next == \"string\") {\n if (ch.changeCase == \"u\")\n fmtParts[i] = next[0].toUpperCase();\n else\n fmtParts[i] = next[0].toLowerCase();\n fmtParts[i + 1] = next.substr(1);\n }\n } else if (ch.changeCase) {\n gChangeCase = ch.changeCase;\n }\n } else if (gChangeCase == \"U\") {\n fmtParts[i] = ch.toUpperCase();\n } else if (gChangeCase == \"L\") {\n fmtParts[i] = ch.toLowerCase();\n }\n }\n _self.variables.__ = oldArgs;\n return fmtParts.join(\"\");\n });\n return formatted;\n };\n \n this.tmFormatFunction = function(str, ch, editor) {\n if (ch.formatFunction == \"upcase\")\n return str.toUpperCase();\n if (ch.formatFunction == \"downcase\")\n return str.toLowerCase();\n return str;\n };\n\n this.resolveVariables = function(snippet, editor) {\n var result = [];\n var indentation = \"\";\n var afterNewLine = true;\n for (var i = 0; i < snippet.length; i++) {\n var ch = snippet[i];\n if (typeof ch == \"string\") {\n result.push(ch);\n if (ch == \"\\n\") {\n afterNewLine = true;\n indentation = \"\";\n }\n else if (afterNewLine) {\n indentation = /^\\t*/.exec(ch)[0];\n afterNewLine = /\\S/.test(ch);\n }\n continue;\n }\n if (!ch) continue;\n afterNewLine = false;\n \n if (ch.fmtString) {\n var j = snippet.indexOf(ch, i + 1);\n if (j == -1) j = snippet.length;\n ch.fmt = snippet.slice(i + 1, j);\n i = j;\n }\n \n if (ch.text) {\n var value = this.getVariableValue(editor, ch.text, indentation) + \"\";\n if (ch.fmtString)\n value = this.tmStrFormat(value, ch, editor);\n if (ch.formatFunction)\n value = this.tmFormatFunction(value, ch, editor);\n \n if (value && !ch.ifEnd) {\n result.push(value);\n gotoNext(ch);\n } else if (!value && ch.ifEnd) {\n gotoNext(ch.ifEnd);\n }\n } else if (ch.elseEnd) {\n gotoNext(ch.elseEnd);\n } else if (ch.tabstopId != null) {\n result.push(ch);\n } else if (ch.changeCase != null) {\n result.push(ch);\n }\n }\n function gotoNext(ch) {\n var i1 = snippet.indexOf(ch, i + 1);\n if (i1 != -1)\n i = i1;\n }\n return result;\n };\n\n this.insertSnippetForSelection = function(editor, snippetText) {\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var tabString = editor.session.getTabString();\n var indentString = line.match(/^\\s*/)[0];\n \n if (cursor.column < indentString.length)\n indentString = indentString.slice(0, cursor.column);\n\n snippetText = snippetText.replace(/\\r/g, \"\");\n var tokens = this.tokenizeTmSnippet(snippetText);\n tokens = this.resolveVariables(tokens, editor);\n tokens = tokens.map(function(x) {\n if (x == \"\\n\")\n return x + indentString;\n if (typeof x == \"string\")\n return x.replace(/\\t/g, tabString);\n return x;\n });\n var tabstops = [];\n tokens.forEach(function(p, i) {\n if (typeof p != \"object\")\n return;\n var id = p.tabstopId;\n var ts = tabstops[id];\n if (!ts) {\n ts = tabstops[id] = [];\n ts.index = id;\n ts.value = \"\";\n ts.parents = {};\n }\n if (ts.indexOf(p) !== -1)\n return;\n if (p.choices && !ts.choices)\n ts.choices = p.choices;\n ts.push(p);\n var i1 = tokens.indexOf(p, i + 1);\n if (i1 === -1)\n return;\n\n var value = tokens.slice(i + 1, i1);\n var isNested = value.some(function(t) {return typeof t === \"object\";});\n if (isNested && !ts.value) {\n ts.value = value;\n } else if (value.length && (!ts.value || typeof ts.value !== \"string\")) {\n ts.value = value.join(\"\");\n }\n });\n tabstops.forEach(function(ts) {ts.length = 0;});\n var expanding = {};\n function copyValue(val) {\n var copy = [];\n for (var i = 0; i < val.length; i++) {\n var p = val[i];\n if (typeof p == \"object\") {\n if (expanding[p.tabstopId])\n continue;\n var j = val.lastIndexOf(p, i - 1);\n p = copy[j] || {tabstopId: p.tabstopId};\n }\n copy[i] = p;\n }\n return copy;\n }\n for (var i = 0; i < tokens.length; i++) {\n var p = tokens[i];\n if (typeof p != \"object\")\n continue;\n var id = p.tabstopId;\n var ts = tabstops[id];\n var i1 = tokens.indexOf(p, i + 1);\n if (expanding[id]) {\n if (expanding[id] === p) {\n delete expanding[id];\n Object.keys(expanding).forEach(function(parentId) {\n ts.parents[parentId] = true;\n });\n }\n continue;\n }\n expanding[id] = p;\n var value = ts.value;\n if (typeof value !== \"string\")\n value = copyValue(value);\n else if (p.fmt)\n value = this.tmStrFormat(value, p, editor);\n tokens.splice.apply(tokens, [i + 1, Math.max(0, i1 - i)].concat(value, p));\n\n if (ts.indexOf(p) === -1)\n ts.push(p);\n }\n var row = 0, column = 0;\n var text = \"\";\n tokens.forEach(function(t) {\n if (typeof t === \"string\") {\n var lines = t.split(\"\\n\");\n if (lines.length > 1){\n column = lines[lines.length - 1].length;\n row += lines.length - 1;\n } else\n column += t.length;\n text += t;\n } else if (t) {\n if (!t.start)\n t.start = {row: row, column: column};\n else\n t.end = {row: row, column: column};\n }\n });\n var range = editor.getSelectionRange();\n var end = editor.session.replace(range, text);\n\n var tabstopManager = new TabstopManager(editor);\n var selectionId = editor.inVirtualSelectionMode && editor.selection.index;\n tabstopManager.addTabstops(tabstops, range.start, end, selectionId);\n };\n \n this.insertSnippet = function(editor, snippetText) {\n var self = this;\n if (editor.inVirtualSelectionMode)\n return self.insertSnippetForSelection(editor, snippetText);\n \n editor.forEachSelection(function() {\n self.insertSnippetForSelection(editor, snippetText);\n }, null, {keepOrder: true});\n \n if (editor.tabstopManager)\n editor.tabstopManager.tabNext();\n };\n\n this.$getScope = function(editor) {\n var scope = editor.session.$mode.$id || \"\";\n scope = scope.split(\"/\").pop();\n if (scope === \"html\" || scope === \"php\") {\n if (scope === \"php\" && !editor.session.$mode.inlinePhp) \n scope = \"html\";\n var c = editor.getCursorPosition();\n var state = editor.session.getState(c.row);\n if (typeof state === \"object\") {\n state = state[0];\n }\n if (state.substring) {\n if (state.substring(0, 3) == \"js-\")\n scope = \"javascript\";\n else if (state.substring(0, 4) == \"css-\")\n scope = \"css\";\n else if (state.substring(0, 4) == \"php-\")\n scope = \"php\";\n }\n }\n \n return scope;\n };\n\n this.getActiveScopes = function(editor) {\n var scope = this.$getScope(editor);\n var scopes = [scope];\n var snippetMap = this.snippetMap;\n if (snippetMap[scope] && snippetMap[scope].includeScopes) {\n scopes.push.apply(scopes, snippetMap[scope].includeScopes);\n }\n scopes.push(\"_\");\n return scopes;\n };\n\n this.expandWithTab = function(editor, options) {\n var self = this;\n var result = editor.forEachSelection(function() {\n return self.expandSnippetForSelection(editor, options);\n }, null, {keepOrder: true});\n if (result && editor.tabstopManager)\n editor.tabstopManager.tabNext();\n return result;\n };\n \n this.expandSnippetForSelection = function(editor, options) {\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var before = line.substring(0, cursor.column);\n var after = line.substr(cursor.column);\n\n var snippetMap = this.snippetMap;\n var snippet;\n this.getActiveScopes(editor).some(function(scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = this.findMatchingSnippet(snippets, before, after);\n return !!snippet;\n }, this);\n if (!snippet)\n return false;\n if (options && options.dryRun)\n return true;\n editor.session.doc.removeInLine(cursor.row,\n cursor.column - snippet.replaceBefore.length,\n cursor.column + snippet.replaceAfter.length\n );\n\n this.variables.M__ = snippet.matchBefore;\n this.variables.T__ = snippet.matchAfter;\n this.insertSnippetForSelection(editor, snippet.content);\n\n this.variables.M__ = this.variables.T__ = null;\n return true;\n };\n\n this.findMatchingSnippet = function(snippetList, before, after) {\n for (var i = snippetList.length; i--;) {\n var s = snippetList[i];\n if (s.startRe && !s.startRe.test(before))\n continue;\n if (s.endRe && !s.endRe.test(after))\n continue;\n if (!s.startRe && !s.endRe)\n continue;\n\n s.matchBefore = s.startRe ? s.startRe.exec(before) : [\"\"];\n s.matchAfter = s.endRe ? s.endRe.exec(after) : [\"\"];\n s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : \"\";\n s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : \"\";\n return s;\n }\n };\n\n this.snippetMap = {};\n this.snippetNameMap = {};\n this.register = function(snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n var self = this;\n \n if (!snippets) \n snippets = [];\n \n function wrapRegexp(src) {\n if (src && !/^\\^?\\(.*\\)\\$?$|^\\\\b$/.test(src))\n src = \"(?:\" + src + \")\";\n\n return src || \"\";\n }\n function guardedRegexp(re, guard, opening) {\n re = wrapRegexp(re);\n guard = wrapRegexp(guard);\n if (opening) {\n re = guard + re;\n if (re && re[re.length - 1] != \"$\")\n re = re + \"$\";\n } else {\n re = re + guard;\n if (re && re[0] != \"^\")\n re = \"^\" + re;\n }\n return new RegExp(re);\n }\n\n function addSnippet(s) {\n if (!s.scope)\n s.scope = scope || \"_\";\n scope = s.scope;\n if (!snippetMap[scope]) {\n snippetMap[scope] = [];\n snippetNameMap[scope] = {};\n }\n\n var map = snippetNameMap[scope];\n if (s.name) {\n var old = map[s.name];\n if (old)\n self.unregister(old);\n map[s.name] = s;\n }\n snippetMap[scope].push(s);\n\n if (s.prefix)\n s.tabTrigger = s.prefix;\n\n if (!s.content && s.body)\n s.content = Array.isArray(s.body) ? s.body.join(\"\\n\") : s.body;\n\n if (s.tabTrigger && !s.trigger) {\n if (!s.guard && /^\\w/.test(s.tabTrigger))\n s.guard = \"\\\\b\";\n s.trigger = lang.escapeRegExp(s.tabTrigger);\n }\n \n if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard)\n return;\n \n s.startRe = guardedRegexp(s.trigger, s.guard, true);\n s.triggerRe = new RegExp(s.trigger);\n\n s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true);\n s.endTriggerRe = new RegExp(s.endTrigger);\n }\n\n if (Array.isArray(snippets)) {\n snippets.forEach(addSnippet);\n } else {\n Object.keys(snippets).forEach(function(key) {\n addSnippet(snippets[key]);\n });\n }\n \n this._signal(\"registerSnippets\", {scope: scope});\n };\n this.unregister = function(snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n\n function removeSnippet(s) {\n var nameMap = snippetNameMap[s.scope||scope];\n if (nameMap && nameMap[s.name]) {\n delete nameMap[s.name];\n var map = snippetMap[s.scope||scope];\n var i = map && map.indexOf(s);\n if (i >= 0)\n map.splice(i, 1);\n }\n }\n if (snippets.content)\n removeSnippet(snippets);\n else if (Array.isArray(snippets))\n snippets.forEach(removeSnippet);\n };\n this.parseSnippetFile = function(str) {\n str = str.replace(/\\r/g, \"\");\n var list = [], snippet = {};\n var re = /^#.*|^({[\\s\\S]*})\\s*$|^(\\S+) (.*)$|^((?:\\n*\\t.*)+)/gm;\n var m;\n while (m = re.exec(str)) {\n if (m[1]) {\n try {\n snippet = JSON.parse(m[1]);\n list.push(snippet);\n } catch (e) {}\n } if (m[4]) {\n snippet.content = m[4].replace(/^\\t/gm, \"\");\n list.push(snippet);\n snippet = {};\n } else {\n var key = m[2], val = m[3];\n if (key == \"regex\") {\n var guardRe = /\\/((?:[^\\/\\\\]|\\\\.)*)|$/g;\n snippet.guard = guardRe.exec(val)[1];\n snippet.trigger = guardRe.exec(val)[1];\n snippet.endTrigger = guardRe.exec(val)[1];\n snippet.endGuard = guardRe.exec(val)[1];\n } else if (key == \"snippet\") {\n snippet.tabTrigger = val.match(/^\\S*/)[0];\n if (!snippet.name)\n snippet.name = val;\n } else if (key) {\n snippet[key] = val;\n }\n }\n }\n return list;\n };\n this.getSnippetByName = function(name, editor) {\n var snippetMap = this.snippetNameMap;\n var snippet;\n this.getActiveScopes(editor).some(function(scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = snippets[name];\n return !!snippet;\n }, this);\n return snippet;\n };\n\n}).call(SnippetManager.prototype);\n\n\nvar TabstopManager = function(editor) {\n if (editor.tabstopManager)\n return editor.tabstopManager;\n editor.tabstopManager = this;\n this.$onChange = this.onChange.bind(this);\n this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule;\n this.$onChangeSession = this.onChangeSession.bind(this);\n this.$onAfterExec = this.onAfterExec.bind(this);\n this.attach(editor);\n};\n(function() {\n this.attach = function(editor) {\n this.index = 0;\n this.ranges = [];\n this.tabstops = [];\n this.$openTabstops = null;\n this.selectedTabstop = null;\n\n this.editor = editor;\n this.editor.on(\"change\", this.$onChange);\n this.editor.on(\"changeSelection\", this.$onChangeSelection);\n this.editor.on(\"changeSession\", this.$onChangeSession);\n this.editor.commands.on(\"afterExec\", this.$onAfterExec);\n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n };\n this.detach = function() {\n this.tabstops.forEach(this.removeTabstopMarkers, this);\n this.ranges = null;\n this.tabstops = null;\n this.selectedTabstop = null;\n this.editor.removeListener(\"change\", this.$onChange);\n this.editor.removeListener(\"changeSelection\", this.$onChangeSelection);\n this.editor.removeListener(\"changeSession\", this.$onChangeSession);\n this.editor.commands.removeListener(\"afterExec\", this.$onAfterExec);\n this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);\n this.editor.tabstopManager = null;\n this.editor = null;\n };\n\n this.onChange = function(delta) {\n var isRemove = delta.action[0] == \"r\";\n var selectedTabstop = this.selectedTabstop || {};\n var parents = selectedTabstop.parents || {};\n var tabstops = (this.tabstops || []).slice();\n for (var i = 0; i < tabstops.length; i++) {\n var ts = tabstops[i];\n var active = ts == selectedTabstop || parents[ts.index];\n ts.rangeList.$bias = active ? 0 : 1;\n \n if (delta.action == \"remove\" && ts !== selectedTabstop) {\n var parentActive = ts.parents && ts.parents[selectedTabstop.index];\n var startIndex = ts.rangeList.pointIndex(delta.start, parentActive);\n startIndex = startIndex < 0 ? -startIndex - 1 : startIndex + 1;\n var endIndex = ts.rangeList.pointIndex(delta.end, parentActive);\n endIndex = endIndex < 0 ? -endIndex - 1 : endIndex - 1;\n var toRemove = ts.rangeList.ranges.slice(startIndex, endIndex);\n for (var j = 0; j < toRemove.length; j++)\n this.removeRange(toRemove[j]);\n }\n ts.rangeList.$onChange(delta);\n }\n var session = this.editor.session;\n if (!this.$inChange && isRemove && session.getLength() == 1 && !session.getValue())\n this.detach();\n };\n this.updateLinkedFields = function() {\n var ts = this.selectedTabstop;\n if (!ts || !ts.hasLinkedRanges || !ts.firstNonLinked)\n return;\n this.$inChange = true;\n var session = this.editor.session;\n var text = session.getTextRange(ts.firstNonLinked);\n for (var i = 0; i < ts.length; i++) {\n var range = ts[i];\n if (!range.linked)\n continue;\n var original = range.original;\n var fmt = exports.snippetManager.tmStrFormat(text, original, this.editor);\n session.replace(range, fmt);\n }\n this.$inChange = false;\n };\n this.onAfterExec = function(e) {\n if (e.command && !e.command.readOnly)\n this.updateLinkedFields();\n };\n this.onChangeSelection = function() {\n if (!this.editor)\n return;\n var lead = this.editor.selection.lead;\n var anchor = this.editor.selection.anchor;\n var isEmpty = this.editor.selection.isEmpty();\n for (var i = 0; i < this.ranges.length; i++) {\n if (this.ranges[i].linked)\n continue;\n var containsLead = this.ranges[i].contains(lead.row, lead.column);\n var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column);\n if (containsLead && containsAnchor)\n return;\n }\n this.detach();\n };\n this.onChangeSession = function() {\n this.detach();\n };\n this.tabNext = function(dir) {\n var max = this.tabstops.length;\n var index = this.index + (dir || 1);\n index = Math.min(Math.max(index, 1), max);\n if (index == max)\n index = 0;\n this.selectTabstop(index);\n if (index === 0)\n this.detach();\n };\n this.selectTabstop = function(index) {\n this.$openTabstops = null;\n var ts = this.tabstops[this.index];\n if (ts)\n this.addTabstopMarkers(ts);\n this.index = index;\n ts = this.tabstops[this.index];\n if (!ts || !ts.length)\n return;\n \n this.selectedTabstop = ts;\n var range = ts.firstNonLinked || ts;\n if (ts.choices) range.cursor = range.start;\n if (!this.editor.inVirtualSelectionMode) {\n var sel = this.editor.multiSelect;\n sel.toSingleRange(range);\n for (var i = 0; i < ts.length; i++) {\n if (ts.hasLinkedRanges && ts[i].linked)\n continue;\n sel.addRange(ts[i].clone(), true);\n }\n } else {\n this.editor.selection.fromOrientedRange(range);\n }\n \n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n if (this.selectedTabstop && this.selectedTabstop.choices)\n this.editor.execCommand(\"startAutocomplete\", {matches: this.selectedTabstop.choices});\n };\n this.addTabstops = function(tabstops, start, end) {\n var useLink = this.useLink || !this.editor.getOption(\"enableMultiselect\");\n \n if (!this.$openTabstops)\n this.$openTabstops = [];\n if (!tabstops[0]) {\n var p = Range.fromPoints(end, end);\n moveRelative(p.start, start);\n moveRelative(p.end, start);\n tabstops[0] = [p];\n tabstops[0].index = 0;\n }\n\n var i = this.index;\n var arg = [i + 1, 0];\n var ranges = this.ranges;\n tabstops.forEach(function(ts, index) {\n var dest = this.$openTabstops[index] || ts;\n \n for (var i = 0; i < ts.length; i++) {\n var p = ts[i];\n var range = Range.fromPoints(p.start, p.end || p.start);\n movePoint(range.start, start);\n movePoint(range.end, start);\n range.original = p;\n range.tabstop = dest;\n ranges.push(range);\n if (dest != ts)\n dest.unshift(range);\n else\n dest[i] = range;\n if (p.fmtString || (dest.firstNonLinked && useLink)) {\n range.linked = true;\n dest.hasLinkedRanges = true;\n } else if (!dest.firstNonLinked)\n dest.firstNonLinked = range;\n }\n if (!dest.firstNonLinked)\n dest.hasLinkedRanges = false;\n if (dest === ts) {\n arg.push(dest);\n this.$openTabstops[index] = dest;\n }\n this.addTabstopMarkers(dest);\n dest.rangeList = dest.rangeList || new RangeList();\n dest.rangeList.$bias = 0;\n dest.rangeList.addList(dest);\n }, this);\n \n if (arg.length > 2) {\n if (this.tabstops.length)\n arg.push(arg.splice(2, 1)[0]);\n this.tabstops.splice.apply(this.tabstops, arg);\n }\n };\n\n this.addTabstopMarkers = function(ts) {\n var session = this.editor.session;\n ts.forEach(function(range) {\n if (!range.markerId)\n range.markerId = session.addMarker(range, \"ace_snippet-marker\", \"text\");\n });\n };\n this.removeTabstopMarkers = function(ts) {\n var session = this.editor.session;\n ts.forEach(function(range) {\n session.removeMarker(range.markerId);\n range.markerId = null;\n });\n };\n this.removeRange = function(range) {\n var i = range.tabstop.indexOf(range);\n if (i != -1) range.tabstop.splice(i, 1);\n i = this.ranges.indexOf(range);\n if (i != -1) this.ranges.splice(i, 1);\n i = range.tabstop.rangeList.ranges.indexOf(range);\n if (i != -1) range.tabstop.splice(i, 1);\n this.editor.session.removeMarker(range.markerId);\n if (!range.tabstop.length) {\n i = this.tabstops.indexOf(range.tabstop);\n if (i != -1)\n this.tabstops.splice(i, 1);\n if (!this.tabstops.length)\n this.detach();\n }\n };\n\n this.keyboardHandler = new HashHandler();\n this.keyboardHandler.bindKeys({\n \"Tab\": function(editor) {\n if (exports.snippetManager && exports.snippetManager.expandWithTab(editor))\n return;\n editor.tabstopManager.tabNext(1);\n editor.renderer.scrollCursorIntoView();\n },\n \"Shift-Tab\": function(editor) {\n editor.tabstopManager.tabNext(-1);\n editor.renderer.scrollCursorIntoView();\n },\n \"Esc\": function(editor) {\n editor.tabstopManager.detach();\n }\n });\n}).call(TabstopManager.prototype);\n\n\n\nvar movePoint = function(point, diff) {\n if (point.row == 0)\n point.column += diff.column;\n point.row += diff.row;\n};\n\nvar moveRelative = function(point, start) {\n if (point.row == start.row)\n point.column -= start.column;\n point.row -= start.row;\n};\n\n\ndom.importCssString(\"\\\n.ace_snippet-marker {\\\n -moz-box-sizing: border-box;\\\n box-sizing: border-box;\\\n background: rgba(194, 193, 208, 0.09);\\\n border: 1px dotted rgba(211, 208, 235, 0.62);\\\n position: absolute;\\\n}\", \"snippets.css\", false);\n\nexports.snippetManager = new SnippetManager();\n\n\nvar Editor = require(\"./editor\").Editor;\n(function() {\n this.insertSnippet = function(content, options) {\n return exports.snippetManager.insertSnippet(this, content, options);\n };\n this.expandSnippet = function(options) {\n return exports.snippetManager.expandWithTab(this, options);\n };\n}).call(Editor.prototype);\n\n});\n\nace.define(\"ace/autocomplete/popup\",[\"require\",\"exports\",\"module\",\"ace/virtual_renderer\",\"ace/editor\",\"ace/range\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar Renderer = require(\"../virtual_renderer\").VirtualRenderer;\nvar Editor = require(\"../editor\").Editor;\nvar Range = require(\"../range\").Range;\nvar event = require(\"../lib/event\");\nvar lang = require(\"../lib/lang\");\nvar dom = require(\"../lib/dom\");\n\nvar $singleLineEditor = function(el) {\n var renderer = new Renderer(el);\n\n renderer.$maxLines = 4;\n\n var editor = new Editor(renderer);\n\n editor.setHighlightActiveLine(false);\n editor.setShowPrintMargin(false);\n editor.renderer.setShowGutter(false);\n editor.renderer.setHighlightGutterLine(false);\n\n editor.$mouseHandler.$focusTimeout = 0;\n editor.$highlightTagPending = true;\n\n return editor;\n};\n\nvar AcePopup = function(parentNode) {\n var el = dom.createElement(\"div\");\n var popup = new $singleLineEditor(el);\n\n if (parentNode)\n parentNode.appendChild(el);\n el.style.display = \"none\";\n popup.renderer.content.style.cursor = \"default\";\n popup.renderer.setStyle(\"ace_autocomplete\");\n\n popup.setOption(\"displayIndentGuides\", false);\n popup.setOption(\"dragDelay\", 150);\n\n var noop = function(){};\n\n popup.focus = noop;\n popup.$isFocused = true;\n\n popup.renderer.$cursorLayer.restartTimer = noop;\n popup.renderer.$cursorLayer.element.style.opacity = 0;\n\n popup.renderer.$maxLines = 8;\n popup.renderer.$keepTextAreaAtCursor = false;\n\n popup.setHighlightActiveLine(false);\n popup.session.highlight(\"\");\n popup.session.$searchHighlight.clazz = \"ace_highlight-marker\";\n\n popup.on(\"mousedown\", function(e) {\n var pos = e.getDocumentPosition();\n popup.selection.moveToPosition(pos);\n selectionMarker.start.row = selectionMarker.end.row = pos.row;\n e.stop();\n });\n\n var lastMouseEvent;\n var hoverMarker = new Range(-1,0,-1,Infinity);\n var selectionMarker = new Range(-1,0,-1,Infinity);\n selectionMarker.id = popup.session.addMarker(selectionMarker, \"ace_active-line\", \"fullLine\");\n popup.setSelectOnHover = function(val) {\n if (!val) {\n hoverMarker.id = popup.session.addMarker(hoverMarker, \"ace_line-hover\", \"fullLine\");\n } else if (hoverMarker.id) {\n popup.session.removeMarker(hoverMarker.id);\n hoverMarker.id = null;\n }\n };\n popup.setSelectOnHover(false);\n popup.on(\"mousemove\", function(e) {\n if (!lastMouseEvent) {\n lastMouseEvent = e;\n return;\n }\n if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) {\n return;\n }\n lastMouseEvent = e;\n lastMouseEvent.scrollTop = popup.renderer.scrollTop;\n var row = lastMouseEvent.getDocumentPosition().row;\n if (hoverMarker.start.row != row) {\n if (!hoverMarker.id)\n popup.setRow(row);\n setHoverMarker(row);\n }\n });\n popup.renderer.on(\"beforeRender\", function() {\n if (lastMouseEvent && hoverMarker.start.row != -1) {\n lastMouseEvent.$pos = null;\n var row = lastMouseEvent.getDocumentPosition().row;\n if (!hoverMarker.id)\n popup.setRow(row);\n setHoverMarker(row, true);\n }\n });\n popup.renderer.on(\"afterRender\", function() {\n var row = popup.getRow();\n var t = popup.renderer.$textLayer;\n var selected = t.element.childNodes[row - t.config.firstRow];\n if (selected !== t.selectedNode && t.selectedNode)\n dom.removeCssClass(t.selectedNode, \"ace_selected\");\n t.selectedNode = selected;\n if (selected)\n dom.addCssClass(selected, \"ace_selected\");\n });\n var hideHoverMarker = function() { setHoverMarker(-1); };\n var setHoverMarker = function(row, suppressRedraw) {\n if (row !== hoverMarker.start.row) {\n hoverMarker.start.row = hoverMarker.end.row = row;\n if (!suppressRedraw)\n popup.session._emit(\"changeBackMarker\");\n popup._emit(\"changeHoverMarker\");\n }\n };\n popup.getHoveredRow = function() {\n return hoverMarker.start.row;\n };\n\n event.addListener(popup.container, \"mouseout\", hideHoverMarker);\n popup.on(\"hide\", hideHoverMarker);\n popup.on(\"changeSelection\", hideHoverMarker);\n\n popup.session.doc.getLength = function() {\n return popup.data.length;\n };\n popup.session.doc.getLine = function(i) {\n var data = popup.data[i];\n if (typeof data == \"string\")\n return data;\n return (data && data.value) || \"\";\n };\n\n var bgTokenizer = popup.session.bgTokenizer;\n bgTokenizer.$tokenizeRow = function(row) {\n var data = popup.data[row];\n var tokens = [];\n if (!data)\n return tokens;\n if (typeof data == \"string\")\n data = {value: data};\n var caption = data.caption || data.value || data.name;\n\n function addToken(value, className) {\n value && tokens.push({\n type: (data.className || \"\") + (className || \"\"), \n value: value\n });\n }\n \n var lower = caption.toLowerCase();\n var filterText = (popup.filterText || \"\").toLowerCase();\n var lastIndex = 0;\n var lastI = 0;\n for (var i = 0; i <= filterText.length; i++) {\n if (i != lastI && (data.matchMask & (1 << i) || i == filterText.length)) {\n var sub = filterText.slice(lastI, i);\n lastI = i;\n var index = lower.indexOf(sub, lastIndex);\n if (index == -1) continue;\n addToken(caption.slice(lastIndex, index), \"\");\n lastIndex = index + sub.length;\n addToken(caption.slice(index, lastIndex), \"completion-highlight\");\n }\n }\n addToken(caption.slice(lastIndex, caption.length), \"\");\n \n if (data.meta)\n tokens.push({type: \"completion-meta\", value: data.meta});\n if (data.message)\n tokens.push({type: \"completion-message\", value: data.message});\n\n return tokens;\n };\n bgTokenizer.$updateOnChange = noop;\n bgTokenizer.start = noop;\n\n popup.session.$computeWidth = function() {\n return this.screenWidth = 0;\n };\n popup.isOpen = false;\n popup.isTopdown = false;\n popup.autoSelect = true;\n popup.filterText = \"\";\n\n popup.data = [];\n popup.setData = function(list, filterText) {\n popup.filterText = filterText || \"\";\n popup.setValue(lang.stringRepeat(\"\\n\", list.length), -1);\n popup.data = list || [];\n popup.setRow(0);\n };\n popup.getData = function(row) {\n return popup.data[row];\n };\n\n popup.getRow = function() {\n return selectionMarker.start.row;\n };\n popup.setRow = function(line) {\n line = Math.max(this.autoSelect ? 0 : -1, Math.min(this.data.length, line));\n if (selectionMarker.start.row != line) {\n popup.selection.clearSelection();\n selectionMarker.start.row = selectionMarker.end.row = line || 0;\n popup.session._emit(\"changeBackMarker\");\n popup.moveCursorTo(line || 0, 0);\n if (popup.isOpen)\n popup._signal(\"select\");\n }\n };\n\n popup.on(\"changeSelection\", function() {\n if (popup.isOpen)\n popup.setRow(popup.selection.lead.row);\n popup.renderer.scrollCursorIntoView();\n });\n\n popup.hide = function() {\n this.container.style.display = \"none\";\n this._signal(\"hide\");\n popup.isOpen = false;\n };\n popup.show = function(pos, lineHeight, topdownOnly) {\n var el = this.container;\n var screenHeight = window.innerHeight;\n var screenWidth = window.innerWidth;\n var renderer = this.renderer;\n var maxH = renderer.$maxLines * lineHeight * 1.4;\n var top = pos.top + this.$borderSize;\n var allowTopdown = top > screenHeight / 2 && !topdownOnly;\n if (allowTopdown && top + lineHeight + maxH > screenHeight) {\n renderer.$maxPixelHeight = top - 2 * this.$borderSize;\n el.style.top = \"\";\n el.style.bottom = screenHeight - top + \"px\";\n popup.isTopdown = false;\n } else {\n top += lineHeight;\n renderer.$maxPixelHeight = screenHeight - top - 0.2 * lineHeight;\n el.style.top = top + \"px\";\n el.style.bottom = \"\";\n popup.isTopdown = true;\n }\n\n el.style.display = \"\";\n\n var left = pos.left;\n if (left + el.offsetWidth > screenWidth)\n left = screenWidth - el.offsetWidth;\n\n el.style.left = left + \"px\";\n\n this._signal(\"show\");\n lastMouseEvent = null;\n popup.isOpen = true;\n };\n\n popup.goTo = function(where) {\n var row = this.getRow();\n var max = this.session.getLength() - 1;\n\n switch(where) {\n case \"up\": row = row <= 0 ? max : row - 1; break;\n case \"down\": row = row >= max ? -1 : row + 1; break;\n case \"start\": row = 0; break;\n case \"end\": row = max; break;\n }\n\n this.setRow(row);\n };\n\n\n popup.getTextLeftOffset = function() {\n return this.$borderSize + this.renderer.$padding + this.$imageSize;\n };\n\n popup.$imageSize = 0;\n popup.$borderSize = 1;\n\n return popup;\n};\n\ndom.importCssString(\"\\\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\\\n background-color: #CAD6FA;\\\n z-index: 1;\\\n}\\\n.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\\\n background-color: #3a674e;\\\n}\\\n.ace_editor.ace_autocomplete .ace_line-hover {\\\n border: 1px solid #abbffe;\\\n margin-top: -1px;\\\n background: rgba(233,233,253,0.4);\\\n position: absolute;\\\n z-index: 2;\\\n}\\\n.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\\\n border: 1px solid rgba(109, 150, 13, 0.8);\\\n background: rgba(58, 103, 78, 0.62);\\\n}\\\n.ace_completion-meta {\\\n opacity: 0.5;\\\n margin: 0.9em;\\\n}\\\n.ace_completion-message {\\\n color: blue;\\\n}\\\n.ace_editor.ace_autocomplete .ace_completion-highlight{\\\n color: #2d69c7;\\\n}\\\n.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\\\n color: #93ca12;\\\n}\\\n.ace_editor.ace_autocomplete {\\\n width: 300px;\\\n z-index: 200000;\\\n border: 1px lightgray solid;\\\n position: fixed;\\\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\\n line-height: 1.4;\\\n background: #fefefe;\\\n color: #111;\\\n}\\\n.ace_dark.ace_editor.ace_autocomplete {\\\n border: 1px #484747 solid;\\\n box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\\\n line-height: 1.4;\\\n background: #25282c;\\\n color: #c1c1c1;\\\n}\", \"autocompletion.css\", false);\n\nexports.AcePopup = AcePopup;\nexports.$singleLineEditor = $singleLineEditor;\n});\n\nace.define(\"ace/autocomplete/util\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nexports.parForEach = function(array, fn, callback) {\n var completed = 0;\n var arLength = array.length;\n if (arLength === 0)\n callback();\n for (var i = 0; i < arLength; i++) {\n fn(array[i], function(result, err) {\n completed++;\n if (completed === arLength)\n callback(result, err);\n });\n }\n};\n\nvar ID_REGEX = /[a-zA-Z_0-9\\$\\-\\u00A2-\\u2000\\u2070-\\uFFFF]/;\n\nexports.retrievePrecedingIdentifier = function(text, pos, regex) {\n regex = regex || ID_REGEX;\n var buf = [];\n for (var i = pos-1; i >= 0; i--) {\n if (regex.test(text[i]))\n buf.push(text[i]);\n else\n break;\n }\n return buf.reverse().join(\"\");\n};\n\nexports.retrieveFollowingIdentifier = function(text, pos, regex) {\n regex = regex || ID_REGEX;\n var buf = [];\n for (var i = pos; i < text.length; i++) {\n if (regex.test(text[i]))\n buf.push(text[i]);\n else\n break;\n }\n return buf;\n};\n\nexports.getCompletionPrefix = function (editor) {\n var pos = editor.getCursorPosition();\n var line = editor.session.getLine(pos.row);\n var prefix;\n editor.completers.forEach(function(completer) {\n if (completer.identifierRegexps) {\n completer.identifierRegexps.forEach(function(identifierRegex) {\n if (!prefix && identifierRegex)\n prefix = this.retrievePrecedingIdentifier(line, pos.column, identifierRegex);\n }.bind(this));\n }\n }.bind(this));\n return prefix || this.retrievePrecedingIdentifier(line, pos.column);\n};\n\n});\n\nace.define(\"ace/autocomplete\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\",\"ace/autocomplete/popup\",\"ace/autocomplete/util\",\"ace/lib/lang\",\"ace/lib/dom\",\"ace/snippets\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar HashHandler = require(\"./keyboard/hash_handler\").HashHandler;\nvar AcePopup = require(\"./autocomplete/popup\").AcePopup;\nvar util = require(\"./autocomplete/util\");\nvar lang = require(\"./lib/lang\");\nvar dom = require(\"./lib/dom\");\nvar snippetManager = require(\"./snippets\").snippetManager;\nvar config = require(\"./config\");\n\nvar Autocomplete = function() {\n this.autoInsert = false;\n this.autoSelect = true;\n this.exactMatch = false;\n this.gatherCompletionsId = 0;\n this.keyboardHandler = new HashHandler();\n this.keyboardHandler.bindKeys(this.commands);\n\n this.blurListener = this.blurListener.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.mousedownListener = this.mousedownListener.bind(this);\n this.mousewheelListener = this.mousewheelListener.bind(this);\n\n this.changeTimer = lang.delayedCall(function() {\n this.updateCompletions(true);\n }.bind(this));\n\n this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50);\n};\n\n(function() {\n\n this.$init = function() {\n this.popup = new AcePopup(document.body || document.documentElement);\n this.popup.on(\"click\", function(e) {\n this.insertMatch();\n e.stop();\n }.bind(this));\n this.popup.focus = this.editor.focus.bind(this.editor);\n this.popup.on(\"show\", this.tooltipTimer.bind(null, null));\n this.popup.on(\"select\", this.tooltipTimer.bind(null, null));\n this.popup.on(\"changeHoverMarker\", this.tooltipTimer.bind(null, null));\n return this.popup;\n };\n\n this.getPopup = function() {\n return this.popup || this.$init();\n };\n\n this.openPopup = function(editor, prefix, keepPopupPosition) {\n if (!this.popup)\n this.$init();\n\n this.popup.autoSelect = this.autoSelect;\n\n this.popup.setData(this.completions.filtered, this.completions.filterText);\n\n editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n \n var renderer = editor.renderer;\n this.popup.setRow(this.autoSelect ? 0 : -1);\n if (!keepPopupPosition) {\n this.popup.setTheme(editor.getTheme());\n this.popup.setFontSize(editor.getFontSize());\n\n var lineHeight = renderer.layerConfig.lineHeight;\n\n var pos = renderer.$cursorLayer.getPixelPosition(this.base, true);\n pos.left -= this.popup.getTextLeftOffset();\n\n var rect = editor.container.getBoundingClientRect();\n pos.top += rect.top - renderer.layerConfig.offset;\n pos.left += rect.left - editor.renderer.scrollLeft;\n pos.left += renderer.gutterWidth;\n\n this.popup.show(pos, lineHeight);\n } else if (keepPopupPosition && !prefix) {\n this.detach();\n }\n this.changeTimer.cancel();\n };\n\n this.detach = function() {\n this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);\n this.editor.off(\"changeSelection\", this.changeListener);\n this.editor.off(\"blur\", this.blurListener);\n this.editor.off(\"mousedown\", this.mousedownListener);\n this.editor.off(\"mousewheel\", this.mousewheelListener);\n this.changeTimer.cancel();\n this.hideDocTooltip();\n\n this.gatherCompletionsId += 1;\n if (this.popup && this.popup.isOpen)\n this.popup.hide();\n\n if (this.base)\n this.base.detach();\n this.activated = false;\n this.completions = this.base = null;\n };\n\n this.changeListener = function(e) {\n var cursor = this.editor.selection.lead;\n if (cursor.row != this.base.row || cursor.column < this.base.column) {\n this.detach();\n }\n if (this.activated)\n this.changeTimer.schedule();\n else\n this.detach();\n };\n\n this.blurListener = function(e) {\n var el = document.activeElement;\n var text = this.editor.textInput.getElement();\n var fromTooltip = e.relatedTarget && this.tooltipNode && this.tooltipNode.contains(e.relatedTarget);\n var container = this.popup && this.popup.container;\n if (el != text && el.parentNode != container && !fromTooltip\n && el != this.tooltipNode && e.relatedTarget != text\n ) {\n this.detach();\n }\n };\n\n this.mousedownListener = function(e) {\n this.detach();\n };\n\n this.mousewheelListener = function(e) {\n this.detach();\n };\n\n this.goTo = function(where) {\n this.popup.goTo(where);\n };\n\n this.insertMatch = function(data, options) {\n if (!data)\n data = this.popup.getData(this.popup.getRow());\n if (!data)\n return false;\n\n var completions = this.completions;\n this.editor.startOperation({command: {name: \"insertMatch\"}});\n if (data.completer && data.completer.insertMatch) {\n data.completer.insertMatch(this.editor, data);\n } else {\n if (completions.filterText) {\n var ranges = this.editor.selection.getAllRanges();\n for (var i = 0, range; range = ranges[i]; i++) {\n range.start.column -= completions.filterText.length;\n this.editor.session.remove(range);\n }\n }\n if (data.snippet)\n snippetManager.insertSnippet(this.editor, data.snippet);\n else\n this.editor.execCommand(\"insertstring\", data.value || data);\n }\n if (this.completions == completions)\n this.detach();\n this.editor.endOperation();\n };\n\n\n this.commands = {\n \"Up\": function(editor) { editor.completer.goTo(\"up\"); },\n \"Down\": function(editor) { editor.completer.goTo(\"down\"); },\n \"Ctrl-Up|Ctrl-Home\": function(editor) { editor.completer.goTo(\"start\"); },\n \"Ctrl-Down|Ctrl-End\": function(editor) { editor.completer.goTo(\"end\"); },\n\n \"Esc\": function(editor) { editor.completer.detach(); },\n \"Return\": function(editor) { return editor.completer.insertMatch(); },\n \"Shift-Return\": function(editor) { editor.completer.insertMatch(null, {deleteSuffix: true}); },\n \"Tab\": function(editor) {\n var result = editor.completer.insertMatch();\n if (!result && !editor.tabstopManager)\n editor.completer.goTo(\"down\");\n else\n return result;\n },\n\n \"PageUp\": function(editor) { editor.completer.popup.gotoPageUp(); },\n \"PageDown\": function(editor) { editor.completer.popup.gotoPageDown(); }\n };\n\n this.gatherCompletions = function(editor, callback) {\n var session = editor.getSession();\n var pos = editor.getCursorPosition();\n\n var prefix = util.getCompletionPrefix(editor);\n\n this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length);\n this.base.$insertRight = true;\n\n var matches = [];\n var total = editor.completers.length;\n editor.completers.forEach(function(completer, i) {\n completer.getCompletions(editor, session, pos, prefix, function(err, results) {\n if (!err && results)\n matches = matches.concat(results);\n callback(null, {\n prefix: util.getCompletionPrefix(editor),\n matches: matches,\n finished: (--total === 0)\n });\n });\n });\n return true;\n };\n\n this.showPopup = function(editor, options) {\n if (this.editor)\n this.detach();\n\n this.activated = true;\n\n this.editor = editor;\n if (editor.completer != this) {\n if (editor.completer)\n editor.completer.detach();\n editor.completer = this;\n }\n\n editor.on(\"changeSelection\", this.changeListener);\n editor.on(\"blur\", this.blurListener);\n editor.on(\"mousedown\", this.mousedownListener);\n editor.on(\"mousewheel\", this.mousewheelListener);\n\n this.updateCompletions(false, options);\n };\n\n this.updateCompletions = function(keepPopupPosition, options) {\n if (keepPopupPosition && this.base && this.completions) {\n var pos = this.editor.getCursorPosition();\n var prefix = this.editor.session.getTextRange({start: this.base, end: pos});\n if (prefix == this.completions.filterText)\n return;\n this.completions.setFilter(prefix);\n if (!this.completions.filtered.length)\n return this.detach();\n if (this.completions.filtered.length == 1\n && this.completions.filtered[0].value == prefix\n && !this.completions.filtered[0].snippet)\n return this.detach();\n this.openPopup(this.editor, prefix, keepPopupPosition);\n return;\n }\n \n if (options && options.matches) {\n var pos = this.editor.getSelectionRange().start;\n this.base = this.editor.session.doc.createAnchor(pos.row, pos.column);\n this.base.$insertRight = true;\n this.completions = new FilteredList(options.matches);\n return this.openPopup(this.editor, \"\", keepPopupPosition);\n }\n var _id = this.gatherCompletionsId;\n var detachIfFinished = function(results) {\n if (!results.finished) return;\n return this.detach();\n }.bind(this);\n\n var processResults = function(results) {\n var prefix = results.prefix;\n var matches = results.matches;\n\n this.completions = new FilteredList(matches);\n\n if (this.exactMatch)\n this.completions.exactMatch = true;\n\n this.completions.setFilter(prefix);\n var filtered = this.completions.filtered;\n if (!filtered.length)\n return detachIfFinished(results);\n if (filtered.length == 1 && filtered[0].value == prefix && !filtered[0].snippet)\n return detachIfFinished(results);\n if (this.autoInsert && filtered.length == 1 && results.finished)\n return this.insertMatch(filtered[0]);\n\n this.openPopup(this.editor, prefix, keepPopupPosition);\n }.bind(this);\n\n var isImmediate = true;\n var immediateResults = null;\n this.gatherCompletions(this.editor, function(err, results) {\n var prefix = results.prefix;\n var matches = results && results.matches;\n\n if (!matches || !matches.length)\n return detachIfFinished(results);\n if (prefix.indexOf(results.prefix) !== 0 || _id != this.gatherCompletionsId)\n return;\n if (isImmediate) {\n immediateResults = results;\n return;\n }\n\n processResults(results);\n }.bind(this));\n \n isImmediate = false;\n if (immediateResults) {\n var results = immediateResults;\n immediateResults = null;\n processResults(results);\n }\n };\n\n this.cancelContextMenu = function() {\n this.editor.$mouseHandler.cancelContextMenu();\n };\n\n this.updateDocTooltip = function() {\n var popup = this.popup;\n var all = popup.data;\n var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]);\n var doc = null;\n if (!selected || !this.editor || !this.popup.isOpen)\n return this.hideDocTooltip();\n this.editor.completers.some(function(completer) {\n if (completer.getDocTooltip)\n doc = completer.getDocTooltip(selected);\n return doc;\n });\n if (!doc && typeof selected != \"string\")\n doc = selected;\n\n if (typeof doc == \"string\")\n doc = {docText: doc};\n if (!doc || !(doc.docHTML || doc.docText))\n return this.hideDocTooltip();\n this.showDocTooltip(doc);\n };\n\n this.showDocTooltip = function(item) {\n if (!this.tooltipNode) {\n this.tooltipNode = dom.createElement(\"div\");\n this.tooltipNode.className = \"ace_tooltip ace_doc-tooltip\";\n this.tooltipNode.style.margin = 0;\n this.tooltipNode.style.pointerEvents = \"auto\";\n this.tooltipNode.tabIndex = -1;\n this.tooltipNode.onblur = this.blurListener.bind(this);\n this.tooltipNode.onclick = this.onTooltipClick.bind(this);\n }\n\n var tooltipNode = this.tooltipNode;\n if (item.docHTML) {\n tooltipNode.innerHTML = item.docHTML;\n } else if (item.docText) {\n tooltipNode.textContent = item.docText;\n }\n\n if (!tooltipNode.parentNode)\n document.body.appendChild(tooltipNode);\n var popup = this.popup;\n var rect = popup.container.getBoundingClientRect();\n tooltipNode.style.top = popup.container.style.top;\n tooltipNode.style.bottom = popup.container.style.bottom;\n\n tooltipNode.style.display = \"block\";\n if (window.innerWidth - rect.right < 320) {\n if (rect.left < 320) {\n if(popup.isTopdown) {\n tooltipNode.style.top = rect.bottom + \"px\";\n tooltipNode.style.left = rect.left + \"px\";\n tooltipNode.style.right = \"\";\n tooltipNode.style.bottom = \"\";\n } else {\n tooltipNode.style.top = popup.container.offsetTop - tooltipNode.offsetHeight + \"px\";\n tooltipNode.style.left = rect.left + \"px\";\n tooltipNode.style.right = \"\";\n tooltipNode.style.bottom = \"\";\n }\n } else {\n tooltipNode.style.right = window.innerWidth - rect.left + \"px\";\n tooltipNode.style.left = \"\";\n }\n } else {\n tooltipNode.style.left = (rect.right + 1) + \"px\";\n tooltipNode.style.right = \"\";\n }\n };\n\n this.hideDocTooltip = function() {\n this.tooltipTimer.cancel();\n if (!this.tooltipNode) return;\n var el = this.tooltipNode;\n if (!this.editor.isFocused() && document.activeElement == el)\n this.editor.focus();\n this.tooltipNode = null;\n if (el.parentNode)\n el.parentNode.removeChild(el);\n };\n \n this.onTooltipClick = function(e) {\n var a = e.target;\n while (a && a != this.tooltipNode) {\n if (a.nodeName == \"A\" && a.href) {\n a.rel = \"noreferrer\";\n a.target = \"_blank\";\n break;\n }\n a = a.parentNode;\n }\n };\n\n this.destroy = function() {\n this.detach();\n if (this.popup) {\n this.popup.destroy();\n var el = this.popup.container;\n if (el && el.parentNode)\n el.parentNode.removeChild(el);\n }\n if (this.editor && this.editor.completer == this)\n this.editor.completer == null;\n this.popup = null;\n };\n\n}).call(Autocomplete.prototype);\n\n\nAutocomplete.for = function(editor) {\n if (editor.completer) {\n return editor.completer;\n }\n if (config.get(\"sharedPopups\")) {\n if (!Autocomplete.$shared)\n Autocomplete.$sharedInstance = new Autocomplete();\n editor.completer = Autocomplete.$sharedInstance;\n } else {\n editor.completer = new Autocomplete();\n editor.once(\"destroy\", function(e, editor) {\n editor.completer.destroy();\n });\n }\n return editor.completer;\n};\n\nAutocomplete.startCommand = {\n name: \"startAutocomplete\",\n exec: function(editor, options) {\n var completer = Autocomplete.for(editor);\n completer.autoInsert = false;\n completer.autoSelect = true;\n completer.showPopup(editor, options);\n completer.cancelContextMenu();\n },\n bindKey: \"Ctrl-Space|Ctrl-Shift-Space|Alt-Space\"\n};\n\nvar FilteredList = function(array, filterText) {\n this.all = array;\n this.filtered = array;\n this.filterText = filterText || \"\";\n this.exactMatch = false;\n};\n(function(){\n this.setFilter = function(str) {\n if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0)\n var matches = this.filtered;\n else\n var matches = this.all;\n\n this.filterText = str;\n matches = this.filterCompletions(matches, this.filterText);\n matches = matches.sort(function(a, b) {\n return b.exactMatch - a.exactMatch || b.$score - a.$score \n || (a.caption || a.value).localeCompare(b.caption || b.value);\n });\n var prev = null;\n matches = matches.filter(function(item){\n var caption = item.snippet || item.caption || item.value;\n if (caption === prev) return false;\n prev = caption;\n return true;\n });\n\n this.filtered = matches;\n };\n this.filterCompletions = function(items, needle) {\n var results = [];\n var upper = needle.toUpperCase();\n var lower = needle.toLowerCase();\n loop: for (var i = 0, item; item = items[i]; i++) {\n var caption = item.caption || item.value || item.snippet;\n if (!caption) continue;\n var lastIndex = -1;\n var matchMask = 0;\n var penalty = 0;\n var index, distance;\n\n if (this.exactMatch) {\n if (needle !== caption.substr(0, needle.length))\n continue loop;\n } else {\n var fullMatchIndex = caption.toLowerCase().indexOf(lower);\n if (fullMatchIndex > -1) {\n penalty = fullMatchIndex;\n } else {\n for (var j = 0; j < needle.length; j++) {\n var i1 = caption.indexOf(lower[j], lastIndex + 1);\n var i2 = caption.indexOf(upper[j], lastIndex + 1);\n index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2;\n if (index < 0)\n continue loop;\n distance = index - lastIndex - 1;\n if (distance > 0) {\n if (lastIndex === -1)\n penalty += 10;\n penalty += distance;\n matchMask = matchMask | (1 << j);\n }\n lastIndex = index;\n }\n }\n }\n item.matchMask = matchMask;\n item.exactMatch = penalty ? 0 : 1;\n item.$score = (item.score || 0) - penalty;\n results.push(item);\n }\n return results;\n };\n}).call(FilteredList.prototype);\n\nexports.Autocomplete = Autocomplete;\nexports.FilteredList = FilteredList;\n\n});\n\nace.define(\"ace/autocomplete/text_completer\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n var Range = require(\"../range\").Range;\n \n var splitRegex = /[^a-zA-Z_0-9\\$\\-\\u00C0-\\u1FFF\\u2C00-\\uD7FF\\w]+/;\n\n function getWordIndex(doc, pos) {\n var textBefore = doc.getTextRange(Range.fromPoints({row: 0, column:0}, pos));\n return textBefore.split(splitRegex).length - 1;\n }\n function wordDistance(doc, pos) {\n var prefixPos = getWordIndex(doc, pos);\n var words = doc.getValue().split(splitRegex);\n var wordScores = Object.create(null);\n \n var currentWord = words[prefixPos];\n\n words.forEach(function(word, idx) {\n if (!word || word === currentWord) return;\n\n var distance = Math.abs(prefixPos - idx);\n var score = words.length - distance;\n if (wordScores[word]) {\n wordScores[word] = Math.max(score, wordScores[word]);\n } else {\n wordScores[word] = score;\n }\n });\n return wordScores;\n }\n\n exports.getCompletions = function(editor, session, pos, prefix, callback) {\n var wordScore = wordDistance(session, pos);\n var wordList = Object.keys(wordScore);\n callback(null, wordList.map(function(word) {\n return {\n caption: word,\n value: word,\n score: wordScore[word],\n meta: \"local\"\n };\n }));\n };\n});\n\nace.define(\"ace/ext/language_tools\",[\"require\",\"exports\",\"module\",\"ace/snippets\",\"ace/autocomplete\",\"ace/config\",\"ace/lib/lang\",\"ace/autocomplete/util\",\"ace/autocomplete/text_completer\",\"ace/editor\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar snippetManager = require(\"../snippets\").snippetManager;\nvar Autocomplete = require(\"../autocomplete\").Autocomplete;\nvar config = require(\"../config\");\nvar lang = require(\"../lib/lang\");\nvar util = require(\"../autocomplete/util\");\n\nvar textCompleter = require(\"../autocomplete/text_completer\");\nvar keyWordCompleter = {\n getCompletions: function(editor, session, pos, prefix, callback) {\n if (session.$mode.completer) {\n return session.$mode.completer.getCompletions(editor, session, pos, prefix, callback);\n }\n var state = editor.session.getState(pos.row);\n var completions = session.$mode.getCompletions(state, session, pos, prefix);\n callback(null, completions);\n }\n};\n\nvar snippetCompleter = {\n getCompletions: function(editor, session, pos, prefix, callback) {\n var scopes = [];\n var token = session.getTokenAt(pos.row, pos.column);\n if (token && token.type.match(/(tag-name|tag-open|tag-whitespace|attribute-name|attribute-value)\\.xml$/))\n scopes.push('html-tag');\n else\n scopes = snippetManager.getActiveScopes(editor);\n\n var snippetMap = snippetManager.snippetMap;\n var completions = [];\n scopes.forEach(function(scope) {\n var snippets = snippetMap[scope] || [];\n for (var i = snippets.length; i--;) {\n var s = snippets[i];\n var caption = s.name || s.tabTrigger;\n if (!caption)\n continue;\n completions.push({\n caption: caption,\n snippet: s.content,\n meta: s.tabTrigger && !s.name ? s.tabTrigger + \"\\u21E5 \" : \"snippet\",\n type: \"snippet\"\n });\n }\n }, this);\n callback(null, completions);\n },\n getDocTooltip: function(item) {\n if (item.type == \"snippet\" && !item.docHTML) {\n item.docHTML = [\n \"\", lang.escapeHTML(item.caption), \" \", \" \",\n lang.escapeHTML(item.snippet)\n ].join(\"\");\n }\n }\n};\n\nvar completers = [snippetCompleter, textCompleter, keyWordCompleter];\nexports.setCompleters = function(val) {\n completers.length = 0;\n if (val) completers.push.apply(completers, val);\n};\nexports.addCompleter = function(completer) {\n completers.push(completer);\n};\nexports.textCompleter = textCompleter;\nexports.keyWordCompleter = keyWordCompleter;\nexports.snippetCompleter = snippetCompleter;\n\nvar expandSnippet = {\n name: \"expandSnippet\",\n exec: function(editor) {\n return snippetManager.expandWithTab(editor);\n },\n bindKey: \"Tab\"\n};\n\nvar onChangeMode = function(e, editor) {\n loadSnippetsForMode(editor.session.$mode);\n};\n\nvar loadSnippetsForMode = function(mode) {\n if (typeof mode == \"string\")\n mode = config.$modes[mode];\n if (!mode)\n return;\n if (!snippetManager.files)\n snippetManager.files = {};\n \n loadSnippetFile(mode.$id, mode.snippetFileId);\n if (mode.modes)\n mode.modes.forEach(loadSnippetsForMode);\n};\n\nvar loadSnippetFile = function(id, snippetFilePath) {\n if (!snippetFilePath || !id || snippetManager.files[id])\n return;\n snippetManager.files[id] = {};\n config.loadModule(snippetFilePath, function(m) {\n if (!m) return;\n snippetManager.files[id] = m;\n if (!m.snippets && m.snippetText)\n m.snippets = snippetManager.parseSnippetFile(m.snippetText);\n snippetManager.register(m.snippets || [], m.scope);\n if (m.includeScopes) {\n snippetManager.snippetMap[m.scope].includeScopes = m.includeScopes;\n m.includeScopes.forEach(function(x) {\n loadSnippetsForMode(\"ace/mode/\" + x);\n });\n }\n });\n};\n\nvar doLiveAutocomplete = function(e) {\n var editor = e.editor;\n var hasCompleter = editor.completer && editor.completer.activated;\n if (e.command.name === \"backspace\") {\n if (hasCompleter && !util.getCompletionPrefix(editor))\n editor.completer.detach();\n }\n else if (e.command.name === \"insertstring\") {\n var prefix = util.getCompletionPrefix(editor);\n if (prefix && !hasCompleter) {\n var completer = Autocomplete.for(editor);\n completer.autoInsert = false;\n completer.showPopup(editor);\n }\n }\n};\n\nvar Editor = require(\"../editor\").Editor;\nrequire(\"../config\").defineOptions(Editor.prototype, \"editor\", {\n enableBasicAutocompletion: {\n set: function(val) {\n if (val) {\n if (!this.completers)\n this.completers = Array.isArray(val)? val: completers;\n this.commands.addCommand(Autocomplete.startCommand);\n } else {\n this.commands.removeCommand(Autocomplete.startCommand);\n }\n },\n value: false\n },\n enableLiveAutocompletion: {\n set: function(val) {\n if (val) {\n if (!this.completers)\n this.completers = Array.isArray(val)? val: completers;\n this.commands.on('afterExec', doLiveAutocomplete);\n } else {\n this.commands.removeListener('afterExec', doLiveAutocomplete);\n }\n },\n value: false\n },\n enableSnippets: {\n set: function(val) {\n if (val) {\n this.commands.addCommand(expandSnippet);\n this.on(\"changeMode\", onChangeMode);\n onChangeMode(null, this);\n } else {\n this.commands.removeCommand(expandSnippet);\n this.off(\"changeMode\", onChangeMode);\n }\n },\n value: false\n }\n});\n}); (function() {\n ace.require([\"ace/ext/language_tools\"], function(m) {\n if ( true && module) {\n module.exports = m;\n }\n });\n })();\n \n\n//# sourceURL=webpack:///../node_modules/ace-builds/src-noconflict/ext-language_tools.js?");
+
+/***/ }),
+
+/***/ "../node_modules/ace-builds/src-noconflict/ext-split.js":
+/*!**************************************************************!*\
+ !*** ../node_modules/ace-builds/src-noconflict/ext-split.js ***!
+ \**************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("/* module decorator */ module = __webpack_require__.nmd(module);\nace.define(\"ace/split\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/editor\",\"ace/virtual_renderer\",\"ace/edit_session\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\n\nvar Editor = require(\"./editor\").Editor;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nvar EditSession = require(\"./edit_session\").EditSession;\n\n\nvar Split = function(container, theme, splits) {\n this.BELOW = 1;\n this.BESIDE = 0;\n\n this.$container = container;\n this.$theme = theme;\n this.$splits = 0;\n this.$editorCSS = \"\";\n this.$editors = [];\n this.$orientation = this.BESIDE;\n\n this.setSplits(splits || 1);\n this.$cEditor = this.$editors[0];\n\n\n this.on(\"focus\", function(editor) {\n this.$cEditor = editor;\n }.bind(this));\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createEditor = function() {\n var el = document.createElement(\"div\");\n el.className = this.$editorCSS;\n el.style.cssText = \"position: absolute; top:0px; bottom:0px\";\n this.$container.appendChild(el);\n var editor = new Editor(new Renderer(el, this.$theme));\n\n editor.on(\"focus\", function() {\n this._emit(\"focus\", editor);\n }.bind(this));\n\n this.$editors.push(editor);\n editor.setFontSize(this.$fontSize);\n return editor;\n };\n\n this.setSplits = function(splits) {\n var editor;\n if (splits < 1) {\n throw \"The number of splits have to be > 0!\";\n }\n\n if (splits == this.$splits) {\n return;\n } else if (splits > this.$splits) {\n while (this.$splits < this.$editors.length && this.$splits < splits) {\n editor = this.$editors[this.$splits];\n this.$container.appendChild(editor.container);\n editor.setFontSize(this.$fontSize);\n this.$splits ++;\n }\n while (this.$splits < splits) {\n this.$createEditor();\n this.$splits ++;\n }\n } else {\n while (this.$splits > splits) {\n editor = this.$editors[this.$splits - 1];\n this.$container.removeChild(editor.container);\n this.$splits --;\n }\n }\n this.resize();\n };\n this.getSplits = function() {\n return this.$splits;\n };\n this.getEditor = function(idx) {\n return this.$editors[idx];\n };\n this.getCurrentEditor = function() {\n return this.$cEditor;\n };\n this.focus = function() {\n this.$cEditor.focus();\n };\n this.blur = function() {\n this.$cEditor.blur();\n };\n this.setTheme = function(theme) {\n this.$editors.forEach(function(editor) {\n editor.setTheme(theme);\n });\n };\n this.setKeyboardHandler = function(keybinding) {\n this.$editors.forEach(function(editor) {\n editor.setKeyboardHandler(keybinding);\n });\n };\n this.forEach = function(callback, scope) {\n this.$editors.forEach(callback, scope);\n };\n\n\n this.$fontSize = \"\";\n this.setFontSize = function(size) {\n this.$fontSize = size;\n this.forEach(function(editor) {\n editor.setFontSize(size);\n });\n };\n\n this.$cloneSession = function(session) {\n var s = new EditSession(session.getDocument(), session.getMode());\n\n var undoManager = session.getUndoManager();\n s.setUndoManager(undoManager);\n s.setTabSize(session.getTabSize());\n s.setUseSoftTabs(session.getUseSoftTabs());\n s.setOverwrite(session.getOverwrite());\n s.setBreakpoints(session.getBreakpoints());\n s.setUseWrapMode(session.getUseWrapMode());\n s.setUseWorker(session.getUseWorker());\n s.setWrapLimitRange(session.$wrapLimitRange.min,\n session.$wrapLimitRange.max);\n s.$foldData = session.$cloneFoldData();\n\n return s;\n };\n this.setSession = function(session, idx) {\n var editor;\n if (idx == null) {\n editor = this.$cEditor;\n } else {\n editor = this.$editors[idx];\n }\n var isUsed = this.$editors.some(function(editor) {\n return editor.session === session;\n });\n\n if (isUsed) {\n session = this.$cloneSession(session);\n }\n editor.setSession(session);\n return session;\n };\n this.getOrientation = function() {\n return this.$orientation;\n };\n this.setOrientation = function(orientation) {\n if (this.$orientation == orientation) {\n return;\n }\n this.$orientation = orientation;\n this.resize();\n };\n this.resize = function() {\n var width = this.$container.clientWidth;\n var height = this.$container.clientHeight;\n var editor;\n\n if (this.$orientation == this.BESIDE) {\n var editorWidth = width / this.$splits;\n for (var i = 0; i < this.$splits; i++) {\n editor = this.$editors[i];\n editor.container.style.width = editorWidth + \"px\";\n editor.container.style.top = \"0px\";\n editor.container.style.left = i * editorWidth + \"px\";\n editor.container.style.height = height + \"px\";\n editor.resize();\n }\n } else {\n var editorHeight = height / this.$splits;\n for (var i = 0; i < this.$splits; i++) {\n editor = this.$editors[i];\n editor.container.style.width = width + \"px\";\n editor.container.style.top = i * editorHeight + \"px\";\n editor.container.style.left = \"0px\";\n editor.container.style.height = editorHeight + \"px\";\n editor.resize();\n }\n }\n };\n\n}).call(Split.prototype);\n\nexports.Split = Split;\n});\n\nace.define(\"ace/ext/split\",[\"require\",\"exports\",\"module\",\"ace/split\"], function(require, exports, module) {\n\"use strict\";\nmodule.exports = require(\"../split\");\n\n}); (function() {\n ace.require([\"ace/ext/split\"], function(m) {\n if ( true && module) {\n module.exports = m;\n }\n });\n })();\n \n\n//# sourceURL=webpack:///../node_modules/ace-builds/src-noconflict/ext-split.js?");
+
+/***/ }),
+
+/***/ "../node_modules/ace-builds/src-noconflict/mode-javascript.js":
+/*!********************************************************************!*\
+ !*** ../node_modules/ace-builds/src-noconflict/mode-javascript.js ***!
+ \********************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("/* module decorator */ module = __webpack_require__.nmd(module);\nace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/,\n next : \"start\"\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"?\" + tagRegex + \"\",\n next: \"jsxAttributes\",\n nextState: \"jsx\"\n };\n this.$rules.start.unshift(jsxTag);\n var jsxJsRule = {\n regex: \"{\",\n token: \"paren.quasi.start\",\n push: \"start\"\n };\n this.$rules.jsx = [\n jsxJsRule,\n jsxTag,\n {include : \"reference\"},\n {defaultToken: \"string\"}\n ];\n this.$rules.jsxAttributes = [{\n token : \"meta.tag.punctuation.tag-close.xml\",\n regex : \"/?>\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:[0-9]+;)|(?:[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/javascript_worker\", \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n this.snippetFileId = \"ace/snippets/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n}); (function() {\n ace.require([\"ace/mode/javascript\"], function(m) {\n if ( true && module) {\n module.exports = m;\n }\n });\n })();\n \n\n//# sourceURL=webpack:///../node_modules/ace-builds/src-noconflict/mode-javascript.js?");
+
+/***/ }),
+
+/***/ "../node_modules/ace-builds/src-noconflict/snippets/javascript.js":
+/*!************************************************************************!*\
+ !*** ../node_modules/ace-builds/src-noconflict/snippets/javascript.js ***!
+ \************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("/* module decorator */ module = __webpack_require__.nmd(module);\nace.define(\"ace/snippets/javascript\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nexports.snippetText = \"# Prototype\\n\\\nsnippet proto\\n\\\n\t${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) {\\n\\\n\t\t${4:// body...}\\n\\\n\t};\\n\\\n# Function\\n\\\nsnippet fun\\n\\\n\tfunction ${1?:function_name}(${2:argument}) {\\n\\\n\t\t${3:// body...}\\n\\\n\t}\\n\\\n# Anonymous Function\\n\\\nregex /((=)\\\\s*|(:)\\\\s*|(\\\\()|\\\\b)/f/(\\\\))?/\\n\\\nsnippet f\\n\\\n\tfunction${M1?: ${1:functionName}}($2) {\\n\\\n\t\t${0:$TM_SELECTED_TEXT}\\n\\\n\t}${M2?;}${M3?,}${M4?)}\\n\\\n# Immediate function\\n\\\ntrigger \\\\(?f\\\\(\\n\\\nendTrigger \\\\)?\\n\\\nsnippet f(\\n\\\n\t(function(${1}) {\\n\\\n\t\t${0:${TM_SELECTED_TEXT:/* code */}}\\n\\\n\t}(${1}));\\n\\\n# if\\n\\\nsnippet if\\n\\\n\tif (${1:true}) {\\n\\\n\t\t${0}\\n\\\n\t}\\n\\\n# if ... else\\n\\\nsnippet ife\\n\\\n\tif (${1:true}) {\\n\\\n\t\t${2}\\n\\\n\t} else {\\n\\\n\t\t${0}\\n\\\n\t}\\n\\\n# tertiary conditional\\n\\\nsnippet ter\\n\\\n\t${1:/* condition */} ? ${2:a} : ${3:b}\\n\\\n# switch\\n\\\nsnippet switch\\n\\\n\tswitch (${1:expression}) {\\n\\\n\t\tcase '${3:case}':\\n\\\n\t\t\t${4:// code}\\n\\\n\t\t\tbreak;\\n\\\n\t\t${5}\\n\\\n\t\tdefault:\\n\\\n\t\t\t${2:// code}\\n\\\n\t}\\n\\\n# case\\n\\\nsnippet case\\n\\\n\tcase '${1:case}':\\n\\\n\t\t${2:// code}\\n\\\n\t\tbreak;\\n\\\n\t${3}\\n\\\n\\n\\\n# while (...) {...}\\n\\\nsnippet wh\\n\\\n\twhile (${1:/* condition */}) {\\n\\\n\t\t${0:/* code */}\\n\\\n\t}\\n\\\n# try\\n\\\nsnippet try\\n\\\n\ttry {\\n\\\n\t\t${0:/* code */}\\n\\\n\t} catch (e) {}\\n\\\n# do...while\\n\\\nsnippet do\\n\\\n\tdo {\\n\\\n\t\t${2:/* code */}\\n\\\n\t} while (${1:/* condition */});\\n\\\n# Object Method\\n\\\nsnippet :f\\n\\\nregex /([,{[])|^\\\\s*/:f/\\n\\\n\t${1:method_name}: function(${2:attribute}) {\\n\\\n\t\t${0}\\n\\\n\t}${3:,}\\n\\\n# setTimeout function\\n\\\nsnippet setTimeout\\n\\\nregex /\\\\b/st|timeout|setTimeo?u?t?/\\n\\\n\tsetTimeout(function() {${3:$TM_SELECTED_TEXT}}, ${1:10});\\n\\\n# Get Elements\\n\\\nsnippet gett\\n\\\n\tgetElementsBy${1:TagName}('${2}')${3}\\n\\\n# Get Element\\n\\\nsnippet get\\n\\\n\tgetElementBy${1:Id}('${2}')${3}\\n\\\n# console.log (Firebug)\\n\\\nsnippet cl\\n\\\n\tconsole.log(${1});\\n\\\n# return\\n\\\nsnippet ret\\n\\\n\treturn ${1:result}\\n\\\n# for (property in object ) { ... }\\n\\\nsnippet fori\\n\\\n\tfor (var ${1:prop} in ${2:Things}) {\\n\\\n\t\t${0:$2[$1]}\\n\\\n\t}\\n\\\n# hasOwnProperty\\n\\\nsnippet has\\n\\\n\thasOwnProperty(${1})\\n\\\n# docstring\\n\\\nsnippet /**\\n\\\n\t/**\\n\\\n\t * ${1:description}\\n\\\n\t *\\n\\\n\t */\\n\\\nsnippet @par\\n\\\nregex /^\\\\s*\\\\*\\\\s*/@(para?m?)?/\\n\\\n\t@param {${1:type}} ${2:name} ${3:description}\\n\\\nsnippet @ret\\n\\\n\t@return {${1:type}} ${2:description}\\n\\\n# JSON.parse\\n\\\nsnippet jsonp\\n\\\n\tJSON.parse(${1:jstr});\\n\\\n# JSON.stringify\\n\\\nsnippet jsons\\n\\\n\tJSON.stringify(${1:object});\\n\\\n# self-defining function\\n\\\nsnippet sdf\\n\\\n\tvar ${1:function_name} = function(${2:argument}) {\\n\\\n\t\t${3:// initial code ...}\\n\\\n\\n\\\n\t\t$1 = function($2) {\\n\\\n\t\t\t${4:// main code}\\n\\\n\t\t};\\n\\\n\t}\\n\\\n# singleton\\n\\\nsnippet sing\\n\\\n\tfunction ${1:Singleton} (${2:argument}) {\\n\\\n\t\t// the cached instance\\n\\\n\t\tvar instance;\\n\\\n\\n\\\n\t\t// rewrite the constructor\\n\\\n\t\t$1 = function $1($2) {\\n\\\n\t\t\treturn instance;\\n\\\n\t\t};\\n\\\n\t\t\\n\\\n\t\t// carry over the prototype properties\\n\\\n\t\t$1.prototype = this;\\n\\\n\\n\\\n\t\t// the instance\\n\\\n\t\tinstance = new $1();\\n\\\n\\n\\\n\t\t// reset the constructor pointer\\n\\\n\t\tinstance.constructor = $1;\\n\\\n\\n\\\n\t\t${3:// code ...}\\n\\\n\\n\\\n\t\treturn instance;\\n\\\n\t}\\n\\\n# class\\n\\\nsnippet class\\n\\\nregex /^\\\\s*/clas{0,2}/\\n\\\n\tvar ${1:class} = function(${20}) {\\n\\\n\t\t$40$0\\n\\\n\t};\\n\\\n\t\\n\\\n\t(function() {\\n\\\n\t\t${60:this.prop = \\\"\\\"}\\n\\\n\t}).call(${1:class}.prototype);\\n\\\n\t\\n\\\n\texports.${1:class} = ${1:class};\\n\\\n# \\n\\\nsnippet for-\\n\\\n\tfor (var ${1:i} = ${2:Things}.length; ${1:i}--; ) {\\n\\\n\t\t${0:${2:Things}[${1:i}];}\\n\\\n\t}\\n\\\n# for (...) {...}\\n\\\nsnippet for\\n\\\n\tfor (var ${1:i} = 0; $1 < ${2:Things}.length; $1++) {\\n\\\n\t\t${3:$2[$1]}$0\\n\\\n\t}\\n\\\n# for (...) {...} (Improved Native For-Loop)\\n\\\nsnippet forr\\n\\\n\tfor (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1--) {\\n\\\n\t\t${3:$2[$1]}$0\\n\\\n\t}\\n\\\n\\n\\\n\\n\\\n#modules\\n\\\nsnippet def\\n\\\n\tdefine(function(require, exports, module) {\\n\\\n\t\\\"use strict\\\";\\n\\\n\tvar ${1/.*\\\\///} = require(\\\"${1}\\\");\\n\\\n\t\\n\\\n\t$TM_SELECTED_TEXT\\n\\\n\t});\\n\\\nsnippet req\\n\\\nguard ^\\\\s*\\n\\\n\tvar ${1/.*\\\\///} = require(\\\"${1}\\\");\\n\\\n\t$0\\n\\\nsnippet requ\\n\\\nguard ^\\\\s*\\n\\\n\tvar ${1/.*\\\\/(.)/\\\\u$1/} = require(\\\"${1}\\\").${1/.*\\\\/(.)/\\\\u$1/};\\n\\\n\t$0\\n\\\n\";\nexports.scope = \"javascript\";\n\n}); (function() {\n ace.require([\"ace/snippets/javascript\"], function(m) {\n if ( true && module) {\n module.exports = m;\n }\n });\n })();\n \n\n//# sourceURL=webpack:///../node_modules/ace-builds/src-noconflict/snippets/javascript.js?");
+
+/***/ }),
+
+/***/ "../node_modules/ace-builds/src-noconflict/theme-solarized_dark.js":
+/*!*************************************************************************!*\
+ !*** ../node_modules/ace-builds/src-noconflict/theme-solarized_dark.js ***!
+ \*************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("/* module decorator */ module = __webpack_require__.nmd(module);\nace.define(\"ace/theme/solarized_dark\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexports.isDark = true;\nexports.cssClass = \"ace-solarized-dark\";\nexports.cssText = \".ace-solarized-dark .ace_gutter {\\\nbackground: #01313f;\\\ncolor: #d0edf7\\\n}\\\n.ace-solarized-dark .ace_print-margin {\\\nwidth: 1px;\\\nbackground: #33555E\\\n}\\\n.ace-solarized-dark {\\\nbackground-color: #002B36;\\\ncolor: #93A1A1\\\n}\\\n.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name,\\\n.ace-solarized-dark .ace_storage {\\\ncolor: #93A1A1\\\n}\\\n.ace-solarized-dark .ace_cursor,\\\n.ace-solarized-dark .ace_string.ace_regexp {\\\ncolor: #D30102\\\n}\\\n.ace-solarized-dark .ace_marker-layer .ace_active-line,\\\n.ace-solarized-dark .ace_marker-layer .ace_selection {\\\nbackground: rgba(255, 255, 255, 0.1)\\\n}\\\n.ace-solarized-dark.ace_multiselect .ace_selection.ace_start {\\\nbox-shadow: 0 0 3px 0px #002B36;\\\n}\\\n.ace-solarized-dark .ace_marker-layer .ace_step {\\\nbackground: rgb(102, 82, 0)\\\n}\\\n.ace-solarized-dark .ace_marker-layer .ace_bracket {\\\nmargin: -1px 0 0 -1px;\\\nborder: 1px solid rgba(147, 161, 161, 0.50)\\\n}\\\n.ace-solarized-dark .ace_gutter-active-line {\\\nbackground-color: #0d3440\\\n}\\\n.ace-solarized-dark .ace_marker-layer .ace_selected-word {\\\nborder: 1px solid #073642\\\n}\\\n.ace-solarized-dark .ace_invisible {\\\ncolor: rgba(147, 161, 161, 0.50)\\\n}\\\n.ace-solarized-dark .ace_keyword,\\\n.ace-solarized-dark .ace_meta,\\\n.ace-solarized-dark .ace_support.ace_class,\\\n.ace-solarized-dark .ace_support.ace_type {\\\ncolor: #859900\\\n}\\\n.ace-solarized-dark .ace_constant.ace_character,\\\n.ace-solarized-dark .ace_constant.ace_other {\\\ncolor: #CB4B16\\\n}\\\n.ace-solarized-dark .ace_constant.ace_language {\\\ncolor: #B58900\\\n}\\\n.ace-solarized-dark .ace_constant.ace_numeric {\\\ncolor: #D33682\\\n}\\\n.ace-solarized-dark .ace_fold {\\\nbackground-color: #268BD2;\\\nborder-color: #93A1A1\\\n}\\\n.ace-solarized-dark .ace_entity.ace_name.ace_function,\\\n.ace-solarized-dark .ace_entity.ace_name.ace_tag,\\\n.ace-solarized-dark .ace_support.ace_function,\\\n.ace-solarized-dark .ace_variable,\\\n.ace-solarized-dark .ace_variable.ace_language {\\\ncolor: #268BD2\\\n}\\\n.ace-solarized-dark .ace_string {\\\ncolor: #2AA198\\\n}\\\n.ace-solarized-dark .ace_comment {\\\nfont-style: italic;\\\ncolor: #657B83\\\n}\\\n.ace-solarized-dark .ace_indent-guide {\\\nbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db1ZVCxc/sPAAd4AlUHlLenAAAAAElFTkSuQmCC) right repeat-y\\\n}\";\n\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n}); (function() {\n ace.require([\"ace/theme/solarized_dark\"], function(m) {\n if ( true && module) {\n module.exports = m;\n }\n });\n })();\n \n\n//# sourceURL=webpack:///../node_modules/ace-builds/src-noconflict/theme-solarized_dark.js?");
+
+/***/ }),
+
+/***/ "./components/Autocomplete/Autocomplete.example.js":
+/*!*********************************************************!*\
+ !*** ./components/Autocomplete/Autocomplete.example.js ***!
+ \*********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Autocomplete_Autocomplete_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Autocomplete/Autocomplete.react */ \"./components/Autocomplete/Autocomplete.react.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_Autocomplete_Autocomplete_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n\nvar AutocompleteDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(AutocompleteDemo, _React$Component);\n\n var _super = _createSuper(AutocompleteDemo);\n\n function AutocompleteDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, AutocompleteDemo);\n\n _this = _super.call(this);\n _this.state = {\n suggestions: ['aaa', 'abc', 'xxx', 'xyz']\n };\n\n _this.onSubmit = function (input) {\n return console.log('onSubmit: ' + input);\n };\n\n _this.onUserInput = function (input) {\n console.log(\"input: \".concat(input));\n };\n\n _this.buildLabel = function (input) {\n return input.length > 0 ? \"You've typed \".concat(input.length, \" characters\") : 'Start typing';\n };\n\n _this.buildSuggestions = function (input) {\n return _this.state.suggestions.filter(function (s) {\n return s.startsWith(input);\n });\n };\n\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(AutocompleteDemo, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Autocomplete_Autocomplete_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n inputStyle: {\n width: '400px',\n padding: '0 6px',\n margin: '10px 20px'\n },\n suggestionsStyle: {\n margin: '-6px 0px 0px 20px',\n width: '400px'\n },\n locked: true,\n onChange: this.onUserInput,\n onSubmit: this.onSubmit,\n placeholder: 'Placeholder',\n buildSuggestions: this.buildSuggestions,\n buildLabel: this.buildLabel\n });\n }\n }]);\n\n return AutocompleteDemo;\n}(react__WEBPACK_IMPORTED_MODULE_5__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(AutocompleteDemo, null));\n }\n}];\n\n//# sourceURL=webpack:///./components/Autocomplete/Autocomplete.example.js?");
+
+/***/ }),
+
+/***/ "./components/Autocomplete/Autocomplete.react.js":
+/*!*******************************************************!*\
+ !*** ./components/Autocomplete/Autocomplete.react.js ***!
+ \*******************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Autocomplete)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! prop-types */ \"../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var components_Autocomplete_Autocomplete_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! components/Autocomplete/Autocomplete.scss */ \"./components/Autocomplete/Autocomplete.scss\");\n/* harmony import */ var components_SuggestionsList_SuggestionsList_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! components/SuggestionsList/SuggestionsList.react */ \"./components/SuggestionsList/SuggestionsList.react.js\");\n\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\nvar Autocomplete = /*#__PURE__*/function (_Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Autocomplete, _Component);\n\n var _super = _createSuper(Autocomplete);\n\n function Autocomplete(props) {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Autocomplete);\n\n _this = _super.call(this, props);\n _this.setHidden = _this.setHidden.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_this));\n _this.activate = _this.activate.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_this));\n _this.deactivate = _this.deactivate.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_this));\n _this.onFocus = _this.onFocus.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_this));\n _this.onBlur = _this.onBlur.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_this));\n _this.onClick = _this.onClick.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_this));\n _this.onChange = _this.onChange.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_this));\n _this.onKeyDown = _this.onKeyDown.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_this));\n _this.onInputClick = _this.onInputClick.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_this));\n _this.onExternalClick = _this.onExternalClick.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_this));\n _this.getPosition = _this.getPosition.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_this));\n _this.recalculatePosition = _this.recalculatePosition.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_this));\n _this.inputRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createRef(null);\n _this.dropdownRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createRef(null);\n\n _this.handleScroll = function () {\n var pos = _this.getPosition();\n\n _this.dropdownRef.current.setPosition(pos);\n };\n\n _this.handleResize = function () {\n var pos = _this.getPosition();\n\n _this.dropdownRef.current.setPosition(pos);\n };\n\n _this.state = {\n activeSuggestion: 0,\n filteredSuggestions: [],\n showSuggestions: false,\n userInput: '',\n label: props.label,\n position: null\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Autocomplete, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n window.addEventListener('resize', this.handleResize);\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_9__.findDOMNode(this);\n this.node.addEventListener('scroll', this.handleScroll);\n this.recalculatePosition();\n this._ignoreBlur = false;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.node.removeEventListener('scroll', this.handleScroll);\n window.removeEventListener('resize', this.handleResize);\n }\n }, {\n key: \"getPosition\",\n value: function getPosition() {\n var newPosition = this.props.fixed ? lib_Position__WEBPACK_IMPORTED_MODULE_6__[\"default\"].inWindow(this.node) : lib_Position__WEBPACK_IMPORTED_MODULE_6__[\"default\"].inDocument(this.node);\n newPosition.y += this.node.offsetHeight;\n return newPosition;\n }\n }, {\n key: \"recalculatePosition\",\n value: function recalculatePosition() {\n var _this2 = this;\n\n var position = this.getPosition(); // update position of dropdown w/o rerendering this whole component\n\n this.dropdownRef.current ? this.dropdownRef.current.setPosition(position) : this.setState({\n position: position\n }, function () {\n return _this2.forceUpdate();\n });\n }\n }, {\n key: \"getSuggestions\",\n value: function getSuggestions(userInput) {\n var _this$props = this.props,\n suggestions = _this$props.suggestions,\n buildSuggestions = _this$props.buildSuggestions; // either rely on external logic to recalculate suggestioons,\n // or just filter by input\n\n var filteredSuggestions = buildSuggestions ? buildSuggestions(userInput) : suggestions.filter(function (suggestion) {\n return suggestion.toLowerCase().indexOf(userInput.toLowerCase()) > -1;\n });\n return filteredSuggestions;\n }\n }, {\n key: \"getLabel\",\n value: function getLabel(userInput) {\n return this.props.label || this.props.buildLabel(userInput);\n }\n }, {\n key: \"onChange\",\n value: function onChange(e) {\n var userInput = e.currentTarget && e.currentTarget.value;\n var filteredSuggestions = this.getSuggestions(userInput);\n var label = this.getLabel(userInput);\n this.setState({\n active: true,\n activeSuggestion: 0,\n filteredSuggestions: filteredSuggestions,\n showSuggestions: true,\n userInput: userInput,\n label: label,\n error: undefined\n });\n this.props.onChange && this.props.onChange(userInput);\n }\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var _this3 = this;\n\n var userInput = e.currentTarget.innerText;\n var label = this.props.label || this.props.buildLabel(userInput);\n this.inputRef.current.focus();\n this._ignoreBlur = false;\n this.setState({\n activeSuggestion: 0,\n filteredSuggestions: [],\n showSuggestions: false,\n userInput: userInput,\n label: label\n }, function () {\n _this3.props.onClick && _this3.props.onClick(e);\n });\n }\n }, {\n key: \"onFocus\",\n value: function onFocus(e) {\n if (!this._ignoreBlur && !this.state.showSuggestions) {\n this._ignoreBlur = true;\n }\n\n this.activate(e);\n }\n }, {\n key: \"onBlur\",\n value: function onBlur(e) {\n this.props.onBlur && this.props.onBlur(e);\n }\n }, {\n key: \"onExternalClick\",\n value: function onExternalClick(e) {\n if (this._ignoreBlur) {\n // because events flow in order: onFocus:input -> onClick:popover -> onClick:input\n // need to ignore the click that initially focuses the input field\n // otherwise it will hide the dropdown instantly.\n // _ignoreBlur will be unset in input click handler right after.\n return;\n }\n\n if (e.target.id !== this.inputRef.current.id) {\n this.deactivate();\n }\n }\n }, {\n key: \"onInputClick\",\n value: function onInputClick() {\n this._ignoreBlur = false;\n }\n }, {\n key: \"activate\",\n value: function activate(e) {\n var _this4 = this;\n\n var userInput = e.currentTarget && e.currentTarget.value;\n var position = this.getPosition();\n var filteredSuggestions = this.getSuggestions(userInput);\n var label = this.getLabel(userInput);\n this.setState({\n active: true,\n filteredSuggestions: filteredSuggestions,\n position: position,\n label: label,\n showSuggestions: true\n }, function () {\n _this4.props.onFocus && _this4.props.onFocus();\n });\n }\n }, {\n key: \"deactivate\",\n value: function deactivate() {\n var _this5 = this;\n\n this.setState({\n active: false,\n showSuggestions: false,\n activeSuggestion: 0\n }, function () {\n _this5.props.onBlur && _this5.props.onBlur();\n });\n }\n }, {\n key: \"resetInput\",\n value: function resetInput() {\n var _this6 = this;\n\n this.setState({\n active: false,\n activeSuggestion: 0,\n showSuggestions: false,\n userInput: ''\n }, function () {\n _this6.inputRef.current.blur();\n });\n }\n }, {\n key: \"onKeyDown\",\n value: function onKeyDown(e) {\n var _this$state = this.state,\n activeSuggestion = _this$state.activeSuggestion,\n filteredSuggestions = _this$state.filteredSuggestions; // Enter\n\n var userInput = this.state.userInput;\n\n if (e.keyCode === 13) {\n if (userInput && userInput.length > 0) {\n this.props.onSubmit(userInput);\n }\n } else if (e.keyCode === 9) {\n // Tab\n // do not type it\n e.preventDefault();\n e.stopPropagation(); // move focus to input\n\n this.inputRef.current.focus();\n this.setState({\n active: true,\n activeSuggestion: 0,\n showSuggestions: false,\n userInput: filteredSuggestions[activeSuggestion]\n });\n } else if (e.keyCode === 38) {\n // arrow up\n if (activeSuggestion === 0) {\n return;\n }\n\n this.setState({\n active: false,\n activeSuggestion: activeSuggestion - 1\n });\n } else if (e.keyCode === 40) {\n // arrow down\n if (activeSuggestion - 1 === filteredSuggestions.length) {\n return;\n }\n\n this.setState({\n active: false,\n activeSuggestion: activeSuggestion + 1\n });\n }\n }\n }, {\n key: \"setHidden\",\n value: function setHidden(hidden) {\n this.setState({\n hidden: hidden\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var onExternalClick = this.onExternalClick,\n onInputClick = this.onInputClick,\n onChange = this.onChange,\n onClick = this.onClick,\n onBlur = this.onBlur,\n onFocus = this.onFocus,\n onKeyDown = this.onKeyDown,\n _this$props2 = this.props,\n suggestionsStyle = _this$props2.suggestionsStyle,\n inputStyle = _this$props2.inputStyle,\n placeholder = _this$props2.placeholder,\n error = _this$props2.error,\n _this$state2 = this.state,\n activeSuggestion = _this$state2.activeSuggestion,\n filteredSuggestions = _this$state2.filteredSuggestions,\n showSuggestions = _this$state2.showSuggestions,\n userInput = _this$state2.userInput,\n hidden = _this$state2.hidden,\n active = _this$state2.active,\n label = _this$state2.label;\n var fieldClassName = [components_Autocomplete_Autocomplete_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].field, active && components_Autocomplete_Autocomplete_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].active, error ? components_Autocomplete_Autocomplete_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].error : undefined, showSuggestions && !hidden && filteredSuggestions.length && components_Autocomplete_Autocomplete_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].dropdown].join(' ');\n var inputClasses = [error && components_Autocomplete_Autocomplete_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].error].join(' ');\n var suggestionsListComponent;\n\n if (showSuggestions && !hidden && filteredSuggestions.length) {\n suggestionsListComponent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_SuggestionsList_SuggestionsList_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n position: this.state.position,\n ref: this.dropdownRef,\n onExternalClick: onExternalClick,\n suggestions: filteredSuggestions,\n suggestionsStyle: suggestionsStyle,\n activeSuggestion: activeSuggestion,\n onClick: onClick\n });\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(react__WEBPACK_IMPORTED_MODULE_8__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n className: fieldClassName\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"input\", {\n id: 1,\n role: 'combobox',\n autoComplete: \"off\",\n className: inputClasses,\n placeholder: placeholder,\n ref: this.inputRef,\n style: inputStyle,\n value: userInput,\n onClick: onInputClick,\n onBlur: onBlur,\n onChange: onChange,\n onKeyDown: onKeyDown,\n onFocus: onFocus\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"label\", {\n htmlFor: 1,\n className: error && components_Autocomplete_Autocomplete_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].error\n }, error || label)), suggestionsListComponent);\n }\n }]);\n\n return Autocomplete;\n}(react__WEBPACK_IMPORTED_MODULE_8__.Component);\n\n\nAutocomplete.propTypes = {\n inputStyle: prop_types__WEBPACK_IMPORTED_MODULE_7___default().object.describe('Styling for the input.'),\n suggestionsStyle: prop_types__WEBPACK_IMPORTED_MODULE_7___default().object.describe('Styling for the suggestions dropdown.'),\n onChange: prop_types__WEBPACK_IMPORTED_MODULE_7___default().func.describe('Callback triggered when input fiield is changed'),\n onSubmit: prop_types__WEBPACK_IMPORTED_MODULE_7___default().func.describe('Callback triggered when \"enter\" key pressed'),\n placeholder: prop_types__WEBPACK_IMPORTED_MODULE_7___default().string.describe('Placeholder text'),\n buildSuggestions: prop_types__WEBPACK_IMPORTED_MODULE_7___default().func.describe('Function receiving current input as an argument and should return an array to be rendered as suggestions'),\n buildLabel: prop_types__WEBPACK_IMPORTED_MODULE_7___default().func.describe('Function receiving current input as an argument and should return a string to be rendered as label'),\n error: prop_types__WEBPACK_IMPORTED_MODULE_7___default().string.describe('Error to be rendered in place of label if defined')\n};\n\n//# sourceURL=webpack:///./components/Autocomplete/Autocomplete.react.js?");
+
+/***/ }),
+
+/***/ "./components/Button/Button.example.js":
+/*!*********************************************!*\
+ !*** ./components/Button/Button.example.js ***!
+ \*********************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Button/Button.react */ \"./components/Button/Button.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n name: 'Normal buttons',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n value: \"Click me\"\n }), \"\\xA0\", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n color: \"green\",\n value: \"Green\"\n }), \"\\xA0\", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n color: \"red\",\n value: \"Red\"\n }));\n }\n}, {\n name: 'Primary vs secondary buttons',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n value: \"Primary action\",\n primary: true\n }), \"\\xA0\", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n value: \"Secondary action\"\n }));\n }\n}, {\n name: 'Disabled button',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n value: \"Do not click\",\n disabled: true\n }));\n }\n}, {\n name: 'Progress button',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n value: \"Saving.\",\n progress: true,\n primary: true\n }));\n }\n}, {\n name: 'Red progress button',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n value: \"Saving.\",\n color: \"red\",\n progress: true,\n primary: true\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/Button/Button.example.js?");
+
+/***/ }),
+
+/***/ "./components/Button/Button.react.js":
+/*!*******************************************!*\
+ !*** ./components/Button/Button.react.js ***!
+ \*******************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"../node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! stylesheets/base.scss */ \"./stylesheets/base.scss\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Button_Button_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/Button/Button.scss */ \"./components/Button/Button.scss\");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar noop = function noop() {};\n\nvar Button = function Button(props) {\n var hasOnClick = props.onClick && !props.disabled;\n var classes = [components_Button_Button_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].button, stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].unselectable]; // if a button is disabled, that overrides any color selection\n\n if (props.disabled) {\n classes.push(components_Button_Button_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].disabled);\n\n if (props.color === 'white') {\n // This has a special disabled case\n classes.push(components_Button_Button_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].white);\n }\n } else {\n if (props.primary) {\n classes.push(components_Button_Button_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].primary);\n }\n\n if (props.color) {\n classes.push(components_Button_Button_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"][props.color]);\n }\n\n if (props.progress) {\n classes.push(components_Button_Button_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].progress);\n }\n }\n\n var clickHandler = hasOnClick ? props.onClick : noop;\n var styleOverride = null;\n\n if (props.width) {\n styleOverride = _objectSpread({\n width: props.width,\n minWidth: props.width\n }, props.additionalStyles);\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"button\", {\n type: \"button\",\n style: styleOverride,\n className: classes.join(' '),\n onClick: clickHandler,\n onFocus: function onFocus(e) {\n if (props.disabled) e.target.blur();\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"span\", null, props.value));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Button);\nButton.propTypes = {\n primary: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].bool.describe('Determines whether the button represents a Primary action. ' + 'Primary buttons appear filled, while normal buttons are outlines.'),\n disabled: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].bool.describe('Determines whether a button can be clicked. Disabled buttons will ' + 'appear grayed out, and will not fire onClick events.'),\n color: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].oneOf(['blue', 'green', 'red', 'white']).describe('The color of the button.'),\n onClick: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].func.describe('A function to be called when the button is clicked.'),\n value: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].string.isRequired.describe('The content of the button. This can be any renderable content.'),\n width: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].string.describe('Optionally sets the explicit width of the button. This can be any valid CSS size.'),\n progress: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].bool.describe('Optionally have in progress button styles. Defaults to false.'),\n additionalStyles: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].object.describe('Additional styles for tag.')\n};\n\n//# sourceURL=webpack:///./components/Button/Button.react.js?");
+
+/***/ }),
+
+/***/ "./components/CSRFInput/CSRFInput.react.js":
+/*!*************************************************!*\
+ !*** ./components/CSRFInput/CSRFInput.react.js ***!
+ \*************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lib_CSRFManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lib/CSRFManager */ \"./lib/CSRFManager.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n // An invisible component that embeds a hidden input\n// containing the CSRF token into a form\n\nvar CSRFInput = function CSRFInput() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n style: {\n margin: 0,\n padding: 0,\n display: 'inline'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"input\", {\n name: \"_csrf\",\n type: \"hidden\",\n value: (0,lib_CSRFManager__WEBPACK_IMPORTED_MODULE_0__.getToken)()\n }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CSRFInput);\n\n//# sourceURL=webpack:///./components/CSRFInput/CSRFInput.react.js?");
+
+/***/ }),
+
+/***/ "./components/Calendar/Calendar.example.js":
+/*!*************************************************!*\
+ !*** ./components/Calendar/Calendar.example.js ***!
+ \*************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var components_Calendar_Calendar_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/Calendar/Calendar.react */ \"./components/Calendar/Calendar.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_Calendar_Calendar_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_Calendar_Calendar_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n value: new Date(),\n onChange: function onChange() {}\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/Calendar/Calendar.example.js?");
+
+/***/ }),
+
+/***/ "./components/Calendar/Calendar.react.js":
+/*!***********************************************!*\
+ !*** ./components/Calendar/Calendar.react.js ***!
+ \***********************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Calendar)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_DateUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lib/DateUtils */ \"./lib/DateUtils.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Calendar_Calendar_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/Calendar/Calendar.scss */ \"./components/Calendar/Calendar.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar Calendar = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Calendar, _React$Component);\n\n var _super = _createSuper(Calendar);\n\n function Calendar(props) {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Calendar);\n\n _this = _super.call(this);\n var now = props.value || new Date();\n _this.state = {\n currentMonth: new Date(now[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_5__.getDateMethod)(props.local, 'getFullYear')](), now[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_5__.getDateMethod)(props.local, 'getMonth')](), 1)\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Calendar, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(props) {\n if (props.value) {\n this.setState({\n currentMonth: new Date(props.value[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_5__.getDateMethod)(props.local, 'getFullYear')](), props.value[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_5__.getDateMethod)(props.local, 'getMonth')](), 1)\n });\n }\n }\n }, {\n key: \"handlePrev\",\n value: function handlePrev() {\n this.setState({\n currentMonth: (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_5__.prevMonth)(this.state.currentMonth)\n });\n }\n }, {\n key: \"handleNext\",\n value: function handleNext() {\n this.setState({\n currentMonth: (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_5__.nextMonth)(this.state.currentMonth)\n });\n }\n }, {\n key: \"renderMonth\",\n value: function renderMonth() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n className: components_Calendar_Calendar_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].month\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"button\", {\n type: \"button\",\n onClick: this.handlePrev.bind(this)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleNext.bind(this)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", null, (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_5__.getMonth)(this.state.currentMonth.getMonth()) + ' ' + this.state.currentMonth.getFullYear()));\n }\n }, {\n key: \"renderWeekdays\",\n value: function renderWeekdays() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n className: components_Calendar_Calendar_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].weekdays\n }, lib_DateUtils__WEBPACK_IMPORTED_MODULE_5__.WEEKDAYS.map(function (w) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"span\", {\n key: w\n }, w.substr(0, 2));\n }));\n }\n }, {\n key: \"renderDays\",\n value: function renderDays() {\n var isValueMonth = this.props.value && this.props.value[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_5__.getDateMethod)(this.props.local, 'getFullYear')]() === this.state.currentMonth.getFullYear() && this.props.value[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_5__.getDateMethod)(this.props.local, 'getMonth')]() === this.state.currentMonth.getMonth();\n var offset = this.state.currentMonth.getDay();\n var days = (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_5__.daysInMonth)(this.state.currentMonth);\n var labels = [];\n\n for (var i = 0; i < offset; i++) {\n labels.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"span\", {\n key: 'pad' + i\n }));\n }\n\n for (var _i = 1; _i <= days; _i++) {\n var isSelected = isValueMonth && this.props.value[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_5__.getDateMethod)(this.props.local, 'getDate')]() === _i;\n\n var className = isSelected ? components_Calendar_Calendar_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].selected : '';\n var onChange = this.props.onChange.bind(null, this.props.local ? new Date(this.state.currentMonth.getFullYear(), this.state.currentMonth.getMonth(), _i) : new Date(Date.UTC(this.state.currentMonth.getFullYear(), this.state.currentMonth.getMonth(), _i)));\n labels.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"button\", {\n type: \"button\",\n key: 'day' + _i,\n className: className,\n onClick: onChange\n }, _i));\n }\n\n var classes = [components_Calendar_Calendar_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].days];\n\n if (isValueMonth && this.props.shadeBefore) {\n classes.push(components_Calendar_Calendar_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].shadeBefore);\n }\n\n if (isValueMonth && this.props.shadeAfter) {\n classes.push(components_Calendar_Calendar_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].shadeAfter);\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n className: classes.join(' ')\n }, labels);\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n className: components_Calendar_Calendar_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].calendar\n }, this.renderMonth(), this.renderWeekdays(), this.renderDays());\n }\n }]);\n\n return Calendar;\n}(react__WEBPACK_IMPORTED_MODULE_7__.Component);\n\n\nCalendar.propTypes = {\n value: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].instanceOf(Date).describe('The currently selected date'),\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].func.isRequired.describe('A callback fired when a new date is selected. It receives a Date object as its only parameter.'),\n shadeBefore: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].bool.describe('Whether to shade the dates before the current selection'),\n shadeAfter: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].bool.describe('Whether to shade the dates after the current selection')\n};\n\n//# sourceURL=webpack:///./components/Calendar/Calendar.react.js?");
+
+/***/ }),
+
+/***/ "./components/CascadingView/CascadingView.example.js":
+/*!***********************************************************!*\
+ !*** ./components/CascadingView/CascadingView.example.js ***!
+ \***********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var components_CascadingView_CascadingView_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/CascadingView/CascadingView.react */ \"./components/CascadingView/CascadingView.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_CascadingView_CascadingView_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_CascadingView_CascadingView_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n style: {\n padding: '15px',\n border: '1px solid #e3e3e3'\n },\n content: 'Element with children'\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_CascadingView_CascadingView_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n content: 'Element with child'\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", null, \"Element without child\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", null, \"Also element without child\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", null, \"Element without child\"));\n }\n}, {\n render: function render() {\n var contents = [];\n\n for (var i = 0; i < 4; ++i) {\n contents.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_CascadingView_CascadingView_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n style: {\n padding: '15px',\n border: '1px solid #e3e3e3'\n },\n content: 'Element with children',\n key: i\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_CascadingView_CascadingView_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n content: 'Element with child'\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", null, \"Element without child\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", null, \"Also element without child\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", null, \"Element without child\")));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", null, contents);\n }\n}];\n\n//# sourceURL=webpack:///./components/CascadingView/CascadingView.example.js?");
+
+/***/ }),
+
+/***/ "./components/CascadingView/CascadingView.react.js":
+/*!*********************************************************!*\
+ !*** ./components/CascadingView/CascadingView.react.js ***!
+ \*********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ CascadingView)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! stylesheets/base.scss */ \"./stylesheets/base.scss\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_CascadingView_CascadingView_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/CascadingView/CascadingView.scss */ \"./components/CascadingView/CascadingView.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar CascadingView = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(CascadingView, _React$Component);\n\n var _super = _createSuper(CascadingView);\n\n function CascadingView() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, CascadingView);\n\n _this = _super.call(this);\n _this.state = {\n expanded: false\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(CascadingView, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n content = _this$props.content,\n className = _this$props.className,\n children = _this$props.children,\n style = _this$props.style;\n var expander = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"button\", {\n type: \"button\",\n className: [components_CascadingView_CascadingView_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].arrow, components_CascadingView_CascadingView_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].right].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n className: [stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_5__[\"default\"].center, this.state.expanded ? components_CascadingView_CascadingView_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].expanded : components_CascadingView_CascadingView_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].collapsed].join(' ')\n }));\n var childrenContainer = this.state.expanded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n className: components_CascadingView_CascadingView_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].childrenContainer\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n className: components_CascadingView_CascadingView_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].children\n }, children)) : null;\n var classes = [components_CascadingView_CascadingView_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].contentContainer];\n\n if (className) {\n classes.push(className);\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n className: components_CascadingView_CascadingView_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].cascadingView\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n className: classes.join(' '),\n style: style,\n onClick: function onClick() {\n return _this2.setState({\n expanded: !_this2.state.expanded\n });\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"span\", {\n className: components_CascadingView_CascadingView_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].left\n }, content), expander), childrenContainer);\n }\n }]);\n\n return CascadingView;\n}(react__WEBPACK_IMPORTED_MODULE_7__.Component);\n\n\nCascadingView.propTypes = {\n content: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].node.isRequired.describe('The content of the CascadingView itself. ' + 'It can be any renderable content.'),\n className: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].string.describe('A CSS class name to be applied to the collapsed CascadingView.'),\n children: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].node.isRequired.describe('The children of CascadingView.')\n};\n\n//# sourceURL=webpack:///./components/CascadingView/CascadingView.react.js?");
+
+/***/ }),
+
+/***/ "./components/Chart/Chart.example.js":
+/*!*******************************************!*\
+ !*** ./components/Chart/Chart.example.js ***!
+ \*******************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var lib_Constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lib/Constants */ \"./lib/Constants.js\");\n/* harmony import */ var components_Chart_Chart_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Chart/Chart.react */ \"./components/Chart/Chart.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar component = components_Chart_Chart_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_Chart_Chart_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n width: 800,\n height: 400,\n data: {\n 'Group A': {\n color: lib_Constants__WEBPACK_IMPORTED_MODULE_0__.ChartColorSchemes[0],\n points: [[1439424000000, 51], [1439510400000, 66], [1439596800000, 36], [1439683200000, 64], [1439769600000, 46], [1439856000000, 42], [1439942400000, 45], [1440028800000, 70], [1440115200000, 7]]\n },\n 'Group B': {\n color: lib_Constants__WEBPACK_IMPORTED_MODULE_0__.ChartColorSchemes[1],\n points: [[1439424000000, 40], [1439510400000, 24], [1439596800000, 12], [1439683200000, 80], [1439769600000, 98], [1439856000000, 88], [1439942400000, 84], [1440028800000, 88], [1440115200000, 18]]\n }\n }\n });\n }\n}, {\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_Chart_Chart_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n width: 800,\n height: 400,\n data: {\n 'Hourly data': {\n color: lib_Constants__WEBPACK_IMPORTED_MODULE_0__.ChartColorSchemes[2],\n points: [[1439449200000, 3], [1439452800000, 2], [1439456400000, 2], [1439460000000, 4], [1439463600000, 1], [1439467200000, 4], [1439470800000, 4], [1439474400000, 1], [1439478000000, 2], [1439481600000, 2]]\n }\n },\n formatter: function formatter(value) {\n return value + ' arbitrary units';\n }\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/Chart/Chart.example.js?");
+
+/***/ }),
+
+/***/ "./components/Chart/Chart.react.js":
+/*!*****************************************!*\
+ !*** ./components/Chart/Chart.react.js ***!
+ \*****************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Chart)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"../node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_Charting_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/Charting.js */ \"./lib/Charting.js\");\n/* harmony import */ var lib_DateUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lib/DateUtils */ \"./lib/DateUtils.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var lib_prettyNumber__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lib/prettyNumber */ \"./lib/prettyNumber.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Chart_Shape_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! components/Chart/Shape.react */ \"./components/Chart/Shape.react.js\");\n/* harmony import */ var components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! components/Chart/Chart.scss */ \"./components/Chart/Chart.scss\");\n\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\n\nvar MARGIN_TOP = 10;\nvar MARGIN_RIGHT = 20;\nvar MARGIN_BOTTOM = 40;\nvar MARGIN_LEFT = 40;\n\nfunction sortPoints(a, b) {\n return a[0] - b[0];\n}\n\nfunction formatDate(date) {\n var str = lib_DateUtils__WEBPACK_IMPORTED_MODULE_7__.getMonth(date.getMonth()) + ' ' + date.getDate();\n\n if (date.getUTCHours() === 0 && date.getUTCMinutes() === 0 && date.getUTCSeconds() === 0) {\n return str;\n }\n\n return str + ' ' + date.getHours() + (date.getMinutes() < 10 ? ':0' : ':') + date.getMinutes();\n}\n\nvar Chart = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Chart, _React$Component);\n\n var _super = _createSuper(Chart);\n\n function Chart() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, Chart);\n\n _this = _super.call(this);\n _this.state = {\n hoverTime: null,\n hoverValue: null,\n hoverPosition: null,\n hoverColor: ''\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Chart, [{\n key: \"handleMouseOver\",\n value: function handleMouseOver(x, y, time, value, color, label) {\n this.setState({\n hoverTime: new Date(time),\n hoverValue: value,\n hoverLabel: label,\n hoverPosition: new lib_Position__WEBPACK_IMPORTED_MODULE_8__[\"default\"](x, y),\n hoverColor: color\n });\n }\n }, {\n key: \"handleMouseOut\",\n value: function handleMouseOut() {\n this.setState({\n hoverValue: null\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n width = _this$props.width,\n height = _this$props.height,\n data = _this$props.data;\n var plotting = {};\n var minX = Infinity;\n var maxX = -Infinity;\n var maxY = -Infinity;\n var chartWidth = width - MARGIN_LEFT - MARGIN_RIGHT;\n var chartHeight = height - MARGIN_TOP - MARGIN_BOTTOM;\n\n for (var key in data) {\n var ordered = data[key].points.map(function (_ref) {\n var _ref2 = (0,_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref, 2),\n x = _ref2[0],\n y = _ref2[1];\n\n return [x, y];\n }).sort(sortPoints);\n\n for (var i = 0; i < ordered.length; i++) {\n if (ordered[i][0] < minX) {\n minX = ordered[i][0];\n }\n\n if (ordered[i][0] > maxX) {\n maxX = ordered[i][0];\n }\n\n if (ordered[i][1] > maxY) {\n maxY = ordered[i][1];\n }\n }\n\n plotting[key] = {\n data: ordered,\n index: data[key].index\n };\n }\n\n var timeBuckets = lib_Charting_js__WEBPACK_IMPORTED_MODULE_6__.timeAxisBuckets(minX, maxX);\n var valueBuckets = lib_Charting_js__WEBPACK_IMPORTED_MODULE_6__.valueAxisBuckets(maxY || 10);\n var groups = [];\n\n var _loop = function _loop(_key) {\n var color = data[_key].color;\n var index = data[_key].index || 0;\n var points = lib_Charting_js__WEBPACK_IMPORTED_MODULE_6__.getDataPoints(chartWidth, chartHeight, timeBuckets, valueBuckets, plotting[_key].data);\n var path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"path\", {\n d: 'M' + points.map(function (p) {\n return p.join(' ');\n }).join(' L'),\n style: {\n stroke: color,\n fill: 'none',\n strokeWidth: 2\n }\n });\n groups.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"g\", {\n key: _key\n }, path, points.map(function (p, i) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"g\", {\n key: p[0],\n onMouseOver: _this2.handleMouseOver.bind(_this2, p[0] + MARGIN_LEFT, p[1], plotting[_key].data[i][0], plotting[_key].data[i][1], color, _key),\n onMouseOut: _this2.handleMouseOut.bind(_this2),\n style: {\n cursor: 'pointer'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(components_Chart_Shape_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n x: p[0],\n y: p[1],\n fill: color,\n index: index\n }));\n })));\n };\n\n for (var _key in plotting) {\n _loop(_key);\n }\n\n var labels = valueBuckets.slice(1, valueBuckets.length - 1);\n var labelHeights = labels.map(function (label) {\n return chartHeight * (1 - label / valueBuckets[valueBuckets.length - 1]);\n });\n var tickPoints = timeBuckets.map(function (t) {\n return chartWidth * (t - timeBuckets[0]) / (timeBuckets[timeBuckets.length - 1] - timeBuckets[0]);\n });\n var last = null;\n var tickLabels = timeBuckets.map(function (t, i) {\n var text = '';\n\n if (timeBuckets.length > 20 && i % 2 === 0) {\n return '';\n }\n\n if (!last || t.getMonth() !== last.getMonth()) {\n text += (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_7__.shortMonth)(t.getMonth()) + ' ';\n }\n\n if (!last || t.getDate() !== last.getDate()) {\n text += t.getDate();\n } else if (last && t.getHours() !== last.getHours()) {\n text += t.getHours() + ':00';\n }\n\n last = t;\n return text;\n });\n var popup = null;\n\n if (this.state.hoverValue !== null) {\n var style = {\n color: this.state.hoverColor,\n borderColor: this.state.hoverColor\n };\n var classes = [components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].popup];\n\n if (this.state.hoverPosition.x < 200) {\n classes.push(components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].popupRight);\n } else {\n classes.push(components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].popupLeft);\n }\n\n popup = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].popupWrap,\n style: {\n left: this.state.hoverPosition.x,\n top: this.state.hoverPosition.y\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: classes.join(' '),\n style: style\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].popupTime\n }, formatDate(this.state.hoverTime)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].popupValue\n }, this.props.formatter ? this.props.formatter(this.state.hoverValue, this.state.hoverLabel) : this.state.hoverValue)));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].chart,\n style: {\n width: width,\n height: height\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].yAxis\n }, labels.map(function (v, i) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n key: v,\n className: components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].label,\n style: {\n top: labelHeights[i]\n }\n }, (0,lib_prettyNumber__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(v));\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].xAxis\n }, tickLabels.map(function (t, i) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n key: t + '_' + i,\n className: components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].tick,\n style: {\n left: tickPoints[i] + MARGIN_LEFT\n }\n }, t);\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"svg\", {\n width: chartWidth + 10,\n height: chartHeight + 10\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"g\", null, labelHeights.map(function (h) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"path\", {\n key: 'horiz_' + h,\n d: 'M0 ' + h + ' H' + chartWidth,\n style: {\n stroke: '#e1e1e1',\n strokeWidth: 0.5\n }\n });\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"path\", {\n d: 'M0 ' + chartHeight + ' H' + chartWidth,\n style: {\n stroke: '#e1e1e1',\n strokeWidth: 1\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"g\", null, tickPoints.map(function (t, i) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"path\", {\n key: 'tick_' + i,\n d: \"M\".concat(t, \" \").concat(chartHeight, \" V \").concat(chartHeight - 10),\n style: {\n stroke: '#e1e1e1',\n strokeWidth: 1\n }\n });\n })), groups), popup);\n }\n }]);\n\n return Chart;\n}(react__WEBPACK_IMPORTED_MODULE_11__.Component);\n\n\nChart.propTypes = {\n width: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].number.isRequired.describe('The width of the chart.'),\n height: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].number.isRequired.describe('The height of the chart.'),\n data: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].object.isRequired.describe('The data to graph. It is a map of data names to objects containing two keys: ' + '\"color,\" the color to use for the lines, and \"points,\" an array of tuples containing time-value data.'),\n formatter: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].func.describe('An optional function for formatting the data description that appears in the popup. ' + 'It receives the numeric value of a point and label, and should return a string. ' + 'This is ideally used for providing descriptive units like \"active installations.\"')\n};\n\n//# sourceURL=webpack:///./components/Chart/Chart.react.js?");
+
+/***/ }),
+
+/***/ "./components/Chart/Shape.react.js":
+/*!*****************************************!*\
+ !*** ./components/Chart/Shape.react.js ***!
+ \*****************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Chart/Chart.scss */ \"./components/Chart/Chart.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nfunction joinPoints(points) {\n return points.map(function (p) {\n return p.join(',');\n }).join(' ');\n}\n\nvar Shape = function Shape(_ref) {\n var x = _ref.x,\n y = _ref.y,\n fill = _ref.fill,\n index = _ref.index;\n var style = {\n fill: fill,\n stroke: 'white',\n strokeWidth: 2\n };\n\n switch (index % 7) {\n case 0:\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"circle\", {\n className: components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].grow,\n cx: x,\n cy: y,\n r: 4,\n style: style\n });\n\n case 1:\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"rect\", {\n className: components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].grow,\n x: x - 4,\n y: y - 4,\n width: 8,\n height: 8,\n style: style\n });\n\n case 2:\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"polygon\", {\n className: components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].grow,\n points: joinPoints([[x - 4, y + 4], [x, y - 4], [x + 4, y + 4]]),\n style: style\n });\n\n case 3:\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"polygon\", {\n className: components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].grow,\n points: joinPoints([[x - 4, y], [x, y - 4], [x + 4, y], [x, y + 4]]),\n style: style\n });\n\n case 4:\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"polygon\", {\n className: components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].grow,\n points: joinPoints([[x - 4, y - 4], [x, y + 4], [x + 4, y - 4]]),\n style: style\n });\n\n case 5:\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"polygon\", {\n className: components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].grow,\n points: joinPoints([[x, y - 4], [x + 4, y - 1], [x + 2, y + 3], [x - 2, y + 3], [x - 4, y - 1]]),\n style: style\n });\n\n case 6:\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"polygon\", {\n className: components_Chart_Chart_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].grow,\n points: joinPoints([[x, y - 4], [x - 3, y - 2], [x - 3, y + 2], [x, y + 4], [x + 3, y + 2], [x + 3, y - 2]]),\n style: style\n });\n }\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Shape);\n\n//# sourceURL=webpack:///./components/Chart/Shape.react.js?");
+
+/***/ }),
+
+/***/ "./components/Checkbox/Checkbox.example.js":
+/*!*************************************************!*\
+ !*** ./components/Checkbox/Checkbox.example.js ***!
+ \*************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Checkbox/Checkbox.react */ \"./components/Checkbox/Checkbox.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: \"unchecked\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n checked: true,\n label: \"checked\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n indeterminate: true,\n label: \"indeterminate\"\n })));\n }\n}];\n\n//# sourceURL=webpack:///./components/Checkbox/Checkbox.example.js?");
+
+/***/ }),
+
+/***/ "./components/Checkbox/Checkbox.react.js":
+/*!***********************************************!*\
+ !*** ./components/Checkbox/Checkbox.react.js ***!
+ \***********************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/Icon/Icon.react */ \"./components/Icon/Icon.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Checkbox_Checkbox_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/Checkbox/Checkbox.scss */ \"./components/Checkbox/Checkbox.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar Checkbox = function Checkbox(_ref) {\n var label = _ref.label,\n checked = _ref.checked,\n indeterminate = _ref.indeterminate,\n onChange = _ref.onChange;\n var classes = [components_Checkbox_Checkbox_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].input];\n\n if (checked) {\n classes.push(components_Checkbox_Checkbox_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].checked);\n } else if (indeterminate) {\n classes.push(components_Checkbox_Checkbox_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].indeterminate);\n }\n\n var inner = null;\n\n if (checked) {\n inner = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n width: 12,\n height: 12,\n name: \"check\",\n fill: \"#169cee\"\n });\n } else if (indeterminate) {\n inner = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"span\", {\n className: components_Checkbox_Checkbox_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].minus\n });\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"span\", {\n className: classes.join(' '),\n onClick: function onClick() {\n return onChange(!checked);\n }\n }, label ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"span\", {\n className: components_Checkbox_Checkbox_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].label\n }, label) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"span\", {\n className: components_Checkbox_Checkbox_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].checkbox\n }, inner));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Checkbox);\n\n//# sourceURL=webpack:///./components/Checkbox/Checkbox.react.js?");
+
+/***/ }),
+
+/***/ "./components/Chip/Chip.example.js":
+/*!*****************************************!*\
+ !*** ./components/Chip/Chip.example.js ***!
+ \*****************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Chip_Chip_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Chip/Chip.react */ \"./components/Chip/Chip.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_Chip_Chip_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Chip_Chip_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n value: \"fieldName\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Chip_Chip_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n value: \"Role: Admin\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Chip_Chip_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n value: \"User: y2kjInQFr6\"\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/Chip/Chip.example.js?");
+
+/***/ }),
+
+/***/ "./components/Chip/Chip.react.js":
+/*!***************************************!*\
+ !*** ./components/Chip/Chip.react.js ***!
+ \***************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Chip_Chip_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Chip/Chip.scss */ \"./components/Chip/Chip.scss\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/Icon/Icon.react */ \"./components/Icon/Icon.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar Chip = function Chip(_ref) {\n var value = _ref.value,\n onClose = _ref.onClose;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: [components_Chip_Chip_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].chip].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: [components_Chip_Chip_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].content].join(' ')\n }, value), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n onClick: function onClick(e) {\n try {\n e.stopPropagation();\n e.nativeEvent.stopPropagation();\n } catch (e) {\n console.error(e);\n }\n\n onClose(value);\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n name: \"chip-close\",\n viewBox: \"0 0 24 24\",\n height: 12,\n width: 12\n })));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Chip);\nChip.propTypes = {\n onClose: prop_types__WEBPACK_IMPORTED_MODULE_2___default().func.isRequired.describe('A function called when the close button clicked. It receives the value of as the only parameter.'),\n value: prop_types__WEBPACK_IMPORTED_MODULE_2___default().string.isRequired.describe('The string to be rendered inside chip.')\n};\n\n//# sourceURL=webpack:///./components/Chip/Chip.react.js?");
+
+/***/ }),
+
+/***/ "./components/ChromeDatePicker/ChromeDatePicker.example.js":
+/*!*****************************************************************!*\
+ !*** ./components/ChromeDatePicker/ChromeDatePicker.example.js ***!
+ \*****************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_ChromeDatePicker_ChromeDatePicker_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/ChromeDatePicker/ChromeDatePicker.react */ \"./components/ChromeDatePicker/ChromeDatePicker.react.js\");\n/* harmony import */ var lib_Constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/Constants */ \"./lib/Constants.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar component = components_ChromeDatePicker_ChromeDatePicker_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n\nvar Demo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Demo, _React$Component);\n\n var _super = _createSuper(Demo);\n\n function Demo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Demo);\n\n _this = _super.call(this);\n _this.state = {\n value: new Date()\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Demo, [{\n key: \"handleChange\",\n value: function handleChange(value) {\n this.setState({\n value: value\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_ChromeDatePicker_ChromeDatePicker_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n value: this.state.value,\n onChange: this.handleChange.bind(this),\n align: this.props.align\n });\n }\n }]);\n\n return Demo;\n}(react__WEBPACK_IMPORTED_MODULE_7__.Component);\n\nvar demos = [{\n name: 'Left-aligned',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n style: {\n width: 500,\n margin: '0 auto'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(Demo, null));\n }\n}, {\n name: 'Right-aligned',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n style: {\n width: 500,\n margin: '0 auto',\n textAlign: 'right'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(Demo, {\n align: lib_Constants__WEBPACK_IMPORTED_MODULE_6__.Directions.RIGHT\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/ChromeDatePicker/ChromeDatePicker.example.js?");
+
+/***/ }),
+
+/***/ "./components/ChromeDatePicker/ChromeDatePicker.react.js":
+/*!***************************************************************!*\
+ !*** ./components/ChromeDatePicker/ChromeDatePicker.react.js ***!
+ \***************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ChromeDatePicker)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_Calendar_Calendar_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/Calendar/Calendar.react */ \"./components/Calendar/Calendar.react.js\");\n/* harmony import */ var lib_Constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/Constants */ \"./lib/Constants.js\");\n/* harmony import */ var components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Icon/Icon.react */ \"./components/Icon/Icon.react.js\");\n/* harmony import */ var lib_DateUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lib/DateUtils */ \"./lib/DateUtils.js\");\n/* harmony import */ var components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components/Popover/Popover.react */ \"./components/Popover/Popover.react.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var components_ChromeDatePicker_ChromeDatePicker_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! components/ChromeDatePicker/ChromeDatePicker.scss */ \"./components/ChromeDatePicker/ChromeDatePicker.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\n\n\n\nvar ChromeDatePicker = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ChromeDatePicker, _React$Component);\n\n var _super = _createSuper(ChromeDatePicker);\n\n function ChromeDatePicker() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, ChromeDatePicker);\n\n _this = _super.call(this);\n _this.state = {\n open: false,\n position: null\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(ChromeDatePicker, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_13__.findDOMNode(this);\n }\n }, {\n key: \"toggle\",\n value: function toggle() {\n var _this2 = this;\n\n this.setState(function () {\n if (_this2.state.open) {\n return {\n open: false\n };\n }\n\n var pos = lib_Position__WEBPACK_IMPORTED_MODULE_10__[\"default\"].inWindow(_this2.node);\n\n if (_this2.props.align === lib_Constants__WEBPACK_IMPORTED_MODULE_6__.Directions.RIGHT) {\n pos.x += _this2.node.clientWidth;\n }\n\n return {\n open: true,\n position: pos\n };\n });\n }\n }, {\n key: \"onChange\",\n value: function onChange(value) {\n this.props.onChange(value);\n this.setState({\n open: false\n });\n }\n }, {\n key: \"close\",\n value: function close() {\n this.setState({\n open: false\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var popover = null;\n var content = null;\n\n if (this.state.open) {\n var classes = [components_ChromeDatePicker_ChromeDatePicker_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].open];\n\n if (this.props.align === lib_Constants__WEBPACK_IMPORTED_MODULE_6__.Directions.RIGHT) {\n classes.push(components_ChromeDatePicker_ChromeDatePicker_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].right);\n }\n\n popover = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n fixed: true,\n position: this.state.position,\n onExternalClick: this.close.bind(this)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: classes.join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ChromeDatePicker_ChromeDatePicker_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].calendar\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Calendar_Calendar_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n value: this.props.value,\n onChange: this.onChange.bind(this)\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ChromeDatePicker_ChromeDatePicker_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].chrome,\n onClick: this.close.bind(this)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"span\", null, \"\".concat((0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_8__.monthDayStringUTC)(this.props.value))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n width: 18,\n height: 18,\n name: \"calendar-solid\",\n fill: \"#169CEE\"\n }))));\n } else {\n content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ChromeDatePicker_ChromeDatePicker_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].chrome\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"span\", null, \"\".concat((0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_8__.monthDayStringUTC)(this.props.value))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n width: 18,\n height: 18,\n name: \"calendar-solid\",\n fill: \"#169CEE\"\n }));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ChromeDatePicker_ChromeDatePicker_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].wrap,\n onClick: this.toggle.bind(this)\n }, content, popover);\n }\n }]);\n\n return ChromeDatePicker;\n}(react__WEBPACK_IMPORTED_MODULE_12__.Component);\n\n\nChromeDatePicker.propTypes = {\n value: lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].object.describe('The Date value of the picker.'),\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].func.describe('A function called when the date picker is changed. It receives a new Date value.')\n};\n\n//# sourceURL=webpack:///./components/ChromeDatePicker/ChromeDatePicker.react.js?");
+
+/***/ }),
+
+/***/ "./components/ChromeDropdown/ChromeDropdown.example.js":
+/*!*************************************************************!*\
+ !*** ./components/ChromeDropdown/ChromeDropdown.example.js ***!
+ \*************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/ChromeDropdown/ChromeDropdown.react */ \"./components/ChromeDropdown/ChromeDropdown.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n\nvar DropdownDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DropdownDemo, _React$Component);\n\n var _super = _createSuper(DropdownDemo);\n\n function DropdownDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, DropdownDemo);\n\n _this = _super.call(this);\n _this.state = {\n color: 'Purple'\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(DropdownDemo, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n value: this.state.color,\n color: this.state.color.toLowerCase(),\n onChange: function onChange(color) {\n return _this2.setState({\n color: color\n });\n },\n options: ['Blue', 'Purple']\n });\n }\n }]);\n\n return DropdownDemo;\n}(react__WEBPACK_IMPORTED_MODULE_6__.Component);\n\nvar DropdownDemo2 = /*#__PURE__*/function (_React$Component2) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DropdownDemo2, _React$Component2);\n\n var _super2 = _createSuper(DropdownDemo2);\n\n function DropdownDemo2() {\n var _this3;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, DropdownDemo2);\n\n _this3 = _super2.call(this);\n _this3.state = {\n color: 'Purple'\n };\n return _this3;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(DropdownDemo2, [{\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n placeholder: 'Choose a color',\n value: this.state.color,\n color: this.state.color.toLowerCase(),\n onChange: function onChange(color) {\n return _this4.setState({\n color: color\n });\n },\n options: ['Blue', 'Purple']\n });\n }\n }]);\n\n return DropdownDemo2;\n}(react__WEBPACK_IMPORTED_MODULE_6__.Component);\n\nvar DropdownDemo3 = /*#__PURE__*/function (_React$Component3) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DropdownDemo3, _React$Component3);\n\n var _super3 = _createSuper(DropdownDemo3);\n\n function DropdownDemo3() {\n var _this5;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, DropdownDemo3);\n\n _this5 = _super3.call(this);\n _this5.state = {\n color: 'purple'\n };\n return _this5;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(DropdownDemo3, [{\n key: \"render\",\n value: function render() {\n var _this6 = this;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n placeholder: 'Choose a color',\n value: this.state.color,\n color: this.state.color,\n onChange: function onChange(color) {\n return _this6.setState({\n color: color\n });\n },\n options: [{\n key: 'blue',\n value: 'Blue'\n }, {\n key: 'purple',\n value: 'Purple'\n }]\n });\n }\n }]);\n\n return DropdownDemo3;\n}(react__WEBPACK_IMPORTED_MODULE_6__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(DropdownDemo, null));\n }\n}, {\n name: 'ChromeDropdown with placeholder',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(DropdownDemo2, null));\n }\n}, {\n name: 'ChromeDropdown with object',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(DropdownDemo3, null));\n }\n}];\n\n//# sourceURL=webpack:///./components/ChromeDropdown/ChromeDropdown.example.js?");
+
+/***/ }),
+
+/***/ "./components/ChromeDropdown/ChromeDropdown.react.js":
+/*!***********************************************************!*\
+ !*** ./components/ChromeDropdown/ChromeDropdown.react.js ***!
+ \***********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ChromeDropdown)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/Popover/Popover.react */ \"./components/Popover/Popover.react.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var components_ChromeDropdown_ChromeDropdown_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! components/ChromeDropdown/ChromeDropdown.scss */ \"./components/ChromeDropdown/ChromeDropdown.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\nvar ChromeDropdown = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ChromeDropdown, _React$Component);\n\n var _super = _createSuper(ChromeDropdown);\n\n function ChromeDropdown() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, ChromeDropdown);\n\n _this = _super.call(this);\n _this.state = {\n open: false,\n selected: false\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(ChromeDropdown, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var _this2 = this;\n\n this.keyValueMap = {};\n nextProps.options.forEach(function (value) {\n if (value instanceof Object) {\n _this2.keyValueMap[value.key] = value.value;\n }\n });\n\n if (Object.keys(this.keyValueMap).length === 0) {\n this.keyValueMap = null;\n }\n }\n }, {\n key: \"componentWillMount\",\n value: function componentWillMount() {\n this.styles = this.props.styles || components_ChromeDropdown_ChromeDropdown_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"];\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_9__.findDOMNode(this);\n }\n }, {\n key: \"select\",\n value: function select(value, e) {\n var _this3 = this;\n\n e.stopPropagation();\n this.setState({\n open: false,\n selected: true\n }, function () {\n _this3.props.onChange(value);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var widthStyle = {\n width: parseFloat(this.props.width || 140)\n };\n var styles = this.styles;\n var color = this.props.color || 'purple';\n var label = this.props.value;\n\n if (this.keyValueMap) {\n label = this.keyValueMap[label];\n }\n\n if (!this.state.selected && this.props.placeholder) {\n // If it's time to show placeholder, show placeholder.\n label = this.props.placeholder;\n }\n\n var content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n className: [styles.current, styles[color]].join(' '),\n onClick: function onClick() {\n return _this4.setState({\n open: true\n });\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", null, label));\n\n if (this.state.open) {\n var position = lib_Position__WEBPACK_IMPORTED_MODULE_7__[\"default\"].inWindow(this.node);\n var measuredWidth = parseFloat(this.node.offsetWidth);\n widthStyle = {\n width: measuredWidth\n };\n content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n fixed: true,\n position: position,\n onExternalClick: function onExternalClick() {\n return _this4.setState({\n open: false\n });\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n style: widthStyle,\n className: [styles.menu, styles[color], 'chromeDropdown'].join(' ')\n }, this.props.options.map(function (o) {\n var key = o;\n var value = o;\n\n if (o instanceof Object) {\n key = o.key;\n value = o.value;\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n key: key,\n onClick: _this4.select.bind(_this4, key)\n }, value);\n })));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n style: widthStyle,\n className: styles.dropdown\n }, content);\n }\n }]);\n\n return ChromeDropdown;\n}(react__WEBPACK_IMPORTED_MODULE_8__.Component);\n\n\nChromeDropdown.propTypes = {\n color: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].oneOf(['blue', 'purple']).describe('Determines the color of the dropdown.'),\n value: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].string.isRequired.describe('The current value of the dropdown.'),\n options: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].array.isRequired.describe('An array of options available in the dropdown. Can be an array of string or array of { key, value }'),\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].func.isRequired.describe('A function called when the dropdown is changed.'),\n width: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].string.describe('An optional width override.'),\n placeholder: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].string.describe('Placeholder text used in place of default selection.'),\n styles: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].object.describe('Styles override used to provide dropdown with differnt skin.')\n};\n\n//# sourceURL=webpack:///./components/ChromeDropdown/ChromeDropdown.react.js?");
+
+/***/ }),
+
+/***/ "./components/CodeEditor/CodeEditor.example.js":
+/*!*****************************************************!*\
+ !*** ./components/CodeEditor/CodeEditor.example.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_CodeEditor_CodeEditor_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/CodeEditor/CodeEditor.react */ \"./components/CodeEditor/CodeEditor.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_CodeEditor_CodeEditor_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n name: 'Simple code editor (only JS support)',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_CodeEditor_CodeEditor_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n placeHolder: '//I am editable, try change me!',\n id: \"example1\"\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/CodeEditor/CodeEditor.example.js?");
+
+/***/ }),
+
+/***/ "./components/CodeEditor/CodeEditor.react.js":
+/*!***************************************************!*\
+ !*** ./components/CodeEditor/CodeEditor.react.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ CodeEditor)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_ace__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-ace */ \"../node_modules/react-ace/lib/index.js\");\n/* harmony import */ var _lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var ace_builds_src_noconflict_mode_javascript__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ace-builds/src-noconflict/mode-javascript */ \"../node_modules/ace-builds/src-noconflict/mode-javascript.js\");\n/* harmony import */ var ace_builds_src_noconflict_mode_javascript__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_noconflict_mode_javascript__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var ace_builds_src_noconflict_theme_solarized_dark__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ace-builds/src-noconflict/theme-solarized_dark */ \"../node_modules/ace-builds/src-noconflict/theme-solarized_dark.js\");\n/* harmony import */ var ace_builds_src_noconflict_theme_solarized_dark__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_noconflict_theme_solarized_dark__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var ace_builds_src_noconflict_snippets_javascript__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ace-builds/src-noconflict/snippets/javascript */ \"../node_modules/ace-builds/src-noconflict/snippets/javascript.js\");\n/* harmony import */ var ace_builds_src_noconflict_snippets_javascript__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_noconflict_snippets_javascript__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var ace_builds_src_noconflict_ext_language_tools__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ace-builds/src-noconflict/ext-language_tools */ \"../node_modules/ace-builds/src-noconflict/ext-language_tools.js\");\n/* harmony import */ var ace_builds_src_noconflict_ext_language_tools__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(ace_builds_src_noconflict_ext_language_tools__WEBPACK_IMPORTED_MODULE_11__);\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\nvar CodeEditor = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(CodeEditor, _React$Component);\n\n var _super = _createSuper(CodeEditor);\n\n function CodeEditor(props) {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, CodeEditor);\n\n _this = _super.call(this, props);\n _this.state = {\n code: ''\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(CodeEditor, [{\n key: \"value\",\n get: function get() {\n return this.state.code || this.props.placeHolder;\n },\n set: function set(code) {\n this.setState({\n code: code\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n placeHolder = _this$props.placeHolder,\n _this$props$fontSize = _this$props.fontSize,\n fontSize = _this$props$fontSize === void 0 ? 18 : _this$props$fontSize;\n var code = this.state.code;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(react_ace__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n mode: \"javascript\",\n theme: \"solarized_dark\",\n onChange: function onChange(value) {\n return _this2.setState({\n code: value\n });\n },\n fontSize: fontSize,\n showPrintMargin: true,\n showGutter: true,\n highlightActiveLine: true,\n width: \"100%\",\n value: code || placeHolder,\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: false,\n showLineNumbers: true,\n tabSize: 2\n });\n }\n }]);\n\n return CodeEditor;\n}(react__WEBPACK_IMPORTED_MODULE_5__.Component);\n\n\nCodeEditor.propTypes = {\n fontSize: _lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].number.describe('Font size of the editor'),\n placeHolder: _lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].string.describe('Code place holder')\n};\n\n//# sourceURL=webpack:///./components/CodeEditor/CodeEditor.react.js?");
+
+/***/ }),
+
+/***/ "./components/CodeSnippet/CodeSnippet.example.js":
+/*!*******************************************************!*\
+ !*** ./components/CodeSnippet/CodeSnippet.example.js ***!
+ \*******************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_CodeSnippet_CodeSnippet_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/CodeSnippet/CodeSnippet.react */ \"./components/CodeSnippet/CodeSnippet.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_CodeSnippet_CodeSnippet_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n render: function render() {\n var source = \"// Some comment here\\nParse.Cloud.define('hello', function(req, resp) {\\n let someVariable = \\\"\\\";\\n let otherVariable = \\\"
\\\";\\n});\";\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_CodeSnippet_CodeSnippet_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n source: source,\n language: \"javascript\"\n });\n }\n}, {\n name: 'Print JSON',\n render: function render() {\n var obj = {\n \"this\": 'is awesome',\n awesome: true\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_CodeSnippet_CodeSnippet_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n source: JSON.stringify(obj, null, 4),\n language: \"javascript\"\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/CodeSnippet/CodeSnippet.example.js?");
+
+/***/ }),
+
+/***/ "./components/CodeSnippet/CodeSnippet.react.js":
+/*!*****************************************************!*\
+ !*** ./components/CodeSnippet/CodeSnippet.react.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ CodeSnippet)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"../node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var prismjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! prismjs */ \"../node_modules/prismjs/prism.js\");\n/* harmony import */ var prismjs__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(prismjs__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _CodeSnippet_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./CodeSnippet.css */ \"./components/CodeSnippet/CodeSnippet.css\");\n/* harmony import */ var prismjs_plugins_line_numbers_prism_line_numbers__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prismjs/plugins/line-numbers/prism-line-numbers */ \"../node_modules/prismjs/plugins/line-numbers/prism-line-numbers.js\");\n/* harmony import */ var prismjs_plugins_line_numbers_prism_line_numbers__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prismjs_plugins_line_numbers_prism_line_numbers__WEBPACK_IMPORTED_MODULE_10__);\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\nvar CodeSnippet = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(CodeSnippet, _React$Component);\n\n var _super = _createSuper(CodeSnippet);\n\n function CodeSnippet() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, CodeSnippet);\n\n _this = _super.call(this);\n _this.codeRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createRef();\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(CodeSnippet, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._highlight();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._highlight();\n }\n }, {\n key: \"_highlight\",\n value: function _highlight() {\n prismjs__WEBPACK_IMPORTED_MODULE_8___default().highlightElement(this.codeRef.current);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n _this$props$fullPage = _this$props.fullPage,\n fullPage = _this$props$fullPage === void 0 ? true : _this$props$fullPage,\n _this$props$lineNumbe = _this$props.lineNumbers,\n lineNumbers = _this$props$lineNumbe === void 0 ? true : _this$props$lineNumbe;\n var classes = ['language-' + this.props.language];\n\n if (lineNumbers) {\n classes.push('line-numbers');\n }\n\n var pageStyle = fullPage ? {\n minHeight: 'calc(100vh - 96px)'\n } : {};\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"pre\", {\n style: _objectSpread({\n margin: 0\n }, pageStyle),\n className: classes.join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"code\", {\n style: pageStyle,\n ref: this.codeRef\n }, this.props.source));\n }\n }]);\n\n return CodeSnippet;\n}(react__WEBPACK_IMPORTED_MODULE_7__.Component);\n\n\nCodeSnippet.propTypes = {\n source: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].string.isRequired.describe('The source code to be rendered with syntax-highlighting.'),\n language: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].string.describe('The programming language of the snippet.'),\n fullPage: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].bool.describe('Pass false if this component doesn\\'t need to fill the whole page.'),\n lineNumbers: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].bool.describe('Pass false if this component doesn\\'t need to print line numbers.')\n};\n\n//# sourceURL=webpack:///./components/CodeSnippet/CodeSnippet.react.js?");
+
+/***/ }),
+
+/***/ "./components/ContextMenu/ContextMenu.example.js":
+/*!*******************************************************!*\
+ !*** ./components/ContextMenu/ContextMenu.example.js ***!
+ \*******************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_ContextMenu_ContextMenu_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/ContextMenu/ContextMenu.react */ \"./components/ContextMenu/ContextMenu.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_ContextMenu_ContextMenu_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n name: 'Context menu',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n style: {\n position: 'relative',\n height: '100px'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_ContextMenu_ContextMenu_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n x: 0,\n y: 0,\n items: [{\n text: 'Category 1',\n items: [{\n text: 'C1 Item 1',\n callback: function callback() {\n alert('C1 Item 1 clicked!');\n }\n }, {\n text: 'C1 Item 2',\n callback: function callback() {\n alert('C1 Item 2 clicked!');\n }\n }, {\n text: 'Sub Category 1',\n items: [{\n text: 'SC1 Item 1',\n callback: function callback() {\n alert('SC1 Item 1 clicked!');\n }\n }, {\n text: 'SC1 Item 2',\n callback: function callback() {\n alert('SC1 Item 2 clicked!');\n }\n }]\n }]\n }, {\n text: 'Category 2',\n items: [{\n text: 'C2 Item 1',\n callback: function callback() {\n alert('C2 Item 1 clicked!');\n }\n }, {\n text: 'C2 Item 2',\n callback: function callback() {\n alert('C2 Item 2 clicked!');\n }\n }]\n }]\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/ContextMenu/ContextMenu.example.js?");
+
+/***/ }),
+
+/***/ "./components/ContextMenu/ContextMenu.react.js":
+/*!*****************************************************!*\
+ !*** ./components/ContextMenu/ContextMenu.react.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"../node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_ContextMenu_ContextMenu_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/ContextMenu/ContextMenu.scss */ \"./components/ContextMenu/ContextMenu.scss\");\n\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar getPositionToFitVisibleScreen = function getPositionToFitVisibleScreen(ref) {\n if (ref.current) {\n var elBox = ref.current.getBoundingClientRect();\n var y = elBox.y + elBox.height < window.innerHeight ? 0 : window.innerHeight - (elBox.y + elBox.height); // If there's a previous element show current next to it.\n // Try on right side first, then on left if there's no place.\n\n var prevEl = ref.current.previousSibling;\n\n if (prevEl) {\n var prevElBox = prevEl.getBoundingClientRect();\n var showOnRight = prevElBox.x + prevElBox.width + elBox.width < window.innerWidth;\n return {\n x: showOnRight ? prevElBox.width : -elBox.width,\n y: y\n };\n }\n\n return {\n x: 0,\n y: y\n };\n }\n};\n\nvar MenuSection = function MenuSection(_ref) {\n var level = _ref.level,\n items = _ref.items,\n path = _ref.path,\n setPath = _ref.setPath,\n hide = _ref.hide;\n var sectionRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(),\n _useState2 = (0,_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState, 2),\n position = _useState2[0],\n setPosition = _useState2[1];\n\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n var newPosition = getPositionToFitVisibleScreen(sectionRef);\n newPosition && setPosition(newPosition);\n }, [sectionRef]);\n var style = position ? {\n left: position.x,\n top: position.y,\n opacity: 1\n } : {};\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"ul\", {\n ref: sectionRef,\n className: components_ContextMenu_ContextMenu_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].category,\n style: style\n }, items.map(function (item, index) {\n if (item.items) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"li\", {\n key: \"menu-section-\".concat(level, \"-\").concat(index),\n className: components_ContextMenu_ContextMenu_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].item,\n onMouseEnter: function onMouseEnter() {\n var newPath = path.slice(0, level + 1);\n newPath.push(index);\n setPath(newPath);\n }\n }, item.text);\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"li\", {\n key: \"menu-section-\".concat(level, \"-\").concat(index),\n className: components_ContextMenu_ContextMenu_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].option,\n onClick: function onClick() {\n item.callback && item.callback();\n hide();\n }\n }, item.text);\n }));\n};\n\nvar ContextMenu = function ContextMenu(_ref2) {\n var x = _ref2.x,\n y = _ref2.y,\n items = _ref2.items;\n\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)([0]),\n _useState4 = (0,_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState3, 2),\n path = _useState4[0],\n setPath = _useState4[1];\n\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(true),\n _useState6 = (0,_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState5, 2),\n visible = _useState6[0],\n setVisible = _useState6[1];\n\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n setVisible(true);\n }, [items]);\n\n var hide = function hide() {\n setVisible(false);\n setPath([0]);\n }; //#region Closing menu after clicking outside it\n\n\n var menuRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n\n function handleClickOutside(event) {\n if (menuRef.current && !menuRef.current.contains(event.target)) {\n hide();\n }\n }\n\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n document.addEventListener('mousedown', handleClickOutside);\n return function () {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }); //#endregion\n\n if (!visible) {\n return null;\n }\n\n var getItemsFromLevel = function getItemsFromLevel(level) {\n var result = items;\n\n for (var index = 1; index <= level; index++) {\n result = result[path[index]].items;\n }\n\n return result;\n };\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: components_ContextMenu_ContextMenu_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].menu,\n ref: menuRef,\n style: {\n left: x,\n top: y\n }\n }, path.map(function (position, level) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(MenuSection, {\n key: \"section-\".concat(position, \"-\").concat(level),\n path: path,\n setPath: setPath,\n level: level,\n items: getItemsFromLevel(level),\n hide: hide\n });\n }));\n};\n\nContextMenu.propTypes = {\n x: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].number.isRequired.describe('X context menu position.'),\n y: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].number.isRequired.describe('Y context menu position.'),\n items: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].array.isRequired.describe('Array with tree representation of context menu items.')\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ContextMenu);\n\n//# sourceURL=webpack:///./components/ContextMenu/ContextMenu.react.js?");
+
+/***/ }),
+
+/***/ "./components/CreditCardInput/CreditCardInput.example.js":
+/*!***************************************************************!*\
+ !*** ./components/CreditCardInput/CreditCardInput.example.js ***!
+ \***************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_CreditCardInput_CreditCardInput_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/CreditCardInput/CreditCardInput.react */ \"./components/CreditCardInput/CreditCardInput.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar Demo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Demo, _React$Component);\n\n var _super = _createSuper(Demo);\n\n function Demo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Demo);\n\n _this = _super.call(this);\n _this.state = {\n value: null\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Demo, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_CreditCardInput_CreditCardInput_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n value: this.state.value,\n lastFour: this.props.lastFour,\n onChange: function onChange(value) {\n return _this2.setState({\n value: value\n });\n }\n });\n }\n }]);\n\n return Demo;\n}(react__WEBPACK_IMPORTED_MODULE_6__.Component);\n\nvar component = components_CreditCardInput_CreditCardInput_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n style: {\n width: 500,\n margin: '0 auto'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n text: \"Empty demo\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(Demo, null)\n }));\n }\n}, {\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n style: {\n width: 500,\n margin: '0 auto'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n text: \"Prefilled with last four\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(Demo, {\n lastFour: \"1234\"\n })\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/CreditCardInput/CreditCardInput.example.js?");
+
+/***/ }),
+
+/***/ "./components/CreditCardInput/CreditCardInput.react.js":
+/*!*************************************************************!*\
+ !*** ./components/CreditCardInput/CreditCardInput.react.js ***!
+ \*************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var components_CreditCardInput_CreditCardInput_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/CreditCardInput/CreditCardInput.scss */ \"./components/CreditCardInput/CreditCardInput.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar VALID_REGEX = /^[\\d ]*$/;\n\nvar CreditCardInput = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(CreditCardInput, _React$Component);\n\n var _super = _createSuper(CreditCardInput);\n\n function CreditCardInput() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, CreditCardInput);\n\n _this = _super.call(this);\n _this.state = {\n cursorPosition: 0\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(CreditCardInput, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n react_dom__WEBPACK_IMPORTED_MODULE_7__.findDOMNode(this).setSelectionRange(this.state.cursorPosition, this.state.cursorPosition);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n value = _this$props.value,\n lastFour = _this$props.lastFour,\n _onChange = _this$props.onChange;\n var prefilled = false;\n\n if (value == null && lastFour) {\n prefilled = true;\n value = \"\\u2022\\u2022\\u2022\\u2022 \\u2022\\u2022\\u2022\\u2022 \\u2022\\u2022\\u2022\\u2022 \".concat(lastFour);\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"input\", {\n type: \"text\",\n className: components_CreditCardInput_CreditCardInput_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].input,\n value: value,\n onFocus: function onFocus() {\n if (prefilled) {\n _onChange('');\n }\n },\n onChange: function onChange(e) {\n var newValue = e.target.value;\n\n if (VALID_REGEX.test(newValue)) {\n _onChange(newValue.replace(/\\s/g, ''));\n\n _this2.setState({\n cursorPosition: e.target.selectionStart\n });\n } else {\n //If they try to type a non-digit, don't move the cursor.\n _this2.setState({\n cursorPosition: e.target.selectionStart - 1\n });\n }\n }\n });\n }\n }]);\n\n return CreditCardInput;\n}(react__WEBPACK_IMPORTED_MODULE_6__.Component);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CreditCardInput);\nCreditCardInput.propTypes = {\n value: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.describe('The current value of the controlled input.'),\n lastFour: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.describe('If provided, and the current value is falsy, the input will render as \"•••• •••• •••• {lastFour}\"'),\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].func.describe('A function called when the input is changed.')\n};\n\n//# sourceURL=webpack:///./components/CreditCardInput/CreditCardInput.react.js?");
+
+/***/ }),
+
+/***/ "./components/DataBrowserHeader/DataBrowserHeader.example.js":
+/*!*******************************************************************!*\
+ !*** ./components/DataBrowserHeader/DataBrowserHeader.example.js ***!
+ \*******************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_DataBrowserHeader_DataBrowserHeader_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/DataBrowserHeader/DataBrowserHeader.react */ \"./components/DataBrowserHeader/DataBrowserHeader.react.js\");\n/* harmony import */ var react_dnd_html5_backend__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-dnd-html5-backend */ \"../node_modules/react-dnd-html5-backend/dist/esm/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dnd__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-dnd */ \"../node_modules/react-dnd/dist/esm/common/DndProvider.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar component = components_DataBrowserHeader_DataBrowserHeader_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\nvar lightBg = {\n background: 'rgba(224,224,234,0.10)'\n};\n\nvar HeadersDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(HeadersDemo, _React$Component);\n\n var _super = _createSuper(HeadersDemo);\n\n function HeadersDemo() {\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, HeadersDemo);\n\n return _super.apply(this, arguments);\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(HeadersDemo, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(react_dnd__WEBPACK_IMPORTED_MODULE_7__.DndProvider, {\n backend: react_dnd_html5_backend__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n style: {\n height: 30,\n background: '#66637A'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n style: {\n \"float\": 'left',\n width: 140\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_DataBrowserHeader_DataBrowserHeader_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n name: \"objectId\",\n type: \"Special\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n style: {\n \"float\": 'left',\n width: 140\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_DataBrowserHeader_DataBrowserHeader_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n name: \"createdAt\",\n type: \"Date\",\n style: lightBg\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n style: {\n \"float\": 'left',\n width: 140\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_DataBrowserHeader_DataBrowserHeader_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n name: \"updatedAt\",\n type: \"Date\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n style: {\n \"float\": 'left',\n width: 140\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_DataBrowserHeader_DataBrowserHeader_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n name: \"name\",\n type: \"String\",\n style: lightBg\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n style: {\n \"float\": 'left',\n width: 140\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_DataBrowserHeader_DataBrowserHeader_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n name: \"owner\",\n type: \"Pointer<_User>\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n style: {\n \"float\": 'left',\n width: 140\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_DataBrowserHeader_DataBrowserHeader_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n name: \"really_long_column_name_that_overflows\",\n type: \"String\",\n style: lightBg\n }))));\n }\n }]);\n\n return HeadersDemo;\n}(react__WEBPACK_IMPORTED_MODULE_6__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(HeadersDemo, null);\n }\n}];\n\n//# sourceURL=webpack:///./components/DataBrowserHeader/DataBrowserHeader.example.js?");
+
+/***/ }),
+
+/***/ "./components/DataBrowserHeader/DataBrowserHeader.react.js":
+/*!*****************************************************************!*\
+ !*** ./components/DataBrowserHeader/DataBrowserHeader.react.js ***!
+ \*****************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_DataBrowserHeader_DataBrowserHeader_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/DataBrowserHeader/DataBrowserHeader.scss */ \"./components/DataBrowserHeader/DataBrowserHeader.scss\");\n/* harmony import */ var stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! stylesheets/base.scss */ \"./stylesheets/base.scss\");\n/* harmony import */ var react_dnd__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-dnd */ \"../node_modules/react-dnd/dist/esm/decorators/DropTarget.js\");\n/* harmony import */ var react_dnd__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-dnd */ \"../node_modules/react-dnd/dist/esm/decorators/DragSource.js\");\n\n\n\n\n\n\nvar _dec, _dec2, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar Types = {\n DATA_BROWSER_HEADER: 'dataBrowserHeader'\n};\nvar dataBrowserHeaderTarget = {\n drop: function drop(props, monitor) {\n var item = monitor.getItem();\n\n if (!item) {\n return;\n }\n\n var dragIndex = item.index;\n var hoverIndex = props.index; // Don't replace items with themselves\n\n if (dragIndex === hoverIndex) {\n return;\n }\n\n props.moveDataBrowserHeader(dragIndex, hoverIndex);\n }\n};\nvar dataBrowserHeaderSource = {\n beginDrag: function beginDrag(props) {\n return {\n name: props.name,\n index: props.index\n };\n }\n};\nvar DataBrowserHeader = (_dec = (0,react_dnd__WEBPACK_IMPORTED_MODULE_9__.DropTarget)(Types.DATA_BROWSER_HEADER, dataBrowserHeaderTarget, function (connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver()\n };\n}), _dec2 = (0,react_dnd__WEBPACK_IMPORTED_MODULE_10__.DragSource)(Types.DATA_BROWSER_HEADER, dataBrowserHeaderSource, function (connect, monitor) {\n return {\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging()\n };\n}), _dec(_class = _dec2(_class = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DataBrowserHeader, _React$Component);\n\n var _super = _createSuper(DataBrowserHeader);\n\n function DataBrowserHeader() {\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, DataBrowserHeader);\n\n return _super.apply(this, arguments);\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(DataBrowserHeader, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n connectDragSource = _this$props.connectDragSource,\n connectDropTarget = _this$props.connectDropTarget,\n name = _this$props.name,\n type = _this$props.type,\n targetClass = _this$props.targetClass,\n order = _this$props.order,\n style = _this$props.style,\n isDragging = _this$props.isDragging,\n isOver = _this$props.isOver;\n var classes = [components_DataBrowserHeader_DataBrowserHeader_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].header, stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].unselectable];\n\n if (order) {\n classes.push(components_DataBrowserHeader_DataBrowserHeader_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"][order]);\n }\n\n if (isOver && !isDragging) {\n classes.push(components_DataBrowserHeader_DataBrowserHeader_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].over);\n }\n\n if (isDragging) {\n classes.push(components_DataBrowserHeader_DataBrowserHeader_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].dragging);\n }\n\n return connectDragSource(connectDropTarget( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n className: classes.join(' '),\n style: style\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n className: components_DataBrowserHeader_DataBrowserHeader_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].name\n }, name), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n className: components_DataBrowserHeader_DataBrowserHeader_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].type\n }, targetClass ? \"\".concat(type, \" <\").concat(targetClass, \">\") : type))));\n }\n }]);\n\n return DataBrowserHeader;\n}(react__WEBPACK_IMPORTED_MODULE_6__.Component)) || _class) || _class);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DataBrowserHeader);\nDataBrowserHeader.propTypes = {\n name: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.isRequired.describe('The name of the column.'),\n type: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.describe('The type of the column.'),\n targetClass: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.describe('The target class for a Pointer or Relation.'),\n order: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].oneOf(['ascending', 'descending']).describe('A sort ordering that displays as an arrow in the header.')\n};\n\n//# sourceURL=webpack:///./components/DataBrowserHeader/DataBrowserHeader.react.js?");
+
+/***/ }),
+
+/***/ "./components/DatePicker/DatePicker.example.js":
+/*!*****************************************************!*\
+ !*** ./components/DatePicker/DatePicker.example.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_DatePicker_DatePicker_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/DatePicker/DatePicker.react */ \"./components/DatePicker/DatePicker.react.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar component = components_DatePicker_DatePicker_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n\nvar DatePickerDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DatePickerDemo, _React$Component);\n\n var _super = _createSuper(DatePickerDemo);\n\n function DatePickerDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, DatePickerDemo);\n\n _this = _super.call(this);\n _this.state = {\n value: null\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(DatePickerDemo, [{\n key: \"handleChange\",\n value: function handleChange(newValue) {\n this.setState({\n value: newValue\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_DatePicker_DatePicker_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n value: this.state.value,\n onChange: this.handleChange.bind(this)\n });\n }\n }]);\n\n return DatePickerDemo;\n}(react__WEBPACK_IMPORTED_MODULE_8__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n style: {\n width: 500,\n margin: '0 auto'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n text: \"When should we deliver the notification?\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(DatePickerDemo, null)\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/DatePicker/DatePicker.example.js?");
+
+/***/ }),
+
+/***/ "./components/DatePicker/DatePicker.react.js":
+/*!***************************************************!*\
+ !*** ./components/DatePicker/DatePicker.react.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DatePicker)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_Calendar_Calendar_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/Calendar/Calendar.react */ \"./components/Calendar/Calendar.react.js\");\n/* harmony import */ var lib_Constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/Constants */ \"./lib/Constants.js\");\n/* harmony import */ var lib_DateUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lib/DateUtils */ \"./lib/DateUtils.js\");\n/* harmony import */ var components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/Popover/Popover.react */ \"./components/Popover/Popover.react.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var components_SliderWrap_SliderWrap_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! components/SliderWrap/SliderWrap.react */ \"./components/SliderWrap/SliderWrap.react.js\");\n/* harmony import */ var components_DatePicker_DatePicker_scss__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! components/DatePicker/DatePicker.scss */ \"./components/DatePicker/DatePicker.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\n\n\nvar DatePicker = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DatePicker, _React$Component);\n\n var _super = _createSuper(DatePicker);\n\n function DatePicker() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, DatePicker);\n\n _this = _super.call(this);\n _this.state = {\n open: false,\n position: null\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(DatePicker, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_11__.findDOMNode(this);\n }\n }, {\n key: \"toggle\",\n value: function toggle() {\n var _this2 = this;\n\n this.setState(function () {\n if (_this2.state.open) {\n return {\n open: false\n };\n }\n\n return {\n open: true,\n position: lib_Position__WEBPACK_IMPORTED_MODULE_9__[\"default\"].inDocument(_this2.node)\n };\n });\n }\n }, {\n key: \"close\",\n value: function close() {\n this.setState({\n open: false\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var popover = null;\n\n if (this.state.open) {\n var width = this.node.clientWidth;\n popover = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n position: this.state.position,\n onExternalClick: this.close.bind(this)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_SliderWrap_SliderWrap_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n direction: lib_Constants__WEBPACK_IMPORTED_MODULE_6__.Directions.DOWN,\n expanded: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(\"div\", {\n style: {\n width: width\n },\n className: components_DatePicker_DatePicker_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].picker\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Calendar_Calendar_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n value: this.props.value,\n onChange: function onChange(newValue) {\n _this3.setState({\n open: false\n }, _this3.props.onChange.bind(null, newValue));\n }\n }))));\n }\n\n var content = null;\n\n if (!this.props.value) {\n content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(\"div\", {\n className: components_DatePicker_DatePicker_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].placeholder\n }, \"Pick a date\\u2026\");\n } else {\n content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(\"div\", {\n className: components_DatePicker_DatePicker_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].value\n }, \"\".concat(lib_DateUtils__WEBPACK_IMPORTED_MODULE_7__.MONTHS[this.props.value.getMonth()].substr(0, 3), \" \").concat(this.props.value.getDate(), \", \").concat(this.props.value.getFullYear()));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(\"div\", {\n className: components_DatePicker_DatePicker_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].input,\n onClick: this.toggle.bind(this)\n }, content, popover);\n }\n }]);\n\n return DatePicker;\n}(react__WEBPACK_IMPORTED_MODULE_10__.Component);\n\n\n\n//# sourceURL=webpack:///./components/DatePicker/DatePicker.react.js?");
+
+/***/ }),
+
+/***/ "./components/DateRange/DateRange.example.js":
+/*!***************************************************!*\
+ !*** ./components/DateRange/DateRange.example.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_DateRange_DateRange_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/DateRange/DateRange.react */ \"./components/DateRange/DateRange.react.js\");\n/* harmony import */ var lib_Constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/Constants */ \"./lib/Constants.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar component = components_DateRange_DateRange_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n\nvar Demo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Demo, _React$Component);\n\n var _super = _createSuper(Demo);\n\n function Demo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Demo);\n\n _this = _super.call(this);\n _this.state = {\n value: {}\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Demo, [{\n key: \"handleChange\",\n value: function handleChange(newValue) {\n this.setState({\n value: newValue\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_DateRange_DateRange_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n value: this.state.value,\n onChange: this.handleChange.bind(this),\n align: this.props.align\n });\n }\n }]);\n\n return Demo;\n}(react__WEBPACK_IMPORTED_MODULE_7__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n style: {\n width: 500,\n margin: '0 auto'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(Demo, null));\n }\n}, {\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n style: {\n width: 500,\n margin: '0 auto',\n textAlign: 'right'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(Demo, {\n align: lib_Constants__WEBPACK_IMPORTED_MODULE_6__.Directions.RIGHT\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/DateRange/DateRange.example.js?");
+
+/***/ }),
+
+/***/ "./components/DateRange/DateRange.react.js":
+/*!*************************************************!*\
+ !*** ./components/DateRange/DateRange.react.js ***!
+ \*************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DateRange)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_Calendar_Calendar_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/Calendar/Calendar.react */ \"./components/Calendar/Calendar.react.js\");\n/* harmony import */ var lib_Constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/Constants */ \"./lib/Constants.js\");\n/* harmony import */ var components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Icon/Icon.react */ \"./components/Icon/Icon.react.js\");\n/* harmony import */ var lib_DateUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lib/DateUtils */ \"./lib/DateUtils.js\");\n/* harmony import */ var components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components/Popover/Popover.react */ \"./components/Popover/Popover.react.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var components_DateRange_DateRange_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! components/DateRange/DateRange.scss */ \"./components/DateRange/DateRange.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\n\n\n\nvar DateRange = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DateRange, _React$Component);\n\n var _super = _createSuper(DateRange);\n\n function DateRange(props) {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, DateRange);\n\n _this = _super.call(this);\n var val = props.value || {};\n _this.state = {\n open: false,\n position: null,\n start: val.start || (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_8__.monthsFrom)(new Date(), -1),\n end: val.end || new Date()\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(DateRange, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_13__.findDOMNode(this);\n }\n }, {\n key: \"toggle\",\n value: function toggle() {\n var _this2 = this;\n\n this.setState(function () {\n if (_this2.state.open) {\n return {\n open: false\n };\n }\n\n var pos = lib_Position__WEBPACK_IMPORTED_MODULE_10__[\"default\"].inWindow(_this2.node);\n\n if (_this2.props.align === lib_Constants__WEBPACK_IMPORTED_MODULE_6__.Directions.RIGHT) {\n pos.x += _this2.node.clientWidth;\n }\n\n return {\n open: true,\n position: pos\n };\n });\n }\n }, {\n key: \"setStart\",\n value: function setStart(start) {\n var end = this.state.end;\n\n if (start > end) {\n end = (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_8__.daysFrom)(start, 1);\n }\n\n this.setState({\n start: start,\n end: end\n });\n }\n }, {\n key: \"setEnd\",\n value: function setEnd(end) {\n var start = this.state.start;\n\n if (start > end) {\n start = (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_8__.daysFrom)(end, -1);\n }\n\n this.setState({\n start: start,\n end: end\n });\n }\n }, {\n key: \"close\",\n value: function close() {\n this.setState({\n open: false\n });\n this.props.onChange({\n start: this.state.start,\n end: this.state.end\n });\n }\n }, {\n key: \"rangeString\",\n value: function rangeString() {\n return \"\".concat((0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_8__.monthDayStringUTC)(this.state.start), \" - \").concat((0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_8__.monthDayStringUTC)(this.state.end));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var popover = null;\n var content = null;\n\n if (this.state.open) {\n var classes = [components_DateRange_DateRange_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].open];\n\n if (this.props.align === lib_Constants__WEBPACK_IMPORTED_MODULE_6__.Directions.RIGHT) {\n classes.push(components_DateRange_DateRange_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].right);\n }\n\n var renderShade = this.state.start.getFullYear() < this.state.end.getFullYear() || this.state.start.getMonth() !== this.state.end.getMonth();\n popover = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n fixed: true,\n position: this.state.position,\n onExternalClick: this.close.bind(this)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: classes.join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_DateRange_DateRange_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].calendars\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Calendar_Calendar_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n value: this.state.start,\n onChange: function onChange(start) {\n return _this3.setStart(start);\n },\n shadeAfter: renderShade\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Calendar_Calendar_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n value: this.state.end,\n onChange: function onChange(end) {\n return _this3.setEnd(end);\n },\n shadeBefore: renderShade\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_DateRange_DateRange_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].range,\n onClick: this.close.bind(this)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"span\", null, this.rangeString()), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n width: 18,\n height: 18,\n name: \"calendar-solid\",\n fill: \"#169CEE\"\n }))));\n } else {\n content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_DateRange_DateRange_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].range\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"span\", null, this.rangeString()), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n width: 18,\n height: 18,\n name: \"calendar-solid\",\n fill: \"#169CEE\"\n }));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_DateRange_DateRange_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].wrap,\n onClick: this.toggle.bind(this)\n }, content, popover);\n }\n }]);\n\n return DateRange;\n}(react__WEBPACK_IMPORTED_MODULE_12__.Component);\n\n\nDateRange.propTypes = {\n value: lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].object.describe('The value of the range. It has two props, \"start\" and \"end,\" which are both Dates.'),\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].func.describe('A function called when the date range is closed. It receives an object with two Date properties: start and end.'),\n align: lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].string.describe('The side to align the range selector with. Possible options are Constants.Directions.LEFT or Constants.Directions.RIGHT.')\n};\n\n//# sourceURL=webpack:///./components/DateRange/DateRange.react.js?");
+
+/***/ }),
+
+/***/ "./components/DateTimeEntry/DateTimeEntry.react.js":
+/*!*********************************************************!*\
+ !*** ./components/DateTimeEntry/DateTimeEntry.react.js ***!
+ \*********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DateTimeEntry)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_DateTimePicker_DateTimePicker_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/DateTimePicker/DateTimePicker.react */ \"./components/DateTimePicker/DateTimePicker.react.js\");\n/* harmony import */ var components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Popover/Popover.react */ \"./components/Popover/Popover.react.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\nvar DateTimeEntry = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DateTimeEntry, _React$Component);\n\n var _super = _createSuper(DateTimeEntry);\n\n function DateTimeEntry(props) {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, DateTimeEntry);\n\n _this = _super.call(this);\n _this.state = {\n open: false,\n position: null,\n value: props.value.toISOString ? props.value.toISOString() : props.value\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(DateTimeEntry, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(props) {\n this.setState({\n value: props.value.toISOString ? props.value.toISOString() : props.value\n });\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_9__.findDOMNode(this);\n }\n }, {\n key: \"toggle\",\n value: function toggle() {\n var _this2 = this;\n\n this.setState(function () {\n if (_this2.state.open) {\n return {\n open: false\n };\n }\n\n var pos = lib_Position__WEBPACK_IMPORTED_MODULE_7__[\"default\"].inDocument(_this2.node);\n pos.y += _this2.node.clientHeight;\n var height = 230 + _this2.node.clientWidth * 0.14;\n\n if (window.innerHeight - pos.y - height < 40) {\n pos.y = window.innerHeight - height - 40;\n }\n\n return {\n open: true,\n position: pos\n };\n });\n }\n }, {\n key: \"close\",\n value: function close() {\n this.setState({\n open: false\n });\n }\n }, {\n key: \"inputDate\",\n value: function inputDate(e) {\n this.setState({\n value: e.target.value,\n open: false\n });\n }\n }, {\n key: \"commitDate\",\n value: function commitDate() {\n if (this.state.value === this.props.value.toISOString()) {\n return;\n }\n\n var date = new Date(this.state.value);\n\n if (isNaN(date.getTime())) {\n this.setState({\n value: this.props.value.toISOString()\n });\n } else if (!this.state.value.toLowerCase().endsWith('z')) {\n var utc = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n this.props.onChange(utc);\n } else {\n this.props.onChange(date);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var popover = null;\n\n if (this.state.open) {\n popover = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n fixed: true,\n position: this.state.position,\n onExternalClick: this.close.bind(this),\n parentContentId: this.props.parentContentId\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_DateTimePicker_DateTimePicker_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n value: this.props.value,\n width: Math.max(this.node.clientWidth, 240),\n onChange: this.props.onChange,\n close: function close() {\n return _this3.setState({\n open: false\n });\n }\n }));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n className: this.props.className,\n onClick: this.toggle.bind(this)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"input\", {\n type: \"text\",\n value: this.state.value,\n onChange: this.inputDate.bind(this),\n onBlur: this.commitDate.bind(this)\n }), popover);\n }\n }]);\n\n return DateTimeEntry;\n}(react__WEBPACK_IMPORTED_MODULE_8__.Component);\n\n\n\n//# sourceURL=webpack:///./components/DateTimeEntry/DateTimeEntry.react.js?");
+
+/***/ }),
+
+/***/ "./components/DateTimeInput/DateTimeInput.example.js":
+/*!***********************************************************!*\
+ !*** ./components/DateTimeInput/DateTimeInput.example.js ***!
+ \***********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_DateTimeInput_DateTimeInput_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/DateTimeInput/DateTimeInput.react */ \"./components/DateTimeInput/DateTimeInput.react.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar component = components_DateTimeInput_DateTimeInput_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n\nvar DateTimeInputDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DateTimeInputDemo, _React$Component);\n\n var _super = _createSuper(DateTimeInputDemo);\n\n function DateTimeInputDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, DateTimeInputDemo);\n\n _this = _super.call(this);\n _this.state = {\n value: null\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(DateTimeInputDemo, [{\n key: \"handleChange\",\n value: function handleChange(newValue) {\n this.setState({\n value: newValue\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_DateTimeInput_DateTimeInput_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n local: this.props.local,\n value: this.state.value,\n onChange: this.handleChange.bind(this)\n });\n }\n }]);\n\n return DateTimeInputDemo;\n}(react__WEBPACK_IMPORTED_MODULE_8__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n style: {\n width: 500,\n margin: '0 auto'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n text: \"When should we deliver the notification in UTC time?\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(DateTimeInputDemo, null)\n }));\n }\n}, {\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n style: {\n width: 500,\n margin: '0 auto'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n text: \"When should we deliver the notification in local time?\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(DateTimeInputDemo, {\n local: true\n })\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/DateTimeInput/DateTimeInput.example.js?");
+
+/***/ }),
+
+/***/ "./components/DateTimeInput/DateTimeInput.react.js":
+/*!*********************************************************!*\
+ !*** ./components/DateTimeInput/DateTimeInput.react.js ***!
+ \*********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DateTimeInput)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_DateTimePicker_DateTimePicker_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/DateTimePicker/DateTimePicker.react */ \"./components/DateTimePicker/DateTimePicker.react.js\");\n/* harmony import */ var lib_DateUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/DateUtils */ \"./lib/DateUtils.js\");\n/* harmony import */ var components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Popover/Popover.react */ \"./components/Popover/Popover.react.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var components_DateTimeInput_DateTimeInput_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! components/DateTimeInput/DateTimeInput.scss */ \"./components/DateTimeInput/DateTimeInput.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\nvar DateTimeInput = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DateTimeInput, _React$Component);\n\n var _super = _createSuper(DateTimeInput);\n\n function DateTimeInput() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, DateTimeInput);\n\n _this = _super.call(this);\n _this.state = {\n open: false,\n position: null\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(DateTimeInput, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_10__.findDOMNode(this);\n }\n }, {\n key: \"toggle\",\n value: function toggle() {\n var _this2 = this;\n\n this.setState(function () {\n if (_this2.state.open) {\n return {\n open: false\n };\n }\n\n var pos = lib_Position__WEBPACK_IMPORTED_MODULE_8__[\"default\"].inDocument(_this2.node);\n var height = 230 + _this2.node.clientWidth * 0.14;\n\n if (_this2.props.fixed) {\n pos = lib_Position__WEBPACK_IMPORTED_MODULE_8__[\"default\"].inWindow(_this2.node);\n\n if (window.innerHeight - pos.y - height < 40) {\n pos.y = window.innerHeight - height - 40;\n }\n } else {\n if (document.body.clientHeight - pos.y - height < 60) {\n pos.y = document.body.clientHeight - height - 60;\n }\n }\n\n return {\n open: true,\n position: pos\n };\n });\n }\n }, {\n key: \"close\",\n value: function close() {\n this.setState({\n open: false\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var popover = null;\n\n if (this.state.open) {\n popover = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n fixed: this.props.fixed,\n position: this.state.position,\n onExternalClick: this.close.bind(this)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_DateTimePicker_DateTimePicker_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n local: this.props.local,\n value: this.props.value,\n width: this.node.clientWidth,\n onChange: this.props.onChange,\n close: function close() {\n return _this3.setState({\n open: false\n });\n }\n }));\n }\n\n var content = null;\n\n if (!this.props.value) {\n content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n className: components_DateTimeInput_DateTimeInput_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].placeholder\n }, \"Pick a date and time\\u2026\");\n } else {\n content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n className: components_DateTimeInput_DateTimeInput_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].value\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"strong\", null, lib_DateUtils__WEBPACK_IMPORTED_MODULE_6__.MONTHS[this.props.value[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_6__.getDateMethod)(this.props.local, 'getMonth')]()].substr(0, 3) + ' ' + this.props.value[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_6__.getDateMethod)(this.props.local, 'getDate')]()), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"span\", null, \" at \"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"strong\", null, this.props.value[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_6__.getDateMethod)(this.props.local, 'getHours')](), \":\", (this.props.value[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_6__.getDateMethod)(this.props.local, 'getMinutes')]() < 10 ? '0' : '') + this.props.value[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_6__.getDateMethod)(this.props.local, 'getMinutes')]()), !this.props.local ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"span\", null, \" UTC\") : null);\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n className: components_DateTimeInput_DateTimeInput_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].input,\n onClick: this.props.disabled ? null : this.toggle.bind(this)\n }, content, popover);\n }\n }]);\n\n return DateTimeInput;\n}(react__WEBPACK_IMPORTED_MODULE_9__.Component);\n\n\n\n//# sourceURL=webpack:///./components/DateTimeInput/DateTimeInput.react.js?");
+
+/***/ }),
+
+/***/ "./components/DateTimePicker/DateTimePicker.react.js":
+/*!***********************************************************!*\
+ !*** ./components/DateTimePicker/DateTimePicker.react.js ***!
+ \***********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DateTimePicker)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_Button_Button_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/Button/Button.react */ \"./components/Button/Button.react.js\");\n/* harmony import */ var components_Calendar_Calendar_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Calendar/Calendar.react */ \"./components/Calendar/Calendar.react.js\");\n/* harmony import */ var lib_DateUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lib/DateUtils */ \"./lib/DateUtils.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_DateTimePicker_DateTimePicker_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! components/DateTimePicker/DateTimePicker.scss */ \"./components/DateTimePicker/DateTimePicker.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\nvar DateTimePicker = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DateTimePicker, _React$Component);\n\n var _super = _createSuper(DateTimePicker);\n\n function DateTimePicker(props) {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, DateTimePicker);\n\n _this = _super.call(this);\n var timeRef = props.value || (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_7__.hoursFrom)(new Date(), 1);\n _this.state = {\n hours: String(timeRef[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_7__.getDateMethod)(props.local, 'getHours')]()),\n minutes: (timeRef[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_7__.getDateMethod)(props.local, 'getMinutes')]() < 10 ? '0' : '') + String(timeRef[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_7__.getDateMethod)(props.local, 'getMinutes')]())\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(DateTimePicker, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(props) {\n var timeRef = props.value || (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_7__.hoursFrom)(new Date(), 1);\n this.setState({\n hours: String(timeRef[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_7__.getDateMethod)(props.local, 'getHours')]()),\n minutes: (timeRef[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_7__.getDateMethod)(props.local, 'getMinutes')]() < 10 ? '0' : '') + String(timeRef[(0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_7__.getDateMethod)(props.local, 'getMinutes')]())\n });\n }\n }, {\n key: \"changeHours\",\n value: function changeHours(e) {\n var hoursString = e.target.value;\n\n if (hoursString === '') {\n return this.setState({\n hours: ''\n });\n }\n\n if (isNaN(hoursString)) {\n return;\n }\n\n var hours = parseInt(hoursString, 10);\n\n if (hours < 0) {\n hours = 0;\n }\n\n if (hours > 23) {\n hours = 23;\n }\n\n this.setState({\n hours: String(hours)\n });\n }\n }, {\n key: \"changeMinutes\",\n value: function changeMinutes(e) {\n var minutesString = e.target.value;\n\n if (minutesString === '') {\n return this.setState({\n minutes: ''\n });\n }\n\n if (isNaN(minutesString)) {\n return;\n }\n\n var minutes = parseInt(minutesString, 10);\n\n if (minutes < 0) {\n minutes = 0;\n }\n\n if (minutes > 59) {\n minutes = 59;\n }\n\n this.setState({\n minutes: String(minutes)\n });\n }\n }, {\n key: \"commitTime\",\n value: function commitTime() {\n var dateRef = this.props.value || new Date();\n var newDate = this.props.local ? new Date(dateRef.getFullYear(), dateRef.getMonth(), dateRef.getDate(), parseInt(this.state.hours, 10), parseInt(this.state.minutes, 10)) : new Date(Date.UTC(dateRef.getUTCFullYear(), dateRef.getUTCMonth(), dateRef.getUTCDate(), parseInt(this.state.hours, 10), parseInt(this.state.minutes, 10)));\n this.props.onChange(newDate);\n\n if (this.props.close) {\n this.props.close();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n style: {\n width: this.props.width\n },\n className: components_DateTimePicker_DateTimePicker_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].picker,\n onClick: function onClick(e) {\n return e.stopPropagation();\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_Calendar_Calendar_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n local: this.props.local,\n value: this.props.value,\n onChange: function onChange(newValue) {\n var timeRef = _this2.props.value || (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_7__.hoursFrom)(new Date(), 1);\n var newDate = _this2.props.local ? new Date(newValue.getFullYear(), newValue.getMonth(), newValue.getDate(), timeRef.getHours(), timeRef.getMinutes()) : new Date(Date.UTC(newValue.getUTCFullYear(), newValue.getUTCMonth(), newValue.getUTCDate(), timeRef.getUTCHours(), timeRef.getUTCMinutes()));\n\n _this2.props.onChange(newDate);\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n className: components_DateTimePicker_DateTimePicker_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].time\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n style: {\n \"float\": 'left'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"input\", {\n type: \"text\",\n value: this.state.hours,\n onChange: this.changeHours.bind(this)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"span\", null, \" : \"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"input\", {\n type: \"text\",\n value: this.state.minutes,\n onChange: this.changeMinutes.bind(this)\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n value: \"Set time\",\n onClick: this.commitTime.bind(this),\n primary: true\n })));\n }\n }]);\n\n return DateTimePicker;\n}(react__WEBPACK_IMPORTED_MODULE_9__.Component);\n\n\nDateTimePicker.propTypes = {\n value: lib_PropTypes__WEBPACK_IMPORTED_MODULE_8__[\"default\"].instanceOf(Date).describe('The current date of the picker.'),\n width: lib_PropTypes__WEBPACK_IMPORTED_MODULE_8__[\"default\"].number.isRequired.describe('The width of the calendar.'),\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_8__[\"default\"].func.isRequired.describe('A function to call when a new date is selected.'),\n close: lib_PropTypes__WEBPACK_IMPORTED_MODULE_8__[\"default\"].func.describe('An optional function to call to close the calendar.'),\n local: lib_PropTypes__WEBPACK_IMPORTED_MODULE_8__[\"default\"].bool.describe('An option flag to set when using a local DateTimeInput.')\n};\n\n//# sourceURL=webpack:///./components/DateTimePicker/DateTimePicker.react.js?");
+
+/***/ }),
+
+/***/ "./components/DonutChart/DonutChart.example.js":
+/*!*****************************************************!*\
+ !*** ./components/DonutChart/DonutChart.example.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var components_DonutChart_DonutChart_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/DonutChart/DonutChart.react */ \"./components/DonutChart/DonutChart.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_DonutChart_DonutChart_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nvar demos = [{\n name: 'Simple DonutChart',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_DonutChart_DonutChart_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n segments: [20, 100, 30]\n });\n }\n}, {\n name: 'DonutChart without Dominant Value',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_DonutChart_DonutChart_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n segments: [0.20, 0.25, 0.30, 0.40],\n label: \"Installations\"\n });\n }\n}, {\n name: 'Progress Bar with DonutChart',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_DonutChart_DonutChart_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n segments: [20, 100],\n isMonochrome: true,\n printPercentage: true,\n label: \"20/120GB\"\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/DonutChart/DonutChart.example.js?");
+
+/***/ }),
+
+/***/ "./components/DonutChart/DonutChart.react.js":
+/*!***************************************************!*\
+ !*** ./components/DonutChart/DonutChart.react.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_DonutChart_DonutChart_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/DonutChart/DonutChart.scss */ \"./components/DonutChart/DonutChart.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar CHART_COLORS = ['#b9e88b', '#fac786', '#80eeef', '#dfb3eb', '#fd9fb0'];\nvar MONOCHROME_COLORS = ['#3b2c48', '#e0e0ea'];\n\nvar DonutChart = function DonutChart(_ref) {\n var _ref$segments = _ref.segments,\n segments = _ref$segments === void 0 ? [] : _ref$segments,\n _ref$diameter = _ref.diameter,\n diameter = _ref$diameter === void 0 ? 200 : _ref$diameter,\n _ref$label = _ref.label,\n label = _ref$label === void 0 ? '' : _ref$label,\n _ref$isMonochrome = _ref.isMonochrome,\n isMonochrome = _ref$isMonochrome === void 0 ? false : _ref$isMonochrome,\n _ref$printPercentage = _ref.printPercentage,\n printPercentage = _ref$printPercentage === void 0 ? false : _ref$printPercentage;\n var centerX = diameter / 2;\n var centerY = centerX;\n var radius = centerX * 0.9;\n var lastX = centerX;\n var lastY = centerY - radius;\n var alpha = Math.PI / 2;\n var sum = 0.0;\n\n for (var i = 0; i < segments.length; ++i) {\n sum += segments[i];\n }\n\n var paths = [];\n\n for (var _i = 0; _i < segments.length; ++_i) {\n var arc = segments[_i] / sum * 2 * Math.PI;\n var angle = alpha - Math.min(arc, Math.PI);\n var endX = radius * Math.cos(angle) + centerX;\n var endY = -radius * Math.sin(angle) + centerY;\n var path = ['M', centerY, centerY, 'L', lastX, lastY, 'A', radius, radius, 0, 0, 1, endX, endY];\n\n if (arc > Math.PI) {\n angle = alpha - arc;\n endX = radius * Math.cos(angle) + centerX;\n endY = -radius * Math.sin(angle) + centerY;\n path = path.concat(['A', radius, radius, 0, 0, 1, endX, endY]);\n }\n\n path.push('Z');\n paths.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"path\", {\n className: components_DonutChart_DonutChart_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].path,\n d: path.join(' '),\n style: {\n fill: isMonochrome ? MONOCHROME_COLORS[_i % 2] : CHART_COLORS[_i],\n transformOrigin: \"\".concat(centerY, \"px \").concat(centerX, \"px 0px\")\n },\n key: \"segment\".concat(_i)\n }));\n lastX = endX;\n lastY = endY;\n alpha = angle;\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"svg\", {\n style: {\n width: diameter,\n height: diameter\n }\n }, paths, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"circle\", {\n className: components_DonutChart_DonutChart_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].donutCenter,\n cx: centerX,\n cy: centerY,\n r: centerX * 0.8\n }), segments.map(function (segment, i) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"text\", {\n className: components_DonutChart_DonutChart_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].donutValue,\n textAnchor: \"middle\",\n x: centerX,\n y: centerY,\n key: \"segment\".concat(i)\n }, printPercentage ? (segment / sum * 100).toFixed(2) + '%' : segment);\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"text\", {\n className: components_DonutChart_DonutChart_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].donutLabel,\n textAnchor: \"middle\",\n x: centerX,\n y: centerY + 20\n }, label));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DonutChart);\nDonutChart.propTypes = {\n 'segments': lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].arrayOf(lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].number).isRequired.describe('Values of the DonutChart.'),\n 'diameter': lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].number.describe('Width and height of the DonutChart.'),\n 'label': lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].string.describe('Additional string to be appended after each rendered value in DonutChart.'),\n 'isMonochrome': lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].bool.describe('Whether the DonutChart is monochrome/bicolor (usually used for progress bar).'),\n 'printPercentage': lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].bool.describe('Whether the DonutChart should render percentage of each segment instead of the actual value.')\n};\n\n//# sourceURL=webpack:///./components/DonutChart/DonutChart.react.js?");
+
+/***/ }),
+
+/***/ "./components/DragHandle/DragHandle.example.js":
+/*!*****************************************************!*\
+ !*** ./components/DragHandle/DragHandle.example.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_DataBrowserHeader_DataBrowserHeader_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/DataBrowserHeader/DataBrowserHeader.react */ \"./components/DataBrowserHeader/DataBrowserHeader.react.js\");\n/* harmony import */ var components_DragHandle_DragHandle_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/DragHandle/DragHandle.react */ \"./components/DragHandle/DragHandle.react.js\");\n/* harmony import */ var react_dnd_html5_backend__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-dnd-html5-backend */ \"../node_modules/react-dnd-html5-backend/dist/esm/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dnd__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-dnd */ \"../node_modules/react-dnd/dist/esm/common/DndProvider.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar component = components_DragHandle_DragHandle_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n\nvar DragDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DragDemo, _React$Component);\n\n var _super = _createSuper(DragDemo);\n\n function DragDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, DragDemo);\n\n _this = _super.call(this);\n _this.state = {\n x: 100,\n y: 100\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(DragDemo, [{\n key: \"handleDrag\",\n value: function handleDrag(dx, dy) {\n this.setState(function (_ref) {\n var x = _ref.x,\n y = _ref.y;\n var newX = Math.max(0, Math.min(x + dx, 480));\n var newY = Math.max(0, Math.min(y + dy, 480));\n return {\n x: newX,\n y: newY\n };\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var style = {\n width: 20,\n height: 20,\n background: '#5298fc',\n borderRadius: 10,\n cursor: 'move',\n position: 'absolute',\n left: this.state.x,\n top: this.state.y\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n style: {\n position: 'relative',\n width: 500,\n height: 500,\n border: '1px solid #e3e3e3',\n margin: '40px auto'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_DragHandle_DragHandle_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n onDrag: this.handleDrag.bind(this),\n style: style\n }));\n }\n }]);\n\n return DragDemo;\n}(react__WEBPACK_IMPORTED_MODULE_7__.Component);\n\nvar lightBg = {\n background: 'rgba(224,224,234,0.10)'\n};\nvar handleStyle = {\n position: 'relative',\n display: 'inline-block',\n width: 4,\n height: 30,\n marginLeft: -2,\n marginRight: -2,\n cursor: 'ew-resize'\n};\n\nvar HeadersDemo = /*#__PURE__*/function (_React$Component2) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(HeadersDemo, _React$Component2);\n\n var _super2 = _createSuper(HeadersDemo);\n\n function HeadersDemo() {\n var _this2;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, HeadersDemo);\n\n _this2 = _super2.call(this);\n _this2.state = {\n widths: [140, 140, 140, 140, 140, 140]\n };\n return _this2;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(HeadersDemo, [{\n key: \"handleDrag\",\n value: function handleDrag(index, dx) {\n this.setState(function (_ref2) {\n var widths = _ref2.widths;\n widths[index] = Math.max(40, widths[index] + dx);\n return {\n widths: widths\n };\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(react_dnd__WEBPACK_IMPORTED_MODULE_8__.DndProvider, {\n backend: react_dnd_html5_backend__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n style: {\n height: 30,\n background: '#66637A',\n whiteSpace: 'nowrap'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n style: {\n display: 'inline-block',\n width: this.state.widths[0]\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_DataBrowserHeader_DataBrowserHeader_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n name: \"objectId\",\n type: \"Special\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_DragHandle_DragHandle_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n style: handleStyle,\n onDrag: this.handleDrag.bind(this, 0)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n style: {\n display: 'inline-block',\n width: this.state.widths[1]\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_DataBrowserHeader_DataBrowserHeader_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n name: \"createdAt\",\n type: \"Date\",\n style: lightBg\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_DragHandle_DragHandle_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n style: handleStyle,\n onDrag: this.handleDrag.bind(this, 1)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n style: {\n display: 'inline-block',\n width: this.state.widths[2]\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_DataBrowserHeader_DataBrowserHeader_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n name: \"updatedAt\",\n type: \"Date\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_DragHandle_DragHandle_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n style: handleStyle,\n onDrag: this.handleDrag.bind(this, 2)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n style: {\n display: 'inline-block',\n width: this.state.widths[3]\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_DataBrowserHeader_DataBrowserHeader_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n name: \"name\",\n type: \"String\",\n style: lightBg\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_DragHandle_DragHandle_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n style: handleStyle,\n onDrag: this.handleDrag.bind(this, 3)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n style: {\n display: 'inline-block',\n width: this.state.widths[4]\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_DataBrowserHeader_DataBrowserHeader_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n name: \"owner\",\n type: \"Pointer<_User>\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_DragHandle_DragHandle_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n style: handleStyle,\n onDrag: this.handleDrag.bind(this, 4)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n style: {\n display: 'inline-block',\n width: this.state.widths[5]\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_DataBrowserHeader_DataBrowserHeader_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n name: \"really_long_column_name_that_overflows\",\n type: \"String\",\n style: lightBg\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_DragHandle_DragHandle_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n style: handleStyle,\n onDrag: this.handleDrag.bind(this, 5)\n })));\n }\n }]);\n\n return HeadersDemo;\n}(react__WEBPACK_IMPORTED_MODULE_7__.Component);\n\nvar demos = [{\n name: 'Drag the ball',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(DragDemo, null);\n }\n}, {\n name: 'Data Browser Headers',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(HeadersDemo, null);\n }\n}];\n\n//# sourceURL=webpack:///./components/DragHandle/DragHandle.example.js?");
+
+/***/ }),
+
+/***/ "./components/DragHandle/DragHandle.react.js":
+/*!***************************************************!*\
+ !*** ./components/DragHandle/DragHandle.react.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DragHandle)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n\n\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar DragHandle = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(DragHandle, _React$Component);\n\n var _super = _createSuper(DragHandle);\n\n function DragHandle() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, DragHandle);\n\n _this = _super.call(this);\n _this.onMouseDown = _this.onMouseDown.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_this));\n _this.onMouseMove = _this.onMouseMove.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_this));\n _this.onMouseUp = _this.onMouseUp.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_this));\n _this.mouseMoveHandler = _this.mouseMoveHandler.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_this));\n _this.lastEvent = null;\n _this.x = 0;\n _this.y = 0;\n _this.state = {\n dragging: false\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DragHandle, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (this.state.dragging && !prevState.dragging) {\n document.addEventListener('mousemove', this.onMouseMove);\n document.addEventListener('mouseup', this.onMouseUp);\n } else if (!this.state.dragging && prevState.dragging) {\n document.removeEventListener('mousemove', this.onMouseMove);\n document.removeEventListener('mouseup', this.onMouseUp);\n }\n }\n }, {\n key: \"onMouseDown\",\n value: function onMouseDown(e) {\n this.x = e.pageX;\n this.y = e.pageY;\n this.setState({\n dragging: true\n });\n e.preventDefault();\n e.stopPropagation();\n }\n }, {\n key: \"onMouseUp\",\n value: function onMouseUp(e) {\n this.setState({\n dragging: false\n });\n e.preventDefault();\n e.stopPropagation();\n }\n }, {\n key: \"onMouseMove\",\n value: function onMouseMove(e) {\n if (this.lastEvent) {\n return;\n }\n\n this.lastEvent = e;\n requestAnimationFrame(this.mouseMoveHandler);\n e.stopPropagation();\n e.preventDefault();\n }\n }, {\n key: \"mouseMoveHandler\",\n value: function mouseMoveHandler() {\n if (this.state.dragging) {\n this.props.onDrag(this.lastEvent.pageX - this.x, this.lastEvent.pageY - this.y);\n this.x = this.lastEvent.pageX;\n this.y = this.lastEvent.pageY;\n }\n\n this.lastEvent = null;\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, this.props, {\n onMouseDown: this.onMouseDown\n }));\n }\n }]);\n\n return DragHandle;\n}(react__WEBPACK_IMPORTED_MODULE_8__.Component);\n\n\nDragHandle.propTypes = {\n onDrag: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].func.isRequired.describe('A function called when the handle is dragged. It takes deltas for X and Y as the two parameters.')\n};\n\n//# sourceURL=webpack:///./components/DragHandle/DragHandle.react.js?");
+
+/***/ }),
+
+/***/ "./components/Dropdown/Dropdown.example.js":
+/*!*************************************************!*\
+ !*** ./components/Dropdown/Dropdown.example.js ***!
+ \*************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_Dropdown_Dropdown_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Dropdown/Dropdown.react */ \"./components/Dropdown/Dropdown.react.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components/Dropdown/Option.react */ \"./components/Dropdown/Option.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar component = components_Dropdown_Dropdown_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n\nvar DropdownDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(DropdownDemo, _React$Component);\n\n var _super = _createSuper(DropdownDemo);\n\n function DropdownDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, DropdownDemo);\n\n _this = _super.call(this);\n _this.state = {\n value: 'red'\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DropdownDemo, [{\n key: \"handleChange\",\n value: function handleChange(newValue) {\n this.setState({\n value: newValue\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Dropdown_Dropdown_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, this.props, {\n value: this.state.value,\n onChange: this.handleChange.bind(this)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n value: \"red\"\n }, \"Red\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n value: \"orange\"\n }, \"Orange\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n value: \"yellow\"\n }, \"Yellow\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n value: \"green\"\n }, \"Green\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n value: \"blue\"\n }, \"Blue\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n value: \"purple\"\n }, \"Purple\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n value: \"rainbow\"\n }, \"Rainbow\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n value: \"other\"\n }, \"No preference. Instead, I like really long strings\"));\n }\n }]);\n\n return DropdownDemo;\n}(react__WEBPACK_IMPORTED_MODULE_10__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(\"div\", {\n style: {\n width: 500,\n margin: '0 auto'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n text: \"What is your favorite color?\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(DropdownDemo, null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n text: \"Disabled input\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(DropdownDemo, {\n disabled: true\n })\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/Dropdown/Dropdown.example.js?");
+
+/***/ }),
+
+/***/ "./components/Dropdown/Dropdown.react.js":
+/*!***********************************************!*\
+ !*** ./components/Dropdown/Dropdown.react.js ***!
+ \***********************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Dropdown)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_Constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lib/Constants */ \"./lib/Constants.js\");\n/* harmony import */ var components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Popover/Popover.react */ \"./components/Popover/Popover.react.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var components_SliderWrap_SliderWrap_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! components/SliderWrap/SliderWrap.react */ \"./components/SliderWrap/SliderWrap.react.js\");\n/* harmony import */ var components_Dropdown_Dropdown_scss__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! components/Dropdown/Dropdown.scss */ \"./components/Dropdown/Dropdown.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\n\nvar Dropdown = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Dropdown, _React$Component);\n\n var _super = _createSuper(Dropdown);\n\n function Dropdown() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Dropdown);\n\n _this = _super.call(this);\n _this.state = {\n open: false,\n position: null\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Dropdown, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_10__.findDOMNode(this);\n }\n }, {\n key: \"toggle\",\n value: function toggle() {\n var _this2 = this;\n\n this.setState(function () {\n if (_this2.state.open) {\n return {\n open: false\n };\n }\n\n var pos = lib_Position__WEBPACK_IMPORTED_MODULE_7__[\"default\"].inDocument(_this2.node);\n\n if (_this2.props.fixed) {\n pos = lib_Position__WEBPACK_IMPORTED_MODULE_7__[\"default\"].inWindow(_this2.node);\n }\n\n return {\n open: true,\n position: pos\n };\n });\n }\n }, {\n key: \"close\",\n value: function close() {\n this.setState({\n open: false\n });\n }\n }, {\n key: \"select\",\n value: function select(value) {\n var _this3 = this;\n\n if (value === this.props.value) {\n return this.setState({\n open: false\n });\n }\n\n this.setState({\n open: false\n }, function () {\n _this3.props.onChange(value);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var popover = null;\n\n if (this.state.open && !this.props.disabled) {\n var width = this.node.clientWidth;\n var popoverChildren = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_SliderWrap_SliderWrap_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n direction: lib_Constants__WEBPACK_IMPORTED_MODULE_5__.Directions.DOWN,\n expanded: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n style: {\n width: width\n },\n className: components_Dropdown_Dropdown_scss__WEBPACK_IMPORTED_MODULE_12__[\"default\"].menu\n }, react__WEBPACK_IMPORTED_MODULE_9__.Children.map(this.props.children, function (c) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"button\", {\n type: \"button\",\n onClick: _this4.select.bind(_this4, c.props.value)\n }, c);\n })));\n popover = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n fixed: this.props.fixed,\n position: this.state.position,\n onExternalClick: this.close.bind(this)\n }, popoverChildren);\n }\n\n var content = null;\n react__WEBPACK_IMPORTED_MODULE_9__.Children.forEach(this.props.children, function (c) {\n if (!content && c.props.value === _this4.props.value) {\n content = c;\n }\n });\n\n if (!content) {\n content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n className: components_Dropdown_Dropdown_scss__WEBPACK_IMPORTED_MODULE_12__[\"default\"].placeHolder\n }, this.props.placeHolder);\n }\n\n var dropdownStyle = {};\n\n if (this.props.width) {\n dropdownStyle = {\n width: this.props.width,\n \"float\": 'left'\n };\n }\n\n var dropdownClasses = [components_Dropdown_Dropdown_scss__WEBPACK_IMPORTED_MODULE_12__[\"default\"].dropdown];\n\n if (this.props.disabled) {\n dropdownClasses.push(components_Dropdown_Dropdown_scss__WEBPACK_IMPORTED_MODULE_12__[\"default\"].disabled);\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n style: dropdownStyle,\n className: dropdownClasses.join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n className: [components_Dropdown_Dropdown_scss__WEBPACK_IMPORTED_MODULE_12__[\"default\"].current, this.props.hideArrow ? components_Dropdown_Dropdown_scss__WEBPACK_IMPORTED_MODULE_12__[\"default\"].hideArrow : ''].join(' '),\n onClick: this.toggle.bind(this)\n }, content), popover);\n }\n }]);\n\n return Dropdown;\n}(react__WEBPACK_IMPORTED_MODULE_9__.Component);\n\n\nDropdown.propTypes = {\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_8__[\"default\"].func.isRequired.describe('A function called when the dropdown is changed. It receives the new value as the only parameter.'),\n value: lib_PropTypes__WEBPACK_IMPORTED_MODULE_8__[\"default\"].string.describe('The currently-selected value of this controlled input.'),\n disabled: lib_PropTypes__WEBPACK_IMPORTED_MODULE_8__[\"default\"].bool.describe('Set to true to disable the dropdown.'),\n children: lib_PropTypes__WEBPACK_IMPORTED_MODULE_8__[\"default\"].node.isRequired.describe('The children of Dropdown should only be components.'),\n fixed: lib_PropTypes__WEBPACK_IMPORTED_MODULE_8__[\"default\"].bool.describe(\"Fixes the dropdown in place. Set to true in modals or other places where you don\\u2019t want the dropdown to move when you scroll.\"),\n placeHolder: lib_PropTypes__WEBPACK_IMPORTED_MODULE_8__[\"default\"].string.describe('Placeholder text used in place of default selection.'),\n hideArrow: lib_PropTypes__WEBPACK_IMPORTED_MODULE_8__[\"default\"].bool.describe('Flag to hide the dropdown arrow.')\n};\n\n//# sourceURL=webpack:///./components/Dropdown/Dropdown.react.js?");
+
+/***/ }),
+
+/***/ "./components/Dropdown/Option.react.js":
+/*!*********************************************!*\
+ !*** ./components/Dropdown/Option.react.js ***!
+ \*********************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Dropdown_Dropdown_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/Dropdown/Dropdown.scss */ \"./components/Dropdown/Dropdown.scss\");\n\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar Option = function Option(props) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n className: components_Dropdown_Dropdown_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].option\n }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Option);\n\n//# sourceURL=webpack:///./components/Dropdown/Option.react.js?");
+
+/***/ }),
+
+/***/ "./components/EmptyState/EmptyState.example.js":
+/*!*****************************************************!*\
+ !*** ./components/EmptyState/EmptyState.example.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_EmptyState_EmptyState_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/EmptyState/EmptyState.react */ \"./components/EmptyState/EmptyState.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_EmptyState_EmptyState_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n name: 'Example with Action callback',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n style: {\n height: '800px',\n position: 'relative'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_EmptyState_EmptyState_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n icon: 'icon_cloudCode',\n title: \"You don\\u2019t have any data here\",\n description: 'Once you create some data, you will be able to see it here',\n cta: 'CTA for this data',\n action: function action() {\n return alert('CTA was clicked');\n }\n }));\n }\n}, {\n name: 'Example with Action href',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n style: {\n height: '800px',\n position: 'relative'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_EmptyState_EmptyState_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n icon: 'icon_cloudCode',\n title: \"You don\\u2019t have any data here\",\n description: 'Once you create some data, you will be able to see it here',\n cta: 'CTA for this data',\n action: 'someLink'\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/EmptyState/EmptyState.example.js?");
+
+/***/ }),
+
+/***/ "./components/EmptyState/EmptyState.react.js":
+/*!***************************************************!*\
+ !*** ./components/EmptyState/EmptyState.react.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var components_Button_Button_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/Button/Button.react */ \"./components/Button/Button.react.js\");\n/* harmony import */ var components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Icon/Icon.react */ \"./components/Icon/Icon.react.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_EmptyState_EmptyState_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/EmptyState/EmptyState.scss */ \"./components/EmptyState/EmptyState.scss\");\n/* harmony import */ var components_Button_Button_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/Button/Button.scss */ \"./components/Button/Button.scss\");\n/* harmony import */ var stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! stylesheets/base.scss */ \"./stylesheets/base.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\nvar ctaButton = function ctaButton(cta, action) {\n if (cta) {\n if (action.constructor === String) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"a\", {\n href: action,\n className: [components_Button_Button_scss__WEBPACK_IMPORTED_MODULE_5__[\"default\"].button, components_Button_Button_scss__WEBPACK_IMPORTED_MODULE_5__[\"default\"].primary].join(' '),\n target: \"_blank\"\n }, cta);\n } else {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n value: cta,\n color: 'blue',\n primary: true,\n onClick: action\n });\n }\n } else {\n return null;\n }\n};\n\nvar EmptyState = function EmptyState(_ref) {\n var _ref$icon = _ref.icon,\n icon = _ref$icon === void 0 ? '' : _ref$icon,\n _ref$title = _ref.title,\n title = _ref$title === void 0 ? '' : _ref$title,\n _ref$description = _ref.description,\n description = _ref$description === void 0 ? '' : _ref$description,\n _ref$cta = _ref.cta,\n cta = _ref$cta === void 0 ? '' : _ref$cta,\n _ref$action = _ref.action,\n action = _ref$action === void 0 ? function () {} : _ref$action,\n _ref$secondaryCta = _ref.secondaryCta,\n secondaryCta = _ref$secondaryCta === void 0 ? '' : _ref$secondaryCta,\n _ref$secondaryAction = _ref.secondaryAction,\n secondaryAction = _ref$secondaryAction === void 0 ? function () {} : _ref$secondaryAction;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n className: stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_6__[\"default\"].center\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n className: components_EmptyState_EmptyState_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].icon\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n width: 80,\n height: 80,\n fill: \"#343445\",\n name: icon\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n className: components_EmptyState_EmptyState_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].title\n }, title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n className: components_EmptyState_EmptyState_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].description\n }, description), ctaButton(cta, action), secondaryCta && ' ', ctaButton(secondaryCta, secondaryAction));\n};\n\nEmptyState.propTypes = {\n icon: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].string.describe('The name of the large icon that appears in the empty state.'),\n title: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].string.describe('Help text that explains why this is an empty state; ' + \"usually because you haven\\u2019t created any data here.\"),\n description: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].node.describe('Help text that indicates how to leave the empty state, ' + 'usually by visiting docs or using the CTA.'),\n cta: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].string.describe('The text that appears in the CTA button.'),\n action: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].oneOfType([lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].string, lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].func]).describe('An href link or a click handler that is forwarded to the CTA button.'),\n secondaryCta: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].string.describe('The text that appears in the secondary CTA button.'),\n secondaryAction: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].oneOfType([lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].string, lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].func]).describe('An href link or a click handler that is forwarded to the secondary CTA button.')\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (EmptyState);\n\n//# sourceURL=webpack:///./components/EmptyState/EmptyState.react.js?");
+
+/***/ }),
+
+/***/ "./components/ExpirationDateInput/ExpirationDateInput.example.js":
+/*!***********************************************************************!*\
+ !*** ./components/ExpirationDateInput/ExpirationDateInput.example.js ***!
+ \***********************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_ExpirationDateInput_ExpirationDateInput_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/ExpirationDateInput/ExpirationDateInput.react */ \"./components/ExpirationDateInput/ExpirationDateInput.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar component = components_ExpirationDateInput_ExpirationDateInput_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n\nvar Demo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Demo, _React$Component);\n\n var _super = _createSuper(Demo);\n\n function Demo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Demo);\n\n _this = _super.call(this);\n _this.state = {\n month: 1,\n year: 2016\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Demo, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_ExpirationDateInput_ExpirationDateInput_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n month: this.state.month,\n year: this.state.year,\n onChange: function onChange(change) {\n return _this2.setState(change);\n }\n });\n }\n }]);\n\n return Demo;\n}(react__WEBPACK_IMPORTED_MODULE_8__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n style: {\n width: 500,\n margin: '0 auto'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n text: \"When does it expire?\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(Demo, null)\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/ExpirationDateInput/ExpirationDateInput.example.js?");
+
+/***/ }),
+
+/***/ "./components/ExpirationDateInput/ExpirationDateInput.react.js":
+/*!*********************************************************************!*\
+ !*** ./components/ExpirationDateInput/ExpirationDateInput.react.js ***!
+ \*********************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var components_Dropdown_Dropdown_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/Dropdown/Dropdown.react */ \"./components/Dropdown/Dropdown.react.js\");\n/* harmony import */ var components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Dropdown/Option.react */ \"./components/Dropdown/Option.react.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar months = [];\n\nfor (var i = 1; i <= 12; i++) {\n var value = (i < 10 ? '0' : '') + String(i);\n months.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n key: 'm' + i,\n value: String(i)\n }, value));\n}\n\nvar years = [];\nvar startYear = new Date().getFullYear();\n\nfor (var _i = 0; _i < 10; _i++) {\n var _value = String(startYear + _i);\n\n years.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n key: 'y' + _i,\n value: _value\n }, _value));\n}\n\nvar ExpirationDateInput = function ExpirationDateInput(_ref) {\n var month = _ref.month,\n year = _ref.year,\n _onChange = _ref.onChange;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Dropdown_Dropdown_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n width: \"40%\",\n value: String(month),\n onChange: function onChange(value) {\n return _onChange({\n month: parseInt(value, 10),\n year: year\n });\n }\n }, months), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Dropdown_Dropdown_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n width: \"60%\",\n value: String(year),\n onChange: function onChange(value) {\n return _onChange({\n month: month,\n year: parseInt(value, 10)\n });\n }\n }, years));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ExpirationDateInput);\nExpirationDateInput.propTypes = {\n month: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].number.describe('The expiration month.'),\n year: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].number.describe('The expiration year, in four-digit form.'),\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].func.isRequired.describe('A function called when the value changes. It receives an object with two parameters: the month and the year.')\n};\n\n//# sourceURL=webpack:///./components/ExpirationDateInput/ExpirationDateInput.react.js?");
+
+/***/ }),
+
+/***/ "./components/ExplorerActiveChartButton/ExplorerActiveChartButton.example.js":
+/*!***********************************************************************************!*\
+ !*** ./components/ExplorerActiveChartButton/ExplorerActiveChartButton.example.js ***!
+ \***********************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var components_ExplorerActiveChartButton_ExplorerActiveChartButton_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/ExplorerActiveChartButton/ExplorerActiveChartButton.react */ \"./components/ExplorerActiveChartButton/ExplorerActiveChartButton.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var lib_Constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lib/Constants */ \"./lib/Constants.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar component = components_ExplorerActiveChartButton_ExplorerActiveChartButton_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nvar QUERIES = [{\n name: 'Audience',\n children: [{\n name: 'Daily Active Installations',\n query: {},\n preset: true,\n nonComposable: true\n }, {\n name: 'Daily Active Users',\n query: {},\n preset: true,\n nonComposable: true\n }, {\n name: 'Monthly Active Installations',\n query: {},\n preset: true,\n nonComposable: true\n }, {\n name: 'Monthly Active Users',\n query: {},\n preset: true,\n nonComposable: true\n }]\n}, {\n name: 'Core',\n children: [{\n name: 'Gogo Count',\n query: {},\n preset: true\n }, {\n name: 'User Count',\n query: {},\n preset: true\n }, {\n name: 'Installation Count',\n query: {},\n preset: true\n }]\n}, {\n name: 'Events',\n children: [{\n name: 'API Requests',\n query: {},\n preset: true\n }, {\n name: 'Analytics Requests',\n query: {},\n preset: true\n }, {\n name: 'File Requests',\n query: {},\n preset: true\n }, {\n name: 'Push Notifications',\n query: {},\n preset: true\n }, {\n name: 'App Opens',\n query: {},\n preset: true\n }, {\n name: 'Push Opens',\n query: {},\n preset: true\n }]\n}, {\n name: 'Recent Queries',\n children: [{\n name: 'User Count Aggregate',\n query: {}\n }]\n}, {\n name: 'Saved Queries',\n children: [{\n name: 'Gogo Queries',\n query: {}\n }, {\n name: 'Saved Queries',\n query: {}\n }]\n}];\nvar demos = [{\n name: 'Default',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_ExplorerActiveChartButton_ExplorerActiveChartButton_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n queries: QUERIES,\n query: {\n name: 'User Count Aggregate'\n },\n color: lib_Constants__WEBPACK_IMPORTED_MODULE_2__.ChartColorSchemes[0],\n onSave: function onSave() {\n /* Do nothing */\n },\n onToggle: function onToggle() {\n /* Do nothing */\n }\n });\n }\n}, {\n name: 'With Custom Color',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_ExplorerActiveChartButton_ExplorerActiveChartButton_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n queries: QUERIES,\n query: {\n name: 'User Count Aggregate'\n },\n color: lib_Constants__WEBPACK_IMPORTED_MODULE_2__.ChartColorSchemes[1],\n onSave: function onSave() {\n /* Do nothing */\n },\n onToggle: function onToggle() {\n /* Do nothing */\n }\n });\n }\n}, {\n name: 'Without Dropdown',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_ExplorerActiveChartButton_ExplorerActiveChartButton_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n queries: QUERIES,\n query: {\n name: 'User Count Aggregate'\n },\n color: lib_Constants__WEBPACK_IMPORTED_MODULE_2__.ChartColorSchemes[1],\n onSave: function onSave() {\n /* Do nothing */\n },\n onToggle: function onToggle() {\n /* Do nothing */\n },\n disableDropdown: true\n });\n }\n}, {\n name: 'With Non-Composable Query',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_ExplorerActiveChartButton_ExplorerActiveChartButton_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n queries: QUERIES,\n query: {\n name: 'User Count Aggregate',\n nonComposable: true\n },\n color: lib_Constants__WEBPACK_IMPORTED_MODULE_2__.ChartColorSchemes[1],\n onSave: function onSave() {\n /* Do nothing */\n },\n onToggle: function onToggle() {\n /* Do nothing */\n }\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/ExplorerActiveChartButton/ExplorerActiveChartButton.example.js?");
+
+/***/ }),
+
+/***/ "./components/ExplorerActiveChartButton/ExplorerActiveChartButton.react.js":
+/*!*********************************************************************************!*\
+ !*** ./components/ExplorerActiveChartButton/ExplorerActiveChartButton.react.js ***!
+ \*********************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ExplorerActiveChartButton)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_Constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lib/Constants */ \"./lib/Constants.js\");\n/* harmony import */ var components_ExplorerQueryComposer_ExplorerQueryComposer_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/ExplorerQueryComposer/ExplorerQueryComposer.react */ \"./components/ExplorerQueryComposer/ExplorerQueryComposer.react.js\");\n/* harmony import */ var components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Icon/Icon.react */ \"./components/Icon/Icon.react.js\");\n/* harmony import */ var components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/Popover/Popover.react */ \"./components/Popover/Popover.react.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var components_ExplorerActiveChartButton_ExplorerActiveChartButton_scss__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! components/ExplorerActiveChartButton/ExplorerActiveChartButton.scss */ \"./components/ExplorerActiveChartButton/ExplorerActiveChartButton.scss\");\n/* harmony import */ var stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! stylesheets/base.scss */ \"./stylesheets/base.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\n\n\n\nvar ExplorerActiveChartButton = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ExplorerActiveChartButton, _React$Component);\n\n var _super = _createSuper(ExplorerActiveChartButton);\n\n function ExplorerActiveChartButton() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, ExplorerActiveChartButton);\n\n _this = _super.call(this);\n _this.state = {\n position: null,\n open: false,\n active: true,\n align: lib_Constants__WEBPACK_IMPORTED_MODULE_5__.Directions.LEFT\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(ExplorerActiveChartButton, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_12__.findDOMNode(this);\n }\n }, {\n key: \"handleCheckbox\",\n value: function handleCheckbox() {\n var nextActiveState = !this.state.active;\n this.props.onToggle(nextActiveState);\n this.setState({\n active: nextActiveState\n });\n }\n }, {\n key: \"handleSave\",\n value: function handleSave(query) {\n this.setState({\n open: false\n });\n this.props.onSave(query);\n }\n }, {\n key: \"handleDismiss\",\n value: function handleDismiss() {\n this.setState({\n open: false\n });\n this.props.onDismiss();\n }\n }, {\n key: \"renderButton\",\n value: function renderButton() {\n var _this2 = this;\n\n var checkMark = null;\n var color = '#343445';\n\n if (this.state.active) {\n // TODO (hallucinogen): a11y the checkbox\n checkMark = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n width: 12,\n height: 12,\n name: \"check\",\n fill: \"white\"\n });\n color = this.props.color;\n }\n\n var dropdown = null;\n\n if (!this.props.disableDropdown) {\n dropdown = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: [components_ExplorerActiveChartButton_ExplorerActiveChartButton_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].rightArrow, stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].verticalCenter].join(' '),\n onClick: function onClick() {\n var position = lib_Position__WEBPACK_IMPORTED_MODULE_9__[\"default\"].inDocument(_this2.node);\n var align = lib_Constants__WEBPACK_IMPORTED_MODULE_5__.Directions.LEFT;\n\n if (position.x > 700) {\n position.x += _this2.node.clientWidth;\n align = lib_Constants__WEBPACK_IMPORTED_MODULE_5__.Directions.RIGHT;\n }\n\n _this2.setState({\n open: !_this2.state.open,\n position: position,\n align: align\n });\n }\n });\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: components_ExplorerActiveChartButton_ExplorerActiveChartButton_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].button\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: [components_ExplorerActiveChartButton_ExplorerActiveChartButton_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].checkbox, stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].verticalCenter].join(' '),\n onClick: this.handleCheckbox.bind(this),\n style: {\n backgroundColor: this.state.active ? this.props.color : null,\n border: \"1px solid \".concat(color)\n }\n }, checkMark), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: components_ExplorerActiveChartButton_ExplorerActiveChartButton_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].label\n }, this.props.query.name), dropdown);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var popover = null;\n var content = this.renderButton();\n\n if (this.state.open) {\n var classes = [components_ExplorerActiveChartButton_ExplorerActiveChartButton_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].composerContainer];\n var calloutStyle = {\n marginLeft: '10px'\n };\n\n if (this.state.align === lib_Constants__WEBPACK_IMPORTED_MODULE_5__.Directions.RIGHT) {\n classes.push(components_ExplorerActiveChartButton_ExplorerActiveChartButton_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].right);\n calloutStyle = {\n marginRight: '10px'\n };\n }\n\n popover = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n fixed: false,\n position: this.state.position\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: classes.join(' ')\n }, content, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: components_ExplorerActiveChartButton_ExplorerActiveChartButton_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].callout,\n style: calloutStyle\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(components_ExplorerQueryComposer_ExplorerQueryComposer_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n isNew: false,\n query: this.props.query,\n isTimeSeries: this.props.isTimeSeries,\n onSave: this.handleSave.bind(this),\n onDismiss: function onDismiss() {\n _this3.setState({\n open: false\n });\n\n _this3.props.onDismiss();\n }\n })));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: components_ExplorerActiveChartButton_ExplorerActiveChartButton_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].wrap\n }, content, popover);\n }\n }]);\n\n return ExplorerActiveChartButton;\n}(react__WEBPACK_IMPORTED_MODULE_11__.Component);\n\n\nExplorerActiveChartButton.propTypes = {\n query: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].object.describe('Current query being rendered.'),\n queries: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].arrayOf(lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].object).describe('An array of queryGroups. Each querygroup should include the following fields: name, children. ' + 'children of queryGroup contains an array of queries. Each query should include the following fields: ' + 'name, query, (optional)preset.'),\n onSave: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].func.describe('Function to be called when an analytics query is sucessfully composed.'),\n onToggle: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].func.isRequired.describe('Function to be called when the chart active state is toggled.'),\n onDismiss: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].func.describe('Function to be called when current chart is being dismissed from list of active charts.'),\n color: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].string.describe('The color of the checkbox and the chart to be rendered.'),\n disableDropdown: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].bool.describe('If set to true, disable dropdown to pick/compose the query.'),\n isTimeSeries: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].bool.describe('If set to true, add default grouping (day, hour) and aggregate to the composer. ' + 'Otherwise, render limit inside the composer.')\n};\n\n//# sourceURL=webpack:///./components/ExplorerActiveChartButton/ExplorerActiveChartButton.react.js?");
+
+/***/ }),
+
+/***/ "./components/ExplorerMenuButton/ExplorerMenuButton.example.js":
+/*!*********************************************************************!*\
+ !*** ./components/ExplorerMenuButton/ExplorerMenuButton.example.js ***!
+ \*********************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var components_ExplorerMenuButton_ExplorerMenuButton_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/ExplorerMenuButton/ExplorerMenuButton.react */ \"./components/ExplorerMenuButton/ExplorerMenuButton.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_ExplorerMenuButton_ExplorerMenuButton_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nvar demos = [{\n render: function render() {\n var queries = [{\n name: 'Audience',\n children: [{\n name: 'Daily Active Installations',\n query: {},\n preset: true\n }, {\n name: 'Daily Active Users',\n query: {},\n preset: true\n }, {\n name: 'Monthly Active Installations',\n query: {},\n preset: true\n }, {\n name: 'Monthly Active Users',\n query: {},\n preset: true\n }]\n }, {\n name: 'Core',\n children: [{\n name: 'Gogo Count',\n query: {},\n preset: true\n }, {\n name: 'User Count',\n query: {},\n preset: true\n }, {\n name: 'Installation Count',\n query: {},\n preset: true\n }]\n }, {\n name: 'Events',\n children: [{\n name: 'API Requests',\n query: {},\n preset: true\n }, {\n name: 'Analytics Requests',\n query: {},\n preset: true\n }, {\n name: 'File Requests',\n query: {},\n preset: true\n }, {\n name: 'Push Notifications',\n query: {},\n preset: true\n }, {\n name: 'App Opens',\n query: {},\n preset: true\n }, {\n name: 'Push Opens',\n query: {},\n preset: true\n }]\n }, {\n name: 'Recent Queries',\n children: [{\n name: 'User Count Aggregate',\n query: {}\n }]\n }, {\n name: 'Saved Queries',\n children: [{\n name: 'Gogo Queries',\n query: {}\n }, {\n name: 'Saved Queries',\n query: {}\n }]\n }];\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_ExplorerMenuButton_ExplorerMenuButton_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n queries: queries,\n value: \"Add query\",\n onSave: function onSave() {\n /* Do nothing */\n }\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/ExplorerMenuButton/ExplorerMenuButton.example.js?");
+
+/***/ }),
+
+/***/ "./components/ExplorerMenuButton/ExplorerMenuButton.react.js":
+/*!*******************************************************************!*\
+ !*** ./components/ExplorerMenuButton/ExplorerMenuButton.react.js ***!
+ \*******************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ExplorerMenuButton)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_Constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lib/Constants */ \"./lib/Constants.js\");\n/* harmony import */ var components_ExplorerQueryComposer_ExplorerQueryComposer_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/ExplorerQueryComposer/ExplorerQueryComposer.react */ \"./components/ExplorerQueryComposer/ExplorerQueryComposer.react.js\");\n/* harmony import */ var components_ExplorerQueryPicker_ExplorerQueryPicker_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/ExplorerQueryPicker/ExplorerQueryPicker.react */ \"./components/ExplorerQueryPicker/ExplorerQueryPicker.react.js\");\n/* harmony import */ var components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/Popover/Popover.react */ \"./components/Popover/Popover.react.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var components_ExplorerMenuButton_ExplorerMenuButton_scss__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! components/ExplorerMenuButton/ExplorerMenuButton.scss */ \"./components/ExplorerMenuButton/ExplorerMenuButton.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\n\n\nvar ExplorerMenuButton = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ExplorerMenuButton, _React$Component);\n\n var _super = _createSuper(ExplorerMenuButton);\n\n function ExplorerMenuButton() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, ExplorerMenuButton);\n\n _this = _super.call(this);\n _this.state = {\n // can be null, 'picker', or 'composer'\n currentView: null,\n position: null,\n align: lib_Constants__WEBPACK_IMPORTED_MODULE_5__.Directions.LEFT\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(ExplorerMenuButton, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_12__.findDOMNode(this);\n }\n }, {\n key: \"toggle\",\n value: function toggle() {\n var _this2 = this;\n\n this.setState(function () {\n if (_this2.state.currentView) {\n return {\n currentView: null\n };\n }\n\n var position = lib_Position__WEBPACK_IMPORTED_MODULE_9__[\"default\"].inDocument(_this2.node);\n var align = lib_Constants__WEBPACK_IMPORTED_MODULE_5__.Directions.LEFT;\n\n if (position.x > 700) {\n position.x += _this2.node.clientWidth;\n align = lib_Constants__WEBPACK_IMPORTED_MODULE_5__.Directions.RIGHT;\n }\n\n return {\n currentView: 'picker',\n position: position,\n align: align\n };\n });\n }\n }, {\n key: \"renderButton\",\n value: function renderButton() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: components_ExplorerMenuButton_ExplorerMenuButton_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].button,\n onClick: this.toggle.bind(this)\n }, this.props.value);\n }\n }, {\n key: \"handleSelect\",\n value: function handleSelect(query) {\n this.setState({\n currentView: null\n });\n this.props.onSelect(query);\n }\n }, {\n key: \"handleDelete\",\n value: function handleDelete(query) {\n this.setState({\n currentView: null\n });\n this.props.onDelete(query);\n }\n }, {\n key: \"handleSave\",\n value: function handleSave(query) {\n this.setState({\n currentView: null\n });\n this.props.onSave(query);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var popover = null;\n var content = this.renderButton();\n\n if (this.state.currentView) {\n var queryMenu = null;\n var classes = [components_ExplorerMenuButton_ExplorerMenuButton_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].queryMenuContainer];\n var calloutStyle = {\n marginLeft: '10px'\n };\n\n if (this.state.align === lib_Constants__WEBPACK_IMPORTED_MODULE_5__.Directions.RIGHT) {\n classes.push(components_ExplorerMenuButton_ExplorerMenuButton_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].right);\n calloutStyle = {\n marginRight: '10px'\n };\n }\n\n switch (this.state.currentView) {\n case 'picker':\n queryMenu = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(components_ExplorerQueryPicker_ExplorerQueryPicker_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n queries: this.props.queries,\n onCompose: function onCompose() {\n _this3.setState({\n currentView: 'composer'\n });\n },\n onSelect: this.handleSelect.bind(this),\n onDelete: this.handleDelete.bind(this)\n });\n break;\n\n case 'composer':\n queryMenu = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(components_ExplorerQueryComposer_ExplorerQueryComposer_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n isNew: true,\n isTimeSeries: this.props.isTimeSeries,\n onSave: this.handleSave.bind(this)\n });\n break;\n }\n\n popover = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n fixed: false,\n position: this.state.position\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: classes.join(' ')\n }, content, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: components_ExplorerMenuButton_ExplorerMenuButton_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].callout,\n style: calloutStyle\n }), queryMenu));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_11__.createElement(\"div\", {\n className: components_ExplorerMenuButton_ExplorerMenuButton_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].wrap\n }, content, popover);\n }\n }]);\n\n return ExplorerMenuButton;\n}(react__WEBPACK_IMPORTED_MODULE_11__.Component);\n\n\nExplorerMenuButton.propTypes = {\n value: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].string.describe('The label of the button.'),\n queries: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].arrayOf(lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].object).describe('An array of queryGroups. Each querygroup should include the following fields: name, children. ' + 'children of queryGroup contains an array of queries. Each query should include the following fields: ' + 'name, query, (optional)preset.'),\n onSave: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].func.describe('Function to be called when an analytics query is sucessfully composed.'),\n onSelect: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].func.describe('Function to be called when a query is being selected.'),\n onDelete: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].func.describe('Function to be called when a query is being deleted.'),\n isTimeSeries: lib_PropTypes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].bool.describe('If set to true, add default grouping (day, hour) and aggregate to the composer. ' + 'Otherwise, render limit inside the composer.')\n};\n\n//# sourceURL=webpack:///./components/ExplorerMenuButton/ExplorerMenuButton.react.js?");
+
+/***/ }),
+
+/***/ "./components/ExplorerQueryComposer/ExplorerFilter.js":
+/*!************************************************************!*\
+ !*** ./components/ExplorerQueryComposer/ExplorerFilter.js ***!
+ \************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Constraints\": () => (/* binding */ Constraints),\n/* harmony export */ \"FieldConstraints\": () => (/* binding */ FieldConstraints)\n/* harmony export */ });\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\nvar Constraints = {\n '$eq': {\n name: 'equals'\n },\n '$ne': {\n name: 'does not equal'\n },\n '$lt': {\n name: 'less than',\n field: 'Number',\n composable: true\n },\n '$le': {\n name: 'less than or equal',\n field: 'Number',\n composable: true\n },\n '$gt': {\n name: 'greater than',\n field: 'Number',\n composable: true\n },\n '$ge': {\n name: 'greater than or equal',\n field: 'Number',\n composable: true\n },\n '$contains': {\n name: 'contains string',\n field: 'String',\n composable: true\n },\n 'json_extract_scalar': {\n name: 'json',\n field: 'JSON',\n composable: true\n }\n};\nvar FieldConstraints = {\n 'Boolean': ['$eq'],\n 'Number': ['$eq', '$ne', '$lt', '$le', '$gt', '$ge'],\n 'String': ['$eq', '$ne', '$contains'],\n 'Date': ['$eq', '$ne', '$lt', '$le', '$gt', '$ge'],\n 'JSON': ['$eq', '$ne', 'json_extract_scalar'],\n 'JSONValue': ['$eq', '$ne']\n};\n\n//# sourceURL=webpack:///./components/ExplorerQueryComposer/ExplorerFilter.js?");
+
+/***/ }),
+
+/***/ "./components/ExplorerQueryComposer/ExplorerQueryComposer.example.js":
+/*!***************************************************************************!*\
+ !*** ./components/ExplorerQueryComposer/ExplorerQueryComposer.example.js ***!
+ \***************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var components_ExplorerQueryComposer_ExplorerQueryComposer_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/ExplorerQueryComposer/ExplorerQueryComposer.react */ \"./components/ExplorerQueryComposer/ExplorerQueryComposer.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_ExplorerQueryComposer_ExplorerQueryComposer_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nvar demos = [{\n name: 'New query',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n style: {\n width: '700px',\n position: 'relative'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_ExplorerQueryComposer_ExplorerQueryComposer_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n isNew: true\n }));\n }\n}, {\n name: 'Old query, but no name',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n style: {\n width: '700px',\n position: 'relative'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_ExplorerQueryComposer_ExplorerQueryComposer_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n isNew: false\n }));\n }\n}, {\n name: 'Query composer that shows grouping and aggregate',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n style: {\n width: '700px',\n position: 'relative'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_ExplorerQueryComposer_ExplorerQueryComposer_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n isNew: false,\n isTimeSeries: true\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/ExplorerQueryComposer/ExplorerQueryComposer.example.js?");
+
+/***/ }),
+
+/***/ "./components/ExplorerQueryComposer/ExplorerQueryComposer.react.js":
+/*!*************************************************************************!*\
+ !*** ./components/ExplorerQueryComposer/ExplorerQueryComposer.react.js ***!
+ \*************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ExplorerQueryComposer)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"../node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! stylesheets/base.scss */ \"./stylesheets/base.scss\");\n/* harmony import */ var components_Button_Button_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Button/Button.react */ \"./components/Button/Button.react.js\");\n/* harmony import */ var components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/ChromeDropdown/ChromeDropdown.react */ \"./components/ChromeDropdown/ChromeDropdown.react.js\");\n/* harmony import */ var components_DateTimeEntry_DateTimeEntry_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components/DateTimeEntry/DateTimeEntry.react */ \"./components/DateTimeEntry/DateTimeEntry.react.js\");\n/* harmony import */ var components_ExplorerQueryComposer_ExplorerFilter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! components/ExplorerQueryComposer/ExplorerFilter */ \"./components/ExplorerQueryComposer/ExplorerFilter.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! components/ExplorerQueryComposer/ExplorerQueryComposer.scss */ \"./components/ExplorerQueryComposer/ExplorerQueryComposer.scss\");\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\n\nvar TABLE_SOURCES_LABEL = ['API Event', 'Custom Event'];\nvar FIELD_LABELS = {\n 'API Event': ['Request Type', 'Class', 'Installation ID', 'Parse User ID', 'Parse SDK', 'Parse SDK Version', 'OS', 'OS Version', 'App Build Version', 'App Display Version', 'Timestamp (s)', 'Latency (s)'],\n 'Custom Event': ['Event Name', 'Dimensions', 'Installation ID', 'Parse User ID', 'Parse SDK', 'Parse SDK Version', 'OS', 'OS Version', 'App Build Version', 'App Display Version', 'Timestamp (s)']\n};\nvar AGGREGATE_TYPE_LABELS = ['Count', 'Count Distinct', 'Sum', 'Minimum', 'Median', '99th Percentile', 'Average'];\nvar REQUIRED_GROUPING_LABELS = ['Time (day)', 'Time (hour)'];\nvar ORDER_LABELS = ['Ascending', 'Descending'];\nvar FIELD_TYPE = {\n 'Request Type': 'String',\n 'Class': 'String',\n 'Event Name': 'String',\n\n /* eslint-disable no-constant-condition */\n 'Dimensions': false ? 0 : 'String',\n //In progress features. Change false to true to work on this feature.\n\n /* eslint-enable */\n 'Installation ID': 'String',\n 'Parse User ID': 'String',\n 'Parse SDK': 'String',\n 'Parse SDK Version': 'String',\n 'OS': 'String',\n 'OS Version': 'String',\n 'App Build Version': 'String',\n 'App Display Version': 'String',\n 'Timestamp (s)': 'Date',\n 'Latency (s)': 'Number'\n};\nvar availableFilters = {};\n\nfor (var field in FIELD_TYPE) {\n availableFilters[field] = components_ExplorerQueryComposer_ExplorerFilter__WEBPACK_IMPORTED_MODULE_10__.FieldConstraints[FIELD_TYPE[field]];\n}\n\nvar TIMESERIES_DEFAULT_STATE = {\n groups: [REQUIRED_GROUPING_LABELS[0]],\n limit: undefined\n};\nvar NON_TIMESERIES_DEFAULT_STATE = {\n aggregates: [],\n groups: [],\n limit: 100\n};\nvar constraintLookup = {};\n\nfor (var c in components_ExplorerQueryComposer_ExplorerFilter__WEBPACK_IMPORTED_MODULE_10__.Constraints) {\n constraintLookup[components_ExplorerQueryComposer_ExplorerFilter__WEBPACK_IMPORTED_MODULE_10__.Constraints[c].name] = c;\n}\n\nvar setFocus = function setFocus(input) {\n if (input !== null) {\n react_dom__WEBPACK_IMPORTED_MODULE_13__.findDOMNode(input).focus();\n }\n};\n\nfunction validateNumeric() {\n return true;\n}\n\nvar fieldView = function fieldView(type, value, onChangeValue) {\n var fieldStyle = {\n width: '32%',\n marginLeft: '1%',\n display: 'inline-block'\n };\n\n switch (type) {\n case null:\n return null;\n\n case 'String':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"input\", {\n type: \"text\",\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].formInput,\n style: fieldStyle,\n value: value,\n onChange: function onChange(e) {\n return onChangeValue(e.target.value);\n },\n ref: setFocus\n });\n\n case 'Number':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"input\", {\n type: \"number\",\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].formInput,\n style: fieldStyle,\n value: value,\n onChange: function onChange(e) {\n return onChangeValue(validateNumeric(e.target.value) ? e.target.value : value || '');\n }\n });\n\n case 'Date':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n style: fieldStyle\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_DateTimeEntry_DateTimeEntry_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n fixed: true,\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].formInput,\n value: value || new Date(),\n onChange: onChangeValue,\n ref: setFocus\n }));\n\n default:\n throw new Error('Incompatible type ' + type + ' used to render fieldView.');\n }\n};\n\nvar ExplorerQueryComposer = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(ExplorerQueryComposer, _React$Component);\n\n var _super = _createSuper(ExplorerQueryComposer);\n\n function ExplorerQueryComposer(props) {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, ExplorerQueryComposer);\n\n _this = _super.call(this);\n\n var initialState = _this.getInitialStateFromProps(props);\n\n _this.state = _objectSpread({\n // newName is used to revert the edit if cancelled.\n newName: '',\n editing: false,\n isSaved: false\n }, initialState);\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ExplorerQueryComposer, [{\n key: \"getInitialStateFromProps\",\n value: function getInitialStateFromProps(props) {\n var query = props.query || {};\n var defaultState = {};\n\n if (props.isTimeSeries) {\n defaultState = _objectSpread(_objectSpread({}, TIMESERIES_DEFAULT_STATE), {}, {\n aggregates: [{\n op: AGGREGATE_TYPE_LABELS[0],\n col: FIELD_LABELS[TABLE_SOURCES_LABEL[0]][0]\n }]\n });\n } else {\n defaultState = NON_TIMESERIES_DEFAULT_STATE;\n } // Override with props if they exist. Otherwise, use default value.\n\n\n return {\n name: query.name || '',\n source: query.source || TABLE_SOURCES_LABEL[0],\n aggregates: query.aggregates || defaultState.aggregates,\n groups: query.groups || defaultState.groups,\n limit: query.limit || defaultState.limit,\n filters: query.filters || [],\n orders: query.orders || []\n };\n }\n }, {\n key: \"getOrderOptions\",\n value: function getOrderOptions() {\n var options = [];\n this.state.aggregates.forEach(function (value, index) {\n options.push({\n key: 'aggregate|' + index,\n value: [value.col, value.op].join(' ')\n });\n });\n this.state.groups.forEach(function (value, index) {\n options.push({\n key: 'group|' + index,\n value: value\n });\n });\n return options;\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var initialState = this.getInitialStateFromProps(nextProps);\n this.setState(_objectSpread({}, initialState));\n }\n }, {\n key: \"toggleEditing\",\n value: function toggleEditing() {\n this.setState({\n editing: !this.state.editing,\n newName: this.state.name\n });\n }\n }, {\n key: \"handleSave\",\n value: function handleSave() {\n var query = this.props.query || {};\n this.props.onSave({\n source: this.state.source,\n name: this.state.name,\n aggregates: this.state.aggregates,\n groups: this.state.groups,\n limit: this.state.limit,\n filters: this.state.filters,\n // Only pass them if order is valid\n orders: this.state.orders.filter(function (order) {\n return order.col !== null && order.col !== undefined;\n }),\n localId: query.localId,\n objectId: query.objectId\n });\n this.setState({\n editing: false,\n name: this.state.newName,\n isSaved: !!this.state.newName\n });\n }\n }, {\n key: \"handleNameChange\",\n value: function handleNameChange(e) {\n this.setState({\n newName: e.nativeEvent.target.value\n });\n }\n }, {\n key: \"handleAddAggregate\",\n value: function handleAddAggregate() {\n this.setState({\n aggregates: this.state.aggregates.concat([{\n op: AGGREGATE_TYPE_LABELS[0],\n col: FIELD_LABELS[this.state.source][0]\n }])\n });\n }\n }, {\n key: \"handleAddGroup\",\n value: function handleAddGroup() {\n this.setState({\n groups: this.state.groups.concat([FIELD_LABELS[this.state.source][0]])\n });\n }\n }, {\n key: \"handleAddFilter\",\n value: function handleAddFilter() {\n this.setState({\n filters: this.state.filters.concat([{\n op: '$eq',\n col: FIELD_LABELS[this.state.source][0],\n val: null\n }])\n });\n }\n }, {\n key: \"handleAddOrder\",\n value: function handleAddOrder() {\n this.setState({\n orders: this.state.orders.concat([{\n col: null,\n asc: ORDER_LABELS[0]\n }])\n });\n }\n }, {\n key: \"handleSourceChange\",\n value: function handleSourceChange(newSource) {\n var initialState = this.getInitialStateFromProps(this.props);\n this.setState(_objectSpread(_objectSpread({}, initialState), {}, {\n source: newSource\n }));\n }\n }, {\n key: \"removeAdditionalQuery\",\n value: function removeAdditionalQuery(stateKey, index) {\n this.state[stateKey].splice(index, 1);\n this.setState((0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, stateKey, this.state[stateKey]));\n }\n }, {\n key: \"renderAggregate\",\n value: function renderAggregate(aggregate) {\n var _this2 = this;\n\n var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var deleteButton = null;\n\n if (!this.props.isTimeSeries || index !== 0) {\n deleteButton = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].delWrapper\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"button\", {\n type: \"button\",\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].del,\n onClick: this.removeAdditionalQuery.bind(this, 'aggregates', index)\n }, \"\\xD7\"));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].boxContent\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].halfBox\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].formLabel\n }, \"Aggregate\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: aggregate.op,\n options: AGGREGATE_TYPE_LABELS,\n onChange: function onChange(val) {\n var aggregates = _this2.state.aggregates;\n aggregates[index] = {\n op: val,\n col: FIELD_LABELS[_this2.state.source][0]\n };\n\n _this2.setState({\n aggregates: aggregates\n });\n },\n color: \"blue\",\n width: \"100%\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].halfBox\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].formLabel,\n style: {\n width: '40px'\n }\n }, \"of\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: aggregate.col,\n options: FIELD_LABELS[this.state.source].filter(function (field) {\n switch (aggregate.op) {\n case 'Sum':\n case 'Median':\n case 'Average':\n return FIELD_TYPE[field] === 'Number' || FIELD_TYPE[field] === 'Date';\n\n default:\n return true;\n }\n }),\n onChange: function onChange(val) {\n var aggregates = _this2.state.aggregates;\n aggregates[index].col = val;\n\n _this2.setState({\n aggregates: aggregates\n });\n },\n color: \"blue\",\n width: \"100%\"\n }), deleteButton));\n }\n }, {\n key: \"renderGroup\",\n value: function renderGroup(grouping) {\n var _this3 = this;\n\n var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var deleteButton = null;\n var specialGroup = this.props.isTimeSeries && index === 0;\n\n if (!specialGroup) {\n deleteButton = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].delWrapper\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"button\", {\n type: \"button\",\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].del,\n onClick: this.removeAdditionalQuery.bind(this, 'groups', index)\n }, \"\\xD7\"));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].boxContent\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].formLabel\n }, \"Grouping\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: grouping,\n options: specialGroup ? REQUIRED_GROUPING_LABELS : FIELD_LABELS[this.state.source],\n onChange: function onChange(val) {\n var groups = _this3.state.groups;\n groups[index] = val;\n\n _this3.setState({\n groups: groups\n });\n },\n color: \"blue\",\n width: \"100%\"\n }), deleteButton);\n }\n }, {\n key: \"renderFilter\",\n value: function renderFilter(filter) {\n var _this4 = this;\n\n var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var type = Object.prototype.hasOwnProperty.call(components_ExplorerQueryComposer_ExplorerFilter__WEBPACK_IMPORTED_MODULE_10__.Constraints[filter.op], 'field') ? components_ExplorerQueryComposer_ExplorerFilter__WEBPACK_IMPORTED_MODULE_10__.Constraints[filter.op].field : FIELD_TYPE[filter.col];\n var constraintView = null;\n\n if (type === 'JSON') {\n var isJSONView = filter.op === 'json_extract_scalar';\n var jsonView = null;\n\n if (isJSONView) {\n filter.json_scalar_op = filter.json_scalar_op || '$eq';\n jsonView = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n style: {\n marginTop: '10px'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n width: \"51%\",\n color: \"blue\",\n value: components_ExplorerQueryComposer_ExplorerFilter__WEBPACK_IMPORTED_MODULE_10__.Constraints[filter.json_scalar_op].name,\n options: components_ExplorerQueryComposer_ExplorerFilter__WEBPACK_IMPORTED_MODULE_10__.FieldConstraints.JSONValue.map(function (c) {\n return components_ExplorerQueryComposer_ExplorerFilter__WEBPACK_IMPORTED_MODULE_10__.Constraints[c].name;\n }),\n onChange: function onChange(val) {\n var filters = _this4.state.filters;\n filters[index] = {\n col: filter.col,\n op: filter.op,\n json_path: filter.json_path,\n json_scalar_op: constraintLookup[val],\n val: filter.val\n };\n\n _this4.setState({\n filters: filters\n });\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"input\", {\n className: [components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].formInput, components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].filterInputStyle].join(' '),\n value: filter.val,\n onChange: function onChange(e) {\n var filters = _this4.state.filters;\n filters[index] = {\n col: filter.col,\n op: filter.op,\n json_path: filter.json_path,\n json_scalar_op: filter.json_scalar_op,\n val: e.target.value\n };\n\n _this4.setState({\n filters: filters\n });\n }\n }));\n }\n\n var constraintInputValue = isJSONView ? filter.json_path : filter.val;\n constraintView = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n style: {\n width: '65%',\n display: 'inline-block'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n width: \"51%\",\n color: \"blue\",\n value: components_ExplorerQueryComposer_ExplorerFilter__WEBPACK_IMPORTED_MODULE_10__.Constraints[filter.op].name,\n options: availableFilters[filter.col].map(function (c) {\n return components_ExplorerQueryComposer_ExplorerFilter__WEBPACK_IMPORTED_MODULE_10__.Constraints[c].name;\n }),\n onChange: function onChange(val) {\n var filters = _this4.state.filters;\n filters[index] = {\n col: filter.col,\n op: constraintLookup[val],\n val: filter.val\n };\n\n _this4.setState({\n filters: filters\n });\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"input\", {\n className: [components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].formInput, components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].filterInputStyle].join(' '),\n value: constraintInputValue,\n onChange: function onChange(e) {\n var filters = _this4.state.filters;\n var newFilter = null;\n\n if (isJSONView) {\n newFilter = {\n col: filter.col,\n op: filter.op,\n val: filter.val,\n json_path: e.target.value,\n json_scalar_op: filter.json_scalar_op\n };\n } else {\n newFilter = {\n col: filter.col,\n op: filter.op,\n val: e.target.value\n };\n }\n\n filters[index] = newFilter;\n\n _this4.setState({\n filters: filters\n });\n },\n ref: setFocus\n })), jsonView);\n } else {\n constraintView = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"span\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n width: type ? '33%' : '65%',\n color: \"blue\",\n value: components_ExplorerQueryComposer_ExplorerFilter__WEBPACK_IMPORTED_MODULE_10__.Constraints[filter.op].name,\n options: availableFilters[filter.col].map(function (c) {\n return components_ExplorerQueryComposer_ExplorerFilter__WEBPACK_IMPORTED_MODULE_10__.Constraints[c].name;\n }),\n onChange: function onChange(val) {\n var filters = _this4.state.filters;\n filters[index] = {\n col: filter.col,\n op: constraintLookup[val],\n val: null\n };\n\n _this4.setState({\n filters: filters\n });\n }\n }), fieldView(type, filter.val, function (val) {\n var filters = _this4.state.filters;\n filters[index] = {\n col: filter.col,\n op: filter.op,\n val: val\n };\n\n _this4.setState({\n filters: filters\n });\n }));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].boxContent\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].formLabel\n }, \"Filter\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"span\", {\n style: {\n marginRight: '1%'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n width: \"33%\",\n color: \"blue\",\n value: filter.col,\n options: FIELD_LABELS[this.state.source],\n onChange: function onChange(val) {\n var filters = _this4.state.filters;\n filters[index] = {\n col: val,\n op: '$eq',\n val: null\n };\n\n _this4.setState({\n filters: filters\n });\n }\n })), constraintView, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].delWrapper\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"button\", {\n type: \"button\",\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].del,\n onClick: this.removeAdditionalQuery.bind(this, 'filters', index)\n }, \"\\xD7\")));\n }\n }, {\n key: \"renderOrder\",\n value: function renderOrder(order, index) {\n var _this5 = this;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].boxContent\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].formLabel\n }, \"Sort by\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].halfBox\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n placeholder: \"Column\",\n value: order.col,\n options: this.getOrderOptions(),\n onChange: function onChange(val) {\n var orders = _this5.state.orders;\n orders[index] = {\n col: val,\n asc: ORDER_LABELS[0]\n };\n\n _this5.setState({\n orders: orders\n });\n },\n color: \"blue\",\n width: \"100%\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].halfBox\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: order.asc,\n options: ORDER_LABELS,\n onChange: function onChange(val) {\n var orders = _this5.state.orders;\n orders[index].asc = val;\n\n _this5.setState({\n orders: orders\n });\n },\n color: \"blue\",\n width: \"100%\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].delWrapper\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"button\", {\n type: \"button\",\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].del,\n onClick: this.removeAdditionalQuery.bind(this, 'orders', index)\n }, \"\\xD7\"))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this6 = this;\n\n var _this$props = this.props,\n query = _this$props.query,\n isNew = _this$props.isNew,\n isTimeSeries = _this$props.isTimeSeries,\n onDismiss = _this$props.onDismiss;\n query = query || {}; // First and foremost, let's not waste time if the query itself is not composable.\n\n if (query.nonComposable) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].queryComposer\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].header\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: [stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_6__[\"default\"].center, components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].headerView].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"h3\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].headerLabel\n }, query.name))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].footer\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: [stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_6__[\"default\"].center, components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].boxContent].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n width: \"100%\",\n value: \"Dismiss query\",\n color: \"white\",\n primary: true,\n onClick: onDismiss\n }))));\n }\n\n var headerView = null;\n\n if (!isNew && this.state.editing) {\n headerView = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: [stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_6__[\"default\"].center, components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].headerView].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"input\", {\n type: \"text\",\n className: [components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].headerLabel, components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].textInput].join(' '),\n value: this.state.newName,\n onChange: this.handleNameChange.bind(this),\n placeholder: 'Give your query a name'\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].headerButtonCell\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"button\", {\n type: \"button\",\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].headerButton,\n onClick: this.handleSave.bind(this)\n }, this.state.isSaved ? 'Rename' : 'Save')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].headerButtonCell\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"button\", {\n type: \"button\",\n className: [components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].headerButton, components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].secondaryColor].join(' '),\n onClick: this.toggleEditing.bind(this)\n }, \"Cancel\")));\n } else {\n headerView = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: [stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_6__[\"default\"].center, components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].headerView].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"h3\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].headerLabel\n }, this.state.name || 'Build a custom query'), isNew ? null : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].headerButtonCell\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"button\", {\n type: \"button\",\n className: [components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].headerButton, components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].secondaryColor].join(' '),\n onClick: this.toggleEditing.bind(this)\n }, this.state.isSaved ? 'Rename' : 'Save')));\n }\n\n var aggregate = null;\n var group = null;\n var limit = null;\n var orders = null;\n\n if (isTimeSeries) {\n // On chart view, we show aggregate and group by default. And we also disallow limit.\n aggregate = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].queryComposerBox\n }, this.renderAggregate(this.state.aggregates[0]));\n group = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].queryComposerBox\n }, this.renderGroup(this.state.groups[0]));\n } else {\n // On table/json view, we hide aggregate and group. And we also show limit.\n limit = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].queryComposerBox\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].boxContent\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].formLabel\n }, \"Limit\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"input\", {\n type: \"number\",\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].formInput,\n style: {\n width: '100%'\n },\n value: this.state.limit,\n onChange: function onChange(event) {\n return _this6.setState({\n limit: event.nativeEvent.target.value\n });\n }\n })));\n orders = this.state.orders.map(function (order, i) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].queryComposerBox,\n key: \"order_\".concat(i + 1)\n }, _this6.renderOrder(order, i));\n });\n }\n\n var offset = isTimeSeries ? 1 : 0;\n var extraAggregateModels = isTimeSeries ? this.state.aggregates.slice(1) : this.state.aggregates;\n var extraAggregates = extraAggregateModels.map(function (aggregate, i) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].queryComposerBox,\n key: \"aggregate_\".concat(i + 1)\n }, _this6.renderAggregate(aggregate, i + offset));\n });\n var extraGroupModels = isTimeSeries ? this.state.groups.slice(1) : this.state.groups;\n var extraGroups = extraGroupModels.map(function (group, i) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].queryComposerBox,\n key: \"group_\".concat(i + 1)\n }, _this6.renderGroup(group, i + offset));\n });\n var filters = this.state.filters.map(function (filter, i) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].queryComposerBox,\n key: \"filter_\".concat(i)\n }, _this6.renderFilter(filter, i));\n });\n var sortButton = null;\n\n if (!isTimeSeries) {\n sortButton = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"span\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].actionButton\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n width: \"100%\",\n value: \"Order by\",\n color: \"white\",\n onClick: this.handleAddOrder.bind(this)\n }));\n }\n\n var footerButton = null;\n\n if (isNew) {\n footerButton = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].boxContent\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n width: \"100%\",\n value: \"Add query\",\n color: \"white\",\n primary: true,\n onClick: this.handleSave.bind(this)\n }));\n } else {\n footerButton = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].boxContent\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"span\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].twoButton\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n width: \"100%\",\n value: \"Dismiss query\",\n color: \"white\",\n onClick: onDismiss\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"span\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].twoButton\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n width: \"100%\",\n value: query.preset ? 'Duplicate as new query' : 'Update query',\n color: \"white\",\n primary: true,\n onClick: this.handleSave.bind(this)\n })));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].queryComposer\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].header\n }, headerView), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].queryComposerBox\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].boxContent\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].formLabel\n }, \"Source\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_ChromeDropdown_ChromeDropdown_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: this.state.source,\n options: TABLE_SOURCES_LABEL,\n onChange: this.handleSourceChange.bind(this),\n color: \"blue\",\n width: \"100%\"\n }))), aggregate, group, limit, extraAggregates, extraGroups, filters, orders, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].queryComposerBox\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].boxContent\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"span\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].actionButton\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n width: \"100%\",\n value: \"Add aggregate\",\n color: \"white\",\n onClick: this.handleAddAggregate.bind(this)\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"span\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].actionButton\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n width: \"100%\",\n value: \"Add grouping\",\n color: \"white\",\n onClick: this.handleAddGroup.bind(this)\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"span\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].actionButton\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n width: \"100%\",\n value: \"Filter input rows\",\n color: \"white\",\n onClick: this.handleAddFilter.bind(this)\n })), sortButton)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_ExplorerQueryComposer_ExplorerQueryComposer_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].footer\n }, footerButton));\n }\n }]);\n\n return ExplorerQueryComposer;\n}(react__WEBPACK_IMPORTED_MODULE_12__.Component);\n\n\nExplorerQueryComposer.propTypes = {\n query: lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].object.describe('The query to be edited by this composer.'),\n onSave: lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].func.isRequired.describe('Function to be called on query created/saved.'),\n onDismiss: lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].func.describe('Function to be called on dismiss button clicked.'),\n isNew: lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].bool.describe('True if the composer is trying to compose a new query. ' + 'False if the composer is editing an existing one.'),\n isTimeSeries: lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].bool.describe('If set to true, add default group (day, hour) and aggregate to the composer. ' + 'Otherwise, render limit inside the composer.')\n};\n\n//# sourceURL=webpack:///./components/ExplorerQueryComposer/ExplorerQueryComposer.react.js?");
+
+/***/ }),
+
+/***/ "./components/ExplorerQueryPicker/ExplorerQueryPicker.example.js":
+/*!***********************************************************************!*\
+ !*** ./components/ExplorerQueryPicker/ExplorerQueryPicker.example.js ***!
+ \***********************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var components_ExplorerQueryPicker_ExplorerQueryPicker_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/ExplorerQueryPicker/ExplorerQueryPicker.react */ \"./components/ExplorerQueryPicker/ExplorerQueryPicker.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_ExplorerQueryPicker_ExplorerQueryPicker_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nvar demos = [{\n render: function render() {\n var queries = [{\n name: 'Audience',\n children: [{\n name: 'Daily Active Installations',\n query: {},\n preset: true\n }, {\n name: 'Daily Active Users',\n query: {},\n preset: true\n }, {\n name: 'Monthly Active Installations',\n query: {},\n preset: true\n }, {\n name: 'Monthly Active Users',\n query: {},\n preset: true\n }]\n }, {\n name: 'Core',\n children: [{\n name: 'Gogo Count',\n query: {},\n preset: true\n }, {\n name: 'User Count',\n query: {},\n preset: true\n }, {\n name: 'Installation Count',\n query: {},\n preset: true\n }]\n }, {\n name: 'Events',\n children: [{\n name: 'API Requests',\n query: {},\n preset: true\n }, {\n name: 'Analytics Requests',\n query: {},\n preset: true\n }, {\n name: 'File Requests',\n query: {},\n preset: true\n }, {\n name: 'Push Notifications',\n query: {},\n preset: true\n }, {\n name: 'App Opens',\n query: {},\n preset: true\n }, {\n name: 'Push Opens',\n query: {},\n preset: true\n }]\n }, {\n name: 'Recent Queries',\n children: [{\n name: 'User Count Aggregate',\n query: {}\n }]\n }, {\n name: 'Saved Queries',\n children: [{\n name: 'Gogo Queries',\n query: {}\n }, {\n name: 'Saved Queries',\n query: {}\n }]\n }];\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_ExplorerQueryPicker_ExplorerQueryPicker_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n queries: queries,\n onCompose: function onCompose() {\n /* Do nothing */\n }\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/ExplorerQueryPicker/ExplorerQueryPicker.example.js?");
+
+/***/ }),
+
+/***/ "./components/ExplorerQueryPicker/ExplorerQueryPicker.react.js":
+/*!*********************************************************************!*\
+ !*** ./components/ExplorerQueryPicker/ExplorerQueryPicker.react.js ***!
+ \*********************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! stylesheets/base.scss */ \"./stylesheets/base.scss\");\n/* harmony import */ var components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Button/Button.react */ \"./components/Button/Button.react.js\");\n/* harmony import */ var components_CascadingView_CascadingView_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/CascadingView/CascadingView.react */ \"./components/CascadingView/CascadingView.react.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_ExplorerQueryPicker_ExplorerQueryPicker_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/ExplorerQueryPicker/ExplorerQueryPicker.scss */ \"./components/ExplorerQueryPicker/ExplorerQueryPicker.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\nvar ExplorerQueryPicker = function ExplorerQueryPicker(_ref) {\n var queries = _ref.queries,\n onCompose = _ref.onCompose,\n onSelect = _ref.onSelect,\n onDelete = _ref.onDelete;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(\"div\", {\n className: components_ExplorerQueryPicker_ExplorerQueryPicker_scss__WEBPACK_IMPORTED_MODULE_5__[\"default\"].queryPicker\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(\"div\", {\n className: components_ExplorerQueryPicker_ExplorerQueryPicker_scss__WEBPACK_IMPORTED_MODULE_5__[\"default\"].header\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(\"h3\", {\n className: stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_0__[\"default\"].verticalCenter\n }, \"Choose a query to visualize\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(\"div\", {\n className: components_ExplorerQueryPicker_ExplorerQueryPicker_scss__WEBPACK_IMPORTED_MODULE_5__[\"default\"].queryContainer\n }, queries.map(function (queryGroup) {\n var childrenView = null;\n\n if (queryGroup.children.length > 0) {\n childrenView = queryGroup.children.map(function (query, j) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(\"div\", {\n className: components_ExplorerQueryPicker_ExplorerQueryPicker_scss__WEBPACK_IMPORTED_MODULE_5__[\"default\"].queryItem,\n key: \"query_\".concat(j)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(\"button\", {\n type: \"button\",\n onClick: function onClick() {\n return onSelect(query);\n },\n className: components_ExplorerQueryPicker_ExplorerQueryPicker_scss__WEBPACK_IMPORTED_MODULE_5__[\"default\"].queryLabel\n }, query.name), query.preset ? null : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(\"button\", {\n type: \"button\",\n onClick: function onClick() {\n return onDelete(query);\n },\n className: components_ExplorerQueryPicker_ExplorerQueryPicker_scss__WEBPACK_IMPORTED_MODULE_5__[\"default\"].del\n }, \"\\xD7\"));\n });\n } else {\n var emptyMessage = queryGroup.emptyMessage;\n\n if (!emptyMessage) {\n emptyMessage = \"No query found in \".concat(queryGroup.name, \".\");\n }\n\n childrenView = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(\"div\", {\n className: components_ExplorerQueryPicker_ExplorerQueryPicker_scss__WEBPACK_IMPORTED_MODULE_5__[\"default\"].queryItem\n }, emptyMessage);\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(components_CascadingView_CascadingView_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n content: queryGroup.name,\n className: components_ExplorerQueryPicker_ExplorerQueryPicker_scss__WEBPACK_IMPORTED_MODULE_5__[\"default\"].queryGroup,\n key: queryGroup.name\n }, childrenView);\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(\"div\", {\n className: components_ExplorerQueryPicker_ExplorerQueryPicker_scss__WEBPACK_IMPORTED_MODULE_5__[\"default\"].footer\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(\"div\", {\n className: stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_0__[\"default\"].center,\n style: {\n width: '95%'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n width: \"100%\",\n value: \"Build a custom query\",\n color: \"white\",\n onClick: onCompose\n }))));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ExplorerQueryPicker);\nExplorerQueryPicker.propTypes = {\n queries: lib_PropTypes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].arrayOf(lib_PropTypes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].object).isRequired.describe('An array of queryGroups. Each querygroup should include the following fields: name, children. ' + 'children of queryGroup contains an array of queries. Each query should include the following fields: ' + 'name, query, (optional)preset.'),\n onCompose: lib_PropTypes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].func.isRequired.describe('Function to be called when \"Build a custom query\" button is clicked.'),\n onSelect: lib_PropTypes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].func.describe('Function to be called when a query is being selected.'),\n onDelete: lib_PropTypes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].func.describe('Function to be called when a query is being deleted.')\n};\n\n//# sourceURL=webpack:///./components/ExplorerQueryPicker/ExplorerQueryPicker.react.js?");
+
+/***/ }),
+
+/***/ "./components/Field/Field.example.js":
+/*!*******************************************!*\
+ !*** ./components/Field/Field.example.js ***!
+ \*******************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var components_Toggle_Toggle_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/Toggle/Toggle.react */ \"./components/Toggle/Toggle.react.js\");\n/* harmony import */ var components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/TextInput/TextInput.react */ \"./components/TextInput/TextInput.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar component = components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n text: \"Are you a monster hunter?\",\n description: \"Or have you become the monster\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Toggle_Toggle_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n value: true,\n type: components_Toggle_Toggle_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Types.YES_NO,\n onChange: function onChange() {}\n })\n });\n }\n}, {\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n height: 500,\n labelWidth: 40,\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n text: \"This field is taller\",\n description: \"And has a really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really long description.\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n value: \"\",\n height: '100%',\n multiline: true,\n onChange: function onChange() {}\n })\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/Field/Field.example.js?");
+
+/***/ }),
+
+/***/ "./components/Field/Field.react.js":
+/*!*****************************************!*\
+ !*** ./components/Field/Field.react.js ***!
+ \*****************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"../node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Field_Field_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/Field/Field.scss */ \"./components/Field/Field.scss\");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar Field = function Field(_ref) {\n var label = _ref.label,\n input = _ref.input,\n _ref$labelWidth = _ref.labelWidth,\n labelWidth = _ref$labelWidth === void 0 ? 50 : _ref$labelWidth,\n labelPadding = _ref.labelPadding,\n height = _ref.height,\n className = _ref.className;\n var classes = [components_Field_Field_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].field];\n\n if (className) {\n classes.push(className);\n }\n\n labelWidth = labelWidth || 50;\n\n if (label && labelPadding) {\n label = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.cloneElement(label, _objectSpread(_objectSpread({}, label.props), {}, {\n padding: labelPadding\n }));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: classes.join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: components_Field_Field_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].left,\n style: {\n width: labelWidth + '% ',\n height: height\n }\n }, label), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: components_Field_Field_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].right,\n style: {\n marginLeft: labelWidth + '%',\n height: height\n }\n }, input));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Field);\nField.propTypes = {\n label: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].node.describe('The label content, placed on the left side of the Field. ' + 'It can be any renderable content.'),\n input: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].node.describe('The input content, placed on the right side of the Field. ' + 'It can be any renderable content.'),\n className: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].string.describe('A CSS class name to add to this field'),\n labelWidth: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].number.describe('A percentage value for the width of the left label. It cannot be 0.'),\n labelPadding: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].number.describe('A padding override for the Label of this field. This is automatically used by Modals.'),\n height: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].oneOfType([lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].string, lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].number]).describe(\"The height of the field. Can be a string containing any CSS unit, or a number of pixels. By default, it will expand to fit it\\u2019s content, with a min-height of 80px.\")\n};\n\n//# sourceURL=webpack:///./components/Field/Field.react.js?");
+
+/***/ }),
+
+/***/ "./components/Fieldset/Fieldset.example.js":
+/*!*************************************************!*\
+ !*** ./components/Fieldset/Fieldset.example.js ***!
+ \*************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/Fieldset/Fieldset.react */ \"./components/Fieldset/Fieldset.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var components_Toggle_Toggle_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/Toggle/Toggle.react */ \"./components/Toggle/Toggle.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar component = components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n legend: \"I am Legend\",\n description: \"I am description.\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n text: \"Label Text\",\n description: \"Label Description\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Toggle_Toggle_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n value: true,\n type: components_Toggle_Toggle_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Types.YES_NO,\n onChange: function onChange() {}\n })\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/Fieldset/Fieldset.example.js?");
+
+/***/ }),
+
+/***/ "./components/Fieldset/Fieldset.react.js":
+/*!***********************************************!*\
+ !*** ./components/Fieldset/Fieldset.react.js ***!
+ \***********************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Fieldset_Fieldset_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/Fieldset/Fieldset.scss */ \"./components/Fieldset/Fieldset.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar Fieldset = function Fieldset(_ref) {\n var legend = _ref.legend,\n description = _ref.description,\n children = _ref.children;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n className: components_Fieldset_Fieldset_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].fieldset\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n className: components_Fieldset_Fieldset_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].legend\n }, legend), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n className: components_Fieldset_Fieldset_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].description\n }, description), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n className: components_Fieldset_Fieldset_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].fields\n }, children));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Fieldset);\nFieldset.propTypes = {\n legend: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].node.describe('The main title of the Fieldset. It can be any renderable content.'),\n description: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].node.describe('The secondary header of the Fieldset. It can be any renderable content.')\n};\n\n//# sourceURL=webpack:///./components/Fieldset/Fieldset.react.js?");
+
+/***/ }),
+
+/***/ "./components/FileInput/FileInput.example.js":
+/*!***************************************************!*\
+ !*** ./components/FileInput/FileInput.example.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/Fieldset/Fieldset.react */ \"./components/Fieldset/Fieldset.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var components_FileInput_FileInput_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/FileInput/FileInput.react */ \"./components/FileInput/FileInput.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar component = components_FileInput_FileInput_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n text: \"No prefill\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_FileInput_FileInput_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onChange: function onChange() {}\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n text: \"String value\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_FileInput_FileInput_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n value: \"my_file.txt\",\n onChange: function onChange() {}\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n text: \"Object value\",\n description: \"But this object has no URL\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_FileInput_FileInput_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n value: {\n name: 'my_file.txt'\n },\n onChange: function onChange() {}\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n text: \"Object value\",\n description: \"This object has a name and a value\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_FileInput_FileInput_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n value: {\n name: 'my_file.txt',\n url: 'https://www.parse.com'\n },\n onChange: function onChange() {}\n })\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/FileInput/FileInput.example.js?");
+
+/***/ }),
+
+/***/ "./components/FileInput/FileInput.react.js":
+/*!*************************************************!*\
+ !*** ./components/FileInput/FileInput.react.js ***!
+ \*************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ FileInput)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var lib_StringEscaping__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/StringEscaping */ \"./lib/StringEscaping.js\");\n/* harmony import */ var components_FileInput_FileInput_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/FileInput/FileInput.scss */ \"./components/FileInput/FileInput.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar FileInput = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(FileInput, _React$Component);\n\n var _super = _createSuper(FileInput);\n\n function FileInput() {\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, FileInput);\n\n return _super.apply(this, arguments);\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(FileInput, [{\n key: \"handleChange\",\n value: function handleChange(e) {\n var file = e.target.files[0];\n this.props.onChange(file);\n }\n }, {\n key: \"renderLabel\",\n value: function renderLabel() {\n if (!this.props.value) {\n return null;\n }\n\n if (typeof this.props.value === 'string') {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"span\", {\n className: components_FileInput_FileInput_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].label\n }, (0,lib_StringEscaping__WEBPACK_IMPORTED_MODULE_6__.escape)(this.props.value));\n }\n\n if (this.props.value.name && !this.props.value.url) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"span\", {\n className: components_FileInput_FileInput_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].label\n }, (0,lib_StringEscaping__WEBPACK_IMPORTED_MODULE_6__.escape)(this.props.value.name));\n }\n\n if (this.props.value.name && this.props.value.url) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"a\", {\n href: this.props.value.url,\n target: \"_blank\",\n className: components_FileInput_FileInput_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].label\n }, (0,lib_StringEscaping__WEBPACK_IMPORTED_MODULE_6__.escape)(this.props.value.name));\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var inputProps = {\n type: 'file',\n value: '',\n disabled: this.props.disabled,\n onChange: this.handleChange.bind(this)\n };\n\n if (this.props.accept) {\n inputProps.accept = this.props.accept;\n }\n\n var label = this.renderLabel();\n var buttonStyles = [components_FileInput_FileInput_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].button];\n\n if (this.props.disabled || this.props.uploading) {\n buttonStyles.push(components_FileInput_FileInput_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].disabled);\n }\n\n if (label) {\n buttonStyles.push(components_FileInput_FileInput_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].withLabel);\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", {\n className: components_FileInput_FileInput_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].input\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", {\n className: buttonStyles.join(' ')\n }, this.props.uploading ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", {\n className: components_FileInput_FileInput_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].spinner\n }) : label ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"span\", null, \"Change file\") : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"span\", null, \"Upload a file\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"input\", inputProps)), label);\n }\n }]);\n\n return FileInput;\n}(react__WEBPACK_IMPORTED_MODULE_5__.Component);\n\n\n\n//# sourceURL=webpack:///./components/FileInput/FileInput.react.js?");
+
+/***/ }),
+
+/***/ "./components/Filter/Filter.react.js":
+/*!*******************************************!*\
+ !*** ./components/Filter/Filter.react.js ***!
+ \*******************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lib_Filters__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lib/Filters */ \"./lib/Filters.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! immutable */ \"../node_modules/immutable/dist/immutable.es.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var lib_stringCompare__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lib/stringCompare */ \"./lib/stringCompare.js\");\n/* harmony import */ var context_currentApp__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! context/currentApp */ \"./context/currentApp.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\nfunction changeField(schema, filters, index, newField) {\n var newFilter = new immutable__WEBPACK_IMPORTED_MODULE_5__.Map({\n field: newField,\n constraint: lib_Filters__WEBPACK_IMPORTED_MODULE_0__.FieldConstraints[schema[newField].type][0],\n compareTo: lib_Filters__WEBPACK_IMPORTED_MODULE_0__.DefaultComparisons[schema[newField].type]\n });\n return filters.set(index, newFilter);\n}\n\nfunction changeConstraint(schema, filters, index, newConstraint) {\n var field = filters.get(index).get('field');\n var compareType = schema[field].type;\n\n if (Object.prototype.hasOwnProperty.call(lib_Filters__WEBPACK_IMPORTED_MODULE_0__.Constraints[newConstraint], 'field')) {\n compareType = lib_Filters__WEBPACK_IMPORTED_MODULE_0__.Constraints[newConstraint].field;\n }\n\n var newFilter = new immutable__WEBPACK_IMPORTED_MODULE_5__.Map({\n field: field,\n constraint: newConstraint,\n compareTo: lib_Filters__WEBPACK_IMPORTED_MODULE_0__.DefaultComparisons[compareType]\n });\n return filters.set(index, newFilter);\n}\n\nfunction changeCompareTo(schema, filters, index, type, newCompare) {\n var newValue = newCompare;\n return filters.set(index, filters.get(index).set('compareTo', newValue));\n}\n\nfunction deleteRow(filters, index) {\n return filters[\"delete\"](index);\n}\n\nvar Filter = function Filter(_ref) {\n var schema = _ref.schema,\n filters = _ref.filters,\n renderRow = _ref.renderRow,\n onChange = _ref.onChange,\n blacklist = _ref.blacklist,\n className = _ref.className;\n var currentApp = react__WEBPACK_IMPORTED_MODULE_2__.useContext(context_currentApp__WEBPACK_IMPORTED_MODULE_4__.CurrentApp);\n blacklist = blacklist || [];\n var available = lib_Filters__WEBPACK_IMPORTED_MODULE_0__.availableFilters(schema, filters);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", null, filters.toArray().map(function (filter, i) {\n var field = filter.get('field');\n var constraint = filter.get('constraint');\n var compareTo = filter.get('compareTo');\n var fields = Object.keys(available).concat([]);\n\n if (fields.indexOf(field) < 0) {\n fields.push(field);\n } // Get the column preference of the current class.\n\n\n var currentColumnPreference = currentApp.columnPreference ? currentApp.columnPreference[className] : null; // Check if the preference exists.\n\n if (currentColumnPreference) {\n var fieldsToSortToTop = currentColumnPreference.filter(function (item) {\n return item.filterSortToTop;\n }).map(function (item) {\n return item.name;\n }); // Sort the fields.\n\n fields.sort(function (a, b) {\n // Only \"a\" should sorted to the top.\n if (fieldsToSortToTop.includes(a) && !fieldsToSortToTop.includes(b)) {\n return -1;\n } // Only \"b\" should sorted to the top.\n\n\n if (!fieldsToSortToTop.includes(a) && fieldsToSortToTop.includes(b)) {\n return 1;\n } // Both should sorted to the top -> they should be sorted to the same order as in the \"fieldsToSortToTop\" array.\n\n\n if (fieldsToSortToTop.includes(a) && fieldsToSortToTop.includes(b)) {\n return fieldsToSortToTop.indexOf(a) - fieldsToSortToTop.indexOf(b);\n }\n\n return (0,lib_stringCompare__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(a, b);\n });\n } // If there's no preference: Use the default sort function.\n else {\n fields.sort();\n }\n\n var constraints = lib_Filters__WEBPACK_IMPORTED_MODULE_0__.FieldConstraints[schema[field].type].filter(function (c) {\n return blacklist.indexOf(c) < 0;\n });\n var compareType = schema[field].type;\n\n if (Object.prototype.hasOwnProperty.call(lib_Filters__WEBPACK_IMPORTED_MODULE_0__.Constraints[constraint], 'field')) {\n compareType = lib_Filters__WEBPACK_IMPORTED_MODULE_0__.Constraints[constraint].field;\n }\n\n return renderRow({\n fields: fields,\n constraints: constraints,\n compareInfo: {\n type: compareType,\n targetClass: schema[field].targetClass\n },\n currentField: field,\n currentConstraint: constraint,\n compareTo: compareTo,\n key: field + '-' + constraint + '-' + i,\n onChangeField: function onChangeField(newField) {\n onChange(changeField(schema, filters, i, newField));\n },\n onChangeConstraint: function onChangeConstraint(newConstraint) {\n onChange(changeConstraint(schema, filters, i, newConstraint));\n },\n onChangeCompareTo: function onChangeCompareTo(newCompare) {\n onChange(changeCompareTo(schema, filters, i, compareType, newCompare));\n },\n onDeleteRow: function onDeleteRow() {\n onChange(deleteRow(filters, i));\n }\n });\n }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Filter);\nFilter.propTypes = {\n schema: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].object.isRequired.describe('A class schema, mapping field names to their Type strings'),\n filters: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].instanceOf(immutable__WEBPACK_IMPORTED_MODULE_5__.List).isRequired.describe('An array of filter objects. Each filter contains \"field\", \"comparator\", and \"compareTo\" fields.'),\n renderRow: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].func.isRequired.describe('A function for rendering a row of a filter.')\n};\n\n//# sourceURL=webpack:///./components/Filter/Filter.react.js?");
+
+/***/ }),
+
+/***/ "./components/FormButton/FormButton.example.js":
+/*!*****************************************************!*\
+ !*** ./components/FormButton/FormButton.example.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/Fieldset/Fieldset.react */ \"./components/Fieldset/Fieldset.react.js\");\n/* harmony import */ var components_FormButton_FormButton_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/FormButton/FormButton.react */ \"./components/FormButton/FormButton.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar component = components_FormButton_FormButton_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n legend: \"Form Buttons\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: \"Cool button\",\n description: \"It does something.\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_FormButton_FormButton_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n value: \"Do something cool\"\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: \"Danger danger\",\n description: \"Danger button.\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_FormButton_FormButton_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n color: \"red\",\n value: \"Do dangerous thing\"\n })\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/FormButton/FormButton.example.js?");
+
+/***/ }),
+
+/***/ "./components/FormButton/FormButton.react.js":
+/*!***************************************************!*\
+ !*** ./components/FormButton/FormButton.react.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Button/Button.react */ \"./components/Button/Button.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_FormButton_FormButton_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/FormButton/FormButton.scss */ \"./components/FormButton/FormButton.scss\");\n\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar FormButton = function FormButton(props) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: components_FormButton_FormButton_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].input\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n primary: true,\n width: \"80%\"\n })));\n};\n\nvar otherPropTypes = (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"].propTypes);\n\nFormButton.propTypes = otherPropTypes;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FormButton);\n\n//# sourceURL=webpack:///./components/FormButton/FormButton.react.js?");
+
+/***/ }),
+
+/***/ "./components/FormModal/FormModal.example.js":
+/*!***************************************************!*\
+ !*** ./components/FormModal/FormModal.example.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var components_FormModal_FormModal_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/FormModal/FormModal.react */ \"./components/FormModal/FormModal.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\nvar component = components_FormModal_FormModal_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nvar demos = [];\n\n//# sourceURL=webpack:///./components/FormModal/FormModal.example.js?");
+
+/***/ }),
+
+/***/ "./components/FormModal/FormModal.react.js":
+/*!*************************************************!*\
+ !*** ./components/FormModal/FormModal.react.js ***!
+ \*************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ FormModal)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"../node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var components_Modal_Modal_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! components/Modal/Modal.react */ \"./components/Modal/Modal.react.js\");\n/* harmony import */ var components_FormNote_FormNote_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! components/FormNote/FormNote.react */ \"./components/FormNote/FormNote.react.js\");\n\n\n\n\n\n\n\n\nvar _excluded = [\"children\", \"open\", \"submitText\", \"inProgressText\", \"enabled\", \"onSubmit\", \"onSuccess\", \"onClose\", \"clearFields\", \"showErrors\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar FormModal = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(FormModal, _React$Component);\n\n var _super = _createSuper(FormModal);\n\n function FormModal() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, FormModal);\n\n _this = _super.call(this);\n _this.state = {\n errorMessage: '',\n inProgress: false\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(FormModal, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n children = _this$props.children,\n open = _this$props.open,\n _this$props$submitTex = _this$props.submitText,\n submitText = _this$props$submitTex === void 0 ? 'Confirm' : _this$props$submitTex,\n _this$props$inProgres = _this$props.inProgressText,\n inProgressText = _this$props$inProgres === void 0 ? \"Confirming\\u2026\" : _this$props$inProgres,\n _this$props$enabled = _this$props.enabled,\n enabled = _this$props$enabled === void 0 ? true : _this$props$enabled,\n onSubmit = _this$props.onSubmit,\n _this$props$onSuccess = _this$props.onSuccess,\n onSuccess = _this$props$onSuccess === void 0 ? function () {} : _this$props$onSuccess,\n onClose = _this$props.onClose,\n _this$props$clearFiel = _this$props.clearFields,\n clearFields = _this$props$clearFiel === void 0 ? function () {} : _this$props$clearFiel,\n _this$props$showError = _this$props.showErrors,\n showErrors = _this$props$showError === void 0 ? true : _this$props$showError,\n modalProps = (0,_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_this$props, _excluded);\n\n var showModal = open || this.state.inProgress;\n\n if (!modalProps.type) {\n if (this.state.errorMessage.length > 0) {\n modalProps.type = components_Modal_Modal_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"].Types.DANGER;\n } else if (enabled) {\n modalProps.type = components_Modal_Modal_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"].Types.VALID;\n }\n }\n\n return showModal ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_Modal_Modal_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, modalProps, {\n confirmText: this.state.inProgress ? inProgressText : submitText,\n onConfirm: function onConfirm() {\n _this2.setState({\n errorMessage: '',\n inProgress: true\n });\n\n onSubmit().then(function (result) {\n onClose();\n clearFields();\n onSuccess(result);\n\n _this2.setState({\n inProgress: false\n });\n })[\"catch\"](function (_ref) {\n var message = _ref.message,\n error = _ref.error,\n notice = _ref.notice,\n _ref$errors = _ref.errors,\n errors = _ref$errors === void 0 ? [] : _ref$errors;\n\n _this2.setState({\n errorMessage: errors.join(' ') || message || error || notice || 'An error occurred',\n inProgress: false\n });\n });\n },\n onCancel: function onCancel() {\n onClose();\n clearFields();\n\n _this2.setState({\n errorMessage: ''\n });\n },\n disabled: !enabled,\n canCancel: !this.state.inProgress,\n progress: this.state.inProgress\n }), children, showErrors ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_FormNote_FormNote_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n show: this.state.errorMessage.length > 0,\n color: \"red\"\n }, this.state.errorMessage) : null) : null;\n }\n }]);\n\n return FormModal;\n}(react__WEBPACK_IMPORTED_MODULE_8__.Component);\n\n\n\nvar forwardedModalProps = (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, components_Modal_Modal_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"].propTypes);\n\nFormModal.propTypes = _objectSpread(_objectSpread({}, forwardedModalProps), {}, {\n children: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].node.describe('The form elements to be rendered in the modal.'),\n open: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].bool.isRequired.describe('Whether or not to show the modal.'),\n submitText: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].string.describe('The text to show on the CTA button. Defaults to \"Confirm\"'),\n inProgressText: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].string.describe(\"The text to show to the CTA button while the request is in flight. Defaults to \\\"Confirming\\u2026\\\".\"),\n onSubmit: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].func.isRequired.describe('A function that will be called when the user submits the form. This function must return a promise.'),\n onSuccess: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].func.describe('A function that will be called with the result of the promise created in onSubmit.'),\n onClose: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].func.isRequired.describe('A function that will be called when the modal is closing. After this function is called, the parent should not pass \"true\" to the \"open\" prop.'),\n clearFields: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].func.describe('A function that should clear the state of the form fields inside the modal.'),\n enabled: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].bool.describe('Set to false to disable the confirm button.'),\n showErrors: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].bool.describe('Set to false to hide errors if you are doing custom error handling (such as migration and new app modals).')\n});\n\n//# sourceURL=webpack:///./components/FormModal/FormModal.react.js?");
+
+/***/ }),
+
+/***/ "./components/FormNote/FormNote.react.js":
+/*!***********************************************!*\
+ !*** ./components/FormNote/FormNote.react.js ***!
+ \***********************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var lib_Constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lib/Constants */ \"./lib/Constants.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_SliderWrap_SliderWrap_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/SliderWrap/SliderWrap.react */ \"./components/SliderWrap/SliderWrap.react.js\");\n/* harmony import */ var components_FormNote_FormNote_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/FormNote/FormNote.scss */ \"./components/FormNote/FormNote.scss\");\n\n\nvar _excluded = [\"show\", \"children\", \"color\"];\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\nvar FormNote = function FormNote(_ref) {\n var show = _ref.show,\n children = _ref.children,\n color = _ref.color,\n other = (0,_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_ref, _excluded);\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(components_SliderWrap_SliderWrap_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, other, {\n direction: lib_Constants__WEBPACK_IMPORTED_MODULE_2__.Directions.DOWN,\n expanded: show,\n block: true\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(\"div\", {\n className: [components_FormNote_FormNote_scss__WEBPACK_IMPORTED_MODULE_6__[\"default\"].note, components_FormNote_FormNote_scss__WEBPACK_IMPORTED_MODULE_6__[\"default\"][color]].join(' ')\n }, children));\n};\n\nFormNote.propTypes = {\n show: lib_PropTypes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].bool,\n color: lib_PropTypes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].oneOf(['blue', 'green', 'orange', 'red'])\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FormNote);\n\n//# sourceURL=webpack:///./components/FormNote/FormNote.react.js?");
+
+/***/ }),
+
+/***/ "./components/FormTable/FormTable.example.js":
+/*!***************************************************!*\
+ !*** ./components/FormTable/FormTable.example.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_FormTable_FormTable_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/FormTable/FormTable.react */ \"./components/FormTable/FormTable.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar component = components_FormTable_FormTable_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n text: \"Label\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_FormTable_FormTable_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n items: [{\n title: 'Title',\n notes: [{\n key: 'key',\n value: 'value',\n strong: false\n }, {\n key: 'important',\n value: 'pay attention',\n strong: true\n }]\n }, {\n title: 'Title',\n color: 'red',\n onDelete: function onDelete() {\n alert('Delete button clicked.');\n },\n notes: [{\n key: 'foo',\n keyColor: 'red',\n value: 'bar'\n }]\n }]\n })\n });\n }\n}, {\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n text: \"Label\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_FormTable_FormTable_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n keyWidth: \"150px\",\n items: [{\n title: 'Title',\n notes: [{\n key: 'very wide key here',\n value: 'so I passed keyWidth. Also very very very very very very very very very very very very very very long value.'\n }]\n }]\n })\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/FormTable/FormTable.example.js?");
+
+/***/ }),
+
+/***/ "./components/FormTable/FormTable.react.js":
+/*!*************************************************!*\
+ !*** ./components/FormTable/FormTable.react.js ***!
+ \*************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_FormTable_FormTable_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/FormTable/FormTable.scss */ \"./components/FormTable/FormTable.scss\");\n\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar Row = function Row(_ref) {\n var title = _ref.title,\n _ref$notes = _ref.notes,\n notes = _ref$notes === void 0 ? [] : _ref$notes,\n _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'blue' : _ref$color,\n onDelete = _ref.onDelete,\n keyWidth = _ref.keyWidth;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: components_FormTable_FormTable_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].row\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: components_FormTable_FormTable_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].header\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"span\", {\n className: [components_FormTable_FormTable_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].indicator, components_FormTable_FormTable_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"][color]].join(' ')\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"span\", {\n className: components_FormTable_FormTable_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].title\n }, title), typeof onDelete === 'function' ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"button\", {\n type: \"button\",\n className: components_FormTable_FormTable_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].del,\n onClick: onDelete\n }, \"\\xD7\") : null), notes.map(function (_ref2, index) {\n var key = _ref2.key,\n _ref2$keyColor = _ref2.keyColor,\n keyColor = _ref2$keyColor === void 0 ? '' : _ref2$keyColor,\n value = _ref2.value,\n strong = _ref2.strong;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n key: index.toString(),\n className: components_FormTable_FormTable_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].info\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"span\", {\n style: {\n width: keyWidth\n },\n className: [components_FormTable_FormTable_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].label, components_FormTable_FormTable_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"][keyColor]].join(' ')\n }, key), strong ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"strong\", null, value) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"span\", {\n className: components_FormTable_FormTable_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].din\n }, value));\n }));\n};\n\nvar FormTable = function FormTable(_ref3) {\n var items = _ref3.items,\n _ref3$keyWidth = _ref3.keyWidth,\n keyWidth = _ref3$keyWidth === void 0 ? '70px' : _ref3$keyWidth;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: components_FormTable_FormTable_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].table\n }, items.map(function (item, index) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(Row, (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n key: index.toString(),\n keyWidth: keyWidth\n }, item));\n }));\n};\n\nFormTable.propTypes = {\n items: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].array.isRequired.describe('An array of objects to go in the table. Each object should include a title (string), optional color (blue, red, green, orange), optional onDelete function, and notes (array). Each object in the notes array should contain a key (string), keyColor (blue, red, green, or orange), a value (string), and optionally strong (bool) to use a bold font for the value.'),\n keyWidth: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].string.describe('A CSS unit for the width of the key portion of the table. Defaults to 70px.')\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FormTable);\n\n//# sourceURL=webpack:///./components/FormTable/FormTable.react.js?");
+
+/***/ }),
+
+/***/ "./components/Icon/Icon.example.js":
+/*!*****************************************!*\
+ !*** ./components/Icon/Icon.example.js ***!
+ \*****************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/Icon/Icon.react */ \"./components/Icon/Icon.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n name: \"infinity\",\n fill: \"#000000\",\n width: 50,\n height: 50\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n name: \"infinity\",\n fill: \"#169cee\",\n width: 200,\n height: 200\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n name: \"infinity\",\n fill: \"#ff395e\",\n width: 100,\n height: 100\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n name: \"infinity\",\n fill: \"#00db7c\",\n width: 20,\n height: 20\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/Icon/Icon.example.js?");
+
+/***/ }),
+
+/***/ "./components/Icon/Icon.react.js":
+/*!***************************************!*\
+ !*** ./components/Icon/Icon.react.js ***!
+ \***************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar Icon = function Icon(_ref) {\n var name = _ref.name,\n fill = _ref.fill,\n width = _ref.width,\n height = _ref.height;\n var props = {\n width: width,\n height: height\n };\n\n if (fill) {\n props.fill = fill;\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"svg\", props, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"use\", {\n xlinkHref: \"bundles/sprites.svg#\".concat(name)\n }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Icon);\nIcon.propTypes = {\n name: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].string.isRequired.describe('The icon name. This will be the name found in the '),\n width: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].number.isRequired.describe('The icon width, in pixels.'),\n height: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].number.isRequired.describe('The icon height, in pixels.'),\n fill: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].string.describe('A valid color, used as the fill property for the SVG.')\n};\n\n//# sourceURL=webpack:///./components/Icon/Icon.react.js?");
+
+/***/ }),
+
+/***/ "./components/InlineSubmitInput/InlineSubmitInput.example.js":
+/*!*******************************************************************!*\
+ !*** ./components/InlineSubmitInput/InlineSubmitInput.example.js ***!
+ \*******************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/Fieldset/Fieldset.react */ \"./components/Fieldset/Fieldset.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var components_InlineSubmitInput_InlineSubmitInput_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/InlineSubmitInput/InlineSubmitInput.react */ \"./components/InlineSubmitInput/InlineSubmitInput.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar component = components_InlineSubmitInput_InlineSubmitInput_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n text: \"Basic example\",\n description: \"Description 1\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_InlineSubmitInput_InlineSubmitInput_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onSubmit: function onSubmit(v) {\n return alert('submitting: ' + v);\n },\n submitButtonText: \"ADD\"\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n text: \"Custom validation\",\n description: \"Description 2\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_InlineSubmitInput_InlineSubmitInput_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n validate: function validate(v) {\n return v.length > 5;\n },\n placeholder: \"Must be longer than 5 letters\",\n onSubmit: function onSubmit(v) {\n return alert('submitting: ' + v);\n },\n submitButtonText: \"ADD\"\n })\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/InlineSubmitInput/InlineSubmitInput.example.js?");
+
+/***/ }),
+
+/***/ "./components/InlineSubmitInput/InlineSubmitInput.react.js":
+/*!*****************************************************************!*\
+ !*** ./components/InlineSubmitInput/InlineSubmitInput.react.js ***!
+ \*****************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ InlineSubmitInput)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/TextInput/TextInput.react */ \"./components/TextInput/TextInput.react.js\");\n/* harmony import */ var components_InlineSubmitInput_InlineSubmitInput_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/InlineSubmitInput/InlineSubmitInput.scss */ \"./components/InlineSubmitInput/InlineSubmitInput.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar InlineSubmitInput = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(InlineSubmitInput, _React$Component);\n\n var _super = _createSuper(InlineSubmitInput);\n\n function InlineSubmitInput() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, InlineSubmitInput);\n\n _this = _super.call(this);\n _this.state = {\n value: '',\n showButton: false\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(InlineSubmitInput, [{\n key: \"validate\",\n value: function validate(value) {\n if (this.props.validate) {\n return this.props.validate(value);\n }\n\n return value.length > 0;\n }\n }, {\n key: \"handleInputChange\",\n value: function handleInputChange(value) {\n this.setState({\n value: value,\n showButton: this.validate(value)\n });\n }\n }, {\n key: \"handleSubmit\",\n value: function handleSubmit() {\n var _this2 = this;\n\n this.props.onSubmit(this.state.value).then(function (shouldClearInput) {\n if (shouldClearInput) {\n _this2.handleInputChange('');\n }\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n className: components_InlineSubmitInput_InlineSubmitInput_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].wrapper\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n className: this.state.showButton ? components_InlineSubmitInput_InlineSubmitInput_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].input_padded : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n placeholder: this.props.placeholder,\n value: this.state.value,\n onChange: this.handleInputChange.bind(this)\n })), this.state.showButton ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"button\", {\n type: \"button\",\n className: components_InlineSubmitInput_InlineSubmitInput_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].button,\n onClick: this.handleSubmit.bind(this)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"span\", null, this.props.submitButtonText)) : null);\n }\n }]);\n\n return InlineSubmitInput;\n}(react__WEBPACK_IMPORTED_MODULE_6__.Component);\n\n\nInlineSubmitInput.propTypes = {\n onSubmit: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].func.isRequired.describe('A function fired when the submit button is clicked. It receives the current input value as its only parameter, and must return a promise that is resolved with a boolean for whether to clear the input.'),\n submitButtonText: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.isRequired.describe('The text to show on the submit button, which is shown when validate() returns true.'),\n validate: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].func.describe('A function fired when the input is changed. It receives the new value as its only parameter, and must return a boolean for whether to show the submit button.'),\n placeholder: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.describe('A placeholder string, for when the input is empty')\n};\n\n//# sourceURL=webpack:///./components/InlineSubmitInput/InlineSubmitInput.react.js?");
+
+/***/ }),
+
+/***/ "./components/IntervalInput/IntervalInput.example.js":
+/*!***********************************************************!*\
+ !*** ./components/IntervalInput/IntervalInput.example.js ***!
+ \***********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_IntervalInput_IntervalInput_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/IntervalInput/IntervalInput.react */ \"./components/IntervalInput/IntervalInput.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar component = components_IntervalInput_IntervalInput_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n\nvar IntervalDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(IntervalDemo, _React$Component);\n\n var _super = _createSuper(IntervalDemo);\n\n function IntervalDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, IntervalDemo);\n\n _this = _super.call(this);\n _this.state = {\n count: 15,\n unit: 'minute'\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(IntervalDemo, [{\n key: \"handleChange\",\n value: function handleChange(count, unit) {\n this.setState({\n count: count,\n unit: unit\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_IntervalInput_IntervalInput_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n count: this.state.count,\n unit: this.state.unit,\n onChange: this.handleChange.bind(this)\n });\n }\n }]);\n\n return IntervalDemo;\n}(react__WEBPACK_IMPORTED_MODULE_8__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n style: {\n width: 500,\n margin: '0 auto'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n text: \"How often should it repeat?\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(IntervalDemo, null)\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/IntervalInput/IntervalInput.example.js?");
+
+/***/ }),
+
+/***/ "./components/IntervalInput/IntervalInput.react.js":
+/*!*********************************************************!*\
+ !*** ./components/IntervalInput/IntervalInput.react.js ***!
+ \*********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var components_Dropdown_Dropdown_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/Dropdown/Dropdown.react */ \"./components/Dropdown/Dropdown.react.js\");\n/* harmony import */ var components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Dropdown/Option.react */ \"./components/Dropdown/Option.react.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar IntervalInput = function IntervalInput(_ref) {\n var count = _ref.count,\n unit = _ref.unit,\n onChange = _ref.onChange;\n var counts = [];\n var max = unit === 'hour' ? 23 : 59;\n\n for (var i = 1; i <= max; i++) {\n counts.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n key: 'count' + i,\n value: String(i)\n }, String(i)));\n }\n\n var countChange = function countChange(newCount) {\n return onChange(parseInt(newCount, 10), unit);\n };\n\n var unitChange = function unitChange(newUnit) {\n if (newUnit === 'minute') {\n return onChange(count, newUnit);\n } else {\n return onChange(Math.min(23, count), newUnit);\n }\n };\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Dropdown_Dropdown_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n width: \"50%\",\n value: String(count),\n onChange: countChange\n }, counts), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Dropdown_Dropdown_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n width: \"50%\",\n value: unit,\n onChange: unitChange\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n value: 'minute'\n }, count === 1 ? 'Minute' : 'Minutes'), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n value: 'hour'\n }, count === 1 ? 'Hour' : 'Hours')));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (IntervalInput);\nIntervalInput.propTypes = {\n count: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].number.isRequired,\n unit: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].oneOf(['minute', 'hour']),\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].func.isRequired\n};\n\n//# sourceURL=webpack:///./components/IntervalInput/IntervalInput.react.js?");
+
+/***/ }),
+
+/***/ "./components/JsonPrinter/JsonPrinter.example.js":
+/*!*******************************************************!*\
+ !*** ./components/JsonPrinter/JsonPrinter.example.js ***!
+ \*******************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/Fieldset/Fieldset.react */ \"./components/Fieldset/Fieldset.react.js\");\n/* harmony import */ var components_JsonPrinter_JsonPrinter_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/JsonPrinter/JsonPrinter.react */ \"./components/JsonPrinter/JsonPrinter.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar component = components_JsonPrinter_JsonPrinter_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar json = {\n results: [{\n name: 'Apples',\n description: 'Blah blah blah...',\n count: 12,\n edible: true,\n lengthyProp: 'This is a really long sentence that hopefully fills up the entire width of the container, and demonstrates overflow.'\n }, {\n name: 'Bananas',\n description: 'Blah blah blah...',\n count: 3,\n edible: true\n }, {\n name: 'Rocks',\n description: 'Blah blah blah...',\n count: 44,\n edible: false,\n acquiredAt: {\n name: 'Dusty Flea Market',\n address: '1 Main St',\n phone: '555-555-1234'\n }\n }]\n};\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n legend: \"My Cool JSON\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_JsonPrinter_JsonPrinter_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n object: json\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/JsonPrinter/JsonPrinter.example.js?");
+
+/***/ }),
+
+/***/ "./components/JsonPrinter/JsonPrinter.react.js":
+/*!*****************************************************!*\
+ !*** ./components/JsonPrinter/JsonPrinter.react.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var components_CodeSnippet_CodeSnippet_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/CodeSnippet/CodeSnippet.react */ \"./components/CodeSnippet/CodeSnippet.react.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar JsonPrinter = function JsonPrinter(_ref) {\n var object = _ref.object;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_CodeSnippet_CodeSnippet_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n source: JSON.stringify(object, null, 4),\n language: \"javascript\",\n lineNumbers: false,\n fullPage: false\n });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (JsonPrinter);\nJsonPrinter.propTypes = {\n object: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].any.describe('The JavaScript object to stringify and print.')\n};\n\n//# sourceURL=webpack:///./components/JsonPrinter/JsonPrinter.react.js?");
+
+/***/ }),
+
+/***/ "./components/KeyField/KeyField.example.js":
+/*!*************************************************!*\
+ !*** ./components/KeyField/KeyField.example.js ***!
+ \*************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/Fieldset/Fieldset.react */ \"./components/Fieldset/Fieldset.react.js\");\n/* harmony import */ var components_KeyField_KeyField_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/KeyField/KeyField.react */ \"./components/KeyField/KeyField.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar component = components_KeyField_KeyField_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n legend: \"App Keys\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: \"Public key\",\n description: \"Not a secret.\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_KeyField_KeyField_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, \"abc123qwerty4567890\")\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: \"Secret key\",\n description: \"Very much a secret.\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_KeyField_KeyField_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n hidden: true\n }, \"abc123qwerty4567890\")\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/KeyField/KeyField.example.js?");
+
+/***/ }),
+
+/***/ "./components/KeyField/KeyField.react.js":
+/*!***********************************************!*\
+ !*** ./components/KeyField/KeyField.react.js ***!
+ \***********************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ KeyField)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_FormButton_FormButton_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/FormButton/FormButton.react */ \"./components/FormButton/FormButton.react.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_KeyField_KeyField_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/KeyField/KeyField.scss */ \"./components/KeyField/KeyField.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar KeyField = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(KeyField, _React$Component);\n\n var _super = _createSuper(KeyField);\n\n function KeyField(props) {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, KeyField);\n\n _this = _super.call(this);\n _this.state = {\n hidden: props.hidden\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(KeyField, [{\n key: \"show\",\n value: function show() {\n this.setState({\n hidden: false\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var key = this.props.name || '';\n\n if (key.length) {\n key += ' ';\n }\n\n if (this.state.hidden) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_FormButton_FormButton_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n value: this.props.whenHiddenText || \"Show \".concat(key, \"Key\"),\n onClick: this.show.bind(this)\n });\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n className: components_KeyField_KeyField_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].key\n }, this.props.children);\n }\n }]);\n\n return KeyField;\n}(react__WEBPACK_IMPORTED_MODULE_7__.Component);\n\n\nKeyField.propTypes = {\n children: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].node.describe('The contents of the field. Ideally, this is an app key.'),\n hidden: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].bool.describe('Determines whether the field is initially hidden'),\n name: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].string.describe('If the field is initially hidden, this name will be used in the button used to show it. If the value is NAME, the button will contain the text \"Show NAME Key\"'),\n whenHiddenText: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].string.describe('Use this instead of \"name\" if you aren\\'t showing a key.')\n};\n\n//# sourceURL=webpack:///./components/KeyField/KeyField.react.js?");
+
+/***/ }),
+
+/***/ "./components/Label/Label.example.js":
+/*!*******************************************!*\
+ !*** ./components/Label/Label.example.js ***!
+ \*******************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar component = components_Label_Label_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n text: \"This is my text.\",\n description: \"This is my description.\"\n }),\n input: null\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/Label/Label.example.js?");
+
+/***/ }),
+
+/***/ "./components/Label/Label.react.js":
+/*!*****************************************!*\
+ !*** ./components/Label/Label.react.js ***!
+ \*****************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var components_Field_Field_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/Field/Field.scss */ \"./components/Field/Field.scss\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Label_Label_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/Label/Label.scss */ \"./components/Label/Label.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar Label = function Label(props) {\n var padding = (props.padding || 20) + 'px';\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: [components_Label_Label_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].label, components_Field_Field_scss__WEBPACK_IMPORTED_MODULE_0__[\"default\"].centered].join(' '),\n style: {\n padding: '0 ' + padding\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: components_Label_Label_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].text\n }, props.text), props.description ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: components_Label_Label_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].description\n }, props.description) : null);\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Label);\nLabel.propTypes = {\n text: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].node.describe('The main text/node of the label.'),\n description: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].node.describe('The secondary text/node of the label.'),\n padding: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].number.describe('Allows you to override the left-right padding of the label.')\n};\n\n//# sourceURL=webpack:///./components/Label/Label.react.js?");
+
+/***/ }),
+
+/***/ "./components/LiveReload/LiveReload.example.js":
+/*!*****************************************************!*\
+ !*** ./components/LiveReload/LiveReload.example.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var components_LiveReload_LiveReload_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/LiveReload/LiveReload.react */ \"./components/LiveReload/LiveReload.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_LiveReload_LiveReload_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_LiveReload_LiveReload_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n source: function source() {\n return Promise.resolve(Math.random());\n },\n render: function render(num) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"span\", null, num);\n },\n refreshIntervalMillis: 100,\n initialData: 0\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/LiveReload/LiveReload.example.js?");
+
+/***/ }),
+
+/***/ "./components/LiveReload/LiveReload.react.js":
+/*!***************************************************!*\
+ !*** ./components/LiveReload/LiveReload.react.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ LiveReload)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var lib_AJAX__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lib/AJAX */ \"./lib/AJAX.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar LiveReload = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(LiveReload, _React$Component);\n\n var _super = _createSuper(LiveReload);\n\n function LiveReload(props) {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, LiveReload);\n\n _this = _super.call(this);\n\n _this.abortXHR = function () {};\n\n _this.timer = null;\n _this.refreshIntervalMillis = props.refreshIntervalMillis || 1000;\n _this.state = {\n currentData: props.initialData\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(LiveReload, [{\n key: \"fetchNewData\",\n value: function fetchNewData() {\n var _this2 = this;\n\n clearTimeout(this.timer);\n var promise = null;\n var xhr = null;\n\n if (typeof this.props.source === 'function') {\n var obj = this.props.source();\n\n if (obj.promise && obj.xhr) {\n promise = obj.promise;\n xhr = obj.xhr;\n } else {\n promise = obj;\n }\n } else {\n var _obj = (0,lib_AJAX__WEBPACK_IMPORTED_MODULE_7__.abortableGet)(this.props.source);\n\n promise = _obj.promise;\n xhr = _obj.xhr;\n }\n\n this.abortXHR = function () {\n if (xhr) {\n xhr.abort();\n }\n\n clearTimeout(_this2.timer);\n };\n\n promise.then(function (data) {\n _this2.setState({\n currentData: data\n });\n })[\"finally\"](function () {\n if (_this2.shouldContinueReloading) {\n _this2.timer = setTimeout(_this2.fetchNewData.bind(_this2), _this2.refreshIntervalMillis);\n }\n });\n return promise;\n }\n }, {\n key: \"componentWillMount\",\n value: function componentWillMount() {\n this.shouldContinueReloading = true;\n\n if (!this.state.currentData) {\n this.fetchNewData();\n } else {\n this.timer = setTimeout(this.fetchNewData.bind(this), this.refreshIntervalMillis);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.abortXHR();\n this.shouldContinueReloading = false;\n clearTimeout(this.timer);\n }\n }, {\n key: \"render\",\n value: function render() {\n return this.props.render(this.state.currentData);\n }\n }]);\n\n return LiveReload;\n}(react__WEBPACK_IMPORTED_MODULE_6__.Component);\n\n\nLiveReload.propTypes = {\n refreshIntervalMillis: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].number.describe('How often to refresh the data, in milliseconds. Defaults to 1s.'),\n source: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].oneOfType([lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string, lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].func]).isRequired.describe('Either a URL to fetch updates from, or a function that returns a promise that fetches update, or a function that returns { promise, xhr }.'),\n render: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].func.isRequired.describe('Receives the data from the URL or promise and returns the component to be rendered.'),\n initialData: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].any.describe('Initial data to seed the component before any request has been made. If this is not passed, then your render function must be prepared to handle being called with \"undefined\" instead of data. Passing this will also cause the first load to happen after refreshIntervalMillis, while not passing it will cause it the first load to happen immediately.')\n};\n\n//# sourceURL=webpack:///./components/LiveReload/LiveReload.react.js?");
+
+/***/ }),
+
+/***/ "./components/Loader/Loader.example.js":
+/*!*********************************************!*\
+ !*** ./components/Loader/Loader.example.js ***!
+ \*********************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! stylesheets/base.scss */ \"./stylesheets/base.scss\");\n/* harmony import */ var components_Loader_Loader_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Loader/Loader.react */ \"./components/Loader/Loader.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar component = components_Loader_Loader_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n style: {\n width: 500,\n height: 500,\n margin: '10px auto',\n position: 'relative'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_Loader_Loader_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n className: stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_0__[\"default\"].center\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/Loader/Loader.example.js?");
+
+/***/ }),
+
+/***/ "./components/Loader/Loader.react.js":
+/*!*******************************************!*\
+ !*** ./components/Loader/Loader.react.js ***!
+ \*******************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Loader)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Loader_Loader_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Loader/Loader.scss */ \"./components/Loader/Loader.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar SMALL_RADIUS = 20;\nvar LARGE_RADIUS = 50;\nvar DURATION = 3000;\nvar LENGTH = 1.5 * (SMALL_RADIUS + LARGE_RADIUS) * Math.PI + 2 * (SMALL_RADIUS + LARGE_RADIUS);\nvar POINTS = {\n A: 1.5 * SMALL_RADIUS * Math.PI / LENGTH,\n // End of first loop\n B: (1.5 * SMALL_RADIUS * Math.PI + SMALL_RADIUS + LARGE_RADIUS) / LENGTH,\n // Beginning of second loop\n C: (1.5 * (SMALL_RADIUS + LARGE_RADIUS) * Math.PI + SMALL_RADIUS + LARGE_RADIUS) / LENGTH // End of second loop\n\n};\n\nfunction getRadius(t) {\n return 40 - 60 * Math.abs(t - 0.5);\n}\n\nfunction getPosition(t) {\n if (t < POINTS.A) {\n var multiplier = LENGTH / SMALL_RADIUS;\n return {\n x: SMALL_RADIUS + SMALL_RADIUS * Math.cos(t * multiplier + Math.PI / 2),\n y: 2 * LARGE_RADIUS + SMALL_RADIUS - SMALL_RADIUS * Math.sin(t * multiplier + Math.PI / 2)\n };\n } else if (t < POINTS.B) {\n return {\n x: 2 * SMALL_RADIUS,\n y: LENGTH * (POINTS.A - t) + 2 * LARGE_RADIUS + SMALL_RADIUS\n };\n } else if (t < POINTS.C) {\n var t2 = t - POINTS.B;\n\n var _multiplier = LENGTH / LARGE_RADIUS;\n\n return {\n x: 2 * SMALL_RADIUS + LARGE_RADIUS - LARGE_RADIUS * Math.cos(t2 * _multiplier),\n y: LARGE_RADIUS - LARGE_RADIUS * Math.sin(t2 * _multiplier)\n };\n } else {\n return {\n x: LENGTH * (POINTS.C - t) + 2 * SMALL_RADIUS + LARGE_RADIUS,\n y: 2 * LARGE_RADIUS\n };\n }\n}\n\nvar Loader = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Loader, _React$Component);\n\n var _super = _createSuper(Loader);\n\n function Loader() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Loader);\n\n _this = _super.call(this);\n _this.dot0Ref = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createRef();\n _this.dot1Ref = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createRef();\n _this.dot2Ref = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createRef();\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Loader, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.mounted = true;\n this.mountTime = new Date().getTime();\n requestAnimationFrame(this.animate.bind(this));\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n }\n }, {\n key: \"animate\",\n value: function animate() {\n if (!this.mounted) {\n return;\n }\n\n var delta = new Date() - this.mountTime;\n var t = delta / DURATION % 1;\n var pos = getPosition(t);\n var style = this.dot0Ref.current.style;\n style.left = pos.x + 'px';\n style.top = pos.y + 'px';\n style.width = style.height = getRadius(t) + 'px';\n t = (delta / DURATION + 0.4) % 1;\n pos = getPosition(t);\n style = this.dot1Ref.current.style;\n style.left = pos.x + 'px';\n style.top = pos.y + 'px';\n style.width = style.height = getRadius(t) + 'px';\n t = (delta / DURATION + 0.8) % 1;\n pos = getPosition(t);\n style = this.dot2Ref.current.style;\n style.left = pos.x + 'px';\n style.top = pos.y + 'px';\n style.width = style.height = getRadius(t) + 'px';\n requestAnimationFrame(this.animate.bind(this));\n }\n }, {\n key: \"render\",\n value: function render() {\n var classes = components_Loader_Loader_scss__WEBPACK_IMPORTED_MODULE_6__[\"default\"].loader;\n\n if (this.props.className) {\n classes += ' ' + this.props.className;\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", {\n className: classes\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", {\n ref: this.dot0Ref\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", {\n ref: this.dot1Ref\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", {\n ref: this.dot2Ref\n }));\n }\n }]);\n\n return Loader;\n}(react__WEBPACK_IMPORTED_MODULE_5__.Component);\n\n\n\n//# sourceURL=webpack:///./components/Loader/Loader.react.js?");
+
+/***/ }),
+
+/***/ "./components/LoaderContainer/LoaderContainer.example.js":
+/*!***************************************************************!*\
+ !*** ./components/LoaderContainer/LoaderContainer.example.js ***!
+ \***************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_LoaderContainer_LoaderContainer_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/LoaderContainer/LoaderContainer.react */ \"./components/LoaderContainer/LoaderContainer.react.js\");\n/* harmony import */ var components_PushAudiencesSelector_PushAudiencesSelector_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/PushAudiencesSelector/PushAudiencesSelector.react */ \"./components/PushAudiencesSelector/PushAudiencesSelector.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar component = components_LoaderContainer_LoaderContainer_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n\nvar PushAudiencesSelectorDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(PushAudiencesSelectorDemo, _React$Component);\n\n var _super = _createSuper(PushAudiencesSelectorDemo);\n\n function PushAudiencesSelectorDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, PushAudiencesSelectorDemo);\n\n _this = _super.call(this);\n _this.state = {\n current: '1'\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(PushAudiencesSelectorDemo, [{\n key: \"handleChange\",\n value: function handleChange(value) {\n this.setState({\n current: value\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_PushAudiencesSelector_PushAudiencesSelector_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n audiences: this.props.audiences,\n current: this.state.current,\n onChange: this.handleChange.bind(this)\n });\n }\n }]);\n\n return PushAudiencesSelectorDemo;\n}(react__WEBPACK_IMPORTED_MODULE_7__.Component);\n\nvar mockData = [{\n objectId: '1',\n name: 'Everyone',\n count: 148,\n createdAt: new Date(1444757195683)\n}, {\n objectId: '2',\n name: 'iOS Users in US',\n count: 148,\n createdAt: new Date(1444757195683)\n}, {\n objectId: '3',\n name: 'Completed Checkout <30 days',\n count: 148,\n createdAt: new Date(1444757195683)\n}, {\n objectId: '4',\n name: 'New Users',\n count: 148,\n createdAt: new Date(1444757195683)\n}, {\n objectId: '5',\n name: 'Everyone',\n count: 148,\n createdAt: new Date(1444757195683)\n}, {\n objectId: '6',\n name: 'iOS Users in US',\n count: 148,\n createdAt: new Date(1444757195683)\n}, {\n objectId: '7',\n name: 'Completed Checkout <30 days',\n count: 148,\n createdAt: new Date(1444757195683)\n}, {\n objectId: '8',\n name: 'New Users',\n count: 148,\n createdAt: new Date(1444757195683)\n}];\n\nvar LoaderContainerDemo = /*#__PURE__*/function (_React$Component2) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(LoaderContainerDemo, _React$Component2);\n\n var _super2 = _createSuper(LoaderContainerDemo);\n\n function LoaderContainerDemo() {\n var _this2;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, LoaderContainerDemo);\n\n _this2 = _super2.call(this);\n _this2.state = {\n loading: true\n };\n return _this2;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(LoaderContainerDemo, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_LoaderContainer_LoaderContainer_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n loading: this.state.loading\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(PushAudiencesSelectorDemo, {\n audiences: mockData\n })));\n }\n }]);\n\n return LoaderContainerDemo;\n}(react__WEBPACK_IMPORTED_MODULE_7__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(LoaderContainerDemo, null);\n }\n}];\n\n//# sourceURL=webpack:///./components/LoaderContainer/LoaderContainer.example.js?");
+
+/***/ }),
+
+/***/ "./components/LoaderContainer/LoaderContainer.react.js":
+/*!*************************************************************!*\
+ !*** ./components/LoaderContainer/LoaderContainer.react.js ***!
+ \*************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! stylesheets/base.scss */ \"./stylesheets/base.scss\");\n/* harmony import */ var components_Loader_Loader_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Loader/Loader.react */ \"./components/Loader/Loader.react.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_LoaderContainer_LoaderContainer_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/LoaderContainer/LoaderContainer.scss */ \"./components/LoaderContainer/LoaderContainer.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n //Loader wrapper component\n//Wraps child component with a layer and centered\n\nvar LoaderContainer = function LoaderContainer(_ref) {\n var loading = _ref.loading,\n hideAnimation = _ref.hideAnimation,\n children = _ref.children,\n _ref$solid = _ref.solid,\n solid = _ref$solid === void 0 ? true : _ref$solid;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n className: components_LoaderContainer_LoaderContainer_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].loaderContainer\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n className: components_LoaderContainer_LoaderContainer_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].children\n }, children), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n className: [components_LoaderContainer_LoaderContainer_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].loaderParent, loading ? components_LoaderContainer_LoaderContainer_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].visible : '', solid ? components_LoaderContainer_LoaderContainer_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].solid : ''].join(' ')\n }, hideAnimation || !loading ? null : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Loader_Loader_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n className: stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_0__[\"default\"].center\n })));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LoaderContainer);\nLoaderContainer.propTypes = {\n loading: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].bool.describe('State of the loader (true displays loader, false hides loader).'),\n hideAnimation: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].bool.describe('Whether to hide the animation within the container.'),\n solid: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].bool.describe('Optional flag to have an solid background. Defaults to true. If false an opacity of 70% is used.')\n};\n\n//# sourceURL=webpack:///./components/LoaderContainer/LoaderContainer.react.js?");
+
+/***/ }),
+
+/***/ "./components/LoaderDots/LoaderDots.example.js":
+/*!*****************************************************!*\
+ !*** ./components/LoaderDots/LoaderDots.example.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_LoaderDots_LoaderDots_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/LoaderDots/LoaderDots.react */ \"./components/LoaderDots/LoaderDots.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_LoaderDots_LoaderDots_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n name: 'Loader Dots',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_LoaderDots_LoaderDots_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null));\n }\n}];\n\n//# sourceURL=webpack:///./components/LoaderDots/LoaderDots.example.js?");
+
+/***/ }),
+
+/***/ "./components/LoaderDots/LoaderDots.react.js":
+/*!***************************************************!*\
+ !*** ./components/LoaderDots/LoaderDots.react.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ LoaderDots)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_LoaderDots_LoaderDots_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/LoaderDots/LoaderDots.scss */ \"./components/LoaderDots/LoaderDots.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar LoaderDots = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(LoaderDots, _React$Component);\n\n var _super = _createSuper(LoaderDots);\n\n function LoaderDots() {\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, LoaderDots);\n\n return _super.call(this);\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(LoaderDots, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", {\n className: components_LoaderDots_LoaderDots_scss__WEBPACK_IMPORTED_MODULE_6__[\"default\"].loaderDots\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"span\", null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"span\", null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"span\", null));\n }\n }]);\n\n return LoaderDots;\n}(react__WEBPACK_IMPORTED_MODULE_5__.Component);\n\n\n\n//# sourceURL=webpack:///./components/LoaderDots/LoaderDots.react.js?");
+
+/***/ }),
+
+/***/ "./components/LogView/LogView.example.js":
+/*!***********************************************!*\
+ !*** ./components/LogView/LogView.example.js ***!
+ \***********************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_LogView_LogViewEntry_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/LogView/LogViewEntry.react */ \"./components/LogView/LogViewEntry.react.js\");\n/* harmony import */ var components_LogView_LogView_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/LogView/LogView.react */ \"./components/LogView/LogView.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar component = components_LogView_LogView_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\nvar demos = [{\n render: function render() {\n var text1 = \"I2015-09-30T00:25:26.950Z]Deployed v1 with triggers:\\n Item:\\n before_save\\n after_save\\n OtherItem:\\n before_delete\\n after_delete\\n Cloud Functions:\\n functionName\\n anotherFunction\\n WillError\";\n var text2 = \"I2015-09-30T00:35:42.336Z]v2 before_save triggered for Item:\\n Input: {\\\"original\\\":null,\\\"update\\\":{\\\"name\\\":\\\"i\\\"}}\\n Result: Update changed to {\\\"name\\\":\\\"i\\\",\\\"count\\\":12}\";\n var text3 = \"I2015-10-06T22:39:11.029Z]v4 Ran cloud function doSomething with:\\n Input: {}\\n Result: {}\";\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_LogView_LogView_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_LogView_LogViewEntry_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: text1\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_LogView_LogViewEntry_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: text2\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_LogView_LogViewEntry_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: text3\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/LogView/LogView.example.js?");
+
+/***/ }),
+
+/***/ "./components/LogView/LogView.react.js":
+/*!*********************************************!*\
+ !*** ./components/LogView/LogView.react.js ***!
+ \*********************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_LogView_LogView_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/LogView/LogView.scss */ \"./components/LogView/LogView.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar LogView = function LogView(props) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"ol\", {\n className: components_LogView_LogView_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].view\n }, props.children);\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LogView);\n\n//# sourceURL=webpack:///./components/LogView/LogView.react.js?");
+
+/***/ }),
+
+/***/ "./components/LogView/LogViewEntry.example.js":
+/*!****************************************************!*\
+ !*** ./components/LogView/LogViewEntry.example.js ***!
+ \****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_LogView_LogViewEntry_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/LogView/LogViewEntry.react */ \"./components/LogView/LogViewEntry.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_LogView_LogViewEntry_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_LogView_LogViewEntry_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: \"I2015-09-30T00:25:26.950Z]Deployed v1 with triggers:\"\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/LogView/LogViewEntry.example.js?");
+
+/***/ }),
+
+/***/ "./components/LogView/LogViewEntry.react.js":
+/*!**************************************************!*\
+ !*** ./components/LogView/LogViewEntry.react.js ***!
+ \**************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_LogView_LogViewEntry_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/LogView/LogViewEntry.scss */ \"./components/LogView/LogViewEntry.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar TIMESTAMP_REGEX = ['([a-z])', // Any Single Word Character (Not Whitespace) 1\n'((?:2|1)\\\\d{3}(?:-|\\\\/)(?:(?:0[1-9])|(?:1[0-2]))(?:-|\\\\/)(?:(?:0[1-9])|(?:[1-2][0-9])|(?:3[0-1]))(?:T|\\\\s)(?:(?:[0-1][0-9])|(?:2[0-3])):(?:[0-5][0-9]):(?:[0-5][0-9]))', // Time Stamp 1\n'(\\\\.)', // Any Single Character 1\n'(\\\\d)', // Any Single Digit 1\n'(\\\\d)', // Any Single Digit 2\n'(\\\\d)', // Any Single Digit 3\n'([a-z])', // Any Single Word Character (Not Whitespace) 2\n'(\\\\])' // Any Single Character 2\n].join('');\n\nvar isError = function isError(str) {\n return str[0] === 'E';\n};\n\nvar getLogEntryInfo = function getLogEntryInfo(str) {\n var re = getTimestampRegex();\n var timeStampStr = str.match(re) ? str.match(re)[0] : '';\n return {\n time: timeStampStr,\n content: str.replace(timeStampStr, ''),\n error: isError(str)\n };\n}; //example timestamp: 'I2015-09-30T00:36:45.522Z]'\n\n\nvar getTimestampRegex = function getTimestampRegex() {\n return new RegExp(TIMESTAMP_REGEX, ['i']);\n};\n\nvar LogViewEntry = function LogViewEntry(_ref) {\n var _ref$text = _ref.text,\n text = _ref$text === void 0 ? '' : _ref$text,\n timestamp = _ref.timestamp;\n var logEntryInfo = getLogEntryInfo(text);\n var classes = [components_LogView_LogViewEntry_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].entry, logEntryInfo.error ? components_LogView_LogViewEntry_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].error : ''];\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"li\", {\n className: classes.join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"span\", {\n className: components_LogView_LogViewEntry_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].time\n }, timestamp.iso || timestamp, \" - \"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"span\", {\n className: components_LogView_LogViewEntry_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].content\n }, logEntryInfo.content));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LogViewEntry);\nLogViewEntry.propTypes = {\n text: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].string.isRequired.describe('The content of the log view entry.')\n};\n\n//# sourceURL=webpack:///./components/LogView/LogViewEntry.react.js?");
+
+/***/ }),
+
+/***/ "./components/LoginForm/LoginForm.example.js":
+/*!***************************************************!*\
+ !*** ./components/LoginForm/LoginForm.example.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var components_LoginForm_LoginForm_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/LoginForm/LoginForm.react */ \"./components/LoginForm/LoginForm.react.js\");\n/* harmony import */ var components_LoginRow_LoginRow_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/LoginRow/LoginRow.react */ \"./components/LoginRow/LoginRow.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar component = components_LoginForm_LoginForm_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n style: {\n background: '#06283D',\n height: 500,\n position: 'relative'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_LoginForm_LoginForm_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n header: \"Access your Dashboard\",\n action: \"Log In\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_LoginRow_LoginRow_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: \"Email\",\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"input\", {\n type: \"email\"\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_LoginRow_LoginRow_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: \"Password\",\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"input\", {\n type: \"password\"\n })\n })));\n }\n}, {\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n style: {\n background: '#06283D',\n height: 700,\n position: 'relative'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_LoginForm_LoginForm_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n header: \"Sign up with Parse\",\n footer: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"span\", null, \"Signing up signifies that you have read and agree to the \"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"a\", {\n href: \"https://parse.com/about/terms\"\n }, \"Terms of Service\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"span\", null, \" and \"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"a\", {\n href: \"https://parse.com/about/privacy\"\n }, \"Privacy Policy\"), \".\"),\n action: \"Sign Up\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_LoginRow_LoginRow_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: \"Email\",\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"input\", {\n type: \"email\",\n placeholder: \"email@domain\",\n autoComplete: \"off\"\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_LoginRow_LoginRow_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: \"Password\",\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"input\", {\n type: \"password\",\n placeholder: \"The stronger, the better\",\n autoComplete: \"off\"\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_LoginRow_LoginRow_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: \"App Name\",\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"input\", {\n type: \"text\",\n placeholder: \"Name your first app\"\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_LoginRow_LoginRow_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n label: \"Company\",\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"input\", {\n type: \"text\",\n placeholder: \"(Optional)\"\n })\n })));\n }\n}];\n\n//# sourceURL=webpack:///./components/LoginForm/LoginForm.example.js?");
+
+/***/ }),
+
+/***/ "./components/LoginForm/LoginForm.react.js":
+/*!*************************************************!*\
+ !*** ./components/LoginForm/LoginForm.react.js ***!
+ \*************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ LoginForm)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_CSRFInput_CSRFInput_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/CSRFInput/CSRFInput.react */ \"./components/CSRFInput/CSRFInput.react.js\");\n/* harmony import */ var components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Icon/Icon.react */ \"./components/Icon/Icon.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_LoginForm_LoginForm_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/LoginForm/LoginForm.scss */ \"./components/LoginForm/LoginForm.scss\");\n/* harmony import */ var stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! stylesheets/base.scss */ \"./stylesheets/base.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n // Class-style component, because we need refs\n\nvar LoginForm = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(LoginForm, _React$Component);\n\n var _super = _createSuper(LoginForm);\n\n function LoginForm() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, LoginForm);\n\n _this = _super.call(this);\n _this.formRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createRef();\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(LoginForm, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n className: components_LoginForm_LoginForm_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].login,\n style: {\n marginTop: this.props.marginTop || '-220px'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n width: 80,\n height: 80,\n name: \"infinity\",\n fill: \"#093A59\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"form\", {\n method: \"post\",\n ref: this.formRef,\n action: this.props.endpoint,\n className: components_LoginForm_LoginForm_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].form\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_CSRFInput_CSRFInput_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n className: components_LoginForm_LoginForm_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].header\n }, this.props.header), this.props.children, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n className: components_LoginForm_LoginForm_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].footer\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n className: stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_9__[\"default\"].verticalCenter,\n style: {\n width: '100%'\n }\n }, this.props.footer)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"input\", {\n type: \"submit\",\n disabled: !!this.props.disableSubmit,\n onClick: function onClick() {\n if (_this2.props.disableSubmit) {\n return;\n }\n\n _this2.props.formSubmit();\n\n _this2.formRef.current.submit();\n },\n className: components_LoginForm_LoginForm_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].submit,\n value: this.props.action\n })));\n }\n }]);\n\n return LoginForm;\n}(react__WEBPACK_IMPORTED_MODULE_7__.Component);\n\n\n\n//# sourceURL=webpack:///./components/LoginForm/LoginForm.react.js?");
+
+/***/ }),
+
+/***/ "./components/LoginRow/LoginRow.react.js":
+/*!***********************************************!*\
+ !*** ./components/LoginRow/LoginRow.react.js ***!
+ \***********************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_LoginRow_LoginRow_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/LoginRow/LoginRow.scss */ \"./components/LoginRow/LoginRow.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar LoginRow = function LoginRow(_ref) {\n var label = _ref.label,\n input = _ref.input,\n extra = _ref.extra;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", {\n className: components_LoginRow_LoginRow_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].row\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: components_LoginRow_LoginRow_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].label\n }, label), extra ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: components_LoginRow_LoginRow_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extra\n }, extra) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: components_LoginRow_LoginRow_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].input\n }, input));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LoginRow);\n\n//# sourceURL=webpack:///./components/LoginRow/LoginRow.react.js?");
+
+/***/ }),
+
+/***/ "./components/Markdown/Markdown.example.js":
+/*!*************************************************!*\
+ !*** ./components/Markdown/Markdown.example.js ***!
+ \*************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Markdown_Markdown_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Markdown/Markdown.react */ \"./components/Markdown/Markdown.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_Markdown_Markdown_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n name: 'Demo name',\n render: function render() {\n var content = \"\\n**bold** *italic*\\n\\n~~This code is a mistake~~\\n\\n> Some quote\\n\\n`code`\\n\\n# Super heading dude #\\n\\n### These components are built by: ###\\n1. Andrew\\n2. Drew\\n3. Gogo\\n4. Peter\\n\\n```\\nsome code block\\n```\\n\";\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Markdown_Markdown_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n content: content\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/Markdown/Markdown.example.js?");
+
+/***/ }),
+
+/***/ "./components/Markdown/Markdown.react.js":
+/*!***********************************************!*\
+ !*** ./components/Markdown/Markdown.react.js ***!
+ \***********************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var components_CodeSnippet_CodeSnippet_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/CodeSnippet/CodeSnippet.react */ \"./components/CodeSnippet/CodeSnippet.react.js\");\n/* harmony import */ var marked__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! marked */ \"../node_modules/marked/src/marked.js\");\n/* harmony import */ var marked__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(marked__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom_server__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-dom/server */ \"../node_modules/react-dom/server.browser.js\");\n/* harmony import */ var react_dom_server__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_dom_server__WEBPACK_IMPORTED_MODULE_4__);\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n // Refer to https://github.com/chjj/marked.\n\nvar renderer = new (marked__WEBPACK_IMPORTED_MODULE_1___default().Renderer)();\n\nrenderer.code = function (code, lang) {\n var snippet = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_CodeSnippet_CodeSnippet_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n source: code,\n language: lang,\n fullPage: false\n });\n return react_dom_server__WEBPACK_IMPORTED_MODULE_4___default().renderToString(snippet);\n};\n\nvar Markdown = function Markdown(_ref) {\n var content = _ref.content;\n var rawHtml = marked__WEBPACK_IMPORTED_MODULE_1___default()(content, {\n sanitize: true,\n renderer: renderer\n }); // Yes, it looks dangerous, but we believe `marked` will do its job.\n // It's even recommend by Facebook:\n // https://facebook.github.io/react/docs/tutorial.html#adding-markdown\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: rawHtml\n }\n });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Markdown);\nMarkdown.propTypes = {\n content: lib_PropTypes__WEBPACK_IMPORTED_MODULE_2__[\"default\"].string.isRequired.describe('The content that will be rendered as markdown.')\n};\n\n//# sourceURL=webpack:///./components/Markdown/Markdown.react.js?");
+
+/***/ }),
+
+/***/ "./components/Modal/Modal.example.js":
+/*!*******************************************!*\
+ !*** ./components/Modal/Modal.example.js ***!
+ \*******************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Modal_Modal_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Modal/Modal.react */ \"./components/Modal/Modal.react.js\");\n/* harmony import */ var components_Button_Button_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/Button/Button.react */ \"./components/Button/Button.react.js\");\n\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar component = components_Modal_Modal_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\n\nvar ModalDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(ModalDemo, _React$Component);\n\n var _super = _createSuper(ModalDemo);\n\n function ModalDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, ModalDemo);\n\n _this = _super.call(this);\n _this.state = {\n showModal: false\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ModalDemo, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: \"Show demo modal\",\n onClick: this.setState.bind(this, {\n showModal: true\n }, function () {})\n }), this.state.showModal ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_Modal_Modal_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, this.props, {\n onConfirm: this.setState.bind(this, {\n showModal: false\n }, function () {}),\n onCancel: this.setState.bind(this, {\n showModal: false\n }, function () {})\n }), this.props.children) : null);\n }\n }]);\n\n return ModalDemo;\n}(react__WEBPACK_IMPORTED_MODULE_6__.Component);\n\nvar demos = [{\n name: 'Modal with children',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(ModalDemo, {\n title: \"With Children\",\n subtitle: \"And Subtitle\"\n }, \"Children\");\n }\n}, {\n name: 'Modal without children',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(ModalDemo, {\n title: \"Without Children\"\n }, null);\n }\n}, {\n name: 'Modal without children, but with buttons on right anyway.',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(ModalDemo, {\n title: \"Without Children\",\n buttonsInCenter: false\n }, null);\n }\n}];\n\n//# sourceURL=webpack:///./components/Modal/Modal.example.js?");
+
+/***/ }),
+
+/***/ "./components/Modal/Modal.react.js":
+/*!*****************************************!*\
+ !*** ./components/Modal/Modal.react.js ***!
+ \*****************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"../node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Button/Button.react */ \"./components/Button/Button.react.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/Icon/Icon.react */ \"./components/Icon/Icon.react.js\");\n/* harmony import */ var components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/Popover/Popover.react */ \"./components/Popover/Popover.react.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var components_Modal_Modal_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/Modal/Modal.scss */ \"./components/Modal/Modal.scss\");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\nvar origin = new lib_Position__WEBPACK_IMPORTED_MODULE_5__[\"default\"](0, 0);\nvar buttonColors = {\n danger: 'red',\n info: 'blue',\n valid: 'green'\n};\n\nvar Modal = function Modal(_ref) {\n var _ref$type = _ref.type,\n type = _ref$type === void 0 ? Modal.Types.INFO : _ref$type,\n icon = _ref.icon,\n _ref$iconSize = _ref.iconSize,\n iconSize = _ref$iconSize === void 0 ? 36 : _ref$iconSize,\n children = _ref.children,\n title = _ref.title,\n subtitle = _ref.subtitle,\n _ref$cancelText = _ref.cancelText,\n cancelText = _ref$cancelText === void 0 ? 'Cancel' : _ref$cancelText,\n onCancel = _ref.onCancel,\n _ref$canCancel = _ref.canCancel,\n canCancel = _ref$canCancel === void 0 ? true : _ref$canCancel,\n _ref$showCancel = _ref.showCancel,\n showCancel = _ref$showCancel === void 0 ? true : _ref$showCancel,\n _ref$confirmText = _ref.confirmText,\n confirmText = _ref$confirmText === void 0 ? 'Okay' : _ref$confirmText,\n onConfirm = _ref.onConfirm,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$progress = _ref.progress,\n progress = _ref$progress === void 0 ? false : _ref$progress,\n customFooter = _ref.customFooter,\n _ref$textModal = _ref.textModal,\n textModal = _ref$textModal === void 0 ? false : _ref$textModal,\n width = _ref.width,\n continueText = _ref.continueText,\n onContinue = _ref.onContinue,\n showContinue = _ref.showContinue,\n _ref$buttonsInCenter = _ref.buttonsInCenter,\n buttonsInCenter = _ref$buttonsInCenter === void 0 ? react__WEBPACK_IMPORTED_MODULE_6__.Children.count(children) === 0 : _ref$buttonsInCenter;\n\n if (children) {\n children = react__WEBPACK_IMPORTED_MODULE_6__.Children.map(children, function (c) {\n if (c && c.type === components_Field_Field_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"] && c.props.label) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.cloneElement(c, _objectSpread(_objectSpread({}, c.props), {}, {\n labelPadding: 24\n }));\n }\n\n return c;\n });\n }\n\n var footer = customFooter || /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n style: {\n textAlign: buttonsInCenter ? 'center' : 'right'\n },\n className: components_Modal_Modal_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].footer\n }, showCancel ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n value: cancelText,\n onClick: onCancel,\n disabled: !canCancel\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n primary: true,\n value: confirmText,\n color: buttonColors[type],\n disabled: !!disabled,\n onClick: onConfirm,\n progress: progress\n }), showContinue === true ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n primary: true,\n value: continueText,\n color: buttonColors[type],\n disabled: !!disabled,\n onClick: onContinue,\n progress: progress\n }) : null);\n var wrappedChildren = textModal ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n className: components_Modal_Modal_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].textModal\n }, children) : children;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n fadeIn: true,\n fixed: true,\n position: origin,\n modal: true,\n color: \"rgba(17,13,17,0.8)\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n className: [components_Modal_Modal_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].modal, components_Modal_Modal_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"][type]].join(' '),\n style: {\n width: width\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n className: components_Modal_Modal_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].header\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n style: {\n top: react__WEBPACK_IMPORTED_MODULE_6__.Children.count(subtitle) === 0 ? '37px' : '25px'\n },\n className: components_Modal_Modal_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].title\n }, title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n className: components_Modal_Modal_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].subtitle\n }, subtitle), icon ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n className: components_Modal_Modal_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].icon\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n width: iconSize,\n height: iconSize,\n name: icon,\n fill: \"#ffffff\"\n })) : null), wrappedChildren, footer));\n};\n\nModal.Types = {\n DANGER: 'danger',\n INFO: 'info',\n VALID: 'valid'\n};\nModal.propTypes = {\n type: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].string.describe('Used to change the color of the modal and buttons. Use Modal.Types.DANGER, Modal.Types.INFO, or Modal.Types.VALID.'),\n icon: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].string.describe('The Icon to display in the top right corner.'),\n iconSize: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].number.describe('The size of the Icon in the top right corner.'),\n title: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].string.isRequired.describe('The title of the modal.'),\n subtitle: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].node.describe('The subtitle of the modal. Usually a string or .'),\n cancelText: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].string.describe('String for the cancel button. Defaults to \"Cancel\".'),\n onCancel: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].func.describe('Called when the cancel button is clicked.'),\n canCancel: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].bool.describe('Determines whether this modal can be cancelled. Defaults to true. Useful to prevent the user from attempting to cancel a modal when a related request is in-flight.'),\n showCancel: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].bool.describe('Determines whether to show the cancel button. Defaults to true.'),\n confirmText: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].string.describe('String for the confirm button. Defaults to \"Okay\".'),\n onConfirm: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].func.describe('Called when the confirm button is clicked.'),\n disabled: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].bool.describe('If true, the confirm button will be disabled.'),\n progress: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].bool.describe('Passed to the confirm button.'),\n customFooter: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].node.describe('used to fill any custom footer use case.'),\n textModal: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].bool.describe('Used for modals that contain only text to pad the text.'),\n width: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].number.describe('custom width of modal.'),\n buttonsInCenter: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].bool.describe('If true, the buttons will appear in the center of the modal, instead of to the right. By default, the buttons appear on the right unless the modal contains no children, in which case they appear in the center.')\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Modal);\n\n//# sourceURL=webpack:///./components/Modal/Modal.react.js?");
+
+/***/ }),
+
+/***/ "./components/MoneyInput/MoneyInput.example.js":
+/*!*****************************************************!*\
+ !*** ./components/MoneyInput/MoneyInput.example.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Fieldset/Fieldset.react */ \"./components/Fieldset/Fieldset.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var components_MoneyInput_MoneyInput_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components/MoneyInput/MoneyInput.react */ \"./components/MoneyInput/MoneyInput.react.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\nvar Wrapper = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Wrapper, _React$Component);\n\n var _super = _createSuper(Wrapper);\n\n function Wrapper() {\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Wrapper);\n\n return _super.apply(this, arguments);\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Wrapper, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", null, this.props.children);\n }\n }]);\n\n return Wrapper;\n}(react__WEBPACK_IMPORTED_MODULE_5__.Component);\n\nvar component = components_MoneyInput_MoneyInput_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(Wrapper, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n text: \"Money input\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_MoneyInput_MoneyInput_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n value: 100.2,\n onChange: function onChange() {}\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n text: \"Disabled\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_MoneyInput_MoneyInput_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n value: 9.99,\n enabled: false,\n onChange: function onChange() {}\n })\n })));\n }\n}];\n\n//# sourceURL=webpack:///./components/MoneyInput/MoneyInput.example.js?");
+
+/***/ }),
+
+/***/ "./components/MoneyInput/MoneyInput.react.js":
+/*!***************************************************!*\
+ !*** ./components/MoneyInput/MoneyInput.react.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_MoneyInput_MoneyInput_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/MoneyInput/MoneyInput.scss */ \"./components/MoneyInput/MoneyInput.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar MoneyInput = function MoneyInput(_ref) {\n var _ref$enabled = _ref.enabled,\n enabled = _ref$enabled === void 0 ? true : _ref$enabled,\n value = _ref.value,\n _ref$onChange = _ref.onChange,\n _onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"input\", {\n type: 'text',\n disabled: !enabled,\n className: components_MoneyInput_MoneyInput_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].moneyInput,\n value: '$' + value.toString(),\n onChange: function onChange(e) {\n _onChange(e.nativeEvent.target.value);\n }\n });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MoneyInput);\nMoneyInput.propTypes = {\n enabled: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].bool.describe('Determines whether the input is enabled.'),\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].func.describe('A function fired when the input is changed. It receives the new value as its only parameter.'),\n value: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].number.isRequired.describe('The current value of the controlled input.')\n};\n\n//# sourceURL=webpack:///./components/MoneyInput/MoneyInput.react.js?");
+
+/***/ }),
+
+/***/ "./components/MultiSelect/MultiSelect.example.js":
+/*!*******************************************************!*\
+ !*** ./components/MultiSelect/MultiSelect.example.js ***!
+ \*******************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var components_MultiSelect_MultiSelect_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/MultiSelect/MultiSelect.react */ \"./components/MultiSelect/MultiSelect.react.js\");\n/* harmony import */ var components_MultiSelect_MultiSelectOption_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/MultiSelect/MultiSelectOption.react */ \"./components/MultiSelect/MultiSelectOption.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar component = components_MultiSelect_MultiSelect_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\n\nvar MultiSelectDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(MultiSelectDemo, _React$Component);\n\n var _super = _createSuper(MultiSelectDemo);\n\n function MultiSelectDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, MultiSelectDemo);\n\n _this = _super.call(this);\n _this.state = {\n value: []\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(MultiSelectDemo, [{\n key: \"handleChange\",\n value: function handleChange(newValue) {\n this.setState({\n value: newValue\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_MultiSelect_MultiSelect_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n endDelineator: this.props.endDelineator,\n value: this.state.value,\n onChange: this.handleChange.bind(this),\n placeHolder: \"Choose some fancy colors...\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_MultiSelect_MultiSelectOption_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: \"red\"\n }, \"Red\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_MultiSelect_MultiSelectOption_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: \"orange\"\n }, \"Orange\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_MultiSelect_MultiSelectOption_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: \"yellow\"\n }, \"Yellow\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_MultiSelect_MultiSelectOption_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: \"green\"\n }, \"Green\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_MultiSelect_MultiSelectOption_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: \"blue\"\n }, \"Blue\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_MultiSelect_MultiSelectOption_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: \"purple\"\n }, \"Purple\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_MultiSelect_MultiSelectOption_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n value: \"rainbow\"\n }, \"Rainbow\"));\n }\n }]);\n\n return MultiSelectDemo;\n}(react__WEBPACK_IMPORTED_MODULE_9__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n style: {\n width: 500,\n margin: '0 auto'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n text: \"What are your favorite colors?\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(MultiSelectDemo, null)\n }));\n }\n}, {\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n style: {\n width: 500,\n margin: '0 auto'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n text: \"What are your favorite colors with new end delineator?\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(MultiSelectDemo, {\n endDelineator: \"or\"\n })\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/MultiSelect/MultiSelect.example.js?");
+
+/***/ }),
+
+/***/ "./components/MultiSelect/MultiSelect.react.js":
+/*!*****************************************************!*\
+ !*** ./components/MultiSelect/MultiSelect.react.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ MultiSelect)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"../node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_hasAncestor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/hasAncestor */ \"./lib/hasAncestor.js\");\n/* harmony import */ var components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Popover/Popover.react */ \"./components/Popover/Popover.react.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var lib_stringList__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! lib/stringList */ \"./lib/stringList.js\");\n/* harmony import */ var components_MultiSelect_MultiSelect_scss__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! components/MultiSelect/MultiSelect.scss */ \"./components/MultiSelect/MultiSelect.scss\");\n/* harmony import */ var components_Chip_Chip_react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! components/Chip/Chip.react */ \"./components/Chip/Chip.react.js\");\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\n\n\nvar MultiSelect = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(MultiSelect, _React$Component);\n\n var _super = _createSuper(MultiSelect);\n\n function MultiSelect() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, MultiSelect);\n\n _this = _super.call(this);\n _this.state = {\n open: false,\n position: null\n };\n _this.popoverRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createRef(null);\n\n _this.handleScroll = function () {\n var newPosition = _this.props.fixed ? lib_Position__WEBPACK_IMPORTED_MODULE_8__[\"default\"].inWindow(_this.node) : lib_Position__WEBPACK_IMPORTED_MODULE_8__[\"default\"].inDocument(_this.node);\n newPosition.y += _this.node.offsetHeight;\n\n if (_this.popoverRef.current) {\n _this.popoverRef.current.setPosition(newPosition);\n }\n };\n\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(MultiSelect, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_11__.findDOMNode(this);\n window.addEventListener('scroll', this.handleScroll);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener('scroll', this.handleScroll);\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps() {\n //Necessary for when the size of the field changes.\n this.setState({}, this.setPosition.bind(this));\n }\n }, {\n key: \"setPosition\",\n value: function setPosition() {\n var _this2 = this;\n\n var newPosition = this.props.fixed ? lib_Position__WEBPACK_IMPORTED_MODULE_8__[\"default\"].inWindow(this.node) : lib_Position__WEBPACK_IMPORTED_MODULE_8__[\"default\"].inDocument(this.node);\n newPosition.y += this.node.offsetHeight; //Move dropdown down below field\n //The forceUpdate call is necessary in case the size of the field changes size during the current render.\n\n this.setState({\n position: newPosition\n }, function () {\n return _this2.forceUpdate();\n });\n }\n }, {\n key: \"toggle\",\n value: function toggle() {\n this.setPosition();\n this.setState({\n open: !this.state.open\n });\n }\n }, {\n key: \"close\",\n value: function close(e) {\n if (!(0,lib_hasAncestor__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(e.target, this.node)) {\n //In the case where the user clicks on the node, toggle() will handle closing the dropdown.\n this.setState({\n open: false\n });\n }\n }\n }, {\n key: \"select\",\n value: function select(value) {\n var newValue = value;\n\n if (this.props.value.indexOf(value) > -1) {\n newValue = this.props.value.filter(function (v) {\n return v !== value;\n });\n } else {\n newValue = this.props.value.concat([value]);\n }\n\n this.props.onChange(newValue);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var popover = null;\n\n if (this.state.open) {\n var width = this.node.clientWidth;\n var _classes = [components_MultiSelect_MultiSelect_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].menu];\n\n if (this.props.dense) {\n _classes.push(components_MultiSelect_MultiSelect_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].dense);\n }\n\n popover = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n ref: this.popoverRef,\n fixed: this.props.fixed,\n position: this.state.position,\n onExternalClick: this.close.bind(this)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(\"div\", {\n style: {\n width: width\n },\n className: _classes.join(' ')\n }, react__WEBPACK_IMPORTED_MODULE_10__.Children.map(this.props.children, function (c) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.cloneElement(c, _objectSpread(_objectSpread({}, c.props), {}, {\n checked: _this3.props.value.indexOf(c.props.value) > -1,\n onClick: c.props.disabled ? null : _this3.select.bind(_this3, c.props.value)\n }));\n })));\n }\n\n var selection = [];\n var classes = [components_MultiSelect_MultiSelect_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].current];\n react__WEBPACK_IMPORTED_MODULE_10__.Children.forEach(this.props.children, function (c) {\n if (_this3.props.value.indexOf(c.props.value) > -1) {\n selection.push(c.props.children);\n }\n });\n var dropdownStyle = {};\n\n if (this.props.width) {\n dropdownStyle = {\n width: this.props.width,\n \"float\": 'left'\n };\n }\n\n var dropDownClasses = [components_MultiSelect_MultiSelect_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].dropdown];\n\n if (this.props.dense) {\n dropDownClasses.push(components_MultiSelect_MultiSelect_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].dense);\n }\n\n var content = null;\n\n if (selection.length === 0 && this.props.placeHolder) {\n content = this.props.placeHolder;\n classes.push(components_MultiSelect_MultiSelect_scss__WEBPACK_IMPORTED_MODULE_13__[\"default\"].placeholder);\n } else {\n content = this.props.chips ? selection.map(function (child, index) {\n var item;\n\n if (Array.isArray(_this3.props.value)) {\n item = _this3.props.value[index];\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(components_Chip_Chip_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n value: item,\n key: 'chip-' + index,\n onClose: function onClose(removed) {\n if (removed) _this3.select(removed);\n }\n }, child);\n }) : (0,lib_stringList__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(selection, this.props.endDelineator);\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(\"div\", {\n style: dropdownStyle,\n className: dropDownClasses.join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_10__.createElement(\"div\", {\n className: classes.join(' '),\n onClick: this.toggle.bind(this)\n }, content), popover);\n }\n }]);\n\n return MultiSelect;\n}(react__WEBPACK_IMPORTED_MODULE_10__.Component);\n\n\nMultiSelect.propTypes = {\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].func.isRequired.describe('A function called when the selection is changed. It receives the new array of selected values as the only parameter.'),\n value: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].arrayOf(lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].string).isRequired.describe('The currently-selected value of this controlled input. It should be an array of string values.'),\n children: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].node.isRequired.describe('The children of MultiSelect should only be components.'),\n placeHolder: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].string.describe('Option placeholder text to be displayed when no options are chosen.'),\n endDelineator: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].string.describe('End delineator to separate last selected option.'),\n dense: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].bool.describe('Mini variant - less height'),\n chips: lib_PropTypes__WEBPACK_IMPORTED_MODULE_9__[\"default\"].bool.describe('Display chip for every selected item')\n};\n\n//# sourceURL=webpack:///./components/MultiSelect/MultiSelect.react.js?");
+
+/***/ }),
+
+/***/ "./components/MultiSelect/MultiSelectOption.react.js":
+/*!***********************************************************!*\
+ !*** ./components/MultiSelect/MultiSelectOption.react.js ***!
+ \***********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/Icon/Icon.react */ \"./components/Icon/Icon.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_MultiSelect_MultiSelect_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/MultiSelect/MultiSelect.scss */ \"./components/MultiSelect/MultiSelect.scss\");\n\n\nvar _excluded = [\"checked\", \"children\", \"dense\", \"disabled\"];\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar MultiSelectOption = function MultiSelectOption(_ref) {\n var checked = _ref.checked,\n children = _ref.children,\n dense = _ref.dense,\n disabled = _ref.disabled,\n other = (0,_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_ref, _excluded);\n\n var classes = [components_MultiSelect_MultiSelect_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].option, disabled ? components_MultiSelect_MultiSelect_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].disabled : undefined];\n var icon = checked ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n className: components_MultiSelect_MultiSelect_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].checked\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n width: dense ? 15 : 20,\n height: dense ? 15 : 20,\n name: \"check\",\n fill: \"#ffffff\"\n })) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n className: components_MultiSelect_MultiSelect_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].unchecked\n });\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, other, {\n className: classes.join(' ')\n }), children, disabled ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"noscript\", null) : icon);\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MultiSelectOption);\n\n//# sourceURL=webpack:///./components/MultiSelect/MultiSelectOption.react.js?");
+
+/***/ }),
+
+/***/ "./components/PermissionsDialog/PermissionsDialog.example.js":
+/*!*******************************************************************!*\
+ !*** ./components/PermissionsDialog/PermissionsDialog.example.js ***!
+ \*******************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_PermissionsDialog_PermissionsDialog_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/PermissionsDialog/PermissionsDialog.react */ \"./components/PermissionsDialog/PermissionsDialog.react.js\");\n/* harmony import */ var components_Button_Button_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Button/Button.react */ \"./components/Button/Button.react.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n// import Parse from 'parse';\n\n\n\nvar component = components_PermissionsDialog_PermissionsDialog_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n\nfunction validateSimple(text) {\n if (text.startsWith('u')) {\n return Promise.resolve({\n entry: {\n id: text,\n get: function get() {\n return 'demouser';\n }\n },\n type: 'user'\n });\n }\n\n if (text.startsWith('role:')) {\n var roleName = text.substring(5);\n return Promise.resolve({\n entry: {\n id: \"1d0f\".concat(roleName),\n getName: function getName() {\n return roleName;\n }\n },\n type: 'role'\n });\n }\n\n if (text.startsWith('ptr')) {\n return Promise.resolve({\n entry: text,\n type: 'pointer'\n });\n }\n\n return Promise.reject();\n}\n\nfunction validateAdvanced(text) {\n if (text === '*') {\n return Promise.resolve({\n entry: '*',\n type: 'public'\n });\n }\n\n if (text.startsWith('u')) {\n return Promise.resolve({\n entry: {\n id: text,\n get: function get() {\n return 'demouser';\n }\n },\n type: 'user'\n });\n }\n\n if (text.startsWith('role:')) {\n var roleName = text.substring(5);\n return Promise.resolve({\n entry: {\n id: \"1d0f\".concat(roleName),\n getName: function getName() {\n return roleName;\n }\n },\n type: 'role'\n });\n }\n\n if (text.startsWith('ptr')) {\n return Promise.resolve({\n entry: text,\n type: 'pointer'\n });\n }\n\n return Promise.reject();\n}\n\nvar columns = {\n 'email': {\n type: 'String'\n },\n 'password': {\n type: 'String'\n },\n 'ptr_owner': {\n type: 'Pointer',\n targetClass: '_User'\n },\n 'nickname': {\n type: 'String'\n },\n 'ptr_followers': {\n type: 'Array'\n },\n 'ptr_friends': {\n type: 'Array'\n }\n};\nvar userPointers = ['ptr_followers', 'ptr_owner', 'ptr_friends'];\n\nvar DialogDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DialogDemo, _React$Component);\n\n var _super = _createSuper(DialogDemo);\n\n function DialogDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, DialogDemo);\n\n _this = _super.call(this);\n _this.state = {\n showSimple: false,\n showAdvanced: false\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(DialogDemo, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n value: \"Show simple dialog\",\n onClick: function onClick() {\n _this2.setState({\n showSimple: true\n });\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n value: \"Show advanced dialog\",\n onClick: function onClick() {\n _this2.setState({\n showAdvanced: true\n });\n }\n }), this.state.showSimple ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_PermissionsDialog_PermissionsDialog_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n title: \"Edit Access Control List (ACL)\",\n advanced: false,\n confirmText: \"Save ACL\",\n details: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"a\", {\n href: \"#\"\n }, \"Learn more about ACLs and app security\"),\n permissions: {\n read: {\n '*': true,\n 'role:admin': true,\n 'role:user': true,\n 'us3r1d': true\n },\n write: {\n '*': true,\n 'role:admin': true\n }\n },\n validateEntry: validateSimple,\n onCancel: function onCancel() {\n _this2.setState({\n showSimple: false\n });\n },\n coolumns: columns,\n onConfirm: function onConfirm(perms) {\n console.log(perms);\n }\n }) : null, this.state.showAdvanced ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_PermissionsDialog_PermissionsDialog_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n title: \"Edit Class Level Permissions\",\n advanced: true,\n confirmText: \"Save CLP\",\n details: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"a\", {\n href: \"#\"\n }, \"Learn more about CLPs and app security\"),\n permissions: {\n get: {\n '*': false,\n 'us3r1d': true,\n 'role:admin': true\n },\n find: {\n '*': true,\n 'us3r1d': true,\n 'role:admin': true\n },\n create: {\n '*': true\n },\n update: {\n '*': true,\n pointerFields: ['user']\n },\n \"delete\": {\n '*': true\n },\n addField: {\n '*': true,\n 'requiresAuthentication': true\n },\n readUserFields: ['ptr_owner', 'ptr_followers', 'ptr_friends'],\n writeUserFields: ['ptr_owner'],\n protectedFields: {\n '*': ['password', 'email'],\n 'userField:ptr_owner': []\n }\n },\n columns: columns,\n validateEntry: validateAdvanced,\n userPointers: userPointers,\n onCancel: function onCancel() {\n _this2.setState({\n showAdvanced: false\n });\n },\n onConfirm: function onConfirm(perms) {\n console.log(perms);\n }\n }) : null);\n }\n }]);\n\n return DialogDemo;\n}(react__WEBPACK_IMPORTED_MODULE_5__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(DialogDemo, null);\n }\n}];\n\n//# sourceURL=webpack:///./components/PermissionsDialog/PermissionsDialog.example.js?");
+
+/***/ }),
+
+/***/ "./components/PermissionsDialog/PermissionsDialog.react.js":
+/*!*****************************************************************!*\
+ !*** ./components/PermissionsDialog/PermissionsDialog.react.js ***!
+ \*****************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PermissionsDialog)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"../node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"../node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"../node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! stylesheets/base.scss */ \"./stylesheets/base.scss\");\n/* harmony import */ var components_Button_Button_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! components/Button/Button.react */ \"./components/Button/Button.react.js\");\n/* harmony import */ var components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! components/Checkbox/Checkbox.react */ \"./components/Checkbox/Checkbox.react.js\");\n/* harmony import */ var components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! components/Icon/Icon.react */ \"./components/Icon/Icon.react.js\");\n/* harmony import */ var components_Pill_Pill_react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! components/Pill/Pill.react */ \"./components/Pill/Pill.react.js\");\n/* harmony import */ var components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! components/Popover/Popover.react */ \"./components/Popover/Popover.react.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_ScrollHint_ScrollHint_react__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! components/ScrollHint/ScrollHint.react */ \"./components/ScrollHint/ScrollHint.react.js\");\n/* harmony import */ var components_SliderWrap_SliderWrap_react__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! components/SliderWrap/SliderWrap.react */ \"./components/SliderWrap/SliderWrap.react.js\");\n/* harmony import */ var components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! components/PermissionsDialog/PermissionsDialog.scss */ \"./components/PermissionsDialog/PermissionsDialog.scss\");\n/* harmony import */ var components_Toggle_Toggle_react__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! components/Toggle/Toggle.react */ \"./components/Toggle/Toggle.react.js\");\n/* harmony import */ var components_Autocomplete_Autocomplete_react__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! components/Autocomplete/Autocomplete.react */ \"./components/Autocomplete/Autocomplete.react.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! immutable */ \"../node_modules/immutable/dist/immutable.es.js\");\n/* harmony import */ var components_TrackVisibility_TrackVisibility_react__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! components/TrackVisibility/TrackVisibility.react */ \"./components/TrackVisibility/TrackVisibility.react.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar origin = new lib_Position__WEBPACK_IMPORTED_MODULE_17__[\"default\"](0, 0);\n\nfunction resolvePermission(perms, rowId, column) {\n var isPublicRow = rowId === '*';\n var isAuthRow = rowId === 'requiresAuthentication'; // exists only on CLP\n\n var isEntryRow = !isAuthRow && !isPublicRow;\n var publicAccess = perms.get(column).get('*');\n var auth = perms.get(column).get('requiresAuthentication');\n var checked = perms.get(column).get(rowId);\n var forceChecked = publicAccess && !auth;\n var indeterminate = isPublicRow && auth; // the logic is:\n // Checkbox is shown for:\n // - Public row: always\n // - Authn row: always\n // - Entry row: when requires auth OR not Public\n\n var editable = isPublicRow || isAuthRow || isEntryRow && !forceChecked;\n return {\n checked: checked,\n editable: editable,\n indeterminate: indeterminate\n };\n}\n\nfunction resolvePointerPermission(perms, pointerPerms, rowId, column) {\n var publicAccess = perms.get(column) && perms.get(column).get('*');\n var auth = perms.get(column).get('requiresAuthentication'); // Pointer permission can be grouped as read/write\n\n var permsGroup;\n\n if (['get', 'find', 'count'].includes(column)) {\n permsGroup = 'read';\n }\n\n if (['create', 'update', 'delete', 'addField'].includes(column)) {\n permsGroup = 'write';\n }\n\n var checked = pointerPerms.get(permsGroup) || pointerPerms.get(column); //pointerPerms.get(permsGroup) && pointerPerms.get(permsGroup).get(rowId);\n\n var forceChecked = publicAccess && !auth; // Checkbox is shown for:\n // - Public row: always\n // - Authn row: always\n // - Entry row: when requires auth OR not Public\n\n var editable = !forceChecked;\n return {\n checked: checked,\n editable: editable\n };\n}\n\nfunction renderAdvancedCheckboxes(rowId, perms, advanced, _onChange) {\n var get = resolvePermission(perms, rowId, 'get');\n var find = resolvePermission(perms, rowId, 'find');\n var count = resolvePermission(perms, rowId, 'count');\n var create = resolvePermission(perms, rowId, 'create');\n var update = resolvePermission(perms, rowId, 'update');\n var del = resolvePermission(perms, rowId, 'delete');\n var addField = resolvePermission(perms, rowId, 'addField');\n\n if (advanced) {\n return [/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"second\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].second].join(' ')\n }, get.editable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Get\",\n checked: get.checked,\n onChange: function onChange(value) {\n return _onChange(rowId, 'get', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"third\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].third].join(' ')\n }, find.editable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Find\",\n checked: find.checked,\n onChange: function onChange(value) {\n return _onChange(rowId, 'find', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"fourth\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].fourth].join(' ')\n }, count.editable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Count\",\n checked: count.checked,\n onChange: function onChange(value) {\n return _onChange(rowId, 'count', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"fifth\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].fifth].join(' ')\n }, create.editable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Create\",\n checked: create.checked,\n onChange: function onChange(value) {\n return _onChange(rowId, 'create', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"sixth\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].sixth].join(' ')\n }, update.editable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Update\",\n checked: update.checked,\n onChange: function onChange(value) {\n return _onChange(rowId, 'update', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"seventh\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].seventh].join(' ')\n }, del.editable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Delete\",\n checked: del.checked,\n onChange: function onChange(value) {\n return _onChange(rowId, 'delete', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"eighth\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].eighth].join(' ')\n }, addField.editable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Add field\",\n checked: addField.checked,\n onChange: function onChange(value) {\n return _onChange(rowId, 'addField', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n }))];\n }\n\n var showReadCheckbox = find.editable || get.editable || count.editable;\n var showWriteCheckbox = create.editable || update.editable || del.editable;\n var readChecked = find.checked && get.checked && count.checked;\n var writeChecked = create.checked && update.checked && del.checked;\n var indeterminateRead = [get, find, count].some(function (s) {\n return s.checked;\n }) && [get, find, count].some(function (s) {\n return !s.checked;\n });\n var indeterminateWrite = [create, update, del].some(function (s) {\n return s.checked;\n }) && [create, update, del].some(function (s) {\n return !s.checked;\n });\n return [/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"second\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].second].join(' ')\n }, showReadCheckbox ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Read\",\n checked: readChecked,\n indeterminate: indeterminateRead,\n onChange: function onChange(value) {\n return _onChange(rowId, ['get', 'find', 'count'], value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"third\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].third].join(' ')\n }, showWriteCheckbox ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Write\",\n checked: writeChecked,\n indeterminate: indeterminateWrite,\n onChange: function onChange(value) {\n return _onChange(rowId, ['create', 'update', 'delete'], value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"fourth\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].fourth].join(' ')\n }, addField.editable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Add field\",\n checked: addField.checked,\n onChange: function onChange(value) {\n return _onChange(rowId, ['addField'], value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n }))];\n}\n\nfunction renderSimpleCheckboxes(rowId, perms, _onChange2) {\n // Public state\n var allowPublicRead = perms.get('read').get('*');\n var allowPublicWrite = perms.get('write').get('*'); // requireAuthentication state\n\n var onlyAuthRead = perms.get('read').get('requiresAuthentication');\n var onlyAuthWrite = perms.get('write').get('requiresAuthentication');\n var isAuthRow = rowId === 'requiresAuthentication';\n var isPublicRow = rowId === '*';\n var showReadCheckbox = isAuthRow || !onlyAuthRead && isPublicRow || !onlyAuthRead && !allowPublicRead;\n var showWriteCheckbox = isAuthRow || !onlyAuthWrite && isPublicRow || !onlyAuthWrite && !allowPublicWrite;\n var readChecked = perms.get('read').get(rowId) || allowPublicRead || isAuthRow;\n var writeChecked = perms.get('write').get(rowId) || allowPublicWrite || isAuthRow;\n return [/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"second\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].second].join(' ')\n }, showReadCheckbox ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Read\",\n checked: readChecked,\n onChange: function onChange(value) {\n return _onChange2(rowId, 'read', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"third\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].third].join(' ')\n }, showWriteCheckbox ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Write\",\n checked: writeChecked,\n onChange: function onChange(value) {\n return _onChange2(rowId, 'write', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n }))];\n}\n\nfunction renderPointerCheckboxes(rowId, perms, pointerPerms, advanced, _onChange3) {\n var get = resolvePointerPermission(perms, pointerPerms, rowId, 'get');\n var find = resolvePointerPermission(perms, pointerPerms, rowId, 'find');\n var count = resolvePointerPermission(perms, pointerPerms, rowId, 'count');\n var create = resolvePointerPermission(perms, pointerPerms, rowId, 'create');\n var update = resolvePointerPermission(perms, pointerPerms, rowId, 'update');\n var del = resolvePointerPermission(perms, pointerPerms, rowId, 'delete');\n var addField = resolvePointerPermission(perms, pointerPerms, rowId, 'addField'); // whether this field is listed under readUserFields[]\n\n var readUserFields = pointerPerms.get('read'); // or writeUserFields[]\n\n var writeUserFields = pointerPerms.get('write');\n var read = {\n checked: readUserFields || get.checked && find.checked && count.checked,\n editable: true\n };\n var write = {\n checked: writeUserFields || create.checked && update.checked && del.checked && addField.checked,\n editable: true\n };\n var cols = [];\n\n if (!advanced) {\n // simple view mode\n // detect whether public access is enabled\n //for read\n var publicReadGrouped = perms.getIn(['read', '*']);\n var publicReadGranular = perms.getIn(['get', '*']) && perms.getIn(['find', '*']) && perms.getIn(['count', '*']); // for write\n\n var publicWriteGrouped = perms.getIn(['write', '*']);\n var publicWriteGranular = perms.getIn(['create', '*']) && perms.getIn(['update', '*']) && perms.getIn(['delete', '*']) && perms.getIn(['addField', '*']); // assume public access is on when it is set either for group or for each operation\n\n var publicRead = publicReadGrouped || publicReadGranular;\n var publicWrite = publicWriteGrouped || publicWriteGranular; // --------------\n // detect whether auth is required\n // for read\n\n var readAuthGroup = perms.getIn(['read', 'requiresAuthentication']);\n var readAuthSeparate = perms.getIn(['get', 'requiresAuthentication']) && perms.getIn(['find', 'requiresAuthentication']) && perms.getIn(['count', 'requiresAuthentication']); // for write\n\n var writeAuthGroup = perms.getIn(['write', 'requiresAuthentication']);\n var writeAuthSeparate = perms.getIn(['create', 'requiresAuthentication']) && perms.getIn(['update', 'requiresAuthentication']) && perms.getIn(['delete', 'requiresAuthentication']) && perms.getIn(['addField', 'requiresAuthentication']); // assume auth is required when it's set either for group or for each operation\n\n var readAuth = readAuthGroup || readAuthSeparate;\n var writeAuth = writeAuthGroup || writeAuthSeparate; // when all ops have public access and none requiure auth, show non-editable checked icon\n\n var readForceChecked = publicRead && !readAuth;\n var writeForceChecked = publicWrite && !writeAuth; // --------------\n // detect whether to show indeterminate checkbox (dash icon)\n // in simple view indeterminate happens when:\n // {read/write}UserFields is not set and\n // not all permissions have same value !(all checked || all unchecked)\n\n var indeterminateRead = !readUserFields && [get, find, count].some(function (s) {\n return s.checked;\n }) && [get, find, count].some(function (s) {\n return !s.checked;\n });\n var indeterminateWrite = !writeUserFields && [create, update, del, addField].some(function (s) {\n return s.checked;\n }) && [create, update, del, addField].some(function (s) {\n return !s.checked;\n });\n cols.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"second\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].second].join(' ')\n }, readForceChecked ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Read\",\n checked: read.checked,\n indeterminate: indeterminateRead,\n onChange: function onChange(value) {\n return _onChange3(rowId, 'read', value);\n }\n })));\n\n if (writeForceChecked) {\n cols.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"third\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].third].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"fourth\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].fourth].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })));\n } else {\n cols.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"third\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].pointerWrite].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].checkboxWrap\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Write and Add field\",\n indeterminate: indeterminateWrite,\n checked: write.checked,\n onChange: function onChange(value) {\n return _onChange3(rowId, 'write', value);\n }\n }))));\n }\n } else {\n // in advanced view mode\n cols.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"second\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].second].join(' ')\n }, get.editable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Get\",\n checked: get.checked,\n onChange: function onChange(value) {\n return _onChange3(rowId, 'get', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })));\n cols.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"third\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].third].join(' ')\n }, find.editable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Find\",\n checked: find.checked,\n onChange: function onChange(value) {\n return _onChange3(rowId, 'find', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })));\n cols.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"fourth\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].fourth].join(' ')\n }, count.editable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Count\",\n checked: count.checked,\n onChange: function onChange(value) {\n return _onChange3(rowId, 'count', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })));\n cols.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"fifth\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].fifth].join(' ')\n }, create.editable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Create\",\n checked: create.checked,\n onChange: function onChange(value) {\n return _onChange3(rowId, 'create', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })));\n cols.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"sixth\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].sixth].join(' ')\n }, update.editable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Update\",\n checked: update.checked,\n onChange: function onChange(value) {\n return _onChange3(rowId, 'update', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })));\n cols.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"seventh\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].seventh].join(' ')\n }, del.editable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Delete\",\n checked: del.checked,\n onChange: function onChange(value) {\n return _onChange3(rowId, 'delete', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })));\n cols.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: \"eighth\",\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].check, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].eighth].join(' ')\n }, addField.editable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Checkbox_Checkbox_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n label: \"Add field\",\n checked: addField.checked,\n onChange: function onChange(value) {\n return _onChange3(rowId, 'addField', value);\n }\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"check\",\n width: 20,\n height: 20\n })));\n }\n\n return cols;\n}\n\nvar intersectionMargin = '10px 0px 0px 20px';\n\nvar PermissionsDialog = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(PermissionsDialog, _React$Component);\n\n var _super = _createSuper(PermissionsDialog);\n\n function PermissionsDialog(props) {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this, PermissionsDialog);\n\n _this = _super.call(this, props);\n var permissions = props.permissions,\n advanced = props.advanced,\n columns = props.columns;\n _this.refEntry = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createRef(null);\n _this.refTable = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createRef(null);\n _this.refScrollIndicator = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createRef(null);\n\n var callback = function callback(_ref) {\n var _ref2 = (0,_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_ref, 1),\n entry = _ref2[0];\n\n var ratio = entry.intersectionRatio;\n var hidden = ratio < 0.92; // hide suggestions to avoid ugly footer overlap\n\n _this.refEntry.current.setHidden(hidden); // also show indicator when input is not visible\n // this.refScrollHint.current.toggleActive(hidden);\n\n };\n\n _this.observer = new IntersectionObserver(callback, {\n root: _this.refTable.current,\n rootMargin: intersectionMargin,\n threshold: [0.92]\n });\n _this.suggestInput = _this.suggestInput.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_this));\n _this.buildLabel = _this.buildLabel.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_this));\n var uniqueKeys = [].concat((0,_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(advanced ? ['requiresAuthentication'] : []), ['*']);\n var perms = {};\n\n var _loop = function _loop(k) {\n if (k !== 'readUserFields' && k !== 'writeUserFields' && k !== 'protectedFields') {\n Object.keys(permissions[k]).forEach(function (key) {\n if (key === 'pointerFields') {\n //pointerFields is not a regular entity; processed later\n return;\n }\n\n if (uniqueKeys.indexOf(key) < 0) {\n uniqueKeys.push(key);\n } // requireAuthentication is only available for CLP\n\n\n if (advanced) {\n if (!permissions[k].requiresAuthentication) {\n permissions[k].requiresAuthentication = false;\n }\n }\n });\n perms[k] = (0,immutable__WEBPACK_IMPORTED_MODULE_25__.Map)(permissions[k]);\n }\n };\n\n for (var k in permissions) {\n _loop(k);\n }\n\n var pointerPermsSubset = {\n read: permissions.readUserFields || [],\n write: permissions.writeUserFields || []\n };\n\n if (advanced) {\n // Fill any missing fields\n perms.get = perms.get || (0,immutable__WEBPACK_IMPORTED_MODULE_25__.Map)();\n perms.find = perms.find || (0,immutable__WEBPACK_IMPORTED_MODULE_25__.Map)();\n perms.count = perms.count || (0,immutable__WEBPACK_IMPORTED_MODULE_25__.Map)();\n perms.create = perms.create || (0,immutable__WEBPACK_IMPORTED_MODULE_25__.Map)();\n perms.update = perms.update || (0,immutable__WEBPACK_IMPORTED_MODULE_25__.Map)();\n perms[\"delete\"] = perms[\"delete\"] || (0,immutable__WEBPACK_IMPORTED_MODULE_25__.Map)();\n perms.addField = perms.addField || (0,immutable__WEBPACK_IMPORTED_MODULE_25__.Map)(); // The double check is necessary because the permissions object seems to be empty when accessing the CLP section\n // if the class was recently created.\n\n pointerPermsSubset.get = permissions.get && permissions.get.pointerFields || [], pointerPermsSubset.find = permissions.find && permissions.find.pointerFields || [], pointerPermsSubset.count = permissions.count && permissions.count.pointerFields || [], pointerPermsSubset.create = permissions.create && permissions.create.pointerFields || [], pointerPermsSubset.update = permissions.update && permissions.update.pointerFields || [], pointerPermsSubset[\"delete\"] = permissions[\"delete\"] && permissions[\"delete\"].pointerFields || [], pointerPermsSubset.addField = permissions.addField && permissions.addField.pointerFields || [];\n }\n\n var pointerPerms = {}; // form an object where each pointer-field name holds operations it has access to\n // e.g. { [field]: { read: true, create: true}, [field2]: {read: true,} ...}\n\n for (var action in pointerPermsSubset) {\n // action holds array of field names\n var _iterator = _createForOfIteratorHelper(pointerPermsSubset[action]),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var field = _step.value;\n pointerPerms[field] = Object.assign((0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, action, true), pointerPerms[field]);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } // preserve protectedFields\n\n\n if (permissions.protectedFields) {\n perms.protectedFields = permissions.protectedFields;\n }\n\n _this.state = {\n transitioning: false,\n showLevels: false,\n level: 'Simple',\n // 'Simple' | 'Advanced'\n entryTypes: undefined,\n perms: (0,immutable__WEBPACK_IMPORTED_MODULE_25__.Map)(perms),\n // Permissions map\n keys: uniqueKeys,\n // Permissions row order\n pointerPerms: (0,immutable__WEBPACK_IMPORTED_MODULE_25__.Map)((0,immutable__WEBPACK_IMPORTED_MODULE_25__.fromJS)(pointerPerms)),\n // Pointer permissions map\n pointers: Object.keys(pointerPerms),\n // Pointer order\n columns: columns,\n newEntry: '',\n entryError: null,\n newKeys: [] // Order for new entries\n\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(PermissionsDialog, [{\n key: \"componentDidMount\",\n value: function () {\n var _componentDidMount = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\"default\"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default().mark(function _callee() {\n var _this2 = this;\n\n var rows, entryTypes, _iterator2, _step2, _step2$value, entry, type, key, value;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_10___default().wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return Promise.all(this.state.keys.filter(function (key) {\n return !['requiresAuthentication', '*'].includes(key);\n }).map(function (key) {\n return _this2.props.validateEntry(key);\n }));\n\n case 2:\n rows = _context.sent;\n entryTypes = new immutable__WEBPACK_IMPORTED_MODULE_25__.Map({});\n _iterator2 = _createForOfIteratorHelper(rows);\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n _step2$value = _step2.value, entry = _step2$value.entry, type = _step2$value.type;\n key = void 0;\n value = {};\n\n if (type === 'user') {\n key = entry.id;\n value[type] = {\n name: entry.get('username'),\n id: entry.id\n };\n }\n\n if (type === 'role') {\n key = 'role:' + entry.getName();\n value[type] = {\n name: entry.getName(),\n id: entry.id\n };\n }\n\n if (type === 'pointer') {\n key = entry;\n value[type] = true;\n }\n\n entryTypes = entryTypes.set(key, value);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n this.setState({\n entryTypes: entryTypes\n });\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function componentDidMount() {\n return _componentDidMount.apply(this, arguments);\n }\n\n return componentDidMount;\n }()\n }, {\n key: \"toggleField\",\n value: function toggleField(rowId, type, value) {\n this.setState(function (state) {\n var perms = state.perms;\n\n if (Array.isArray(type)) {\n type.forEach(function (t) {\n perms = perms.setIn([t, rowId], value);\n });\n } else {\n perms = perms.setIn([type, rowId], value);\n }\n\n return {\n perms: perms\n };\n });\n }\n }, {\n key: \"togglePointer\",\n value: function togglePointer(field, action, value) {\n this.setState(function (state) {\n var pointerPerms = state.pointerPerms; // toggle the value clicked\n\n pointerPerms = pointerPerms.setIn([field, action], value);\n var readGroup = ['get', 'find', 'count'];\n var writeGroup = ['create', 'update', 'delete', 'addField']; // since there're two ways a permission can be granted for field ({read/write}UserFields:['field'] or action: pointerFields:['field'] )\n // both views (advanced/simple) need to be in sync\n // e.g.\n // read is true (checked in simple view); then 'get' changes true->false in advanced view - 'read' should be also unset in simple view\n // when read/write changes - also update all individual actions with new value\n\n if (action === 'read') {\n var _iterator3 = _createForOfIteratorHelper(readGroup),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var op = _step3.value;\n pointerPerms = pointerPerms.setIn([field, op], value);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n } else if (action === 'write') {\n var _iterator4 = _createForOfIteratorHelper(writeGroup),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _op = _step4.value;\n pointerPerms = pointerPerms.setIn([field, _op], value);\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n } else {\n var groupKey = readGroup.includes(action) ? 'read' : 'write';\n var group = groupKey === 'read' ? readGroup : writeGroup; // if granular action changed to true\n\n if (value) {\n // if all become checked, unset them as granulars and enable write group instead\n if (!group.some(function (op) {\n return !pointerPerms.getIn([field, op]);\n })) {\n var _iterator5 = _createForOfIteratorHelper(group),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _op2 = _step5.value;\n pointerPerms = pointerPerms.setIn([field, _op2], false);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n pointerPerms = pointerPerms.setIn([field, groupKey], true);\n }\n } // if granular action changed to false\n else {\n // if group was checked on simple view / {read/write}UserFields contained this field\n if (pointerPerms.getIn([field, groupKey])) {\n // unset value for group\n pointerPerms = pointerPerms.setIn([field, groupKey], false); // and enable all granular actions except the one unchecked\n\n group.filter(function (op) {\n return op !== action;\n }).forEach(function (op) {\n pointerPerms = pointerPerms.setIn([field, op], true);\n });\n }\n }\n }\n\n return {\n pointerPerms: pointerPerms\n };\n });\n }\n }, {\n key: \"checkEntry\",\n value: function checkEntry(input) {\n var _this3 = this;\n\n if (input === '') {\n return;\n }\n\n if (this.props.validateEntry) {\n this.props.validateEntry(input).then(function (_ref3) {\n var type = _ref3.type,\n entry = _ref3.entry;\n\n var next = (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, type, entry);\n\n if (next[\"public\"]) {\n return _this3.setState({\n entryError: 'You already have a row for Public'\n });\n }\n\n var id, name, key, newEntry;\n var nextKeys;\n var nextEntryTypes;\n var nextPerms = _this3.state.perms;\n var nextPointerPerms = _this3.state.pointerPerms;\n\n if (next.user || next.role) {\n id = next.user ? next.user.id : next.role.id;\n name = next.user ? next.user.get('username') : next.role.getName();\n key = next.user ? id : 'role:' + name;\n newEntry = (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, type, {\n name: name,\n id: id\n });\n } else if (next.pointer) {\n key = next.pointer;\n newEntry = (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, type, true);\n } else {\n return _this3.setState({\n entryError: 'Unsupported entry'\n });\n } // check if key already in list\n\n\n if (_this3.state.keys.indexOf(key) > -1 || _this3.state.newKeys.indexOf(key) > -1) {\n return _this3.setState({\n entryError: 'You already have a row for this object'\n });\n } // create new permissions\n\n\n if (next.pointer) {\n if (_this3.props.advanced) {\n nextPointerPerms = nextPointerPerms.setIn([entry, 'get'], true);\n nextPointerPerms = nextPointerPerms.setIn([entry, 'find'], true);\n nextPointerPerms = nextPointerPerms.setIn([entry, 'count'], true);\n nextPointerPerms = nextPointerPerms.setIn([entry, 'create'], true);\n nextPointerPerms = nextPointerPerms.setIn([entry, 'update'], true);\n nextPointerPerms = nextPointerPerms.setIn([entry, 'delete'], true);\n nextPointerPerms = nextPointerPerms.setIn([entry, 'addField'], true);\n } else {\n nextPointerPerms = nextPointerPerms.setIn([entry, 'read'], true);\n nextPointerPerms = nextPointerPerms.setIn([entry, 'write'], true);\n }\n } else {\n if (_this3.props.advanced) {\n nextPerms = nextPerms.setIn(['get', key], true);\n nextPerms = nextPerms.setIn(['find', key], true);\n nextPerms = nextPerms.setIn(['count', key], true);\n nextPerms = nextPerms.setIn(['create', key], true);\n nextPerms = nextPerms.setIn(['update', key], true);\n nextPerms = nextPerms.setIn(['delete', key], true);\n nextPerms = nextPerms.setIn(['addField', key], true);\n } else {\n nextPerms = nextPerms.setIn(['read', key], true);\n nextPerms = nextPerms.setIn(['write', key], true);\n }\n }\n\n nextKeys = _this3.state.newKeys.concat([key]);\n nextEntryTypes = _this3.state.entryTypes.set(key, newEntry);\n return _this3.setState({\n perms: nextPerms,\n pointerPerms: nextPointerPerms,\n newKeys: nextKeys,\n entryTypes: nextEntryTypes,\n newEntry: '',\n entryError: null\n }, function () {\n return _this3.refEntry.current.resetInput();\n });\n }, function () {\n if (_this3.props.advanced && _this3.props.enablePointerPermissions) {\n _this3.setState({\n entryError: 'Role, User or field not found. Enter a valid id, name or column'\n });\n } else {\n _this3.setState({\n entryError: 'Role or User not found. Enter a valid name or id.'\n });\n }\n });\n }\n }\n }, {\n key: \"deleteRow\",\n value: function deleteRow(key, isPointer) {\n if (isPointer) {\n var index = this.state.pointers.indexOf(key);\n\n if (index > -1) {\n var filtered = this.state.pointers.concat([]);\n filtered.splice(index, 1);\n return this.setState({\n pointers: filtered,\n pointerPerms: this.state.pointerPerms[\"delete\"](key)\n });\n }\n\n index = this.state.newKeys.indexOf(key);\n\n if (index > -1) {\n var _filtered = this.state.newKeys.concat([]);\n\n _filtered.splice(index, 1);\n\n return this.setState({\n newKeys: _filtered,\n pointerPerms: this.state.pointerPerms[\"delete\"](key)\n });\n }\n } else {\n var _index = this.state.keys.indexOf(key);\n\n var newPerms = this.state.perms;\n\n if (this.props.advanced) {\n newPerms = newPerms.deleteIn(['get', key]).deleteIn(['find', key]).deleteIn(['count', key]).deleteIn(['create', key]).deleteIn(['update', key]).deleteIn(['delete', key]).deleteIn(['addField', key]);\n } else {\n newPerms = newPerms.deleteIn(['read', key]).deleteIn(['write', key]);\n }\n\n if (_index > -1) {\n var _filtered2 = this.state.keys.concat([]);\n\n _filtered2.splice(_index, 1);\n\n return this.setState({\n keys: _filtered2,\n perms: newPerms\n });\n }\n\n _index = this.state.newKeys.indexOf(key);\n\n if (_index > -1) {\n var _filtered3 = this.state.newKeys.concat([]);\n\n _filtered3.splice(_index, 1);\n\n return this.setState({\n newKeys: _filtered3,\n perms: newPerms\n });\n }\n }\n }\n }, {\n key: \"outputPerms\",\n value: function outputPerms() {\n var _this4 = this;\n\n var output = {};\n var fields = ['read', 'write'];\n\n if (this.props.advanced) {\n fields = ['get', 'find', 'count', 'create', 'update', 'delete', 'addField'];\n }\n\n fields.forEach(function (field) {\n output[field] = {};\n\n _this4.state.perms.get(field).forEach(function (v, k) {\n if (k === 'pointerFields') {\n return;\n }\n\n if (k === 'requiresAuthentication' && !v) {\n // only acceppt requiresAuthentication with true\n return;\n }\n\n if (v) {\n output[field][k] = true;\n }\n });\n });\n var readUserFields = [];\n var writeUserFields = [];\n this.state.pointerPerms.forEach(function (perms, key) {\n if (perms.get('read')) {\n readUserFields.push(key);\n }\n\n if (perms.get('write')) {\n writeUserFields.push(key);\n }\n\n fields.forEach(function (op) {\n if (perms.get(op)) {\n if (!output[op].pointerFields) {\n output[op].pointerFields = [];\n }\n\n output[op].pointerFields.push(key);\n }\n });\n });\n\n if (readUserFields.length) {\n output.readUserFields = readUserFields;\n }\n\n if (writeUserFields.length) {\n output.writeUserFields = writeUserFields;\n } // should also preserve protectedFields!\n\n\n if (this.state.perms.get('protectedFields')) {\n output.protectedFields = this.state.perms.get('protectedFields');\n }\n\n return output;\n }\n }, {\n key: \"renderRow\",\n value: function renderRow(key, columns, types) {\n var pill = function pill(text) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"span\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].pillType\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Pill_Pill_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n value: text\n }));\n }; // types is immutable.js Map\n\n\n var type = types && types.get(key) || {};\n var pointer = this.state.pointerPerms.has(key);\n var label = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"span\", null, key);\n\n if (type.user) {\n label = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"span\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"p\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"span\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"span\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].selectable\n }, type.user.id), pill('User'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"p\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].hint\n }, 'username: ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"span\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].selectable\n }, type.user.name)));\n } else if (type.role) {\n label = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"span\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"p\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"span\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"span\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].prefix\n }, 'role:'), type.role.name)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"p\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].hint\n }, \"id: \", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"span\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].selectable\n }, type.role.id)));\n } else if (pointer) {\n // get class info from schema\n var _columns$key = columns[key],\n _type = _columns$key.type,\n targetClass = _columns$key.targetClass;\n var pillText = _type + (targetClass ? \"<\".concat(targetClass, \">\") : '');\n label = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"span\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"p\", null, key, pill(pillText)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"p\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].hint\n }, \"Only users pointed to by this field\"));\n }\n\n var content = null;\n\n if (!this.state.transitioning) {\n if (pointer) {\n content = renderPointerCheckboxes(key, this.state.perms, this.state.pointerPerms.get(key), this.state.level === 'Advanced', this.togglePointer.bind(this));\n } else if (this.props.advanced) {\n content = renderAdvancedCheckboxes(key, this.state.perms, this.state.level === 'Advanced', this.toggleField.bind(this));\n } else {\n content = renderSimpleCheckboxes(key, this.state.perms, this.toggleField.bind(this));\n }\n }\n\n var trash = null;\n\n if (!this.state.transitioning) {\n trash = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"][\"delete\"]\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"button\", {\n type: \"button\",\n onClick: this.deleteRow.bind(this, key, pointer)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"trash-solid\",\n width: 20,\n height: 20\n })));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n key: key,\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].row\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].label\n }, label), content, trash);\n }\n }, {\n key: \"renderPublicCheckboxes\",\n value: function renderPublicCheckboxes() {\n if (this.state.transitioning) {\n return null;\n }\n\n if (this.props.advanced) {\n return renderAdvancedCheckboxes('*', this.state.perms, this.state.level === 'Advanced', this.toggleField.bind(this));\n }\n\n return renderSimpleCheckboxes('*', this.state.perms, this.toggleField.bind(this));\n }\n }, {\n key: \"renderAuthenticatedCheckboxes\",\n value: function renderAuthenticatedCheckboxes() {\n if (this.state.transitioning) {\n return null;\n }\n\n if (this.props.advanced) {\n return renderAdvancedCheckboxes('requiresAuthentication', this.state.perms, this.state.level === 'Advanced', this.toggleField.bind(this));\n }\n\n return null;\n }\n }, {\n key: \"buildLabel\",\n value: function buildLabel(input) {\n var label;\n\n if (input.startsWith('userField:')) {\n label = 'Name of field with pointer(s) to User';\n } else if (input.startsWith('user:')) {\n label = 'Find User by id or name';\n } else if (input.startsWith('role:')) {\n label = 'Find Role by id or name';\n }\n\n return label;\n }\n }, {\n key: \"suggestInput\",\n value: function suggestInput(input) {\n var _filter;\n\n // role: user: suggested if entry empty or does start with not already start with any of them\n // and not - suggestedPrefix is currently set\n var userPointers = this.props.userPointers || [];\n var keys = this.state.keys;\n var newKeys = this.state.newKeys;\n var allKeys = [].concat((0,_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(keys), (0,_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(newKeys)); // \"userPointer:\" fields that were not added yet\n\n var unusedPointerFields = userPointers.filter(function (ptr) {\n return !allKeys.includes(ptr) && ptr.includes(input);\n }); // roles\n\n var prefixes = (_filter = ['role:'].filter(function (o) {\n return o.startsWith(input) && o.length > input.length;\n }) // filter matching input\n ).concat.apply(_filter, (0,_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(unusedPointerFields)); // pointer fields that are not applied yet;\n\n\n var availableFields = [];\n availableFields.push.apply(availableFields, (0,_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(prefixes));\n return availableFields;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this5 = this;\n\n var classes = [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].dialog, stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].unselectable]; // for 3-column CLP dialog\n\n if (this.props.advanced) {\n classes.push(components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].clp);\n }\n\n if (this.state.level === 'Advanced') {\n classes.push(components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].advanced);\n }\n\n var placeholderText = '';\n\n if (this.props.advanced && this.props.enablePointerPermissions) {\n placeholderText = \"Role, User, or Pointer\\u2026\";\n } else {\n placeholderText = \"Role or User\\u2026\";\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n fadeIn: true,\n fixed: true,\n position: origin,\n modal: true,\n color: \"rgba(17,13,17,0.8)\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: classes.join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].header\n }, this.props.title, this.props.advanced ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].settings,\n onClick: function onClick() {\n return _this5.setState(function (_ref4) {\n var showLevels = _ref4.showLevels;\n return {\n showLevels: !showLevels\n };\n });\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"gear-solid\",\n width: 20,\n height: 20\n })) : null, this.props.advanced && this.state.showLevels ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].arrow\n }) : null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_SliderWrap_SliderWrap_react__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n expanded: this.state.showLevels\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].level\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"span\", null, \"Permissions\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Toggle_Toggle_react__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n darkBg: true,\n value: this.state.level,\n type: components_Toggle_Toggle_react__WEBPACK_IMPORTED_MODULE_22__[\"default\"].Types.TWO_WAY,\n optionLeft: \"Simple\",\n optionRight: \"Advanced\",\n onChange: function onChange(level) {\n if (_this5.state.transitioning || _this5.state.level === level) {\n return;\n }\n\n _this5.setState({\n level: level,\n transitioning: true\n });\n\n setTimeout(function () {\n return _this5.setState({\n transitioning: false\n });\n }, 700);\n }\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].headers\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].readHeader\n }, \"Read\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].writeHeader\n }, \"Write\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].addHeader\n }, \"Add\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].tableWrap,\n onScroll: this.refEntry.current && this.refEntry.current.recalculatePosition\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].table,\n ref: this.refTable\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].overlay, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].second].join(' ')\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].overlay, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].fourth].join(' ')\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].overlay, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].sixth].join(' ')\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].overlay, components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].eighth].join(' ')\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"][\"public\"], components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].row].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].label\n }, \"Public\"), this.renderPublicCheckboxes()), this.props.advanced ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"][\"public\"], components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].row].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].label\n }, \"Authenticated\"), this.renderAuthenticatedCheckboxes()) : null, this.state.keys.slice(this.props.advanced ? 2 : 1).map(function (key) {\n return _this5.renderRow(key, _this5.state.columns, _this5.state.entryTypes);\n }), this.props.advanced ? this.state.pointers.map(function (pointer) {\n return _this5.renderRow(pointer, _this5.state.columns);\n }) : null, this.state.newKeys.map(function (key) {\n return _this5.renderRow(key, _this5.state.columns, _this5.state.entryTypes);\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].row\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_TrackVisibility_TrackVisibility_react__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n observer: this.observer\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Autocomplete_Autocomplete_react__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n ref: this.refEntry,\n inputStyle: {\n width: '290px',\n padding: '0 6px',\n margin: '10px 0px 0px 20px'\n },\n suggestionsStyle: {\n margin: '-6px 0px 0px 21px',\n width: '290px'\n },\n onChange: function onChange(input) {\n _this5.setState({\n newEntry: input,\n entryError: undefined\n });\n },\n onSubmit: this.checkEntry.bind(this),\n placeholder: placeholderText,\n buildSuggestions: function buildSuggestions(input) {\n return _this5.suggestInput(input);\n },\n buildLabel: function buildLabel(input) {\n return _this5.buildLabel(input);\n },\n error: this.state.entryError\n }))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].footer\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_ScrollHint_ScrollHint_react__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n ref: this.refScrollIndicator\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].actions\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n value: \"Cancel\",\n onClick: this.props.onCancel\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n primary: true,\n value: this.props.confirmText,\n onClick: function onClick() {\n return _this5.props.onConfirm(_this5.outputPerms());\n }\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_18__.createElement(\"div\", {\n className: [components_PermissionsDialog_PermissionsDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].details, stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].verticalCenter].join(' ')\n }, this.props.details))));\n }\n }]);\n\n return PermissionsDialog;\n}(react__WEBPACK_IMPORTED_MODULE_18__.Component);\n\n\n\n//# sourceURL=webpack:///./components/PermissionsDialog/PermissionsDialog.react.js?");
+
+/***/ }),
+
+/***/ "./components/Pill/Pill.example.js":
+/*!*****************************************!*\
+ !*** ./components/Pill/Pill.example.js ***!
+ \*****************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Pill_Pill_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Pill/Pill.react */ \"./components/Pill/Pill.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_Pill_Pill_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Pill_Pill_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n value: \"Public Read + Write\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Pill_Pill_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n value: \"Public Read\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Pill_Pill_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n value: \"User: y2kjInQFr6\"\n }));\n }\n}];\n\n//# sourceURL=webpack:///./components/Pill/Pill.example.js?");
+
+/***/ }),
+
+/***/ "./components/Pill/Pill.react.js":
+/*!***************************************!*\
+ !*** ./components/Pill/Pill.react.js ***!
+ \***************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Pill_Pill_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/Pill/Pill.scss */ \"./components/Pill/Pill.scss\");\n/* harmony import */ var components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/Icon/Icon.react */ \"./components/Icon/Icon.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n //TODO: refactor, may want to move onClick outside or need to make onClick able to handle link/button a11y\n\nvar Pill = function Pill(_ref) {\n var value = _ref.value,\n _onClick = _ref.onClick,\n fileDownloadLink = _ref.fileDownloadLink,\n _ref$followClick = _ref.followClick,\n followClick = _ref$followClick === void 0 ? false : _ref$followClick,\n _ref$shrinkablePill = _ref.shrinkablePill,\n shrinkablePill = _ref$shrinkablePill === void 0 ? false : _ref$shrinkablePill;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", {\n className: [components_Pill_Pill_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pill, !followClick && _onClick ? components_Pill_Pill_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].action : void 0].join(\" \"),\n onClick: !followClick && _onClick ? _onClick : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", {\n className: !followClick && fileDownloadLink ? components_Pill_Pill_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].content : shrinkablePill ? components_Pill_Pill_scss__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pillText : ''\n }, value), followClick && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"a\", {\n onClick: function onClick(e) {\n return !e.metaKey && _onClick();\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n name: \"right-outline\",\n width: 20,\n height: 20,\n fill: \"#1669a1\"\n })), !followClick && fileDownloadLink && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"a\", {\n href: fileDownloadLink,\n target: \"_blank\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n name: \"right-outline\",\n width: 20,\n height: 20,\n fill: \"#1669a1\"\n })));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Pill);\n\n//# sourceURL=webpack:///./components/Pill/Pill.react.js?");
+
+/***/ }),
+
+/***/ "./components/PlatformCard/PlatformCard.example.js":
+/*!*********************************************************!*\
+ !*** ./components/PlatformCard/PlatformCard.example.js ***!
+ \*********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_PlatformCard_PlatformCard_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/PlatformCard/PlatformCard.react */ \"./components/PlatformCard/PlatformCard.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_PlatformCard_PlatformCard_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n name: 'iOS PlatformCard',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_PlatformCard_PlatformCard_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n platform: \"apple\",\n name: \"iOS\",\n subtitle: \"Swift\",\n color: \"blue\"\n });\n }\n}, {\n name: 'Xamarin PlatformCard',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_PlatformCard_PlatformCard_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n platform: \"xamarin\",\n name: \"iOS\",\n subtitle: \"Xamarin\",\n color: \"blue\"\n });\n }\n}, {\n name: 'OSX PlatformCard',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_PlatformCard_PlatformCard_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n platform: \"apple\",\n name: \"OSX\",\n color: \"green\"\n });\n }\n}, {\n name: 'RPi PlatformCard',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_PlatformCard_PlatformCard_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n platform: \"rpi\",\n name: \"Linux C (Raspberry Pi)\",\n color: \"red\"\n });\n }\n}, {\n name: 'Arduino PlatformCard',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_PlatformCard_PlatformCard_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n platform: \"arduino\",\n name: \"Arduino Yun\",\n color: \"red\"\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/PlatformCard/PlatformCard.example.js?");
+
+/***/ }),
+
+/***/ "./components/PlatformCard/PlatformCard.react.js":
+/*!*******************************************************!*\
+ !*** ./components/PlatformCard/PlatformCard.react.js ***!
+ \*******************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/Icon/Icon.react */ \"./components/Icon/Icon.react.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_PlatformCard_PlatformCard_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/PlatformCard/PlatformCard.scss */ \"./components/PlatformCard/PlatformCard.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar FILL = {\n blue: '#169cee',\n green: '#00db7c',\n red: '#ff395e'\n};\n\nvar PlatformCard = function PlatformCard(_ref) {\n var platform = _ref.platform,\n name = _ref.name,\n subtitle = _ref.subtitle,\n color = _ref.color;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: components_PlatformCard_PlatformCard_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].card\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: components_PlatformCard_PlatformCard_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].left\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n name: platform,\n fill: FILL[color],\n width: 50,\n height: 50\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: components_PlatformCard_PlatformCard_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].right\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: components_PlatformCard_PlatformCard_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].name\n }, name), subtitle ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", {\n className: components_PlatformCard_PlatformCard_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].subtitle\n }, subtitle) : null));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PlatformCard);\nPlatformCard.propTypes = {\n platform: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].oneOf(['apple', 'android', 'xamarin', 'unity', 'php', 'windows', 'dotnet', 'arduino', 'rpi', 'rtos']).isRequired.describe('The platform name. This will determine the icon.'),\n name: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].string.isRequired.describe('The display name.'),\n subtitle: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].string.describe('Additional string that will be rendered below the display name.'),\n color: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].oneOf(['red', 'green', 'blue']).describe('A valid color, used as the fill of the icon.')\n};\n\n//# sourceURL=webpack:///./components/PlatformCard/PlatformCard.react.js?");
+
+/***/ }),
+
+/***/ "./components/Popover/Popover.react.js":
+/*!*********************************************!*\
+ !*** ./components/Popover/Popover.react.js ***!
+ \*********************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Popover)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_hasAncestor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/hasAncestor */ \"./lib/hasAncestor.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Popover_Popover_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/Popover/Popover.scss */ \"./components/Popover/Popover.scss\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n // We use this component to proxy the current tree's context\n// (React Router history and ParseApp) to the new tree\n\nvar Popover = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Popover, _React$Component);\n\n var _super = _createSuper(Popover);\n\n function Popover(props) {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Popover);\n\n _this = _super.call(this, props);\n _this._checkExternalClick = _this._checkExternalClick.bind((0,_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_this));\n _this._popoverLayer = document.createElement('div');\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Popover, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevState) {\n if (this.props.position !== prevState.position) {\n this._popoverLayer.style.left = this.props.position.x + 'px';\n this._popoverLayer.style.top = this.props.position.y + 'px';\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!this._popoverWrapper) {\n this._popoverWrapper = document.createElement('div');\n document.body.appendChild(this._popoverWrapper);\n }\n\n var wrapperStyle = this.props.fixed ? components_Popover_Popover_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].fixed_wrapper : components_Popover_Popover_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].popover_wrapper;\n this._popoverWrapper.className = wrapperStyle;\n\n this._popoverWrapper.appendChild(this._popoverLayer);\n\n if (this.props.position) {\n this._popoverLayer.style.left = this.props.position.x + 'px';\n this._popoverLayer.style.top = this.props.position.y + 'px';\n }\n\n if (this.props.modal) {\n this._popoverLayer.style.right = 0;\n this._popoverLayer.style.bottom = 0;\n }\n\n if (this.props.color) {\n this._popoverLayer.style.background = this.props.color;\n }\n\n if (this.props.fadeIn) {\n this._popoverLayer.className = components_Popover_Popover_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].transition;\n }\n\n if (this.props.parentContentId) {\n this._popoverLayer.dataset.parentContentId = this.props.parentContentId;\n }\n\n document.body.addEventListener('click', this._checkExternalClick);\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(position) {\n this._popoverLayer.style.left = position.x + 'px';\n this._popoverLayer.style.top = position.y + 'px';\n this.forceUpdate();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.body.removeChild(this._popoverWrapper);\n document.body.removeEventListener('click', this._checkExternalClick);\n }\n }, {\n key: \"_checkExternalClick\",\n value: function _checkExternalClick(e) {\n var contentId = this.props.contentId;\n var popoverWrapper = contentId ? document.getElementById(contentId) : this._popoverLayer;\n var isChromeDropdown = e.target.parentNode.classList.contains('chromeDropdown');\n\n if (!(0,lib_hasAncestor__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(e.target, popoverWrapper, contentId) && this.props.onExternalClick && !isChromeDropdown) {\n this.props.onExternalClick(e);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/(0,react_dom__WEBPACK_IMPORTED_MODULE_9__.createPortal)(this.props.children, this._popoverLayer);\n }\n }]);\n\n return Popover;\n}(react__WEBPACK_IMPORTED_MODULE_7__.Component);\n\n\n\n//# sourceURL=webpack:///./components/Popover/Popover.react.js?");
+
+/***/ }),
+
+/***/ "./components/ProtectedFieldsDialog/ProtectedFieldsDialog.example.js":
+/*!***************************************************************************!*\
+ !*** ./components/ProtectedFieldsDialog/ProtectedFieldsDialog.example.js ***!
+ \***************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_ProtectedFieldsDialog_ProtectedFieldsDialog_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/ProtectedFieldsDialog/ProtectedFieldsDialog.react */ \"./components/ProtectedFieldsDialog/ProtectedFieldsDialog.react.js\");\n/* harmony import */ var components_Button_Button_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Button/Button.react */ \"./components/Button/Button.react.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar component = components_ProtectedFieldsDialog_ProtectedFieldsDialog_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n\nfunction validateDemo(text) {\n if (text === '*') {\n return Promise.resolve({\n entry: '*',\n type: 'public'\n });\n }\n\n if (text === 'authenticated') {\n return Promise.resolve({\n entry: 'authenticated',\n type: 'auth'\n });\n }\n\n if (text.startsWith('u')) {\n return Promise.resolve({\n entry: {\n id: text,\n get: function get() {\n return 'demouser';\n }\n },\n type: 'user'\n });\n }\n\n if (text.startsWith('role:')) {\n var roleName = text.substring(5);\n return Promise.resolve({\n entry: {\n id: \"1d0f\".concat(roleName),\n getName: function getName() {\n return roleName;\n }\n },\n type: 'role'\n });\n } // if (text.startsWith('f')) {\n // return Promise.resolve({ userField: { id: 'i' + ((Math.random() * 10000) | 0)}});\n // }\n\n\n if (text.startsWith('ptr')) {\n return Promise.resolve({\n entry: text,\n type: 'pointer'\n });\n }\n\n return Promise.reject();\n}\n\nvar columns = {\n 'email': {\n type: 'String'\n },\n 'password': {\n type: 'String'\n },\n 'ptr_owner': {\n type: 'Pointer',\n targetClass: '_User'\n },\n 'nickname': {\n type: 'String'\n },\n 'ptr_followers': {\n type: 'Array'\n },\n 'ptr_friends': {\n type: 'Array'\n }\n};\nvar userPointers = ['ptr_followers', 'ptr_owner', 'ptr_friends'];\n\nvar ProtectedFieldsDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ProtectedFieldsDemo, _React$Component);\n\n var _super = _createSuper(ProtectedFieldsDemo);\n\n function ProtectedFieldsDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, ProtectedFieldsDemo);\n\n _this = _super.call(this);\n _this.state = {\n show: false\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(ProtectedFieldsDemo, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n value: \"Show protected fields dialog\",\n onClick: function onClick() {\n _this2.setState({\n show: true\n });\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_ProtectedFieldsDialog_ProtectedFieldsDialog_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n title: \"Edit Protected Fields\",\n advanced: true,\n confirmText: \"Save\",\n details: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"a\", {\n href: \"#\"\n }, \"Learn more about CLPs and app security\"),\n protectedFields: {\n '*': ['password', 'email'],\n 'userField:ptr_owner': [],\n 'us3r1d': ['password']\n },\n userPointers: userPointers,\n columns: columns,\n validateEntry: validateDemo,\n onCancel: function onCancel() {\n _this2.setState({\n show: false\n });\n },\n onClose: function onClose() {},\n onConfirm: function onConfirm(perms) {\n console.log(perms);\n }\n }));\n }\n }]);\n\n return ProtectedFieldsDemo;\n}(react__WEBPACK_IMPORTED_MODULE_5__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(ProtectedFieldsDemo, null);\n }\n}];\n\n//# sourceURL=webpack:///./components/ProtectedFieldsDialog/ProtectedFieldsDialog.example.js?");
+
+/***/ }),
+
+/***/ "./components/ProtectedFieldsDialog/ProtectedFieldsDialog.react.js":
+/*!*************************************************************************!*\
+ !*** ./components/ProtectedFieldsDialog/ProtectedFieldsDialog.react.js ***!
+ \*************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ProtectedFieldsDialog)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"../node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"../node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"../node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var lib_hasAncestor__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lib/hasAncestor */ \"./lib/hasAncestor.js\");\n/* harmony import */ var components_Button_Button_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! components/Button/Button.react */ \"./components/Button/Button.react.js\");\n/* harmony import */ var components_Autocomplete_Autocomplete_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! components/Autocomplete/Autocomplete.react */ \"./components/Autocomplete/Autocomplete.react.js\");\n/* harmony import */ var components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! components/Icon/Icon.react */ \"./components/Icon/Icon.react.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! immutable */ \"../node_modules/immutable/dist/immutable.es.js\");\n/* harmony import */ var components_Pill_Pill_react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! components/Pill/Pill.react */ \"./components/Pill/Pill.react.js\");\n/* harmony import */ var components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! components/Popover/Popover.react */ \"./components/Popover/Popover.react.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_ScrollHint_ScrollHint_react__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! components/ScrollHint/ScrollHint.react */ \"./components/ScrollHint/ScrollHint.react.js\");\n/* harmony import */ var components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! components/ProtectedFieldsDialog/ProtectedFieldsDialog.scss */ \"./components/ProtectedFieldsDialog/ProtectedFieldsDialog.scss\");\n/* harmony import */ var components_MultiSelect_MultiSelect_react__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! components/MultiSelect/MultiSelect.react */ \"./components/MultiSelect/MultiSelect.react.js\");\n/* harmony import */ var components_MultiSelect_MultiSelectOption_react__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! components/MultiSelect/MultiSelectOption.react */ \"./components/MultiSelect/MultiSelectOption.react.js\");\n/* harmony import */ var components_TrackVisibility_TrackVisibility_react__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! components/TrackVisibility/TrackVisibility.react */ \"./components/TrackVisibility/TrackVisibility.react.js\");\n/* harmony import */ var stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! stylesheets/base.scss */ \"./stylesheets/base.scss\");\n\n\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar origin = new lib_Position__WEBPACK_IMPORTED_MODULE_16__[\"default\"](0, 0);\nvar intersectionMargin = '10px 0px 0px 20px';\n\nvar ProtectedFieldsDialog = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(ProtectedFieldsDialog, _React$Component);\n\n var _super = _createSuper(ProtectedFieldsDialog);\n\n function ProtectedFieldsDialog(_ref) {\n var _this;\n\n var protectedFields = _ref.protectedFields,\n columns = _ref.columns;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this, ProtectedFieldsDialog);\n\n _this = _super.call(this);\n var keys = Object.keys(protectedFields || {});\n _this.refEntry = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createRef(null);\n _this.refTable = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createRef(null);\n _this.refScrollHint = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createRef(null); // Intersection observer is used to avoid ugly effe t\n // when suggestion are shown whil input field is scrolled out oof viewpoort\n\n var callback = function callback(_ref2) {\n var _ref3 = (0,_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_ref2, 1),\n entry = _ref3[0];\n\n var ratio = entry.intersectionRatio;\n var hidden = ratio < 0.92; // hide suggestions to avoid ugly footer overlap\n\n _this.refEntry.current.setHidden(hidden); // also show indicator when input is not visible\n\n\n _this.refScrollHint.current.toggleActive(hidden);\n };\n\n _this.observer = new IntersectionObserver(callback, {\n root: _this.refTable.current,\n rootMargin: intersectionMargin,\n threshold: [0.92]\n });\n _this.state = {\n entryTypes: undefined,\n transitioning: false,\n columns: columns,\n protectedFields: new immutable__WEBPACK_IMPORTED_MODULE_24__.Map(protectedFields || {}),\n // protected fields map\n keys: keys,\n newEntry: '',\n entryError: null,\n newKeys: []\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ProtectedFieldsDialog, [{\n key: \"componentDidMount\",\n value: function () {\n var _componentDidMount = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default().mark(function _callee() {\n var _this2 = this;\n\n var rows, entryTypes, _iterator, _step, _step$value, entry, type, key, value;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_9___default().wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return Promise.all(this.state.keys.map(function (key) {\n return _this2.props.validateEntry(key);\n }));\n\n case 2:\n rows = _context.sent;\n entryTypes = new immutable__WEBPACK_IMPORTED_MODULE_24__.Map({});\n _iterator = _createForOfIteratorHelper(rows);\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _step$value = _step.value, entry = _step$value.entry, type = _step$value.type;\n key = void 0;\n value = {};\n\n if (type === 'user') {\n key = entry.id;\n value[type] = {\n name: entry.get('username'),\n id: entry.id\n };\n }\n\n if (type === 'role') {\n key = 'role:' + entry.getName();\n value[type] = {\n name: entry.getName(),\n id: entry.id\n };\n }\n\n if (type === 'public' || type === 'auth' || type === 'pointer') {\n key = entry;\n value[type] = true;\n }\n\n entryTypes = entryTypes.set(key, value);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n this.setState({\n entryTypes: entryTypes\n });\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function componentDidMount() {\n return _componentDidMount.apply(this, arguments);\n }\n\n return componentDidMount;\n }()\n }, {\n key: \"checkEntry\",\n value: function checkEntry(input) {\n var _this3 = this;\n\n if (input === '') {\n return;\n }\n\n if (this.props.validateEntry) {\n this.props.validateEntry(input).then(function (_ref4) {\n var type = _ref4.type,\n entry = _ref4.entry;\n\n var next = (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, type, entry);\n\n var key;\n var name;\n var id;\n var newEntry = {};\n\n if (next.user || next.role) {\n // entry for saving\n key = next.user ? next.user.id : 'role:' + next.role.getName(); // info for displaying\n\n name = next.user ? next.user.get('username') : next.role.getName();\n id = next.user ? next.user.id : next.role.id;\n newEntry[type] = {\n name: name,\n id: id\n };\n } else {\n key = next[\"public\"] || next.auth || next.pointer;\n newEntry[type] = true;\n }\n\n if (key) {\n if (_this3.state.keys.includes(key) || _this3.state.newKeys.includes(key)) {\n return _this3.setState({\n entryError: 'You already have a row for this object'\n });\n }\n\n var nextKeys = _this3.state.newKeys.concat([key]);\n\n var nextFields = _this3.state.protectedFields.set(key, []);\n\n var nextEntryTypes = _this3.state.entryTypes.set(key, newEntry);\n\n return _this3.setState({\n entryTypes: nextEntryTypes,\n protectedFields: nextFields,\n newKeys: nextKeys,\n entryError: null\n }, _this3.refEntry.current.resetInput());\n }\n }, function () {\n if (_this3.props.enablePointerPermissions) {\n _this3.setState({\n entryError: 'Role, User or field not found. Enter a valid id, name or column.'\n });\n } else {\n _this3.setState({\n entryError: 'Role or User not found. Enter a valid name or id'\n });\n }\n });\n }\n }\n }, {\n key: \"deleteRow\",\n value: function deleteRow(key) {\n // remove from proectedFields\n var protectedFields = this.state.protectedFields[\"delete\"](key); // also remove from local state\n\n var keys = this.state.keys.filter(function (k) {\n return k !== key;\n });\n var newKeys = this.state.newKeys.filter(function (k) {\n return k !== key;\n });\n return this.setState({\n protectedFields: protectedFields,\n newKeys: newKeys,\n keys: keys\n });\n }\n }, {\n key: \"outputPerms\",\n value: function outputPerms() {\n var output = this.state.protectedFields.toObject();\n return output;\n }\n }, {\n key: \"onChange\",\n value: function onChange(key, newValue) {\n this.setState(function (state) {\n var protectedFields = state.protectedFields;\n protectedFields = protectedFields.set(key, newValue);\n return {\n protectedFields: protectedFields\n };\n });\n }\n /**\n * @param {String} key - entity (Public, User, Role, field-pointer)\n * @param {Object} schema - object with fields of collection: { [fieldName]: { type: String, targetClass?: String }}\n * @param {String[]} selected - fields that are set for entity\n *\n * Renders Dropdown allowing to pick multiple fields for an entity (row).\n */\n\n }, {\n key: \"renderSelector\",\n value: function renderSelector(key, schema, selected) {\n var _this4 = this;\n\n var options = [];\n var values = selected || [];\n var entries = Object.entries(schema);\n\n for (var _i = 0, _entries = entries; _i < _entries.length; _i++) {\n var _entries$_i = (0,_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_entries[_i], 2),\n field = _entries$_i[0],\n _entries$_i$ = _entries$_i[1],\n type = _entries$_i$.type,\n targetClass = _entries$_i$.targetClass;\n\n if (field === 'objectId' || field === 'createdAt' || field === 'updatedAt' || field === 'ACL') {\n continue;\n }\n\n var pillText = type + (targetClass ? \"<\".concat(targetClass, \">\") : '');\n options.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(components_MultiSelect_MultiSelectOption_react__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n key: \"col-\".concat(field),\n value: field,\n dense: true\n }, field, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].pillType\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(components_Pill_Pill_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n value: pillText\n }))));\n }\n\n var noAvailableFields = options.length === 0;\n\n if (noAvailableFields) {\n options.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(components_MultiSelect_MultiSelectOption_react__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n disabled: true,\n dense: true\n }, 'This class has no fields to protect'));\n }\n\n var placeholder = 'All fields allowed.' + (noAvailableFields ? '' : ' Click to protect.');\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"div\", {\n className: (components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].second, components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].multiselect)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(components_MultiSelect_MultiSelect_react__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n fixed: false,\n dense: true,\n chips: true,\n onChange: function onChange(s) {\n _this4.onChange(key, s);\n },\n value: values,\n placeHolder: placeholder\n }, options));\n }\n }, {\n key: \"renderRow\",\n value: function renderRow(key, columns, types) {\n var pill = function pill(text) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].pillType\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(components_Pill_Pill_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n value: text\n }));\n }; // types is immutable.js Map\n\n\n var type = types && types.get(key) || {};\n var label = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", null, key);\n\n if (type.role) {\n label = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"p\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].prefix\n }, 'role:'), type.role.name)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"p\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].hint\n }, \"id: \", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].selectable\n }, type.role.id)));\n }\n\n if (type.user) {\n label = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"p\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].selectable\n }, type.user.id), pill('User'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"p\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].hint\n }, \"username:\", ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].selectable\n }, type.user.name)));\n }\n\n if (type[\"public\"]) {\n label = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"p\", null, ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].prefix\n }, \"*\"), \" (Public Access)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"p\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].hint\n }, \"Applies to all queries\"));\n }\n\n if (type.auth) {\n label = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"p\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].prefix\n }, \"Authenticated\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"p\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].hint\n }, \"Applies to any logged user\"));\n }\n\n if (type.pointer) {\n var _columns$key$substrin = columns[key.substring(10)],\n _type = _columns$key$substrin.type,\n targetClass = _columns$key$substrin.targetClass;\n var pillText = _type + (targetClass ? \"<\".concat(targetClass, \">\") : '');\n label = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"p\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"span\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].prefix\n }, \"userField:\"), key.substring(10), pill(pillText)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"p\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].hint\n }, \"Only users pointed to by this field\"));\n }\n\n var content = null;\n\n if (!this.state.transitioning) {\n content = this.renderSelector(key, this.state.columns, this.state.protectedFields.get(key));\n }\n\n var trash = null;\n\n if (!this.state.transitioning) {\n trash = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"div\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"][\"delete\"]\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"button\", {\n type: \"button\",\n onClick: this.deleteRow.bind(this, key)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n name: \"trash-solid\",\n width: 20,\n height: 20\n })));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"div\", {\n key: key,\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].row\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"div\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].label\n }, label), content, trash);\n }\n }, {\n key: \"close\",\n value: function close(e) {\n if (!(0,lib_hasAncestor__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(e.target, this.node)) {\n //In the case where the user clicks on the node, toggle() will handle closing the dropdown.\n this.setState({\n open: false\n });\n }\n }\n }, {\n key: \"onUserInput\",\n value: function onUserInput(input) {\n this.setState({\n newEntry: input,\n entryError: undefined\n });\n }\n }, {\n key: \"suggestInput\",\n value: function suggestInput(input) {\n var _filter;\n\n var userPointers = this.props.userPointers;\n var keys = this.state.keys;\n var newKeys = this.state.newKeys;\n var allKeys = [].concat((0,_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(keys), (0,_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(newKeys));\n var availablePointerFields = userPointers.map(function (ptr) {\n return \"userField:\".concat(ptr);\n }).filter(function (ptr) {\n return !allKeys.includes(ptr) && ptr.includes(input);\n });\n\n var possiblePrefix = (_filter = ['role:'].filter(function (o) {\n return o.startsWith(input) && o.length > input.length;\n }) // filter matching prefixes\n ).concat.apply(_filter, (0,_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(availablePointerFields)); //\n // pointer fields that are not applied yet;\n\n\n var availableFields = []; // do not suggest unique rows that are already added;\n\n var uniqueOptions = ['*', 'authenticated'].filter(function (key) {\n return !allKeys.includes(key) && (input.length == 0 || key.startsWith(input));\n });\n availableFields.push.apply(availableFields, (0,_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(uniqueOptions));\n availableFields.push.apply(availableFields, (0,_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(possiblePrefix));\n return availableFields;\n }\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var _this5 = this;\n\n this.setState({\n activeSuggestion: 0,\n newEntry: e.currentTarget.innerText,\n showSuggestions: false\n }, function () {\n _this5.props.onChange(_this5.state.newEntry);\n });\n }\n }, {\n key: \"buildLabel\",\n value: function buildLabel(input) {\n var label;\n\n if (input.startsWith('userField:')) {\n label = 'Name of field with pointer(s) to User';\n } else if (input.startsWith('user:')) {\n label = 'Find User by id or name';\n } else if (input.startsWith('role:')) {\n label = 'Find Role by id or name';\n }\n\n return label;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this6 = this;\n\n var classes = [components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].dialog, stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_23__[\"default\"].unselectable];\n var placeholderText = \"Role/User id/name * or authenticated\\u2026\";\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n fadeIn: true,\n fixed: true,\n position: origin,\n modal: true,\n color: \"rgba(17,13,17,0.8)\",\n onExternalClick: this.close.bind(this)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"div\", {\n className: classes.join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"div\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].header\n }, this.props.title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"div\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].tableWrap\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"div\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].table,\n ref: this.refTable\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"div\", {\n className: [components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].overlay, components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].second].join(' ')\n }), this.state.keys.map(function (key) {\n return _this6.renderRow(key, _this6.state.columns, _this6.state.entryTypes);\n }), this.state.newKeys.map(function (key) {\n return _this6.renderRow(key, _this6.state.columns, _this6.state.entryTypes);\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"div\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].row\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(components_TrackVisibility_TrackVisibility_react__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n observer: this.observer\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(components_Autocomplete_Autocomplete_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n ref: this.refEntry,\n inputStyle: {\n width: '400px',\n padding: '0 6px',\n margin: '10px 20px'\n },\n suggestionsStyle: {\n margin: '-6px 0px 0px 20px',\n width: '400px'\n },\n onChange: function onChange(e) {\n return _this6.onUserInput(e);\n },\n onSubmit: this.checkEntry.bind(this),\n placeholder: placeholderText,\n buildSuggestions: function buildSuggestions(input) {\n return _this6.suggestInput(input);\n },\n buildLabel: function buildLabel(input) {\n return _this6.buildLabel(input);\n },\n error: this.state.entryError\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"div\", {\n className: [components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].second, components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].error].join(' ')\n }, this.state.entryError)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"div\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].footer\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(components_ScrollHint_ScrollHint_react__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n ref: this.refScrollIndicator\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"div\", {\n className: components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].actions\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n value: \"Cancel\",\n onClick: this.props.onCancel\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n primary: true,\n value: this.props.confirmText,\n onClick: function onClick() {\n return _this6.props.onConfirm(_this6.outputPerms());\n }\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_17__.createElement(\"div\", {\n className: [components_ProtectedFieldsDialog_ProtectedFieldsDialog_scss__WEBPACK_IMPORTED_MODULE_19__[\"default\"].details, stylesheets_base_scss__WEBPACK_IMPORTED_MODULE_23__[\"default\"].verticalCenter].join(' ')\n }, this.props.details))));\n }\n }]);\n\n return ProtectedFieldsDialog;\n}(react__WEBPACK_IMPORTED_MODULE_17__.Component);\n\n\n\n//# sourceURL=webpack:///./components/ProtectedFieldsDialog/ProtectedFieldsDialog.react.js?");
+
+/***/ }),
+
+/***/ "./components/PushAudienceDialog/InstallationCondition.react.js":
+/*!**********************************************************************!*\
+ !*** ./components/PushAudienceDialog/InstallationCondition.react.js ***!
+ \**********************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ InstallationCondition)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_Filters__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lib/Filters */ \"./lib/Filters.js\");\n/* harmony import */ var components_DateTimeEntry_DateTimeEntry_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/DateTimeEntry/DateTimeEntry.react */ \"./components/DateTimeEntry/DateTimeEntry.react.js\");\n/* harmony import */ var components_Dropdown_Dropdown_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Dropdown/Dropdown.react */ \"./components/Dropdown/Dropdown.react.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! immutable */ \"../node_modules/immutable/dist/immutable.es.js\");\n/* harmony import */ var components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! components/Dropdown/Option.react */ \"./components/Dropdown/Option.react.js\");\n/* harmony import */ var parse__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! parse */ \"../node_modules/parse/index.js\");\n/* harmony import */ var parse__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(parse__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var components_PushAudienceDialog_InstallationCondition_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! components/PushAudienceDialog/InstallationCondition.scss */ \"./components/PushAudienceDialog/InstallationCondition.scss\");\n/* harmony import */ var components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! components/TextInput/TextInput.react */ \"./components/TextInput/TextInput.react.js\");\n/* harmony import */ var lib_validateNumeric__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! lib/validateNumeric */ \"./lib/validateNumeric.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar constraintLookup = {};\n\nfor (var c in lib_Filters__WEBPACK_IMPORTED_MODULE_5__.Constraints) {\n constraintLookup[lib_Filters__WEBPACK_IMPORTED_MODULE_5__.Constraints[c].name] = c;\n}\n\nvar setFocus = function setFocus(input) {\n if (input !== null) {\n react_dom__WEBPACK_IMPORTED_MODULE_13__.findDOMNode(input).focus();\n }\n};\n\nfunction compareValue(info, value, onChangeCompareTo) {\n var type = info.type;\n\n switch (type) {\n case null:\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_PushAudienceDialog_InstallationCondition_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].empty\n }, \"-\");\n\n case 'String':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n placeholder: \"value\",\n value: value,\n onChange: function onChange(_value) {\n return onChangeCompareTo(_value);\n },\n ref: setFocus\n });\n\n case 'Pointer':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n placeholder: \"value\",\n value: value.objectId || '',\n onChange: function onChange(_value) {\n var obj = new (parse__WEBPACK_IMPORTED_MODULE_11___default().Object)(info.targetClass);\n obj.id = _value;\n onChangeCompareTo(parse__WEBPACK_IMPORTED_MODULE_11___default()._encode(obj.toPointer()));\n },\n ref: setFocus\n });\n\n case 'Boolean':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Dropdown_Dropdown_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n value: value ? 'True' : 'False',\n onChange: function onChange(_value) {\n return onChangeCompareTo(_value === 'True');\n }\n }, ['True', 'False'].map(function (value) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n value: value,\n key: value\n }, value);\n }));\n\n case 'Number':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n placeholder: \"value\",\n className: components_PushAudienceDialog_InstallationCondition_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].conditionValue,\n value: value,\n onChange: function onChange(_value) {\n return onChangeCompareTo((0,lib_validateNumeric__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(_value) ? Number(_value) : Number(value));\n },\n ref: setFocus\n });\n\n case 'Date':\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_DateTimeEntry_DateTimeEntry_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n fixed: true,\n className: components_PushAudienceDialog_InstallationCondition_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].date,\n value: parse__WEBPACK_IMPORTED_MODULE_11___default()._decode('date', value),\n onChange: function onChange(_value) {\n return onChangeCompareTo(parse__WEBPACK_IMPORTED_MODULE_11___default()._encode(_value));\n },\n ref: setFocus\n });\n }\n}\n\nvar InstallationCondition = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(InstallationCondition, _React$Component);\n\n var _super = _createSuper(InstallationCondition);\n\n function InstallationCondition() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, InstallationCondition);\n\n _this = _super.call(this);\n _this.state = {\n open: false,\n filters: new immutable__WEBPACK_IMPORTED_MODULE_17__.List()\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(InstallationCondition, [{\n key: \"handleChange\",\n value: function handleChange(type, selection) {\n var stateChange = {};\n stateChange[type] = selection;\n this.setState(stateChange);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var input = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_PushAudienceDialog_InstallationCondition_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].conditionInput\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Dropdown_Dropdown_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n fixed: true,\n hideArrow: true,\n value: this.props.currentField,\n onChange: this.props.onChangeField,\n placeHolder: \"field\",\n className: components_PushAudienceDialog_InstallationCondition_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].conditionDropdown\n }, this.props.fields.map(function (object, i) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n value: object,\n key: \"fieldOpt\".concat(i)\n }, object);\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: components_PushAudienceDialog_InstallationCondition_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].conditionInput\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Dropdown_Dropdown_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n fixed: true,\n hideArrow: true,\n value: lib_Filters__WEBPACK_IMPORTED_MODULE_5__.Constraints[this.props.currentConstraint].name,\n onChange: function onChange(c) {\n return _this2.props.onChangeConstraint(constraintLookup[c]);\n },\n placeHolder: \"is\",\n className: components_PushAudienceDialog_InstallationCondition_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].conditionDropdown\n }, this.props.constraints.map(function (object, i) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Dropdown_Option_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n value: lib_Filters__WEBPACK_IMPORTED_MODULE_5__.Constraints[object].name,\n key: \"constraintOpt\".concat(i)\n }, lib_Filters__WEBPACK_IMPORTED_MODULE_5__.Constraints[object].name);\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"div\", {\n className: [components_PushAudienceDialog_InstallationCondition_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].conditionInput, components_PushAudienceDialog_InstallationCondition_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].valueInput].join(' ')\n }, compareValue(this.props.compareInfo, this.props.compareTo, this.props.onChangeCompareTo)));\n var labelDescription = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(\"button\", {\n type: \"button\",\n className: components_PushAudienceDialog_InstallationCondition_scss__WEBPACK_IMPORTED_MODULE_14__[\"default\"].description,\n onClick: this.props.onDeleteRow\n }, \"Remove\");\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n labelWidth: 30,\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n text: \"Installation Condition\",\n description: labelDescription\n }),\n input: input\n });\n }\n }]);\n\n return InstallationCondition;\n}(react__WEBPACK_IMPORTED_MODULE_12__.Component);\n\n\n\n//# sourceURL=webpack:///./components/PushAudienceDialog/InstallationCondition.react.js?");
+
+/***/ }),
+
+/***/ "./components/PushAudienceDialog/PushAudienceDialog.example.js":
+/*!*********************************************************************!*\
+ !*** ./components/PushAudienceDialog/PushAudienceDialog.example.js ***!
+ \*********************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_Button_Button_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/Button/Button.react */ \"./components/Button/Button.react.js\");\n/* harmony import */ var components_PushAudienceDialog_PushAudienceDialog_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/PushAudienceDialog/PushAudienceDialog.react */ \"./components/PushAudienceDialog/PushAudienceDialog.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar component = components_PushAudienceDialog_PushAudienceDialog_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n\nvar PushAudienceDialogDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(PushAudienceDialogDemo, _React$Component);\n\n var _super = _createSuper(PushAudienceDialogDemo);\n\n function PushAudienceDialogDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, PushAudienceDialogDemo);\n\n _this = _super.call(this);\n _this.state = {\n showModal: false\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(PushAudienceDialogDemo, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n value: \"Create a new audiences\",\n primary: true,\n onClick: function onClick() {\n _this2.setState({\n showModal: true\n });\n }\n }), this.state.showModal ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_PushAudienceDialog_PushAudienceDialog_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n audienceSize: 999999,\n secondaryAction: function secondaryAction() {\n _this2.setState({\n showModal: false\n });\n }\n }) : null);\n }\n }]);\n\n return PushAudienceDialogDemo;\n}(react__WEBPACK_IMPORTED_MODULE_7__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(PushAudienceDialogDemo, null);\n }\n}];\n\n//# sourceURL=webpack:///./components/PushAudienceDialog/PushAudienceDialog.example.js?");
+
+/***/ }),
+
+/***/ "./components/PushAudienceDialog/PushAudienceDialog.react.js":
+/*!*******************************************************************!*\
+ !*** ./components/PushAudienceDialog/PushAudienceDialog.react.js ***!
+ \*******************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PushAudienceDialog)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"../node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var lib_Filters__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/Filters */ \"./lib/Filters.js\");\n/* harmony import */ var lib_PushUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lib/PushUtils */ \"./lib/PushUtils.js\");\n/* harmony import */ var dashboard_Push_PushConstants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! dashboard/Push/PushConstants */ \"./dashboard/Push/PushConstants.js\");\n/* harmony import */ var components_Button_Button_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components/Button/Button.react */ \"./components/Button/Button.react.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Filter_Filter_react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! components/Filter/Filter.react */ \"./components/Filter/Filter.react.js\");\n/* harmony import */ var components_FormNote_FormNote_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! components/FormNote/FormNote.react */ \"./components/FormNote/FormNote.react.js\");\n/* harmony import */ var components_PushAudienceDialog_InstallationCondition_react__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! components/PushAudienceDialog/InstallationCondition.react */ \"./components/PushAudienceDialog/InstallationCondition.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var components_Modal_Modal_react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! components/Modal/Modal.react */ \"./components/Modal/Modal.react.js\");\n/* harmony import */ var components_MultiSelect_MultiSelect_react__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! components/MultiSelect/MultiSelect.react */ \"./components/MultiSelect/MultiSelect.react.js\");\n/* harmony import */ var components_MultiSelect_MultiSelectOption_react__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! components/MultiSelect/MultiSelectOption.react */ \"./components/MultiSelect/MultiSelectOption.react.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var lib_queryFromFilters__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! lib/queryFromFilters */ \"./lib/queryFromFilters.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_PushAudienceDialog_PushAudienceDialog_scss__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! components/PushAudienceDialog/PushAudienceDialog.scss */ \"./components/PushAudienceDialog/PushAudienceDialog.scss\");\n/* harmony import */ var components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! components/TextInput/TextInput.react */ \"./components/TextInput/TextInput.react.js\");\n/* harmony import */ var components_Toggle_Toggle_react__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! components/Toggle/Toggle.react */ \"./components/Toggle/Toggle.react.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! immutable */ \"../node_modules/immutable/dist/immutable.es.js\");\n/* harmony import */ var context_currentApp__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! context/currentApp */ \"./context/currentApp.js\");\n\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar PARSE_SERVER_SUPPORTS_SAVED_AUDIENCES = true;\nvar AUDIENCE_SIZE_FETCHING_ENABLED = true;\n\nvar filterFormatter = function filterFormatter(filters, schema) {\n return filters.map(function (filter) {\n var type = schema[filter.get('field')];\n\n if (Object.prototype.hasOwnProperty.call(lib_Filters__WEBPACK_IMPORTED_MODULE_6__.Constraints[filter.get('constraint')], 'field')) {\n type = lib_Filters__WEBPACK_IMPORTED_MODULE_6__.Constraints[filter.get('constraint')].field;\n } // Format any stringified fields\n\n\n if (type === 'Number') {\n return filter.set('compareTo', parseFloat(filter.get('compareTo')));\n }\n\n return filter;\n });\n};\n\nvar PushAudienceDialog = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(PushAudienceDialog, _React$Component);\n\n var _super = _createSuper(PushAudienceDialog);\n\n function PushAudienceDialog() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, PushAudienceDialog);\n\n _this = _super.call(this);\n _this.xhrHandle = null;\n _this.state = {\n platforms: [],\n filters: new immutable__WEBPACK_IMPORTED_MODULE_25__.List(),\n saveForFuture: false,\n disabled: true,\n audienceName: '',\n audienceSize: undefined,\n approximate: false,\n errorMessage: undefined\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(PushAudienceDialog, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n var stateSettings = {};\n var audienceInfo = this.props.audienceInfo; //this case is only for 'New Segment' to prepopulate existing audience\n\n if (audienceInfo) {\n if (audienceInfo.query) {\n var deviceType = audienceInfo.query.deviceType;\n stateSettings.platforms = deviceType.$in || [];\n }\n\n if (audienceInfo.filters) {\n stateSettings.filters = audienceInfo.filters;\n }\n\n if (audienceInfo.name) {\n stateSettings.audienceName = audienceInfo.name;\n }\n\n this.setState(stateSettings, this.fetchAudienceSize.bind(this));\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.xhrHandle) {\n this.xhrHandle.abort();\n }\n }\n }, {\n key: \"handleChange\",\n value: function handleChange(newValue) {\n this.setState({\n platforms: newValue\n }, this.fetchAudienceSize.bind(this));\n }\n }, {\n key: \"handleAddCondition\",\n value: function handleAddCondition() {\n if (!this.props.schema || !Object.keys(this.props.schema).length) {\n this.setState({\n errorMessage: 'You first need to create the Installation class before adding conditions to an audience.'\n });\n return;\n }\n\n var available = lib_Filters__WEBPACK_IMPORTED_MODULE_6__.availableFilters(this.props.schema, this.state.filters);\n var field = Object.keys(available)[0];\n this.setState(function (_ref) {\n var filters = _ref.filters;\n return {\n filters: filters.push(new immutable__WEBPACK_IMPORTED_MODULE_25__.Map({\n field: field,\n constraint: available[field][0]\n }))\n };\n }, this.fetchAudienceSize.bind(this));\n }\n }, {\n key: \"handleAudienceName\",\n value: function handleAudienceName(name) {\n //TODO: add some client side regex validation for immediate feedback\n this.setState({\n audienceName: name\n });\n }\n }, {\n key: \"handleSaveForFuture\",\n value: function handleSaveForFuture(value) {\n this.setState({\n saveForFuture: value\n });\n }\n }, {\n key: \"fetchAudienceSize\",\n value: function fetchAudienceSize() {\n var _this2 = this;\n\n if (!this.context) {\n //so we don't break the PIG demo\n return;\n }\n\n var query = {};\n var parseQuery = (0,lib_queryFromFilters__WEBPACK_IMPORTED_MODULE_19__[\"default\"])('_Installation', this.state.filters);\n\n if (parseQuery && parseQuery.toJSON()) {\n query = parseQuery.toJSON().where || {};\n }\n\n query.deviceType = {\n $in: this.state.platforms\n };\n\n var _this$context$fetchPu = this.context.fetchPushSubscriberCount(dashboard_Push_PushConstants__WEBPACK_IMPORTED_MODULE_8__.NEW_SEGMENT_ID, query),\n xhr = _this$context$fetchPu.xhr,\n promise = _this$context$fetchPu.promise;\n\n if (this.xhrHandle) {\n //cancel existing xhr - prevent from stacking\n this.xhrHandle.abort();\n }\n\n this.xhrHandle = xhr;\n promise.then(function (_ref2) {\n var approximate = _ref2.approximate,\n count = _ref2.count;\n\n _this2.setState({\n approximate: approximate,\n audienceSize: count\n });\n });\n }\n }, {\n key: \"valid\",\n value: function valid() {\n if (this.state.platforms.length === 0) {\n //check that at least one platform is chosen\n return false;\n }\n\n if ((this.state.saveForFuture || this.props.disableNewSegment) && this.state.audienceName.length === 0) {\n //check that a name is written\n return false;\n } //TODO check if conditions are valid\n\n\n return true;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var options = [];\n var availableDevices = this.props.availableDevices; // TODO: handle empty case when 0 devices - should display link to device creation.\n // TODO: handle misconfigured device link\n\n for (var index in availableDevices) {\n options.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_MultiSelect_MultiSelectOption_react__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n key: \"device\".concat(index),\n value: availableDevices[index]\n }, dashboard_Push_PushConstants__WEBPACK_IMPORTED_MODULE_8__.DEVICE_MAP[availableDevices[index]]));\n }\n\n var platformSelect = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_MultiSelect_MultiSelect_react__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n endDelineator: \"or\",\n fixed: true,\n value: this.state.platforms,\n onChange: this.handleChange.bind(this),\n placeHolder: \"Choose some platforms...\"\n }, options);\n var nonEmptyConditions = this.state.filters.size !== 0 ? true : false;\n var audienceSize = lib_PushUtils__WEBPACK_IMPORTED_MODULE_7__.formatCountDetails(this.state.audienceSize, this.state.approximate);\n var customFooter = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(\"div\", {\n className: components_PushAudienceDialog_PushAudienceDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].footer\n }, AUDIENCE_SIZE_FETCHING_ENABLED ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(\"div\", {\n className: components_PushAudienceDialog_PushAudienceDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].audienceSize\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(\"div\", {\n className: components_PushAudienceDialog_PushAudienceDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].audienceSizeText\n }, \"AUDIENCE SIZE\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(\"div\", {\n className: components_PushAudienceDialog_PushAudienceDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].audienceSizeDescription\n }, audienceSize)) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n value: \"Cancel\",\n onClick: this.props.secondaryAction\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n primary: true,\n progress: this.props.progress,\n value: this.props.progress ? 'Creating audience...' : 'Use this audience',\n color: \"blue\",\n disabled: !this.valid(),\n onClick: this.props.primaryAction.bind(undefined, {\n platforms: this.state.platforms,\n name: this.state.audienceName,\n filters: this.state.filters,\n formattedFilters: filterFormatter(this.state.filters, this.props.schema),\n saveForFuture: this.state.saveForFuture\n })\n }));\n var futureUseSegment = [];\n\n if (!this.props.disableNewSegment) {\n if (PARSE_SERVER_SUPPORTS_SAVED_AUDIENCES) {\n futureUseSegment.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n key: 'saveForFuture',\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n text: \"Save this audience for future use?\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_Toggle_Toggle_react__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n value: this.state.saveForFuture,\n type: components_Toggle_Toggle_react__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Types.YES_NO,\n onChange: this.handleSaveForFuture.bind(this)\n })\n }));\n }\n\n if (this.state.saveForFuture) {\n futureUseSegment.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n key: 'audienceName',\n labelWidth: 55,\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n text: \"Audience name\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n placeholder: \"Choose a name...\",\n onChange: this.handleAudienceName.bind(this)\n })\n }));\n }\n } else {\n futureUseSegment.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n key: 'audienceName',\n labelWidth: 55,\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n text: \"Audience name\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n placeholder: \"Choose a name...\",\n onChange: this.handleAudienceName.bind(this)\n })\n }));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_Modal_Modal_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n title: this.props.editMode ? 'Edit audience' : 'Create a new audience',\n type: components_Modal_Modal_react__WEBPACK_IMPORTED_MODULE_15__[\"default\"].Types.INFO,\n icon: \"plus-outline\",\n width: 900,\n customFooter: customFooter\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n labelWidth: 55,\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n text: \"Which platforms should be included?\"\n }),\n input: platformSelect\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(\"div\", {\n className: components_PushAudienceDialog_PushAudienceDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].filter\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_Filter_Filter_react__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n schema: this.props.schema,\n filters: this.state.filters,\n onChange: function onChange(filters) {\n _this3.setState({\n filters: filters\n }, _this3.fetchAudienceSize.bind(_this3));\n },\n renderRow: function renderRow(props) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_PushAudienceDialog_InstallationCondition_react__WEBPACK_IMPORTED_MODULE_13__[\"default\"], props);\n }\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(\"div\", {\n className: [components_PushAudienceDialog_PushAudienceDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].addConditions, nonEmptyConditions ? components_PushAudienceDialog_PushAudienceDialog_scss__WEBPACK_IMPORTED_MODULE_21__[\"default\"].nonEmptyConditions : ''].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n value: nonEmptyConditions ? 'Add another condition' : 'Add a condition',\n onClick: this.handleAddCondition.bind(this)\n })), futureUseSegment, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_20__.createElement(components_FormNote_FormNote_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n show: Boolean(this.props.errorMessage && this.props.errorMessage.length > 0 || this.state.errorMessage && this.state.errorMessage.length > 0),\n color: \"red\"\n }, this.props.errorMessage || this.state.errorMessage));\n }\n }]);\n\n return PushAudienceDialog;\n}(react__WEBPACK_IMPORTED_MODULE_20__.Component);\n\n(0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(PushAudienceDialog, \"contextType\", context_currentApp__WEBPACK_IMPORTED_MODULE_24__.CurrentApp);\n\n\nPushAudienceDialog.propTypes = {\n editMode: lib_PropTypes__WEBPACK_IMPORTED_MODULE_18__[\"default\"].bool.describe('Flag if true to be edit mode of dialog.'),\n primaryAction: lib_PropTypes__WEBPACK_IMPORTED_MODULE_18__[\"default\"].func.isRequired.describe('Primary callback triggered when submitting modal.'),\n secondaryAction: lib_PropTypes__WEBPACK_IMPORTED_MODULE_18__[\"default\"].func.isRequired.describe('Secondary callback triggered when submitting modal.'),\n schema: lib_PropTypes__WEBPACK_IMPORTED_MODULE_18__[\"default\"].object.isRequired.describe('A class schema, mapping field names to their Type strings.'),\n audienceInfo: lib_PropTypes__WEBPACK_IMPORTED_MODULE_18__[\"default\"].object.describe('Audience info (name, query, platforms) to prepopulate the dialog.'),\n disableNewSegment: lib_PropTypes__WEBPACK_IMPORTED_MODULE_18__[\"default\"].bool.describe('Flag if true to be disable creation of a temp one time use segment.'),\n availableDevices: lib_PropTypes__WEBPACK_IMPORTED_MODULE_18__[\"default\"].arrayOf(lib_PropTypes__WEBPACK_IMPORTED_MODULE_18__[\"default\"].string).describe('List of all availableDevices devices for push notifications.')\n};\n\n//# sourceURL=webpack:///./components/PushAudienceDialog/PushAudienceDialog.react.js?");
+
+/***/ }),
+
+/***/ "./components/PushAudiencesSelector/PushAudiencesBaseRow.react.js":
+/*!************************************************************************!*\
+ !*** ./components/PushAudiencesSelector/PushAudiencesBaseRow.react.js ***!
+ \************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PushAudiencesBaseRow)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"../node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var dashboard_Push_PushConstants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! dashboard/Push/PushConstants */ \"./dashboard/Push/PushConstants.js\");\n/* harmony import */ var context_currentApp__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! context/currentApp */ \"./context/currentApp.js\");\n\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar PushAudiencesBaseRow = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(PushAudiencesBaseRow, _React$Component);\n\n var _super = _createSuper(PushAudiencesBaseRow);\n\n function PushAudiencesBaseRow() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, PushAudiencesBaseRow);\n\n _this = _super.call(this);\n _this.xhrHandle = null;\n _this.state = {\n count: undefined,\n expandedView: false,\n approximate: false,\n isNewSegment: false\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(PushAudiencesBaseRow, [{\n key: \"handleDetailsToggle\",\n value: function handleDetailsToggle(query, schema, evt) {\n evt.preventDefault();\n this.setState({\n expandedView: !this.state.expandedView\n });\n }\n }, {\n key: \"fetchPushSubscriberCount\",\n value: function fetchPushSubscriberCount(context) {\n var _this2 = this;\n\n if (!context) {\n //so we don't break the PIG demo\n return;\n }\n\n var query = this.props.id === dashboard_Push_PushConstants__WEBPACK_IMPORTED_MODULE_7__.NEW_SEGMENT_ID ? this.props.query : null; //Added count fetch logic directly to component\n\n var _context$fetchPushSub = context.fetchPushSubscriberCount(this.props.id, query),\n xhr = _context$fetchPushSub.xhr,\n promise = _context$fetchPushSub.promise;\n\n this.xhrHandle = xhr;\n promise.then(function (_ref) {\n var approximate = _ref.approximate,\n count = _ref.count;\n\n _this2.setState({\n approximate: approximate,\n count: count\n });\n }, function () {});\n }\n }, {\n key: \"componentWillMount\",\n value: function componentWillMount() {\n this.fetchPushSubscriberCount.call(this, this.context);\n\n if (this.props.id == dashboard_Push_PushConstants__WEBPACK_IMPORTED_MODULE_7__.NEW_SEGMENT_ID) {\n this.setState({\n isNewSegment: true\n });\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(props, context) {\n if (this.context !== context) {\n this.fetchPushSubscriberCount.call(this, context);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.xhrHandle) {\n this.xhrHandle.abort();\n }\n }\n }]);\n\n return PushAudiencesBaseRow;\n}(react__WEBPACK_IMPORTED_MODULE_6__.Component);\n\n(0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(PushAudiencesBaseRow, \"contextType\", context_currentApp__WEBPACK_IMPORTED_MODULE_8__.CurrentApp);\n\n\n\n//# sourceURL=webpack:///./components/PushAudiencesSelector/PushAudiencesBaseRow.react.js?");
+
+/***/ }),
+
+/***/ "./components/PushAudiencesSelector/PushAudiencesOption.example.js":
+/*!*************************************************************************!*\
+ !*** ./components/PushAudiencesSelector/PushAudiencesOption.example.js ***!
+ \*************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_PushAudiencesSelector_PushAudiencesOption_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/PushAudiencesSelector/PushAudiencesOption.react */ \"./components/PushAudiencesSelector/PushAudiencesOption.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_PushAudiencesSelector_PushAudiencesOption_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar mockData = {\n id: '1',\n name: 'Everyone',\n createdAt: new Date(1444757195683)\n};\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_PushAudiencesSelector_PushAudiencesOption_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n id: mockData.id,\n inputId: mockData.inputId,\n name: mockData.name,\n createdAt: mockData.createdAt,\n inputName: \"test\"\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/PushAudiencesSelector/PushAudiencesOption.example.js?");
+
+/***/ }),
+
+/***/ "./components/PushAudiencesSelector/PushAudiencesOption.react.js":
+/*!***********************************************************************!*\
+ !*** ./components/PushAudiencesSelector/PushAudiencesOption.react.js ***!
+ \***********************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PushAudiencesOption)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_PushUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lib/PushUtils */ \"./lib/PushUtils.js\");\n/* harmony import */ var components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Icon/Icon.react */ \"./components/Icon/Icon.react.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var components_RadioButton_RadioButton_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/RadioButton/RadioButton.react */ \"./components/RadioButton/RadioButton.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! components/PushAudiencesSelector/PushAudiencesOption.scss */ \"./components/PushAudiencesSelector/PushAudiencesOption.scss\");\n/* harmony import */ var lib_DateUtils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lib/DateUtils */ \"./lib/DateUtils.js\");\n/* harmony import */ var components_PushAudiencesSelector_PushAudiencesBaseRow_react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! components/PushAudiencesSelector/PushAudiencesBaseRow.react */ \"./components/PushAudiencesSelector/PushAudiencesBaseRow.react.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\nvar FORM_PREFIX = 'audience_radio';\nvar AUDIENCE_SIZE_FETCHING_ENABLED = true;\nvar AUDIENCE_CREATED_DATE_ENABLED = true;\n\nvar PushAudiencesOption = /*#__PURE__*/function (_PushAudiencesBaseRow) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(PushAudiencesOption, _PushAudiencesBaseRow);\n\n var _super = _createSuper(PushAudiencesOption);\n\n function PushAudiencesOption() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, PushAudiencesOption);\n\n _this = _super.call(this);\n _this.state = {\n loading: true,\n count: undefined,\n expandedView: false,\n approximate: false,\n isNewSegment: false\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(PushAudiencesOption, [{\n key: \"handleChange\",\n value: function handleChange() {\n if (this.props.onChange && !this.props.isDisabled) {\n this.props.onChange.call(undefined, this.state.count);\n } else {\n return;\n }\n } // pass count information to PushNew flow\n\n }, {\n key: \"componentWillUpdate\",\n value: function componentWillUpdate(nextProps, nextState) {\n if ((nextState.count !== this.state.count || JSON.stringify(nextProps.query) !== JSON.stringify(this.props.query)) && this.props.isChecked) {\n nextProps.onChange.call(undefined, nextState.count);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var inputId = [FORM_PREFIX, this.props.id].join('_');\n var detailsView = this.state.expandedView ? lib_PushUtils__WEBPACK_IMPORTED_MODULE_5__.largeInfoBuilder(this.props.query, this.props.schema, components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"]) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n className: components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].shortInfo\n }, lib_PushUtils__WEBPACK_IMPORTED_MODULE_5__.shortInfoBuilder(this.props.query, this.props.schema));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"label\", {\n htmlFor: inputId,\n className: [components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].row, this.props.id === 'everyone' ? components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].everyone : ''].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n className: [components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].cell, components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].col1].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_RadioButton_RadioButton_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n id: inputId,\n name: FORM_PREFIX,\n className: components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].input,\n parentClassName: components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].radiobutton,\n onChange: this.handleChange.bind(this),\n checked: this.props.isChecked,\n disabled: this.props.isDisabled\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n className: components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].audienceInfo\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n className: components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].headline\n }, this.props.icon ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n className: components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].icon\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(components_Icon_Icon_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n width: 18,\n height: 18,\n fill: \"#343445\",\n name: this.props.icon\n })) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"span\", {\n style: this.props.icon ? {\n verticalAlign: 'top',\n paddingLeft: 5\n } : {}\n }, this.props.name)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n className: components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].subline\n }, detailsView, !this.state.isNewSegment ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"button\", {\n type: \"button\",\n className: [components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].moreDetails, !this.props.query ? components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].hideMoreDetails : ''].join(' '),\n onClick: this.handleDetailsToggle.bind(this, this.props.query, this.props.schema)\n }, this.state.expandedView ? 'less details' : 'more details') : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"button\", {\n type: \"button\",\n className: [components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].moreDetails, !this.props.query ? components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].hideMoreDetails : ''].join(' '),\n onClick: this.props.onEditAudience.bind(undefined, {\n name: this.props.name,\n filters: this.props.filters,\n query: this.props.query\n })\n }, 'Edit audience')))), AUDIENCE_SIZE_FETCHING_ENABLED ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n className: [components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].cell, components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].col2].join(' ')\n }, lib_PushUtils__WEBPACK_IMPORTED_MODULE_5__.formatCountDetails(this.state.count, this.state.approximate)) : null, AUDIENCE_CREATED_DATE_ENABLED ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(\"div\", {\n className: [components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].cell, components_PushAudiencesSelector_PushAudiencesOption_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"].col3].join(' ')\n }, (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_11__.yearMonthDayFormatter)(this.props.createdAt)) : null);\n }\n }]);\n\n return PushAudiencesOption;\n}(components_PushAudiencesSelector_PushAudiencesBaseRow_react__WEBPACK_IMPORTED_MODULE_12__[\"default\"]);\n\n\nPushAudiencesOption.propTypes = {\n id: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].string.isRequired.describe('The id of the push audience option.'),\n name: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].string.describe('The name of the push audience option.'),\n createdAt: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].instanceOf(Date).describe('The size of the push audience option.'),\n query: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].object.describe('Key value pair of installation condition info for the specific audience'),\n isChecked: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].bool.describe('Boolean describing if option is currently selected.'),\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].func.isRequired.describe('Callback that is executed on option change.'),\n isDisabled: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].bool.describe('Boolean describing if option is disabled.'),\n schema: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].object.describe('Schema of installation.'),\n onEditAudience: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].func.isRequired.describe('Callback that is executed on click of edit audience for new segment.'),\n icon: lib_PropTypes__WEBPACK_IMPORTED_MODULE_7__[\"default\"].string.describe('Specifiying icon for option. Used for \"Everyone\" case.')\n};\n\n//# sourceURL=webpack:///./components/PushAudiencesSelector/PushAudiencesOption.react.js?");
+
+/***/ }),
+
+/***/ "./components/PushAudiencesSelector/PushAudiencesSelector.example.js":
+/*!***************************************************************************!*\
+ !*** ./components/PushAudiencesSelector/PushAudiencesSelector.example.js ***!
+ \***************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_PushAudiencesSelector_PushAudiencesSelector_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/PushAudiencesSelector/PushAudiencesSelector.react */ \"./components/PushAudiencesSelector/PushAudiencesSelector.react.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_PushAudiencesSelector_PushAudiencesSelector_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n\nvar PushAudiencesSelectorDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(PushAudiencesSelectorDemo, _React$Component);\n\n var _super = _createSuper(PushAudiencesSelectorDemo);\n\n function PushAudiencesSelectorDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, PushAudiencesSelectorDemo);\n\n _this = _super.call(this);\n _this.state = {\n current: '1'\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(PushAudiencesSelectorDemo, [{\n key: \"handleChange\",\n value: function handleChange(value) {\n this.setState({\n current: value\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_PushAudiencesSelector_PushAudiencesSelector_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n audiences: this.props.audiences,\n current: this.state.current,\n onChange: this.handleChange.bind(this)\n });\n }\n }]);\n\n return PushAudiencesSelectorDemo;\n}(react__WEBPACK_IMPORTED_MODULE_5__.Component);\n\nvar mockData = [{\n objectId: '1',\n name: 'Everyone',\n createdAt: new Date(1444757195683)\n}, {\n objectId: '2',\n name: 'iOS Users in US',\n createdAt: new Date(1444757195683)\n}, {\n objectId: '3',\n name: 'Completed Checkout <30 days',\n createdAt: new Date(1444757195683)\n}, {\n objectId: '4',\n name: 'New Users',\n createdAt: new Date(1444757195683)\n}, {\n objectId: '5',\n name: 'Everyone',\n createdAt: new Date(1444757195683)\n}, {\n objectId: '6',\n name: 'iOS Users in US',\n createdAt: new Date(1444757195683)\n}, {\n objectId: '7',\n name: 'Completed Checkout <30 days',\n createdAt: new Date(1444757195683)\n}, {\n objectId: '8',\n name: 'New Users',\n createdAt: new Date(1444757195683)\n}];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(PushAudiencesSelectorDemo, {\n audiences: mockData\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/PushAudiencesSelector/PushAudiencesSelector.example.js?");
+
+/***/ }),
+
+/***/ "./components/PushAudiencesSelector/PushAudiencesSelector.react.js":
+/*!*************************************************************************!*\
+ !*** ./components/PushAudiencesSelector/PushAudiencesSelector.react.js ***!
+ \*************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var dashboard_Push_PushConstants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dashboard/Push/PushConstants.js */ \"./dashboard/Push/PushConstants.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var components_PushAudiencesSelector_PushAudiencesOption_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/PushAudiencesSelector/PushAudiencesOption.react */ \"./components/PushAudiencesSelector/PushAudiencesOption.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_PushAudiencesSelector_PushAudiencesSelector_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/PushAudiencesSelector/PushAudiencesSelector.scss */ \"./components/PushAudiencesSelector/PushAudiencesSelector.scss\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! immutable */ \"../node_modules/immutable/dist/immutable.es.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\nvar AUDIENCE_SIZE_FETCHING_ENABLED = true;\nvar AUDIENCE_CREATED_DATE_ENABLED = true;\n\nvar PushAudiencesOptions = function PushAudiencesOptions(_ref) {\n var current = _ref.current,\n _onChange = _ref.onChange,\n onEditAudience = _ref.onEditAudience,\n schema = _ref.schema,\n audiences = _ref.audiences;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", null, audiences.map(function (_ref2) {\n var icon = _ref2.icon,\n objectId = _ref2.objectId,\n name = _ref2.name,\n query = _ref2.query,\n createdAt = _ref2.createdAt,\n filters = _ref2.filters;\n var queryOrFilters = objectId === dashboard_Push_PushConstants_js__WEBPACK_IMPORTED_MODULE_0__.NEW_SEGMENT_ID ? filters.push((0,immutable__WEBPACK_IMPORTED_MODULE_5__.fromJS)({\n field: 'deviceType',\n constraint: 'containedIn',\n array: query.deviceType['$in']\n })) : query;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(components_PushAudiencesSelector_PushAudiencesOption_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n icon: icon,\n key: objectId,\n id: objectId,\n name: name,\n query: query,\n createdAt: new Date(createdAt),\n isChecked: current === objectId ? true : false //Super janky. Only works because open dashboard doesn't have saved audiences\n ,\n onChange: function onChange() {\n return _onChange(objectId, queryOrFilters);\n },\n onEditAudience: onEditAudience,\n schema: schema,\n filters: filters\n });\n }));\n};\n\nvar PushAudiencesSelector = function PushAudiencesSelector(_ref3) {\n var defaultAudience = _ref3.defaultAudience,\n newSegment = _ref3.newSegment,\n audiences = _ref3.audiences,\n children = _ref3.children,\n current = _ref3.current,\n onChange = _ref3.onChange,\n onEditAudience = _ref3.onEditAudience,\n schema = _ref3.schema;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n className: components_PushAudiencesSelector_PushAudiencesSelector_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].container\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n className: components_PushAudiencesSelector_PushAudiencesSelector_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].body\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(PushAudiencesOptions, {\n current: current,\n onChange: onChange,\n onEditAudience: onEditAudience,\n schema: schema,\n audiences: defaultAudience ? [defaultAudience] : []\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(PushAudiencesOptions, {\n current: current,\n onChange: onChange,\n onEditAudience: onEditAudience,\n schema: schema,\n audiences: newSegment ? [newSegment] : []\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(PushAudiencesOptions, {\n current: current,\n onChange: onChange,\n onEditAudience: onEditAudience,\n schema: schema,\n audiences: audiences\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n className: components_PushAudiencesSelector_PushAudiencesSelector_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].header\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n className: [components_PushAudiencesSelector_PushAudiencesSelector_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].cell, components_PushAudiencesSelector_PushAudiencesSelector_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].col1].join(' ')\n }, \"Audience\"), AUDIENCE_SIZE_FETCHING_ENABLED ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n className: [components_PushAudiencesSelector_PushAudiencesSelector_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].cell, components_PushAudiencesSelector_PushAudiencesSelector_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].col2].join(' ')\n }, \"Size\") : null, AUDIENCE_CREATED_DATE_ENABLED ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(\"div\", {\n className: [components_PushAudiencesSelector_PushAudiencesSelector_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].cell, components_PushAudiencesSelector_PushAudiencesSelector_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].col3].join(' ')\n }, \"Created\") : null), children);\n};\n\nPushAudiencesSelector.propTypes = {\n audiences: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].object.isRequired.describe('Immutable List of push audiences.'),\n defaultAudience: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].object.describe('Default push audience option. Not added to the store. Everyone.'),\n newSegment: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].object.describe('New segment (one time use) push audience option. Not added to the store.'),\n current: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].string.isRequired.describe('id of the currently selected row.'),\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].func.isRequired.describe('callback to be executed when option has changed'),\n schema: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].object.describe('Schema of installation'),\n onEditAudience: lib_PropTypes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].func.isRequired.describe('Callback that is executed on click of edit audience for new segment.')\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PushAudiencesSelector);\n\n//# sourceURL=webpack:///./components/PushAudiencesSelector/PushAudiencesSelector.react.js?");
+
+/***/ }),
+
+/***/ "./components/PushCerts/CertsTable.react.js":
+/*!**************************************************!*\
+ !*** ./components/PushCerts/CertsTable.react.js ***!
+ \**************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var components_FormTable_FormTable_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! components/FormTable/FormTable.react */ \"./components/FormTable/FormTable.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var lib_DateUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lib/DateUtils */ \"./lib/DateUtils.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar MONTH_IN_MS = 1000 * 60 * 60 * 24 * 30;\n\nvar CertsTable = function CertsTable(_ref) {\n var certs = _ref.certs,\n onDelete = _ref.onDelete,\n uploadPending = _ref.uploadPending;\n var tableData = certs.map(function (c) {\n var color = '';\n var expiresKeyColor = '';\n var isExpired = new Date(c.expiration) < Date.now();\n\n if (isExpired) {\n expiresKeyColor = color = 'red';\n } else if (new Date(c.expiration) - Date.now() < MONTH_IN_MS) {\n expiresKeyColor = color = 'orange';\n } else {\n color = 'green';\n }\n\n return {\n title: c.bundle,\n onDelete: onDelete.bind(null, c.id),\n color: color,\n notes: [{\n key: 'Type',\n value: c.type,\n strong: true\n }, {\n key: isExpired ? 'Expired' : 'Expires',\n keyColor: expiresKeyColor,\n value: (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_2__.dateStringUTC)(new Date(c.expiration))\n }]\n };\n });\n\n if (uploadPending) {\n tableData.unshift({\n title: \"Processing File\\u2026\",\n color: 'blue',\n notes: [{\n key: 'Type',\n value: 'Not Sure',\n strong: true\n }, {\n key: 'Expires',\n value: 'TBD'\n }]\n });\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(components_FormTable_FormTable_react__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n items: tableData\n });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CertsTable);\n\n//# sourceURL=webpack:///./components/PushCerts/CertsTable.react.js?");
+
+/***/ }),
+
+/***/ "./components/PushCerts/PushCerts.example.js":
+/*!***************************************************!*\
+ !*** ./components/PushCerts/PushCerts.example.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var lib_DateUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lib/DateUtils */ \"./lib/DateUtils.js\");\n/* harmony import */ var components_PushCerts_PushCerts_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/PushCerts/PushCerts.react */ \"./components/PushCerts/PushCerts.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar component = components_PushCerts_PushCerts_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_PushCerts_PushCerts_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n uploadPending: true,\n certs: [{\n id: '1',\n bundle: 'com.parse.Anypic',\n type: 'iOS Production',\n expiration: (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_0__.daysFrom)(new Date(), 60).toISOString()\n }, {\n id: '2',\n bundle: 'com.parse.Anypic',\n type: 'iOS Development',\n expiration: (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_0__.daysFrom)(new Date(), 20).toISOString()\n }, {\n id: '3',\n bundle: 'com.parse.Anyphone',\n type: 'iOS Development',\n expiration: (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_0__.daysFrom)(new Date(), -4).toISOString()\n }],\n onUpload: function onUpload() {},\n onDelete: function onDelete() {}\n });\n }\n}, {\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_PushCerts_PushCerts_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n certs: undefined,\n onUpload: function onUpload() {},\n onDelete: function onDelete() {}\n });\n }\n}, {\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.createElement(components_PushCerts_PushCerts_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n uploadPending: true,\n certs: [{\n id: '1',\n bundle: 'com.parse.Anypic',\n type: 'iOS Production',\n expiration: (0,lib_DateUtils__WEBPACK_IMPORTED_MODULE_0__.daysFrom)(new Date(), 60).toISOString()\n }],\n error: \"Something happened, you might want to get that checked out.\",\n onUpload: function onUpload() {},\n onDelete: function onDelete() {}\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/PushCerts/PushCerts.example.js?");
+
+/***/ }),
+
+/***/ "./components/PushCerts/PushCerts.react.js":
+/*!*************************************************!*\
+ !*** ./components/PushCerts/PushCerts.react.js ***!
+ \*************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_PushCerts_CertsTable_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/PushCerts/CertsTable.react */ \"./components/PushCerts/CertsTable.react.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Fieldset/Fieldset.react */ \"./components/Fieldset/Fieldset.react.js\");\n/* harmony import */ var components_FileInput_FileInput_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/FileInput/FileInput.react */ \"./components/FileInput/FileInput.react.js\");\n/* harmony import */ var components_FormNote_FormNote_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components/FormNote/FormNote.react */ \"./components/FormNote/FormNote.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\n\n\nvar PushCerts = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(PushCerts, _React$Component);\n\n var _super = _createSuper(PushCerts);\n\n function PushCerts() {\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, PushCerts);\n\n return _super.call(this);\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(PushCerts, [{\n key: \"render\",\n value: function render() {\n var renderTable = this.props.uploadPending || this.props.certs && this.props.certs.length > 0;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n legend: \"Apple Push Certificates\",\n description: 'You may upload up to 6 push certificates. This limit cannot be raised.'\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n labelWidth: 60,\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n text: \"Certificate file\",\n description: \"Upload your .p12 certificate file to enable push for iOS and OS X.\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_FileInput_FileInput_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n disabled: this.props.uploadPending,\n accept: \"application/x-pkcs12\",\n onChange: this.props.onUpload\n })\n }), renderTable || this.props.error ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_FormNote_FormNote_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n color: \"orange\",\n show: !!this.props.error\n }, this.props.error) : null, renderTable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n labelWidth: 60,\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n text: \"Uploaded certificates\",\n description: \"Remember, you can only upload two certificates per bundle.\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(components_PushCerts_CertsTable_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], this.props)\n }) : null);\n }\n }]);\n\n return PushCerts;\n}(react__WEBPACK_IMPORTED_MODULE_12__.Component);\n\nPushCerts.propTypes = {\n certs: lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].arrayOf(lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].object).describe('An array of push cert metadata. Each should include the following fields: id, bundle, type, expiresAt'),\n uploadPending: lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].bool.describe('A boolean that indicates whether an upload is pending'),\n error: lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].string.describe('An error message to display in the form'),\n onUpload: lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].func.isRequired.describe('A function called when a cert file is selected. The File is passed to the handler as the only parameter.'),\n onDelete: lib_PropTypes__WEBPACK_IMPORTED_MODULE_11__[\"default\"].func.isRequired.describe('A handler for when a Push has been deleted from the server')\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PushCerts);\n\n//# sourceURL=webpack:///./components/PushCerts/PushCerts.react.js?");
+
+/***/ }),
+
+/***/ "./components/PushExperimentDropdown/PushExperimentDropdown.example.js":
+/*!*****************************************************************************!*\
+ !*** ./components/PushExperimentDropdown/PushExperimentDropdown.example.js ***!
+ \*****************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_PushExperimentDropdown_PushExperimentDropdown_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/PushExperimentDropdown/PushExperimentDropdown.react */ \"./components/PushExperimentDropdown/PushExperimentDropdown.react.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_PushExperimentDropdown_PushExperimentDropdown_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n\nvar PushExperimentDropdownDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(PushExperimentDropdownDemo, _React$Component);\n\n var _super = _createSuper(PushExperimentDropdownDemo);\n\n function PushExperimentDropdownDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, PushExperimentDropdownDemo);\n\n _this = _super.call(this);\n _this.state = {\n color: 'blue'\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(PushExperimentDropdownDemo, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_PushExperimentDropdown_PushExperimentDropdown_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n width: 155,\n placeholder: \"Choose a group\",\n value: this.state.color,\n color: this.state.color.toLowerCase(),\n onChange: function onChange(color) {\n return _this2.setState({\n color: color\n });\n },\n options: [{\n key: 'Group A (winner)',\n style: {\n color: 'green'\n }\n }, {\n key: 'Group B (loser)',\n style: {\n color: 'red'\n }\n }]\n });\n }\n }]);\n\n return PushExperimentDropdownDemo;\n}(react__WEBPACK_IMPORTED_MODULE_5__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(PushExperimentDropdownDemo, null));\n }\n}];\n\n//# sourceURL=webpack:///./components/PushExperimentDropdown/PushExperimentDropdown.example.js?");
+
+/***/ }),
+
+/***/ "./components/PushExperimentDropdown/PushExperimentDropdown.react.js":
+/*!***************************************************************************!*\
+ !*** ./components/PushExperimentDropdown/PushExperimentDropdown.react.js ***!
+ \***************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PushExperimentDropdown)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/Popover/Popover.react */ \"./components/Popover/Popover.react.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var components_PushExperimentDropdown_PushExperimentDropdown_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! components/PushExperimentDropdown/PushExperimentDropdown.scss */ \"./components/PushExperimentDropdown/PushExperimentDropdown.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\nvar PushExperimentDropdown = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(PushExperimentDropdown, _React$Component);\n\n var _super = _createSuper(PushExperimentDropdown);\n\n function PushExperimentDropdown() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, PushExperimentDropdown);\n\n _this = _super.call(this);\n _this.state = {\n open: false,\n selected: false\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(PushExperimentDropdown, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n this.styles = this.props.styles || components_PushExperimentDropdown_PushExperimentDropdown_scss__WEBPACK_IMPORTED_MODULE_10__[\"default\"];\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_9__.findDOMNode(this);\n }\n }, {\n key: \"select\",\n value: function select(value, e) {\n var _this2 = this;\n\n e.stopPropagation();\n this.setState({\n open: false,\n selected: true\n }, function () {\n _this2.props.onChange(value);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var widthStyle = {\n width: this.props.width || 140\n };\n var styles = this.styles;\n var color = this.props.color;\n var content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n className: [styles.current, styles[color]].join(' '),\n onClick: function onClick() {\n return _this3.setState({\n open: true\n });\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", null, !this.state.selected && this.props.placeholder && this.props.value === undefined ? this.props.placeholder : this.props.value));\n\n if (this.state.open) {\n var position = lib_Position__WEBPACK_IMPORTED_MODULE_7__[\"default\"].inWindow(this.node);\n content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n fixed: true,\n position: position,\n onExternalClick: function onExternalClick() {\n return _this3.setState({\n open: false\n });\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n style: widthStyle,\n className: [styles.menu, styles[color]].join(' ')\n }, this.props.options.map(function (_ref) {\n var key = _ref.key,\n style = _ref.style;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n key: key,\n style: style,\n onClick: _this3.select.bind(_this3, key)\n }, key);\n })));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n style: widthStyle,\n className: styles.dropdown\n }, content);\n }\n }]);\n\n return PushExperimentDropdown;\n}(react__WEBPACK_IMPORTED_MODULE_8__.Component);\n\n\nPushExperimentDropdown.propTypes = {\n color: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].string.describe('Determines the color of the dropdown.'),\n value: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].string.isRequired.describe('The current value of the dropdown.'),\n options: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].arrayOf(lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].object).isRequired.describe('An array of options available in the dropdown.'),\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].func.isRequired.describe('A function called when the dropdown is changed.'),\n width: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].string.describe('An optional width override.'),\n placeHolder: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].string.describe('Placeholder text used in place of default selection.'),\n styles: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].object.describe('Styles override used to provide dropdown with differnt skin.')\n};\n\n//# sourceURL=webpack:///./components/PushExperimentDropdown/PushExperimentDropdown.react.js?");
+
+/***/ }),
+
+/***/ "./components/PushOpenRate/PushOpenRate.example.js":
+/*!*********************************************************!*\
+ !*** ./components/PushOpenRate/PushOpenRate.example.js ***!
+ \*********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_PushOpenRate_PushOpenRate_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/PushOpenRate/PushOpenRate.react */ \"./components/PushOpenRate/PushOpenRate.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_PushOpenRate_PushOpenRate_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n name: 'Normal Push <10%',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_PushOpenRate_PushOpenRate_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n numOpened: 24,\n numSent: 2112,\n color: \"blue\"\n });\n }\n}, {\n name: 'Normal Push >10%',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_PushOpenRate_PushOpenRate_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n numOpened: 325,\n numSent: 2112,\n color: \"blue\"\n });\n }\n}, {\n name: 'Normal Push Integer Percent',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_PushOpenRate_PushOpenRate_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n numOpened: 100,\n numSent: 1000,\n color: \"blue\"\n });\n }\n}, {\n name: 'Push Experiment A Wins',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n style: {\n width: '50%',\n \"float\": 'left'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_PushOpenRate_PushOpenRate_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n numOpened: 102,\n numSent: 4342,\n color: \"yellow\",\n isExperiment: true,\n isWinner: true\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n style: {\n marginLeft: '50%'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_PushOpenRate_PushOpenRate_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n numOpened: 5,\n numSent: 3223,\n color: \"pink\",\n isExperiment: true,\n isWinner: false\n })));\n }\n}, {\n name: 'Push Experiment B Wins',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n style: {\n width: '50%',\n \"float\": 'left'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_PushOpenRate_PushOpenRate_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n numOpened: 232,\n numSent: 12413,\n color: \"yellow\",\n isExperiment: true,\n isWinner: false\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n style: {\n marginLeft: '50%'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_PushOpenRate_PushOpenRate_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n numOpened: 455,\n numSent: 13419,\n color: \"pink\",\n isExperiment: true,\n isWinner: true\n })));\n }\n}];\n\n//# sourceURL=webpack:///./components/PushOpenRate/PushOpenRate.example.js?");
+
+/***/ }),
+
+/***/ "./components/PushOpenRate/PushOpenRate.react.js":
+/*!*******************************************************!*\
+ !*** ./components/PushOpenRate/PushOpenRate.react.js ***!
+ \*******************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_PushOpenRate_PushOpenRate_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/PushOpenRate/PushOpenRate.scss */ \"./components/PushOpenRate/PushOpenRate.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nfunction getRateString(rateNum) {\n var rateStr;\n\n if (rateNum % 1 === 0) {\n // Integer rate\n rateStr = rateNum.toFixed(0);\n } else if (rateNum < 10) {\n // e.g. 0.01%, 1.23%\n rateStr = rateNum.toFixed(2);\n } else {\n // e.g. 34.9%, 100%\n rateStr = rateNum.toPrecision(3);\n }\n\n return rateStr;\n}\n\nvar PushOpenRate = function PushOpenRate(_ref) {\n var numOpened = _ref.numOpened,\n numSent = _ref.numSent,\n color = _ref.color,\n _ref$isExperiment = _ref.isExperiment,\n isExperiment = _ref$isExperiment === void 0 ? false : _ref$isExperiment,\n _ref$isWinner = _ref.isWinner,\n isWinner = _ref$isWinner === void 0 ? false : _ref$isWinner,\n customColor = _ref.customColor;\n var rateNum = numOpened / numSent * 100;\n\n if (isNaN(rateNum)) {\n //check for case when numSent is 0\n rateNum = 0;\n }\n /* eslint-disable no-unused-vars */\n\n\n var rateStr = getRateString(rateNum);\n /* eslint-enable */\n\n var customStyles = {\n standardColor: {},\n inverseColor: {}\n }; //handle non standard blue/yellow/pink cases\n\n if (customColor) {\n customStyles.standard = {\n color: customColor,\n background: 'white'\n };\n customStyles.inverse = {\n color: 'white',\n background: customColor\n };\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n className: components_PushOpenRate_PushOpenRate_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].wrapper\n }, isExperiment ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n style: customStyles[isWinner ? 'standard' : 'inverse'],\n className: [components_PushOpenRate_PushOpenRate_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].title, components_PushOpenRate_PushOpenRate_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"][color]].join(' ')\n }, isWinner ? 'WINNER' : '') : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n style: customStyles[isWinner ? 'inverse' : 'standard'],\n className: [components_PushOpenRate_PushOpenRate_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].percent, components_PushOpenRate_PushOpenRate_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"][color + (isWinner ? '_inv' : '')]].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n className: components_PushOpenRate_PushOpenRate_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].rate\n }, \"N/A\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n className: components_PushOpenRate_PushOpenRate_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].rate_label\n }, \"Open Rate\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n className: components_PushOpenRate_PushOpenRate_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].count_wrap,\n style: {\n \"float\": 'left',\n width: '50%'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n className: components_PushOpenRate_PushOpenRate_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].count\n }, \"N/A\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n className: components_PushOpenRate_PushOpenRate_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].count_label\n }, \"Push Opens\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n className: components_PushOpenRate_PushOpenRate_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].count_wrap,\n style: {\n marginLeft: '50%'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n className: components_PushOpenRate_PushOpenRate_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].count\n }, numSent), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n className: components_PushOpenRate_PushOpenRate_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].count_label\n }, \"Push Sends\")));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PushOpenRate);\nPushOpenRate.propTypes = {\n numOpened: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].number.isRequired.describe('Number of pushes opened.'),\n numSent: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].number.isRequired.describe('Number of pushes sent'),\n color: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].oneOf(['blue', 'yellow', 'pink']).isRequired.describe('Color of text and circle'),\n isExperiment: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].bool.describe('Whether or not this is an A/B test group'),\n isWinner: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].bool.describe('Whether or not this group won the A/B test')\n};\n\n//# sourceURL=webpack:///./components/PushOpenRate/PushOpenRate.react.js?");
+
+/***/ }),
+
+/***/ "./components/RadioButton/RadioButton.example.js":
+/*!*******************************************************!*\
+ !*** ./components/RadioButton/RadioButton.example.js ***!
+ \*******************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_RadioButton_RadioButton_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/RadioButton/RadioButton.react */ \"./components/RadioButton/RadioButton.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_RadioButton_RadioButton_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n name: 'Unchecked State',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_RadioButton_RadioButton_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null);\n }\n}, {\n name: 'Checked State',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_RadioButton_RadioButton_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n checked: true\n });\n }\n}, {\n name: 'Disabled State [styles tbd]',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_RadioButton_RadioButton_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n disabled: true\n });\n }\n}, {\n name: 'Disabled Checked State [styles tbd]',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_RadioButton_RadioButton_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n checked: true,\n disabled: true\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/RadioButton/RadioButton.example.js?");
+
+/***/ }),
+
+/***/ "./components/RadioButton/RadioButton.react.js":
+/*!*****************************************************!*\
+ !*** ./components/RadioButton/RadioButton.react.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_RadioButton_RadioButton_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/RadioButton/RadioButton.scss */ \"./components/RadioButton/RadioButton.scss\");\n\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar RadioButton = function RadioButton(props) {\n var parentClassName = props.parentClassName || '';\n props = Object.assign({}, props);\n delete props.parentClassName;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n className: [components_RadioButton_RadioButton_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].radiobutton, parentClassName].join(' ')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"input\", (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n type: \"radio\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"span\", null));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RadioButton);\n\n//# sourceURL=webpack:///./components/RadioButton/RadioButton.react.js?");
+
+/***/ }),
+
+/***/ "./components/Range/Range.example.js":
+/*!*******************************************!*\
+ !*** ./components/Range/Range.example.js ***!
+ \*******************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_Range_Range_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Range/Range.react */ \"./components/Range/Range.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar RangeWrapper = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(RangeWrapper, _React$Component);\n\n var _super = _createSuper(RangeWrapper);\n\n function RangeWrapper() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, RangeWrapper);\n\n _this = _super.call(this);\n _this.state = {\n value: 50\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(RangeWrapper, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(components_Range_Range_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, this.props, {\n value: this.state.value,\n onChange: function onChange(value) {\n return _this2.setState({\n value: value\n });\n }\n }));\n }\n }]);\n\n return RangeWrapper;\n}(react__WEBPACK_IMPORTED_MODULE_7__.Component);\n\nvar component = components_Range_Range_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\nvar demos = [{\n name: 'Basic Range',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(RangeWrapper, {\n min: 0,\n max: 100,\n width: 200\n });\n }\n}, {\n name: 'Range with tracker',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(RangeWrapper, {\n track: true,\n min: 0,\n max: 100,\n width: 200\n });\n }\n}, {\n name: 'Step by 10',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(RangeWrapper, {\n track: true,\n min: 0,\n max: 100,\n width: 200,\n step: 10\n });\n }\n}, {\n name: 'Different colors',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(RangeWrapper, {\n color: \"#DB37EC\",\n track: true,\n min: 0,\n max: 100,\n width: 200\n });\n }\n}, {\n name: 'Tracker units',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(RangeWrapper, {\n track: true,\n units: 'req/s',\n min: 0,\n max: 100,\n width: 200\n });\n }\n}, {\n name: 'Complex tracker units',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(RangeWrapper, {\n track: true,\n units: function units(value) {\n return value + 'req/s & ' + Math.floor((value - 10) / 20) + ' jobs';\n },\n min: 0,\n max: 100,\n width: 200,\n step: 10\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/Range/Range.example.js?");
+
+/***/ }),
+
+/***/ "./components/Range/Range.react.js":
+/*!*****************************************!*\
+ !*** ./components/Range/Range.react.js ***!
+ \*****************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Range)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_Field_Field_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/Field/Field.scss */ \"./components/Field/Field.scss\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Range_Range_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/Range/Range.scss */ \"./components/Range/Range.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar DEFAULT_COLOR = '#fd9539';\n\nvar Range = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Range, _React$Component);\n\n var _super = _createSuper(Range);\n\n function Range(props) {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Range);\n\n _this = _super.call(this);\n _this.state = {\n width: props.width\n };\n _this.metricsRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createRef();\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Range, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!this.props.width) {\n this.setState({\n width: this.metricsRef.current.clientWidth\n });\n }\n }\n }, {\n key: \"changeValue\",\n value: function changeValue(e) {\n this.props.onChange(parseInt(e.nativeEvent.target.value, 10));\n }\n }, {\n key: \"buildGradient\",\n value: function buildGradient() {\n var fillLevel = this.props.value / (this.props.max - this.props.min) * 100 + '%';\n var fillColor = this.props.color || DEFAULT_COLOR;\n return \"linear-gradient(90deg, \".concat(fillColor, \", \").concat(fillColor, \" \").concat(fillLevel, \", #e0e0ea \").concat(fillLevel, \", #e0e0ea)\");\n }\n }, {\n key: \"render\",\n value: function render() {\n var trackerStyle = {};\n\n if (this.state.width) {\n var left = this.props.value / (this.props.max - this.props.min) * (this.state.width - 24) + 11;\n trackerStyle = {\n left: left\n };\n }\n\n if (this.props.color) {\n trackerStyle.backgroundColor = this.props.color;\n trackerStyle.borderTopColor = this.props.color;\n }\n\n var tracker = null;\n var unitsText = typeof this.props.units === 'function' ? this.props.units(this.props.value) : this.props.value + (this.props.units || '');\n\n if (this.props.track && this.state.width) {\n tracker = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n className: components_Range_Range_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].tracker,\n style: trackerStyle\n }, unitsText);\n }\n\n var wrapperStyle = {};\n\n if (this.props.width) {\n wrapperStyle.width = this.props.width;\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", {\n style: wrapperStyle,\n ref: this.metricsRef,\n className: [components_Range_Range_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].range, components_Field_Field_scss__WEBPACK_IMPORTED_MODULE_5__[\"default\"].input].join(' ')\n }, tracker, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"input\", {\n type: \"range\",\n min: this.props.min,\n max: this.props.max,\n step: this.props.step || 1,\n value: this.props.value,\n style: {\n backgroundImage: this.buildGradient()\n },\n onChange: this.changeValue.bind(this)\n }));\n }\n }]);\n\n return Range;\n}(react__WEBPACK_IMPORTED_MODULE_7__.Component);\n\n\nRange.propTypes = {\n min: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].number.isRequired.describe('The minimum value on the slider'),\n max: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].number.isRequired.describe('The maximum value on the slider'),\n step: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].number.describe('Adjusts the granularity of the slider. If this is set, the slider will only move in increments of this size.'),\n value: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].number.isRequired.describe('The current value of this controlled input'),\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].func.isRequired.describe('A function called whenever the input is adjusted'),\n width: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].number.describe('The physical width, in pixels, of the slider track'),\n units: lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].oneOfType([lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].string, lib_PropTypes__WEBPACK_IMPORTED_MODULE_6__[\"default\"].func]).describe('A string displayed as after the number in the tracker, or a function that accepts the value of the tracker, and returns the string to be displayed in the tracker.')\n};\n\n//# sourceURL=webpack:///./components/Range/Range.react.js?");
+
+/***/ }),
+
+/***/ "./components/SaveButton/SaveButton.example.js":
+/*!*****************************************************!*\
+ !*** ./components/SaveButton/SaveButton.example.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/SaveButton/SaveButton.react */ \"./components/SaveButton/SaveButton.react.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n\nvar SaveDemo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(SaveDemo, _React$Component);\n\n var _super = _createSuper(SaveDemo);\n\n function SaveDemo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, SaveDemo);\n\n _this = _super.call(this);\n _this.state = {\n saveState: components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"].States.WAITING,\n nextState: components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"].States.SUCCEEDED\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(SaveDemo, [{\n key: \"handleClick\",\n value: function handleClick() {\n var _this2 = this;\n\n this.setState({\n saveState: components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"].States.SAVING\n });\n setTimeout(function () {\n var next = _this2.state.nextState === components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"].States.SUCCEEDED ? components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"].States.FAILED : components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"].States.SUCCEEDED;\n\n _this2.setState({\n saveState: _this2.state.nextState,\n nextState: next\n });\n\n setTimeout(function () {\n _this2.setState({\n saveState: components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"].States.WAITING\n });\n }, 2000);\n }, 3000);\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n state: this.state.saveState,\n onClick: this.handleClick.bind(this)\n });\n }\n }]);\n\n return SaveDemo;\n}(react__WEBPACK_IMPORTED_MODULE_5__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", {\n style: {\n padding: 10\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", {\n style: {\n padding: 10\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n state: components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"].States.SAVING\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", {\n style: {\n padding: 10\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n state: components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"].States.SUCCEEDED\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", {\n style: {\n padding: 10\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n state: components_SaveButton_SaveButton_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"].States.FAILED\n })));\n }\n}, {\n name: 'Clickable demo',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(SaveDemo, null);\n }\n}];\n\n//# sourceURL=webpack:///./components/SaveButton/SaveButton.example.js?");
+
+/***/ }),
+
+/***/ "./components/SaveButton/SaveButton.react.js":
+/*!***************************************************!*\
+ !*** ./components/SaveButton/SaveButton.react.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"../node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var components_Button_Button_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/Button/Button.react */ \"./components/Button/Button.react.js\");\n/* harmony import */ var lib_keyMirror__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lib/keyMirror */ \"./lib/keyMirror.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_SaveButton_SaveButton_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/SaveButton/SaveButton.scss */ \"./components/SaveButton/SaveButton.scss\");\n\n\n\nvar _excluded = [\"state\", \"onClick\", \"waitingText\", \"savingText\", \"failedText\", \"succeededText\", \"disabled\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\nvar SaveButton = function SaveButton(_ref) {\n var _ref$state = _ref.state,\n state = _ref$state === void 0 ? SaveButton.States.WAITING : _ref$state,\n onClick = _ref.onClick,\n _ref$waitingText = _ref.waitingText,\n waitingText = _ref$waitingText === void 0 ? 'Save changes' : _ref$waitingText,\n _ref$savingText = _ref.savingText,\n savingText = _ref$savingText === void 0 ? \"Saving\\u2026\" : _ref$savingText,\n _ref$failedText = _ref.failedText,\n failedText = _ref$failedText === void 0 ? 'Save failed' : _ref$failedText,\n _ref$succeededText = _ref.succeededText,\n succeededText = _ref$succeededText === void 0 ? 'Saved!' : _ref$succeededText,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n buttonProps = (0,_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref, _excluded);\n\n var value = '';\n var color = 'blue';\n\n switch (state) {\n case SaveButton.States.WAITING:\n value = waitingText;\n break;\n\n case SaveButton.States.SAVING:\n value = savingText;\n break;\n\n case SaveButton.States.SUCCEEDED:\n value = succeededText;\n color = 'green';\n break;\n\n case SaveButton.States.FAILED:\n value = failedText;\n color = 'red';\n break;\n }\n\n var className = state === SaveButton.States.FAILED ? components_SaveButton_SaveButton_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].shake : null;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"span\", {\n className: className\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_Button_Button_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n primary: true,\n width: '128px',\n progress: state === SaveButton.States.SAVING,\n color: color,\n onClick: state === SaveButton.States.WAITING ? onClick : null,\n value: value,\n disabled: state === SaveButton.States.WAITING ? disabled : false\n }, buttonProps)));\n};\n\nSaveButton.States = (0,lib_keyMirror__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(['SAVING', 'SUCCEEDED', 'FAILED']);\n\nvar forwardedButtonProps = (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, components_Button_Button_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"].propTypes);\n\ndelete forwardedButtonProps.value;\nSaveButton.propTypes = _objectSpread({\n state: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.describe('SaveButton.States.(SAVING|SUCCEEDED|FAILED|WAITING). Defaults to WAITING.'),\n onClick: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].func.describe('Click handler. Actived if button is clicked while enabled and in WAITING state.'),\n waitingText: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.describe('Text for WAITING state. Defaults to \"Save changes\".'),\n savingText: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.describe(\"Text for SAVING state. Defaults to \\\"Saving\\u2025\\\".\"),\n failedText: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.describe('Text for FAILED state. Defaults to \"Save failed\".'),\n succeededText: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].string.describe('Text for SUCCEEDED state. Defaults to \"Saved!\".'),\n disabled: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].bool.describe('Disables button if in WAITING state.')\n}, forwardedButtonProps);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SaveButton);\n\n//# sourceURL=webpack:///./components/SaveButton/SaveButton.react.js?");
+
+/***/ }),
+
+/***/ "./components/ScrollHint/ScrollHint.react.js":
+/*!***************************************************!*\
+ !*** ./components/ScrollHint/ScrollHint.react.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ScrollHint)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_ScrollHint_ScrollHint_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/ScrollHint/ScrollHint.scss */ \"./components/ScrollHint/ScrollHint.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar ScrollHint = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ScrollHint, _React$Component);\n\n var _super = _createSuper(ScrollHint);\n\n function ScrollHint() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, ScrollHint);\n\n _this = _super.call(this);\n _this.state = {\n active: false\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(ScrollHint, [{\n key: \"toggle\",\n value: function toggle(active) {\n this.setState({\n active: active\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var active = this.state.active;\n var classes = [components_ScrollHint_ScrollHint_scss__WEBPACK_IMPORTED_MODULE_6__[\"default\"].scrollHint, active ? components_ScrollHint_ScrollHint_scss__WEBPACK_IMPORTED_MODULE_6__[\"default\"].active : undefined].join(' ');\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", {\n className: classes\n });\n }\n }]);\n\n return ScrollHint;\n}(react__WEBPACK_IMPORTED_MODULE_5__.Component);\n\n\n\n//# sourceURL=webpack:///./components/ScrollHint/ScrollHint.react.js?");
+
+/***/ }),
+
+/***/ "./components/SegmentSelect/SegmentSelect.example.js":
+/*!***********************************************************!*\
+ !*** ./components/SegmentSelect/SegmentSelect.example.js ***!
+ \***********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_SegmentSelect_SegmentSelect_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/SegmentSelect/SegmentSelect.react */ \"./components/SegmentSelect/SegmentSelect.react.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_SegmentSelect_SegmentSelect_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n\nvar Demo = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Demo, _React$Component);\n\n var _super = _createSuper(Demo);\n\n function Demo() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Demo);\n\n _this = _super.call(this);\n _this.state = {\n current: null\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Demo, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_SegmentSelect_SegmentSelect_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n values: ['iOS', 'Android', 'OS X', 'Windows'],\n current: this.state.current,\n onChange: function onChange(current) {\n return _this2.setState({\n current: current\n });\n }\n });\n }\n }]);\n\n return Demo;\n}(react__WEBPACK_IMPORTED_MODULE_5__.Component);\n\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(Demo, null);\n }\n}];\n\n//# sourceURL=webpack:///./components/SegmentSelect/SegmentSelect.example.js?");
+
+/***/ }),
+
+/***/ "./components/SegmentSelect/SegmentSelect.react.js":
+/*!*********************************************************!*\
+ !*** ./components/SegmentSelect/SegmentSelect.react.js ***!
+ \*********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_SegmentSelect_SegmentSelect_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/SegmentSelect/SegmentSelect.scss */ \"./components/SegmentSelect/SegmentSelect.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar SegmentSelect = function SegmentSelect(_ref) {\n var values = _ref.values,\n current = _ref.current,\n onChange = _ref.onChange;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", {\n className: components_SegmentSelect_SegmentSelect_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].row\n }, values.map(function (v) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"a\", {\n key: v,\n className: v === current ? components_SegmentSelect_SegmentSelect_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].current : null,\n onClick: function onClick() {\n if (current !== v) {\n onChange(v);\n }\n }\n }, v);\n }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SegmentSelect);\nSegmentSelect.propTypes = {\n values: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].arrayOf(lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].string).isRequired.describe('An array of strings that can be selected'),\n current: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].string.describe('The currently selected value.'),\n onChange: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].func.isRequired.describe('A function that is called whenever a new segment is selected. The selected value is passed as the only parameter.')\n};\n\n//# sourceURL=webpack:///./components/SegmentSelect/SegmentSelect.react.js?");
+
+/***/ }),
+
+/***/ "./components/SliderWrap/SliderWrap.example.js":
+/*!*****************************************************!*\
+ !*** ./components/SliderWrap/SliderWrap.example.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_Constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lib/Constants */ \"./lib/Constants.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_SliderWrap_SliderWrap_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components/SliderWrap/SliderWrap.react */ \"./components/SliderWrap/SliderWrap.react.js\");\n\n\n\n\n\n\n\nvar _excluded = [\"children\"];\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\nvar contentStyle = {\n background: '#67c0ff',\n color: '#ffffff',\n width: '200px',\n height: '60px',\n lineHeight: '60px',\n fontSize: '16px',\n textAlign: 'center'\n};\n\nvar Toggler = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Toggler, _React$Component);\n\n var _super = _createSuper(Toggler);\n\n function Toggler(props) {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, Toggler);\n\n _this = _super.call(this);\n _this.state = {\n expanded: !!props.expanded\n };\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Toggler, [{\n key: \"toggle\",\n value: function toggle() {\n this.setState({\n expanded: !this.state.expanded\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n otherProps = (0,_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_this$props, _excluded);\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n style: {\n padding: '10px 0',\n width: '400px'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"a\", {\n onClick: this.toggle.bind(this)\n }, this.state.expanded ? 'Close' : 'Open'), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(components_SliderWrap_SliderWrap_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"], (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, otherProps, {\n expanded: this.state.expanded\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", {\n style: contentStyle\n }, children)));\n }\n }]);\n\n return Toggler;\n}(react__WEBPACK_IMPORTED_MODULE_8__.Component);\n\nvar component = components_SliderWrap_SliderWrap_react__WEBPACK_IMPORTED_MODULE_9__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(Toggler, {\n expanded: true\n }, \"Open your mind\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(Toggler, {\n expanded: false\n }, \"Closed for renovations\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(Toggler, {\n expanded: true,\n direction: lib_Constants__WEBPACK_IMPORTED_MODULE_7__.Directions.RIGHT\n }, \"To the right, to the right\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(Toggler, {\n expanded: true,\n direction: lib_Constants__WEBPACK_IMPORTED_MODULE_7__.Directions.LEFT\n }, \"In the box to the left\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(Toggler, {\n expanded: false,\n direction: lib_Constants__WEBPACK_IMPORTED_MODULE_7__.Directions.BOTTOM_RIGHT\n }, \"Zooooooom\"));\n }\n}];\n\n//# sourceURL=webpack:///./components/SliderWrap/SliderWrap.example.js?");
+
+/***/ }),
+
+/***/ "./components/SliderWrap/SliderWrap.react.js":
+/*!***************************************************!*\
+ !*** ./components/SliderWrap/SliderWrap.react.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SliderWrap)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_Constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lib/Constants */ \"./lib/Constants.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var components_SliderWrap_SliderWrap_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/SliderWrap/SliderWrap.scss */ \"./components/SliderWrap/SliderWrap.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar SliderWrap = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(SliderWrap, _React$Component);\n\n var _super = _createSuper(SliderWrap);\n\n function SliderWrap() {\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, SliderWrap);\n\n return _super.apply(this, arguments);\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(SliderWrap, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var wrap = react_dom__WEBPACK_IMPORTED_MODULE_7__.findDOMNode(this);\n this.metrics = wrap.children[0];\n\n if (this.props.expanded) {\n this.forceUpdate();\n }\n }\n }, {\n key: \"_getMetric\",\n value: function _getMetric() {\n if (this.props.direction === lib_Constants__WEBPACK_IMPORTED_MODULE_5__.Directions.LEFT || this.props.direction === lib_Constants__WEBPACK_IMPORTED_MODULE_5__.Directions.RIGHT) {\n return 'width';\n }\n\n if (!this.props.direction || this.props.direction === lib_Constants__WEBPACK_IMPORTED_MODULE_5__.Directions.UP || this.props.direction === lib_Constants__WEBPACK_IMPORTED_MODULE_5__.Directions.DOWN) {\n return 'height';\n }\n\n return 'both';\n }\n }, {\n key: \"render\",\n value: function render() {\n var style = {};\n\n var metric = this._getMetric();\n\n if (!this.props.expanded || !this.metrics) {\n if (metric === 'width' || metric === 'both') {\n style.width = '0px';\n }\n\n if (metric === 'height' || metric === 'both') {\n style.height = '0px';\n }\n } else if (this.props.expanded && this.metrics) {\n if (metric === 'width' || metric === 'both') {\n style.width = this.metrics.clientWidth + 'px';\n }\n\n if (metric === 'height' || metric === 'both') {\n style.height = this.metrics.clientHeight + 'px';\n }\n }\n\n if (this.props.direction === lib_Constants__WEBPACK_IMPORTED_MODULE_5__.Directions.LEFT) {\n style.margin = '0 0 0 auto';\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n className: components_SliderWrap_SliderWrap_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].slider,\n style: style\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"div\", {\n className: components_SliderWrap_SliderWrap_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].metrics,\n style: this.props.block ? {\n display: 'block'\n } : {}\n }, this.props.children));\n }\n }]);\n\n return SliderWrap;\n}(react__WEBPACK_IMPORTED_MODULE_6__.Component);\n\n\n\n//# sourceURL=webpack:///./components/SliderWrap/SliderWrap.react.js?");
+
+/***/ }),
+
+/***/ "./components/StatusIndicator/StatusIndicator.example.js":
+/*!***************************************************************!*\
+ !*** ./components/StatusIndicator/StatusIndicator.example.js ***!
+ \***************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_StatusIndicator_StatusIndicator_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! components/StatusIndicator/StatusIndicator.react */ \"./components/StatusIndicator/StatusIndicator.react.js\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\nvar component = components_StatusIndicator_StatusIndicator_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nvar demos = [{\n name: 'Positive',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_StatusIndicator_StatusIndicator_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n color: 'green',\n text: 'Succeeded'\n });\n }\n}, {\n name: 'Negative',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_StatusIndicator_StatusIndicator_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n color: 'red',\n text: 'Failed'\n });\n }\n}, {\n name: 'In Progress',\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(components_StatusIndicator_StatusIndicator_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n color: 'blue',\n text: 'Running'\n });\n }\n}];\n\n//# sourceURL=webpack:///./components/StatusIndicator/StatusIndicator.example.js?");
+
+/***/ }),
+
+/***/ "./components/StatusIndicator/StatusIndicator.react.js":
+/*!*************************************************************!*\
+ !*** ./components/StatusIndicator/StatusIndicator.react.js ***!
+ \*************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_StatusIndicator_StatusIndicator_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/StatusIndicator/StatusIndicator.scss */ \"./components/StatusIndicator/StatusIndicator.scss\");\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar StatusIndicator = function StatusIndicator(_ref) {\n var text = _ref.text,\n color = _ref.color;\n color = color || 'blue';\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"span\", {\n className: [components_StatusIndicator_StatusIndicator_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].status, components_StatusIndicator_StatusIndicator_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"][color]].join(' ')\n }, text);\n};\n\nStatusIndicator.propTypes = {\n text: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].string.isRequired,\n color: lib_PropTypes__WEBPACK_IMPORTED_MODULE_0__[\"default\"].oneOf(['blue', 'green', 'red'])\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (StatusIndicator);\n\n//# sourceURL=webpack:///./components/StatusIndicator/StatusIndicator.react.js?");
+
+/***/ }),
+
+/***/ "./components/SuggestionsList/SuggestionsList.react.js":
+/*!*************************************************************!*\
+ !*** ./components/SuggestionsList/SuggestionsList.react.js ***!
+ \*************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Suggestion)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/Popover/Popover.react */ \"./components/Popover/Popover.react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_SuggestionsList_SuggestionsList_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/SuggestionsList/SuggestionsList.scss */ \"./components/SuggestionsList/SuggestionsList.scss\");\n/* harmony import */ var lib_Position__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lib/Position */ \"./lib/Position.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\nvar Suggestion = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Suggestion, _React$Component);\n\n var _super = _createSuper(Suggestion);\n\n function Suggestion() {\n var _this;\n\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Suggestion);\n\n _this = _super.call(this);\n _this.state = {\n activeSuggestion: 0,\n open: false,\n position: null\n };\n _this.popoverRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createRef(null);\n\n _this.handleScroll = function () {\n var newPosition = _this.props.fixed ? lib_Position__WEBPACK_IMPORTED_MODULE_8__[\"default\"].inWindow(_this.node) : lib_Position__WEBPACK_IMPORTED_MODULE_8__[\"default\"].inDocument(_this.node);\n newPosition.y += _this.node.offsetHeight;\n\n if (_this.popoverRef.current) {\n _this.popoverRef.current.setPosition(newPosition);\n }\n };\n\n return _this;\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Suggestion, [{\n key: \"toggle\",\n value: function toggle() {\n this.setPosition();\n this.setState({\n open: !this.state.open\n });\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(position) {\n this.popoverRef.current && this.popoverRef.current.setPosition(position);\n }\n }, {\n key: \"close\",\n value: function close() {\n this.setState({\n open: false\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n position = _this$props.position,\n onExternalClick = _this$props.onExternalClick,\n suggestions = _this$props.suggestions,\n suggestionsStyle = _this$props.suggestionsStyle,\n activeSuggestion = _this$props.activeSuggestion,\n onClick = _this$props.onClick;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(components_Popover_Popover_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n fixed: false,\n position: position,\n ref: this.popoverRef,\n onExternalClick: onExternalClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"ul\", {\n style: suggestionsStyle,\n className: components_SuggestionsList_SuggestionsList_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].suggestions\n }, suggestions.map(function (suggestion, index) {\n var className;\n\n if (index === activeSuggestion) {\n className = components_SuggestionsList_SuggestionsList_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].active;\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"li\", {\n className: className,\n key: suggestion,\n onClick: onClick\n }, suggestion);\n })));\n }\n }]);\n\n return Suggestion;\n}(react__WEBPACK_IMPORTED_MODULE_6__.Component);\n\n\n\n//# sourceURL=webpack:///./components/SuggestionsList/SuggestionsList.react.js?");
+
+/***/ }),
+
+/***/ "./components/TextInput/TextInput.example.js":
+/*!***************************************************!*\
+ !*** ./components/TextInput/TextInput.example.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"component\": () => (/* binding */ component),\n/* harmony export */ \"demos\": () => (/* binding */ demos)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Field/Field.react */ \"./components/Field/Field.react.js\");\n/* harmony import */ var components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/Fieldset/Fieldset.react */ \"./components/Fieldset/Fieldset.react.js\");\n/* harmony import */ var components_Label_Label_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/Label/Label.react */ \"./components/Label/Label.react.js\");\n/* harmony import */ var _TextInput_example_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./TextInput.example.scss */ \"./components/TextInput/TextInput.example.scss\");\n/* harmony import */ var components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! components/TextInput/TextInput.react */ \"./components/TextInput/TextInput.react.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\n\n\n\nvar Wrapper = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Wrapper, _React$Component);\n\n var _super = _createSuper(Wrapper);\n\n function Wrapper() {\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Wrapper);\n\n return _super.apply(this, arguments);\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Wrapper, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", null, this.props.children);\n }\n }]);\n\n return Wrapper;\n}(react__WEBPACK_IMPORTED_MODULE_5__.Component);\n\nvar component = components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"];\nvar demos = [{\n render: function render() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(Wrapper, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Fieldset_Fieldset_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n text: \"Text input\",\n description: \"This one is a single line\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n onChange: function onChange() {}\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n text: \"Text input\",\n description: \"This one is multiline\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n multiline: true,\n onChange: function onChange() {}\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n text: \"Code input\",\n description: \"This one is monospaced\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n monospace: true,\n onChange: function onChange() {}\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n text: \"Disabled input\",\n description: \"This one is disabled\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n placeholder: \"Disabled\",\n disabled: true,\n onChange: function onChange() {}\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Field_Field_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_Label_Label_react__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n text: \"Taller input\",\n description: \"This one is taller\"\n }),\n input: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(\"div\", {\n className: _TextInput_example_scss__WEBPACK_IMPORTED_MODULE_9__[\"default\"].textarea_wrap\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(components_TextInput_TextInput_react__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n height: 200,\n placeholder: \"Some placeholder\",\n multiline: true,\n onChange: function onChange() {}\n }))\n })));\n }\n}];\n\n//# sourceURL=webpack:///./components/TextInput/TextInput.example.js?");
+
+/***/ }),
+
+/***/ "./components/TextInput/TextInput.react.js":
+/*!*************************************************!*\
+ !*** ./components/TextInput/TextInput.react.js ***!
+ \*************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ TextInput)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"../node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lib/PropTypes */ \"./lib/PropTypes.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var components_TextInput_TextInput_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/TextInput/TextInput.scss */ \"./components/TextInput/TextInput.scss\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0,_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0,_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/*\n * Copyright (c) 2016-present, Parse, LLC\n * All rights reserved.\n *\n * This source code is licensed under the license found in the LICENSE file in\n * the root directory of this source tree.\n */\n\n\n\n\nvar TextInput = /*#__PURE__*/function (_React$Component) {\n (0,_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(TextInput, _React$Component);\n\n var _super = _createSuper(TextInput);\n\n function TextInput() {\n (0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, TextInput);\n\n return _super.apply(this, arguments);\n }\n\n (0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(TextInput, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(props) {\n if (props.multiline !== this.props.multiline) {\n var previousInput = this.refs.input; // wait a little while for component to re-render\n\n setTimeout(function () {\n var newInput = previousInput ? this.refs.textarea : this.refs.input;\n newInput.focus();\n newInput.value = '';\n newInput.value = props.value;\n }.bind(this), 1);\n }\n }\n }, {\n key: \"changeValue\",\n value: function changeValue(e) {\n var onChange = this.props.onChange;\n\n if (onChange) {\n onChange(e.nativeEvent.target.value);\n }\n }\n }, {\n key: \"updateValue\",\n value: function updateValue(e) {\n var onBlur = this.props.onBlur;\n\n if (onBlur) {\n onBlur(e.nativeEvent.target.value);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var classes = [components_TextInput_TextInput_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].text_input];\n\n if (this.props.monospace) {\n classes.push(components_TextInput_TextInput_scss__WEBPACK_IMPORTED_MODULE_7__[\"default\"].monospace);\n }\n\n if (this.props.multiline) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"textarea\", {\n ref: \"textarea\",\n id: this.props.id,\n disabled: !!this.props.disabled,\n className: classes.join(' '),\n rows: this.props.rows && this.props.rows > 3 ? this.props.rows : null,\n style: this.props.rows && this.props.rows > 3 ? null : {\n height: this.props.height || 80\n },\n placeholder: this.props.placeholder,\n value: this.props.value,\n onChange: this.changeValue.bind(this),\n onBlur: this.updateValue.bind(this)\n });\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_6__.createElement(\"input\", {\n ref: \"input\",\n id: this.props.id,\n type: this.props.hidden ? 'password' : 'text',\n disabled: !!this.props.disabled,\n className: classes.join(' '),\n style: {\n height: this.props.height || 80\n },\n placeholder: this.props.placeholder,\n value: this.props.value,\n onChange: this.changeValue.bind(this),\n onBlur: this.updateValue.bind(this)\n });\n }\n }]);\n\n return TextInput;\n}(react__WEBPACK_IMPORTED_MODULE_6__.Component);\n\n\nTextInput.propTypes = {\n monospace: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].bool.describe('Determines whether the input is formatted with a monospace font'),\n disabled: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].bool.describe('Determines whether the input is disabled'),\n hidden: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].bool.describe('Determines whether the contents are hidden (password field)'),\n multiline: lib_PropTypes__WEBPACK_IMPORTED_MODULE_5__[\"default\"].bool.describe('Determines whether the input is a multiline input (
\n *\n * Create Event - When a new ParseObject is created and it fulfills the ParseQuery you subscribe,\n * you'll get this event. The object is the ParseObject which is created.\n *\n *
\n * subscription.on('create', (object, response) => {\n *\n * }); \n *\n * Update Event - When an existing ParseObject (original) which fulfills the ParseQuery you subscribe\n * is updated (The ParseObject fulfills the ParseQuery before and after changes),\n * you'll get this event. The object is the ParseObject which is updated.\n * Its content is the latest value of the ParseObject.\n *\n * Parse-Server 3.1.3+ Required for original object parameter\n *\n *
\n * subscription.on('update', (object, original, response) => {\n *\n * }); \n *\n * Enter Event - When an existing ParseObject's (original) old value doesn't fulfill the ParseQuery\n * but its new value fulfills the ParseQuery, you'll get this event. The object is the\n * ParseObject which enters the ParseQuery. Its content is the latest value of the ParseObject.\n *\n * Parse-Server 3.1.3+ Required for original object parameter\n *\n *
\n * subscription.on('enter', (object, original, response) => {\n *\n * }); \n *\n *\n * Update Event - When an existing ParseObject's old value fulfills the ParseQuery but its new value\n * doesn't fulfill the ParseQuery, you'll get this event. The object is the ParseObject\n * which leaves the ParseQuery. Its content is the latest value of the ParseObject.\n *\n *
\n * subscription.on('leave', (object, response) => {\n *\n * }); \n *\n *\n * Delete Event - When an existing ParseObject which fulfills the ParseQuery is deleted, you'll\n * get this event. The object is the ParseObject which is deleted.\n *\n *
\n * subscription.on('delete', (object, response) => {\n *\n * }); \n *\n *\n * Close Event - When the client loses the WebSocket connection to the LiveQuery\n * server and we stop receiving events, you'll get this event.\n *\n *
\n * subscription.on('close', () => {\n *\n * }); \n *\n * @alias Parse.LiveQuerySubscription\n */\n\n\nvar Subscription = /*#__PURE__*/function (_EventEmitter) {\n (0, _inherits2.default)(Subscription, _EventEmitter);\n\n var _super = _createSuper(Subscription);\n /*\n * @param {string} id - subscription id\n * @param {string} query - query to subscribe to\n * @param {string} sessionToken - optional session token\n */\n\n\n function Subscription(id, query, sessionToken) {\n var _this;\n\n (0, _classCallCheck2.default)(this, Subscription);\n _this = _super.call(this);\n _this.id = id;\n _this.query = query;\n _this.sessionToken = sessionToken;\n _this.subscribePromise = (0, _promiseUtils.resolvingPromise)();\n _this.subscribed = false; // adding listener so process does not crash\n // best practice is for developer to register their own listener\n\n _this.on('error', function () {});\n\n return _this;\n }\n /**\n * Close the subscription\n *\n * @returns {Promise}\n */\n\n\n (0, _createClass2.default)(Subscription, [{\n key: \"unsubscribe\",\n value: function ()\n /*: Promise*/\n {\n var _this2 = this;\n\n return _CoreManager.default.getLiveQueryController().getDefaultLiveQueryClient().then(function (liveQueryClient) {\n liveQueryClient.unsubscribe(_this2);\n\n _this2.emit('close');\n });\n }\n }]);\n return Subscription;\n}(_EventEmitter2.default);\n\nvar _default = Subscription;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/LiveQuerySubscription.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/LocalDatastore.js":
+/*!***********************************************************!*\
+ !*** ../node_modules/parse/lib/browser/LocalDatastore.js ***!
+ \***********************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Array$isArray2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\");\n\nvar _getIteratorMethod = __webpack_require__(/*! @babel/runtime-corejs3/core-js/get-iterator-method */ \"../node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js\");\n\nvar _Symbol = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/symbol */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js\");\n\nvar _Array$from2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/from */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js\");\n\nvar _sliceInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/slice */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js\");\n\nvar _find = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js\"));\n\nvar _from = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/from */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js\"));\n\nvar _map = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js\"));\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _keys2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/keys.js\"));\n\nvar _startsWith = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/starts-with */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js\"));\n\nvar _keys3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\"));\n\nvar _includes = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/includes */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js\"));\n\nvar _filter = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js\"));\n\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/regenerator */ \"../node_modules/@babel/runtime-corejs3/regenerator/index.js\"));\n\nvar _concat = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/concat */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js\"));\n\nvar _set = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/set.js\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/toConsumableArray */ \"../node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js\"));\n\nvar _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\"));\n\nvar _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/slicedToArray */ \"../node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/asyncToGenerator */ \"../node_modules/@babel/runtime-corejs3/helpers/asyncToGenerator.js\"));\n\nvar _CoreManager = _interopRequireDefault(__webpack_require__(/*! ./CoreManager */ \"../node_modules/parse/lib/browser/CoreManager.js\"));\n\nvar _ParseQuery = _interopRequireDefault(__webpack_require__(/*! ./ParseQuery */ \"../node_modules/parse/lib/browser/ParseQuery.js\"));\n\nvar _LocalDatastoreUtils = __webpack_require__(/*! ./LocalDatastoreUtils */ \"../node_modules/parse/lib/browser/LocalDatastoreUtils.js\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof _Symbol !== \"undefined\" && _getIteratorMethod(o) || o[\"@@iterator\"];\n\n if (!it) {\n if (_Array$isArray2(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (_e2) {\n didErr = true;\n err = _e2;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n var _context18;\n\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n\n var n = _sliceInstanceProperty(_context18 = Object.prototype.toString.call(o)).call(_context18, 8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return _Array$from2(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n/**\n * Provides a local datastore which can be used to store and retrieve Parse.Object
. \n * To enable this functionality, call Parse.enableLocalDatastore()
.\n *\n * Pin object to add to local datastore\n *\n * await object.pin(); \n * await object.pinWithName('pinName'); \n *\n * Query pinned objects\n *\n * query.fromLocalDatastore(); \n * query.fromPin(); \n * query.fromPinWithName(); \n *\n * const localObjects = await query.find(); \n *\n * @class Parse.LocalDatastore\n * @static\n */\n\n\nvar LocalDatastore = {\n isEnabled: false,\n isSyncing: false,\n fromPinWithName: function (name\n /*: string*/\n )\n /*: Promise>*/\n {\n var controller = _CoreManager.default.getLocalDatastoreController();\n\n return controller.fromPinWithName(name);\n },\n pinWithName: function (name\n /*: string*/\n , value\n /*: any*/\n )\n /*: Promise*/\n {\n var controller = _CoreManager.default.getLocalDatastoreController();\n\n return controller.pinWithName(name, value);\n },\n unPinWithName: function (name\n /*: string*/\n )\n /*: Promise*/\n {\n var controller = _CoreManager.default.getLocalDatastoreController();\n\n return controller.unPinWithName(name);\n },\n _getAllContents: function ()\n /*: Promise*/\n {\n var controller = _CoreManager.default.getLocalDatastoreController();\n\n return controller.getAllContents();\n },\n // Use for testing\n _getRawStorage: function ()\n /*: Promise*/\n {\n var controller = _CoreManager.default.getLocalDatastoreController();\n\n return controller.getRawStorage();\n },\n _clear: function ()\n /*: Promise*/\n {\n var controller = _CoreManager.default.getLocalDatastoreController();\n\n return controller.clear();\n },\n // Pin the object and children recursively\n // Saves the object and children key to Pin Name\n _handlePinAllWithName: function (name\n /*: string*/\n , objects\n /*: Array*/\n )\n /*: Promise*/\n {\n var _this = this;\n\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var _context;\n\n var pinName, toPinPromises, objectKeys, _iterator, _step, parent, children, parentKey, json, objectKey, fromPinPromise, _yield$Promise$all, _yield$Promise$all2, pinned, toPin;\n\n return _regenerator.default.wrap(function (_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n pinName = _this.getPinName(name);\n toPinPromises = [];\n objectKeys = [];\n _iterator = _createForOfIteratorHelper(objects);\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n parent = _step.value;\n children = _this._getChildren(parent);\n parentKey = _this.getKeyForObject(parent);\n json = parent._toFullJSON(undefined, true);\n\n if (parent._localId) {\n json._localId = parent._localId;\n }\n\n children[parentKey] = json;\n\n for (objectKey in children) {\n objectKeys.push(objectKey);\n toPinPromises.push(_this.pinWithName(objectKey, [children[objectKey]]));\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n fromPinPromise = _this.fromPinWithName(pinName);\n _context2.next = 8;\n return _promise.default.all([fromPinPromise, toPinPromises]);\n\n case 8:\n _yield$Promise$all = _context2.sent;\n _yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 1);\n pinned = _yield$Promise$all2[0];\n toPin = (0, _toConsumableArray2.default)(new _set.default((0, _concat.default)(_context = []).call(_context, (0, _toConsumableArray2.default)(pinned || []), objectKeys)));\n return _context2.abrupt(\"return\", _this.pinWithName(pinName, toPin));\n\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee);\n }))();\n },\n // Removes object and children keys from pin name\n // Keeps the object and children pinned\n _handleUnPinAllWithName: function (name\n /*: string*/\n , objects\n /*: Array*/\n ) {\n var _this2 = this;\n\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var localDatastore, pinName, promises, objectKeys, _iterator2, _step2, _objectKeys, _context3, parent, children, parentKey, pinned, _iterator3, _step3, objectKey, hasReference, key, pinnedObjects;\n\n return _regenerator.default.wrap(function (_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return _this2._getAllContents();\n\n case 2:\n localDatastore = _context4.sent;\n pinName = _this2.getPinName(name);\n promises = [];\n objectKeys = [];\n _iterator2 = _createForOfIteratorHelper(objects);\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n parent = _step2.value;\n children = _this2._getChildren(parent);\n parentKey = _this2.getKeyForObject(parent);\n\n (_objectKeys = objectKeys).push.apply(_objectKeys, (0, _concat.default)(_context3 = [parentKey]).call(_context3, (0, _toConsumableArray2.default)((0, _keys3.default)(children))));\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n objectKeys = (0, _toConsumableArray2.default)(new _set.default(objectKeys));\n pinned = localDatastore[pinName] || [];\n pinned = (0, _filter.default)(pinned).call(pinned, function (item) {\n return !(0, _includes.default)(objectKeys).call(objectKeys, item);\n });\n\n if (pinned.length == 0) {\n promises.push(_this2.unPinWithName(pinName));\n delete localDatastore[pinName];\n } else {\n promises.push(_this2.pinWithName(pinName, pinned));\n localDatastore[pinName] = pinned;\n }\n\n _iterator3 = _createForOfIteratorHelper(objectKeys);\n _context4.prev = 13;\n\n _iterator3.s();\n\n case 15:\n if ((_step3 = _iterator3.n()).done) {\n _context4.next = 31;\n break;\n }\n\n objectKey = _step3.value;\n hasReference = false;\n _context4.t0 = (0, _keys2.default)(_regenerator.default).call(_regenerator.default, localDatastore);\n\n case 19:\n if ((_context4.t1 = _context4.t0()).done) {\n _context4.next = 28;\n break;\n }\n\n key = _context4.t1.value;\n\n if (!(key === _LocalDatastoreUtils.DEFAULT_PIN || (0, _startsWith.default)(key).call(key, _LocalDatastoreUtils.PIN_PREFIX))) {\n _context4.next = 26;\n break;\n }\n\n pinnedObjects = localDatastore[key] || [];\n\n if (!(0, _includes.default)(pinnedObjects).call(pinnedObjects, objectKey)) {\n _context4.next = 26;\n break;\n }\n\n hasReference = true;\n return _context4.abrupt(\"break\", 28);\n\n case 26:\n _context4.next = 19;\n break;\n\n case 28:\n if (!hasReference) {\n promises.push(_this2.unPinWithName(objectKey));\n }\n\n case 29:\n _context4.next = 15;\n break;\n\n case 31:\n _context4.next = 36;\n break;\n\n case 33:\n _context4.prev = 33;\n _context4.t2 = _context4[\"catch\"](13);\n\n _iterator3.e(_context4.t2);\n\n case 36:\n _context4.prev = 36;\n\n _iterator3.f();\n\n return _context4.finish(36);\n\n case 39:\n return _context4.abrupt(\"return\", _promise.default.all(promises));\n\n case 40:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee2, null, [[13, 33, 36, 39]]);\n }))();\n },\n // Retrieve all pointer fields from object recursively\n _getChildren: function (object\n /*: ParseObject*/\n ) {\n var encountered = {};\n\n var json = object._toFullJSON(undefined, true);\n\n for (var key in json) {\n if (json[key] && json[key].__type && json[key].__type === 'Object') {\n this._traverse(json[key], encountered);\n }\n }\n\n return encountered;\n },\n _traverse: function (object\n /*: any*/\n , encountered\n /*: any*/\n ) {\n if (!object.objectId) {\n return;\n } else {\n var objectKey = this.getKeyForObject(object);\n\n if (encountered[objectKey]) {\n return;\n }\n\n encountered[objectKey] = object;\n }\n\n for (var key in object) {\n var json = object[key];\n\n if (!object[key]) {\n json = object;\n }\n\n if (json.__type && json.__type === 'Object') {\n this._traverse(json, encountered);\n }\n }\n },\n // Transform keys in pin name to objects\n _serializeObjectsFromPinName: function (name\n /*: string*/\n ) {\n var _this3 = this;\n\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var _context5, _concatInstanceProper, _context6;\n\n var localDatastore, allObjects, key, pinName, pinned, promises, objects;\n return _regenerator.default.wrap(function (_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return _this3._getAllContents();\n\n case 2:\n localDatastore = _context7.sent;\n allObjects = [];\n\n for (key in localDatastore) {\n if ((0, _startsWith.default)(key).call(key, _LocalDatastoreUtils.OBJECT_PREFIX)) {\n allObjects.push(localDatastore[key][0]);\n }\n }\n\n if (name) {\n _context7.next = 7;\n break;\n }\n\n return _context7.abrupt(\"return\", allObjects);\n\n case 7:\n pinName = _this3.getPinName(name);\n pinned = localDatastore[pinName];\n\n if ((0, _isArray.default)(pinned)) {\n _context7.next = 11;\n break;\n }\n\n return _context7.abrupt(\"return\", []);\n\n case 11:\n promises = (0, _map.default)(pinned).call(pinned, function (objectKey) {\n return _this3.fromPinWithName(objectKey);\n });\n _context7.next = 14;\n return _promise.default.all(promises);\n\n case 14:\n objects = _context7.sent;\n objects = (_concatInstanceProper = (0, _concat.default)(_context5 = [])).call.apply(_concatInstanceProper, (0, _concat.default)(_context6 = [_context5]).call(_context6, (0, _toConsumableArray2.default)(objects)));\n return _context7.abrupt(\"return\", (0, _filter.default)(objects).call(objects, function (object) {\n return object != null;\n }));\n\n case 17:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee3);\n }))();\n },\n // Replaces object pointers with pinned pointers\n // The object pointers may contain old data\n // Uses Breadth First Search Algorithm\n _serializeObject: function (objectKey\n /*: string*/\n , localDatastore\n /*: any*/\n ) {\n var _this4 = this;\n\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var LDS, root, queue, meta, uniqueId, nodeId, subTreeRoot, field, value, key, pointer;\n return _regenerator.default.wrap(function (_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n LDS = localDatastore;\n\n if (LDS) {\n _context8.next = 5;\n break;\n }\n\n _context8.next = 4;\n return _this4._getAllContents();\n\n case 4:\n LDS = _context8.sent;\n\n case 5:\n if (!(!LDS[objectKey] || LDS[objectKey].length === 0)) {\n _context8.next = 7;\n break;\n }\n\n return _context8.abrupt(\"return\", null);\n\n case 7:\n root = LDS[objectKey][0];\n queue = [];\n meta = {};\n uniqueId = 0;\n meta[uniqueId] = root;\n queue.push(uniqueId);\n\n while (queue.length !== 0) {\n nodeId = queue.shift();\n subTreeRoot = meta[nodeId];\n\n for (field in subTreeRoot) {\n value = subTreeRoot[field];\n\n if (value.__type && value.__type === 'Object') {\n key = _this4.getKeyForObject(value);\n\n if (LDS[key] && LDS[key].length > 0) {\n pointer = LDS[key][0];\n uniqueId++;\n meta[uniqueId] = pointer;\n subTreeRoot[field] = pointer;\n queue.push(uniqueId);\n }\n }\n }\n }\n\n return _context8.abrupt(\"return\", root);\n\n case 15:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee4);\n }))();\n },\n // Called when an object is save / fetched\n // Update object pin value\n _updateObjectIfPinned: function (object\n /*: ParseObject*/\n )\n /*: Promise*/\n {\n var _this5 = this;\n\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n var objectKey, pinned;\n return _regenerator.default.wrap(function (_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n if (_this5.isEnabled) {\n _context9.next = 2;\n break;\n }\n\n return _context9.abrupt(\"return\");\n\n case 2:\n objectKey = _this5.getKeyForObject(object);\n _context9.next = 5;\n return _this5.fromPinWithName(objectKey);\n\n case 5:\n pinned = _context9.sent;\n\n if (!(!pinned || pinned.length === 0)) {\n _context9.next = 8;\n break;\n }\n\n return _context9.abrupt(\"return\");\n\n case 8:\n return _context9.abrupt(\"return\", _this5.pinWithName(objectKey, [object._toFullJSON()]));\n\n case 9:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee5);\n }))();\n },\n // Called when object is destroyed\n // Unpin object and remove all references from pin names\n // TODO: Destroy children?\n _destroyObjectIfPinned: function (object\n /*: ParseObject*/\n ) {\n var _this6 = this;\n\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var localDatastore, objectKey, pin, promises, key, pinned;\n return _regenerator.default.wrap(function (_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (_this6.isEnabled) {\n _context10.next = 2;\n break;\n }\n\n return _context10.abrupt(\"return\");\n\n case 2:\n _context10.next = 4;\n return _this6._getAllContents();\n\n case 4:\n localDatastore = _context10.sent;\n objectKey = _this6.getKeyForObject(object);\n pin = localDatastore[objectKey];\n\n if (pin) {\n _context10.next = 9;\n break;\n }\n\n return _context10.abrupt(\"return\");\n\n case 9:\n promises = [_this6.unPinWithName(objectKey)];\n delete localDatastore[objectKey];\n\n for (key in localDatastore) {\n if (key === _LocalDatastoreUtils.DEFAULT_PIN || (0, _startsWith.default)(key).call(key, _LocalDatastoreUtils.PIN_PREFIX)) {\n pinned = localDatastore[key] || [];\n\n if ((0, _includes.default)(pinned).call(pinned, objectKey)) {\n pinned = (0, _filter.default)(pinned).call(pinned, function (item) {\n return item !== objectKey;\n });\n\n if (pinned.length == 0) {\n promises.push(_this6.unPinWithName(key));\n delete localDatastore[key];\n } else {\n promises.push(_this6.pinWithName(key, pinned));\n localDatastore[key] = pinned;\n }\n }\n }\n }\n\n return _context10.abrupt(\"return\", _promise.default.all(promises));\n\n case 13:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee6);\n }))();\n },\n // Update pin and references of the unsaved object\n _updateLocalIdForObject: function (localId\n /*: string*/\n , object\n /*: ParseObject*/\n ) {\n var _this7 = this;\n\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {\n var _context11, _context12;\n\n var localKey, objectKey, unsaved, promises, localDatastore, key, pinned;\n return _regenerator.default.wrap(function (_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n if (_this7.isEnabled) {\n _context13.next = 2;\n break;\n }\n\n return _context13.abrupt(\"return\");\n\n case 2:\n localKey = (0, _concat.default)(_context11 = (0, _concat.default)(_context12 = \"\".concat(_LocalDatastoreUtils.OBJECT_PREFIX)).call(_context12, object.className, \"_\")).call(_context11, localId);\n objectKey = _this7.getKeyForObject(object);\n _context13.next = 6;\n return _this7.fromPinWithName(localKey);\n\n case 6:\n unsaved = _context13.sent;\n\n if (!(!unsaved || unsaved.length === 0)) {\n _context13.next = 9;\n break;\n }\n\n return _context13.abrupt(\"return\");\n\n case 9:\n promises = [_this7.unPinWithName(localKey), _this7.pinWithName(objectKey, unsaved)];\n _context13.next = 12;\n return _this7._getAllContents();\n\n case 12:\n localDatastore = _context13.sent;\n\n for (key in localDatastore) {\n if (key === _LocalDatastoreUtils.DEFAULT_PIN || (0, _startsWith.default)(key).call(key, _LocalDatastoreUtils.PIN_PREFIX)) {\n pinned = localDatastore[key] || [];\n\n if ((0, _includes.default)(pinned).call(pinned, localKey)) {\n pinned = (0, _filter.default)(pinned).call(pinned, function (item) {\n return item !== localKey;\n });\n pinned.push(objectKey);\n promises.push(_this7.pinWithName(key, pinned));\n localDatastore[key] = pinned;\n }\n }\n }\n\n return _context13.abrupt(\"return\", _promise.default.all(promises));\n\n case 15:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee7);\n }))();\n },\n\n /**\n * Updates Local Datastore from Server\n *\n * \n * await Parse.LocalDatastore.updateFromServer();\n * \n *\n * @function updateFromServer\n * @name Parse.LocalDatastore.updateFromServer\n * @static\n */\n updateFromServer: function () {\n var _this8 = this;\n\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {\n var _context14;\n\n var localDatastore, keys, key, pointersHash, _i, _keys, _key, _key$split, _key$split2, className, objectId, queryPromises, responses, objects, pinPromises;\n\n return _regenerator.default.wrap(function (_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n if (!(!_this8.checkIfEnabled() || _this8.isSyncing)) {\n _context15.next = 2;\n break;\n }\n\n return _context15.abrupt(\"return\");\n\n case 2:\n _context15.next = 4;\n return _this8._getAllContents();\n\n case 4:\n localDatastore = _context15.sent;\n keys = [];\n\n for (key in localDatastore) {\n if ((0, _startsWith.default)(key).call(key, _LocalDatastoreUtils.OBJECT_PREFIX)) {\n keys.push(key);\n }\n }\n\n if (!(keys.length === 0)) {\n _context15.next = 9;\n break;\n }\n\n return _context15.abrupt(\"return\");\n\n case 9:\n _this8.isSyncing = true;\n pointersHash = {};\n _i = 0, _keys = keys;\n\n case 12:\n if (!(_i < _keys.length)) {\n _context15.next = 23;\n break;\n }\n\n _key = _keys[_i]; // Ignore the OBJECT_PREFIX\n\n _key$split = _key.split('_'), _key$split2 = (0, _slicedToArray2.default)(_key$split, 4), className = _key$split2[2], objectId = _key$split2[3]; // User key is split into [ 'Parse', 'LDS', '', 'User', 'objectId' ]\n\n if (_key.split('_').length === 5 && _key.split('_')[3] === 'User') {\n className = '_User';\n objectId = _key.split('_')[4];\n }\n\n if (!(0, _startsWith.default)(objectId).call(objectId, 'local')) {\n _context15.next = 18;\n break;\n }\n\n return _context15.abrupt(\"continue\", 20);\n\n case 18:\n if (!(className in pointersHash)) {\n pointersHash[className] = new _set.default();\n }\n\n pointersHash[className].add(objectId);\n\n case 20:\n _i++;\n _context15.next = 12;\n break;\n\n case 23:\n queryPromises = (0, _map.default)(_context14 = (0, _keys3.default)(pointersHash)).call(_context14, function (className) {\n var objectIds = (0, _from.default)(pointersHash[className]);\n var query = new _ParseQuery.default(className);\n query.limit(objectIds.length);\n\n if (objectIds.length === 1) {\n query.equalTo('objectId', objectIds[0]);\n } else {\n query.containedIn('objectId', objectIds);\n }\n\n return (0, _find.default)(query).call(query);\n });\n _context15.prev = 24;\n _context15.next = 27;\n return _promise.default.all(queryPromises);\n\n case 27:\n responses = _context15.sent;\n objects = (0, _concat.default)([]).apply([], responses);\n pinPromises = (0, _map.default)(objects).call(objects, function (object) {\n var objectKey = _this8.getKeyForObject(object);\n\n return _this8.pinWithName(objectKey, object._toFullJSON());\n });\n _context15.next = 32;\n return _promise.default.all(pinPromises);\n\n case 32:\n _this8.isSyncing = false;\n _context15.next = 39;\n break;\n\n case 35:\n _context15.prev = 35;\n _context15.t0 = _context15[\"catch\"](24);\n console.error('Error syncing LocalDatastore: ', _context15.t0);\n _this8.isSyncing = false;\n\n case 39:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _callee8, null, [[24, 35]]);\n }))();\n },\n getKeyForObject: function (object\n /*: any*/\n ) {\n var _context16, _context17;\n\n var objectId = object.objectId || object._getId();\n\n return (0, _concat.default)(_context16 = (0, _concat.default)(_context17 = \"\".concat(_LocalDatastoreUtils.OBJECT_PREFIX)).call(_context17, object.className, \"_\")).call(_context16, objectId);\n },\n getPinName: function (pinName\n /*: ?string*/\n ) {\n if (!pinName || pinName === _LocalDatastoreUtils.DEFAULT_PIN) {\n return _LocalDatastoreUtils.DEFAULT_PIN;\n }\n\n return _LocalDatastoreUtils.PIN_PREFIX + pinName;\n },\n checkIfEnabled: function () {\n if (!this.isEnabled) {\n console.error('Parse.enableLocalDatastore() must be called first');\n }\n\n return this.isEnabled;\n }\n};\nmodule.exports = LocalDatastore;\n\n_CoreManager.default.setLocalDatastoreController(__webpack_require__(/*! ./LocalDatastoreController */ \"../node_modules/parse/lib/browser/LocalDatastoreController.js\"));\n\n_CoreManager.default.setLocalDatastore(LocalDatastore);\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/LocalDatastore.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/LocalDatastoreController.js":
+/*!*********************************************************************!*\
+ !*** ../node_modules/parse/lib/browser/LocalDatastoreController.js ***!
+ \*********************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\");\n\nvar _getIteratorMethod = __webpack_require__(/*! @babel/runtime-corejs3/core-js/get-iterator-method */ \"../node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js\");\n\nvar _Symbol = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/symbol */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js\");\n\nvar _Array$from = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/from */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js\");\n\nvar _sliceInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/slice */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js\");\n\nvar _map = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js\"));\n\nvar _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\"));\n\nvar _reduce = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/reduce */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js\"));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/json/stringify */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js\"));\n\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/regenerator */ \"../node_modules/@babel/runtime-corejs3/regenerator/index.js\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/asyncToGenerator */ \"../node_modules/@babel/runtime-corejs3/helpers/asyncToGenerator.js\"));\n\nvar _LocalDatastoreUtils = __webpack_require__(/*! ./LocalDatastoreUtils */ \"../node_modules/parse/lib/browser/LocalDatastoreUtils.js\");\n\nvar _Storage = _interopRequireDefault(__webpack_require__(/*! ./Storage */ \"../node_modules/parse/lib/browser/Storage.js\"));\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof _Symbol !== \"undefined\" && _getIteratorMethod(o) || o[\"@@iterator\"];\n\n if (!it) {\n if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (_e2) {\n didErr = true;\n err = _e2;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n var _context7;\n\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n\n var n = _sliceInstanceProperty(_context7 = Object.prototype.toString.call(o)).call(_context7, 8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return _Array$from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nvar LocalDatastoreController = {\n fromPinWithName: function (name\n /*: string*/\n )\n /*: Array*/\n {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var values, objects;\n return _regenerator.default.wrap(function (_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _Storage.default.getItemAsync(name);\n\n case 2:\n values = _context.sent;\n\n if (values) {\n _context.next = 5;\n break;\n }\n\n return _context.abrupt(\"return\", []);\n\n case 5:\n objects = JSON.parse(values);\n return _context.abrupt(\"return\", objects);\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n pinWithName: function (name\n /*: string*/\n , value\n /*: any*/\n ) {\n var values = (0, _stringify.default)(value);\n return _Storage.default.setItemAsync(name, values);\n },\n unPinWithName: function (name\n /*: string*/\n ) {\n return _Storage.default.removeItemAsync(name);\n },\n getAllContents: function ()\n /*: Object*/\n {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var keys;\n return _regenerator.default.wrap(function (_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _Storage.default.getAllKeysAsync();\n\n case 2:\n keys = _context3.sent;\n return _context3.abrupt(\"return\", (0, _reduce.default)(keys).call(keys, /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(previousPromise, key) {\n var LDS, value;\n return _regenerator.default.wrap(function (_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return previousPromise;\n\n case 2:\n LDS = _context2.sent;\n\n if (!(0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {\n _context2.next = 8;\n break;\n }\n\n _context2.next = 6;\n return _Storage.default.getItemAsync(key);\n\n case 6:\n value = _context2.sent;\n\n try {\n LDS[key] = JSON.parse(value);\n } catch (error) {\n console.error('Error getAllContents: ', error);\n }\n\n case 8:\n return _context2.abrupt(\"return\", LDS);\n\n case 9:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function () {\n return _ref.apply(this, arguments);\n };\n }(), _promise.default.resolve({})));\n\n case 4:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n },\n // Used for testing\n getRawStorage: function ()\n /*: Object*/\n {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n var keys;\n return _regenerator.default.wrap(function (_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return _Storage.default.getAllKeysAsync();\n\n case 2:\n keys = _context5.sent;\n return _context5.abrupt(\"return\", (0, _reduce.default)(keys).call(keys, /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(previousPromise, key) {\n var LDS, value;\n return _regenerator.default.wrap(function (_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return previousPromise;\n\n case 2:\n LDS = _context4.sent;\n _context4.next = 5;\n return _Storage.default.getItemAsync(key);\n\n case 5:\n value = _context4.sent;\n LDS[key] = value;\n return _context4.abrupt(\"return\", LDS);\n\n case 8:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n return function () {\n return _ref2.apply(this, arguments);\n };\n }(), _promise.default.resolve({})));\n\n case 4:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }))();\n },\n clear: function ()\n /*: Promise*/\n {\n var _this = this;\n\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var keys, toRemove, _iterator, _step, key, promises;\n\n return _regenerator.default.wrap(function (_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return _Storage.default.getAllKeysAsync();\n\n case 2:\n keys = _context6.sent;\n toRemove = [];\n _iterator = _createForOfIteratorHelper(keys);\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n key = _step.value;\n\n if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {\n toRemove.push(key);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n promises = (0, _map.default)(toRemove).call(toRemove, _this.unPinWithName);\n return _context6.abrupt(\"return\", _promise.default.all(promises));\n\n case 8:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }))();\n }\n};\nmodule.exports = LocalDatastoreController;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/LocalDatastoreController.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/LocalDatastoreUtils.js":
+/*!****************************************************************!*\
+ !*** ../node_modules/parse/lib/browser/LocalDatastoreUtils.js ***!
+ \****************************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.PIN_PREFIX = exports.OBJECT_PREFIX = exports.DEFAULT_PIN = void 0;\nexports.isLocalDatastoreKey = isLocalDatastoreKey;\n\nvar _startsWith = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/starts-with */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n * @private\n */\n\n\nvar DEFAULT_PIN = '_default';\nexports.DEFAULT_PIN = DEFAULT_PIN;\nvar PIN_PREFIX = 'parsePin_';\nexports.PIN_PREFIX = PIN_PREFIX;\nvar OBJECT_PREFIX = 'Parse_LDS_';\nexports.OBJECT_PREFIX = OBJECT_PREFIX;\n\nfunction isLocalDatastoreKey(key\n/*: string*/\n)\n/*: boolean*/\n{\n return !!(key && (key === DEFAULT_PIN || (0, _startsWith.default)(key).call(key, PIN_PREFIX) || (0, _startsWith.default)(key).call(key, OBJECT_PREFIX)));\n}\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/LocalDatastoreUtils.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ObjectStateMutations.js":
+/*!*****************************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ObjectStateMutations.js ***!
+ \*****************************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\nvar _Object$defineProperties = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-properties */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js\");\n\nvar _Object$getOwnPropertyDescriptors = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js\");\n\nvar _forEachInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js\");\n\nvar _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js\");\n\nvar _filterInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js\");\n\nvar _Object$getOwnPropertySymbols = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js\");\n\nvar _Object$keys = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.commitServerChanges = commitServerChanges;\nexports.defaultState = defaultState;\nexports.estimateAttribute = estimateAttribute;\nexports.estimateAttributes = estimateAttributes;\nexports.mergeFirstPendingState = mergeFirstPendingState;\nexports.popPendingState = popPendingState;\nexports.pushPendingState = pushPendingState;\nexports.setPendingOp = setPendingOp;\nexports.setServerData = setServerData;\n\nvar _stringify = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/json/stringify */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ \"../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\"));\n\nvar _includes = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/includes */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js\"));\n\nvar _encode = _interopRequireDefault(__webpack_require__(/*! ./encode */ \"../node_modules/parse/lib/browser/encode.js\"));\n\nvar _ParseFile = _interopRequireDefault(__webpack_require__(/*! ./ParseFile */ \"../node_modules/parse/lib/browser/ParseFile.js\"));\n\nvar _ParseObject = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n\nvar _ParseRelation = _interopRequireDefault(__webpack_require__(/*! ./ParseRelation */ \"../node_modules/parse/lib/browser/ParseRelation.js\"));\n\nvar _TaskQueue = _interopRequireDefault(__webpack_require__(/*! ./TaskQueue */ \"../node_modules/parse/lib/browser/TaskQueue.js\"));\n\nvar _ParseOp = __webpack_require__(/*! ./ParseOp */ \"../node_modules/parse/lib/browser/ParseOp.js\");\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = _Object$keys(object);\n\n if (_Object$getOwnPropertySymbols) {\n var symbols = _Object$getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) {\n return _Object$getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n var _context;\n\n _forEachInstanceProperty(_context = ownKeys(Object(source), true)).call(_context, function (key) {\n (0, _defineProperty2.default)(target, key, source[key]);\n });\n } else if (_Object$getOwnPropertyDescriptors) {\n _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source));\n } else {\n var _context2;\n\n _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) {\n _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction defaultState()\n/*: State*/\n{\n return {\n serverData: {},\n pendingOps: [{}],\n objectCache: {},\n tasks: new _TaskQueue.default(),\n existed: false\n };\n}\n\nfunction setServerData(serverData\n/*: AttributeMap*/\n, attributes\n/*: AttributeMap*/\n) {\n for (var _attr in attributes) {\n if (typeof attributes[_attr] !== 'undefined') {\n serverData[_attr] = attributes[_attr];\n } else {\n delete serverData[_attr];\n }\n }\n}\n\nfunction setPendingOp(pendingOps\n/*: Array*/\n, attr\n/*: string*/\n, op\n/*: ?Op*/\n) {\n var last = pendingOps.length - 1;\n\n if (op) {\n pendingOps[last][attr] = op;\n } else {\n delete pendingOps[last][attr];\n }\n}\n\nfunction pushPendingState(pendingOps\n/*: Array*/\n) {\n pendingOps.push({});\n}\n\nfunction popPendingState(pendingOps\n/*: Array*/\n)\n/*: OpsMap*/\n{\n var first = pendingOps.shift();\n\n if (!pendingOps.length) {\n pendingOps[0] = {};\n }\n\n return first;\n}\n\nfunction mergeFirstPendingState(pendingOps\n/*: Array*/\n) {\n var first = popPendingState(pendingOps);\n var next = pendingOps[0];\n\n for (var _attr2 in first) {\n if (next[_attr2] && first[_attr2]) {\n var merged = next[_attr2].mergeWith(first[_attr2]);\n\n if (merged) {\n next[_attr2] = merged;\n }\n } else {\n next[_attr2] = first[_attr2];\n }\n }\n}\n\nfunction estimateAttribute(serverData\n/*: AttributeMap*/\n, pendingOps\n/*: Array*/\n, className\n/*: string*/\n, id\n/*: ?string*/\n, attr\n/*: string*/\n)\n/*: mixed*/\n{\n var value = serverData[attr];\n\n for (var i = 0; i < pendingOps.length; i++) {\n if (pendingOps[i][attr]) {\n if (pendingOps[i][attr] instanceof _ParseOp.RelationOp) {\n if (id) {\n value = pendingOps[i][attr].applyTo(value, {\n className: className,\n id: id\n }, attr);\n }\n } else {\n value = pendingOps[i][attr].applyTo(value);\n }\n }\n }\n\n return value;\n}\n\nfunction estimateAttributes(serverData\n/*: AttributeMap*/\n, pendingOps\n/*: Array*/\n, className\n/*: string*/\n, id\n/*: ?string*/\n)\n/*: AttributeMap*/\n{\n var data = {};\n\n for (var attr in serverData) {\n data[attr] = serverData[attr];\n }\n\n for (var i = 0; i < pendingOps.length; i++) {\n for (attr in pendingOps[i]) {\n if (pendingOps[i][attr] instanceof _ParseOp.RelationOp) {\n if (id) {\n data[attr] = pendingOps[i][attr].applyTo(data[attr], {\n className: className,\n id: id\n }, attr);\n }\n } else {\n if ((0, _includes.default)(attr).call(attr, '.')) {\n // convert a.b.c into { a: { b: { c: value } } }\n var fields = attr.split('.');\n var first = fields[0];\n var last = fields[fields.length - 1];\n data[first] = _objectSpread({}, serverData[first]);\n\n var object = _objectSpread({}, data);\n\n for (var _i = 0; _i < fields.length - 1; _i++) {\n var key = fields[_i];\n\n if (!(key in object)) {\n object[key] = {};\n }\n\n object = object[key];\n }\n\n object[last] = pendingOps[i][attr].applyTo(object[last]);\n } else {\n data[attr] = pendingOps[i][attr].applyTo(data[attr]);\n }\n }\n }\n }\n\n return data;\n}\n\nfunction nestedSet(obj, key, value) {\n var path = key.split('.');\n\n for (var i = 0; i < path.length - 1; i++) {\n if (!(path[i] in obj)) obj[path[i]] = {};\n obj = obj[path[i]];\n }\n\n if (typeof value === 'undefined') {\n delete obj[path[path.length - 1]];\n } else {\n obj[path[path.length - 1]] = value;\n }\n}\n\nfunction commitServerChanges(serverData\n/*: AttributeMap*/\n, objectCache\n/*: ObjectCache*/\n, changes\n/*: AttributeMap*/\n) {\n for (var _attr3 in changes) {\n var val = changes[_attr3];\n nestedSet(serverData, _attr3, val);\n\n if (val && (0, _typeof2.default)(val) === 'object' && !(val instanceof _ParseObject.default) && !(val instanceof _ParseFile.default) && !(val instanceof _ParseRelation.default)) {\n var json = (0, _encode.default)(val, false, true);\n objectCache[_attr3] = (0, _stringify.default)(json);\n }\n }\n}\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ObjectStateMutations.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/OfflineQuery.js":
+/*!*********************************************************!*\
+ !*** ../node_modules/parse/lib/browser/OfflineQuery.js ***!
+ \*********************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Array$isArray2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\");\n\nvar _getIteratorMethod = __webpack_require__(/*! @babel/runtime-corejs3/core-js/get-iterator-method */ \"../node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js\");\n\nvar _Symbol = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/symbol */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js\");\n\nvar _Array$from = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/from */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js\");\n\nvar _sliceInstanceProperty2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/slice */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js\");\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\"));\n\nvar _forEach = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js\"));\n\nvar _map = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js\"));\n\nvar _concat = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/concat */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _isInteger = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/number/is-integer */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/number/is-integer.js\"));\n\nvar _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/slicedToArray */ \"../node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js\"));\n\nvar _slice = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/slice */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js\"));\n\nvar _filter = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js\"));\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/index-of */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\"));\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof _Symbol !== \"undefined\" && _getIteratorMethod(o) || o[\"@@iterator\"];\n\n if (!it) {\n if (_Array$isArray2(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (_e2) {\n didErr = true;\n err = _e2;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n var _context6;\n\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n\n var n = _sliceInstanceProperty2(_context6 = Object.prototype.toString.call(o)).call(_context6, 8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return _Array$from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nvar equalObjects = (__webpack_require__(/*! ./equals */ \"../node_modules/parse/lib/browser/equals.js\")[\"default\"]);\n\nvar decode = (__webpack_require__(/*! ./decode */ \"../node_modules/parse/lib/browser/decode.js\")[\"default\"]);\n\nvar ParseError = (__webpack_require__(/*! ./ParseError */ \"../node_modules/parse/lib/browser/ParseError.js\")[\"default\"]);\n\nvar ParsePolygon = (__webpack_require__(/*! ./ParsePolygon */ \"../node_modules/parse/lib/browser/ParsePolygon.js\")[\"default\"]);\n\nvar ParseGeoPoint = (__webpack_require__(/*! ./ParseGeoPoint */ \"../node_modules/parse/lib/browser/ParseGeoPoint.js\")[\"default\"]);\n/**\n * contains -- Determines if an object is contained in a list with special handling for Parse pointers.\n *\n * @param haystack\n * @param needle\n * @private\n * @returns {boolean}\n */\n\n\nfunction contains(haystack, needle) {\n if (needle && needle.__type && (needle.__type === 'Pointer' || needle.__type === 'Object')) {\n for (var i in haystack) {\n var ptr = haystack[i];\n\n if (typeof ptr === 'string' && ptr === needle.objectId) {\n return true;\n }\n\n if (ptr.className === needle.className && ptr.objectId === needle.objectId) {\n return true;\n }\n }\n\n return false;\n }\n\n return (0, _indexOf.default)(haystack).call(haystack, needle) > -1;\n}\n\nfunction transformObject(object) {\n if (object._toFullJSON) {\n return object._toFullJSON();\n }\n\n return object;\n}\n/**\n * matchesQuery -- Determines if an object would be returned by a Parse Query\n * It's a lightweight, where-clause only implementation of a full query engine.\n * Since we find queries that match objects, rather than objects that match\n * queries, we can avoid building a full-blown query tool.\n *\n * @param className\n * @param object\n * @param objects\n * @param query\n * @private\n * @returns {boolean}\n */\n\n\nfunction matchesQuery(className, object, objects, query) {\n if (object.className !== className) {\n return false;\n }\n\n var obj = object;\n var q = query;\n\n if (object.toJSON) {\n obj = object.toJSON();\n }\n\n if (query.toJSON) {\n q = query.toJSON().where;\n }\n\n obj.className = className;\n\n for (var field in q) {\n if (!matchesKeyConstraints(className, obj, objects, field, q[field])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction equalObjectsGeneric(obj, compareTo, eqlFn) {\n if ((0, _isArray.default)(obj)) {\n for (var i = 0; i < obj.length; i++) {\n if (eqlFn(obj[i], compareTo)) {\n return true;\n }\n }\n\n return false;\n }\n\n return eqlFn(obj, compareTo);\n}\n/**\n * @typedef RelativeTimeToDateResult\n * @property {string} status The conversion status, `error` if conversion failed or\n * `success` if conversion succeeded.\n * @property {string} info The error message if conversion failed, or the relative\n * time indication (`past`, `present`, `future`) if conversion succeeded.\n * @property {Date|undefined} result The converted date, or `undefined` if conversion\n * failed.\n */\n\n/**\n * Converts human readable relative date string, for example, 'in 10 days' to a date\n * relative to now.\n *\n * @param {string} text The text to convert.\n * @param {Date} [now=new Date()] The date from which add or subtract. Default is now.\n * @returns {RelativeTimeToDateResult}\n */\n\n\nfunction relativeTimeToDate(text) {\n var now = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date();\n text = text.toLowerCase();\n var parts = text.split(' '); // Filter out whitespace\n\n parts = (0, _filter.default)(parts).call(parts, function (part) {\n return part !== '';\n });\n var future = parts[0] === 'in';\n var past = parts[parts.length - 1] === 'ago';\n\n if (!future && !past && text !== 'now') {\n return {\n status: 'error',\n info: \"Time should either start with 'in' or end with 'ago'\"\n };\n }\n\n if (future && past) {\n return {\n status: 'error',\n info: \"Time cannot have both 'in' and 'ago'\"\n };\n } // strip the 'ago' or 'in'\n\n\n if (future) {\n parts = (0, _slice.default)(parts).call(parts, 1);\n } else {\n // past\n parts = (0, _slice.default)(parts).call(parts, 0, parts.length - 1);\n }\n\n if (parts.length % 2 !== 0 && text !== 'now') {\n return {\n status: 'error',\n info: 'Invalid time string. Dangling unit or number.'\n };\n }\n\n var pairs = [];\n\n while (parts.length) {\n pairs.push([parts.shift(), parts.shift()]);\n }\n\n var seconds = 0;\n\n for (var _i = 0, _pairs = pairs; _i < _pairs.length; _i++) {\n var _pairs$_i = (0, _slicedToArray2.default)(_pairs[_i], 2),\n num = _pairs$_i[0],\n interval = _pairs$_i[1];\n\n var val = Number(num);\n\n if (!(0, _isInteger.default)(val)) {\n return {\n status: 'error',\n info: \"'\".concat(num, \"' is not an integer.\")\n };\n }\n\n switch (interval) {\n case 'yr':\n case 'yrs':\n case 'year':\n case 'years':\n seconds += val * 31536000; // 365 * 24 * 60 * 60\n\n break;\n\n case 'wk':\n case 'wks':\n case 'week':\n case 'weeks':\n seconds += val * 604800; // 7 * 24 * 60 * 60\n\n break;\n\n case 'd':\n case 'day':\n case 'days':\n seconds += val * 86400; // 24 * 60 * 60\n\n break;\n\n case 'hr':\n case 'hrs':\n case 'hour':\n case 'hours':\n seconds += val * 3600; // 60 * 60\n\n break;\n\n case 'min':\n case 'mins':\n case 'minute':\n case 'minutes':\n seconds += val * 60;\n break;\n\n case 'sec':\n case 'secs':\n case 'second':\n case 'seconds':\n seconds += val;\n break;\n\n default:\n return {\n status: 'error',\n info: \"Invalid interval: '\".concat(interval, \"'\")\n };\n }\n }\n\n var milliseconds = seconds * 1000;\n\n if (future) {\n return {\n status: 'success',\n info: 'future',\n result: new Date(now.valueOf() + milliseconds)\n };\n } else if (past) {\n return {\n status: 'success',\n info: 'past',\n result: new Date(now.valueOf() - milliseconds)\n };\n } else {\n return {\n status: 'success',\n info: 'present',\n result: new Date(now.valueOf())\n };\n }\n}\n/**\n * Determines whether an object matches a single key's constraints\n *\n * @param className\n * @param object\n * @param objects\n * @param key\n * @param constraints\n * @private\n * @returns {boolean}\n */\n\n\nfunction matchesKeyConstraints(className, object, objects, key, constraints) {\n if (constraints === null) {\n return false;\n }\n\n if ((0, _indexOf.default)(key).call(key, '.') >= 0) {\n // Key references a subobject\n var keyComponents = key.split('.');\n var subObjectKey = keyComponents[0];\n var keyRemainder = (0, _slice.default)(keyComponents).call(keyComponents, 1).join('.');\n return matchesKeyConstraints(className, object[subObjectKey] || {}, objects, keyRemainder, constraints);\n }\n\n var i;\n\n if (key === '$or') {\n for (i = 0; i < constraints.length; i++) {\n if (matchesQuery(className, object, objects, constraints[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n if (key === '$and') {\n for (i = 0; i < constraints.length; i++) {\n if (!matchesQuery(className, object, objects, constraints[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n if (key === '$nor') {\n for (i = 0; i < constraints.length; i++) {\n if (matchesQuery(className, object, objects, constraints[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n if (key === '$relatedTo') {\n // Bail! We can't handle relational queries locally\n return false;\n }\n\n if (!/^[A-Za-z][0-9A-Za-z_]*$/.test(key)) {\n throw new ParseError(ParseError.INVALID_KEY_NAME, \"Invalid Key: \".concat(key));\n } // Equality (or Array contains) cases\n\n\n if ((0, _typeof2.default)(constraints) !== 'object') {\n if ((0, _isArray.default)(object[key])) {\n var _context;\n\n return (0, _indexOf.default)(_context = object[key]).call(_context, constraints) > -1;\n }\n\n return object[key] === constraints;\n }\n\n var compareTo;\n\n if (constraints.__type) {\n if (constraints.__type === 'Pointer') {\n return equalObjectsGeneric(object[key], constraints, function (obj, ptr) {\n return typeof obj !== 'undefined' && ptr.className === obj.className && ptr.objectId === obj.objectId;\n });\n }\n\n return equalObjectsGeneric(decode(object[key]), decode(constraints), equalObjects);\n } // More complex cases\n\n\n for (var condition in constraints) {\n compareTo = constraints[condition];\n\n if (compareTo.__type) {\n compareTo = decode(compareTo);\n } // is it a $relativeTime? convert to date\n\n\n if (compareTo['$relativeTime']) {\n var parserResult = relativeTimeToDate(compareTo['$relativeTime']);\n\n if (parserResult.status !== 'success') {\n var _context2;\n\n throw new ParseError(ParseError.INVALID_JSON, (0, _concat.default)(_context2 = \"bad $relativeTime (\".concat(key, \") value. \")).call(_context2, parserResult.info));\n }\n\n compareTo = parserResult.result;\n } // Compare Date Object or Date String\n\n\n if (toString.call(compareTo) === '[object Date]' || typeof compareTo === 'string' && new Date(compareTo) !== 'Invalid Date' && !isNaN(new Date(compareTo))) {\n object[key] = new Date(object[key].iso ? object[key].iso : object[key]);\n }\n\n switch (condition) {\n case '$lt':\n if (object[key] >= compareTo) {\n return false;\n }\n\n break;\n\n case '$lte':\n if (object[key] > compareTo) {\n return false;\n }\n\n break;\n\n case '$gt':\n if (object[key] <= compareTo) {\n return false;\n }\n\n break;\n\n case '$gte':\n if (object[key] < compareTo) {\n return false;\n }\n\n break;\n\n case '$ne':\n if (equalObjects(object[key], compareTo)) {\n return false;\n }\n\n break;\n\n case '$in':\n if (!contains(compareTo, object[key])) {\n return false;\n }\n\n break;\n\n case '$nin':\n if (contains(compareTo, object[key])) {\n return false;\n }\n\n break;\n\n case '$all':\n for (i = 0; i < compareTo.length; i++) {\n var _context3;\n\n if ((0, _indexOf.default)(_context3 = object[key]).call(_context3, compareTo[i]) < 0) {\n return false;\n }\n }\n\n break;\n\n case '$exists':\n {\n var propertyExists = typeof object[key] !== 'undefined';\n var existenceIsRequired = constraints['$exists'];\n\n if (typeof constraints['$exists'] !== 'boolean') {\n // The SDK will never submit a non-boolean for $exists, but if someone\n // tries to submit a non-boolean for $exits outside the SDKs, just ignore it.\n break;\n }\n\n if (!propertyExists && existenceIsRequired || propertyExists && !existenceIsRequired) {\n return false;\n }\n\n break;\n }\n\n case '$regex':\n {\n if ((0, _typeof2.default)(compareTo) === 'object') {\n return compareTo.test(object[key]);\n } // JS doesn't support perl-style escaping\n\n\n var expString = '';\n var escapeEnd = -2;\n var escapeStart = (0, _indexOf.default)(compareTo).call(compareTo, '\\\\Q');\n\n while (escapeStart > -1) {\n // Add the unescaped portion\n expString += compareTo.substring(escapeEnd + 2, escapeStart);\n escapeEnd = (0, _indexOf.default)(compareTo).call(compareTo, '\\\\E', escapeStart);\n\n if (escapeEnd > -1) {\n expString += compareTo.substring(escapeStart + 2, escapeEnd).replace(/\\\\\\\\\\\\\\\\E/g, '\\\\E').replace(/\\W/g, '\\\\$&');\n }\n\n escapeStart = (0, _indexOf.default)(compareTo).call(compareTo, '\\\\Q', escapeEnd);\n }\n\n expString += compareTo.substring(Math.max(escapeStart, escapeEnd + 2));\n var modifiers = constraints.$options || '';\n modifiers = modifiers.replace('x', '').replace('s', ''); // Parse Server / Mongo support x and s modifiers but JS RegExp doesn't\n\n var exp = new RegExp(expString, modifiers);\n\n if (!exp.test(object[key])) {\n return false;\n }\n\n break;\n }\n\n case '$nearSphere':\n {\n if (!compareTo || !object[key]) {\n return false;\n }\n\n var distance = compareTo.radiansTo(object[key]);\n var max = constraints.$maxDistance || Infinity;\n return distance <= max;\n }\n\n case '$within':\n {\n if (!compareTo || !object[key]) {\n return false;\n }\n\n var southWest = compareTo.$box[0];\n var northEast = compareTo.$box[1];\n\n if (southWest.latitude > northEast.latitude || southWest.longitude > northEast.longitude) {\n // Invalid box, crosses the date line\n return false;\n }\n\n return object[key].latitude > southWest.latitude && object[key].latitude < northEast.latitude && object[key].longitude > southWest.longitude && object[key].longitude < northEast.longitude;\n }\n\n case '$options':\n // Not a query type, but a way to add options to $regex. Ignore and\n // avoid the default\n break;\n\n case '$maxDistance':\n // Not a query type, but a way to add a cap to $nearSphere. Ignore and\n // avoid the default\n break;\n\n case '$select':\n {\n var subQueryObjects = (0, _filter.default)(objects).call(objects, function (obj, index, arr) {\n return matchesQuery(compareTo.query.className, obj, arr, compareTo.query.where);\n });\n\n for (var _i2 = 0; _i2 < subQueryObjects.length; _i2 += 1) {\n var subObject = transformObject(subQueryObjects[_i2]);\n return equalObjects(object[key], subObject[compareTo.key]);\n }\n\n return false;\n }\n\n case '$dontSelect':\n {\n var _subQueryObjects = (0, _filter.default)(objects).call(objects, function (obj, index, arr) {\n return matchesQuery(compareTo.query.className, obj, arr, compareTo.query.where);\n });\n\n for (var _i3 = 0; _i3 < _subQueryObjects.length; _i3 += 1) {\n var _subObject = transformObject(_subQueryObjects[_i3]);\n\n return !equalObjects(object[key], _subObject[compareTo.key]);\n }\n\n return false;\n }\n\n case '$inQuery':\n {\n var _subQueryObjects2 = (0, _filter.default)(objects).call(objects, function (obj, index, arr) {\n return matchesQuery(compareTo.className, obj, arr, compareTo.where);\n });\n\n for (var _i4 = 0; _i4 < _subQueryObjects2.length; _i4 += 1) {\n var _subObject2 = transformObject(_subQueryObjects2[_i4]);\n\n if (object[key].className === _subObject2.className && object[key].objectId === _subObject2.objectId) {\n return true;\n }\n }\n\n return false;\n }\n\n case '$notInQuery':\n {\n var _subQueryObjects3 = (0, _filter.default)(objects).call(objects, function (obj, index, arr) {\n return matchesQuery(compareTo.className, obj, arr, compareTo.where);\n });\n\n for (var _i5 = 0; _i5 < _subQueryObjects3.length; _i5 += 1) {\n var _subObject3 = transformObject(_subQueryObjects3[_i5]);\n\n if (object[key].className === _subObject3.className && object[key].objectId === _subObject3.objectId) {\n return false;\n }\n }\n\n return true;\n }\n\n case '$containedBy':\n {\n var _iterator = _createForOfIteratorHelper(object[key]),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n\n if (!contains(compareTo, value)) {\n return false;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return true;\n }\n\n case '$geoWithin':\n {\n var _context4;\n\n var points = (0, _map.default)(_context4 = compareTo.$polygon).call(_context4, function (geoPoint) {\n return [geoPoint.latitude, geoPoint.longitude];\n });\n var polygon = new ParsePolygon(points);\n return polygon.containsPoint(object[key]);\n }\n\n case '$geoIntersects':\n {\n var _polygon = new ParsePolygon(object[key].coordinates);\n\n var point = new ParseGeoPoint(compareTo.$point);\n return _polygon.containsPoint(point);\n }\n\n default:\n return false;\n }\n }\n\n return true;\n}\n\nfunction validateQuery(query\n/*: any*/\n) {\n var _context5;\n\n var q = query;\n\n if (query.toJSON) {\n q = query.toJSON().where;\n }\n\n var specialQuerykeys = ['$and', '$or', '$nor', '_rperm', '_wperm', '_perishable_token', '_email_verify_token', '_email_verify_token_expires_at', '_account_lockout_expires_at', '_failed_login_count'];\n (0, _forEach.default)(_context5 = (0, _keys.default)(q)).call(_context5, function (key) {\n if (q && q[key] && q[key].$regex) {\n if (typeof q[key].$options === 'string') {\n if (!q[key].$options.match(/^[imxs]+$/)) {\n throw new ParseError(ParseError.INVALID_QUERY, \"Bad $options value for query: \".concat(q[key].$options));\n }\n }\n }\n\n if ((0, _indexOf.default)(specialQuerykeys).call(specialQuerykeys, key) < 0 && !key.match(/^[a-zA-Z][a-zA-Z0-9_\\.]*$/)) {\n throw new ParseError(ParseError.INVALID_KEY_NAME, \"Invalid key name: \".concat(key));\n }\n });\n}\n\nvar OfflineQuery = {\n matchesQuery: matchesQuery,\n validateQuery: validateQuery\n};\nmodule.exports = OfflineQuery;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/OfflineQuery.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/Parse.js":
+/*!**************************************************!*\
+ !*** ../node_modules/parse/lib/browser/Parse.js ***!
+ \**************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\nvar _typeof = __webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\");\n\nvar _WeakMap = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/weak-map */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/weak-map.js\");\n\nvar _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\"));\n\nvar _decode = _interopRequireDefault(__webpack_require__(/*! ./decode */ \"../node_modules/parse/lib/browser/decode.js\"));\n\nvar _encode = _interopRequireDefault(__webpack_require__(/*! ./encode */ \"../node_modules/parse/lib/browser/encode.js\"));\n\nvar _CoreManager = _interopRequireDefault(__webpack_require__(/*! ./CoreManager */ \"../node_modules/parse/lib/browser/CoreManager.js\"));\n\nvar _CryptoController = _interopRequireDefault(__webpack_require__(/*! ./CryptoController */ \"../node_modules/parse/lib/browser/CryptoController.js\"));\n\nvar _EventuallyQueue = _interopRequireDefault(__webpack_require__(/*! ./EventuallyQueue */ \"../node_modules/parse/lib/browser/EventuallyQueue.js\"));\n\nvar _InstallationController = _interopRequireDefault(__webpack_require__(/*! ./InstallationController */ \"../node_modules/parse/lib/browser/InstallationController.js\"));\n\nvar ParseOp = _interopRequireWildcard(__webpack_require__(/*! ./ParseOp */ \"../node_modules/parse/lib/browser/ParseOp.js\"));\n\nvar _RESTController = _interopRequireDefault(__webpack_require__(/*! ./RESTController */ \"../node_modules/parse/lib/browser/RESTController.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof _WeakMap !== \"function\") return null;\n var cacheBabelInterop = new _WeakMap();\n var cacheNodeInterop = new _WeakMap();\n return (_getRequireWildcardCache = function (nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = _Object$defineProperty && _Object$getOwnPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n _Object$defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj.default = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Contains all Parse API classes and functions.\n *\n * @static\n * @global\n * @class\n * @hideconstructor\n */\n\n\nvar Parse = {\n /**\n * Call this method first to set up your authentication tokens for Parse.\n *\n * @param {string} applicationId Your Parse Application ID.\n * @param {string} [javaScriptKey] Your Parse JavaScript Key (Not needed for parse-server)\n * @param {string} [masterKey] Your Parse Master Key. (Node.js only!)\n * @static\n */\n initialize: function (applicationId\n /*: string*/\n , javaScriptKey\n /*: string*/\n ) {\n if ( true && _CoreManager.default.get('IS_NODE') && !({\"version\":\"4.0.0\"}).SERVER_RENDERING) {\n /* eslint-disable no-console */\n console.log(\"It looks like you're using the browser version of the SDK in a \" + \"node.js environment. You should require('parse/node') instead.\");\n /* eslint-enable no-console */\n }\n\n Parse._initialize(applicationId, javaScriptKey);\n },\n _initialize: function (applicationId\n /*: string*/\n , javaScriptKey\n /*: string*/\n , masterKey\n /*: string*/\n ) {\n _CoreManager.default.set('APPLICATION_ID', applicationId);\n\n _CoreManager.default.set('JAVASCRIPT_KEY', javaScriptKey);\n\n _CoreManager.default.set('MASTER_KEY', masterKey);\n\n _CoreManager.default.set('USE_MASTER_KEY', false);\n },\n\n /**\n * Call this method to set your AsyncStorage engine\n * Starting Parse@1.11, the ParseSDK do not provide a React AsyncStorage as the ReactNative module\n * is not provided at a stable path and changes over versions.\n *\n * @param {AsyncStorage} storage a react native async storage.\n * @static\n */\n setAsyncStorage: function (storage\n /*: any*/\n ) {\n _CoreManager.default.setAsyncStorage(storage);\n },\n\n /**\n * Call this method to set your LocalDatastoreStorage engine\n * If using React-Native use {@link Parse.setAsyncStorage Parse.setAsyncStorage()}\n *\n * @param {LocalDatastoreController} controller a data storage.\n * @static\n */\n setLocalDatastoreController: function (controller\n /*: any*/\n ) {\n _CoreManager.default.setLocalDatastoreController(controller);\n },\n\n /**\n * Returns information regarding the current server's health\n *\n * @returns {Promise}\n * @static\n */\n getServerHealth: function () {\n return _CoreManager.default.getRESTController().request('GET', 'health');\n },\n\n /**\n * @member {string} Parse.applicationId\n * @static\n */\n set applicationId(value) {\n _CoreManager.default.set('APPLICATION_ID', value);\n },\n\n get applicationId() {\n return _CoreManager.default.get('APPLICATION_ID');\n },\n\n /**\n * @member {string} Parse.javaScriptKey\n * @static\n */\n set javaScriptKey(value) {\n _CoreManager.default.set('JAVASCRIPT_KEY', value);\n },\n\n get javaScriptKey() {\n return _CoreManager.default.get('JAVASCRIPT_KEY');\n },\n\n /**\n * @member {string} Parse.masterKey\n * @static\n */\n set masterKey(value) {\n _CoreManager.default.set('MASTER_KEY', value);\n },\n\n get masterKey() {\n return _CoreManager.default.get('MASTER_KEY');\n },\n\n /**\n * @member {string} Parse.serverURL\n * @static\n */\n set serverURL(value) {\n _CoreManager.default.set('SERVER_URL', value);\n },\n\n get serverURL() {\n return _CoreManager.default.get('SERVER_URL');\n },\n\n /**\n * @member {string} Parse.serverAuthToken\n * @static\n */\n set serverAuthToken(value) {\n _CoreManager.default.set('SERVER_AUTH_TOKEN', value);\n },\n\n get serverAuthToken() {\n return _CoreManager.default.get('SERVER_AUTH_TOKEN');\n },\n\n /**\n * @member {string} Parse.serverAuthType\n * @static\n */\n set serverAuthType(value) {\n _CoreManager.default.set('SERVER_AUTH_TYPE', value);\n },\n\n get serverAuthType() {\n return _CoreManager.default.get('SERVER_AUTH_TYPE');\n },\n\n /**\n * @member {string} Parse.liveQueryServerURL\n * @static\n */\n set liveQueryServerURL(value) {\n _CoreManager.default.set('LIVEQUERY_SERVER_URL', value);\n },\n\n get liveQueryServerURL() {\n return _CoreManager.default.get('LIVEQUERY_SERVER_URL');\n },\n\n /**\n * @member {string} Parse.encryptedUser\n * @static\n */\n set encryptedUser(value) {\n _CoreManager.default.set('ENCRYPTED_USER', value);\n },\n\n get encryptedUser() {\n return _CoreManager.default.get('ENCRYPTED_USER');\n },\n\n /**\n * @member {string} Parse.secret\n * @static\n */\n set secret(value) {\n _CoreManager.default.set('ENCRYPTED_KEY', value);\n },\n\n get secret() {\n return _CoreManager.default.get('ENCRYPTED_KEY');\n },\n\n /**\n * @member {boolean} Parse.idempotency\n * @static\n */\n set idempotency(value) {\n _CoreManager.default.set('IDEMPOTENCY', value);\n },\n\n get idempotency() {\n return _CoreManager.default.get('IDEMPOTENCY');\n },\n\n /**\n * @member {boolean} Parse.allowCustomObjectId\n * @static\n */\n set allowCustomObjectId(value) {\n _CoreManager.default.set('ALLOW_CUSTOM_OBJECT_ID', value);\n },\n\n get allowCustomObjectId() {\n return _CoreManager.default.get('ALLOW_CUSTOM_OBJECT_ID');\n }\n\n};\nParse.ACL = (__webpack_require__(/*! ./ParseACL */ \"../node_modules/parse/lib/browser/ParseACL.js\")[\"default\"]);\nParse.Analytics = __webpack_require__(/*! ./Analytics */ \"../node_modules/parse/lib/browser/Analytics.js\");\nParse.AnonymousUtils = (__webpack_require__(/*! ./AnonymousUtils */ \"../node_modules/parse/lib/browser/AnonymousUtils.js\")[\"default\"]);\nParse.Cloud = __webpack_require__(/*! ./Cloud */ \"../node_modules/parse/lib/browser/Cloud.js\");\nParse.CLP = (__webpack_require__(/*! ./ParseCLP */ \"../node_modules/parse/lib/browser/ParseCLP.js\")[\"default\"]);\nParse.CoreManager = __webpack_require__(/*! ./CoreManager */ \"../node_modules/parse/lib/browser/CoreManager.js\");\nParse.Config = (__webpack_require__(/*! ./ParseConfig */ \"../node_modules/parse/lib/browser/ParseConfig.js\")[\"default\"]);\nParse.Error = (__webpack_require__(/*! ./ParseError */ \"../node_modules/parse/lib/browser/ParseError.js\")[\"default\"]);\nParse.EventuallyQueue = _EventuallyQueue.default;\nParse.FacebookUtils = (__webpack_require__(/*! ./FacebookUtils */ \"../node_modules/parse/lib/browser/FacebookUtils.js\")[\"default\"]);\nParse.File = (__webpack_require__(/*! ./ParseFile */ \"../node_modules/parse/lib/browser/ParseFile.js\")[\"default\"]);\nParse.GeoPoint = (__webpack_require__(/*! ./ParseGeoPoint */ \"../node_modules/parse/lib/browser/ParseGeoPoint.js\")[\"default\"]);\nParse.Polygon = (__webpack_require__(/*! ./ParsePolygon */ \"../node_modules/parse/lib/browser/ParsePolygon.js\")[\"default\"]);\nParse.Installation = (__webpack_require__(/*! ./ParseInstallation */ \"../node_modules/parse/lib/browser/ParseInstallation.js\")[\"default\"]);\nParse.LocalDatastore = __webpack_require__(/*! ./LocalDatastore */ \"../node_modules/parse/lib/browser/LocalDatastore.js\");\nParse.Object = (__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\")[\"default\"]);\nParse.Op = {\n Set: ParseOp.SetOp,\n Unset: ParseOp.UnsetOp,\n Increment: ParseOp.IncrementOp,\n Add: ParseOp.AddOp,\n Remove: ParseOp.RemoveOp,\n AddUnique: ParseOp.AddUniqueOp,\n Relation: ParseOp.RelationOp\n};\nParse.Push = __webpack_require__(/*! ./Push */ \"../node_modules/parse/lib/browser/Push.js\");\nParse.Query = (__webpack_require__(/*! ./ParseQuery */ \"../node_modules/parse/lib/browser/ParseQuery.js\")[\"default\"]);\nParse.Relation = (__webpack_require__(/*! ./ParseRelation */ \"../node_modules/parse/lib/browser/ParseRelation.js\")[\"default\"]);\nParse.Role = (__webpack_require__(/*! ./ParseRole */ \"../node_modules/parse/lib/browser/ParseRole.js\")[\"default\"]);\nParse.Schema = (__webpack_require__(/*! ./ParseSchema */ \"../node_modules/parse/lib/browser/ParseSchema.js\")[\"default\"]);\nParse.Session = (__webpack_require__(/*! ./ParseSession */ \"../node_modules/parse/lib/browser/ParseSession.js\")[\"default\"]);\nParse.Storage = __webpack_require__(/*! ./Storage */ \"../node_modules/parse/lib/browser/Storage.js\");\nParse.User = (__webpack_require__(/*! ./ParseUser */ \"../node_modules/parse/lib/browser/ParseUser.js\")[\"default\"]);\nParse.LiveQuery = (__webpack_require__(/*! ./ParseLiveQuery */ \"../node_modules/parse/lib/browser/ParseLiveQuery.js\")[\"default\"]);\nParse.LiveQueryClient = (__webpack_require__(/*! ./LiveQueryClient */ \"../node_modules/parse/lib/browser/LiveQueryClient.js\")[\"default\"]);\nParse.IndexedDB = __webpack_require__(/*! ./IndexedDBStorageController */ \"../node_modules/parse/lib/browser/IndexedDBStorageController.js\");\n\nParse._request = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _CoreManager.default.getRESTController().request.apply(null, args);\n};\n\nParse._ajax = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _CoreManager.default.getRESTController().ajax.apply(null, args);\n}; // We attempt to match the signatures of the legacy versions of these methods\n\n\nParse._decode = function (_, value) {\n return (0, _decode.default)(value);\n};\n\nParse._encode = function (value, _, disallowObjects) {\n return (0, _encode.default)(value, disallowObjects);\n};\n\nParse._getInstallationId = function () {\n return _CoreManager.default.getInstallationController().currentInstallationId();\n};\n/**\n * Enable pinning in your application.\n * This must be called after `Parse.initialize` in your application.\n *\n * @param [polling] Allow pinging the server /health endpoint. Default true\n * @param [ms] Milliseconds to ping the server. Default 2000ms\n * @static\n */\n\n\nParse.enableLocalDatastore = function () {\n var polling = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var ms\n /*: number*/\n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2000;\n\n if (!Parse.applicationId) {\n console.log(\"'enableLocalDataStore' must be called after 'initialize'\");\n return;\n }\n\n if (!Parse.LocalDatastore.isEnabled) {\n Parse.LocalDatastore.isEnabled = true;\n\n if (polling) {\n _EventuallyQueue.default.poll(ms);\n }\n }\n};\n/**\n * Flag that indicates whether Local Datastore is enabled.\n *\n * @static\n * @returns {boolean}\n */\n\n\nParse.isLocalDatastoreEnabled = function () {\n return Parse.LocalDatastore.isEnabled;\n};\n/**\n * Gets all contents from Local Datastore\n *\n * \n * await Parse.dumpLocalDatastore();\n * \n *\n * @static\n * @returns {object}\n */\n\n\nParse.dumpLocalDatastore = function () {\n if (!Parse.LocalDatastore.isEnabled) {\n console.log('Parse.enableLocalDatastore() must be called first'); // eslint-disable-line no-console\n\n return _promise.default.resolve({});\n } else {\n return Parse.LocalDatastore._getAllContents();\n }\n};\n/**\n * Enable the current user encryption.\n * This must be called before login any user.\n *\n * @static\n */\n\n\nParse.enableEncryptedUser = function () {\n Parse.encryptedUser = true;\n};\n/**\n * Flag that indicates whether Encrypted User is enabled.\n *\n * @static\n * @returns {boolean}\n */\n\n\nParse.isEncryptedUserEnabled = function () {\n return Parse.encryptedUser;\n};\n\n_CoreManager.default.setCryptoController(_CryptoController.default);\n\n_CoreManager.default.setInstallationController(_InstallationController.default);\n\n_CoreManager.default.setRESTController(_RESTController.default);\n\n// For legacy requires, of the form `var Parse = require('parse').Parse`\nParse.Parse = Parse;\nmodule.exports = Parse;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/Parse.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseACL.js":
+/*!*****************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseACL.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ \"../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\"));\n\nvar _ParseRole = _interopRequireDefault(__webpack_require__(/*! ./ParseRole */ \"../node_modules/parse/lib/browser/ParseRole.js\"));\n\nvar _ParseUser = _interopRequireDefault(__webpack_require__(/*! ./ParseUser */ \"../node_modules/parse/lib/browser/ParseUser.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n\nvar PUBLIC_KEY = '*';\n/**\n * Creates a new ACL.\n * If no argument is given, the ACL has no permissions for anyone.\n * If the argument is a Parse.User, the ACL will have read and write\n * permission for only that user.\n * If the argument is any other JSON object, that object will be interpretted\n * as a serialized ACL created with toJSON().\n *\n * An ACL, or Access Control List can be added to any\n * Parse.Object
to restrict access to only a subset of users\n * of your application.
\n *\n * @alias Parse.ACL\n */\n\nvar ParseACL = /*#__PURE__*/function () {\n /**\n * @param {(Parse.User | object)} arg1 The user to initialize the ACL for\n */\n function ParseACL(arg1\n /*: ParseUser | ByIdMap*/\n ) {\n (0, _classCallCheck2.default)(this, ParseACL);\n (0, _defineProperty2.default)(this, \"permissionsById\", void 0);\n this.permissionsById = {};\n\n if (arg1 && (0, _typeof2.default)(arg1) === 'object') {\n if (arg1 instanceof _ParseUser.default) {\n this.setReadAccess(arg1, true);\n this.setWriteAccess(arg1, true);\n } else {\n for (var _userId in arg1) {\n var accessList = arg1[_userId];\n this.permissionsById[_userId] = {};\n\n for (var _permission in accessList) {\n var allowed = accessList[_permission];\n\n if (_permission !== 'read' && _permission !== 'write') {\n throw new TypeError('Tried to create an ACL with an invalid permission type.');\n }\n\n if (typeof allowed !== 'boolean') {\n throw new TypeError('Tried to create an ACL with an invalid permission value.');\n }\n\n this.permissionsById[_userId][_permission] = allowed;\n }\n }\n }\n } else if (typeof arg1 === 'function') {\n throw new TypeError('ParseACL constructed with a function. Did you forget ()?');\n }\n }\n /**\n * Returns a JSON-encoded version of the ACL.\n *\n * @returns {object}\n */\n\n\n (0, _createClass2.default)(ParseACL, [{\n key: \"toJSON\",\n value: function ()\n /*: ByIdMap*/\n {\n var permissions = {};\n\n for (var p in this.permissionsById) {\n permissions[p] = this.permissionsById[p];\n }\n\n return permissions;\n }\n /**\n * Returns whether this ACL is equal to another object\n *\n * @param {ParseACL} other The other object's ACL to compare to\n * @returns {boolean}\n */\n\n }, {\n key: \"equals\",\n value: function (other\n /*: ParseACL*/\n )\n /*: boolean*/\n {\n if (!(other instanceof ParseACL)) {\n return false;\n }\n\n var users = (0, _keys.default)(this.permissionsById);\n var otherUsers = (0, _keys.default)(other.permissionsById);\n\n if (users.length !== otherUsers.length) {\n return false;\n }\n\n for (var u in this.permissionsById) {\n if (!other.permissionsById[u]) {\n return false;\n }\n\n if (this.permissionsById[u].read !== other.permissionsById[u].read) {\n return false;\n }\n\n if (this.permissionsById[u].write !== other.permissionsById[u].write) {\n return false;\n }\n }\n\n return true;\n }\n }, {\n key: \"_setAccess\",\n value: function (accessType\n /*: string*/\n , userId\n /*: ParseUser | ParseRole | string*/\n , allowed\n /*: boolean*/\n ) {\n if (userId instanceof _ParseUser.default) {\n userId = userId.id;\n } else if (userId instanceof _ParseRole.default) {\n var name = userId.getName();\n\n if (!name) {\n throw new TypeError('Role must have a name');\n }\n\n userId = 'role:' + name;\n }\n\n if (typeof userId !== 'string') {\n throw new TypeError('userId must be a string.');\n }\n\n if (typeof allowed !== 'boolean') {\n throw new TypeError('allowed must be either true or false.');\n }\n\n var permissions = this.permissionsById[userId];\n\n if (!permissions) {\n if (!allowed) {\n // The user already doesn't have this permission, so no action is needed\n return;\n } else {\n permissions = {};\n this.permissionsById[userId] = permissions;\n }\n }\n\n if (allowed) {\n this.permissionsById[userId][accessType] = true;\n } else {\n delete permissions[accessType];\n\n if ((0, _keys.default)(permissions).length === 0) {\n delete this.permissionsById[userId];\n }\n }\n }\n }, {\n key: \"_getAccess\",\n value: function (accessType\n /*: string*/\n , userId\n /*: ParseUser | ParseRole | string*/\n )\n /*: boolean*/\n {\n if (userId instanceof _ParseUser.default) {\n userId = userId.id;\n\n if (!userId) {\n throw new Error('Cannot get access for a ParseUser without an ID');\n }\n } else if (userId instanceof _ParseRole.default) {\n var name = userId.getName();\n\n if (!name) {\n throw new TypeError('Role must have a name');\n }\n\n userId = 'role:' + name;\n }\n\n var permissions = this.permissionsById[userId];\n\n if (!permissions) {\n return false;\n }\n\n return !!permissions[accessType];\n }\n /**\n * Sets whether the given user is allowed to read this object.\n *\n * @param userId An instance of Parse.User or its objectId.\n * @param {boolean} allowed Whether that user should have read access.\n */\n\n }, {\n key: \"setReadAccess\",\n value: function (userId\n /*: ParseUser | ParseRole | string*/\n , allowed\n /*: boolean*/\n ) {\n this._setAccess('read', userId, allowed);\n }\n /**\n * Get whether the given user id is *explicitly* allowed to read this object.\n * Even if this returns false, the user may still be able to access it if\n * getPublicReadAccess returns true or a role that the user belongs to has\n * write access.\n *\n * @param userId An instance of Parse.User or its objectId, or a Parse.Role.\n * @returns {boolean}\n */\n\n }, {\n key: \"getReadAccess\",\n value: function (userId\n /*: ParseUser | ParseRole | string*/\n )\n /*: boolean*/\n {\n return this._getAccess('read', userId);\n }\n /**\n * Sets whether the given user id is allowed to write this object.\n *\n * @param userId An instance of Parse.User or its objectId, or a Parse.Role..\n * @param {boolean} allowed Whether that user should have write access.\n */\n\n }, {\n key: \"setWriteAccess\",\n value: function (userId\n /*: ParseUser | ParseRole | string*/\n , allowed\n /*: boolean*/\n ) {\n this._setAccess('write', userId, allowed);\n }\n /**\n * Gets whether the given user id is *explicitly* allowed to write this object.\n * Even if this returns false, the user may still be able to write it if\n * getPublicWriteAccess returns true or a role that the user belongs to has\n * write access.\n *\n * @param userId An instance of Parse.User or its objectId, or a Parse.Role.\n * @returns {boolean}\n */\n\n }, {\n key: \"getWriteAccess\",\n value: function (userId\n /*: ParseUser | ParseRole | string*/\n )\n /*: boolean*/\n {\n return this._getAccess('write', userId);\n }\n /**\n * Sets whether the public is allowed to read this object.\n *\n * @param {boolean} allowed\n */\n\n }, {\n key: \"setPublicReadAccess\",\n value: function (allowed\n /*: boolean*/\n ) {\n this.setReadAccess(PUBLIC_KEY, allowed);\n }\n /**\n * Gets whether the public is allowed to read this object.\n *\n * @returns {boolean}\n */\n\n }, {\n key: \"getPublicReadAccess\",\n value: function ()\n /*: boolean*/\n {\n return this.getReadAccess(PUBLIC_KEY);\n }\n /**\n * Sets whether the public is allowed to write this object.\n *\n * @param {boolean} allowed\n */\n\n }, {\n key: \"setPublicWriteAccess\",\n value: function (allowed\n /*: boolean*/\n ) {\n this.setWriteAccess(PUBLIC_KEY, allowed);\n }\n /**\n * Gets whether the public is allowed to write this object.\n *\n * @returns {boolean}\n */\n\n }, {\n key: \"getPublicWriteAccess\",\n value: function ()\n /*: boolean*/\n {\n return this.getWriteAccess(PUBLIC_KEY);\n }\n /**\n * Gets whether users belonging to the given role are allowed\n * to read this object. Even if this returns false, the role may\n * still be able to write it if a parent role has read access.\n *\n * @param role The name of the role, or a Parse.Role object.\n * @returns {boolean} true if the role has read access. false otherwise.\n * @throws {TypeError} If role is neither a Parse.Role nor a String.\n */\n\n }, {\n key: \"getRoleReadAccess\",\n value: function (role\n /*: ParseRole | string*/\n )\n /*: boolean*/\n {\n if (role instanceof _ParseRole.default) {\n // Normalize to the String name\n role = role.getName();\n }\n\n if (typeof role !== 'string') {\n throw new TypeError('role must be a ParseRole or a String');\n }\n\n return this.getReadAccess('role:' + role);\n }\n /**\n * Gets whether users belonging to the given role are allowed\n * to write this object. Even if this returns false, the role may\n * still be able to write it if a parent role has write access.\n *\n * @param role The name of the role, or a Parse.Role object.\n * @returns {boolean} true if the role has write access. false otherwise.\n * @throws {TypeError} If role is neither a Parse.Role nor a String.\n */\n\n }, {\n key: \"getRoleWriteAccess\",\n value: function (role\n /*: ParseRole | string*/\n )\n /*: boolean*/\n {\n if (role instanceof _ParseRole.default) {\n // Normalize to the String name\n role = role.getName();\n }\n\n if (typeof role !== 'string') {\n throw new TypeError('role must be a ParseRole or a String');\n }\n\n return this.getWriteAccess('role:' + role);\n }\n /**\n * Sets whether users belonging to the given role are allowed\n * to read this object.\n *\n * @param role The name of the role, or a Parse.Role object.\n * @param {boolean} allowed Whether the given role can read this object.\n * @throws {TypeError} If role is neither a Parse.Role nor a String.\n */\n\n }, {\n key: \"setRoleReadAccess\",\n value: function (role\n /*: ParseRole | string*/\n , allowed\n /*: boolean*/\n ) {\n if (role instanceof _ParseRole.default) {\n // Normalize to the String name\n role = role.getName();\n }\n\n if (typeof role !== 'string') {\n throw new TypeError('role must be a ParseRole or a String');\n }\n\n this.setReadAccess('role:' + role, allowed);\n }\n /**\n * Sets whether users belonging to the given role are allowed\n * to write this object.\n *\n * @param role The name of the role, or a Parse.Role object.\n * @param {boolean} allowed Whether the given role can write this object.\n * @throws {TypeError} If role is neither a Parse.Role nor a String.\n */\n\n }, {\n key: \"setRoleWriteAccess\",\n value: function (role\n /*: ParseRole | string*/\n , allowed\n /*: boolean*/\n ) {\n if (role instanceof _ParseRole.default) {\n // Normalize to the String name\n role = role.getName();\n }\n\n if (typeof role !== 'string') {\n throw new TypeError('role must be a ParseRole or a String');\n }\n\n this.setWriteAccess('role:' + role, allowed);\n }\n }]);\n return ParseACL;\n}();\n\nvar _default = ParseACL;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseACL.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseCLP.js":
+/*!*****************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseCLP.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\nvar _Object$defineProperties = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-properties */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js\");\n\nvar _Object$getOwnPropertyDescriptors = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js\");\n\nvar _forEachInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js\");\n\nvar _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js\");\n\nvar _filterInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js\");\n\nvar _Object$getOwnPropertySymbols = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js\");\n\nvar _Object$keys2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\");\n\nvar _Array$isArray2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\");\n\nvar _getIteratorMethod = __webpack_require__(/*! @babel/runtime-corejs3/core-js/get-iterator-method */ \"../node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js\");\n\nvar _Symbol = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/symbol */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js\");\n\nvar _Array$from = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/from */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js\");\n\nvar _sliceInstanceProperty2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/slice */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\"));\n\nvar _slice = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/slice */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js\"));\n\nvar _assign = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/assign */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js\"));\n\nvar _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/slicedToArray */ \"../node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js\"));\n\nvar _entries = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/entries */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/entries.js\"));\n\nvar _every = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/every */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/every.js\"));\n\nvar _includes = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/includes */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ \"../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\"));\n\nvar _map = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/map */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/map.js\"));\n\nvar _ParseRole = _interopRequireDefault(__webpack_require__(/*! ./ParseRole */ \"../node_modules/parse/lib/browser/ParseRole.js\"));\n\nvar _ParseUser = _interopRequireDefault(__webpack_require__(/*! ./ParseUser */ \"../node_modules/parse/lib/browser/ParseUser.js\"));\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = _Object$keys2(object);\n\n if (_Object$getOwnPropertySymbols) {\n var symbols = _Object$getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) {\n return _Object$getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n var _context3;\n\n _forEachInstanceProperty(_context3 = ownKeys(Object(source), true)).call(_context3, function (key) {\n (0, _defineProperty2.default)(target, key, source[key]);\n });\n } else if (_Object$getOwnPropertyDescriptors) {\n _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source));\n } else {\n var _context4;\n\n _forEachInstanceProperty(_context4 = ownKeys(Object(source))).call(_context4, function (key) {\n _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof _Symbol !== \"undefined\" && _getIteratorMethod(o) || o[\"@@iterator\"];\n\n if (!it) {\n if (_Array$isArray2(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (_e2) {\n didErr = true;\n err = _e2;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n var _context2;\n\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n\n var n = _sliceInstanceProperty2(_context2 = Object.prototype.toString.call(o)).call(_context2, 8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return _Array$from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nvar PUBLIC_KEY = '*';\nvar VALID_PERMISSIONS\n/*: Map*/\n= new _map.default();\nVALID_PERMISSIONS.set('get', {});\nVALID_PERMISSIONS.set('find', {});\nVALID_PERMISSIONS.set('count', {});\nVALID_PERMISSIONS.set('create', {});\nVALID_PERMISSIONS.set('update', {});\nVALID_PERMISSIONS.set('delete', {});\nVALID_PERMISSIONS.set('addField', {});\nvar VALID_PERMISSIONS_EXTENDED\n/*: Map*/\n= new _map.default();\nVALID_PERMISSIONS_EXTENDED.set('protectedFields', {});\n/**\n * Creates a new CLP.\n * If no argument is given, the CLP has no permissions for anyone.\n * If the argument is a Parse.User or Parse.Role, the CLP will have read and write\n * permission for only that user or role.\n * If the argument is any other JSON object, that object will be interpretted\n * as a serialized CLP created with toJSON().\n *\n * A CLP, or Class Level Permissions can be added to any\n * Parse.Schema
to restrict access to only a subset of users\n * of your application.
\n *\n * \n * For get/count/find/create/update/delete/addField using the following functions:\n *\n * Entity is type Parse.User or Parse.Role or string\n * Role is type Parse.Role or Name of Parse.Role\n *\n * getGetRequiresAuthentication()\n * setGetRequiresAuthentication(allowed: boolean)\n * getGetPointerFields()\n * setGetPointerFields(pointerFields: string[])\n * getGetAccess(entity: Entity)\n * setGetAccess(entity: Entity, allowed: boolean)\n * getPublicGetAccess()\n * setPublicGetAccess(allowed: boolean)\n * getRoleGetAccess(role: Role)\n * setRoleGetAccess(role: Role, allowed: boolean)\n * getFindRequiresAuthentication()\n * setFindRequiresAuthentication(allowed: boolean)\n * getFindPointerFields()\n * setFindPointerFields(pointerFields: string[])\n * getFindAccess(entity: Entity)\n * setFindAccess(entity: Entity, allowed: boolean)\n * getPublicFindAccess()\n * setPublicFindAccess(allowed: boolean)\n * getRoleFindAccess(role: Role)\n * setRoleFindAccess(role: Role, allowed: boolean)\n * getCountRequiresAuthentication()\n * setCountRequiresAuthentication(allowed: boolean)\n * getCountPointerFields()\n * setCountPointerFields(pointerFields: string[])\n * getCountAccess(entity: Entity)\n * setCountAccess(entity: Entity, allowed: boolean)\n * getPublicCountAccess()\n * setPublicCountAccess(allowed: boolean)\n * getRoleCountAccess(role: Role)\n * setRoleCountAccess(role: Role, allowed: boolean)\n * getCreateRequiresAuthentication()\n * setCreateRequiresAuthentication(allowed: boolean)\n * getCreatePointerFields()\n * setCreatePointerFields(pointerFields: string[])\n * getCreateAccess(entity: Entity)\n * setCreateAccess(entity: Entity, allowed: boolean)\n * getPublicCreateAccess()\n * setPublicCreateAccess(allowed: Boolean)\n * getRoleCreateAccess(role: Role)\n * setRoleCreateAccess(role: Role, allowed: boolean)\n * getUpdateRequiresAuthentication()\n * setUpdateRequiresAuthentication(allowed: boolean)\n * getUpdatePointerFields()\n * setUpdatePointerFields(pointerFields: string[])\n * getUpdateAccess(entity: Entity)\n * setUpdateAccess(entity: Entity, allowed: boolean)\n * getPublicUpdateAccess()\n * setPublicUpdateAccess(allowed: boolean)\n * getRoleUpdateAccess(role: Role)\n * setRoleUpdateAccess(role: Role, allowed: boolean)\n * getDeleteRequiresAuthentication()\n * setDeleteRequiresAuthentication(allowed: boolean)\n * getDeletePointerFields()\n * setDeletePointerFields(pointerFields: string[])\n * getDeleteAccess(entity: Entity)\n * setDeleteAccess(entity: Entity, allowed: boolean)\n * getPublicDeleteAccess()\n * setPublicDeleteAccess(allowed: boolean)\n * getRoleDeleteAccess(role: Role)\n * setRoleDeleteAccess(role: Role, allowed: boolean)\n * getAddFieldRequiresAuthentication()\n * setAddFieldRequiresAuthentication(allowed: boolean)\n * getAddFieldPointerFields()\n * setAddFieldPointerFields(pointerFields: string[])\n * getAddFieldAccess(entity: Entity)\n * setAddFieldAccess(entity: Entity, allowed: boolean)\n * getPublicAddFieldAccess()\n * setPublicAddFieldAccess(allowed: boolean)\n * getRoleAddFieldAccess(role: Role)\n * setRoleAddFieldAccess(role: Role, allowed: boolean)\n *
\n *\n * @alias Parse.CLP\n */\n\nvar ParseCLP = /*#__PURE__*/function () {\n /**\n * @param {(Parse.User | Parse.Role | object)} userId The user to initialize the CLP for\n */\n function ParseCLP(userId\n /*: ParseUser | ParseRole | PermissionsMap*/\n ) {\n var _this = this;\n\n (0, _classCallCheck2.default)(this, ParseCLP);\n (0, _defineProperty2.default)(this, \"permissionsMap\", void 0);\n this.permissionsMap = {}; // Initialize permissions Map with default permissions\n\n var _iterator = _createForOfIteratorHelper((0, _entries.default)(VALID_PERMISSIONS).call(VALID_PERMISSIONS)),\n _step;\n\n try {\n var _loop = function () {\n var _step$value = (0, _slicedToArray2.default)(_step.value, 2),\n operation = _step$value[0],\n group = _step$value[1];\n\n _this.permissionsMap[operation] = (0, _assign.default)({}, group);\n var action = operation.charAt(0).toUpperCase() + (0, _slice.default)(operation).call(operation, 1);\n\n _this[\"get\".concat(action, \"RequiresAuthentication\")] = function () {\n return this._getAccess(operation, 'requiresAuthentication');\n };\n\n _this[\"set\".concat(action, \"RequiresAuthentication\")] = function (allowed) {\n this._setAccess(operation, 'requiresAuthentication', allowed);\n };\n\n _this[\"get\".concat(action, \"PointerFields\")] = function () {\n return this._getAccess(operation, 'pointerFields', false);\n };\n\n _this[\"set\".concat(action, \"PointerFields\")] = function (pointerFields) {\n this._setArrayAccess(operation, 'pointerFields', pointerFields);\n };\n\n _this[\"get\".concat(action, \"Access\")] = function (entity) {\n return this._getAccess(operation, entity);\n };\n\n _this[\"set\".concat(action, \"Access\")] = function (entity, allowed) {\n this._setAccess(operation, entity, allowed);\n };\n\n _this[\"getPublic\".concat(action, \"Access\")] = function () {\n return this[\"get\".concat(action, \"Access\")](PUBLIC_KEY);\n };\n\n _this[\"setPublic\".concat(action, \"Access\")] = function (allowed) {\n this[\"set\".concat(action, \"Access\")](PUBLIC_KEY, allowed);\n };\n\n _this[\"getRole\".concat(action, \"Access\")] = function (role) {\n return this[\"get\".concat(action, \"Access\")](this._getRoleName(role));\n };\n\n _this[\"setRole\".concat(action, \"Access\")] = function (role, allowed) {\n this[\"set\".concat(action, \"Access\")](this._getRoleName(role), allowed);\n };\n };\n\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop();\n } // Initialize permissions Map with default extended permissions\n\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n var _iterator2 = _createForOfIteratorHelper((0, _entries.default)(VALID_PERMISSIONS_EXTENDED).call(VALID_PERMISSIONS_EXTENDED)),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _step2$value = (0, _slicedToArray2.default)(_step2.value, 2),\n operation = _step2$value[0],\n group = _step2$value[1];\n\n this.permissionsMap[operation] = (0, _assign.default)({}, group);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n if (userId && (0, _typeof2.default)(userId) === 'object') {\n if (userId instanceof _ParseUser.default) {\n this.setReadAccess(userId, true);\n this.setWriteAccess(userId, true);\n } else if (userId instanceof _ParseRole.default) {\n this.setRoleReadAccess(userId, true);\n this.setRoleWriteAccess(userId, true);\n } else {\n for (var _permission in userId) {\n var _context;\n\n var users = userId[_permission];\n var isValidPermission = !!VALID_PERMISSIONS.get(_permission);\n var isValidPermissionExtended = !!VALID_PERMISSIONS_EXTENDED.get(_permission);\n var isValidGroupPermission = (0, _includes.default)(_context = ['readUserFields', 'writeUserFields']).call(_context, _permission);\n\n if (typeof _permission !== 'string' || !(isValidPermission || isValidPermissionExtended || isValidGroupPermission)) {\n throw new TypeError('Tried to create an CLP with an invalid permission type.');\n }\n\n if (isValidGroupPermission) {\n if ((0, _every.default)(users).call(users, function (pointer) {\n return typeof pointer === 'string';\n })) {\n this.permissionsMap[_permission] = users;\n continue;\n } else {\n throw new TypeError('Tried to create an CLP with an invalid permission value.');\n }\n }\n\n for (var user in users) {\n var allowed = users[user];\n\n if (typeof allowed !== 'boolean' && !isValidPermissionExtended && user !== 'pointerFields') {\n throw new TypeError('Tried to create an CLP with an invalid permission value.');\n }\n\n this.permissionsMap[_permission][user] = allowed;\n }\n }\n }\n } else if (typeof userId === 'function') {\n throw new TypeError('ParseCLP constructed with a function. Did you forget ()?');\n }\n }\n /**\n * Returns a JSON-encoded version of the CLP.\n *\n * @returns {object}\n */\n\n\n (0, _createClass2.default)(ParseCLP, [{\n key: \"toJSON\",\n value: function ()\n /*: PermissionsMap*/\n {\n return _objectSpread({}, this.permissionsMap);\n }\n /**\n * Returns whether this CLP is equal to another object\n *\n * @param other The other object to compare to\n * @returns {boolean}\n */\n\n }, {\n key: \"equals\",\n value: function (other\n /*: ParseCLP*/\n )\n /*: boolean*/\n {\n if (!(other instanceof ParseCLP)) {\n return false;\n }\n\n var permissions = (0, _keys.default)(this.permissionsMap);\n var otherPermissions = (0, _keys.default)(other.permissionsMap);\n\n if (permissions.length !== otherPermissions.length) {\n return false;\n }\n\n for (var _permission2 in this.permissionsMap) {\n if (!other.permissionsMap[_permission2]) {\n return false;\n }\n\n var users = (0, _keys.default)(this.permissionsMap[_permission2]);\n var otherUsers = (0, _keys.default)(other.permissionsMap[_permission2]);\n\n if (users.length !== otherUsers.length) {\n return false;\n }\n\n for (var user in this.permissionsMap[_permission2]) {\n if (!other.permissionsMap[_permission2][user]) {\n return false;\n }\n\n if (this.permissionsMap[_permission2][user] !== other.permissionsMap[_permission2][user]) {\n return false;\n }\n }\n }\n\n return true;\n }\n }, {\n key: \"_getRoleName\",\n value: function (role\n /*: ParseRole | string*/\n )\n /*: string*/\n {\n var name = role;\n\n if (role instanceof _ParseRole.default) {\n // Normalize to the String name\n name = role.getName();\n }\n\n if (typeof name !== 'string') {\n throw new TypeError('role must be a Parse.Role or a String');\n }\n\n return \"role:\".concat(name);\n }\n }, {\n key: \"_parseEntity\",\n value: function (entity\n /*: Entity*/\n ) {\n var userId = entity;\n\n if (userId instanceof _ParseUser.default) {\n userId = userId.id;\n\n if (!userId) {\n throw new Error('Cannot get access for a Parse.User without an id.');\n }\n } else if (userId instanceof _ParseRole.default) {\n userId = this._getRoleName(userId);\n }\n\n if (typeof userId !== 'string') {\n throw new TypeError('userId must be a string.');\n }\n\n return userId;\n }\n }, {\n key: \"_setAccess\",\n value: function (permission\n /*: string*/\n , userId\n /*: Entity*/\n , allowed\n /*: boolean*/\n ) {\n userId = this._parseEntity(userId);\n\n if (typeof allowed !== 'boolean') {\n throw new TypeError('allowed must be either true or false.');\n }\n\n var permissions = this.permissionsMap[permission][userId];\n\n if (!permissions) {\n if (!allowed) {\n // The user already doesn't have this permission, so no action is needed\n return;\n } else {\n this.permissionsMap[permission][userId] = {};\n }\n }\n\n if (allowed) {\n this.permissionsMap[permission][userId] = true;\n } else {\n delete this.permissionsMap[permission][userId];\n }\n }\n }, {\n key: \"_getAccess\",\n value: function (permission\n /*: string*/\n , userId\n /*: Entity*/\n )\n /*: boolean | string[]*/\n {\n var returnBoolean = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n userId = this._parseEntity(userId);\n var permissions = this.permissionsMap[permission][userId];\n\n if (returnBoolean) {\n if (!permissions) {\n return false;\n }\n\n return !!this.permissionsMap[permission][userId];\n }\n\n return permissions;\n }\n }, {\n key: \"_setArrayAccess\",\n value: function (permission\n /*: string*/\n , userId\n /*: Entity*/\n , fields\n /*: string*/\n ) {\n userId = this._parseEntity(userId);\n var permissions = this.permissionsMap[permission][userId];\n\n if (!permissions) {\n this.permissionsMap[permission][userId] = [];\n }\n\n if (!fields || (0, _isArray.default)(fields) && fields.length === 0) {\n delete this.permissionsMap[permission][userId];\n } else if ((0, _isArray.default)(fields) && (0, _every.default)(fields).call(fields, function (field) {\n return typeof field === 'string';\n })) {\n this.permissionsMap[permission][userId] = fields;\n } else {\n throw new TypeError('fields must be an array of strings or undefined.');\n }\n }\n }, {\n key: \"_setGroupPointerPermission\",\n value: function (operation\n /*: string*/\n , pointerFields\n /*: string[]*/\n ) {\n var fields = this.permissionsMap[operation];\n\n if (!fields) {\n this.permissionsMap[operation] = [];\n }\n\n if (!pointerFields || (0, _isArray.default)(pointerFields) && pointerFields.length === 0) {\n delete this.permissionsMap[operation];\n } else if ((0, _isArray.default)(pointerFields) && (0, _every.default)(pointerFields).call(pointerFields, function (field) {\n return typeof field === 'string';\n })) {\n this.permissionsMap[operation] = pointerFields;\n } else {\n throw new TypeError(\"\".concat(operation, \".pointerFields must be an array of strings or undefined.\"));\n }\n }\n }, {\n key: \"_getGroupPointerPermissions\",\n value: function (operation\n /*: string*/\n )\n /*: string[]*/\n {\n return this.permissionsMap[operation];\n }\n /**\n * Sets user pointer fields to allow permission for get/count/find operations.\n *\n * @param {string[]} pointerFields User pointer fields\n */\n\n }, {\n key: \"setReadUserFields\",\n value: function (pointerFields\n /*: string[]*/\n ) {\n this._setGroupPointerPermission('readUserFields', pointerFields);\n }\n /**\n * @returns {string[]} User pointer fields\n */\n\n }, {\n key: \"getReadUserFields\",\n value: function ()\n /*: string[]*/\n {\n return this._getGroupPointerPermissions('readUserFields');\n }\n /**\n * Sets user pointer fields to allow permission for create/delete/update/addField operations\n *\n * @param {string[]} pointerFields User pointer fields\n */\n\n }, {\n key: \"setWriteUserFields\",\n value: function (pointerFields\n /*: string[]*/\n ) {\n this._setGroupPointerPermission('writeUserFields', pointerFields);\n }\n /**\n * @returns {string[]} User pointer fields\n */\n\n }, {\n key: \"getWriteUserFields\",\n value: function ()\n /*: string[]*/\n {\n return this._getGroupPointerPermissions('writeUserFields');\n }\n /**\n * Sets whether the given user is allowed to retrieve fields from this class.\n *\n * @param userId An instance of Parse.User or its objectId.\n * @param {string[]} fields fields to be protected\n */\n\n }, {\n key: \"setProtectedFields\",\n value: function (userId\n /*: Entity*/\n , fields\n /*: string[]*/\n ) {\n this._setArrayAccess('protectedFields', userId, fields);\n }\n /**\n * Returns array of fields are accessable to this user.\n *\n * @param userId An instance of Parse.User or its objectId, or a Parse.Role.\n * @returns {string[]}\n */\n\n }, {\n key: \"getProtectedFields\",\n value: function (userId\n /*: Entity*/\n )\n /*: string[]*/\n {\n return this._getAccess('protectedFields', userId, false);\n }\n /**\n * Sets whether the given user is allowed to read from this class.\n *\n * @param userId An instance of Parse.User or its objectId.\n * @param {boolean} allowed whether that user should have read access.\n */\n\n }, {\n key: \"setReadAccess\",\n value: function (userId\n /*: Entity*/\n , allowed\n /*: boolean*/\n ) {\n this._setAccess('find', userId, allowed);\n\n this._setAccess('get', userId, allowed);\n\n this._setAccess('count', userId, allowed);\n }\n /**\n * Get whether the given user id is *explicitly* allowed to read from this class.\n * Even if this returns false, the user may still be able to access it if\n * getPublicReadAccess returns true or a role that the user belongs to has\n * write access.\n *\n * @param userId An instance of Parse.User or its objectId, or a Parse.Role.\n * @returns {boolean}\n */\n\n }, {\n key: \"getReadAccess\",\n value: function (userId\n /*: Entity*/\n )\n /*: boolean*/\n {\n return this._getAccess('find', userId) && this._getAccess('get', userId) && this._getAccess('count', userId);\n }\n /**\n * Sets whether the given user id is allowed to write to this class.\n *\n * @param userId An instance of Parse.User or its objectId, or a Parse.Role..\n * @param {boolean} allowed Whether that user should have write access.\n */\n\n }, {\n key: \"setWriteAccess\",\n value: function (userId\n /*: Entity*/\n , allowed\n /*: boolean*/\n ) {\n this._setAccess('create', userId, allowed);\n\n this._setAccess('update', userId, allowed);\n\n this._setAccess('delete', userId, allowed);\n\n this._setAccess('addField', userId, allowed);\n }\n /**\n * Gets whether the given user id is *explicitly* allowed to write to this class.\n * Even if this returns false, the user may still be able to write it if\n * getPublicWriteAccess returns true or a role that the user belongs to has\n * write access.\n *\n * @param userId An instance of Parse.User or its objectId, or a Parse.Role.\n * @returns {boolean}\n */\n\n }, {\n key: \"getWriteAccess\",\n value: function (userId\n /*: Entity*/\n )\n /*: boolean*/\n {\n return this._getAccess('create', userId) && this._getAccess('update', userId) && this._getAccess('delete', userId) && this._getAccess('addField', userId);\n }\n /**\n * Sets whether the public is allowed to read from this class.\n *\n * @param {boolean} allowed\n */\n\n }, {\n key: \"setPublicReadAccess\",\n value: function (allowed\n /*: boolean*/\n ) {\n this.setReadAccess(PUBLIC_KEY, allowed);\n }\n /**\n * Gets whether the public is allowed to read from this class.\n *\n * @returns {boolean}\n */\n\n }, {\n key: \"getPublicReadAccess\",\n value: function ()\n /*: boolean*/\n {\n return this.getReadAccess(PUBLIC_KEY);\n }\n /**\n * Sets whether the public is allowed to write to this class.\n *\n * @param {boolean} allowed\n */\n\n }, {\n key: \"setPublicWriteAccess\",\n value: function (allowed\n /*: boolean*/\n ) {\n this.setWriteAccess(PUBLIC_KEY, allowed);\n }\n /**\n * Gets whether the public is allowed to write to this class.\n *\n * @returns {boolean}\n */\n\n }, {\n key: \"getPublicWriteAccess\",\n value: function ()\n /*: boolean*/\n {\n return this.getWriteAccess(PUBLIC_KEY);\n }\n /**\n * Sets whether the public is allowed to protect fields in this class.\n *\n * @param {string[]} fields\n */\n\n }, {\n key: \"setPublicProtectedFields\",\n value: function (fields\n /*: string[]*/\n ) {\n this.setProtectedFields(PUBLIC_KEY, fields);\n }\n /**\n * Gets whether the public is allowed to read fields from this class.\n *\n * @returns {string[]}\n */\n\n }, {\n key: \"getPublicProtectedFields\",\n value: function ()\n /*: string[]*/\n {\n return this.getProtectedFields(PUBLIC_KEY);\n }\n /**\n * Gets whether users belonging to the given role are allowed\n * to read from this class. Even if this returns false, the role may\n * still be able to write it if a parent role has read access.\n *\n * @param role The name of the role, or a Parse.Role object.\n * @returns {boolean} true if the role has read access. false otherwise.\n * @throws {TypeError} If role is neither a Parse.Role nor a String.\n */\n\n }, {\n key: \"getRoleReadAccess\",\n value: function (role\n /*: ParseRole | string*/\n )\n /*: boolean*/\n {\n return this.getReadAccess(this._getRoleName(role));\n }\n /**\n * Gets whether users belonging to the given role are allowed\n * to write to this user. Even if this returns false, the role may\n * still be able to write it if a parent role has write access.\n *\n * @param role The name of the role, or a Parse.Role object.\n * @returns {boolean} true if the role has write access. false otherwise.\n * @throws {TypeError} If role is neither a Parse.Role nor a String.\n */\n\n }, {\n key: \"getRoleWriteAccess\",\n value: function (role\n /*: ParseRole | string*/\n )\n /*: boolean*/\n {\n return this.getWriteAccess(this._getRoleName(role));\n }\n /**\n * Sets whether users belonging to the given role are allowed\n * to read from this class.\n *\n * @param role The name of the role, or a Parse.Role object.\n * @param {boolean} allowed Whether the given role can read this object.\n * @throws {TypeError} If role is neither a Parse.Role nor a String.\n */\n\n }, {\n key: \"setRoleReadAccess\",\n value: function (role\n /*: ParseRole | string*/\n , allowed\n /*: boolean*/\n ) {\n this.setReadAccess(this._getRoleName(role), allowed);\n }\n /**\n * Sets whether users belonging to the given role are allowed\n * to write to this class.\n *\n * @param role The name of the role, or a Parse.Role object.\n * @param {boolean} allowed Whether the given role can write this object.\n * @throws {TypeError} If role is neither a Parse.Role nor a String.\n */\n\n }, {\n key: \"setRoleWriteAccess\",\n value: function (role\n /*: ParseRole | string*/\n , allowed\n /*: boolean*/\n ) {\n this.setWriteAccess(this._getRoleName(role), allowed);\n }\n /**\n * Gets whether users belonging to the given role are allowed\n * to count to this user. Even if this returns false, the role may\n * still be able to count it if a parent role has count access.\n *\n * @param role The name of the role, or a Parse.Role object.\n * @returns {string[]}\n * @throws {TypeError} If role is neither a Parse.Role nor a String.\n */\n\n }, {\n key: \"getRoleProtectedFields\",\n value: function (role\n /*: ParseRole | string*/\n )\n /*: string[]*/\n {\n return this.getProtectedFields(this._getRoleName(role));\n }\n /**\n * Sets whether users belonging to the given role are allowed\n * to set access field in this class.\n *\n * @param role The name of the role, or a Parse.Role object.\n * @param {string[]} fields Fields to be protected by Role.\n * @throws {TypeError} If role is neither a Parse.Role nor a String.\n */\n\n }, {\n key: \"setRoleProtectedFields\",\n value: function (role\n /*: ParseRole | string*/\n , fields\n /*: string[]*/\n ) {\n this.setProtectedFields(this._getRoleName(role), fields);\n }\n }]);\n return ParseCLP;\n}();\n\nvar _default = ParseCLP;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseCLP.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseConfig.js":
+/*!********************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseConfig.js ***!
+ \********************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _stringify = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/json/stringify */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ \"../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\"));\n\nvar _CoreManager = _interopRequireDefault(__webpack_require__(/*! ./CoreManager */ \"../node_modules/parse/lib/browser/CoreManager.js\"));\n\nvar _decode = _interopRequireDefault(__webpack_require__(/*! ./decode */ \"../node_modules/parse/lib/browser/decode.js\"));\n\nvar _encode = _interopRequireDefault(__webpack_require__(/*! ./encode */ \"../node_modules/parse/lib/browser/encode.js\"));\n\nvar _escape2 = _interopRequireDefault(__webpack_require__(/*! ./escape */ \"../node_modules/parse/lib/browser/escape.js\"));\n\nvar _ParseError = _interopRequireDefault(__webpack_require__(/*! ./ParseError */ \"../node_modules/parse/lib/browser/ParseError.js\"));\n\nvar _Storage = _interopRequireDefault(__webpack_require__(/*! ./Storage */ \"../node_modules/parse/lib/browser/Storage.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n/**\n * Parse.Config is a local representation of configuration data that\n * can be set from the Parse dashboard.\n *\n * @alias Parse.Config\n */\n\n\nvar ParseConfig = /*#__PURE__*/function () {\n function ParseConfig() {\n (0, _classCallCheck2.default)(this, ParseConfig);\n (0, _defineProperty2.default)(this, \"attributes\", void 0);\n (0, _defineProperty2.default)(this, \"_escapedAttributes\", void 0);\n this.attributes = {};\n this._escapedAttributes = {};\n }\n /**\n * Gets the value of an attribute.\n *\n * @param {string} attr The name of an attribute.\n * @returns {*}\n */\n\n\n (0, _createClass2.default)(ParseConfig, [{\n key: \"get\",\n value: function (attr\n /*: string*/\n )\n /*: any*/\n {\n return this.attributes[attr];\n }\n /**\n * Gets the HTML-escaped value of an attribute.\n *\n * @param {string} attr The name of an attribute.\n * @returns {string}\n */\n\n }, {\n key: \"escape\",\n value: function (attr\n /*: string*/\n )\n /*: string*/\n {\n var html = this._escapedAttributes[attr];\n\n if (html) {\n return html;\n }\n\n var val = this.attributes[attr];\n var escaped = '';\n\n if (val != null) {\n escaped = (0, _escape2.default)(val.toString());\n }\n\n this._escapedAttributes[attr] = escaped;\n return escaped;\n }\n /**\n * Retrieves the most recently-fetched configuration object, either from\n * memory or from local storage if necessary.\n *\n * @static\n * @returns {Parse.Config} The most recently-fetched Parse.Config if it\n * exists, else an empty Parse.Config.\n */\n\n }], [{\n key: \"current\",\n value: function () {\n var controller = _CoreManager.default.getConfigController();\n\n return controller.current();\n }\n /**\n * Gets a new configuration object from the server.\n *\n * @static\n * @param {object} options\n * Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * \n * @returns {Promise} A promise that is resolved with a newly-created\n * configuration object when the get completes.\n */\n\n }, {\n key: \"get\",\n value: function () {\n var options\n /*: RequestOptions*/\n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var controller = _CoreManager.default.getConfigController();\n\n return controller.get(options);\n }\n /**\n * Save value keys to the server.\n *\n * @static\n * @param {object} attrs The config parameters and values.\n * @param {object} masterKeyOnlyFlags The flags that define whether config parameters listed\n * in `attrs` should be retrievable only by using the master key.\n * For example: `param1: true` makes `param1` only retrievable by using the master key.\n * If a parameter is not provided or set to `false`, it can be retrieved without\n * using the master key.\n * @returns {Promise} A promise that is resolved with a newly-created\n * configuration object or with the current with the update.\n */\n\n }, {\n key: \"save\",\n value: function (attrs\n /*: { [key: string]: any }*/\n , masterKeyOnlyFlags\n /*: { [key: string]: any }*/\n ) {\n var controller = _CoreManager.default.getConfigController(); //To avoid a mismatch with the local and the cloud config we get a new version\n\n\n return controller.save(attrs, masterKeyOnlyFlags).then(function () {\n return controller.get({\n useMasterKey: true\n });\n }, function (error) {\n return _promise.default.reject(error);\n });\n }\n /**\n * Used for testing\n *\n * @private\n */\n\n }, {\n key: \"_clearCache\",\n value: function () {\n currentConfig = null;\n }\n }]);\n return ParseConfig;\n}();\n\nvar currentConfig = null;\nvar CURRENT_CONFIG_KEY = 'currentConfig';\n\nfunction decodePayload(data) {\n try {\n var json = JSON.parse(data);\n\n if (json && (0, _typeof2.default)(json) === 'object') {\n return (0, _decode.default)(json);\n }\n } catch (e) {\n return null;\n }\n}\n\nvar DefaultController = {\n current: function () {\n if (currentConfig) {\n return currentConfig;\n }\n\n var config = new ParseConfig();\n\n var storagePath = _Storage.default.generatePath(CURRENT_CONFIG_KEY);\n\n if (!_Storage.default.async()) {\n var configData = _Storage.default.getItem(storagePath);\n\n if (configData) {\n var attributes = decodePayload(configData);\n\n if (attributes) {\n config.attributes = attributes;\n currentConfig = config;\n }\n }\n\n return config;\n } // Return a promise for async storage controllers\n\n\n return _Storage.default.getItemAsync(storagePath).then(function (configData) {\n if (configData) {\n var _attributes = decodePayload(configData);\n\n if (_attributes) {\n config.attributes = _attributes;\n currentConfig = config;\n }\n }\n\n return config;\n });\n },\n get: function () {\n var options\n /*: RequestOptions*/\n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var RESTController = _CoreManager.default.getRESTController();\n\n return RESTController.request('GET', 'config', {}, options).then(function (response) {\n if (!response || !response.params) {\n var error = new _ParseError.default(_ParseError.default.INVALID_JSON, 'Config JSON response invalid.');\n return _promise.default.reject(error);\n }\n\n var config = new ParseConfig();\n config.attributes = {};\n\n for (var attr in response.params) {\n config.attributes[attr] = (0, _decode.default)(response.params[attr]);\n }\n\n currentConfig = config;\n return _Storage.default.setItemAsync(_Storage.default.generatePath(CURRENT_CONFIG_KEY), (0, _stringify.default)(response.params)).then(function () {\n return config;\n });\n });\n },\n save: function (attrs\n /*: { [key: string]: any }*/\n , masterKeyOnlyFlags\n /*: { [key: string]: any }*/\n ) {\n var RESTController = _CoreManager.default.getRESTController();\n\n var encodedAttrs = {};\n\n for (var _key in attrs) {\n encodedAttrs[_key] = (0, _encode.default)(attrs[_key]);\n }\n\n return RESTController.request('PUT', 'config', {\n params: encodedAttrs,\n masterKeyOnly: masterKeyOnlyFlags\n }, {\n useMasterKey: true\n }).then(function (response) {\n if (response && response.result) {\n return _promise.default.resolve();\n } else {\n var error = new _ParseError.default(_ParseError.default.INTERNAL_SERVER_ERROR, 'Error occured updating Config.');\n return _promise.default.reject(error);\n }\n });\n }\n};\n\n_CoreManager.default.setConfigController(DefaultController);\n\nvar _default = ParseConfig;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseConfig.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseError.js":
+/*!*******************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseError.js ***!
+ \*******************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\nvar _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/reflect/construct */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js\");\n\n_Object$defineProperty2(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _defineProperty = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/assertThisInitialized */ \"../node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/inherits */ \"../node_modules/@babel/runtime-corejs3/helpers/inherits.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js\"));\n\nvar _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/wrapNativeSuper */ \"../node_modules/@babel/runtime-corejs3/helpers/wrapNativeSuper.js\"));\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function () {\n var Super = (0, _getPrototypeOf2.default)(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = (0, _getPrototypeOf2.default)(this).constructor;\n result = _Reflect$construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return (0, _possibleConstructorReturn2.default)(this, result);\n };\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false;\n if (_Reflect$construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Constructs a new Parse.Error object with the given code and message.\n *\n * @alias Parse.Error\n */\n\n\nvar ParseError = /*#__PURE__*/function (_Error) {\n (0, _inherits2.default)(ParseError, _Error);\n\n var _super = _createSuper(ParseError);\n /**\n * @param {number} code An error code constant from Parse.Error
.\n * @param {string} message A detailed description of the error.\n */\n\n\n function ParseError(code, message) {\n var _this;\n\n (0, _classCallCheck2.default)(this, ParseError);\n _this = _super.call(this, message);\n _this.code = code;\n (0, _defineProperty.default)((0, _assertThisInitialized2.default)(_this), 'message', {\n enumerable: true,\n value: message\n });\n return _this;\n }\n\n (0, _createClass2.default)(ParseError, [{\n key: \"toString\",\n value: function () {\n return 'ParseError: ' + this.code + ' ' + this.message;\n }\n }]);\n return ParseError;\n}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));\n/**\n * Error code indicating some error other than those enumerated here.\n *\n * @property {number} OTHER_CAUSE\n * @static\n */\n\n\nParseError.OTHER_CAUSE = -1;\n/**\n * Error code indicating that something has gone wrong with the server.\n *\n * @property {number} INTERNAL_SERVER_ERROR\n * @static\n */\n\nParseError.INTERNAL_SERVER_ERROR = 1;\n/**\n * Error code indicating the connection to the Parse servers failed.\n *\n * @property {number} CONNECTION_FAILED\n * @static\n */\n\nParseError.CONNECTION_FAILED = 100;\n/**\n * Error code indicating the specified object doesn't exist.\n *\n * @property {number} OBJECT_NOT_FOUND\n * @static\n */\n\nParseError.OBJECT_NOT_FOUND = 101;\n/**\n * Error code indicating you tried to query with a datatype that doesn't\n * support it, like exact matching an array or object.\n *\n * @property {number} INVALID_QUERY\n * @static\n */\n\nParseError.INVALID_QUERY = 102;\n/**\n * Error code indicating a missing or invalid classname. Classnames are\n * case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the\n * only valid characters.\n *\n * @property {number} INVALID_CLASS_NAME\n * @static\n */\n\nParseError.INVALID_CLASS_NAME = 103;\n/**\n * Error code indicating an unspecified object id.\n *\n * @property {number} MISSING_OBJECT_ID\n * @static\n */\n\nParseError.MISSING_OBJECT_ID = 104;\n/**\n * Error code indicating an invalid key name. Keys are case-sensitive. They\n * must start with a letter, and a-zA-Z0-9_ are the only valid characters.\n *\n * @property {number} INVALID_KEY_NAME\n * @static\n */\n\nParseError.INVALID_KEY_NAME = 105;\n/**\n * Error code indicating a malformed pointer. You should not see this unless\n * you have been mucking about changing internal Parse code.\n *\n * @property {number} INVALID_POINTER\n * @static\n */\n\nParseError.INVALID_POINTER = 106;\n/**\n * Error code indicating that badly formed JSON was received upstream. This\n * either indicates you have done something unusual with modifying how\n * things encode to JSON, or the network is failing badly.\n *\n * @property {number} INVALID_JSON\n * @static\n */\n\nParseError.INVALID_JSON = 107;\n/**\n * Error code indicating that the feature you tried to access is only\n * available internally for testing purposes.\n *\n * @property {number} COMMAND_UNAVAILABLE\n * @static\n */\n\nParseError.COMMAND_UNAVAILABLE = 108;\n/**\n * You must call Parse.initialize before using the Parse library.\n *\n * @property {number} NOT_INITIALIZED\n * @static\n */\n\nParseError.NOT_INITIALIZED = 109;\n/**\n * Error code indicating that a field was set to an inconsistent type.\n *\n * @property {number} INCORRECT_TYPE\n * @static\n */\n\nParseError.INCORRECT_TYPE = 111;\n/**\n * Error code indicating an invalid channel name. A channel name is either\n * an empty string (the broadcast channel) or contains only a-zA-Z0-9_\n * characters and starts with a letter.\n *\n * @property {number} INVALID_CHANNEL_NAME\n * @static\n */\n\nParseError.INVALID_CHANNEL_NAME = 112;\n/**\n * Error code indicating that push is misconfigured.\n *\n * @property {number} PUSH_MISCONFIGURED\n * @static\n */\n\nParseError.PUSH_MISCONFIGURED = 115;\n/**\n * Error code indicating that the object is too large.\n *\n * @property {number} OBJECT_TOO_LARGE\n * @static\n */\n\nParseError.OBJECT_TOO_LARGE = 116;\n/**\n * Error code indicating that the operation isn't allowed for clients.\n *\n * @property {number} OPERATION_FORBIDDEN\n * @static\n */\n\nParseError.OPERATION_FORBIDDEN = 119;\n/**\n * Error code indicating the result was not found in the cache.\n *\n * @property {number} CACHE_MISS\n * @static\n */\n\nParseError.CACHE_MISS = 120;\n/**\n * Error code indicating that an invalid key was used in a nested\n * JSONObject.\n *\n * @property {number} INVALID_NESTED_KEY\n * @static\n */\n\nParseError.INVALID_NESTED_KEY = 121;\n/**\n * Error code indicating that an invalid filename was used for ParseFile.\n * A valid file name contains only a-zA-Z0-9_. characters and is between 1\n * and 128 characters.\n *\n * @property {number} INVALID_FILE_NAME\n * @static\n */\n\nParseError.INVALID_FILE_NAME = 122;\n/**\n * Error code indicating an invalid ACL was provided.\n *\n * @property {number} INVALID_ACL\n * @static\n */\n\nParseError.INVALID_ACL = 123;\n/**\n * Error code indicating that the request timed out on the server. Typically\n * this indicates that the request is too expensive to run.\n *\n * @property {number} TIMEOUT\n * @static\n */\n\nParseError.TIMEOUT = 124;\n/**\n * Error code indicating that the email address was invalid.\n *\n * @property {number} INVALID_EMAIL_ADDRESS\n * @static\n */\n\nParseError.INVALID_EMAIL_ADDRESS = 125;\n/**\n * Error code indicating a missing content type.\n *\n * @property {number} MISSING_CONTENT_TYPE\n * @static\n */\n\nParseError.MISSING_CONTENT_TYPE = 126;\n/**\n * Error code indicating a missing content length.\n *\n * @property {number} MISSING_CONTENT_LENGTH\n * @static\n */\n\nParseError.MISSING_CONTENT_LENGTH = 127;\n/**\n * Error code indicating an invalid content length.\n *\n * @property {number} INVALID_CONTENT_LENGTH\n * @static\n */\n\nParseError.INVALID_CONTENT_LENGTH = 128;\n/**\n * Error code indicating a file that was too large.\n *\n * @property {number} FILE_TOO_LARGE\n * @static\n */\n\nParseError.FILE_TOO_LARGE = 129;\n/**\n * Error code indicating an error saving a file.\n *\n * @property {number} FILE_SAVE_ERROR\n * @static\n */\n\nParseError.FILE_SAVE_ERROR = 130;\n/**\n * Error code indicating that a unique field was given a value that is\n * already taken.\n *\n * @property {number} DUPLICATE_VALUE\n * @static\n */\n\nParseError.DUPLICATE_VALUE = 137;\n/**\n * Error code indicating that a role's name is invalid.\n *\n * @property {number} INVALID_ROLE_NAME\n * @static\n */\n\nParseError.INVALID_ROLE_NAME = 139;\n/**\n * Error code indicating that an application quota was exceeded. Upgrade to\n * resolve.\n *\n * @property {number} EXCEEDED_QUOTA\n * @static\n */\n\nParseError.EXCEEDED_QUOTA = 140;\n/**\n * Error code indicating that a Cloud Code script failed.\n *\n * @property {number} SCRIPT_FAILED\n * @static\n */\n\nParseError.SCRIPT_FAILED = 141;\n/**\n * Error code indicating that a Cloud Code validation failed.\n *\n * @property {number} VALIDATION_ERROR\n * @static\n */\n\nParseError.VALIDATION_ERROR = 142;\n/**\n * Error code indicating that invalid image data was provided.\n *\n * @property {number} INVALID_IMAGE_DATA\n * @static\n */\n\nParseError.INVALID_IMAGE_DATA = 143;\n/**\n * Error code indicating an unsaved file.\n *\n * @property {number} UNSAVED_FILE_ERROR\n * @static\n */\n\nParseError.UNSAVED_FILE_ERROR = 151;\n/**\n * Error code indicating an invalid push time.\n *\n * @property {number} INVALID_PUSH_TIME_ERROR\n * @static\n */\n\nParseError.INVALID_PUSH_TIME_ERROR = 152;\n/**\n * Error code indicating an error deleting a file.\n *\n * @property {number} FILE_DELETE_ERROR\n * @static\n */\n\nParseError.FILE_DELETE_ERROR = 153;\n/**\n * Error code indicating an error deleting an unnamed file.\n *\n * @property {number} FILE_DELETE_UNNAMED_ERROR\n * @static\n */\n\nParseError.FILE_DELETE_UNNAMED_ERROR = 161;\n/**\n * Error code indicating that the application has exceeded its request\n * limit.\n *\n * @property {number} REQUEST_LIMIT_EXCEEDED\n * @static\n */\n\nParseError.REQUEST_LIMIT_EXCEEDED = 155;\n/**\n * Error code indicating that the request was a duplicate and has been discarded due to\n * idempotency rules.\n *\n * @property {number} DUPLICATE_REQUEST\n * @static\n */\n\nParseError.DUPLICATE_REQUEST = 159;\n/**\n * Error code indicating an invalid event name.\n *\n * @property {number} INVALID_EVENT_NAME\n * @static\n */\n\nParseError.INVALID_EVENT_NAME = 160;\n/**\n * Error code indicating that a field had an invalid value.\n *\n * @property {number} INVALID_VALUE\n * @static\n */\n\nParseError.INVALID_VALUE = 162;\n/**\n * Error code indicating that the username is missing or empty.\n *\n * @property {number} USERNAME_MISSING\n * @static\n */\n\nParseError.USERNAME_MISSING = 200;\n/**\n * Error code indicating that the password is missing or empty.\n *\n * @property {number} PASSWORD_MISSING\n * @static\n */\n\nParseError.PASSWORD_MISSING = 201;\n/**\n * Error code indicating that the username has already been taken.\n *\n * @property {number} USERNAME_TAKEN\n * @static\n */\n\nParseError.USERNAME_TAKEN = 202;\n/**\n * Error code indicating that the email has already been taken.\n *\n * @property {number} EMAIL_TAKEN\n * @static\n */\n\nParseError.EMAIL_TAKEN = 203;\n/**\n * Error code indicating that the email is missing, but must be specified.\n *\n * @property {number} EMAIL_MISSING\n * @static\n */\n\nParseError.EMAIL_MISSING = 204;\n/**\n * Error code indicating that a user with the specified email was not found.\n *\n * @property {number} EMAIL_NOT_FOUND\n * @static\n */\n\nParseError.EMAIL_NOT_FOUND = 205;\n/**\n * Error code indicating that a user object without a valid session could\n * not be altered.\n *\n * @property {number} SESSION_MISSING\n * @static\n */\n\nParseError.SESSION_MISSING = 206;\n/**\n * Error code indicating that a user can only be created through signup.\n *\n * @property {number} MUST_CREATE_USER_THROUGH_SIGNUP\n * @static\n */\n\nParseError.MUST_CREATE_USER_THROUGH_SIGNUP = 207;\n/**\n * Error code indicating that an an account being linked is already linked\n * to another user.\n *\n * @property {number} ACCOUNT_ALREADY_LINKED\n * @static\n */\n\nParseError.ACCOUNT_ALREADY_LINKED = 208;\n/**\n * Error code indicating that the current session token is invalid.\n *\n * @property {number} INVALID_SESSION_TOKEN\n * @static\n */\n\nParseError.INVALID_SESSION_TOKEN = 209;\n/**\n * Error code indicating an error enabling or verifying MFA\n *\n * @property {number} MFA_ERROR\n * @static\n */\n\nParseError.MFA_ERROR = 210;\n/**\n * Error code indicating that a valid MFA token must be provided\n *\n * @property {number} MFA_TOKEN_REQUIRED\n * @static\n */\n\nParseError.MFA_TOKEN_REQUIRED = 211;\n/**\n * Error code indicating that a user cannot be linked to an account because\n * that account's id could not be found.\n *\n * @property {number} LINKED_ID_MISSING\n * @static\n */\n\nParseError.LINKED_ID_MISSING = 250;\n/**\n * Error code indicating that a user with a linked (e.g. Facebook) account\n * has an invalid session.\n *\n * @property {number} INVALID_LINKED_SESSION\n * @static\n */\n\nParseError.INVALID_LINKED_SESSION = 251;\n/**\n * Error code indicating that a service being linked (e.g. Facebook or\n * Twitter) is unsupported.\n *\n * @property {number} UNSUPPORTED_SERVICE\n * @static\n */\n\nParseError.UNSUPPORTED_SERVICE = 252;\n/**\n * Error code indicating an invalid operation occured on schema\n *\n * @property {number} INVALID_SCHEMA_OPERATION\n * @static\n */\n\nParseError.INVALID_SCHEMA_OPERATION = 255;\n/**\n * Error code indicating that there were multiple errors. Aggregate errors\n * have an \"errors\" property, which is an array of error objects with more\n * detail about each error that occurred.\n *\n * @property {number} AGGREGATE_ERROR\n * @static\n */\n\nParseError.AGGREGATE_ERROR = 600;\n/**\n * Error code indicating the client was unable to read an input file.\n *\n * @property {number} FILE_READ_ERROR\n * @static\n */\n\nParseError.FILE_READ_ERROR = 601;\n/**\n * Error code indicating a real error code is unavailable because\n * we had to use an XDomainRequest object to allow CORS requests in\n * Internet Explorer, which strips the body from HTTP responses that have\n * a non-2XX status code.\n *\n * @property {number} X_DOMAIN_REQUEST\n * @static\n */\n\nParseError.X_DOMAIN_REQUEST = 602;\nvar _default = ParseError;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseError.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseFile.js":
+/*!******************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseFile.js ***!
+ \******************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\nvar _Object$defineProperties = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-properties */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js\");\n\nvar _Object$getOwnPropertyDescriptors = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js\");\n\nvar _forEachInstanceProperty2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js\");\n\nvar _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js\");\n\nvar _filterInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js\");\n\nvar _Object$getOwnPropertySymbols = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js\");\n\nvar _Object$keys2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/slicedToArray */ \"../node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js\"));\n\nvar _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\"));\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\"));\n\nvar _forEach = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/regenerator */ \"../node_modules/@babel/runtime-corejs3/regenerator/index.js\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/asyncToGenerator */ \"../node_modules/@babel/runtime-corejs3/helpers/asyncToGenerator.js\"));\n\nvar _slice = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/slice */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js\"));\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/index-of */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\"));\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ \"../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\"));\n\nvar _CoreManager = _interopRequireDefault(__webpack_require__(/*! ./CoreManager */ \"../node_modules/parse/lib/browser/CoreManager.js\"));\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = _Object$keys2(object);\n\n if (_Object$getOwnPropertySymbols) {\n var symbols = _Object$getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) {\n return _Object$getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n var _context5;\n\n _forEachInstanceProperty2(_context5 = ownKeys(Object(source), true)).call(_context5, function (key) {\n (0, _defineProperty2.default)(target, key, source[key]);\n });\n } else if (_Object$getOwnPropertyDescriptors) {\n _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source));\n } else {\n var _context6;\n\n _forEachInstanceProperty2(_context6 = ownKeys(Object(source))).call(_context6, function (key) {\n _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nvar ParseError = (__webpack_require__(/*! ./ParseError */ \"../node_modules/parse/lib/browser/ParseError.js\")[\"default\"]);\n\nvar XHR = null;\n\nif (typeof XMLHttpRequest !== 'undefined') {\n XHR = XMLHttpRequest;\n}\n\n/*:: type Base64 = { base64: string };*/\n\n/*:: type Uri = { uri: string };*/\n\n/*:: type FileData = Array | Base64 | Blob | Uri;*/\n\n/*:: export type FileSource =\n | {\n format: 'file',\n file: Blob,\n type: string,\n }\n | {\n format: 'base64',\n base64: string,\n type: string,\n }\n | {\n format: 'uri',\n uri: string,\n type: string,\n };*/\nvar dataUriRegexp = /^data:([a-zA-Z]+\\/[-a-zA-Z0-9+.]+)(;charset=[a-zA-Z0-9\\-\\/]*)?;base64,/;\n\nfunction b64Digit(number\n/*: number*/\n)\n/*: string*/\n{\n if (number < 26) {\n return String.fromCharCode(65 + number);\n }\n\n if (number < 52) {\n return String.fromCharCode(97 + (number - 26));\n }\n\n if (number < 62) {\n return String.fromCharCode(48 + (number - 52));\n }\n\n if (number === 62) {\n return '+';\n }\n\n if (number === 63) {\n return '/';\n }\n\n throw new TypeError('Tried to encode large digit ' + number + ' in base64.');\n}\n/**\n * A Parse.File is a local representation of a file that is saved to the Parse\n * cloud.\n *\n * @alias Parse.File\n */\n\n\nvar ParseFile = /*#__PURE__*/function () {\n /**\n * @param name {String} The file's name. This will be prefixed by a unique\n * value once the file has finished saving. The file name must begin with\n * an alphanumeric character, and consist of alphanumeric characters,\n * periods, spaces, underscores, or dashes.\n * @param data {Array} The data for the file, as either:\n * 1. an Array of byte value Numbers, or\n * 2. an Object like { base64: \"...\" } with a base64-encoded String.\n * 3. an Object like { uri: \"...\" } with a uri String.\n * 4. a File object selected with a file upload control. (3) only works\n * in Firefox 3.6+, Safari 6.0.2+, Chrome 7+, and IE 10+.\n * For example:\n * \n * var fileUploadControl = $(\"#profilePhotoFileUpload\")[0];\n * if (fileUploadControl.files.length > 0) {\n * var file = fileUploadControl.files[0];\n * var name = \"photo.jpg\";\n * var parseFile = new Parse.File(name, file);\n * parseFile.save().then(function() {\n * // The file has been saved to Parse.\n * }, function(error) {\n * // The file either could not be read, or could not be saved to Parse.\n * });\n * } \n * @param type {String} Optional Content-Type header to use for the file. If\n * this is omitted, the content type will be inferred from the name's\n * extension.\n * @param metadata {Object} Optional key value pairs to be stored with file object\n * @param tags {Object} Optional key value pairs to be stored with file object\n */\n function ParseFile(name\n /*: string*/\n , data\n /*:: ?: FileData*/\n , type\n /*:: ?: string*/\n , metadata\n /*:: ?: Object*/\n , tags\n /*:: ?: Object*/\n ) {\n (0, _classCallCheck2.default)(this, ParseFile);\n (0, _defineProperty2.default)(this, \"_name\", void 0);\n (0, _defineProperty2.default)(this, \"_url\", void 0);\n (0, _defineProperty2.default)(this, \"_source\", void 0);\n (0, _defineProperty2.default)(this, \"_previousSave\", void 0);\n (0, _defineProperty2.default)(this, \"_data\", void 0);\n (0, _defineProperty2.default)(this, \"_requestTask\", void 0);\n (0, _defineProperty2.default)(this, \"_metadata\", void 0);\n (0, _defineProperty2.default)(this, \"_tags\", void 0);\n var specifiedType = type || '';\n this._name = name;\n this._metadata = metadata || {};\n this._tags = tags || {};\n\n if (data !== undefined) {\n if ((0, _isArray.default)(data)) {\n this._data = ParseFile.encodeBase64(data);\n this._source = {\n format: 'base64',\n base64: this._data,\n type: specifiedType\n };\n } else if (typeof Blob !== 'undefined' && data instanceof Blob) {\n this._source = {\n format: 'file',\n file: data,\n type: specifiedType\n };\n } else if (data && typeof data.uri === 'string' && data.uri !== undefined) {\n this._source = {\n format: 'uri',\n uri: data.uri,\n type: specifiedType\n };\n } else if (data && typeof data.base64 === 'string') {\n var base64 = data.base64;\n var commaIndex = (0, _indexOf.default)(base64).call(base64, ',');\n\n if (commaIndex !== -1) {\n var matches = dataUriRegexp.exec((0, _slice.default)(base64).call(base64, 0, commaIndex + 1)); // if data URI with type and charset, there will be 4 matches.\n\n this._data = (0, _slice.default)(base64).call(base64, commaIndex + 1);\n this._source = {\n format: 'base64',\n base64: this._data,\n type: matches[1]\n };\n } else {\n this._data = base64;\n this._source = {\n format: 'base64',\n base64: base64,\n type: specifiedType\n };\n }\n } else {\n throw new TypeError('Cannot create a Parse.File with that data.');\n }\n }\n }\n /**\n * Return the data for the file, downloading it if not already present.\n * Data is present if initialized with Byte Array, Base64 or Saved with Uri.\n * Data is cleared if saved with File object selected with a file upload control\n *\n * @returns {Promise} Promise that is resolve with base64 data\n */\n\n\n (0, _createClass2.default)(ParseFile, [{\n key: \"getData\",\n value: function () {\n var _getData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var _this = this;\n\n var options, controller, result;\n return _regenerator.default.wrap(function (_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this._data) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\", this._data);\n\n case 2:\n if (this._url) {\n _context.next = 4;\n break;\n }\n\n throw new Error('Cannot retrieve data for unsaved ParseFile.');\n\n case 4:\n options = {\n requestTask: function (task) {\n return _this._requestTask = task;\n }\n };\n controller = _CoreManager.default.getFileController();\n _context.next = 8;\n return controller.download(this._url, options);\n\n case 8:\n result = _context.sent;\n this._data = result.base64;\n return _context.abrupt(\"return\", this._data);\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function () {\n return _getData.apply(this, arguments);\n };\n }()\n /**\n * Gets the name of the file. Before save is called, this is the filename\n * given by the user. After save is called, that name gets prefixed with a\n * unique identifier.\n *\n * @returns {string}\n */\n\n }, {\n key: \"name\",\n value: function ()\n /*: string*/\n {\n return this._name;\n }\n /**\n * Gets the url of the file. It is only available after you save the file or\n * after you get the file from a Parse.Object.\n *\n * @param {object} options An object to specify url options\n * @returns {string}\n */\n\n }, {\n key: \"url\",\n value: function (options\n /*:: ?: { forceSecure?: boolean }*/\n )\n /*: ?string*/\n {\n options = options || {};\n\n if (!this._url) {\n return;\n }\n\n if (options.forceSecure) {\n return this._url.replace(/^http:\\/\\//i, 'https://');\n } else {\n return this._url;\n }\n }\n /**\n * Gets the metadata of the file.\n *\n * @returns {object}\n */\n\n }, {\n key: \"metadata\",\n value: function ()\n /*: Object*/\n {\n return this._metadata;\n }\n /**\n * Gets the tags of the file.\n *\n * @returns {object}\n */\n\n }, {\n key: \"tags\",\n value: function ()\n /*: Object*/\n {\n return this._tags;\n }\n /**\n * Saves the file to the Parse cloud.\n *\n * @param {object} options\n * * Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * progress: In Browser only, callback for upload progress. For example:\n * \n * let parseFile = new Parse.File(name, file);\n * parseFile.save({\n * progress: (progressValue, loaded, total, { type }) => {\n * if (type === \"upload\" && progressValue !== null) {\n * // Update the UI using progressValue\n * }\n * }\n * });\n * \n * \n * @returns {Promise} Promise that is resolved when the save finishes.\n */\n\n }, {\n key: \"save\",\n value: function (options\n /*:: ?: FullOptions*/\n ) {\n var _this2 = this;\n\n options = options || {};\n\n options.requestTask = function (task) {\n return _this2._requestTask = task;\n };\n\n options.metadata = this._metadata;\n options.tags = this._tags;\n\n var controller = _CoreManager.default.getFileController();\n\n if (!this._previousSave) {\n if (this._source.format === 'file') {\n this._previousSave = controller.saveFile(this._name, this._source, options).then(function (res) {\n _this2._name = res.name;\n _this2._url = res.url;\n _this2._data = null;\n _this2._requestTask = null;\n return _this2;\n });\n } else if (this._source.format === 'uri') {\n this._previousSave = controller.download(this._source.uri, options).then(function (result) {\n if (!(result && result.base64)) {\n return {};\n }\n\n var newSource = {\n format: 'base64',\n base64: result.base64,\n type: result.contentType\n };\n _this2._data = result.base64;\n _this2._requestTask = null;\n return controller.saveBase64(_this2._name, newSource, options);\n }).then(function (res) {\n _this2._name = res.name;\n _this2._url = res.url;\n _this2._requestTask = null;\n return _this2;\n });\n } else {\n this._previousSave = controller.saveBase64(this._name, this._source, options).then(function (res) {\n _this2._name = res.name;\n _this2._url = res.url;\n _this2._requestTask = null;\n return _this2;\n });\n }\n }\n\n if (this._previousSave) {\n return this._previousSave;\n }\n }\n /**\n * Aborts the request if it has already been sent.\n */\n\n }, {\n key: \"cancel\",\n value: function () {\n if (this._requestTask && typeof this._requestTask.abort === 'function') {\n this._requestTask.abort();\n }\n\n this._requestTask = null;\n }\n /**\n * Deletes the file from the Parse cloud.\n * In Cloud Code and Node only with Master Key.\n *\n * @param {object} options\n * * Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * \n * @returns {Promise} Promise that is resolved when the delete finishes.\n */\n\n }, {\n key: \"destroy\",\n value: function () {\n var _this3 = this;\n\n var options\n /*:: ?: FullOptions*/\n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (!this._name) {\n throw new ParseError(ParseError.FILE_DELETE_UNNAMED_ERROR, 'Cannot delete an unnamed file.');\n }\n\n var destroyOptions = {\n useMasterKey: true\n };\n\n if (options.hasOwnProperty('useMasterKey')) {\n destroyOptions.useMasterKey = options.useMasterKey;\n }\n\n var controller = _CoreManager.default.getFileController();\n\n return controller.deleteFile(this._name, destroyOptions).then(function () {\n _this3._data = null;\n _this3._requestTask = null;\n return _this3;\n });\n }\n }, {\n key: \"toJSON\",\n value: function ()\n /*: { name: ?string, url: ?string }*/\n {\n return {\n __type: 'File',\n name: this._name,\n url: this._url\n };\n }\n }, {\n key: \"equals\",\n value: function (other\n /*: mixed*/\n )\n /*: boolean*/\n {\n if (this === other) {\n return true;\n } // Unsaved Files are never equal, since they will be saved to different URLs\n\n\n return other instanceof ParseFile && this.name() === other.name() && this.url() === other.url() && typeof this.url() !== 'undefined';\n }\n /**\n * Sets metadata to be saved with file object. Overwrites existing metadata\n *\n * @param {object} metadata Key value pairs to be stored with file object\n */\n\n }, {\n key: \"setMetadata\",\n value: function (metadata\n /*: any*/\n ) {\n var _this4 = this;\n\n if (metadata && (0, _typeof2.default)(metadata) === 'object') {\n var _context2;\n\n (0, _forEach.default)(_context2 = (0, _keys.default)(metadata)).call(_context2, function (key) {\n _this4.addMetadata(key, metadata[key]);\n });\n }\n }\n /**\n * Sets metadata to be saved with file object. Adds to existing metadata.\n *\n * @param {string} key key to store the metadata\n * @param {*} value metadata\n */\n\n }, {\n key: \"addMetadata\",\n value: function (key\n /*: string*/\n , value\n /*: any*/\n ) {\n if (typeof key === 'string') {\n this._metadata[key] = value;\n }\n }\n /**\n * Sets tags to be saved with file object. Overwrites existing tags\n *\n * @param {object} tags Key value pairs to be stored with file object\n */\n\n }, {\n key: \"setTags\",\n value: function (tags\n /*: any*/\n ) {\n var _this5 = this;\n\n if (tags && (0, _typeof2.default)(tags) === 'object') {\n var _context3;\n\n (0, _forEach.default)(_context3 = (0, _keys.default)(tags)).call(_context3, function (key) {\n _this5.addTag(key, tags[key]);\n });\n }\n }\n /**\n * Sets tags to be saved with file object. Adds to existing tags.\n *\n * @param {string} key key to store tags\n * @param {*} value tag\n */\n\n }, {\n key: \"addTag\",\n value: function (key\n /*: string*/\n , value\n /*: string*/\n ) {\n if (typeof key === 'string') {\n this._tags[key] = value;\n }\n }\n }], [{\n key: \"fromJSON\",\n value: function (obj)\n /*: ParseFile*/\n {\n if (obj.__type !== 'File') {\n throw new TypeError('JSON object does not represent a ParseFile');\n }\n\n var file = new ParseFile(obj.name);\n file._url = obj.url;\n return file;\n }\n }, {\n key: \"encodeBase64\",\n value: function (bytes\n /*: Array*/\n )\n /*: string*/\n {\n var chunks = [];\n chunks.length = Math.ceil(bytes.length / 3);\n\n for (var i = 0; i < chunks.length; i++) {\n var b1 = bytes[i * 3];\n var b2 = bytes[i * 3 + 1] || 0;\n var b3 = bytes[i * 3 + 2] || 0;\n var has2 = i * 3 + 1 < bytes.length;\n var has3 = i * 3 + 2 < bytes.length;\n chunks[i] = [b64Digit(b1 >> 2 & 0x3f), b64Digit(b1 << 4 & 0x30 | b2 >> 4 & 0x0f), has2 ? b64Digit(b2 << 2 & 0x3c | b3 >> 6 & 0x03) : '=', has3 ? b64Digit(b3 & 0x3f) : '='].join('');\n }\n\n return chunks.join('');\n }\n }]);\n return ParseFile;\n}();\n\nvar DefaultController = {\n saveFile: function () {\n var _saveFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(name\n /*: string*/\n , source\n /*: FileSource*/\n , options\n /*:: ?: FullOptions*/\n ) {\n var base64Data, _base64Data$split, _base64Data$split2, first, second, data, newSource;\n\n return _regenerator.default.wrap(function (_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!(source.format !== 'file')) {\n _context4.next = 2;\n break;\n }\n\n throw new Error('saveFile can only be used with File-type sources.');\n\n case 2:\n _context4.next = 4;\n return new _promise.default(function (res, rej) {\n // eslint-disable-next-line no-undef\n var reader = new FileReader();\n\n reader.onload = function () {\n return res(reader.result);\n };\n\n reader.onerror = function (error) {\n return rej(error);\n };\n\n reader.readAsDataURL(source.file);\n });\n\n case 4:\n base64Data = _context4.sent; // we only want the data after the comma\n // For example: \"data:application/pdf;base64,JVBERi0xLjQKJ...\" we would only want \"JVBERi0xLjQKJ...\"\n\n _base64Data$split = base64Data.split(','), _base64Data$split2 = (0, _slicedToArray2.default)(_base64Data$split, 2), first = _base64Data$split2[0], second = _base64Data$split2[1]; // in the event there is no 'data:application/pdf;base64,' at the beginning of the base64 string\n // use the entire string instead\n\n data = second ? second : first;\n newSource = {\n format: 'base64',\n base64: data,\n type: source.type || (source.file ? source.file.type : null)\n };\n _context4.next = 10;\n return DefaultController.saveBase64(name, newSource, options);\n\n case 10:\n return _context4.abrupt(\"return\", _context4.sent);\n\n case 11:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee2);\n }));\n\n return function () {\n return _saveFile.apply(this, arguments);\n };\n }(),\n saveBase64: function (name\n /*: string*/\n , source\n /*: FileSource*/\n , options\n /*:: ?: FullOptions*/\n ) {\n if (source.format !== 'base64') {\n throw new Error('saveBase64 can only be used with Base64-type sources.');\n }\n\n var data\n /*: { base64: any, _ContentType?: any, fileData: Object }*/\n = {\n base64: source.base64,\n fileData: {\n metadata: _objectSpread({}, options.metadata),\n tags: _objectSpread({}, options.tags)\n }\n };\n delete options.metadata;\n delete options.tags;\n\n if (source.type) {\n data._ContentType = source.type;\n }\n\n return _CoreManager.default.getRESTController().request('POST', 'files/' + name, data, options);\n },\n download: function (uri, options) {\n if (XHR) {\n return this.downloadAjax(uri, options);\n } else {\n return _promise.default.reject('Cannot make a request: No definition of XMLHttpRequest was found.');\n }\n },\n downloadAjax: function (uri, options) {\n return new _promise.default(function (resolve, reject) {\n var xhr = new XHR();\n xhr.open('GET', uri, true);\n xhr.responseType = 'arraybuffer';\n\n xhr.onerror = function (e) {\n reject(e);\n };\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState !== xhr.DONE) {\n return;\n }\n\n if (!this.response) {\n return resolve({});\n }\n\n var bytes = new Uint8Array(this.response);\n resolve({\n base64: ParseFile.encodeBase64(bytes),\n contentType: xhr.getResponseHeader('content-type')\n });\n };\n\n options.requestTask(xhr);\n xhr.send();\n });\n },\n deleteFile: function (name\n /*: string*/\n , options\n /*:: ?: FullOptions*/\n ) {\n var headers = {\n 'X-Parse-Application-ID': _CoreManager.default.get('APPLICATION_ID')\n };\n\n if (options.useMasterKey) {\n headers['X-Parse-Master-Key'] = _CoreManager.default.get('MASTER_KEY');\n }\n\n var url = _CoreManager.default.get('SERVER_URL');\n\n if (url[url.length - 1] !== '/') {\n url += '/';\n }\n\n url += 'files/' + name;\n return _CoreManager.default.getRESTController().ajax('DELETE', url, '', headers).catch(function (response) {\n // TODO: return JSON object in server\n if (!response || response === 'SyntaxError: Unexpected end of JSON input') {\n return _promise.default.resolve();\n } else {\n return _CoreManager.default.getRESTController().handleError(response);\n }\n });\n },\n _setXHR: function (xhr\n /*: any*/\n ) {\n XHR = xhr;\n },\n _getXHR: function () {\n return XHR;\n }\n};\n\n_CoreManager.default.setFileController(DefaultController);\n\nvar _default = ParseFile;\nexports[\"default\"] = _default;\nexports.b64Digit = b64Digit;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseFile.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseGeoPoint.js":
+/*!**********************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseGeoPoint.js ***!
+ \**********************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ \"../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n/**\n * Creates a new GeoPoint with any of the following forms: \n * \n * new GeoPoint(otherGeoPoint)\n * new GeoPoint(30, 30)\n * new GeoPoint([30, 30])\n * new GeoPoint({latitude: 30, longitude: 30})\n * new GeoPoint() // defaults to (0, 0)\n * \n * Represents a latitude / longitude point that may be associated\n * with a key in a ParseObject or used as a reference point for geo queries.\n * This allows proximity-based queries on the key.
\n *\n * Only one key in a class may contain a GeoPoint.
\n *\n * Example:
\n * var point = new Parse.GeoPoint(30.0, -20.0);\n * var object = new Parse.Object(\"PlaceObject\");\n * object.set(\"location\", point);\n * object.save(); \n *\n * @alias Parse.GeoPoint\n */\n\n/* global navigator */\n\n\nvar ParseGeoPoint = /*#__PURE__*/function () {\n /**\n * @param {(number[] | object | number)} arg1 Either a list of coordinate pairs, an object with `latitude`, `longitude`, or the latitude or the point.\n * @param {number} arg2 The longitude of the GeoPoint\n */\n function ParseGeoPoint(arg1\n /*: Array | { latitude: number, longitude: number } | number*/\n , arg2\n /*:: ?: number*/\n ) {\n (0, _classCallCheck2.default)(this, ParseGeoPoint);\n (0, _defineProperty2.default)(this, \"_latitude\", void 0);\n (0, _defineProperty2.default)(this, \"_longitude\", void 0);\n\n if ((0, _isArray.default)(arg1)) {\n ParseGeoPoint._validate(arg1[0], arg1[1]);\n\n this._latitude = arg1[0];\n this._longitude = arg1[1];\n } else if ((0, _typeof2.default)(arg1) === 'object') {\n ParseGeoPoint._validate(arg1.latitude, arg1.longitude);\n\n this._latitude = arg1.latitude;\n this._longitude = arg1.longitude;\n } else if (arg1 !== undefined && arg2 !== undefined) {\n ParseGeoPoint._validate(arg1, arg2);\n\n this._latitude = arg1;\n this._longitude = arg2;\n } else {\n this._latitude = 0;\n this._longitude = 0;\n }\n }\n /**\n * North-south portion of the coordinate, in range [-90, 90].\n * Throws an exception if set out of range in a modern browser.\n *\n * @property {number} latitude\n * @returns {number}\n */\n\n\n (0, _createClass2.default)(ParseGeoPoint, [{\n key: \"latitude\",\n get: function ()\n /*: number*/\n {\n return this._latitude;\n },\n set: function (val\n /*: number*/\n ) {\n ParseGeoPoint._validate(val, this.longitude);\n\n this._latitude = val;\n }\n /**\n * East-west portion of the coordinate, in range [-180, 180].\n * Throws if set out of range in a modern browser.\n *\n * @property {number} longitude\n * @returns {number}\n */\n\n }, {\n key: \"longitude\",\n get: function ()\n /*: number*/\n {\n return this._longitude;\n },\n set: function (val\n /*: number*/\n ) {\n ParseGeoPoint._validate(this.latitude, val);\n\n this._longitude = val;\n }\n /**\n * Returns a JSON representation of the GeoPoint, suitable for Parse.\n *\n * @returns {object}\n */\n\n }, {\n key: \"toJSON\",\n value: function ()\n /*: { __type: string, latitude: number, longitude: number }*/\n {\n ParseGeoPoint._validate(this._latitude, this._longitude);\n\n return {\n __type: 'GeoPoint',\n latitude: this._latitude,\n longitude: this._longitude\n };\n }\n }, {\n key: \"equals\",\n value: function (other\n /*: mixed*/\n )\n /*: boolean*/\n {\n return other instanceof ParseGeoPoint && this.latitude === other.latitude && this.longitude === other.longitude;\n }\n /**\n * Returns the distance from this GeoPoint to another in radians.\n *\n * @param {Parse.GeoPoint} point the other Parse.GeoPoint.\n * @returns {number}\n */\n\n }, {\n key: \"radiansTo\",\n value: function (point\n /*: ParseGeoPoint*/\n )\n /*: number*/\n {\n var d2r = Math.PI / 180.0;\n var lat1rad = this.latitude * d2r;\n var long1rad = this.longitude * d2r;\n var lat2rad = point.latitude * d2r;\n var long2rad = point.longitude * d2r;\n var sinDeltaLatDiv2 = Math.sin((lat1rad - lat2rad) / 2);\n var sinDeltaLongDiv2 = Math.sin((long1rad - long2rad) / 2); // Square of half the straight line chord distance between both points.\n\n var a = sinDeltaLatDiv2 * sinDeltaLatDiv2 + Math.cos(lat1rad) * Math.cos(lat2rad) * sinDeltaLongDiv2 * sinDeltaLongDiv2;\n a = Math.min(1.0, a);\n return 2 * Math.asin(Math.sqrt(a));\n }\n /**\n * Returns the distance from this GeoPoint to another in kilometers.\n *\n * @param {Parse.GeoPoint} point the other Parse.GeoPoint.\n * @returns {number}\n */\n\n }, {\n key: \"kilometersTo\",\n value: function (point\n /*: ParseGeoPoint*/\n )\n /*: number*/\n {\n return this.radiansTo(point) * 6371.0;\n }\n /**\n * Returns the distance from this GeoPoint to another in miles.\n *\n * @param {Parse.GeoPoint} point the other Parse.GeoPoint.\n * @returns {number}\n */\n\n }, {\n key: \"milesTo\",\n value: function (point\n /*: ParseGeoPoint*/\n )\n /*: number*/\n {\n return this.radiansTo(point) * 3958.8;\n }\n /*\n * Throws an exception if the given lat-long is out of bounds.\n */\n\n }], [{\n key: \"_validate\",\n value: function (latitude\n /*: number*/\n , longitude\n /*: number*/\n ) {\n if (isNaN(latitude) || isNaN(longitude) || typeof latitude !== 'number' || typeof longitude !== 'number') {\n throw new TypeError('GeoPoint latitude and longitude must be valid numbers');\n }\n\n if (latitude < -90.0) {\n throw new TypeError('GeoPoint latitude out of bounds: ' + latitude + ' < -90.0.');\n }\n\n if (latitude > 90.0) {\n throw new TypeError('GeoPoint latitude out of bounds: ' + latitude + ' > 90.0.');\n }\n\n if (longitude < -180.0) {\n throw new TypeError('GeoPoint longitude out of bounds: ' + longitude + ' < -180.0.');\n }\n\n if (longitude > 180.0) {\n throw new TypeError('GeoPoint longitude out of bounds: ' + longitude + ' > 180.0.');\n }\n }\n /**\n * Creates a GeoPoint with the user's current location, if available.\n *\n * @static\n * @returns {Parse.GeoPoint} User's current location\n */\n\n }, {\n key: \"current\",\n value: function () {\n return navigator.geolocation.getCurrentPosition(function (location) {\n return new ParseGeoPoint(location.coords.latitude, location.coords.longitude);\n });\n }\n }]);\n return ParseGeoPoint;\n}();\n\nvar _default = ParseGeoPoint;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseGeoPoint.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseInstallation.js":
+/*!**************************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseInstallation.js ***!
+ \**************************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\nvar _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/reflect/construct */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/inherits */ \"../node_modules/@babel/runtime-corejs3/helpers/inherits.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js\"));\n\nvar _ParseObject2 = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function () {\n var Super = (0, _getPrototypeOf2.default)(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = (0, _getPrototypeOf2.default)(this).constructor;\n result = _Reflect$construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return (0, _possibleConstructorReturn2.default)(this, result);\n };\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false;\n if (_Reflect$construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar Installation = /*#__PURE__*/function (_ParseObject) {\n (0, _inherits2.default)(Installation, _ParseObject);\n\n var _super = _createSuper(Installation);\n\n function Installation(attributes\n /*: ?AttributeMap*/\n ) {\n var _this;\n\n (0, _classCallCheck2.default)(this, Installation);\n _this = _super.call(this, '_Installation');\n\n if (attributes && (0, _typeof2.default)(attributes) === 'object') {\n if (!_this.set(attributes || {})) {\n throw new Error(\"Can't create an invalid Installation\");\n }\n }\n\n return _this;\n }\n\n return Installation;\n}(_ParseObject2.default);\n\nexports[\"default\"] = Installation;\n\n_ParseObject2.default.registerSubclass('_Installation', Installation);\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseInstallation.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseLiveQuery.js":
+/*!***********************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseLiveQuery.js ***!
+ \***********************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/index-of */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\"));\n\nvar _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\"));\n\nvar _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/slicedToArray */ \"../node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js\"));\n\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/regenerator */ \"../node_modules/@babel/runtime-corejs3/regenerator/index.js\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/asyncToGenerator */ \"../node_modules/@babel/runtime-corejs3/helpers/asyncToGenerator.js\"));\n\nvar _EventEmitter = _interopRequireDefault(__webpack_require__(/*! ./EventEmitter */ \"../node_modules/parse/lib/browser/EventEmitter.js\"));\n\nvar _LiveQueryClient = _interopRequireDefault(__webpack_require__(/*! ./LiveQueryClient */ \"../node_modules/parse/lib/browser/LiveQueryClient.js\"));\n\nvar _CoreManager = _interopRequireDefault(__webpack_require__(/*! ./CoreManager */ \"../node_modules/parse/lib/browser/CoreManager.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n\nfunction getLiveQueryClient()\n/*: LiveQueryClient*/\n{\n return _CoreManager.default.getLiveQueryController().getDefaultLiveQueryClient();\n}\n/**\n * We expose three events to help you monitor the status of the WebSocket connection:\n *\n * Open - When we establish the WebSocket connection to the LiveQuery server, you'll get this event.\n *\n *
\n * Parse.LiveQuery.on('open', () => {\n *\n * }); \n *\n * Close - When we lose the WebSocket connection to the LiveQuery server, you'll get this event.\n *\n *
\n * Parse.LiveQuery.on('close', () => {\n *\n * }); \n *\n * Error - When some network error or LiveQuery server error happens, you'll get this event.\n *\n *
\n * Parse.LiveQuery.on('error', (error) => {\n *\n * }); \n *\n * @class Parse.LiveQuery\n * @static\n */\n\n\nvar LiveQuery = new _EventEmitter.default();\n/**\n * After open is called, the LiveQuery will try to send a connect request\n * to the LiveQuery server.\n */\n\nLiveQuery.open = /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var liveQueryClient;\n return _regenerator.default.wrap(function (_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return getLiveQueryClient();\n\n case 2:\n liveQueryClient = _context.sent;\n liveQueryClient.open();\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n}));\n/**\n * When you're done using LiveQuery, you can call Parse.LiveQuery.close().\n * This function will close the WebSocket connection to the LiveQuery server,\n * cancel the auto reconnect, and unsubscribe all subscriptions based on it.\n * If you call query.subscribe() after this, we'll create a new WebSocket\n * connection to the LiveQuery server.\n */\n\nLiveQuery.close = /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var liveQueryClient;\n return _regenerator.default.wrap(function (_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return getLiveQueryClient();\n\n case 2:\n liveQueryClient = _context2.sent;\n liveQueryClient.close();\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n})); // Register a default onError callback to make sure we do not crash on error\n\nLiveQuery.on('error', function () {});\nvar _default = LiveQuery;\nexports[\"default\"] = _default;\nvar defaultLiveQueryClient;\nvar DefaultLiveQueryController = {\n setDefaultLiveQueryClient: function (liveQueryClient\n /*: LiveQueryClient*/\n ) {\n defaultLiveQueryClient = liveQueryClient;\n },\n getDefaultLiveQueryClient: function ()\n /*: Promise*/\n {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var _yield$Promise$all, _yield$Promise$all2, currentUser, installationId, sessionToken, liveQueryServerURL, serverURL, protocol, host, applicationId, javascriptKey, masterKey;\n\n return _regenerator.default.wrap(function (_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!defaultLiveQueryClient) {\n _context3.next = 2;\n break;\n }\n\n return _context3.abrupt(\"return\", defaultLiveQueryClient);\n\n case 2:\n _context3.next = 4;\n return _promise.default.all([_CoreManager.default.getUserController().currentUserAsync(), _CoreManager.default.getInstallationController().currentInstallationId()]);\n\n case 4:\n _yield$Promise$all = _context3.sent;\n _yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 2);\n currentUser = _yield$Promise$all2[0];\n installationId = _yield$Promise$all2[1];\n sessionToken = currentUser ? currentUser.getSessionToken() : undefined;\n liveQueryServerURL = _CoreManager.default.get('LIVEQUERY_SERVER_URL');\n\n if (!(liveQueryServerURL && (0, _indexOf.default)(liveQueryServerURL).call(liveQueryServerURL, 'ws') !== 0)) {\n _context3.next = 12;\n break;\n }\n\n throw new Error('You need to set a proper Parse LiveQuery server url before using LiveQueryClient');\n\n case 12:\n // If we can not find Parse.liveQueryServerURL, we try to extract it from Parse.serverURL\n if (!liveQueryServerURL) {\n serverURL = _CoreManager.default.get('SERVER_URL');\n protocol = (0, _indexOf.default)(serverURL).call(serverURL, 'https') === 0 ? 'wss://' : 'ws://';\n host = serverURL.replace(/^https?:\\/\\//, '');\n liveQueryServerURL = protocol + host;\n\n _CoreManager.default.set('LIVEQUERY_SERVER_URL', liveQueryServerURL);\n }\n\n applicationId = _CoreManager.default.get('APPLICATION_ID');\n javascriptKey = _CoreManager.default.get('JAVASCRIPT_KEY');\n masterKey = _CoreManager.default.get('MASTER_KEY');\n defaultLiveQueryClient = new _LiveQueryClient.default({\n applicationId: applicationId,\n serverURL: liveQueryServerURL,\n javascriptKey: javascriptKey,\n masterKey: masterKey,\n sessionToken: sessionToken,\n installationId: installationId\n });\n defaultLiveQueryClient.on('error', function (error) {\n LiveQuery.emit('error', error);\n });\n defaultLiveQueryClient.on('open', function () {\n LiveQuery.emit('open');\n });\n defaultLiveQueryClient.on('close', function () {\n LiveQuery.emit('close');\n });\n return _context3.abrupt(\"return\", defaultLiveQueryClient);\n\n case 21:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n },\n _clearCachedDefaultClient: function () {\n defaultLiveQueryClient = null;\n }\n};\n\n_CoreManager.default.setLiveQueryController(DefaultLiveQueryController);\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseLiveQuery.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseObject.js":
+/*!********************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseObject.js ***!
+ \********************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _typeof3 = __webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\");\n\nvar _WeakMap = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/weak-map */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/weak-map.js\");\n\nvar _Array$isArray2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\");\n\nvar _getIteratorMethod = __webpack_require__(/*! @babel/runtime-corejs3/core-js/get-iterator-method */ \"../node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js\");\n\nvar _Symbol = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/symbol */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js\");\n\nvar _Array$from = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/from */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js\");\n\nvar _sliceInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/slice */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js\");\n\nvar _Object$defineProperty2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\nvar _Object$defineProperties = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-properties */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js\");\n\nvar _Object$getOwnPropertyDescriptors = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js\");\n\nvar _forEachInstanceProperty2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js\");\n\nvar _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js\");\n\nvar _filterInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js\");\n\nvar _Object$getOwnPropertySymbols = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js\");\n\nvar _Object$keys2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\");\n\n_Object$defineProperty2(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _map = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js\"));\n\nvar _find = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\"));\n\nvar _create = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/create */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/create.js\"));\n\nvar _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\"));\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/regenerator */ \"../node_modules/@babel/runtime-corejs3/regenerator/index.js\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/asyncToGenerator */ \"../node_modules/@babel/runtime-corejs3/helpers/asyncToGenerator.js\"));\n\nvar _concat = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/concat */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-prototype-of */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-prototype-of.js\"));\n\nvar _includes = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/includes */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js\"));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/json/stringify */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js\"));\n\nvar _forEach = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js\"));\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\"));\n\nvar _freeze = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/freeze */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/freeze.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _defineProperty3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ \"../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\"));\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/index-of */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\"));\n\nvar _CoreManager = _interopRequireDefault(__webpack_require__(/*! ./CoreManager */ \"../node_modules/parse/lib/browser/CoreManager.js\"));\n\nvar _canBeSerialized = _interopRequireDefault(__webpack_require__(/*! ./canBeSerialized */ \"../node_modules/parse/lib/browser/canBeSerialized.js\"));\n\nvar _decode = _interopRequireDefault(__webpack_require__(/*! ./decode */ \"../node_modules/parse/lib/browser/decode.js\"));\n\nvar _encode = _interopRequireDefault(__webpack_require__(/*! ./encode */ \"../node_modules/parse/lib/browser/encode.js\"));\n\nvar _escape2 = _interopRequireDefault(__webpack_require__(/*! ./escape */ \"../node_modules/parse/lib/browser/escape.js\"));\n\nvar _EventuallyQueue = _interopRequireDefault(__webpack_require__(/*! ./EventuallyQueue */ \"../node_modules/parse/lib/browser/EventuallyQueue.js\"));\n\nvar _ParseACL = _interopRequireDefault(__webpack_require__(/*! ./ParseACL */ \"../node_modules/parse/lib/browser/ParseACL.js\"));\n\nvar _parseDate = _interopRequireDefault(__webpack_require__(/*! ./parseDate */ \"../node_modules/parse/lib/browser/parseDate.js\"));\n\nvar _ParseError = _interopRequireDefault(__webpack_require__(/*! ./ParseError */ \"../node_modules/parse/lib/browser/ParseError.js\"));\n\nvar _ParseFile = _interopRequireDefault(__webpack_require__(/*! ./ParseFile */ \"../node_modules/parse/lib/browser/ParseFile.js\"));\n\nvar _promiseUtils = __webpack_require__(/*! ./promiseUtils */ \"../node_modules/parse/lib/browser/promiseUtils.js\");\n\nvar _LocalDatastoreUtils = __webpack_require__(/*! ./LocalDatastoreUtils */ \"../node_modules/parse/lib/browser/LocalDatastoreUtils.js\");\n\nvar _ParseOp = __webpack_require__(/*! ./ParseOp */ \"../node_modules/parse/lib/browser/ParseOp.js\");\n\nvar _ParseQuery = _interopRequireDefault(__webpack_require__(/*! ./ParseQuery */ \"../node_modules/parse/lib/browser/ParseQuery.js\"));\n\nvar _ParseRelation = _interopRequireDefault(__webpack_require__(/*! ./ParseRelation */ \"../node_modules/parse/lib/browser/ParseRelation.js\"));\n\nvar SingleInstanceStateController = _interopRequireWildcard(__webpack_require__(/*! ./SingleInstanceStateController */ \"../node_modules/parse/lib/browser/SingleInstanceStateController.js\"));\n\nvar _unique = _interopRequireDefault(__webpack_require__(/*! ./unique */ \"../node_modules/parse/lib/browser/unique.js\"));\n\nvar UniqueInstanceStateController = _interopRequireWildcard(__webpack_require__(/*! ./UniqueInstanceStateController */ \"../node_modules/parse/lib/browser/UniqueInstanceStateController.js\"));\n\nvar _unsavedChildren = _interopRequireDefault(__webpack_require__(/*! ./unsavedChildren */ \"../node_modules/parse/lib/browser/unsavedChildren.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof _WeakMap !== \"function\") return null;\n var cacheBabelInterop = new _WeakMap();\n var cacheNodeInterop = new _WeakMap();\n return (_getRequireWildcardCache = function (nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof3(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = _Object$defineProperty2 && _Object$getOwnPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n _Object$defineProperty2(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj.default = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof _Symbol !== \"undefined\" && _getIteratorMethod(o) || o[\"@@iterator\"];\n\n if (!it) {\n if (_Array$isArray2(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (_e2) {\n didErr = true;\n err = _e2;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n var _context18;\n\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n\n var n = _sliceInstanceProperty(_context18 = Object.prototype.toString.call(o)).call(_context18, 8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return _Array$from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = _Object$keys2(object);\n\n if (_Object$getOwnPropertySymbols) {\n var symbols = _Object$getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) {\n return _Object$getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n var _context16;\n\n _forEachInstanceProperty2(_context16 = ownKeys(Object(source), true)).call(_context16, function (key) {\n (0, _defineProperty3.default)(target, key, source[key]);\n });\n } else if (_Object$getOwnPropertyDescriptors) {\n _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source));\n } else {\n var _context17;\n\n _forEachInstanceProperty2(_context17 = ownKeys(Object(source))).call(_context17, function (key) {\n _Object$defineProperty2(target, key, _Object$getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nvar uuidv4 = __webpack_require__(/*! ./uuid */ \"../node_modules/parse/lib/browser/uuid.js\");\n/*:: export type Pointer = {\n __type: string,\n className: string,\n objectId: string,\n};*/\n\n/*:: type SaveParams = {\n method: string,\n path: string,\n body: AttributeMap,\n};*/\n\n/*:: export type SaveOptions = FullOptions & {\n cascadeSave?: boolean,\n context?: AttributeMap,\n};*/\n// Mapping of class names to constructors, so we can populate objects from the\n// server with appropriate subclasses of ParseObject\n\n\nvar classMap = {}; // Global counter for generating unique Ids for non-single-instance objects\n\nvar objectCount = 0; // On web clients, objects are single-instance: any two objects with the same Id\n// will have the same attributes. However, this may be dangerous default\n// behavior in a server scenario\n\nvar singleInstance = !_CoreManager.default.get('IS_NODE');\n\nif (singleInstance) {\n _CoreManager.default.setObjectStateController(SingleInstanceStateController);\n} else {\n _CoreManager.default.setObjectStateController(UniqueInstanceStateController);\n}\n\nfunction getServerUrlPath() {\n var serverUrl = _CoreManager.default.get('SERVER_URL');\n\n if (serverUrl[serverUrl.length - 1] !== '/') {\n serverUrl += '/';\n }\n\n var url = serverUrl.replace(/https?:\\/\\//, '');\n return url.substr((0, _indexOf.default)(url).call(url, '/'));\n}\n/**\n * Creates a new model with defined attributes.\n *\n * You won't normally call this method directly. It is recommended that\n * you use a subclass of Parse.Object
instead, created by calling\n * extend
.
\n *\n * However, if you don't want to use a subclass, or aren't sure which\n * subclass is appropriate, you can use this form:
\n * var object = new Parse.Object(\"ClassName\");\n * \n * That is basically equivalent to:\n * var MyClass = Parse.Object.extend(\"ClassName\");\n * var object = new MyClass();\n * \n *\n * @alias Parse.Object\n */\n\n\nvar ParseObject = /*#__PURE__*/function () {\n /**\n * @param {string} className The class name for the object\n * @param {object} attributes The initial set of data to store in the object.\n * @param {object} options The options for this object instance.\n */\n function ParseObject(className\n /*: ?string | { className: string, [attr: string]: mixed }*/\n , attributes\n /*:: ?: { [attr: string]: mixed }*/\n , options\n /*:: ?: { ignoreValidation: boolean }*/\n ) {\n (0, _classCallCheck2.default)(this, ParseObject);\n (0, _defineProperty3.default)(this, \"id\", void 0);\n (0, _defineProperty3.default)(this, \"_localId\", void 0);\n (0, _defineProperty3.default)(this, \"_objCount\", void 0);\n (0, _defineProperty3.default)(this, \"className\", void 0); // Enable legacy initializers\n\n if (typeof this.initialize === 'function') {\n this.initialize.apply(this, arguments);\n }\n\n var toSet = null;\n this._objCount = objectCount++;\n\n if (typeof className === 'string') {\n this.className = className;\n\n if (attributes && (0, _typeof2.default)(attributes) === 'object') {\n toSet = attributes;\n }\n } else if (className && (0, _typeof2.default)(className) === 'object') {\n this.className = className.className;\n toSet = {};\n\n for (var _attr in className) {\n if (_attr !== 'className') {\n toSet[_attr] = className[_attr];\n }\n }\n\n if (attributes && (0, _typeof2.default)(attributes) === 'object') {\n options = attributes;\n }\n }\n\n if (toSet && !this.set(toSet, options)) {\n throw new Error(\"Can't create an invalid Parse Object\");\n }\n }\n /**\n * The ID of this object, unique within its class.\n *\n * @property {string} id\n */\n\n\n (0, _createClass2.default)(ParseObject, [{\n key: \"attributes\",\n get:\n /** Prototype getters / setters **/\n function ()\n /*: AttributeMap*/\n {\n var stateController = _CoreManager.default.getObjectStateController();\n\n return (0, _freeze.default)(stateController.estimateAttributes(this._getStateIdentifier()));\n }\n /**\n * The first time this object was saved on the server.\n *\n * @property {Date} createdAt\n * @returns {Date}\n */\n\n }, {\n key: \"createdAt\",\n get: function ()\n /*: ?Date*/\n {\n return this._getServerData().createdAt;\n }\n /**\n * The last time this object was updated on the server.\n *\n * @property {Date} updatedAt\n * @returns {Date}\n */\n\n }, {\n key: \"updatedAt\",\n get: function ()\n /*: ?Date*/\n {\n return this._getServerData().updatedAt;\n }\n /** Private methods **/\n\n /**\n * Returns a local or server Id used uniquely identify this object\n *\n * @returns {string}\n */\n\n }, {\n key: \"_getId\",\n value: function ()\n /*: string*/\n {\n if (typeof this.id === 'string') {\n return this.id;\n }\n\n if (typeof this._localId === 'string') {\n return this._localId;\n }\n\n var localId = 'local' + uuidv4();\n this._localId = localId;\n return localId;\n }\n /**\n * Returns a unique identifier used to pull data from the State Controller.\n *\n * @returns {Parse.Object|object}\n */\n\n }, {\n key: \"_getStateIdentifier\",\n value: function ()\n /*: ParseObject | { id: string, className: string }*/\n {\n if (singleInstance) {\n var id = this.id;\n\n if (!id) {\n id = this._getId();\n }\n\n return {\n id: id,\n className: this.className\n };\n } else {\n return this;\n }\n }\n }, {\n key: \"_getServerData\",\n value: function ()\n /*: AttributeMap*/\n {\n var stateController = _CoreManager.default.getObjectStateController();\n\n return stateController.getServerData(this._getStateIdentifier());\n }\n }, {\n key: \"_clearServerData\",\n value: function () {\n var serverData = this._getServerData();\n\n var unset = {};\n\n for (var _attr2 in serverData) {\n unset[_attr2] = undefined;\n }\n\n var stateController = _CoreManager.default.getObjectStateController();\n\n stateController.setServerData(this._getStateIdentifier(), unset);\n }\n }, {\n key: \"_getPendingOps\",\n value: function ()\n /*: Array*/\n {\n var stateController = _CoreManager.default.getObjectStateController();\n\n return stateController.getPendingOps(this._getStateIdentifier());\n }\n /**\n * @param {Array} [keysToClear] - if specified, only ops matching\n * these fields will be cleared\n */\n\n }, {\n key: \"_clearPendingOps\",\n value: function (keysToClear\n /*:: ?: Array*/\n ) {\n var pending = this._getPendingOps();\n\n var latest = pending[pending.length - 1];\n var keys = keysToClear || (0, _keys.default)(latest);\n (0, _forEach.default)(keys).call(keys, function (key) {\n delete latest[key];\n });\n }\n }, {\n key: \"_getDirtyObjectAttributes\",\n value: function ()\n /*: AttributeMap*/\n {\n var attributes = this.attributes;\n\n var stateController = _CoreManager.default.getObjectStateController();\n\n var objectCache = stateController.getObjectCache(this._getStateIdentifier());\n var dirty = {};\n\n for (var _attr3 in attributes) {\n var val = attributes[_attr3];\n\n if (val && (0, _typeof2.default)(val) === 'object' && !(val instanceof ParseObject) && !(val instanceof _ParseFile.default) && !(val instanceof _ParseRelation.default)) {\n // Due to the way browsers construct maps, the key order will not change\n // unless the object is changed\n try {\n var json = (0, _encode.default)(val, false, true);\n var stringified = (0, _stringify.default)(json);\n\n if (objectCache[_attr3] !== stringified) {\n dirty[_attr3] = val;\n }\n } catch (e) {\n // Error occurred, possibly by a nested unsaved pointer in a mutable container\n // No matter how it happened, it indicates a change in the attribute\n dirty[_attr3] = val;\n }\n }\n }\n\n return dirty;\n }\n }, {\n key: \"_toFullJSON\",\n value: function (seen\n /*:: ?: Array*/\n , offline\n /*:: ?: boolean*/\n )\n /*: AttributeMap*/\n {\n var json\n /*: { [key: string]: mixed }*/\n = this.toJSON(seen, offline);\n json.__type = 'Object';\n json.className = this.className;\n return json;\n }\n }, {\n key: \"_getSaveJSON\",\n value: function ()\n /*: AttributeMap*/\n {\n var pending = this._getPendingOps();\n\n var dirtyObjects = this._getDirtyObjectAttributes();\n\n var json = {};\n\n for (var attr in dirtyObjects) {\n var isDotNotation = false;\n\n for (var i = 0; i < pending.length; i += 1) {\n for (var field in pending[i]) {\n // Dot notation operations are handled later\n if ((0, _includes.default)(field).call(field, '.')) {\n var fieldName = field.split('.')[0];\n\n if (fieldName === attr) {\n isDotNotation = true;\n break;\n }\n }\n }\n }\n\n if (!isDotNotation) {\n json[attr] = new _ParseOp.SetOp(dirtyObjects[attr]).toJSON();\n }\n }\n\n for (attr in pending[0]) {\n json[attr] = pending[0][attr].toJSON();\n }\n\n return json;\n }\n }, {\n key: \"_getSaveParams\",\n value: function ()\n /*: SaveParams*/\n {\n var method = this.id ? 'PUT' : 'POST';\n\n var body = this._getSaveJSON();\n\n var path = 'classes/' + this.className;\n\n if (_CoreManager.default.get('ALLOW_CUSTOM_OBJECT_ID')) {\n if (!this.createdAt) {\n method = 'POST';\n body.objectId = this.id;\n } else {\n method = 'PUT';\n path += '/' + this.id;\n }\n } else if (this.id) {\n path += '/' + this.id;\n } else if (this.className === '_User') {\n path = 'users';\n }\n\n return {\n method: method,\n body: body,\n path: path\n };\n }\n }, {\n key: \"_finishFetch\",\n value: function (serverData\n /*: AttributeMap*/\n ) {\n if (!this.id && serverData.objectId) {\n this.id = serverData.objectId;\n }\n\n var stateController = _CoreManager.default.getObjectStateController();\n\n stateController.initializeState(this._getStateIdentifier());\n var decoded = {};\n\n for (var _attr4 in serverData) {\n if (_attr4 === 'ACL') {\n decoded[_attr4] = new _ParseACL.default(serverData[_attr4]);\n } else if (_attr4 !== 'objectId') {\n decoded[_attr4] = (0, _decode.default)(serverData[_attr4]);\n\n if (decoded[_attr4] instanceof _ParseRelation.default) {\n decoded[_attr4]._ensureParentAndKey(this, _attr4);\n }\n }\n }\n\n if (decoded.createdAt && typeof decoded.createdAt === 'string') {\n decoded.createdAt = (0, _parseDate.default)(decoded.createdAt);\n }\n\n if (decoded.updatedAt && typeof decoded.updatedAt === 'string') {\n decoded.updatedAt = (0, _parseDate.default)(decoded.updatedAt);\n }\n\n if (!decoded.updatedAt && decoded.createdAt) {\n decoded.updatedAt = decoded.createdAt;\n }\n\n stateController.commitServerChanges(this._getStateIdentifier(), decoded);\n }\n }, {\n key: \"_setExisted\",\n value: function (existed\n /*: boolean*/\n ) {\n var stateController = _CoreManager.default.getObjectStateController();\n\n var state = stateController.getState(this._getStateIdentifier());\n\n if (state) {\n state.existed = existed;\n }\n }\n }, {\n key: \"_migrateId\",\n value: function (serverId\n /*: string*/\n ) {\n if (this._localId && serverId) {\n if (singleInstance) {\n var stateController = _CoreManager.default.getObjectStateController();\n\n var oldState = stateController.removeState(this._getStateIdentifier());\n this.id = serverId;\n delete this._localId;\n\n if (oldState) {\n stateController.initializeState(this._getStateIdentifier(), oldState);\n }\n } else {\n this.id = serverId;\n delete this._localId;\n }\n }\n }\n }, {\n key: \"_handleSaveResponse\",\n value: function (response\n /*: AttributeMap*/\n , status\n /*: number*/\n ) {\n var changes = {};\n\n var stateController = _CoreManager.default.getObjectStateController();\n\n var pending = stateController.popPendingState(this._getStateIdentifier());\n\n for (var attr in pending) {\n if (pending[attr] instanceof _ParseOp.RelationOp) {\n changes[attr] = pending[attr].applyTo(undefined, this, attr);\n } else if (!(attr in response)) {\n // Only SetOps and UnsetOps should not come back with results\n changes[attr] = pending[attr].applyTo(undefined);\n }\n }\n\n for (attr in response) {\n if ((attr === 'createdAt' || attr === 'updatedAt') && typeof response[attr] === 'string') {\n changes[attr] = (0, _parseDate.default)(response[attr]);\n } else if (attr === 'ACL') {\n changes[attr] = new _ParseACL.default(response[attr]);\n } else if (attr !== 'objectId') {\n var val = (0, _decode.default)(response[attr]);\n\n if (val && (0, _getPrototypeOf.default)(val) === Object.prototype) {\n changes[attr] = _objectSpread(_objectSpread({}, this.attributes[attr]), val);\n } else {\n changes[attr] = val;\n }\n\n if (changes[attr] instanceof _ParseOp.UnsetOp) {\n changes[attr] = undefined;\n }\n }\n }\n\n if (changes.createdAt && !changes.updatedAt) {\n changes.updatedAt = changes.createdAt;\n }\n\n this._migrateId(response.objectId);\n\n if (status !== 201) {\n this._setExisted(true);\n }\n\n stateController.commitServerChanges(this._getStateIdentifier(), changes);\n }\n }, {\n key: \"_handleSaveError\",\n value: function () {\n var stateController = _CoreManager.default.getObjectStateController();\n\n stateController.mergeFirstPendingState(this._getStateIdentifier());\n }\n }, {\n key: \"initialize\",\n value:\n /** Public methods **/\n function () {// NOOP\n }\n /**\n * Returns a JSON version of the object suitable for saving to Parse.\n *\n * @param seen\n * @param offline\n * @returns {object}\n */\n\n }, {\n key: \"toJSON\",\n value: function (seen\n /*: Array | void*/\n , offline\n /*:: ?: boolean*/\n )\n /*: AttributeMap*/\n {\n var seenEntry = this.id ? this.className + ':' + this.id : this;\n seen = seen || [seenEntry];\n var json = {};\n var attrs = this.attributes;\n\n for (var _attr5 in attrs) {\n if ((_attr5 === 'createdAt' || _attr5 === 'updatedAt') && attrs[_attr5].toJSON) {\n json[_attr5] = attrs[_attr5].toJSON();\n } else {\n json[_attr5] = (0, _encode.default)(attrs[_attr5], false, false, seen, offline);\n }\n }\n\n var pending = this._getPendingOps();\n\n for (var _attr6 in pending[0]) {\n json[_attr6] = pending[0][_attr6].toJSON(offline);\n }\n\n if (this.id) {\n json.objectId = this.id;\n }\n\n return json;\n }\n /**\n * Determines whether this ParseObject is equal to another ParseObject\n *\n * @param {object} other - An other object ot compare\n * @returns {boolean}\n */\n\n }, {\n key: \"equals\",\n value: function (other\n /*: mixed*/\n )\n /*: boolean*/\n {\n if (this === other) {\n return true;\n }\n\n return other instanceof ParseObject && this.className === other.className && this.id === other.id && typeof this.id !== 'undefined';\n }\n /**\n * Returns true if this object has been modified since its last\n * save/refresh. If an attribute is specified, it returns true only if that\n * particular attribute has been modified since the last save/refresh.\n *\n * @param {string} attr An attribute name (optional).\n * @returns {boolean}\n */\n\n }, {\n key: \"dirty\",\n value: function (attr\n /*:: ?: string*/\n )\n /*: boolean*/\n {\n if (!this.id) {\n return true;\n }\n\n var pendingOps = this._getPendingOps();\n\n var dirtyObjects = this._getDirtyObjectAttributes();\n\n if (attr) {\n if (dirtyObjects.hasOwnProperty(attr)) {\n return true;\n }\n\n for (var i = 0; i < pendingOps.length; i++) {\n if (pendingOps[i].hasOwnProperty(attr)) {\n return true;\n }\n }\n\n return false;\n }\n\n if ((0, _keys.default)(pendingOps[0]).length !== 0) {\n return true;\n }\n\n if ((0, _keys.default)(dirtyObjects).length !== 0) {\n return true;\n }\n\n return false;\n }\n /**\n * Returns an array of keys that have been modified since last save/refresh\n *\n * @returns {string[]}\n */\n\n }, {\n key: \"dirtyKeys\",\n value: function ()\n /*: Array*/\n {\n var pendingOps = this._getPendingOps();\n\n var keys = {};\n\n for (var i = 0; i < pendingOps.length; i++) {\n for (var _attr7 in pendingOps[i]) {\n keys[_attr7] = true;\n }\n }\n\n var dirtyObjects = this._getDirtyObjectAttributes();\n\n for (var _attr8 in dirtyObjects) {\n keys[_attr8] = true;\n }\n\n return (0, _keys.default)(keys);\n }\n /**\n * Returns true if the object has been fetched.\n *\n * @returns {boolean}\n */\n\n }, {\n key: \"isDataAvailable\",\n value: function ()\n /*: boolean*/\n {\n var serverData = this._getServerData();\n\n return !!(0, _keys.default)(serverData).length;\n }\n /**\n * Gets a Pointer referencing this Object.\n *\n * @returns {Pointer}\n */\n\n }, {\n key: \"toPointer\",\n value: function ()\n /*: Pointer*/\n {\n if (!this.id) {\n throw new Error('Cannot create a pointer to an unsaved ParseObject');\n }\n\n return {\n __type: 'Pointer',\n className: this.className,\n objectId: this.id\n };\n }\n /**\n * Gets a Pointer referencing this Object.\n *\n * @returns {Pointer}\n */\n\n }, {\n key: \"toOfflinePointer\",\n value: function ()\n /*: Pointer*/\n {\n if (!this._localId) {\n throw new Error('Cannot create a offline pointer to a saved ParseObject');\n }\n\n return {\n __type: 'Object',\n className: this.className,\n _localId: this._localId\n };\n }\n /**\n * Gets the value of an attribute.\n *\n * @param {string} attr The string name of an attribute.\n * @returns {*}\n */\n\n }, {\n key: \"get\",\n value: function (attr\n /*: string*/\n )\n /*: mixed*/\n {\n return this.attributes[attr];\n }\n /**\n * Gets a relation on the given class for the attribute.\n *\n * @param {string} attr The attribute to get the relation for.\n * @returns {Parse.Relation}\n */\n\n }, {\n key: \"relation\",\n value: function (attr\n /*: string*/\n )\n /*: ParseRelation*/\n {\n var value = this.get(attr);\n\n if (value) {\n if (!(value instanceof _ParseRelation.default)) {\n throw new Error('Called relation() on non-relation field ' + attr);\n }\n\n value._ensureParentAndKey(this, attr);\n\n return value;\n }\n\n return new _ParseRelation.default(this, attr);\n }\n /**\n * Gets the HTML-escaped value of an attribute.\n *\n * @param {string} attr The string name of an attribute.\n * @returns {string}\n */\n\n }, {\n key: \"escape\",\n value: function (attr\n /*: string*/\n )\n /*: string*/\n {\n var val = this.attributes[attr];\n\n if (val == null) {\n return '';\n }\n\n if (typeof val !== 'string') {\n if (typeof val.toString !== 'function') {\n return '';\n }\n\n val = val.toString();\n }\n\n return (0, _escape2.default)(val);\n }\n /**\n * Returns true
if the attribute contains a value that is not\n * null or undefined.\n *\n * @param {string} attr The string name of the attribute.\n * @returns {boolean}\n */\n\n }, {\n key: \"has\",\n value: function (attr\n /*: string*/\n )\n /*: boolean*/\n {\n var attributes = this.attributes;\n\n if (attributes.hasOwnProperty(attr)) {\n return attributes[attr] != null;\n }\n\n return false;\n }\n /**\n * Sets a hash of model attributes on the object.\n *\n * You can call it with an object containing keys and values, with one\n * key and value, or dot notation. For example:
\n * gameTurn.set({\n * player: player1,\n * diceRoll: 2\n * }, {\n * error: function(gameTurnAgain, error) {\n * // The set failed validation.\n * }\n * });\n *\n * game.set(\"currentPlayer\", player2, {\n * error: function(gameTurnAgain, error) {\n * // The set failed validation.\n * }\n * });\n *\n * game.set(\"finished\", true); \n *\n * game.set(\"player.score\", 10); \n *\n * @param {(string|object)} key The key to set.\n * @param {(string|object)} value The value to give it.\n * @param {object} options A set of options for the set.\n * The only supported option is error
.\n * @returns {(ParseObject|boolean)} true if the set succeeded.\n */\n\n }, {\n key: \"set\",\n value: function (key\n /*: mixed*/\n , value\n /*: mixed*/\n , options\n /*:: ?: mixed*/\n )\n /*: ParseObject | boolean*/\n {\n var changes = {};\n var newOps = {};\n\n if (key && (0, _typeof2.default)(key) === 'object') {\n changes = key;\n options = value;\n } else if (typeof key === 'string') {\n changes[key] = value;\n } else {\n return this;\n }\n\n options = options || {};\n var readonly = [];\n\n if (typeof this.constructor.readOnlyAttributes === 'function') {\n readonly = (0, _concat.default)(readonly).call(readonly, this.constructor.readOnlyAttributes());\n }\n\n for (var k in changes) {\n if (k === 'createdAt' || k === 'updatedAt') {\n // This property is read-only, but for legacy reasons we silently\n // ignore it\n continue;\n }\n\n if ((0, _indexOf.default)(readonly).call(readonly, k) > -1) {\n throw new Error('Cannot modify readonly attribute: ' + k);\n }\n\n if (options.unset) {\n newOps[k] = new _ParseOp.UnsetOp();\n } else if (changes[k] instanceof _ParseOp.Op) {\n newOps[k] = changes[k];\n } else if (changes[k] && (0, _typeof2.default)(changes[k]) === 'object' && typeof changes[k].__op === 'string') {\n newOps[k] = (0, _ParseOp.opFromJSON)(changes[k]);\n } else if (k === 'objectId' || k === 'id') {\n if (typeof changes[k] === 'string') {\n this.id = changes[k];\n }\n } else if (k === 'ACL' && (0, _typeof2.default)(changes[k]) === 'object' && !(changes[k] instanceof _ParseACL.default)) {\n newOps[k] = new _ParseOp.SetOp(new _ParseACL.default(changes[k]));\n } else if (changes[k] instanceof _ParseRelation.default) {\n var relation = new _ParseRelation.default(this, k);\n relation.targetClassName = changes[k].targetClassName;\n newOps[k] = new _ParseOp.SetOp(relation);\n } else {\n newOps[k] = new _ParseOp.SetOp(changes[k]);\n }\n }\n\n var currentAttributes = this.attributes; // Calculate new values\n\n var newValues = {};\n\n for (var _attr9 in newOps) {\n if (newOps[_attr9] instanceof _ParseOp.RelationOp) {\n newValues[_attr9] = newOps[_attr9].applyTo(currentAttributes[_attr9], this, _attr9);\n } else if (!(newOps[_attr9] instanceof _ParseOp.UnsetOp)) {\n newValues[_attr9] = newOps[_attr9].applyTo(currentAttributes[_attr9]);\n }\n } // Validate changes\n\n\n if (!options.ignoreValidation) {\n var validation = this.validate(newValues);\n\n if (validation) {\n if (typeof options.error === 'function') {\n options.error(this, validation);\n }\n\n return false;\n }\n } // Consolidate Ops\n\n\n var pendingOps = this._getPendingOps();\n\n var last = pendingOps.length - 1;\n\n var stateController = _CoreManager.default.getObjectStateController();\n\n for (var _attr10 in newOps) {\n var nextOp = newOps[_attr10].mergeWith(pendingOps[last][_attr10]);\n\n stateController.setPendingOp(this._getStateIdentifier(), _attr10, nextOp);\n }\n\n return this;\n }\n /**\n * Remove an attribute from the model. This is a noop if the attribute doesn't\n * exist.\n *\n * @param {string} attr The string name of an attribute.\n * @param options\n * @returns {(ParseObject | boolean)}\n */\n\n }, {\n key: \"unset\",\n value: function (attr\n /*: string*/\n , options\n /*:: ?: { [opt: string]: mixed }*/\n )\n /*: ParseObject | boolean*/\n {\n options = options || {};\n options.unset = true;\n return this.set(attr, null, options);\n }\n /**\n * Atomically increments the value of the given attribute the next time the\n * object is saved. If no amount is specified, 1 is used by default.\n *\n * @param attr {String} The key.\n * @param amount {Number} The amount to increment by (optional).\n * @returns {(ParseObject|boolean)}\n */\n\n }, {\n key: \"increment\",\n value: function (attr\n /*: string*/\n , amount\n /*:: ?: number*/\n )\n /*: ParseObject | boolean*/\n {\n if (typeof amount === 'undefined') {\n amount = 1;\n }\n\n if (typeof amount !== 'number') {\n throw new Error('Cannot increment by a non-numeric amount.');\n }\n\n return this.set(attr, new _ParseOp.IncrementOp(amount));\n }\n /**\n * Atomically decrements the value of the given attribute the next time the\n * object is saved. If no amount is specified, 1 is used by default.\n *\n * @param attr {String} The key.\n * @param amount {Number} The amount to decrement by (optional).\n * @returns {(ParseObject | boolean)}\n */\n\n }, {\n key: \"decrement\",\n value: function (attr\n /*: string*/\n , amount\n /*:: ?: number*/\n )\n /*: ParseObject | boolean*/\n {\n if (typeof amount === 'undefined') {\n amount = 1;\n }\n\n if (typeof amount !== 'number') {\n throw new Error('Cannot decrement by a non-numeric amount.');\n }\n\n return this.set(attr, new _ParseOp.IncrementOp(amount * -1));\n }\n /**\n * Atomically add an object to the end of the array associated with a given\n * key.\n *\n * @param attr {String} The key.\n * @param item {} The item to add.\n * @returns {(ParseObject | boolean)}\n */\n\n }, {\n key: \"add\",\n value: function (attr\n /*: string*/\n , item\n /*: mixed*/\n )\n /*: ParseObject | boolean*/\n {\n return this.set(attr, new _ParseOp.AddOp([item]));\n }\n /**\n * Atomically add the objects to the end of the array associated with a given\n * key.\n *\n * @param attr {String} The key.\n * @param items {Object[]} The items to add.\n * @returns {(ParseObject | boolean)}\n */\n\n }, {\n key: \"addAll\",\n value: function (attr\n /*: string*/\n , items\n /*: Array*/\n )\n /*: ParseObject | boolean*/\n {\n return this.set(attr, new _ParseOp.AddOp(items));\n }\n /**\n * Atomically add an object to the array associated with a given key, only\n * if it is not already present in the array. The position of the insert is\n * not guaranteed.\n *\n * @param attr {String} The key.\n * @param item {} The object to add.\n * @returns {(ParseObject | boolean)}\n */\n\n }, {\n key: \"addUnique\",\n value: function (attr\n /*: string*/\n , item\n /*: mixed*/\n )\n /*: ParseObject | boolean*/\n {\n return this.set(attr, new _ParseOp.AddUniqueOp([item]));\n }\n /**\n * Atomically add the objects to the array associated with a given key, only\n * if it is not already present in the array. The position of the insert is\n * not guaranteed.\n *\n * @param attr {String} The key.\n * @param items {Object[]} The objects to add.\n * @returns {(ParseObject | boolean)}\n */\n\n }, {\n key: \"addAllUnique\",\n value: function (attr\n /*: string*/\n , items\n /*: Array*/\n )\n /*: ParseObject | boolean*/\n {\n return this.set(attr, new _ParseOp.AddUniqueOp(items));\n }\n /**\n * Atomically remove all instances of an object from the array associated\n * with a given key.\n *\n * @param attr {String} The key.\n * @param item {} The object to remove.\n * @returns {(ParseObject | boolean)}\n */\n\n }, {\n key: \"remove\",\n value: function (attr\n /*: string*/\n , item\n /*: mixed*/\n )\n /*: ParseObject | boolean*/\n {\n return this.set(attr, new _ParseOp.RemoveOp([item]));\n }\n /**\n * Atomically remove all instances of the objects from the array associated\n * with a given key.\n *\n * @param attr {String} The key.\n * @param items {Object[]} The object to remove.\n * @returns {(ParseObject | boolean)}\n */\n\n }, {\n key: \"removeAll\",\n value: function (attr\n /*: string*/\n , items\n /*: Array*/\n )\n /*: ParseObject | boolean*/\n {\n return this.set(attr, new _ParseOp.RemoveOp(items));\n }\n /**\n * Returns an instance of a subclass of Parse.Op describing what kind of\n * modification has been performed on this field since the last time it was\n * saved. For example, after calling object.increment(\"x\"), calling\n * object.op(\"x\") would return an instance of Parse.Op.Increment.\n *\n * @param attr {String} The key.\n * @returns {Parse.Op} The operation, or undefined if none.\n */\n\n }, {\n key: \"op\",\n value: function (attr\n /*: string*/\n )\n /*: ?Op*/\n {\n var pending = this._getPendingOps();\n\n for (var i = pending.length; i--;) {\n if (pending[i][attr]) {\n return pending[i][attr];\n }\n }\n }\n /**\n * Creates a new model with identical attributes to this one.\n *\n * @returns {Parse.Object}\n */\n\n }, {\n key: \"clone\",\n value: function clone()\n /*: any*/\n {\n var clone = new this.constructor(this.className);\n var attributes = this.attributes;\n\n if (typeof this.constructor.readOnlyAttributes === 'function') {\n var readonly = this.constructor.readOnlyAttributes() || []; // Attributes are frozen, so we have to rebuild an object,\n // rather than delete readonly keys\n\n var copy = {};\n\n for (var a in attributes) {\n if ((0, _indexOf.default)(readonly).call(readonly, a) < 0) {\n copy[a] = attributes[a];\n }\n }\n\n attributes = copy;\n }\n\n if (clone.set) {\n clone.set(attributes);\n }\n\n return clone;\n }\n /**\n * Creates a new instance of this object. Not to be confused with clone()\n *\n * @returns {Parse.Object}\n */\n\n }, {\n key: \"newInstance\",\n value: function ()\n /*: any*/\n {\n var clone = new this.constructor(this.className);\n clone.id = this.id;\n\n if (singleInstance) {\n // Just return an object with the right id\n return clone;\n }\n\n var stateController = _CoreManager.default.getObjectStateController();\n\n if (stateController) {\n stateController.duplicateState(this._getStateIdentifier(), clone._getStateIdentifier());\n }\n\n return clone;\n }\n /**\n * Returns true if this object has never been saved to Parse.\n *\n * @returns {boolean}\n */\n\n }, {\n key: \"isNew\",\n value: function ()\n /*: boolean*/\n {\n return !this.id;\n }\n /**\n * Returns true if this object was created by the Parse server when the\n * object might have already been there (e.g. in the case of a Facebook\n * login)\n *\n * @returns {boolean}\n */\n\n }, {\n key: \"existed\",\n value: function ()\n /*: boolean*/\n {\n if (!this.id) {\n return false;\n }\n\n var stateController = _CoreManager.default.getObjectStateController();\n\n var state = stateController.getState(this._getStateIdentifier());\n\n if (state) {\n return state.existed;\n }\n\n return false;\n }\n /**\n * Returns true if this object exists on the Server\n *\n * @param {object} options\n * Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * \n * @returns {Promise} A boolean promise that is fulfilled if object exists.\n */\n\n }, {\n key: \"exists\",\n value: function () {\n var _exists = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(options\n /*:: ?: RequestOptions*/\n ) {\n var query;\n return _regenerator.default.wrap(function (_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (this.id) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\", false);\n\n case 2:\n _context.prev = 2;\n query = new _ParseQuery.default(this.className);\n _context.next = 6;\n return query.get(this.id, options);\n\n case 6:\n return _context.abrupt(\"return\", true);\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](2);\n\n if (!(_context.t0.code === _ParseError.default.OBJECT_NOT_FOUND)) {\n _context.next = 13;\n break;\n }\n\n return _context.abrupt(\"return\", false);\n\n case 13:\n throw _context.t0;\n\n case 14:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[2, 9]]);\n }));\n\n return function () {\n return _exists.apply(this, arguments);\n };\n }()\n /**\n * Checks if the model is currently in a valid state.\n *\n * @returns {boolean}\n */\n\n }, {\n key: \"isValid\",\n value: function ()\n /*: boolean*/\n {\n return !this.validate(this.attributes);\n }\n /**\n * You should not call this function directly unless you subclass\n * Parse.Object
, in which case you can override this method\n * to provide additional validation on set
and\n * save
. Your implementation should return\n *\n * @param {object} attrs The current data to validate.\n * @returns {Parse.Error|boolean} False if the data is valid. An error object otherwise.\n * @see Parse.Object#set\n */\n\n }, {\n key: \"validate\",\n value: function (attrs\n /*: AttributeMap*/\n )\n /*: ParseError | boolean*/\n {\n if (attrs.hasOwnProperty('ACL') && !(attrs.ACL instanceof _ParseACL.default)) {\n return new _ParseError.default(_ParseError.default.OTHER_CAUSE, 'ACL must be a Parse ACL.');\n }\n\n for (var _key in attrs) {\n if (!/^[A-Za-z][0-9A-Za-z_.]*$/.test(_key)) {\n return new _ParseError.default(_ParseError.default.INVALID_KEY_NAME);\n }\n }\n\n return false;\n }\n /**\n * Returns the ACL for this object.\n *\n * @returns {Parse.ACL} An instance of Parse.ACL.\n * @see Parse.Object#get\n */\n\n }, {\n key: \"getACL\",\n value: function ()\n /*: ?ParseACL*/\n {\n var acl = this.get('ACL');\n\n if (acl instanceof _ParseACL.default) {\n return acl;\n }\n\n return null;\n }\n /**\n * Sets the ACL to be used for this object.\n *\n * @param {Parse.ACL} acl An instance of Parse.ACL.\n * @param {object} options\n * @returns {(ParseObject | boolean)} Whether the set passed validation.\n * @see Parse.Object#set\n */\n\n }, {\n key: \"setACL\",\n value: function (acl\n /*: ParseACL*/\n , options\n /*:: ?: mixed*/\n )\n /*: ParseObject | boolean*/\n {\n return this.set('ACL', acl, options);\n }\n /**\n * Clears any (or specific) changes to this object made since the last call to save()\n *\n * @param {string} [keys] - specify which fields to revert\n */\n\n }, {\n key: \"revert\",\n value: function ()\n /*: void*/\n {\n var keysToRevert;\n\n for (var _len = arguments.length, keys = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {\n keys[_key2] = arguments[_key2];\n }\n\n if (keys.length) {\n keysToRevert = [];\n\n var _iterator = _createForOfIteratorHelper(keys),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _key3 = _step.value;\n\n if (typeof _key3 === 'string') {\n keysToRevert.push(_key3);\n } else {\n throw new Error('Parse.Object#revert expects either no, or a list of string, arguments.');\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n this._clearPendingOps(keysToRevert);\n }\n /**\n * Clears all attributes on a model\n *\n * @returns {(ParseObject | boolean)}\n */\n\n }, {\n key: \"clear\",\n value: function ()\n /*: ParseObject | boolean*/\n {\n var attributes = this.attributes;\n var erasable = {};\n var readonly = ['createdAt', 'updatedAt'];\n\n if (typeof this.constructor.readOnlyAttributes === 'function') {\n readonly = (0, _concat.default)(readonly).call(readonly, this.constructor.readOnlyAttributes());\n }\n\n for (var _attr11 in attributes) {\n if ((0, _indexOf.default)(readonly).call(readonly, _attr11) < 0) {\n erasable[_attr11] = true;\n }\n }\n\n return this.set(erasable, {\n unset: true\n });\n }\n /**\n * Fetch the model from the server. If the server's representation of the\n * model differs from its current attributes, they will be overriden.\n *\n * @param {object} options\n * Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * include: The name(s) of the key(s) to include. Can be a string, an array of strings,\n * or an array of array of strings.\n * context: A dictionary that is accessible in Cloud Code `beforeFind` trigger.\n * \n * @returns {Promise} A promise that is fulfilled when the fetch\n * completes.\n */\n\n }, {\n key: \"fetch\",\n value: function (options\n /*: RequestOptions*/\n )\n /*: Promise*/\n {\n options = options || {};\n var fetchOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n fetchOptions.useMasterKey = options.useMasterKey;\n }\n\n if (options.hasOwnProperty('sessionToken')) {\n fetchOptions.sessionToken = options.sessionToken;\n }\n\n if (options.hasOwnProperty('context') && (0, _typeof2.default)(options.context) === 'object') {\n fetchOptions.context = options.context;\n }\n\n if (options.hasOwnProperty('include')) {\n fetchOptions.include = [];\n\n if ((0, _isArray.default)(options.include)) {\n var _context2;\n\n (0, _forEach.default)(_context2 = options.include).call(_context2, function (key) {\n if ((0, _isArray.default)(key)) {\n var _context3;\n\n fetchOptions.include = (0, _concat.default)(_context3 = fetchOptions.include).call(_context3, key);\n } else {\n fetchOptions.include.push(key);\n }\n });\n } else {\n fetchOptions.include.push(options.include);\n }\n }\n\n var controller = _CoreManager.default.getObjectController();\n\n return controller.fetch(this, true, fetchOptions);\n }\n /**\n * Fetch the model from the server. If the server's representation of the\n * model differs from its current attributes, they will be overriden.\n *\n * Includes nested Parse.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetched.\n *\n * @param {string | Array>} keys The name(s) of the key(s) to include.\n * @param {object} options\n * Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * \n * @returns {Promise} A promise that is fulfilled when the fetch\n * completes.\n */\n\n }, {\n key: \"fetchWithInclude\",\n value: function (keys\n /*: String | Array>*/\n , options\n /*: RequestOptions*/\n )\n /*: Promise*/\n {\n options = options || {};\n options.include = keys;\n return this.fetch(options);\n }\n /**\n * Saves this object to the server at some unspecified time in the future,\n * even if Parse is currently inaccessible.\n *\n * Use this when you may not have a solid network connection, and don't need to know when the save completes.\n * If there is some problem with the object such that it can't be saved, it will be silently discarded.\n *\n * Objects saved with this method will be stored locally in an on-disk cache until they can be delivered to Parse.\n * They will be sent immediately if possible. Otherwise, they will be sent the next time a network connection is\n * available. Objects saved this way will persist even after the app is closed, in which case they will be sent the\n * next time the app is opened.\n *\n * @param {object} [options]\n * Used to pass option parameters to method if arg1 and arg2 were both passed as strings.\n * Valid options are:\n * \n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * cascadeSave: If `false`, nested objects will not be saved (default is `true`).\n * context: A dictionary that is accessible in Cloud Code `beforeSave` and `afterSave` triggers.\n * \n * @returns {Promise} A promise that is fulfilled when the save\n * completes.\n */\n\n }, {\n key: \"saveEventually\",\n value: function () {\n var _saveEventually = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(options\n /*: SaveOptions*/\n ) {\n return _regenerator.default.wrap(function (_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.prev = 0;\n _context4.next = 3;\n return this.save(null, options);\n\n case 3:\n _context4.next = 11;\n break;\n\n case 5:\n _context4.prev = 5;\n _context4.t0 = _context4[\"catch\"](0);\n\n if (!(_context4.t0.message === 'XMLHttpRequest failed: \"Unable to connect to the Parse API\"')) {\n _context4.next = 11;\n break;\n }\n\n _context4.next = 10;\n return _EventuallyQueue.default.save(this, options);\n\n case 10:\n _EventuallyQueue.default.poll();\n\n case 11:\n return _context4.abrupt(\"return\", this);\n\n case 12:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee2, this, [[0, 5]]);\n }));\n\n return function () {\n return _saveEventually.apply(this, arguments);\n };\n }()\n /**\n * Set a hash of model attributes, and save the model to the server.\n * updatedAt will be updated when the request returns.\n * You can either call it as:\n * object.save(); \n * or\n * object.save(attrs); \n * or\n * object.save(null, options); \n * or\n * object.save(attrs, options); \n * or\n * object.save(key, value); \n * or\n * object.save(key, value, options); \n *\n * Example 1: \n * gameTurn.save({\n * player: \"Jake Cutter\",\n * diceRoll: 2\n * }).then(function(gameTurnAgain) {\n * // The save was successful.\n * }, function(error) {\n * // The save failed. Error is an instance of Parse.Error.\n * }); \n *\n * Example 2: \n * gameTurn.save(\"player\", \"Jake Cutter\"); \n *\n * @param {string | object | null} [arg1]\n * Valid options are:\n * `Object` - Key/value pairs to update on the object. \n * `String` Key - Key of attribute to update (requires arg2 to also be string) \n * `null` - Passing null for arg1 allows you to save the object with options passed in arg2. \n * \n * @param {string | object} [arg2]\n * \n * `String` Value - If arg1 was passed as a key, arg2 is the value that should be set on that key. \n * `Object` Options - Valid options are:\n * \n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * cascadeSave: If `false`, nested objects will not be saved (default is `true`).\n * context: A dictionary that is accessible in Cloud Code `beforeSave` and `afterSave` triggers.\n * \n * \n * \n * @param {object} [arg3]\n * Used to pass option parameters to method if arg1 and arg2 were both passed as strings.\n * Valid options are:\n * \n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * cascadeSave: If `false`, nested objects will not be saved (default is `true`).\n * context: A dictionary that is accessible in Cloud Code `beforeSave` and `afterSave` triggers.\n * \n * @returns {Promise} A promise that is fulfilled when the save\n * completes.\n */\n\n }, {\n key: \"save\",\n value: function (arg1\n /*: ?string | { [attr: string]: mixed }*/\n , arg2\n /*: SaveOptions | mixed*/\n , arg3\n /*:: ?: SaveOptions*/\n )\n /*: Promise*/\n {\n var _this = this;\n\n var attrs;\n var options;\n\n if ((0, _typeof2.default)(arg1) === 'object' || typeof arg1 === 'undefined') {\n attrs = arg1;\n\n if ((0, _typeof2.default)(arg2) === 'object') {\n options = arg2;\n }\n } else {\n attrs = {};\n attrs[arg1] = arg2;\n options = arg3;\n }\n\n if (attrs) {\n var validation = this.validate(attrs);\n\n if (validation) {\n return _promise.default.reject(validation);\n }\n\n this.set(attrs, options);\n }\n\n options = options || {};\n var saveOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n saveOptions.useMasterKey = !!options.useMasterKey;\n }\n\n if (options.hasOwnProperty('sessionToken') && typeof options.sessionToken === 'string') {\n saveOptions.sessionToken = options.sessionToken;\n }\n\n if (options.hasOwnProperty('installationId') && typeof options.installationId === 'string') {\n saveOptions.installationId = options.installationId;\n }\n\n if (options.hasOwnProperty('context') && (0, _typeof2.default)(options.context) === 'object') {\n saveOptions.context = options.context;\n }\n\n var controller = _CoreManager.default.getObjectController();\n\n var unsaved = options.cascadeSave !== false ? (0, _unsavedChildren.default)(this) : null;\n return controller.save(unsaved, saveOptions).then(function () {\n return controller.save(_this, saveOptions);\n });\n }\n /**\n * Deletes this object from the server at some unspecified time in the future,\n * even if Parse is currently inaccessible.\n *\n * Use this when you may not have a solid network connection,\n * and don't need to know when the delete completes. If there is some problem with the object\n * such that it can't be deleted, the request will be silently discarded.\n *\n * Delete instructions made with this method will be stored locally in an on-disk cache until they can be transmitted\n * to Parse. They will be sent immediately if possible. Otherwise, they will be sent the next time a network connection\n * is available. Delete requests will persist even after the app is closed, in which case they will be sent the\n * next time the app is opened.\n *\n * @param {object} [options]\n * Valid options are:\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * context: A dictionary that is accessible in Cloud Code `beforeDelete` and `afterDelete` triggers.\n * \n * @returns {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n\n }, {\n key: \"destroyEventually\",\n value: function () {\n var _destroyEventually = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(options\n /*: RequestOptions*/\n ) {\n return _regenerator.default.wrap(function (_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.prev = 0;\n _context5.next = 3;\n return this.destroy(options);\n\n case 3:\n _context5.next = 11;\n break;\n\n case 5:\n _context5.prev = 5;\n _context5.t0 = _context5[\"catch\"](0);\n\n if (!(_context5.t0.message === 'XMLHttpRequest failed: \"Unable to connect to the Parse API\"')) {\n _context5.next = 11;\n break;\n }\n\n _context5.next = 10;\n return _EventuallyQueue.default.destroy(this, options);\n\n case 10:\n _EventuallyQueue.default.poll();\n\n case 11:\n return _context5.abrupt(\"return\", this);\n\n case 12:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee3, this, [[0, 5]]);\n }));\n\n return function () {\n return _destroyEventually.apply(this, arguments);\n };\n }()\n /**\n * Destroy this model on the server if it was already persisted.\n *\n * @param {object} options\n * Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * context: A dictionary that is accessible in Cloud Code `beforeDelete` and `afterDelete` triggers.\n * \n * @returns {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n\n }, {\n key: \"destroy\",\n value: function (options\n /*: RequestOptions*/\n )\n /*: Promise*/\n {\n options = options || {};\n var destroyOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n destroyOptions.useMasterKey = options.useMasterKey;\n }\n\n if (options.hasOwnProperty('sessionToken')) {\n destroyOptions.sessionToken = options.sessionToken;\n }\n\n if (options.hasOwnProperty('context') && (0, _typeof2.default)(options.context) === 'object') {\n destroyOptions.context = options.context;\n }\n\n if (!this.id) {\n return _promise.default.resolve();\n }\n\n return _CoreManager.default.getObjectController().destroy(this, destroyOptions);\n }\n /**\n * Asynchronously stores the object and every object it points to in the local datastore,\n * recursively, using a default pin name: _default.\n *\n * If those other objects have not been fetched from Parse, they will not be stored.\n * However, if they have changed data, all the changes will be retained.\n *\n * \n * await object.pin();\n * \n *\n * To retrieve object:\n * query.fromLocalDatastore()
or query.fromPin()
\n *\n * @returns {Promise} A promise that is fulfilled when the pin completes.\n */\n\n }, {\n key: \"pin\",\n value: function ()\n /*: Promise*/\n {\n return ParseObject.pinAllWithName(_LocalDatastoreUtils.DEFAULT_PIN, [this]);\n }\n /**\n * Asynchronously removes the object and every object it points to in the local datastore,\n * recursively, using a default pin name: _default.\n *\n * \n * await object.unPin();\n * \n *\n * @returns {Promise} A promise that is fulfilled when the unPin completes.\n */\n\n }, {\n key: \"unPin\",\n value: function ()\n /*: Promise*/\n {\n return ParseObject.unPinAllWithName(_LocalDatastoreUtils.DEFAULT_PIN, [this]);\n }\n /**\n * Asynchronously returns if the object is pinned\n *\n * \n * const isPinned = await object.isPinned();\n * \n *\n * @returns {Promise} A boolean promise that is fulfilled if object is pinned.\n */\n\n }, {\n key: \"isPinned\",\n value: function () {\n var _isPinned = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var localDatastore, objectKey, pin;\n return _regenerator.default.wrap(function (_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n localDatastore = _CoreManager.default.getLocalDatastore();\n\n if (localDatastore.isEnabled) {\n _context6.next = 3;\n break;\n }\n\n return _context6.abrupt(\"return\", _promise.default.reject('Parse.enableLocalDatastore() must be called first'));\n\n case 3:\n objectKey = localDatastore.getKeyForObject(this);\n _context6.next = 6;\n return localDatastore.fromPinWithName(objectKey);\n\n case 6:\n pin = _context6.sent;\n return _context6.abrupt(\"return\", pin.length > 0);\n\n case 8:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function () {\n return _isPinned.apply(this, arguments);\n };\n }()\n /**\n * Asynchronously stores the objects and every object they point to in the local datastore, recursively.\n *\n * If those other objects have not been fetched from Parse, they will not be stored.\n * However, if they have changed data, all the changes will be retained.\n *\n * \n * await object.pinWithName(name);\n * \n *\n * To retrieve object:\n * query.fromLocalDatastore()
or query.fromPinWithName(name)
\n *\n * @param {string} name Name of Pin.\n * @returns {Promise} A promise that is fulfilled when the pin completes.\n */\n\n }, {\n key: \"pinWithName\",\n value: function (name\n /*: string*/\n )\n /*: Promise*/\n {\n return ParseObject.pinAllWithName(name, [this]);\n }\n /**\n * Asynchronously removes the object and every object it points to in the local datastore, recursively.\n *\n * \n * await object.unPinWithName(name);\n * \n *\n * @param {string} name Name of Pin.\n * @returns {Promise} A promise that is fulfilled when the unPin completes.\n */\n\n }, {\n key: \"unPinWithName\",\n value: function (name\n /*: string*/\n )\n /*: Promise*/\n {\n return ParseObject.unPinAllWithName(name, [this]);\n }\n /**\n * Asynchronously loads data from the local datastore into this object.\n *\n * \n * await object.fetchFromLocalDatastore();\n * \n *\n * You can create an unfetched pointer with Parse.Object.createWithoutData()
\n * and then call fetchFromLocalDatastore()
on it.\n *\n * @returns {Promise} A promise that is fulfilled when the fetch completes.\n */\n\n }, {\n key: \"fetchFromLocalDatastore\",\n value: function () {\n var _fetchFromLocalDatastore = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n var localDatastore, objectKey, pinned, result;\n return _regenerator.default.wrap(function (_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n localDatastore = _CoreManager.default.getLocalDatastore();\n\n if (localDatastore.isEnabled) {\n _context7.next = 3;\n break;\n }\n\n throw new Error('Parse.enableLocalDatastore() must be called first');\n\n case 3:\n objectKey = localDatastore.getKeyForObject(this);\n _context7.next = 6;\n return localDatastore._serializeObject(objectKey);\n\n case 6:\n pinned = _context7.sent;\n\n if (pinned) {\n _context7.next = 9;\n break;\n }\n\n throw new Error('Cannot fetch an unsaved ParseObject');\n\n case 9:\n result = ParseObject.fromJSON(pinned);\n\n this._finishFetch(result.toJSON());\n\n return _context7.abrupt(\"return\", this);\n\n case 12:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee5, this);\n }));\n\n return function () {\n return _fetchFromLocalDatastore.apply(this, arguments);\n };\n }()\n /** Static methods **/\n\n }], [{\n key: \"_getClassMap\",\n value: function () {\n return classMap;\n }\n }, {\n key: \"_clearAllState\",\n value: function () {\n var stateController = _CoreManager.default.getObjectStateController();\n\n stateController.clearAllState();\n }\n /**\n * Fetches the given list of Parse.Object.\n * If any error is encountered, stops and calls the error handler.\n *\n * \n * Parse.Object.fetchAll([object1, object2, ...])\n * .then((list) => {\n * // All the objects were fetched.\n * }, (error) => {\n * // An error occurred while fetching one of the objects.\n * });\n * \n *\n * @param {Array} list A list of Parse.Object
.\n * @param {object} options\n * Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * include: The name(s) of the key(s) to include. Can be a string, an array of strings,\n * or an array of array of strings.\n * \n * @static\n * @returns {Parse.Object[]}\n */\n\n }, {\n key: \"fetchAll\",\n value: function (list\n /*: Array*/\n ) {\n var options\n /*: RequestOptions*/\n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var queryOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n queryOptions.useMasterKey = options.useMasterKey;\n }\n\n if (options.hasOwnProperty('sessionToken')) {\n queryOptions.sessionToken = options.sessionToken;\n }\n\n if (options.hasOwnProperty('include')) {\n queryOptions.include = ParseObject.handleIncludeOptions(options);\n }\n\n return _CoreManager.default.getObjectController().fetch(list, true, queryOptions);\n }\n /**\n * Fetches the given list of Parse.Object.\n *\n * Includes nested Parse.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetched.\n *\n * If any error is encountered, stops and calls the error handler.\n *\n * \n * Parse.Object.fetchAllWithInclude([object1, object2, ...], [pointer1, pointer2, ...])\n * .then((list) => {\n * // All the objects were fetched.\n * }, (error) => {\n * // An error occurred while fetching one of the objects.\n * });\n * \n *\n * @param {Array} list A list of Parse.Object
.\n * @param {string | Array>} keys The name(s) of the key(s) to include.\n * @param {object} options\n * Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * \n * @static\n * @returns {Parse.Object[]}\n */\n\n }, {\n key: \"fetchAllWithInclude\",\n value: function (list\n /*: Array*/\n , keys\n /*: String | Array>*/\n , options\n /*: RequestOptions*/\n ) {\n options = options || {};\n options.include = keys;\n return ParseObject.fetchAll(list, options);\n }\n /**\n * Fetches the given list of Parse.Object if needed.\n * If any error is encountered, stops and calls the error handler.\n *\n * Includes nested Parse.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetched.\n *\n * If any error is encountered, stops and calls the error handler.\n *\n * \n * Parse.Object.fetchAllIfNeededWithInclude([object1, object2, ...], [pointer1, pointer2, ...])\n * .then((list) => {\n * // All the objects were fetched.\n * }, (error) => {\n * // An error occurred while fetching one of the objects.\n * });\n * \n *\n * @param {Array} list A list of Parse.Object
.\n * @param {string | Array>} keys The name(s) of the key(s) to include.\n * @param {object} options\n * Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * \n * @static\n * @returns {Parse.Object[]}\n */\n\n }, {\n key: \"fetchAllIfNeededWithInclude\",\n value: function (list\n /*: Array*/\n , keys\n /*: String | Array>*/\n , options\n /*: RequestOptions*/\n ) {\n options = options || {};\n options.include = keys;\n return ParseObject.fetchAllIfNeeded(list, options);\n }\n /**\n * Fetches the given list of Parse.Object if needed.\n * If any error is encountered, stops and calls the error handler.\n *\n * \n * Parse.Object.fetchAllIfNeeded([object1, ...])\n * .then((list) => {\n * // Objects were fetched and updated.\n * }, (error) => {\n * // An error occurred while fetching one of the objects.\n * });\n * \n *\n * @param {Array} list A list of Parse.Object
.\n * @param {object} options\n * @static\n * @returns {Parse.Object[]}\n */\n\n }, {\n key: \"fetchAllIfNeeded\",\n value: function (list\n /*: Array*/\n , options) {\n options = options || {};\n var queryOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n queryOptions.useMasterKey = options.useMasterKey;\n }\n\n if (options.hasOwnProperty('sessionToken')) {\n queryOptions.sessionToken = options.sessionToken;\n }\n\n if (options.hasOwnProperty('include')) {\n queryOptions.include = ParseObject.handleIncludeOptions(options);\n }\n\n return _CoreManager.default.getObjectController().fetch(list, false, queryOptions);\n }\n }, {\n key: \"handleIncludeOptions\",\n value: function (options) {\n var include = [];\n\n if ((0, _isArray.default)(options.include)) {\n var _context8;\n\n (0, _forEach.default)(_context8 = options.include).call(_context8, function (key) {\n if ((0, _isArray.default)(key)) {\n include = (0, _concat.default)(include).call(include, key);\n } else {\n include.push(key);\n }\n });\n } else {\n include.push(options.include);\n }\n\n return include;\n }\n /**\n * Destroy the given list of models on the server if it was already persisted.\n *\n * Unlike saveAll, if an error occurs while deleting an individual model,\n * this method will continue trying to delete the rest of the models if\n * possible, except in the case of a fatal error like a connection error.\n *\n *
In particular, the Parse.Error object returned in the case of error may\n * be one of two types:\n *\n *
\n * A Parse.Error.AGGREGATE_ERROR. This object's \"errors\" property is an\n * array of other Parse.Error objects. Each error object in this array\n * has an \"object\" property that references the object that could not be\n * deleted (for instance, because that object could not be found). \n * A non-aggregate Parse.Error. This indicates a serious error that\n * caused the delete operation to be aborted partway through (for\n * instance, a connection failure in the middle of the delete). \n * \n *\n * \n * Parse.Object.destroyAll([object1, object2, ...])\n * .then((list) => {\n * // All the objects were deleted.\n * }, (error) => {\n * // An error occurred while deleting one or more of the objects.\n * // If this is an aggregate error, then we can inspect each error\n * // object individually to determine the reason why a particular\n * // object was not deleted.\n * if (error.code === Parse.Error.AGGREGATE_ERROR) {\n * for (var i = 0; i < error.errors.length; i++) {\n * console.log(\"Couldn't delete \" + error.errors[i].object.id +\n * \"due to \" + error.errors[i].message);\n * }\n * } else {\n * console.log(\"Delete aborted because of \" + error.message);\n * }\n * });\n * \n *\n * @param {Array} list A list of Parse.Object
.\n * @param {object} options\n * @static\n * @returns {Promise} A promise that is fulfilled when the destroyAll\n * completes.\n */\n\n }, {\n key: \"destroyAll\",\n value: function (list\n /*: Array*/\n ) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var destroyOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n destroyOptions.useMasterKey = options.useMasterKey;\n }\n\n if (options.hasOwnProperty('sessionToken')) {\n destroyOptions.sessionToken = options.sessionToken;\n }\n\n if (options.hasOwnProperty('batchSize') && typeof options.batchSize === 'number') {\n destroyOptions.batchSize = options.batchSize;\n }\n\n if (options.hasOwnProperty('context') && (0, _typeof2.default)(options.context) === 'object') {\n destroyOptions.context = options.context;\n }\n\n return _CoreManager.default.getObjectController().destroy(list, destroyOptions);\n }\n /**\n * Saves the given list of Parse.Object.\n * If any error is encountered, stops and calls the error handler.\n *\n * \n * Parse.Object.saveAll([object1, object2, ...])\n * .then((list) => {\n * // All the objects were saved.\n * }, (error) => {\n * // An error occurred while saving one of the objects.\n * });\n * \n *\n * @param {Array} list A list of Parse.Object
.\n * @param {object} options\n * @static\n * @returns {Parse.Object[]}\n */\n\n }, {\n key: \"saveAll\",\n value: function (list\n /*: Array*/\n ) {\n var options\n /*: RequestOptions*/\n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var saveOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n saveOptions.useMasterKey = options.useMasterKey;\n }\n\n if (options.hasOwnProperty('sessionToken')) {\n saveOptions.sessionToken = options.sessionToken;\n }\n\n if (options.hasOwnProperty('batchSize') && typeof options.batchSize === 'number') {\n saveOptions.batchSize = options.batchSize;\n }\n\n if (options.hasOwnProperty('context') && (0, _typeof2.default)(options.context) === 'object') {\n saveOptions.context = options.context;\n }\n\n return _CoreManager.default.getObjectController().save(list, saveOptions);\n }\n /**\n * Creates a reference to a subclass of Parse.Object with the given id. This\n * does not exist on Parse.Object, only on subclasses.\n *\n * A shortcut for:
\n * var Foo = Parse.Object.extend(\"Foo\");\n * var pointerToFoo = new Foo();\n * pointerToFoo.id = \"myObjectId\";\n * \n *\n * @param {string} id The ID of the object to create a reference to.\n * @static\n * @returns {Parse.Object} A Parse.Object reference.\n */\n\n }, {\n key: \"createWithoutData\",\n value: function (id\n /*: string*/\n ) {\n var obj = new this();\n obj.id = id;\n return obj;\n }\n /**\n * Creates a new instance of a Parse Object from a JSON representation.\n *\n * @param {object} json The JSON map of the Object's data\n * @param {boolean} override In single instance mode, all old server data\n * is overwritten if this is set to true\n * @param {boolean} dirty Whether the Parse.Object should set JSON keys to dirty\n * @static\n * @returns {Parse.Object} A Parse.Object reference\n */\n\n }, {\n key: \"fromJSON\",\n value: function (json\n /*: any*/\n , override\n /*:: ?: boolean*/\n , dirty\n /*:: ?: boolean*/\n ) {\n if (!json.className) {\n throw new Error('Cannot create an object without a className');\n }\n\n var constructor = classMap[json.className];\n var o = constructor ? new constructor(json.className) : new ParseObject(json.className);\n var otherAttributes = {};\n\n for (var _attr12 in json) {\n if (_attr12 !== 'className' && _attr12 !== '__type') {\n otherAttributes[_attr12] = json[_attr12];\n\n if (dirty) {\n o.set(_attr12, json[_attr12]);\n }\n }\n }\n\n if (override) {\n // id needs to be set before clearServerData can work\n if (otherAttributes.objectId) {\n o.id = otherAttributes.objectId;\n }\n\n var preserved = null;\n\n if (typeof o._preserveFieldsOnFetch === 'function') {\n preserved = o._preserveFieldsOnFetch();\n }\n\n o._clearServerData();\n\n if (preserved) {\n o._finishFetch(preserved);\n }\n }\n\n o._finishFetch(otherAttributes);\n\n if (json.objectId) {\n o._setExisted(true);\n }\n\n return o;\n }\n /**\n * Registers a subclass of Parse.Object with a specific class name.\n * When objects of that class are retrieved from a query, they will be\n * instantiated with this subclass.\n * This is only necessary when using ES6 subclassing.\n *\n * @param {string} className The class name of the subclass\n * @param {Function} constructor The subclass\n */\n\n }, {\n key: \"registerSubclass\",\n value: function (className\n /*: string*/\n , constructor\n /*: any*/\n ) {\n if (typeof className !== 'string') {\n throw new TypeError('The first argument must be a valid class name.');\n }\n\n if (typeof constructor === 'undefined') {\n throw new TypeError('You must supply a subclass constructor.');\n }\n\n if (typeof constructor !== 'function') {\n throw new TypeError('You must register the subclass constructor. ' + 'Did you attempt to register an instance of the subclass?');\n }\n\n classMap[className] = constructor;\n\n if (!constructor.className) {\n constructor.className = className;\n }\n }\n /**\n * Unegisters a subclass of Parse.Object with a specific class name.\n *\n * @param {string} className The class name of the subclass\n */\n\n }, {\n key: \"unregisterSubclass\",\n value: function (className\n /*: string*/\n ) {\n if (typeof className !== 'string') {\n throw new TypeError('The first argument must be a valid class name.');\n }\n\n delete classMap[className];\n }\n /**\n * Creates a new subclass of Parse.Object for the given Parse class name.\n *\n * Every extension of a Parse class will inherit from the most recent\n * previous extension of that class. When a Parse.Object is automatically\n * created by parsing JSON, it will use the most recent extension of that\n * class.
\n *\n * You should call either:
\n * var MyClass = Parse.Object.extend(\"MyClass\", {\n * Instance methods ,\n * initialize: function(attrs, options) {\n * this.someInstanceProperty = [],\n * Other instance properties \n * }\n * }, {\n * Class properties \n * }); \n * or, for Backbone compatibility:\n * var MyClass = Parse.Object.extend({\n * className: \"MyClass\",\n * Instance methods ,\n * initialize: function(attrs, options) {\n * this.someInstanceProperty = [],\n * Other instance properties \n * }\n * }, {\n * Class properties \n * }); \n *\n * @param {string} className The name of the Parse class backing this model.\n * @param {object} protoProps Instance properties to add to instances of the\n * class returned from this method.\n * @param {object} classProps Class properties to add the class returned from\n * this method.\n * @returns {Parse.Object} A new subclass of Parse.Object.\n */\n\n }, {\n key: \"extend\",\n value: function (className\n /*: any*/\n , protoProps\n /*: any*/\n , classProps\n /*: any*/\n ) {\n if (typeof className !== 'string') {\n if (className && typeof className.className === 'string') {\n return ParseObject.extend(className.className, className, protoProps);\n } else {\n throw new Error(\"Parse.Object.extend's first argument should be the className.\");\n }\n }\n\n var adjustedClassName = className;\n\n if (adjustedClassName === 'User' && _CoreManager.default.get('PERFORM_USER_REWRITE')) {\n adjustedClassName = '_User';\n }\n\n var parentProto = ParseObject.prototype;\n\n if (this.hasOwnProperty('__super__') && this.__super__) {\n parentProto = this.prototype;\n } else if (classMap[adjustedClassName]) {\n parentProto = classMap[adjustedClassName].prototype;\n }\n\n var ParseObjectSubclass = function (attributes, options) {\n this.className = adjustedClassName;\n this._objCount = objectCount++; // Enable legacy initializers\n\n if (typeof this.initialize === 'function') {\n this.initialize.apply(this, arguments);\n }\n\n if (attributes && (0, _typeof2.default)(attributes) === 'object') {\n if (!this.set(attributes || {}, options)) {\n throw new Error(\"Can't create an invalid Parse Object\");\n }\n }\n };\n\n ParseObjectSubclass.className = adjustedClassName;\n ParseObjectSubclass.__super__ = parentProto;\n ParseObjectSubclass.prototype = (0, _create.default)(parentProto, {\n constructor: {\n value: ParseObjectSubclass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (protoProps) {\n for (var prop in protoProps) {\n if (prop !== 'className') {\n (0, _defineProperty2.default)(ParseObjectSubclass.prototype, prop, {\n value: protoProps[prop],\n enumerable: false,\n writable: true,\n configurable: true\n });\n }\n }\n }\n\n if (classProps) {\n for (var _prop in classProps) {\n if (_prop !== 'className') {\n (0, _defineProperty2.default)(ParseObjectSubclass, _prop, {\n value: classProps[_prop],\n enumerable: false,\n writable: true,\n configurable: true\n });\n }\n }\n }\n\n ParseObjectSubclass.extend = function (name, protoProps, classProps) {\n if (typeof name === 'string') {\n return ParseObject.extend.call(ParseObjectSubclass, name, protoProps, classProps);\n }\n\n return ParseObject.extend.call(ParseObjectSubclass, adjustedClassName, name, protoProps);\n };\n\n ParseObjectSubclass.createWithoutData = ParseObject.createWithoutData;\n classMap[adjustedClassName] = ParseObjectSubclass;\n return ParseObjectSubclass;\n }\n /**\n * Enable single instance objects, where any local objects with the same Id\n * share the same attributes, and stay synchronized with each other.\n * This is disabled by default in server environments, since it can lead to\n * security issues.\n *\n * @static\n */\n\n }, {\n key: \"enableSingleInstance\",\n value: function () {\n singleInstance = true;\n\n _CoreManager.default.setObjectStateController(SingleInstanceStateController);\n }\n /**\n * Disable single instance objects, where any local objects with the same Id\n * share the same attributes, and stay synchronized with each other.\n * When disabled, you can have two instances of the same object in memory\n * without them sharing attributes.\n *\n * @static\n */\n\n }, {\n key: \"disableSingleInstance\",\n value: function () {\n singleInstance = false;\n\n _CoreManager.default.setObjectStateController(UniqueInstanceStateController);\n }\n /**\n * Asynchronously stores the objects and every object they point to in the local datastore,\n * recursively, using a default pin name: _default.\n *\n * If those other objects have not been fetched from Parse, they will not be stored.\n * However, if they have changed data, all the changes will be retained.\n *\n * \n * await Parse.Object.pinAll([...]);\n * \n *\n * To retrieve object:\n * query.fromLocalDatastore()
or query.fromPin()
\n *\n * @param {Array} objects A list of Parse.Object
.\n * @returns {Promise} A promise that is fulfilled when the pin completes.\n * @static\n */\n\n }, {\n key: \"pinAll\",\n value: function (objects\n /*: Array*/\n )\n /*: Promise*/\n {\n var localDatastore = _CoreManager.default.getLocalDatastore();\n\n if (!localDatastore.isEnabled) {\n return _promise.default.reject('Parse.enableLocalDatastore() must be called first');\n }\n\n return ParseObject.pinAllWithName(_LocalDatastoreUtils.DEFAULT_PIN, objects);\n }\n /**\n * Asynchronously stores the objects and every object they point to in the local datastore, recursively.\n *\n * If those other objects have not been fetched from Parse, they will not be stored.\n * However, if they have changed data, all the changes will be retained.\n *\n * \n * await Parse.Object.pinAllWithName(name, [obj1, obj2, ...]);\n * \n *\n * To retrieve object:\n * query.fromLocalDatastore()
or query.fromPinWithName(name)
\n *\n * @param {string} name Name of Pin.\n * @param {Array} objects A list of Parse.Object
.\n * @returns {Promise} A promise that is fulfilled when the pin completes.\n * @static\n */\n\n }, {\n key: \"pinAllWithName\",\n value: function (name\n /*: string*/\n , objects\n /*: Array*/\n )\n /*: Promise*/\n {\n var localDatastore = _CoreManager.default.getLocalDatastore();\n\n if (!localDatastore.isEnabled) {\n return _promise.default.reject('Parse.enableLocalDatastore() must be called first');\n }\n\n return localDatastore._handlePinAllWithName(name, objects);\n }\n /**\n * Asynchronously removes the objects and every object they point to in the local datastore,\n * recursively, using a default pin name: _default.\n *\n * \n * await Parse.Object.unPinAll([...]);\n * \n *\n * @param {Array} objects A list of Parse.Object
.\n * @returns {Promise} A promise that is fulfilled when the unPin completes.\n * @static\n */\n\n }, {\n key: \"unPinAll\",\n value: function (objects\n /*: Array*/\n )\n /*: Promise*/\n {\n var localDatastore = _CoreManager.default.getLocalDatastore();\n\n if (!localDatastore.isEnabled) {\n return _promise.default.reject('Parse.enableLocalDatastore() must be called first');\n }\n\n return ParseObject.unPinAllWithName(_LocalDatastoreUtils.DEFAULT_PIN, objects);\n }\n /**\n * Asynchronously removes the objects and every object they point to in the local datastore, recursively.\n *\n * \n * await Parse.Object.unPinAllWithName(name, [obj1, obj2, ...]);\n * \n *\n * @param {string} name Name of Pin.\n * @param {Array} objects A list of Parse.Object
.\n * @returns {Promise} A promise that is fulfilled when the unPin completes.\n * @static\n */\n\n }, {\n key: \"unPinAllWithName\",\n value: function (name\n /*: string*/\n , objects\n /*: Array*/\n )\n /*: Promise*/\n {\n var localDatastore = _CoreManager.default.getLocalDatastore();\n\n if (!localDatastore.isEnabled) {\n return _promise.default.reject('Parse.enableLocalDatastore() must be called first');\n }\n\n return localDatastore._handleUnPinAllWithName(name, objects);\n }\n /**\n * Asynchronously removes all objects in the local datastore using a default pin name: _default.\n *\n * \n * await Parse.Object.unPinAllObjects();\n * \n *\n * @returns {Promise} A promise that is fulfilled when the unPin completes.\n * @static\n */\n\n }, {\n key: \"unPinAllObjects\",\n value: function ()\n /*: Promise*/\n {\n var localDatastore = _CoreManager.default.getLocalDatastore();\n\n if (!localDatastore.isEnabled) {\n return _promise.default.reject('Parse.enableLocalDatastore() must be called first');\n }\n\n return localDatastore.unPinWithName(_LocalDatastoreUtils.DEFAULT_PIN);\n }\n /**\n * Asynchronously removes all objects with the specified pin name.\n * Deletes the pin name also.\n *\n * \n * await Parse.Object.unPinAllObjectsWithName(name);\n * \n *\n * @param {string} name Name of Pin.\n * @returns {Promise} A promise that is fulfilled when the unPin completes.\n * @static\n */\n\n }, {\n key: \"unPinAllObjectsWithName\",\n value: function (name\n /*: string*/\n )\n /*: Promise*/\n {\n var localDatastore = _CoreManager.default.getLocalDatastore();\n\n if (!localDatastore.isEnabled) {\n return _promise.default.reject('Parse.enableLocalDatastore() must be called first');\n }\n\n return localDatastore.unPinWithName(_LocalDatastoreUtils.PIN_PREFIX + name);\n }\n }]);\n return ParseObject;\n}();\n\nvar DefaultController = {\n fetch: function (target\n /*: ParseObject | Array*/\n , forceFetch\n /*: boolean*/\n , options\n /*: RequestOptions*/\n )\n /*: Promise | ParseObject>*/\n {\n var localDatastore = _CoreManager.default.getLocalDatastore();\n\n if ((0, _isArray.default)(target)) {\n if (target.length < 1) {\n return _promise.default.resolve([]);\n }\n\n var objs = [];\n var ids = [];\n var className = null;\n var results = [];\n var error = null;\n (0, _forEach.default)(target).call(target, function (el) {\n if (error) {\n return;\n }\n\n if (!className) {\n className = el.className;\n }\n\n if (className !== el.className) {\n error = new _ParseError.default(_ParseError.default.INVALID_CLASS_NAME, 'All objects should be of the same class');\n }\n\n if (!el.id) {\n error = new _ParseError.default(_ParseError.default.MISSING_OBJECT_ID, 'All objects must have an ID');\n }\n\n if (forceFetch || !el.isDataAvailable()) {\n ids.push(el.id);\n objs.push(el);\n }\n\n results.push(el);\n });\n\n if (error) {\n return _promise.default.reject(error);\n }\n\n var query = new _ParseQuery.default(className);\n query.containedIn('objectId', ids);\n\n if (options && options.include) {\n query.include(options.include);\n }\n\n query._limit = ids.length;\n return (0, _find.default)(query).call(query, options).then( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(objects) {\n var idMap, i, obj, _i, _obj, id, _iterator2, _step2, object;\n\n return _regenerator.default.wrap(function (_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n idMap = {};\n (0, _forEach.default)(objects).call(objects, function (o) {\n idMap[o.id] = o;\n });\n i = 0;\n\n case 3:\n if (!(i < objs.length)) {\n _context9.next = 11;\n break;\n }\n\n obj = objs[i];\n\n if (!(!obj || !obj.id || !idMap[obj.id])) {\n _context9.next = 8;\n break;\n }\n\n if (!forceFetch) {\n _context9.next = 8;\n break;\n }\n\n return _context9.abrupt(\"return\", _promise.default.reject(new _ParseError.default(_ParseError.default.OBJECT_NOT_FOUND, 'All objects must exist on the server.')));\n\n case 8:\n i++;\n _context9.next = 3;\n break;\n\n case 11:\n if (!singleInstance) {\n // If single instance objects are disabled, we need to replace the\n for (_i = 0; _i < results.length; _i++) {\n _obj = results[_i];\n\n if (_obj && _obj.id && idMap[_obj.id]) {\n id = _obj.id;\n\n _obj._finishFetch(idMap[id].toJSON());\n\n results[_i] = idMap[id];\n }\n }\n }\n\n _iterator2 = _createForOfIteratorHelper(results);\n _context9.prev = 13;\n\n _iterator2.s();\n\n case 15:\n if ((_step2 = _iterator2.n()).done) {\n _context9.next = 21;\n break;\n }\n\n object = _step2.value;\n _context9.next = 19;\n return localDatastore._updateObjectIfPinned(object);\n\n case 19:\n _context9.next = 15;\n break;\n\n case 21:\n _context9.next = 26;\n break;\n\n case 23:\n _context9.prev = 23;\n _context9.t0 = _context9[\"catch\"](13);\n\n _iterator2.e(_context9.t0);\n\n case 26:\n _context9.prev = 26;\n\n _iterator2.f();\n\n return _context9.finish(26);\n\n case 29:\n return _context9.abrupt(\"return\", _promise.default.resolve(results));\n\n case 30:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee6, null, [[13, 23, 26, 29]]);\n }));\n\n return function () {\n return _ref.apply(this, arguments);\n };\n }());\n } else if (target instanceof ParseObject) {\n if (!target.id) {\n return _promise.default.reject(new _ParseError.default(_ParseError.default.MISSING_OBJECT_ID, 'Object does not have an ID'));\n }\n\n var RESTController = _CoreManager.default.getRESTController();\n\n var params = {};\n\n if (options && options.include) {\n params.include = options.include.join();\n }\n\n return RESTController.request('GET', 'classes/' + target.className + '/' + target._getId(), params, options).then( /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(response) {\n return _regenerator.default.wrap(function (_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n target._clearPendingOps();\n\n target._clearServerData();\n\n target._finishFetch(response);\n\n _context10.next = 5;\n return localDatastore._updateObjectIfPinned(target);\n\n case 5:\n return _context10.abrupt(\"return\", target);\n\n case 6:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee7);\n }));\n\n return function () {\n return _ref2.apply(this, arguments);\n };\n }());\n }\n\n return _promise.default.resolve();\n },\n destroy: function (target\n /*: ParseObject | Array*/\n , options\n /*: RequestOptions*/\n )\n /*: Promise | ParseObject>*/\n {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {\n var batchSize, localDatastore, RESTController, batches, deleteCompleted, errors;\n return _regenerator.default.wrap(function (_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n batchSize = options && options.batchSize ? options.batchSize : _CoreManager.default.get('REQUEST_BATCH_SIZE');\n localDatastore = _CoreManager.default.getLocalDatastore();\n RESTController = _CoreManager.default.getRESTController();\n\n if (!(0, _isArray.default)(target)) {\n _context13.next = 15;\n break;\n }\n\n if (!(target.length < 1)) {\n _context13.next = 6;\n break;\n }\n\n return _context13.abrupt(\"return\", _promise.default.resolve([]));\n\n case 6:\n batches = [[]];\n (0, _forEach.default)(target).call(target, function (obj) {\n if (!obj.id) {\n return;\n }\n\n batches[batches.length - 1].push(obj);\n\n if (batches[batches.length - 1].length >= batchSize) {\n batches.push([]);\n }\n });\n\n if (batches[batches.length - 1].length === 0) {\n // If the last batch is empty, remove it\n batches.pop();\n }\n\n deleteCompleted = _promise.default.resolve();\n errors = [];\n (0, _forEach.default)(batches).call(batches, function (batch) {\n deleteCompleted = deleteCompleted.then(function () {\n return RESTController.request('POST', 'batch', {\n requests: (0, _map.default)(batch).call(batch, function (obj) {\n return {\n method: 'DELETE',\n path: getServerUrlPath() + 'classes/' + obj.className + '/' + obj._getId(),\n body: {}\n };\n })\n }, options).then(function (results) {\n for (var i = 0; i < results.length; i++) {\n if (results[i] && results[i].hasOwnProperty('error')) {\n var err = new _ParseError.default(results[i].error.code, results[i].error.error);\n err.object = batch[i];\n errors.push(err);\n }\n }\n });\n });\n });\n return _context13.abrupt(\"return\", deleteCompleted.then( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {\n var aggregate, _iterator3, _step3, object;\n\n return _regenerator.default.wrap(function (_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n if (!errors.length) {\n _context11.next = 4;\n break;\n }\n\n aggregate = new _ParseError.default(_ParseError.default.AGGREGATE_ERROR);\n aggregate.errors = errors;\n return _context11.abrupt(\"return\", _promise.default.reject(aggregate));\n\n case 4:\n _iterator3 = _createForOfIteratorHelper(target);\n _context11.prev = 5;\n\n _iterator3.s();\n\n case 7:\n if ((_step3 = _iterator3.n()).done) {\n _context11.next = 13;\n break;\n }\n\n object = _step3.value;\n _context11.next = 11;\n return localDatastore._destroyObjectIfPinned(object);\n\n case 11:\n _context11.next = 7;\n break;\n\n case 13:\n _context11.next = 18;\n break;\n\n case 15:\n _context11.prev = 15;\n _context11.t0 = _context11[\"catch\"](5);\n\n _iterator3.e(_context11.t0);\n\n case 18:\n _context11.prev = 18;\n\n _iterator3.f();\n\n return _context11.finish(18);\n\n case 21:\n return _context11.abrupt(\"return\", _promise.default.resolve(target));\n\n case 22:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee8, null, [[5, 15, 18, 21]]);\n }))));\n\n case 15:\n if (!(target instanceof ParseObject)) {\n _context13.next = 17;\n break;\n }\n\n return _context13.abrupt(\"return\", RESTController.request('DELETE', 'classes/' + target.className + '/' + target._getId(), {}, options).then( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {\n return _regenerator.default.wrap(function (_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _context12.next = 2;\n return localDatastore._destroyObjectIfPinned(target);\n\n case 2:\n return _context12.abrupt(\"return\", _promise.default.resolve(target));\n\n case 3:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee9);\n }))));\n\n case 17:\n return _context13.abrupt(\"return\", _promise.default.resolve(target));\n\n case 18:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee10);\n }))();\n },\n save: function (target\n /*: ParseObject | Array*/\n , options\n /*: RequestOptions*/\n ) {\n var batchSize = options && options.batchSize ? options.batchSize : _CoreManager.default.get('REQUEST_BATCH_SIZE');\n\n var localDatastore = _CoreManager.default.getLocalDatastore();\n\n var mapIdForPin = {};\n\n var RESTController = _CoreManager.default.getRESTController();\n\n var stateController = _CoreManager.default.getObjectStateController();\n\n var allowCustomObjectId = _CoreManager.default.get('ALLOW_CUSTOM_OBJECT_ID');\n\n options = options || {};\n options.returnStatus = options.returnStatus || true;\n\n if ((0, _isArray.default)(target)) {\n if (target.length < 1) {\n return _promise.default.resolve([]);\n }\n\n var unsaved = (0, _concat.default)(target).call(target);\n\n for (var i = 0; i < target.length; i++) {\n if (target[i] instanceof ParseObject) {\n unsaved = (0, _concat.default)(unsaved).call(unsaved, (0, _unsavedChildren.default)(target[i], true));\n }\n }\n\n unsaved = (0, _unique.default)(unsaved);\n var filesSaved\n /*: Array*/\n = [];\n var pending\n /*: Array*/\n = [];\n (0, _forEach.default)(unsaved).call(unsaved, function (el) {\n if (el instanceof _ParseFile.default) {\n filesSaved.push(el.save(options));\n } else if (el instanceof ParseObject) {\n if (allowCustomObjectId && !el.id) {\n throw new _ParseError.default(_ParseError.default.MISSING_OBJECT_ID, 'objectId must not be empty, null or undefined');\n }\n\n pending.push(el);\n }\n });\n return _promise.default.all(filesSaved).then(function () {\n var objectError = null;\n return (0, _promiseUtils.continueWhile)(function () {\n return pending.length > 0;\n }, function () {\n var batch = [];\n var nextPending = [];\n (0, _forEach.default)(pending).call(pending, function (el) {\n if (batch.length < batchSize && (0, _canBeSerialized.default)(el)) {\n batch.push(el);\n } else {\n nextPending.push(el);\n }\n });\n pending = nextPending;\n\n if (batch.length < 1) {\n return _promise.default.reject(new _ParseError.default(_ParseError.default.OTHER_CAUSE, 'Tried to save a batch with a cycle.'));\n } // Queue up tasks for each object in the batch.\n // When every task is ready, the API request will execute\n\n\n var batchReturned = new _promiseUtils.resolvingPromise();\n var batchReady = [];\n var batchTasks = [];\n (0, _forEach.default)(batch).call(batch, function (obj, index) {\n var ready = new _promiseUtils.resolvingPromise();\n batchReady.push(ready);\n stateController.pushPendingState(obj._getStateIdentifier());\n batchTasks.push(stateController.enqueueTask(obj._getStateIdentifier(), function () {\n ready.resolve();\n return batchReturned.then(function (responses) {\n if (responses[index].hasOwnProperty('success')) {\n var objectId = responses[index].success.objectId;\n var status = responses[index]._status;\n delete responses[index]._status;\n mapIdForPin[objectId] = obj._localId;\n\n obj._handleSaveResponse(responses[index].success, status);\n } else {\n if (!objectError && responses[index].hasOwnProperty('error')) {\n var serverError = responses[index].error;\n objectError = new _ParseError.default(serverError.code, serverError.error); // Cancel the rest of the save\n\n pending = [];\n }\n\n obj._handleSaveError();\n }\n });\n }));\n });\n (0, _promiseUtils.when)(batchReady).then(function () {\n // Kick off the batch request\n return RESTController.request('POST', 'batch', {\n requests: (0, _map.default)(batch).call(batch, function (obj) {\n var params = obj._getSaveParams();\n\n params.path = getServerUrlPath() + params.path;\n return params;\n })\n }, options);\n }).then(batchReturned.resolve, function (error) {\n batchReturned.reject(new _ParseError.default(_ParseError.default.INCORRECT_TYPE, error.message));\n });\n return (0, _promiseUtils.when)(batchTasks);\n }).then( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {\n var _iterator4, _step4, object;\n\n return _regenerator.default.wrap(function (_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n if (!objectError) {\n _context14.next = 2;\n break;\n }\n\n return _context14.abrupt(\"return\", _promise.default.reject(objectError));\n\n case 2:\n _iterator4 = _createForOfIteratorHelper(target);\n _context14.prev = 3;\n\n _iterator4.s();\n\n case 5:\n if ((_step4 = _iterator4.n()).done) {\n _context14.next = 13;\n break;\n }\n\n object = _step4.value;\n _context14.next = 9;\n return localDatastore._updateLocalIdForObject(mapIdForPin[object.id], object);\n\n case 9:\n _context14.next = 11;\n return localDatastore._updateObjectIfPinned(object);\n\n case 11:\n _context14.next = 5;\n break;\n\n case 13:\n _context14.next = 18;\n break;\n\n case 15:\n _context14.prev = 15;\n _context14.t0 = _context14[\"catch\"](3);\n\n _iterator4.e(_context14.t0);\n\n case 18:\n _context14.prev = 18;\n\n _iterator4.f();\n\n return _context14.finish(18);\n\n case 21:\n return _context14.abrupt(\"return\", _promise.default.resolve(target));\n\n case 22:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _callee11, null, [[3, 15, 18, 21]]);\n })));\n });\n } else if (target instanceof ParseObject) {\n if (allowCustomObjectId && !target.id) {\n throw new _ParseError.default(_ParseError.default.MISSING_OBJECT_ID, 'objectId must not be empty, null or undefined');\n } // generate _localId in case if cascadeSave=false\n\n\n target._getId();\n\n var localId = target._localId; // copying target lets Flow guarantee the pointer isn't modified elsewhere\n\n var targetCopy = target;\n\n var task = function () {\n var params = targetCopy._getSaveParams();\n\n return RESTController.request(params.method, params.path, params.body, options).then(function (response) {\n var status = response._status;\n delete response._status;\n\n targetCopy._handleSaveResponse(response, status);\n }, function (error) {\n targetCopy._handleSaveError();\n\n return _promise.default.reject(error);\n });\n };\n\n stateController.pushPendingState(target._getStateIdentifier());\n return stateController.enqueueTask(target._getStateIdentifier(), task).then( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {\n return _regenerator.default.wrap(function (_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _context15.next = 2;\n return localDatastore._updateLocalIdForObject(localId, target);\n\n case 2:\n _context15.next = 4;\n return localDatastore._updateObjectIfPinned(target);\n\n case 4:\n return _context15.abrupt(\"return\", target);\n\n case 5:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _callee12);\n })), function (error) {\n return _promise.default.reject(error);\n });\n }\n\n return _promise.default.resolve();\n }\n};\n\n_CoreManager.default.setObjectController(DefaultController);\n\nvar _default = ParseObject;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseObject.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseOp.js":
+/*!****************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseOp.js ***!
+ \****************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\nvar _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/reflect/construct */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.UnsetOp = exports.SetOp = exports.RemoveOp = exports.RelationOp = exports.Op = exports.IncrementOp = exports.AddUniqueOp = exports.AddOp = void 0;\nexports.opFromJSON = opFromJSON;\n\nvar _map = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js\"));\n\nvar _splice = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/splice */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/splice.js\"));\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/index-of */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\"));\n\nvar _forEach = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/assertThisInitialized */ \"../node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/inherits */ \"../node_modules/@babel/runtime-corejs3/helpers/inherits.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ \"../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _concat = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/concat */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js\"));\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _arrayContainsObject = _interopRequireDefault(__webpack_require__(/*! ./arrayContainsObject */ \"../node_modules/parse/lib/browser/arrayContainsObject.js\"));\n\nvar _decode = _interopRequireDefault(__webpack_require__(/*! ./decode */ \"../node_modules/parse/lib/browser/decode.js\"));\n\nvar _encode = _interopRequireDefault(__webpack_require__(/*! ./encode */ \"../node_modules/parse/lib/browser/encode.js\"));\n\nvar _ParseObject = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n\nvar _ParseRelation = _interopRequireDefault(__webpack_require__(/*! ./ParseRelation */ \"../node_modules/parse/lib/browser/ParseRelation.js\"));\n\nvar _unique = _interopRequireDefault(__webpack_require__(/*! ./unique */ \"../node_modules/parse/lib/browser/unique.js\"));\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function () {\n var Super = (0, _getPrototypeOf2.default)(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = (0, _getPrototypeOf2.default)(this).constructor;\n result = _Reflect$construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return (0, _possibleConstructorReturn2.default)(this, result);\n };\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false;\n if (_Reflect$construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction opFromJSON(json\n/*: { [key: string]: any }*/\n)\n/*: ?Op*/\n{\n if (!json || !json.__op) {\n return null;\n }\n\n switch (json.__op) {\n case 'Delete':\n return new UnsetOp();\n\n case 'Increment':\n return new IncrementOp(json.amount);\n\n case 'Add':\n return new AddOp((0, _decode.default)(json.objects));\n\n case 'AddUnique':\n return new AddUniqueOp((0, _decode.default)(json.objects));\n\n case 'Remove':\n return new RemoveOp((0, _decode.default)(json.objects));\n\n case 'AddRelation':\n {\n var toAdd = (0, _decode.default)(json.objects);\n\n if (!(0, _isArray.default)(toAdd)) {\n return new RelationOp([], []);\n }\n\n return new RelationOp(toAdd, []);\n }\n\n case 'RemoveRelation':\n {\n var toRemove = (0, _decode.default)(json.objects);\n\n if (!(0, _isArray.default)(toRemove)) {\n return new RelationOp([], []);\n }\n\n return new RelationOp([], toRemove);\n }\n\n case 'Batch':\n {\n var _toAdd = [];\n var _toRemove = [];\n\n for (var i = 0; i < json.ops.length; i++) {\n if (json.ops[i].__op === 'AddRelation') {\n _toAdd = (0, _concat.default)(_toAdd).call(_toAdd, (0, _decode.default)(json.ops[i].objects));\n } else if (json.ops[i].__op === 'RemoveRelation') {\n _toRemove = (0, _concat.default)(_toRemove).call(_toRemove, (0, _decode.default)(json.ops[i].objects));\n }\n }\n\n return new RelationOp(_toAdd, _toRemove);\n }\n }\n\n return null;\n}\n\nvar Op = /*#__PURE__*/function () {\n function Op() {\n (0, _classCallCheck2.default)(this, Op);\n }\n\n (0, _createClass2.default)(Op, [{\n key: \"applyTo\",\n value: // Empty parent class\n function ()\n /*: mixed*/\n {}\n /* eslint-disable-line no-unused-vars */\n\n }, {\n key: \"mergeWith\",\n value: function ()\n /*: ?Op*/\n {}\n /* eslint-disable-line no-unused-vars */\n\n }, {\n key: \"toJSON\",\n value: function ()\n /*: mixed*/\n {}\n }]);\n return Op;\n}();\n\nexports.Op = Op;\n\nvar SetOp = /*#__PURE__*/function (_Op) {\n (0, _inherits2.default)(SetOp, _Op);\n\n var _super = _createSuper(SetOp);\n\n function SetOp(value\n /*: mixed*/\n ) {\n var _this;\n\n (0, _classCallCheck2.default)(this, SetOp);\n _this = _super.call(this);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"_value\", void 0);\n _this._value = value;\n return _this;\n }\n\n (0, _createClass2.default)(SetOp, [{\n key: \"applyTo\",\n value: function ()\n /*: mixed*/\n {\n return this._value;\n }\n }, {\n key: \"mergeWith\",\n value: function ()\n /*: SetOp*/\n {\n return new SetOp(this._value);\n }\n }, {\n key: \"toJSON\",\n value: function (offline\n /*:: ?: boolean*/\n ) {\n return (0, _encode.default)(this._value, false, true, undefined, offline);\n }\n }]);\n return SetOp;\n}(Op);\n\nexports.SetOp = SetOp;\n\nvar UnsetOp = /*#__PURE__*/function (_Op2) {\n (0, _inherits2.default)(UnsetOp, _Op2);\n\n var _super2 = _createSuper(UnsetOp);\n\n function UnsetOp() {\n (0, _classCallCheck2.default)(this, UnsetOp);\n return _super2.apply(this, arguments);\n }\n\n (0, _createClass2.default)(UnsetOp, [{\n key: \"applyTo\",\n value: function () {\n return undefined;\n }\n }, {\n key: \"mergeWith\",\n value: function ()\n /*: UnsetOp*/\n {\n return new UnsetOp();\n }\n }, {\n key: \"toJSON\",\n value: function ()\n /*: { __op: string }*/\n {\n return {\n __op: 'Delete'\n };\n }\n }]);\n return UnsetOp;\n}(Op);\n\nexports.UnsetOp = UnsetOp;\n\nvar IncrementOp = /*#__PURE__*/function (_Op3) {\n (0, _inherits2.default)(IncrementOp, _Op3);\n\n var _super3 = _createSuper(IncrementOp);\n\n function IncrementOp(amount\n /*: number*/\n ) {\n var _this2;\n\n (0, _classCallCheck2.default)(this, IncrementOp);\n _this2 = _super3.call(this);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), \"_amount\", void 0);\n\n if (typeof amount !== 'number') {\n throw new TypeError('Increment Op must be initialized with a numeric amount.');\n }\n\n _this2._amount = amount;\n return _this2;\n }\n\n (0, _createClass2.default)(IncrementOp, [{\n key: \"applyTo\",\n value: function (value\n /*: ?mixed*/\n )\n /*: number*/\n {\n if (typeof value === 'undefined') {\n return this._amount;\n }\n\n if (typeof value !== 'number') {\n throw new TypeError('Cannot increment a non-numeric value.');\n }\n\n return this._amount + value;\n }\n }, {\n key: \"mergeWith\",\n value: function (previous\n /*: Op*/\n )\n /*: Op*/\n {\n if (!previous) {\n return this;\n }\n\n if (previous instanceof SetOp) {\n return new SetOp(this.applyTo(previous._value));\n }\n\n if (previous instanceof UnsetOp) {\n return new SetOp(this._amount);\n }\n\n if (previous instanceof IncrementOp) {\n return new IncrementOp(this.applyTo(previous._amount));\n }\n\n throw new Error('Cannot merge Increment Op with the previous Op');\n }\n }, {\n key: \"toJSON\",\n value: function ()\n /*: { __op: string, amount: number }*/\n {\n return {\n __op: 'Increment',\n amount: this._amount\n };\n }\n }]);\n return IncrementOp;\n}(Op);\n\nexports.IncrementOp = IncrementOp;\n\nvar AddOp = /*#__PURE__*/function (_Op4) {\n (0, _inherits2.default)(AddOp, _Op4);\n\n var _super4 = _createSuper(AddOp);\n\n function AddOp(value\n /*: mixed | Array*/\n ) {\n var _this3;\n\n (0, _classCallCheck2.default)(this, AddOp);\n _this3 = _super4.call(this);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this3), \"_value\", void 0);\n _this3._value = (0, _isArray.default)(value) ? value : [value];\n return _this3;\n }\n\n (0, _createClass2.default)(AddOp, [{\n key: \"applyTo\",\n value: function (value\n /*: mixed*/\n )\n /*: Array*/\n {\n if (value == null) {\n return this._value;\n }\n\n if ((0, _isArray.default)(value)) {\n return (0, _concat.default)(value).call(value, this._value);\n }\n\n throw new Error('Cannot add elements to a non-array value');\n }\n }, {\n key: \"mergeWith\",\n value: function (previous\n /*: Op*/\n )\n /*: Op*/\n {\n if (!previous) {\n return this;\n }\n\n if (previous instanceof SetOp) {\n return new SetOp(this.applyTo(previous._value));\n }\n\n if (previous instanceof UnsetOp) {\n return new SetOp(this._value);\n }\n\n if (previous instanceof AddOp) {\n return new AddOp(this.applyTo(previous._value));\n }\n\n throw new Error('Cannot merge Add Op with the previous Op');\n }\n }, {\n key: \"toJSON\",\n value: function ()\n /*: { __op: string, objects: mixed }*/\n {\n return {\n __op: 'Add',\n objects: (0, _encode.default)(this._value, false, true)\n };\n }\n }]);\n return AddOp;\n}(Op);\n\nexports.AddOp = AddOp;\n\nvar AddUniqueOp = /*#__PURE__*/function (_Op5) {\n (0, _inherits2.default)(AddUniqueOp, _Op5);\n\n var _super5 = _createSuper(AddUniqueOp);\n\n function AddUniqueOp(value\n /*: mixed | Array*/\n ) {\n var _this4;\n\n (0, _classCallCheck2.default)(this, AddUniqueOp);\n _this4 = _super5.call(this);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this4), \"_value\", void 0);\n _this4._value = (0, _unique.default)((0, _isArray.default)(value) ? value : [value]);\n return _this4;\n }\n\n (0, _createClass2.default)(AddUniqueOp, [{\n key: \"applyTo\",\n value: function (value\n /*: mixed | Array*/\n )\n /*: Array*/\n {\n if (value == null) {\n return this._value || [];\n }\n\n if ((0, _isArray.default)(value)) {\n var _context;\n\n var toAdd = [];\n (0, _forEach.default)(_context = this._value).call(_context, function (v) {\n if (v instanceof _ParseObject.default) {\n if (!(0, _arrayContainsObject.default)(value, v)) {\n toAdd.push(v);\n }\n } else {\n if ((0, _indexOf.default)(value).call(value, v) < 0) {\n toAdd.push(v);\n }\n }\n });\n return (0, _concat.default)(value).call(value, toAdd);\n }\n\n throw new Error('Cannot add elements to a non-array value');\n }\n }, {\n key: \"mergeWith\",\n value: function (previous\n /*: Op*/\n )\n /*: Op*/\n {\n if (!previous) {\n return this;\n }\n\n if (previous instanceof SetOp) {\n return new SetOp(this.applyTo(previous._value));\n }\n\n if (previous instanceof UnsetOp) {\n return new SetOp(this._value);\n }\n\n if (previous instanceof AddUniqueOp) {\n return new AddUniqueOp(this.applyTo(previous._value));\n }\n\n throw new Error('Cannot merge AddUnique Op with the previous Op');\n }\n }, {\n key: \"toJSON\",\n value: function ()\n /*: { __op: string, objects: mixed }*/\n {\n return {\n __op: 'AddUnique',\n objects: (0, _encode.default)(this._value, false, true)\n };\n }\n }]);\n return AddUniqueOp;\n}(Op);\n\nexports.AddUniqueOp = AddUniqueOp;\n\nvar RemoveOp = /*#__PURE__*/function (_Op6) {\n (0, _inherits2.default)(RemoveOp, _Op6);\n\n var _super6 = _createSuper(RemoveOp);\n\n function RemoveOp(value\n /*: mixed | Array*/\n ) {\n var _this5;\n\n (0, _classCallCheck2.default)(this, RemoveOp);\n _this5 = _super6.call(this);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this5), \"_value\", void 0);\n _this5._value = (0, _unique.default)((0, _isArray.default)(value) ? value : [value]);\n return _this5;\n }\n\n (0, _createClass2.default)(RemoveOp, [{\n key: \"applyTo\",\n value: function (value\n /*: mixed | Array*/\n )\n /*: Array*/\n {\n if (value == null) {\n return [];\n }\n\n if ((0, _isArray.default)(value)) {\n // var i = value.indexOf(this._value);\n var removed = (0, _concat.default)(value).call(value, []);\n\n for (var i = 0; i < this._value.length; i++) {\n var index = (0, _indexOf.default)(removed).call(removed, this._value[i]);\n\n while (index > -1) {\n (0, _splice.default)(removed).call(removed, index, 1);\n index = (0, _indexOf.default)(removed).call(removed, this._value[i]);\n }\n\n if (this._value[i] instanceof _ParseObject.default && this._value[i].id) {\n for (var j = 0; j < removed.length; j++) {\n if (removed[j] instanceof _ParseObject.default && this._value[i].id === removed[j].id) {\n (0, _splice.default)(removed).call(removed, j, 1);\n j--;\n }\n }\n }\n }\n\n return removed;\n }\n\n throw new Error('Cannot remove elements from a non-array value');\n }\n }, {\n key: \"mergeWith\",\n value: function (previous\n /*: Op*/\n )\n /*: Op*/\n {\n if (!previous) {\n return this;\n }\n\n if (previous instanceof SetOp) {\n return new SetOp(this.applyTo(previous._value));\n }\n\n if (previous instanceof UnsetOp) {\n return new UnsetOp();\n }\n\n if (previous instanceof RemoveOp) {\n var _context2;\n\n var uniques = (0, _concat.default)(_context2 = previous._value).call(_context2, []);\n\n for (var i = 0; i < this._value.length; i++) {\n if (this._value[i] instanceof _ParseObject.default) {\n if (!(0, _arrayContainsObject.default)(uniques, this._value[i])) {\n uniques.push(this._value[i]);\n }\n } else {\n if ((0, _indexOf.default)(uniques).call(uniques, this._value[i]) < 0) {\n uniques.push(this._value[i]);\n }\n }\n }\n\n return new RemoveOp(uniques);\n }\n\n throw new Error('Cannot merge Remove Op with the previous Op');\n }\n }, {\n key: \"toJSON\",\n value: function ()\n /*: { __op: string, objects: mixed }*/\n {\n return {\n __op: 'Remove',\n objects: (0, _encode.default)(this._value, false, true)\n };\n }\n }]);\n return RemoveOp;\n}(Op);\n\nexports.RemoveOp = RemoveOp;\n\nvar RelationOp = /*#__PURE__*/function (_Op7) {\n (0, _inherits2.default)(RelationOp, _Op7);\n\n var _super7 = _createSuper(RelationOp);\n\n function RelationOp(adds\n /*: Array*/\n , removes\n /*: Array*/\n ) {\n var _this6;\n\n (0, _classCallCheck2.default)(this, RelationOp);\n _this6 = _super7.call(this);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this6), \"_targetClassName\", void 0);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this6), \"relationsToAdd\", void 0);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this6), \"relationsToRemove\", void 0);\n _this6._targetClassName = null;\n\n if ((0, _isArray.default)(adds)) {\n _this6.relationsToAdd = (0, _unique.default)((0, _map.default)(adds).call(adds, _this6._extractId, (0, _assertThisInitialized2.default)(_this6)));\n }\n\n if ((0, _isArray.default)(removes)) {\n _this6.relationsToRemove = (0, _unique.default)((0, _map.default)(removes).call(removes, _this6._extractId, (0, _assertThisInitialized2.default)(_this6)));\n }\n\n return _this6;\n }\n\n (0, _createClass2.default)(RelationOp, [{\n key: \"_extractId\",\n value: function (obj\n /*: string | ParseObject*/\n )\n /*: string*/\n {\n if (typeof obj === 'string') {\n return obj;\n }\n\n if (!obj.id) {\n throw new Error('You cannot add or remove an unsaved Parse Object from a relation');\n }\n\n if (!this._targetClassName) {\n this._targetClassName = obj.className;\n }\n\n if (this._targetClassName !== obj.className) {\n throw new Error('Tried to create a Relation with 2 different object types: ' + this._targetClassName + ' and ' + obj.className + '.');\n }\n\n return obj.id;\n }\n }, {\n key: \"applyTo\",\n value: function (value\n /*: mixed*/\n , object\n /*:: ?: { className: string, id: ?string }*/\n , key\n /*:: ?: string*/\n )\n /*: ?ParseRelation*/\n {\n if (!value) {\n var _context3;\n\n if (!object || !key) {\n throw new Error('Cannot apply a RelationOp without either a previous value, or an object and a key');\n }\n\n var parent = new _ParseObject.default(object.className);\n\n if (object.id && (0, _indexOf.default)(_context3 = object.id).call(_context3, 'local') === 0) {\n parent._localId = object.id;\n } else if (object.id) {\n parent.id = object.id;\n }\n\n var relation = new _ParseRelation.default(parent, key);\n relation.targetClassName = this._targetClassName;\n return relation;\n }\n\n if (value instanceof _ParseRelation.default) {\n if (this._targetClassName) {\n if (value.targetClassName) {\n if (this._targetClassName !== value.targetClassName) {\n throw new Error('Related object must be a ' + value.targetClassName + ', but a ' + this._targetClassName + ' was passed in.');\n }\n } else {\n value.targetClassName = this._targetClassName;\n }\n }\n\n return value;\n } else {\n throw new Error('Relation cannot be applied to a non-relation field');\n }\n }\n }, {\n key: \"mergeWith\",\n value: function (previous\n /*: Op*/\n )\n /*: Op*/\n {\n if (!previous) {\n return this;\n } else if (previous instanceof UnsetOp) {\n throw new Error('You cannot modify a relation after deleting it.');\n } else if (previous instanceof SetOp && previous._value instanceof _ParseRelation.default) {\n return this;\n } else if (previous instanceof RelationOp) {\n var _context4, _context5, _context6, _context7, _context8, _context9;\n\n if (previous._targetClassName && previous._targetClassName !== this._targetClassName) {\n throw new Error('Related object must be of class ' + previous._targetClassName + ', but ' + (this._targetClassName || 'null') + ' was passed in.');\n }\n\n var newAdd = (0, _concat.default)(_context4 = previous.relationsToAdd).call(_context4, []);\n (0, _forEach.default)(_context5 = this.relationsToRemove).call(_context5, function (r) {\n var index = (0, _indexOf.default)(newAdd).call(newAdd, r);\n\n if (index > -1) {\n (0, _splice.default)(newAdd).call(newAdd, index, 1);\n }\n });\n (0, _forEach.default)(_context6 = this.relationsToAdd).call(_context6, function (r) {\n var index = (0, _indexOf.default)(newAdd).call(newAdd, r);\n\n if (index < 0) {\n newAdd.push(r);\n }\n });\n var newRemove = (0, _concat.default)(_context7 = previous.relationsToRemove).call(_context7, []);\n (0, _forEach.default)(_context8 = this.relationsToAdd).call(_context8, function (r) {\n var index = (0, _indexOf.default)(newRemove).call(newRemove, r);\n\n if (index > -1) {\n (0, _splice.default)(newRemove).call(newRemove, index, 1);\n }\n });\n (0, _forEach.default)(_context9 = this.relationsToRemove).call(_context9, function (r) {\n var index = (0, _indexOf.default)(newRemove).call(newRemove, r);\n\n if (index < 0) {\n newRemove.push(r);\n }\n });\n var newRelation = new RelationOp(newAdd, newRemove);\n newRelation._targetClassName = this._targetClassName;\n return newRelation;\n }\n\n throw new Error('Cannot merge Relation Op with the previous Op');\n }\n }, {\n key: \"toJSON\",\n value: function ()\n /*: { __op?: string, objects?: mixed, ops?: mixed }*/\n {\n var _this7 = this;\n\n var idToPointer = function (id) {\n return {\n __type: 'Pointer',\n className: _this7._targetClassName,\n objectId: id\n };\n };\n\n var adds = null;\n var removes = null;\n var pointers = null;\n\n if (this.relationsToAdd.length > 0) {\n var _context10;\n\n pointers = (0, _map.default)(_context10 = this.relationsToAdd).call(_context10, idToPointer);\n adds = {\n __op: 'AddRelation',\n objects: pointers\n };\n }\n\n if (this.relationsToRemove.length > 0) {\n var _context11;\n\n pointers = (0, _map.default)(_context11 = this.relationsToRemove).call(_context11, idToPointer);\n removes = {\n __op: 'RemoveRelation',\n objects: pointers\n };\n }\n\n if (adds && removes) {\n return {\n __op: 'Batch',\n ops: [adds, removes]\n };\n }\n\n return adds || removes || {};\n }\n }]);\n return RelationOp;\n}(Op);\n\nexports.RelationOp = RelationOp;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseOp.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParsePolygon.js":
+/*!*********************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParsePolygon.js ***!
+ \*********************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ \"../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\"));\n\nvar _ParseGeoPoint = _interopRequireDefault(__webpack_require__(/*! ./ParseGeoPoint */ \"../node_modules/parse/lib/browser/ParseGeoPoint.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n/**\n * Creates a new Polygon with any of the following forms: \n * \n * new Polygon([[0,0],[0,1],[1,1],[1,0]])\n * new Polygon([GeoPoint, GeoPoint, GeoPoint])\n * \n *\n * Represents a coordinates that may be associated\n * with a key in a ParseObject or used as a reference point for geo queries.\n * This allows proximity-based queries on the key.
\n *\n * Example:
\n * var polygon = new Parse.Polygon([[0,0],[0,1],[1,1],[1,0]]);\n * var object = new Parse.Object(\"PlaceObject\");\n * object.set(\"area\", polygon);\n * object.save(); \n *\n * @alias Parse.Polygon\n */\n\n\nvar ParsePolygon = /*#__PURE__*/function () {\n /**\n * @param {(number[][] | Parse.GeoPoint[])} coordinates An Array of coordinate pairs\n */\n function ParsePolygon(coordinates\n /*: Array> | Array*/\n ) {\n (0, _classCallCheck2.default)(this, ParsePolygon);\n (0, _defineProperty2.default)(this, \"_coordinates\", void 0);\n this._coordinates = ParsePolygon._validate(coordinates);\n }\n /**\n * Coordinates value for this Polygon.\n * Throws an exception if not valid type.\n *\n * @property {(number[][] | Parse.GeoPoint[])} coordinates list of coordinates\n * @returns {number[][]}\n */\n\n\n (0, _createClass2.default)(ParsePolygon, [{\n key: \"coordinates\",\n get: function ()\n /*: Array>*/\n {\n return this._coordinates;\n },\n set: function (coords\n /*: Array> | Array*/\n ) {\n this._coordinates = ParsePolygon._validate(coords);\n }\n /**\n * Returns a JSON representation of the Polygon, suitable for Parse.\n *\n * @returns {object}\n */\n\n }, {\n key: \"toJSON\",\n value: function ()\n /*: { __type: string, coordinates: Array> }*/\n {\n ParsePolygon._validate(this._coordinates);\n\n return {\n __type: 'Polygon',\n coordinates: this._coordinates\n };\n }\n /**\n * Checks if two polygons are equal\n *\n * @param {(Parse.Polygon | object)} other\n * @returns {boolean}\n */\n\n }, {\n key: \"equals\",\n value: function (other\n /*: mixed*/\n )\n /*: boolean*/\n {\n if (!(other instanceof ParsePolygon) || this.coordinates.length !== other.coordinates.length) {\n return false;\n }\n\n var isEqual = true;\n\n for (var i = 1; i < this._coordinates.length; i += 1) {\n if (this._coordinates[i][0] != other.coordinates[i][0] || this._coordinates[i][1] != other.coordinates[i][1]) {\n isEqual = false;\n break;\n }\n }\n\n return isEqual;\n }\n /**\n *\n * @param {Parse.GeoPoint} point\n * @returns {boolean} Returns if the point is contained in the polygon\n */\n\n }, {\n key: \"containsPoint\",\n value: function (point\n /*: ParseGeoPoint*/\n )\n /*: boolean*/\n {\n var minX = this._coordinates[0][0];\n var maxX = this._coordinates[0][0];\n var minY = this._coordinates[0][1];\n var maxY = this._coordinates[0][1];\n\n for (var i = 1; i < this._coordinates.length; i += 1) {\n var p = this._coordinates[i];\n minX = Math.min(p[0], minX);\n maxX = Math.max(p[0], maxX);\n minY = Math.min(p[1], minY);\n maxY = Math.max(p[1], maxY);\n }\n\n var outside = point.latitude < minX || point.latitude > maxX || point.longitude < minY || point.longitude > maxY;\n\n if (outside) {\n return false;\n }\n\n var inside = false;\n\n for (var _i = 0, j = this._coordinates.length - 1; _i < this._coordinates.length; j = _i++) {\n var startX = this._coordinates[_i][0];\n var startY = this._coordinates[_i][1];\n var endX = this._coordinates[j][0];\n var endY = this._coordinates[j][1];\n var intersect = startY > point.longitude != endY > point.longitude && point.latitude < (endX - startX) * (point.longitude - startY) / (endY - startY) + startX;\n\n if (intersect) {\n inside = !inside;\n }\n }\n\n return inside;\n }\n /**\n * Validates that the list of coordinates can form a valid polygon\n *\n * @param {Array} coords the list of coordinates to validate as a polygon\n * @throws {TypeError}\n * @returns {number[][]} Array of coordinates if validated.\n */\n\n }], [{\n key: \"_validate\",\n value: function (coords\n /*: Array> | Array*/\n )\n /*: Array>*/\n {\n if (!(0, _isArray.default)(coords)) {\n throw new TypeError('Coordinates must be an Array');\n }\n\n if (coords.length < 3) {\n throw new TypeError('Polygon must have at least 3 GeoPoints or Points');\n }\n\n var points = [];\n\n for (var i = 0; i < coords.length; i += 1) {\n var coord = coords[i];\n var geoPoint = void 0;\n\n if (coord instanceof _ParseGeoPoint.default) {\n geoPoint = coord;\n } else if ((0, _isArray.default)(coord) && coord.length === 2) {\n geoPoint = new _ParseGeoPoint.default(coord[0], coord[1]);\n } else {\n throw new TypeError('Coordinates must be an Array of GeoPoints or Points');\n }\n\n points.push([geoPoint.latitude, geoPoint.longitude]);\n }\n\n return points;\n }\n }]);\n return ParsePolygon;\n}();\n\nvar _default = ParsePolygon;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParsePolygon.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseQuery.js":
+/*!*******************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseQuery.js ***!
+ \*******************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _entries = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/entries */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/entries.js\"));\n\nvar _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/slicedToArray */ \"../node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js\"));\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/toConsumableArray */ \"../node_modules/@babel/runtime-corejs3/helpers/toConsumableArray.js\"));\n\nvar _find = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js\"));\n\nvar _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\"));\n\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/regenerator */ \"../node_modules/@babel/runtime-corejs3/regenerator/index.js\"));\n\nvar _splice = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/splice */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/splice.js\"));\n\nvar _sort = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/sort */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/sort.js\"));\n\nvar _includes = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/includes */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js\"));\n\nvar _concat = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/concat */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js\"));\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/keys.js\"));\n\nvar _filter2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/asyncToGenerator */ \"../node_modules/@babel/runtime-corejs3/helpers/asyncToGenerator.js\"));\n\nvar _map2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ \"../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\"));\n\nvar _slice = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/slice */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js\"));\n\nvar _keys2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/index-of */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\"));\n\nvar _forEach = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js\"));\n\nvar _CoreManager = _interopRequireDefault(__webpack_require__(/*! ./CoreManager */ \"../node_modules/parse/lib/browser/CoreManager.js\"));\n\nvar _encode = _interopRequireDefault(__webpack_require__(/*! ./encode */ \"../node_modules/parse/lib/browser/encode.js\"));\n\nvar _promiseUtils = __webpack_require__(/*! ./promiseUtils */ \"../node_modules/parse/lib/browser/promiseUtils.js\");\n\nvar _ParseError = _interopRequireDefault(__webpack_require__(/*! ./ParseError */ \"../node_modules/parse/lib/browser/ParseError.js\"));\n\nvar _ParseGeoPoint = _interopRequireDefault(__webpack_require__(/*! ./ParseGeoPoint */ \"../node_modules/parse/lib/browser/ParseGeoPoint.js\"));\n\nvar _ParseObject = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n\nvar _OfflineQuery = _interopRequireDefault(__webpack_require__(/*! ./OfflineQuery */ \"../node_modules/parse/lib/browser/OfflineQuery.js\"));\n\nvar _LocalDatastoreUtils = __webpack_require__(/*! ./LocalDatastoreUtils */ \"../node_modules/parse/lib/browser/LocalDatastoreUtils.js\");\n/*\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n/**\n * Converts a string into a regex that matches it.\n * Surrounding with \\Q .. \\E does this, we just need to escape any \\E's in\n * the text separately.\n *\n * @param s\n * @private\n * @returns {string}\n */\n\n\nfunction quote(s\n/*: string*/\n)\n/*: string*/\n{\n return '\\\\Q' + s.replace('\\\\E', '\\\\E\\\\\\\\E\\\\Q') + '\\\\E';\n}\n/**\n * Extracts the class name from queries. If not all queries have the same\n * class name an error will be thrown.\n *\n * @param queries\n * @private\n * @returns {string}\n */\n\n\nfunction _getClassNameFromQueries(queries\n/*: Array*/\n)\n/*: ?string*/\n{\n var className = null;\n (0, _forEach.default)(queries).call(queries, function (q) {\n if (!className) {\n className = q.className;\n }\n\n if (className !== q.className) {\n throw new Error('All queries must be for the same class.');\n }\n });\n return className;\n}\n/*\n * Handles pre-populating the result data of a query with select fields,\n * making sure that the data object contains keys for all objects that have\n * been requested with a select, so that our cached state updates correctly.\n */\n\n\nfunction handleSelectResult(data\n/*: any*/\n, select\n/*: Array*/\n) {\n var serverDataMask = {};\n (0, _forEach.default)(select).call(select, function (field) {\n var hasSubObjectSelect = (0, _indexOf.default)(field).call(field, '.') !== -1;\n\n if (!hasSubObjectSelect && !data.hasOwnProperty(field)) {\n // this field was selected, but is missing from the retrieved data\n data[field] = undefined;\n } else if (hasSubObjectSelect) {\n // this field references a sub-object,\n // so we need to walk down the path components\n var pathComponents = field.split('.');\n var _obj = data;\n var serverMask = serverDataMask;\n (0, _forEach.default)(pathComponents).call(pathComponents, function (component, index, arr) {\n // add keys if the expected data is missing\n if (_obj && !_obj.hasOwnProperty(component)) {\n _obj[component] = undefined;\n }\n\n if (_obj && (0, _typeof2.default)(_obj) === 'object') {\n _obj = _obj[component];\n } //add this path component to the server mask so we can fill it in later if needed\n\n\n if (index < arr.length - 1) {\n if (!serverMask[component]) {\n serverMask[component] = {};\n }\n\n serverMask = serverMask[component];\n }\n });\n }\n });\n\n if ((0, _keys2.default)(serverDataMask).length > 0) {\n // When selecting from sub-objects, we don't want to blow away the missing\n // information that we may have retrieved before. We've already added any\n // missing selected keys to sub-objects, but we still need to add in the\n // data for any previously retrieved sub-objects that were not selected.\n var serverData = _CoreManager.default.getObjectStateController().getServerData({\n id: data.objectId,\n className: data.className\n });\n\n copyMissingDataWithMask(serverData, data, serverDataMask, false);\n }\n}\n\nfunction copyMissingDataWithMask(src, dest, mask, copyThisLevel) {\n //copy missing elements at this level\n if (copyThisLevel) {\n for (var _key in src) {\n if (src.hasOwnProperty(_key) && !dest.hasOwnProperty(_key)) {\n dest[_key] = src[_key];\n }\n }\n }\n\n for (var _key2 in mask) {\n if (dest[_key2] !== undefined && dest[_key2] !== null && src !== undefined && src !== null) {\n //traverse into objects as needed\n copyMissingDataWithMask(src[_key2], dest[_key2], mask[_key2], true);\n }\n }\n}\n\nfunction handleOfflineSort(a, b, sorts) {\n var order = sorts[0];\n var operator = (0, _slice.default)(order).call(order, 0, 1);\n var isDescending = operator === '-';\n\n if (isDescending) {\n order = order.substring(1);\n }\n\n if (order === '_created_at') {\n order = 'createdAt';\n }\n\n if (order === '_updated_at') {\n order = 'updatedAt';\n }\n\n if (!/^[A-Za-z][0-9A-Za-z_]*$/.test(order) || order === 'password') {\n throw new _ParseError.default(_ParseError.default.INVALID_KEY_NAME, \"Invalid Key: \".concat(order));\n }\n\n var field1 = a.get(order);\n var field2 = b.get(order);\n\n if (field1 < field2) {\n return isDescending ? 1 : -1;\n }\n\n if (field1 > field2) {\n return isDescending ? -1 : 1;\n }\n\n if (sorts.length > 1) {\n var remainingSorts = (0, _slice.default)(sorts).call(sorts, 1);\n return handleOfflineSort(a, b, remainingSorts);\n }\n\n return 0;\n}\n/**\n * Creates a new parse Parse.Query for the given Parse.Object subclass.\n *\n * Parse.Query defines a query that is used to fetch Parse.Objects. The\n * most common use case is finding all objects that match a query through the\n * find
method. for example, this sample code fetches all objects\n * of class myclass
. it calls a different function depending on\n * whether the fetch succeeded or not.\n *\n *
\n * var query = new Parse.Query(myclass);\n * query.find().then((results) => {\n * // results is an array of parse.object.\n * }).catch((error) => {\n * // error is an instance of parse.error.\n * }); \n *\n * a Parse.Query can also be used to retrieve a single object whose id is\n * known, through the get method. for example, this sample code fetches an\n * object of class myclass
and id myid
. it calls a\n * different function depending on whether the fetch succeeded or not.\n *\n *
\n * var query = new Parse.Query(myclass);\n * query.get(myid).then((object) => {\n * // object is an instance of parse.object.\n * }).catch((error) => {\n * // error is an instance of parse.error.\n * }); \n *\n * a Parse.Query can also be used to count the number of objects that match\n * the query without retrieving all of those objects. for example, this\n * sample code counts the number of objects of the class myclass
\n *
\n * var query = new Parse.Query(myclass);\n * query.count().then((number) => {\n * // there are number instances of myclass.\n * }).catch((error) => {\n * // error is an instance of Parse.Error.\n * }); \n *\n * @alias Parse.Query\n */\n\n\nvar ParseQuery = /*#__PURE__*/function () {\n /**\n * @property {string} className\n */\n\n /**\n * @param {(string | Parse.Object)} objectClass An instance of a subclass of Parse.Object, or a Parse className string.\n */\n function ParseQuery(objectClass\n /*: string | ParseObject*/\n ) {\n (0, _classCallCheck2.default)(this, ParseQuery);\n (0, _defineProperty2.default)(this, \"className\", void 0);\n (0, _defineProperty2.default)(this, \"_where\", void 0);\n (0, _defineProperty2.default)(this, \"_include\", void 0);\n (0, _defineProperty2.default)(this, \"_exclude\", void 0);\n (0, _defineProperty2.default)(this, \"_select\", void 0);\n (0, _defineProperty2.default)(this, \"_limit\", void 0);\n (0, _defineProperty2.default)(this, \"_skip\", void 0);\n (0, _defineProperty2.default)(this, \"_count\", void 0);\n (0, _defineProperty2.default)(this, \"_order\", void 0);\n (0, _defineProperty2.default)(this, \"_readPreference\", void 0);\n (0, _defineProperty2.default)(this, \"_includeReadPreference\", void 0);\n (0, _defineProperty2.default)(this, \"_subqueryReadPreference\", void 0);\n (0, _defineProperty2.default)(this, \"_queriesLocalDatastore\", void 0);\n (0, _defineProperty2.default)(this, \"_localDatastorePinName\", void 0);\n (0, _defineProperty2.default)(this, \"_extraOptions\", void 0);\n (0, _defineProperty2.default)(this, \"_hint\", void 0);\n (0, _defineProperty2.default)(this, \"_explain\", void 0);\n (0, _defineProperty2.default)(this, \"_xhrRequest\", void 0);\n\n if (typeof objectClass === 'string') {\n if (objectClass === 'User' && _CoreManager.default.get('PERFORM_USER_REWRITE')) {\n this.className = '_User';\n } else {\n this.className = objectClass;\n }\n } else if (objectClass instanceof _ParseObject.default) {\n this.className = objectClass.className;\n } else if (typeof objectClass === 'function') {\n if (typeof objectClass.className === 'string') {\n this.className = objectClass.className;\n } else {\n var _obj2 = new objectClass();\n\n this.className = _obj2.className;\n }\n } else {\n throw new TypeError('A ParseQuery must be constructed with a ParseObject or class name.');\n }\n\n this._where = {};\n this._include = [];\n this._exclude = [];\n this._count = false;\n this._limit = -1; // negative limit is not sent in the server request\n\n this._skip = 0;\n this._readPreference = null;\n this._includeReadPreference = null;\n this._subqueryReadPreference = null;\n this._queriesLocalDatastore = false;\n this._localDatastorePinName = null;\n this._extraOptions = {};\n this._xhrRequest = {\n task: null,\n onchange: function () {}\n };\n }\n /**\n * Adds constraint that at least one of the passed in queries matches.\n *\n * @param {Array} queries\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n\n (0, _createClass2.default)(ParseQuery, [{\n key: \"_orQuery\",\n value: function (queries\n /*: Array*/\n )\n /*: ParseQuery*/\n {\n var queryJSON = (0, _map2.default)(queries).call(queries, function (q) {\n return q.toJSON().where;\n });\n this._where.$or = queryJSON;\n return this;\n }\n /**\n * Adds constraint that all of the passed in queries match.\n *\n * @param {Array} queries\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"_andQuery\",\n value: function (queries\n /*: Array*/\n )\n /*: ParseQuery*/\n {\n var queryJSON = (0, _map2.default)(queries).call(queries, function (q) {\n return q.toJSON().where;\n });\n this._where.$and = queryJSON;\n return this;\n }\n /**\n * Adds constraint that none of the passed in queries match.\n *\n * @param {Array} queries\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"_norQuery\",\n value: function (queries\n /*: Array*/\n )\n /*: ParseQuery*/\n {\n var queryJSON = (0, _map2.default)(queries).call(queries, function (q) {\n return q.toJSON().where;\n });\n this._where.$nor = queryJSON;\n return this;\n }\n /**\n * Helper for condition queries\n *\n * @param key\n * @param condition\n * @param value\n * @returns {Parse.Query}\n */\n\n }, {\n key: \"_addCondition\",\n value: function (key\n /*: string*/\n , condition\n /*: string*/\n , value\n /*: mixed*/\n )\n /*: ParseQuery*/\n {\n if (!this._where[key] || typeof this._where[key] === 'string') {\n this._where[key] = {};\n }\n\n this._where[key][condition] = (0, _encode.default)(value, false, true);\n return this;\n }\n /**\n * Converts string for regular expression at the beginning\n *\n * @param string\n * @returns {string}\n */\n\n }, {\n key: \"_regexStartWith\",\n value: function (string\n /*: string*/\n )\n /*: string*/\n {\n return '^' + quote(string);\n }\n }, {\n key: \"_handleOfflineQuery\",\n value: function () {\n var _handleOfflineQuery2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(params\n /*: any*/\n ) {\n var _context,\n _this2 = this;\n\n var localDatastore, objects, results, keys, alwaysSelectedKeys, sorts, count, limit;\n return _regenerator.default.wrap(function (_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _OfflineQuery.default.validateQuery(this);\n\n localDatastore = _CoreManager.default.getLocalDatastore();\n _context3.next = 4;\n return localDatastore._serializeObjectsFromPinName(this._localDatastorePinName);\n\n case 4:\n objects = _context3.sent;\n results = (0, _filter2.default)(_context = (0, _map2.default)(objects).call(objects, function (json, index, arr) {\n var object = _ParseObject.default.fromJSON(json, false);\n\n if (json._localId && !json.objectId) {\n object._localId = json._localId;\n }\n\n if (!_OfflineQuery.default.matchesQuery(_this2.className, object, arr, _this2)) {\n return null;\n }\n\n return object;\n })).call(_context, function (object) {\n return object !== null;\n });\n\n if ((0, _keys.default)(params)) {\n keys = (0, _keys.default)(params).split(',');\n alwaysSelectedKeys = ['className', 'objectId', 'createdAt', 'updatedAt', 'ACL'];\n keys = (0, _concat.default)(keys).call(keys, alwaysSelectedKeys);\n results = (0, _map2.default)(results).call(results, function (object) {\n var _context2;\n\n var json = object._toFullJSON();\n\n (0, _forEach.default)(_context2 = (0, _keys2.default)(json)).call(_context2, function (key) {\n if (!(0, _includes.default)(keys).call(keys, key)) {\n delete json[key];\n }\n });\n return _ParseObject.default.fromJSON(json, false);\n });\n }\n\n if (params.order) {\n sorts = params.order.split(',');\n (0, _sort.default)(results).call(results, function (a, b) {\n return handleOfflineSort(a, b, sorts);\n });\n } // count total before applying limit/skip\n\n\n if (params.count) {\n count = results.length; // total count from response\n }\n\n if (params.skip) {\n if (params.skip >= results.length) {\n results = [];\n } else {\n results = (0, _splice.default)(results).call(results, params.skip, results.length);\n }\n }\n\n limit = results.length;\n\n if (params.limit !== 0 && params.limit < results.length) {\n limit = params.limit;\n }\n\n results = (0, _splice.default)(results).call(results, 0, limit);\n\n if (!(typeof count === 'number')) {\n _context3.next = 15;\n break;\n }\n\n return _context3.abrupt(\"return\", {\n results: results,\n count: count\n });\n\n case 15:\n return _context3.abrupt(\"return\", results);\n\n case 16:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function () {\n return _handleOfflineQuery2.apply(this, arguments);\n };\n }()\n /**\n * Returns a JSON representation of this query.\n *\n * @returns {object} The JSON representation of the query.\n */\n\n }, {\n key: \"toJSON\",\n value: function ()\n /*: QueryJSON*/\n {\n var params\n /*: QueryJSON*/\n = {\n where: this._where\n };\n\n if (this._include.length) {\n params.include = this._include.join(',');\n }\n\n if (this._exclude.length) {\n params.excludeKeys = this._exclude.join(',');\n }\n\n if (this._select) {\n params.keys = this._select.join(',');\n }\n\n if (this._count) {\n params.count = 1;\n }\n\n if (this._limit >= 0) {\n params.limit = this._limit;\n }\n\n if (this._skip > 0) {\n params.skip = this._skip;\n }\n\n if (this._order) {\n params.order = this._order.join(',');\n }\n\n if (this._readPreference) {\n params.readPreference = this._readPreference;\n }\n\n if (this._includeReadPreference) {\n params.includeReadPreference = this._includeReadPreference;\n }\n\n if (this._subqueryReadPreference) {\n params.subqueryReadPreference = this._subqueryReadPreference;\n }\n\n if (this._hint) {\n params.hint = this._hint;\n }\n\n if (this._explain) {\n params.explain = true;\n }\n\n for (var _key3 in this._extraOptions) {\n params[_key3] = this._extraOptions[_key3];\n }\n\n return params;\n }\n /**\n * Return a query with conditions from json, can be useful to send query from server side to client\n * Not static, all query conditions was set before calling this method will be deleted.\n * For example on the server side we have\n * var query = new Parse.Query(\"className\");\n * query.equalTo(key: value);\n * query.limit(100);\n * ... (others queries)\n * Create JSON representation of Query Object\n * var jsonFromServer = query.fromJSON();\n *\n * On client side getting query:\n * var query = new Parse.Query(\"className\");\n * query.fromJSON(jsonFromServer);\n *\n * and continue to query...\n * query.skip(100).find().then(...);\n *\n * @param {QueryJSON} json from Parse.Query.toJSON() method\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"withJSON\",\n value: function (json\n /*: QueryJSON*/\n )\n /*: ParseQuery*/\n {\n if (json.where) {\n this._where = json.where;\n }\n\n if (json.include) {\n this._include = json.include.split(',');\n }\n\n if ((0, _keys.default)(json)) {\n this._select = (0, _keys.default)(json).split(',');\n }\n\n if (json.excludeKeys) {\n this._exclude = json.excludeKeys.split(',');\n }\n\n if (json.count) {\n this._count = json.count === 1;\n }\n\n if (json.limit) {\n this._limit = json.limit;\n }\n\n if (json.skip) {\n this._skip = json.skip;\n }\n\n if (json.order) {\n this._order = json.order.split(',');\n }\n\n if (json.readPreference) {\n this._readPreference = json.readPreference;\n }\n\n if (json.includeReadPreference) {\n this._includeReadPreference = json.includeReadPreference;\n }\n\n if (json.subqueryReadPreference) {\n this._subqueryReadPreference = json.subqueryReadPreference;\n }\n\n if (json.hint) {\n this._hint = json.hint;\n }\n\n if (json.explain) {\n this._explain = !!json.explain;\n }\n\n for (var _key4 in json) {\n if (json.hasOwnProperty(_key4)) {\n var _context4;\n\n if ((0, _indexOf.default)(_context4 = ['where', 'include', 'keys', 'count', 'limit', 'skip', 'order', 'readPreference', 'includeReadPreference', 'subqueryReadPreference', 'hint', 'explain']).call(_context4, _key4) === -1) {\n this._extraOptions[_key4] = json[_key4];\n }\n }\n }\n\n return this;\n }\n /**\n * Static method to restore Parse.Query by json representation\n * Internally calling Parse.Query.withJSON\n *\n * @param {string} className\n * @param {QueryJSON} json from Parse.Query.toJSON() method\n * @returns {Parse.Query} new created query\n */\n\n }, {\n key: \"get\",\n value:\n /**\n * Constructs a Parse.Object whose id is already known by fetching data from\n * the server. Unlike the first
method, it never returns undefined.\n *\n * @param {string} objectId The id of the object to be fetched.\n * @param {object} options\n * Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * context: A dictionary that is accessible in Cloud Code `beforeFind` trigger.\n * json: Return raw json without converting to Parse.Object\n * \n *\n * @returns {Promise} A promise that is resolved with the result when\n * the query completes.\n */\n function (objectId\n /*: string*/\n , options\n /*:: ?: FullOptions*/\n )\n /*: Promise*/\n {\n this.equalTo('objectId', objectId);\n var firstOptions = {};\n\n if (options && options.hasOwnProperty('useMasterKey')) {\n firstOptions.useMasterKey = options.useMasterKey;\n }\n\n if (options && options.hasOwnProperty('sessionToken')) {\n firstOptions.sessionToken = options.sessionToken;\n }\n\n if (options && options.hasOwnProperty('context') && (0, _typeof2.default)(options.context) === 'object') {\n firstOptions.context = options.context;\n }\n\n if (options && options.hasOwnProperty('json')) {\n firstOptions.json = options.json;\n }\n\n return this.first(firstOptions).then(function (response) {\n if (response) {\n return response;\n }\n\n var errorObject = new _ParseError.default(_ParseError.default.OBJECT_NOT_FOUND, 'Object not found.');\n return _promise.default.reject(errorObject);\n });\n }\n /**\n * Retrieves a list of ParseObjects that satisfy this query.\n *\n * @param {object} options Valid options\n * are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * context: A dictionary that is accessible in Cloud Code `beforeFind` trigger.\n * json: Return raw json without converting to Parse.Object\n * \n *\n * @returns {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n\n }, {\n key: \"find\",\n value: function (options\n /*:: ?: FullOptions*/\n )\n /*: Promise>*/\n {\n var _this3 = this;\n\n options = options || {};\n var findOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n findOptions.useMasterKey = options.useMasterKey;\n }\n\n if (options.hasOwnProperty('sessionToken')) {\n findOptions.sessionToken = options.sessionToken;\n }\n\n if (options.hasOwnProperty('context') && (0, _typeof2.default)(options.context) === 'object') {\n findOptions.context = options.context;\n }\n\n this._setRequestTask(findOptions);\n\n var controller = _CoreManager.default.getQueryController();\n\n var select = this._select;\n\n if (this._queriesLocalDatastore) {\n return this._handleOfflineQuery(this.toJSON());\n }\n\n return (0, _find.default)(controller).call(controller, this.className, this.toJSON(), findOptions).then(function (response) {\n var _context5; // Return generic object when explain is used\n\n\n if (_this3._explain) {\n return response.results;\n }\n\n var results = (0, _map2.default)(_context5 = response.results).call(_context5, function (data) {\n // In cases of relations, the server may send back a className\n // on the top level of the payload\n var override = response.className || _this3.className;\n\n if (!data.className) {\n data.className = override;\n } // Make sure the data object contains keys for all objects that\n // have been requested with a select, so that our cached state\n // updates correctly.\n\n\n if (select) {\n handleSelectResult(data, select);\n }\n\n if (options.json) {\n return data;\n } else {\n return _ParseObject.default.fromJSON(data, !select);\n }\n });\n var count = response.count;\n\n if (typeof count === 'number') {\n return {\n results: results,\n count: count\n };\n } else {\n return results;\n }\n });\n }\n /**\n * Retrieves a complete list of ParseObjects that satisfy this query.\n * Using `eachBatch` under the hood to fetch all the valid objects.\n *\n * @param {object} options Valid options are:\n * batchSize: How many objects to yield in each batch (default: 100)\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * \n * @returns {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n\n }, {\n key: \"findAll\",\n value: function () {\n var _findAll = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(options\n /*:: ?: BatchOptions*/\n ) {\n var result;\n return _regenerator.default.wrap(function (_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n result\n /*: ParseObject[]*/\n = [];\n _context7.next = 3;\n return this.eachBatch(function (objects\n /*: ParseObject[]*/\n ) {\n var _context6;\n\n result = (0, _concat.default)(_context6 = []).call(_context6, (0, _toConsumableArray2.default)(result), (0, _toConsumableArray2.default)(objects));\n }, options);\n\n case 3:\n return _context7.abrupt(\"return\", result);\n\n case 4:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function () {\n return _findAll.apply(this, arguments);\n };\n }()\n /**\n * Counts the number of objects that match this query.\n *\n * @param {object} options\n * Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * \n *\n * @returns {Promise} A promise that is resolved with the count when\n * the query completes.\n */\n\n }, {\n key: \"count\",\n value: function (options\n /*:: ?: FullOptions*/\n )\n /*: Promise*/\n {\n options = options || {};\n var findOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n findOptions.useMasterKey = options.useMasterKey;\n }\n\n if (options.hasOwnProperty('sessionToken')) {\n findOptions.sessionToken = options.sessionToken;\n }\n\n this._setRequestTask(findOptions);\n\n var controller = _CoreManager.default.getQueryController();\n\n var params = this.toJSON();\n params.limit = 0;\n params.count = 1;\n return (0, _find.default)(controller).call(controller, this.className, params, findOptions).then(function (result) {\n return result.count;\n });\n }\n /**\n * Executes a distinct query and returns unique values\n *\n * @param {string} key A field to find distinct values\n * @param {object} options\n * Valid options are:\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * \n *\n * @returns {Promise} A promise that is resolved with the query completes.\n */\n\n }, {\n key: \"distinct\",\n value: function (key\n /*: string*/\n , options\n /*:: ?: FullOptions*/\n )\n /*: Promise>*/\n {\n options = options || {};\n var distinctOptions = {};\n distinctOptions.useMasterKey = true;\n\n if (options.hasOwnProperty('sessionToken')) {\n distinctOptions.sessionToken = options.sessionToken;\n }\n\n this._setRequestTask(distinctOptions);\n\n var controller = _CoreManager.default.getQueryController();\n\n var params = {\n distinct: key,\n where: this._where,\n hint: this._hint\n };\n return controller.aggregate(this.className, params, distinctOptions).then(function (results) {\n return results.results;\n });\n }\n /**\n * Executes an aggregate query and returns aggregate results\n *\n * @param {(Array|object)} pipeline Array or Object of stages to process query\n * @param {object} options Valid options are:\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * \n *\n * @returns {Promise} A promise that is resolved with the query completes.\n */\n\n }, {\n key: \"aggregate\",\n value: function (pipeline\n /*: mixed*/\n , options\n /*:: ?: FullOptions*/\n )\n /*: Promise>*/\n {\n options = options || {};\n var aggregateOptions = {};\n aggregateOptions.useMasterKey = true;\n\n if (options.hasOwnProperty('sessionToken')) {\n aggregateOptions.sessionToken = options.sessionToken;\n }\n\n this._setRequestTask(aggregateOptions);\n\n var controller = _CoreManager.default.getQueryController();\n\n if (!(0, _isArray.default)(pipeline) && (0, _typeof2.default)(pipeline) !== 'object') {\n throw new Error('Invalid pipeline must be Array or Object');\n }\n\n if ((0, _keys2.default)(this._where || {}).length) {\n if (!(0, _isArray.default)(pipeline)) {\n pipeline = [pipeline];\n }\n\n pipeline.unshift({\n match: this._where\n });\n }\n\n var params = {\n pipeline: pipeline,\n hint: this._hint,\n explain: this._explain,\n readPreference: this._readPreference\n };\n return controller.aggregate(this.className, params, aggregateOptions).then(function (results) {\n return results.results;\n });\n }\n /**\n * Retrieves at most one Parse.Object that satisfies this query.\n *\n * Returns the object if there is one, otherwise undefined.\n *\n * @param {object} options Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * context: A dictionary that is accessible in Cloud Code `beforeFind` trigger.\n * json: Return raw json without converting to Parse.Object\n * \n *\n * @returns {Promise} A promise that is resolved with the object when\n * the query completes.\n */\n\n }, {\n key: \"first\",\n value: function (options\n /*:: ?: FullOptions*/\n )\n /*: Promise*/\n {\n var _this4 = this;\n\n options = options || {};\n var findOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n findOptions.useMasterKey = options.useMasterKey;\n }\n\n if (options.hasOwnProperty('sessionToken')) {\n findOptions.sessionToken = options.sessionToken;\n }\n\n if (options.hasOwnProperty('context') && (0, _typeof2.default)(options.context) === 'object') {\n findOptions.context = options.context;\n }\n\n this._setRequestTask(findOptions);\n\n var controller = _CoreManager.default.getQueryController();\n\n var params = this.toJSON();\n params.limit = 1;\n var select = this._select;\n\n if (this._queriesLocalDatastore) {\n return this._handleOfflineQuery(params).then(function (objects) {\n if (!objects[0]) {\n return undefined;\n }\n\n return objects[0];\n });\n }\n\n return (0, _find.default)(controller).call(controller, this.className, params, findOptions).then(function (response) {\n var objects = response.results;\n\n if (!objects[0]) {\n return undefined;\n }\n\n if (!objects[0].className) {\n objects[0].className = _this4.className;\n } // Make sure the data object contains keys for all objects that\n // have been requested with a select, so that our cached state\n // updates correctly.\n\n\n if (select) {\n handleSelectResult(objects[0], select);\n }\n\n if (options.json) {\n return objects[0];\n } else {\n return _ParseObject.default.fromJSON(objects[0], !select);\n }\n });\n }\n /**\n * Iterates over objects matching a query, calling a callback for each batch.\n * If the callback returns a promise, the iteration will not continue until\n * that promise has been fulfilled. If the callback returns a rejected\n * promise, then iteration will stop with that error. The items are processed\n * in an unspecified order. The query may not have any sort order, and may\n * not use limit or skip.\n *\n * @param {Function} callback Callback that will be called with each result\n * of the query.\n * @param {object} options Valid options are:\n * batchSize: How many objects to yield in each batch (default: 100)\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * context: A dictionary that is accessible in Cloud Code `beforeFind` trigger.\n * \n * @returns {Promise} A promise that will be fulfilled once the\n * iteration has completed.\n */\n\n }, {\n key: \"eachBatch\",\n value: function (callback\n /*: (objs: Array) => Promise<*>*/\n , options\n /*:: ?: BatchOptions*/\n )\n /*: Promise*/\n {\n var _context8;\n\n options = options || {};\n\n if (this._order || this._skip || this._limit >= 0) {\n return _promise.default.reject('Cannot iterate on a query with sort, skip, or limit.');\n }\n\n var query = new ParseQuery(this.className);\n query._limit = options.batchSize || 100;\n query._include = (0, _map2.default)(_context8 = this._include).call(_context8, function (i) {\n return i;\n });\n\n if (this._select) {\n var _context9;\n\n query._select = (0, _map2.default)(_context9 = this._select).call(_context9, function (s) {\n return s;\n });\n }\n\n query._hint = this._hint;\n query._where = {};\n\n for (var _attr in this._where) {\n var val = this._where[_attr];\n\n if ((0, _isArray.default)(val)) {\n query._where[_attr] = (0, _map2.default)(val).call(val, function (v) {\n return v;\n });\n } else if (val && (0, _typeof2.default)(val) === 'object') {\n var conditionMap = {};\n query._where[_attr] = conditionMap;\n\n for (var cond in val) {\n conditionMap[cond] = val[cond];\n }\n } else {\n query._where[_attr] = val;\n }\n }\n\n query.ascending('objectId');\n var findOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n findOptions.useMasterKey = options.useMasterKey;\n }\n\n if (options.hasOwnProperty('sessionToken')) {\n findOptions.sessionToken = options.sessionToken;\n }\n\n if (options.hasOwnProperty('context') && (0, _typeof2.default)(options.context) === 'object') {\n findOptions.context = options.context;\n }\n\n var finished = false;\n var previousResults = [];\n return (0, _promiseUtils.continueWhile)(function () {\n return !finished;\n }, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var _yield$Promise$all, _yield$Promise$all2, results;\n\n return _regenerator.default.wrap(function (_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return _promise.default.all([(0, _find.default)(query).call(query, findOptions), _promise.default.resolve(previousResults.length > 0 && callback(previousResults))]);\n\n case 2:\n _yield$Promise$all = _context10.sent;\n _yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 1);\n results = _yield$Promise$all2[0];\n\n if (!(results.length >= query._limit)) {\n _context10.next = 10;\n break;\n }\n\n query.greaterThan('objectId', results[results.length - 1].id);\n previousResults = results;\n _context10.next = 17;\n break;\n\n case 10:\n if (!(results.length > 0)) {\n _context10.next = 16;\n break;\n }\n\n _context10.next = 13;\n return _promise.default.resolve(callback(results));\n\n case 13:\n finished = true;\n _context10.next = 17;\n break;\n\n case 16:\n finished = true;\n\n case 17:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee3);\n })));\n }\n /**\n * Iterates over each result of a query, calling a callback for each one. If\n * the callback returns a promise, the iteration will not continue until\n * that promise has been fulfilled. If the callback returns a rejected\n * promise, then iteration will stop with that error. The items are\n * processed in an unspecified order. The query may not have any sort order,\n * and may not use limit or skip.\n *\n * @param {Function} callback Callback that will be called with each result\n * of the query.\n * @param {object} options Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * \n * @returns {Promise} A promise that will be fulfilled once the\n * iteration has completed.\n */\n\n }, {\n key: \"each\",\n value: function (callback\n /*: (obj: ParseObject) => any*/\n , options\n /*:: ?: BatchOptions*/\n )\n /*: Promise*/\n {\n return this.eachBatch(function (results) {\n var callbacksDone = _promise.default.resolve();\n\n (0, _forEach.default)(results).call(results, function (result) {\n callbacksDone = callbacksDone.then(function () {\n return callback(result);\n });\n });\n return callbacksDone;\n }, options);\n }\n /**\n * Adds a hint to force index selection. (https://docs.mongodb.com/manual/reference/operator/meta/hint/)\n *\n * @param {(string|object)} value String or Object of index that should be used when executing query\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"hint\",\n value: function (value\n /*: mixed*/\n )\n /*: ParseQuery*/\n {\n if (typeof value === 'undefined') {\n delete this._hint;\n }\n\n this._hint = value;\n return this;\n }\n /**\n * Investigates the query execution plan. Useful for optimizing queries. (https://docs.mongodb.com/manual/reference/operator/meta/explain/)\n *\n * @param {boolean} explain Used to toggle the information on the query plan.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"explain\",\n value: function ()\n /*: ParseQuery*/\n {\n var _explain\n /*: boolean*/\n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (typeof _explain !== 'boolean') {\n throw new Error('You can only set explain to a boolean value');\n }\n\n this._explain = _explain;\n return this;\n }\n /**\n * Iterates over each result of a query, calling a callback for each one. If\n * the callback returns a promise, the iteration will not continue until\n * that promise has been fulfilled. If the callback returns a rejected\n * promise, then iteration will stop with that error. The items are\n * processed in an unspecified order. The query may not have any sort order,\n * and may not use limit or skip.\n *\n * @param {Function} callback Callback \n * currentObject: The current Parse.Object being processed in the array. \n * index: The index of the current Parse.Object being processed in the array. \n * query: The query map was called upon. \n * \n *\n * @param {object} options Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * \n * @returns {Promise} A promise that will be fulfilled once the\n * iteration has completed.\n */\n\n }, {\n key: \"map\",\n value: function () {\n var _map = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(callback\n /*: (currentObject: ParseObject, index: number, query: ParseQuery) => any*/\n , options\n /*:: ?: BatchOptions*/\n ) {\n var _this5 = this;\n\n var array, index;\n return _regenerator.default.wrap(function (_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n array = [];\n index = 0;\n _context11.next = 4;\n return this.each(function (object) {\n return _promise.default.resolve(callback(object, index, _this5)).then(function (result) {\n array.push(result);\n index += 1;\n });\n }, options);\n\n case 4:\n return _context11.abrupt(\"return\", array);\n\n case 5:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function () {\n return _map.apply(this, arguments);\n };\n }()\n /**\n * Iterates over each result of a query, calling a callback for each one. If\n * the callback returns a promise, the iteration will not continue until\n * that promise has been fulfilled. If the callback returns a rejected\n * promise, then iteration will stop with that error. The items are\n * processed in an unspecified order. The query may not have any sort order,\n * and may not use limit or skip.\n *\n * @param {Function} callback Callback \n * accumulator: The accumulator accumulates the callback's return values. It is the accumulated value previously returned in the last invocation of the callback. \n * currentObject: The current Parse.Object being processed in the array. \n * index: The index of the current Parse.Object being processed in the array. \n * \n * @param {*} initialValue A value to use as the first argument to the first call of the callback. If no initialValue is supplied, the first object in the query will be used and skipped.\n * @param {object} options Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * \n * @returns {Promise} A promise that will be fulfilled once the\n * iteration has completed.\n */\n\n }, {\n key: \"reduce\",\n value: function () {\n var _reduce = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(callback\n /*: (accumulator: any, currentObject: ParseObject, index: number) => any*/\n , initialValue\n /*: any*/\n , options\n /*:: ?: BatchOptions*/\n ) {\n var accumulator, index;\n return _regenerator.default.wrap(function (_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n accumulator = initialValue;\n index = 0;\n _context12.next = 4;\n return this.each(function (object) {\n // If no initial value was given, we take the first object from the query\n // as the initial value and don't call the callback with it.\n if (index === 0 && initialValue === undefined) {\n accumulator = object;\n index += 1;\n return;\n }\n\n return _promise.default.resolve(callback(accumulator, object, index)).then(function (result) {\n accumulator = result;\n index += 1;\n });\n }, options);\n\n case 4:\n if (!(index === 0 && initialValue === undefined)) {\n _context12.next = 6;\n break;\n }\n\n throw new TypeError('Reducing empty query result set with no initial value');\n\n case 6:\n return _context12.abrupt(\"return\", accumulator);\n\n case 7:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee5, this);\n }));\n\n return function () {\n return _reduce.apply(this, arguments);\n };\n }()\n /**\n * Iterates over each result of a query, calling a callback for each one. If\n * the callback returns a promise, the iteration will not continue until\n * that promise has been fulfilled. If the callback returns a rejected\n * promise, then iteration will stop with that error. The items are\n * processed in an unspecified order. The query may not have any sort order,\n * and may not use limit or skip.\n *\n * @param {Function} callback Callback \n * currentObject: The current Parse.Object being processed in the array. \n * index: The index of the current Parse.Object being processed in the array. \n * query: The query filter was called upon. \n * \n *\n * @param {object} options Valid options are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * \n * @returns {Promise} A promise that will be fulfilled once the\n * iteration has completed.\n */\n\n }, {\n key: \"filter\",\n value: function () {\n var _filter = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(callback\n /*: (currentObject: ParseObject, index: number, query: ParseQuery) => boolean*/\n , options\n /*:: ?: BatchOptions*/\n ) {\n var _this6 = this;\n\n var array, index;\n return _regenerator.default.wrap(function (_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n array = [];\n index = 0;\n _context13.next = 4;\n return this.each(function (object) {\n return _promise.default.resolve(callback(object, index, _this6)).then(function (flag) {\n if (flag) {\n array.push(object);\n }\n\n index += 1;\n });\n }, options);\n\n case 4:\n return _context13.abrupt(\"return\", array);\n\n case 5:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee6, this);\n }));\n\n return function () {\n return _filter.apply(this, arguments);\n };\n }()\n /** Query Conditions **/\n\n /**\n * Adds a constraint to the query that requires a particular key's value to\n * be equal to the provided value.\n *\n * @param {string} key The key to check.\n * @param value The value that the Parse.Object must contain.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"equalTo\",\n value: function (key\n /*: string | { [key: string]: any }*/\n , value\n /*: ?mixed*/\n )\n /*: ParseQuery*/\n {\n var _this7 = this;\n\n if (key && (0, _typeof2.default)(key) === 'object') {\n var _context14;\n\n (0, _forEach.default)(_context14 = (0, _entries.default)(key)).call(_context14, function (_ref2) {\n var _ref3 = (0, _slicedToArray2.default)(_ref2, 2),\n k = _ref3[0],\n val = _ref3[1];\n\n return _this7.equalTo(k, val);\n });\n return this;\n }\n\n if (typeof value === 'undefined') {\n return this.doesNotExist(key);\n }\n\n this._where[key] = (0, _encode.default)(value, false, true);\n return this;\n }\n /**\n * Adds a constraint to the query that requires a particular key's value to\n * be not equal to the provided value.\n *\n * @param {string} key The key to check.\n * @param value The value that must not be equalled.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"notEqualTo\",\n value: function (key\n /*: string | { [key: string]: any }*/\n , value\n /*: ?mixed*/\n )\n /*: ParseQuery*/\n {\n var _this8 = this;\n\n if (key && (0, _typeof2.default)(key) === 'object') {\n var _context15;\n\n (0, _forEach.default)(_context15 = (0, _entries.default)(key)).call(_context15, function (_ref4) {\n var _ref5 = (0, _slicedToArray2.default)(_ref4, 2),\n k = _ref5[0],\n val = _ref5[1];\n\n return _this8.notEqualTo(k, val);\n });\n return this;\n }\n\n return this._addCondition(key, '$ne', value);\n }\n /**\n * Adds a constraint to the query that requires a particular key's value to\n * be less than the provided value.\n *\n * @param {string} key The key to check.\n * @param value The value that provides an upper bound.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"lessThan\",\n value: function (key\n /*: string*/\n , value\n /*: mixed*/\n )\n /*: ParseQuery*/\n {\n return this._addCondition(key, '$lt', value);\n }\n /**\n * Adds a constraint to the query that requires a particular key's value to\n * be greater than the provided value.\n *\n * @param {string} key The key to check.\n * @param value The value that provides an lower bound.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"greaterThan\",\n value: function (key\n /*: string*/\n , value\n /*: mixed*/\n )\n /*: ParseQuery*/\n {\n return this._addCondition(key, '$gt', value);\n }\n /**\n * Adds a constraint to the query that requires a particular key's value to\n * be less than or equal to the provided value.\n *\n * @param {string} key The key to check.\n * @param value The value that provides an upper bound.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"lessThanOrEqualTo\",\n value: function (key\n /*: string*/\n , value\n /*: mixed*/\n )\n /*: ParseQuery*/\n {\n return this._addCondition(key, '$lte', value);\n }\n /**\n * Adds a constraint to the query that requires a particular key's value to\n * be greater than or equal to the provided value.\n *\n * @param {string} key The key to check.\n * @param {*} value The value that provides an lower bound.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"greaterThanOrEqualTo\",\n value: function (key\n /*: string*/\n , value\n /*: mixed*/\n )\n /*: ParseQuery*/\n {\n return this._addCondition(key, '$gte', value);\n }\n /**\n * Adds a constraint to the query that requires a particular key's value to\n * be contained in the provided list of values.\n *\n * @param {string} key The key to check.\n * @param {*} value The values that will match.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"containedIn\",\n value: function (key\n /*: string*/\n , value\n /*: mixed*/\n )\n /*: ParseQuery*/\n {\n return this._addCondition(key, '$in', value);\n }\n /**\n * Adds a constraint to the query that requires a particular key's value to\n * not be contained in the provided list of values.\n *\n * @param {string} key The key to check.\n * @param {*} value The values that will not match.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"notContainedIn\",\n value: function (key\n /*: string*/\n , value\n /*: mixed*/\n )\n /*: ParseQuery*/\n {\n return this._addCondition(key, '$nin', value);\n }\n /**\n * Adds a constraint to the query that requires a particular key's value to\n * be contained by the provided list of values. Get objects where all array elements match.\n *\n * @param {string} key The key to check.\n * @param {Array} values The values that will match.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"containedBy\",\n value: function (key\n /*: string*/\n , values\n /*: Array*/\n )\n /*: ParseQuery*/\n {\n return this._addCondition(key, '$containedBy', values);\n }\n /**\n * Adds a constraint to the query that requires a particular key's value to\n * contain each one of the provided list of values.\n *\n * @param {string} key The key to check. This key's value must be an array.\n * @param {Array} values The values that will match.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"containsAll\",\n value: function (key\n /*: string*/\n , values\n /*: Array*/\n )\n /*: ParseQuery*/\n {\n return this._addCondition(key, '$all', values);\n }\n /**\n * Adds a constraint to the query that requires a particular key's value to\n * contain each one of the provided list of values starting with given strings.\n *\n * @param {string} key The key to check. This key's value must be an array.\n * @param {Array} values The string values that will match as starting string.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"containsAllStartingWith\",\n value: function (key\n /*: string*/\n , values\n /*: Array*/\n )\n /*: ParseQuery*/\n {\n var _this = this;\n\n if (!(0, _isArray.default)(values)) {\n values = [values];\n }\n\n var regexObject = (0, _map2.default)(values).call(values, function (value) {\n return {\n $regex: _this._regexStartWith(value)\n };\n });\n return this.containsAll(key, regexObject);\n }\n /**\n * Adds a constraint for finding objects that contain the given key.\n *\n * @param {string} key The key that should exist.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"exists\",\n value: function (key\n /*: string*/\n )\n /*: ParseQuery*/\n {\n return this._addCondition(key, '$exists', true);\n }\n /**\n * Adds a constraint for finding objects that do not contain a given key.\n *\n * @param {string} key The key that should not exist\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"doesNotExist\",\n value: function (key\n /*: string*/\n )\n /*: ParseQuery*/\n {\n return this._addCondition(key, '$exists', false);\n }\n /**\n * Adds a regular expression constraint for finding string values that match\n * the provided regular expression.\n * This may be slow for large datasets.\n *\n * @param {string} key The key that the string to match is stored in.\n * @param {RegExp} regex The regular expression pattern to match.\n * @param {string} modifiers The regular expression mode.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"matches\",\n value: function (key\n /*: string*/\n , regex\n /*: RegExp*/\n , modifiers\n /*: string*/\n )\n /*: ParseQuery*/\n {\n this._addCondition(key, '$regex', regex);\n\n if (!modifiers) {\n modifiers = '';\n }\n\n if (regex.ignoreCase) {\n modifiers += 'i';\n }\n\n if (regex.multiline) {\n modifiers += 'm';\n }\n\n if (modifiers.length) {\n this._addCondition(key, '$options', modifiers);\n }\n\n return this;\n }\n /**\n * Adds a constraint that requires that a key's value matches a Parse.Query\n * constraint.\n *\n * @param {string} key The key that the contains the object to match the\n * query.\n * @param {Parse.Query} query The query that should match.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"matchesQuery\",\n value: function (key\n /*: string*/\n , query\n /*: ParseQuery*/\n )\n /*: ParseQuery*/\n {\n var queryJSON = query.toJSON();\n queryJSON.className = query.className;\n return this._addCondition(key, '$inQuery', queryJSON);\n }\n /**\n * Adds a constraint that requires that a key's value not matches a\n * Parse.Query constraint.\n *\n * @param {string} key The key that the contains the object to match the\n * query.\n * @param {Parse.Query} query The query that should not match.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"doesNotMatchQuery\",\n value: function (key\n /*: string*/\n , query\n /*: ParseQuery*/\n )\n /*: ParseQuery*/\n {\n var queryJSON = query.toJSON();\n queryJSON.className = query.className;\n return this._addCondition(key, '$notInQuery', queryJSON);\n }\n /**\n * Adds a constraint that requires that a key's value matches a value in\n * an object returned by a different Parse.Query.\n *\n * @param {string} key The key that contains the value that is being\n * matched.\n * @param {string} queryKey The key in the objects returned by the query to\n * match against.\n * @param {Parse.Query} query The query to run.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"matchesKeyInQuery\",\n value: function (key\n /*: string*/\n , queryKey\n /*: string*/\n , query\n /*: ParseQuery*/\n )\n /*: ParseQuery*/\n {\n var queryJSON = query.toJSON();\n queryJSON.className = query.className;\n return this._addCondition(key, '$select', {\n key: queryKey,\n query: queryJSON\n });\n }\n /**\n * Adds a constraint that requires that a key's value not match a value in\n * an object returned by a different Parse.Query.\n *\n * @param {string} key The key that contains the value that is being\n * excluded.\n * @param {string} queryKey The key in the objects returned by the query to\n * match against.\n * @param {Parse.Query} query The query to run.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"doesNotMatchKeyInQuery\",\n value: function (key\n /*: string*/\n , queryKey\n /*: string*/\n , query\n /*: ParseQuery*/\n )\n /*: ParseQuery*/\n {\n var queryJSON = query.toJSON();\n queryJSON.className = query.className;\n return this._addCondition(key, '$dontSelect', {\n key: queryKey,\n query: queryJSON\n });\n }\n /**\n * Adds a constraint for finding string values that contain a provided\n * string. This may be slow for large datasets.\n *\n * @param {string} key The key that the string to match is stored in.\n * @param {string} substring The substring that the value must contain.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"contains\",\n value: function (key\n /*: string*/\n , substring\n /*: string*/\n )\n /*: ParseQuery*/\n {\n if (typeof substring !== 'string') {\n throw new Error('The value being searched for must be a string.');\n }\n\n return this._addCondition(key, '$regex', quote(substring));\n }\n /**\n * Adds a constraint for finding string values that contain a provided\n * string. This may be slow for large datasets. Requires Parse-Server > 2.5.0\n *\n * In order to sort you must use select and ascending ($score is required)\n * \n * query.fullText('field', 'term');\n * query.ascending('$score');\n * query.select('$score');\n * \n *\n * To retrieve the weight / rank\n * \n * object->get('score');\n * \n *\n * You can define optionals by providing an object as a third parameter\n * \n * query.fullText('field', 'term', { language: 'es', diacriticSensitive: true });\n * \n *\n * @param {string} key The key that the string to match is stored in.\n * @param {string} value The string to search\n * @param {object} options (Optional)\n * @param {string} options.language The language that determines the list of stop words for the search and the rules for the stemmer and tokenizer.\n * @param {boolean} options.caseSensitive A boolean flag to enable or disable case sensitive search.\n * @param {boolean} options.diacriticSensitive A boolean flag to enable or disable diacritic sensitive search.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"fullText\",\n value: function (key\n /*: string*/\n , value\n /*: string*/\n , options\n /*: ?Object*/\n )\n /*: ParseQuery*/\n {\n options = options || {};\n\n if (!key) {\n throw new Error('A key is required.');\n }\n\n if (!value) {\n throw new Error('A search term is required');\n }\n\n if (typeof value !== 'string') {\n throw new Error('The value being searched for must be a string.');\n }\n\n var fullOptions = {};\n fullOptions.$term = value;\n\n for (var option in options) {\n switch (option) {\n case 'language':\n fullOptions.$language = options[option];\n break;\n\n case 'caseSensitive':\n fullOptions.$caseSensitive = options[option];\n break;\n\n case 'diacriticSensitive':\n fullOptions.$diacriticSensitive = options[option];\n break;\n\n default:\n throw new Error(\"Unknown option: \".concat(option));\n }\n }\n\n return this._addCondition(key, '$text', {\n $search: fullOptions\n });\n }\n /**\n * Method to sort the full text search by text score\n *\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"sortByTextScore\",\n value: function () {\n this.ascending('$score');\n this.select(['$score']);\n return this;\n }\n /**\n * Adds a constraint for finding string values that start with a provided\n * string. This query will use the backend index, so it will be fast even\n * for large datasets.\n *\n * @param {string} key The key that the string to match is stored in.\n * @param {string} prefix The substring that the value must start with.\n * @param {string} modifiers The regular expression mode.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"startsWith\",\n value: function (key\n /*: string*/\n , prefix\n /*: string*/\n , modifiers\n /*: string*/\n )\n /*: ParseQuery*/\n {\n if (typeof prefix !== 'string') {\n throw new Error('The value being searched for must be a string.');\n }\n\n return this.matches(key, this._regexStartWith(prefix), modifiers);\n }\n /**\n * Adds a constraint for finding string values that end with a provided\n * string. This will be slow for large datasets.\n *\n * @param {string} key The key that the string to match is stored in.\n * @param {string} suffix The substring that the value must end with.\n * @param {string} modifiers The regular expression mode.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"endsWith\",\n value: function (key\n /*: string*/\n , suffix\n /*: string*/\n , modifiers\n /*: string*/\n )\n /*: ParseQuery*/\n {\n if (typeof suffix !== 'string') {\n throw new Error('The value being searched for must be a string.');\n }\n\n return this.matches(key, quote(suffix) + '$', modifiers);\n }\n /**\n * Adds a proximity based constraint for finding objects with key point\n * values near the point given.\n *\n * @param {string} key The key that the Parse.GeoPoint is stored in.\n * @param {Parse.GeoPoint} point The reference Parse.GeoPoint that is used.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"near\",\n value: function (key\n /*: string*/\n , point\n /*: ParseGeoPoint*/\n )\n /*: ParseQuery*/\n {\n if (!(point instanceof _ParseGeoPoint.default)) {\n // Try to cast it as a GeoPoint\n point = new _ParseGeoPoint.default(point);\n }\n\n return this._addCondition(key, '$nearSphere', point);\n }\n /**\n * Adds a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n *\n * @param {string} key The key that the Parse.GeoPoint is stored in.\n * @param {Parse.GeoPoint} point The reference Parse.GeoPoint that is used.\n * @param {number} maxDistance Maximum distance (in radians) of results to return.\n * @param {boolean} sorted A Bool value that is true if results should be\n * sorted by distance ascending, false is no sorting is required,\n * defaults to true.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"withinRadians\",\n value: function (key\n /*: string*/\n , point\n /*: ParseGeoPoint*/\n , maxDistance\n /*: number*/\n , sorted\n /*: boolean*/\n )\n /*: ParseQuery*/\n {\n if (sorted || sorted === undefined) {\n this.near(key, point);\n return this._addCondition(key, '$maxDistance', maxDistance);\n } else {\n return this._addCondition(key, '$geoWithin', {\n $centerSphere: [[point.longitude, point.latitude], maxDistance]\n });\n }\n }\n /**\n * Adds a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * Radius of earth used is 3958.8 miles.\n *\n * @param {string} key The key that the Parse.GeoPoint is stored in.\n * @param {Parse.GeoPoint} point The reference Parse.GeoPoint that is used.\n * @param {number} maxDistance Maximum distance (in miles) of results to return.\n * @param {boolean} sorted A Bool value that is true if results should be\n * sorted by distance ascending, false is no sorting is required,\n * defaults to true.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"withinMiles\",\n value: function (key\n /*: string*/\n , point\n /*: ParseGeoPoint*/\n , maxDistance\n /*: number*/\n , sorted\n /*: boolean*/\n )\n /*: ParseQuery*/\n {\n return this.withinRadians(key, point, maxDistance / 3958.8, sorted);\n }\n /**\n * Adds a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * Radius of earth used is 6371.0 kilometers.\n *\n * @param {string} key The key that the Parse.GeoPoint is stored in.\n * @param {Parse.GeoPoint} point The reference Parse.GeoPoint that is used.\n * @param {number} maxDistance Maximum distance (in kilometers) of results to return.\n * @param {boolean} sorted A Bool value that is true if results should be\n * sorted by distance ascending, false is no sorting is required,\n * defaults to true.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"withinKilometers\",\n value: function (key\n /*: string*/\n , point\n /*: ParseGeoPoint*/\n , maxDistance\n /*: number*/\n , sorted\n /*: boolean*/\n )\n /*: ParseQuery*/\n {\n return this.withinRadians(key, point, maxDistance / 6371.0, sorted);\n }\n /**\n * Adds a constraint to the query that requires a particular key's\n * coordinates be contained within a given rectangular geographic bounding\n * box.\n *\n * @param {string} key The key to be constrained.\n * @param {Parse.GeoPoint} southwest\n * The lower-left inclusive corner of the box.\n * @param {Parse.GeoPoint} northeast\n * The upper-right inclusive corner of the box.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"withinGeoBox\",\n value: function (key\n /*: string*/\n , southwest\n /*: ParseGeoPoint*/\n , northeast\n /*: ParseGeoPoint*/\n )\n /*: ParseQuery*/\n {\n if (!(southwest instanceof _ParseGeoPoint.default)) {\n southwest = new _ParseGeoPoint.default(southwest);\n }\n\n if (!(northeast instanceof _ParseGeoPoint.default)) {\n northeast = new _ParseGeoPoint.default(northeast);\n }\n\n this._addCondition(key, '$within', {\n $box: [southwest, northeast]\n });\n\n return this;\n }\n /**\n * Adds a constraint to the query that requires a particular key's\n * coordinates be contained within and on the bounds of a given polygon.\n * Supports closed and open (last point is connected to first) paths\n *\n * Polygon must have at least 3 points\n *\n * @param {string} key The key to be constrained.\n * @param {Array} points Array of Coordinates / GeoPoints\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"withinPolygon\",\n value: function (key\n /*: string*/\n , points\n /*: Array>*/\n )\n /*: ParseQuery*/\n {\n return this._addCondition(key, '$geoWithin', {\n $polygon: points\n });\n }\n /**\n * Add a constraint to the query that requires a particular key's\n * coordinates that contains a ParseGeoPoint\n *\n * @param {string} key The key to be constrained.\n * @param {Parse.GeoPoint} point\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"polygonContains\",\n value: function (key\n /*: string*/\n , point\n /*: ParseGeoPoint*/\n )\n /*: ParseQuery*/\n {\n return this._addCondition(key, '$geoIntersects', {\n $point: point\n });\n }\n /** Query Orderings **/\n\n /**\n * Sorts the results in ascending order by the given key.\n *\n * @param {(string|string[])} keys The key to order by, which is a\n * string of comma separated values, or an Array of keys, or multiple keys.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"ascending\",\n value: function ()\n /*: ParseQuery*/\n {\n this._order = [];\n\n for (var _len = arguments.length, keys = new Array(_len), _key5 = 0; _key5 < _len; _key5++) {\n keys[_key5] = arguments[_key5];\n }\n\n return this.addAscending.apply(this, keys);\n }\n /**\n * Sorts the results in ascending order by the given key,\n * but can also add secondary sort descriptors without overwriting _order.\n *\n * @param {(string|string[])} keys The key to order by, which is a\n * string of comma separated values, or an Array of keys, or multiple keys.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"addAscending\",\n value: function ()\n /*: ParseQuery*/\n {\n var _this9 = this;\n\n if (!this._order) {\n this._order = [];\n }\n\n for (var _len2 = arguments.length, keys = new Array(_len2), _key6 = 0; _key6 < _len2; _key6++) {\n keys[_key6] = arguments[_key6];\n }\n\n (0, _forEach.default)(keys).call(keys, function (key) {\n var _context16;\n\n if ((0, _isArray.default)(key)) {\n key = key.join();\n }\n\n _this9._order = (0, _concat.default)(_context16 = _this9._order).call(_context16, key.replace(/\\s/g, '').split(','));\n });\n return this;\n }\n /**\n * Sorts the results in descending order by the given key.\n *\n * @param {(string|string[])} keys The key to order by, which is a\n * string of comma separated values, or an Array of keys, or multiple keys.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"descending\",\n value: function ()\n /*: ParseQuery*/\n {\n this._order = [];\n\n for (var _len3 = arguments.length, keys = new Array(_len3), _key7 = 0; _key7 < _len3; _key7++) {\n keys[_key7] = arguments[_key7];\n }\n\n return this.addDescending.apply(this, keys);\n }\n /**\n * Sorts the results in descending order by the given key,\n * but can also add secondary sort descriptors without overwriting _order.\n *\n * @param {(string|string[])} keys The key to order by, which is a\n * string of comma separated values, or an Array of keys, or multiple keys.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"addDescending\",\n value: function ()\n /*: ParseQuery*/\n {\n var _this10 = this;\n\n if (!this._order) {\n this._order = [];\n }\n\n for (var _len4 = arguments.length, keys = new Array(_len4), _key8 = 0; _key8 < _len4; _key8++) {\n keys[_key8] = arguments[_key8];\n }\n\n (0, _forEach.default)(keys).call(keys, function (key) {\n var _context17, _context18;\n\n if ((0, _isArray.default)(key)) {\n key = key.join();\n }\n\n _this10._order = (0, _concat.default)(_context17 = _this10._order).call(_context17, (0, _map2.default)(_context18 = key.replace(/\\s/g, '').split(',')).call(_context18, function (k) {\n return '-' + k;\n }));\n });\n return this;\n }\n /** Query Options **/\n\n /**\n * Sets the number of results to skip before returning any results.\n * This is useful for pagination.\n * Default is to skip zero results.\n *\n * @param {number} n the number of results to skip.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"skip\",\n value: function (n\n /*: number*/\n )\n /*: ParseQuery*/\n {\n if (typeof n !== 'number' || n < 0) {\n throw new Error('You can only skip by a positive number');\n }\n\n this._skip = n;\n return this;\n }\n /**\n * Sets the limit of the number of results to return. The default limit is 100.\n *\n * @param {number} n the number of results to limit to.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"limit\",\n value: function (n\n /*: number*/\n )\n /*: ParseQuery*/\n {\n if (typeof n !== 'number') {\n throw new Error('You can only set the limit to a numeric value');\n }\n\n this._limit = n;\n return this;\n }\n /**\n * Sets the flag to include with response the total number of objects satisfying this query,\n * despite limits/skip. Might be useful for pagination.\n * Note that result of this query will be wrapped as an object with\n * `results`: holding {ParseObject} array and `count`: integer holding total number\n *\n * @param {boolean} includeCount false - disable, true - enable.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"withCount\",\n value: function ()\n /*: ParseQuery*/\n {\n var includeCount\n /*: boolean*/\n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (typeof includeCount !== 'boolean') {\n throw new Error('You can only set withCount to a boolean value');\n }\n\n this._count = includeCount;\n return this;\n }\n /**\n * Includes nested Parse.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetched.\n *\n * You can include all nested Parse.Objects by passing in '*'.\n * Requires Parse Server 3.0.0+\n * query.include('*'); \n *\n * @param {...string|Array} keys The name(s) of the key(s) to include.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"include\",\n value: function ()\n /*: ParseQuery*/\n {\n var _this11 = this;\n\n for (var _len5 = arguments.length, keys = new Array(_len5), _key9 = 0; _key9 < _len5; _key9++) {\n keys[_key9] = arguments[_key9];\n }\n\n (0, _forEach.default)(keys).call(keys, function (key) {\n if ((0, _isArray.default)(key)) {\n var _context19;\n\n _this11._include = (0, _concat.default)(_context19 = _this11._include).call(_context19, key);\n } else {\n _this11._include.push(key);\n }\n });\n return this;\n }\n /**\n * Includes all nested Parse.Objects one level deep.\n *\n * Requires Parse Server 3.0.0+\n *\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"includeAll\",\n value: function ()\n /*: ParseQuery*/\n {\n return this.include('*');\n }\n /**\n * Restricts the fields of the returned Parse.Objects to include only the\n * provided keys. If this is called multiple times, then all of the keys\n * specified in each of the calls will be included.\n *\n * @param {...string|Array} keys The name(s) of the key(s) to include.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"select\",\n value: function ()\n /*: ParseQuery*/\n {\n var _this12 = this;\n\n if (!this._select) {\n this._select = [];\n }\n\n for (var _len6 = arguments.length, keys = new Array(_len6), _key10 = 0; _key10 < _len6; _key10++) {\n keys[_key10] = arguments[_key10];\n }\n\n (0, _forEach.default)(keys).call(keys, function (key) {\n if ((0, _isArray.default)(key)) {\n var _context20;\n\n _this12._select = (0, _concat.default)(_context20 = _this12._select).call(_context20, key);\n } else {\n _this12._select.push(key);\n }\n });\n return this;\n }\n /**\n * Restricts the fields of the returned Parse.Objects to all keys except the\n * provided keys. Exclude takes precedence over select and include.\n *\n * Requires Parse Server 3.6.0+\n *\n * @param {...string|Array} keys The name(s) of the key(s) to exclude.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"exclude\",\n value: function ()\n /*: ParseQuery*/\n {\n var _this13 = this;\n\n for (var _len7 = arguments.length, keys = new Array(_len7), _key11 = 0; _key11 < _len7; _key11++) {\n keys[_key11] = arguments[_key11];\n }\n\n (0, _forEach.default)(keys).call(keys, function (key) {\n if ((0, _isArray.default)(key)) {\n var _context21;\n\n _this13._exclude = (0, _concat.default)(_context21 = _this13._exclude).call(_context21, key);\n } else {\n _this13._exclude.push(key);\n }\n });\n return this;\n }\n /**\n * Changes the read preference that the backend will use when performing the query to the database.\n *\n * @param {string} readPreference The read preference for the main query.\n * @param {string} includeReadPreference The read preference for the queries to include pointers.\n * @param {string} subqueryReadPreference The read preference for the sub queries.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"readPreference\",\n value: function (_readPreference\n /*: string*/\n , includeReadPreference\n /*:: ?: string*/\n , subqueryReadPreference\n /*:: ?: string*/\n )\n /*: ParseQuery*/\n {\n this._readPreference = _readPreference;\n this._includeReadPreference = includeReadPreference;\n this._subqueryReadPreference = subqueryReadPreference;\n return this;\n }\n /**\n * Subscribe this query to get liveQuery updates\n *\n * @param {string} sessionToken (optional) Defaults to the currentUser\n * @returns {Promise} Returns the liveQuerySubscription, it's an event emitter\n * which can be used to get liveQuery updates.\n */\n\n }, {\n key: \"subscribe\",\n value: function () {\n var _subscribe = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(sessionToken\n /*:: ?: string*/\n ) {\n var currentUser, liveQueryClient, subscription;\n return _regenerator.default.wrap(function (_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n _context22.next = 2;\n return _CoreManager.default.getUserController().currentUserAsync();\n\n case 2:\n currentUser = _context22.sent;\n\n if (!sessionToken) {\n sessionToken = currentUser ? currentUser.getSessionToken() : undefined;\n }\n\n _context22.next = 6;\n return _CoreManager.default.getLiveQueryController().getDefaultLiveQueryClient();\n\n case 6:\n liveQueryClient = _context22.sent;\n\n if (liveQueryClient.shouldOpen()) {\n liveQueryClient.open();\n }\n\n subscription = liveQueryClient.subscribe(this, sessionToken);\n return _context22.abrupt(\"return\", subscription.subscribePromise.then(function () {\n return subscription;\n }));\n\n case 10:\n case \"end\":\n return _context22.stop();\n }\n }\n }, _callee7, this);\n }));\n\n return function () {\n return _subscribe.apply(this, arguments);\n };\n }()\n /**\n * Constructs a Parse.Query that is the OR of the passed in queries. For\n * example:\n * var compoundQuery = Parse.Query.or(query1, query2, query3); \n *\n * will create a compoundQuery that is an or of the query1, query2, and\n * query3.\n *\n * @param {...Parse.Query} queries The list of queries to OR.\n * @static\n * @returns {Parse.Query} The query that is the OR of the passed in queries.\n */\n\n }, {\n key: \"fromNetwork\",\n value:\n /**\n * Change the source of this query to the server.\n *\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n function ()\n /*: ParseQuery*/\n {\n this._queriesLocalDatastore = false;\n this._localDatastorePinName = null;\n return this;\n }\n /**\n * Changes the source of this query to all pinned objects.\n *\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"fromLocalDatastore\",\n value: function ()\n /*: ParseQuery*/\n {\n return this.fromPinWithName(null);\n }\n /**\n * Changes the source of this query to the default group of pinned objects.\n *\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"fromPin\",\n value: function ()\n /*: ParseQuery*/\n {\n return this.fromPinWithName(_LocalDatastoreUtils.DEFAULT_PIN);\n }\n /**\n * Changes the source of this query to a specific group of pinned objects.\n *\n * @param {string} name The name of query source.\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"fromPinWithName\",\n value: function (name\n /*:: ?: string*/\n )\n /*: ParseQuery*/\n {\n var localDatastore = _CoreManager.default.getLocalDatastore();\n\n if (localDatastore.checkIfEnabled()) {\n this._queriesLocalDatastore = true;\n this._localDatastorePinName = name;\n }\n\n return this;\n }\n /**\n * Cancels the current network request (if any is running).\n *\n * @returns {Parse.Query} Returns the query, so you can chain this call.\n */\n\n }, {\n key: \"cancel\",\n value: function ()\n /*: ParseQuery*/\n {\n var _this14 = this;\n\n if (this._xhrRequest.task && typeof this._xhrRequest.task.abort === 'function') {\n this._xhrRequest.task._aborted = true;\n\n this._xhrRequest.task.abort();\n\n this._xhrRequest.task = null;\n\n this._xhrRequest.onchange = function () {};\n\n return this;\n }\n\n return this._xhrRequest.onchange = function () {\n return _this14.cancel();\n };\n }\n }, {\n key: \"_setRequestTask\",\n value: function (options) {\n var _this15 = this;\n\n options.requestTask = function (task) {\n _this15._xhrRequest.task = task;\n\n _this15._xhrRequest.onchange();\n };\n }\n }], [{\n key: \"fromJSON\",\n value: function (className\n /*: string*/\n , json\n /*: QueryJSON*/\n )\n /*: ParseQuery*/\n {\n var query = new ParseQuery(className);\n return query.withJSON(json);\n }\n }, {\n key: \"or\",\n value: function ()\n /*: ParseQuery*/\n {\n for (var _len8 = arguments.length, queries = new Array(_len8), _key12 = 0; _key12 < _len8; _key12++) {\n queries[_key12] = arguments[_key12];\n }\n\n var className = _getClassNameFromQueries(queries);\n\n var query = new ParseQuery(className);\n\n query._orQuery(queries);\n\n return query;\n }\n /**\n * Constructs a Parse.Query that is the AND of the passed in queries. For\n * example:\n * var compoundQuery = Parse.Query.and(query1, query2, query3); \n *\n * will create a compoundQuery that is an and of the query1, query2, and\n * query3.\n *\n * @param {...Parse.Query} queries The list of queries to AND.\n * @static\n * @returns {Parse.Query} The query that is the AND of the passed in queries.\n */\n\n }, {\n key: \"and\",\n value: function ()\n /*: ParseQuery*/\n {\n for (var _len9 = arguments.length, queries = new Array(_len9), _key13 = 0; _key13 < _len9; _key13++) {\n queries[_key13] = arguments[_key13];\n }\n\n var className = _getClassNameFromQueries(queries);\n\n var query = new ParseQuery(className);\n\n query._andQuery(queries);\n\n return query;\n }\n /**\n * Constructs a Parse.Query that is the NOR of the passed in queries. For\n * example:\n * const compoundQuery = Parse.Query.nor(query1, query2, query3); \n *\n * will create a compoundQuery that is a nor of the query1, query2, and\n * query3.\n *\n * @param {...Parse.Query} queries The list of queries to NOR.\n * @static\n * @returns {Parse.Query} The query that is the NOR of the passed in queries.\n */\n\n }, {\n key: \"nor\",\n value: function ()\n /*: ParseQuery*/\n {\n for (var _len10 = arguments.length, queries = new Array(_len10), _key14 = 0; _key14 < _len10; _key14++) {\n queries[_key14] = arguments[_key14];\n }\n\n var className = _getClassNameFromQueries(queries);\n\n var query = new ParseQuery(className);\n\n query._norQuery(queries);\n\n return query;\n }\n }]);\n return ParseQuery;\n}();\n\nvar DefaultController = {\n find: function (className\n /*: string*/\n , params\n /*: QueryJSON*/\n , options\n /*: RequestOptions*/\n )\n /*: Promise>*/\n {\n var RESTController = _CoreManager.default.getRESTController();\n\n return RESTController.request('GET', 'classes/' + className, params, options);\n },\n aggregate: function (className\n /*: string*/\n , params\n /*: any*/\n , options\n /*: RequestOptions*/\n )\n /*: Promise>*/\n {\n var RESTController = _CoreManager.default.getRESTController();\n\n return RESTController.request('GET', 'aggregate/' + className, params, options);\n }\n};\n\n_CoreManager.default.setQueryController(DefaultController);\n\nvar _default = ParseQuery;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseQuery.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseRelation.js":
+/*!**********************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseRelation.js ***!
+ \**********************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ \"../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\"));\n\nvar _ParseOp = __webpack_require__(/*! ./ParseOp */ \"../node_modules/parse/lib/browser/ParseOp.js\");\n\nvar _ParseObject = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n\nvar _ParseQuery = _interopRequireDefault(__webpack_require__(/*! ./ParseQuery */ \"../node_modules/parse/lib/browser/ParseQuery.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n/**\n * Creates a new Relation for the given parent object and key. This\n * constructor should rarely be used directly, but rather created by\n * Parse.Object.relation.\n *\n * \n * A class that is used to access all of the children of a many-to-many\n * relationship. Each instance of Parse.Relation is associated with a\n * particular parent object and key.\n *
\n *\n * @alias Parse.Relation\n */\n\n\nvar ParseRelation = /*#__PURE__*/function () {\n /**\n * @param {Parse.Object} parent The parent of this relation.\n * @param {string} key The key for this relation on the parent.\n */\n function ParseRelation(parent\n /*: ?ParseObject*/\n , key\n /*: ?string*/\n ) {\n (0, _classCallCheck2.default)(this, ParseRelation);\n (0, _defineProperty2.default)(this, \"parent\", void 0);\n (0, _defineProperty2.default)(this, \"key\", void 0);\n (0, _defineProperty2.default)(this, \"targetClassName\", void 0);\n this.parent = parent;\n this.key = key;\n this.targetClassName = null;\n }\n /*\n * Makes sure that this relation has the right parent and key.\n */\n\n\n (0, _createClass2.default)(ParseRelation, [{\n key: \"_ensureParentAndKey\",\n value: function (parent\n /*: ParseObject*/\n , key\n /*: string*/\n ) {\n this.key = this.key || key;\n\n if (this.key !== key) {\n throw new Error('Internal Error. Relation retrieved from two different keys.');\n }\n\n if (this.parent) {\n if (this.parent.className !== parent.className) {\n throw new Error('Internal Error. Relation retrieved from two different Objects.');\n }\n\n if (this.parent.id) {\n if (this.parent.id !== parent.id) {\n throw new Error('Internal Error. Relation retrieved from two different Objects.');\n }\n } else if (parent.id) {\n this.parent = parent;\n }\n } else {\n this.parent = parent;\n }\n }\n /**\n * Adds a Parse.Object or an array of Parse.Objects to the relation.\n *\n * @param {(Parse.Object|Array)} objects The item or items to add.\n * @returns {Parse.Object} The parent of the relation.\n */\n\n }, {\n key: \"add\",\n value: function (objects\n /*: ParseObject | Array*/\n )\n /*: ParseObject*/\n {\n if (!(0, _isArray.default)(objects)) {\n objects = [objects];\n }\n\n var change = new _ParseOp.RelationOp(objects, []);\n var parent = this.parent;\n\n if (!parent) {\n throw new Error('Cannot add to a Relation without a parent');\n }\n\n if (objects.length === 0) {\n return parent;\n }\n\n parent.set(this.key, change);\n this.targetClassName = change._targetClassName;\n return parent;\n }\n /**\n * Removes a Parse.Object or an array of Parse.Objects from this relation.\n *\n * @param {(Parse.Object|Array)} objects The item or items to remove.\n */\n\n }, {\n key: \"remove\",\n value: function (objects\n /*: ParseObject | Array*/\n ) {\n if (!(0, _isArray.default)(objects)) {\n objects = [objects];\n }\n\n var change = new _ParseOp.RelationOp([], objects);\n\n if (!this.parent) {\n throw new Error('Cannot remove from a Relation without a parent');\n }\n\n if (objects.length === 0) {\n return;\n }\n\n this.parent.set(this.key, change);\n this.targetClassName = change._targetClassName;\n }\n /**\n * Returns a JSON version of the object suitable for saving to disk.\n *\n * @returns {object} JSON representation of Relation\n */\n\n }, {\n key: \"toJSON\",\n value: function ()\n /*: { __type: 'Relation', className: ?string }*/\n {\n return {\n __type: 'Relation',\n className: this.targetClassName\n };\n }\n /**\n * Returns a Parse.Query that is limited to objects in this\n * relation.\n *\n * @returns {Parse.Query} Relation Query\n */\n\n }, {\n key: \"query\",\n value: function query()\n /*: ParseQuery*/\n {\n var query;\n var parent = this.parent;\n\n if (!parent) {\n throw new Error('Cannot construct a query for a Relation without a parent');\n }\n\n if (!this.targetClassName) {\n query = new _ParseQuery.default(parent.className);\n query._extraOptions.redirectClassNameForKey = this.key;\n } else {\n query = new _ParseQuery.default(this.targetClassName);\n }\n\n query._addCondition('$relatedTo', 'object', {\n __type: 'Pointer',\n className: parent.className,\n objectId: parent.id\n });\n\n query._addCondition('$relatedTo', 'key', this.key);\n\n return query;\n }\n }]);\n return ParseRelation;\n}();\n\nvar _default = ParseRelation;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseRelation.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseRole.js":
+/*!******************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseRole.js ***!
+ \******************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\nvar _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/reflect/construct */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/get */ \"../node_modules/@babel/runtime-corejs3/helpers/get.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/inherits */ \"../node_modules/@babel/runtime-corejs3/helpers/inherits.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js\"));\n\nvar _ParseACL = _interopRequireDefault(__webpack_require__(/*! ./ParseACL */ \"../node_modules/parse/lib/browser/ParseACL.js\"));\n\nvar _ParseError = _interopRequireDefault(__webpack_require__(/*! ./ParseError */ \"../node_modules/parse/lib/browser/ParseError.js\"));\n\nvar _ParseObject2 = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function () {\n var Super = (0, _getPrototypeOf2.default)(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = (0, _getPrototypeOf2.default)(this).constructor;\n result = _Reflect$construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return (0, _possibleConstructorReturn2.default)(this, result);\n };\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false;\n if (_Reflect$construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * Represents a Role on the Parse server. Roles represent groupings of\n * Users for the purposes of granting permissions (e.g. specifying an ACL\n * for an Object). Roles are specified by their sets of child users and\n * child roles, all of which are granted any permissions that the parent\n * role has.\n *\n * Roles must have a name (which cannot be changed after creation of the\n * role), and must specify an ACL.
\n *\n * @alias Parse.Role\n * @augments Parse.Object\n */\n\n\nvar ParseRole = /*#__PURE__*/function (_ParseObject) {\n (0, _inherits2.default)(ParseRole, _ParseObject);\n\n var _super = _createSuper(ParseRole);\n /**\n * @param {string} name The name of the Role to create.\n * @param {Parse.ACL} acl The ACL for this role. Roles must have an ACL.\n * A Parse.Role is a local representation of a role persisted to the Parse\n * cloud.\n */\n\n\n function ParseRole(name\n /*: string*/\n , acl\n /*: ParseACL*/\n ) {\n var _this;\n\n (0, _classCallCheck2.default)(this, ParseRole);\n _this = _super.call(this, '_Role');\n\n if (typeof name === 'string' && acl instanceof _ParseACL.default) {\n _this.setName(name);\n\n _this.setACL(acl);\n }\n\n return _this;\n }\n /**\n * Gets the name of the role. You can alternatively call role.get(\"name\")\n *\n * @returns {string} the name of the role.\n */\n\n\n (0, _createClass2.default)(ParseRole, [{\n key: \"getName\",\n value: function ()\n /*: ?string*/\n {\n var name = this.get('name');\n\n if (name == null || typeof name === 'string') {\n return name;\n }\n\n return '';\n }\n /**\n * Sets the name for a role. This value must be set before the role has\n * been saved to the server, and cannot be set once the role has been\n * saved.\n *\n * \n * A role's name can only contain alphanumeric characters, _, -, and\n * spaces.\n *
\n *\n * This is equivalent to calling role.set(\"name\", name)
\n *\n * @param {string} name The name of the role.\n * @param {object} options Standard options object with success and error\n * callbacks.\n * @returns {(ParseObject|boolean)} true if the set succeeded.\n */\n\n }, {\n key: \"setName\",\n value: function (name\n /*: string*/\n , options\n /*:: ?: mixed*/\n )\n /*: ParseObject | boolean*/\n {\n return this.set('name', name, options);\n }\n /**\n * Gets the Parse.Relation for the Parse.Users that are direct\n * children of this role. These users are granted any privileges that this\n * role has been granted (e.g. read or write access through ACLs). You can\n * add or remove users from the role through this relation.\n *\n * This is equivalent to calling role.relation(\"users\")
\n *\n * @returns {Parse.Relation} the relation for the users belonging to this\n * role.\n */\n\n }, {\n key: \"getUsers\",\n value: function ()\n /*: ParseRelation*/\n {\n return this.relation('users');\n }\n /**\n * Gets the Parse.Relation for the Parse.Roles that are direct\n * children of this role. These roles' users are granted any privileges that\n * this role has been granted (e.g. read or write access through ACLs). You\n * can add or remove child roles from this role through this relation.\n *\n * This is equivalent to calling role.relation(\"roles\")
\n *\n * @returns {Parse.Relation} the relation for the roles belonging to this\n * role.\n */\n\n }, {\n key: \"getRoles\",\n value: function ()\n /*: ParseRelation*/\n {\n return this.relation('roles');\n }\n }, {\n key: \"validate\",\n value: function (attrs\n /*: AttributeMap*/\n , options\n /*:: ?: mixed*/\n )\n /*: ParseError | boolean*/\n {\n var isInvalid = (0, _get2.default)((0, _getPrototypeOf2.default)(ParseRole.prototype), \"validate\", this).call(this, attrs, options);\n\n if (isInvalid) {\n return isInvalid;\n }\n\n if ('name' in attrs && attrs.name !== this.getName()) {\n var newName = attrs.name;\n\n if (this.id && this.id !== attrs.objectId) {\n // Check to see if the objectId being set matches this.id\n // This happens during a fetch -- the id is set before calling fetch\n // Let the name be set in this case\n return new _ParseError.default(_ParseError.default.OTHER_CAUSE, \"A role's name can only be set before it has been saved.\");\n }\n\n if (typeof newName !== 'string') {\n return new _ParseError.default(_ParseError.default.OTHER_CAUSE, \"A role's name must be a String.\");\n }\n\n if (!/^[0-9a-zA-Z\\-_ ]+$/.test(newName)) {\n return new _ParseError.default(_ParseError.default.OTHER_CAUSE, \"A role's name can be only contain alphanumeric characters, _, \" + '-, and spaces.');\n }\n }\n\n return false;\n }\n }]);\n return ParseRole;\n}(_ParseObject2.default);\n\n_ParseObject2.default.registerSubclass('_Role', ParseRole);\n\nvar _default = ParseRole;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseRole.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseSchema.js":
+/*!********************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseSchema.js ***!
+ \********************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/index-of */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ \"../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\"));\n\nvar _CoreManager = _interopRequireDefault(__webpack_require__(/*! ./CoreManager */ \"../node_modules/parse/lib/browser/CoreManager.js\"));\n\nvar _ParseObject = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n\nvar _ParseCLP = _interopRequireDefault(__webpack_require__(/*! ./ParseCLP */ \"../node_modules/parse/lib/browser/ParseCLP.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n\nvar FIELD_TYPES = ['String', 'Number', 'Boolean', 'Date', 'File', 'GeoPoint', 'Polygon', 'Array', 'Object', 'Pointer', 'Relation'];\n/*:: type FieldOptions = {\n required: boolean,\n defaultValue: mixed,\n};*/\n\n/**\n * A Parse.Schema object is for handling schema data from Parse.\n * All the schemas methods require MasterKey.\n *\n * When adding fields, you may set required and default values. (Requires Parse Server 3.7.0+)\n *\n *
\n * const options = { required: true, defaultValue: 'hello world' };\n * const schema = new Parse.Schema('MyClass');\n * schema.addString('field', options);\n * schema.addIndex('index_name', { 'field': 1 });\n * schema.save();\n * \n * \n *\n * @alias Parse.Schema\n */\n\nvar ParseSchema = /*#__PURE__*/function () {\n /**\n * @param {string} className Parse Class string.\n */\n function ParseSchema(className\n /*: string*/\n ) {\n (0, _classCallCheck2.default)(this, ParseSchema);\n (0, _defineProperty2.default)(this, \"className\", void 0);\n (0, _defineProperty2.default)(this, \"_fields\", void 0);\n (0, _defineProperty2.default)(this, \"_indexes\", void 0);\n (0, _defineProperty2.default)(this, \"_clp\", void 0);\n\n if (typeof className === 'string') {\n if (className === 'User' && _CoreManager.default.get('PERFORM_USER_REWRITE')) {\n this.className = '_User';\n } else {\n this.className = className;\n }\n }\n\n this._fields = {};\n this._indexes = {};\n }\n /**\n * Static method to get all schemas\n *\n * @returns {Promise} A promise that is resolved with the result when\n * the query completes.\n */\n\n\n (0, _createClass2.default)(ParseSchema, [{\n key: \"get\",\n value:\n /**\n * Get the Schema from Parse\n *\n * @returns {Promise} A promise that is resolved with the result when\n * the query completes.\n */\n function () {\n this.assertClassName();\n\n var controller = _CoreManager.default.getSchemaController();\n\n return controller.get(this.className).then(function (response) {\n if (!response) {\n throw new Error('Schema not found.');\n }\n\n return response;\n });\n }\n /**\n * Create a new Schema on Parse\n *\n * @returns {Promise} A promise that is resolved with the result when\n * the query completes.\n */\n\n }, {\n key: \"save\",\n value: function () {\n this.assertClassName();\n\n var controller = _CoreManager.default.getSchemaController();\n\n var params = {\n className: this.className,\n fields: this._fields,\n indexes: this._indexes,\n classLevelPermissions: this._clp\n };\n return controller.create(this.className, params);\n }\n /**\n * Update a Schema on Parse\n *\n * @returns {Promise} A promise that is resolved with the result when\n * the query completes.\n */\n\n }, {\n key: \"update\",\n value: function () {\n this.assertClassName();\n\n var controller = _CoreManager.default.getSchemaController();\n\n var params = {\n className: this.className,\n fields: this._fields,\n indexes: this._indexes,\n classLevelPermissions: this._clp\n };\n this._fields = {};\n this._indexes = {};\n return controller.update(this.className, params);\n }\n /**\n * Removing a Schema from Parse\n * Can only be used on Schema without objects\n *\n * @returns {Promise} A promise that is resolved with the result when\n * the query completes.\n */\n\n }, {\n key: \"delete\",\n value: function () {\n this.assertClassName();\n\n var controller = _CoreManager.default.getSchemaController();\n\n return controller.delete(this.className);\n }\n /**\n * Removes all objects from a Schema (class) in Parse.\n * EXERCISE CAUTION, running this will delete all objects for this schema and cannot be reversed\n *\n * @returns {Promise} A promise that is resolved with the result when\n * the query completes.\n */\n\n }, {\n key: \"purge\",\n value: function () {\n this.assertClassName();\n\n var controller = _CoreManager.default.getSchemaController();\n\n return controller.purge(this.className);\n }\n /**\n * Assert if ClassName has been filled\n *\n * @private\n */\n\n }, {\n key: \"assertClassName\",\n value: function () {\n if (!this.className) {\n throw new Error('You must set a Class Name before making any request.');\n }\n }\n /**\n * Sets Class Level Permissions when creating / updating a Schema.\n * EXERCISE CAUTION, running this may override CLP for this schema and cannot be reversed\n *\n * @param {object | Parse.CLP} clp Class Level Permissions\n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n */\n\n }, {\n key: \"setCLP\",\n value: function (clp\n /*: PermissionsMap | ParseCLP*/\n ) {\n if (clp instanceof _ParseCLP.default) {\n this._clp = clp.toJSON();\n } else {\n this._clp = clp;\n }\n\n return this;\n }\n /**\n * Adding a Field to Create / Update a Schema\n *\n * @param {string} name Name of the field that will be created on Parse\n * @param {string} type Can be a (String|Number|Boolean|Date|Parse.File|Parse.GeoPoint|Array|Object|Pointer|Parse.Relation)\n * @param {object} options\n * Valid options are:\n * required: If field is not set, save operation fails (Requires Parse Server 3.7.0+)\n * defaultValue: If field is not set, a default value is selected (Requires Parse Server 3.7.0+)\n * targetClass: Required if type is Pointer or Parse.Relation\n * \n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n */\n\n }, {\n key: \"addField\",\n value: function (name\n /*: string*/\n , type\n /*: string*/\n ) {\n var options\n /*: FieldOptions*/\n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n type = type || 'String';\n\n if (!name) {\n throw new Error('field name may not be null.');\n }\n\n if ((0, _indexOf.default)(FIELD_TYPES).call(FIELD_TYPES, type) === -1) {\n throw new Error(\"\".concat(type, \" is not a valid type.\"));\n }\n\n if (type === 'Pointer') {\n return this.addPointer(name, options.targetClass, options);\n }\n\n if (type === 'Relation') {\n return this.addRelation(name, options.targetClass, options);\n }\n\n var fieldOptions = {\n type: type\n };\n\n if (typeof options.required === 'boolean') {\n fieldOptions.required = options.required;\n }\n\n if (options.defaultValue !== undefined) {\n fieldOptions.defaultValue = options.defaultValue;\n }\n\n this._fields[name] = fieldOptions;\n return this;\n }\n /**\n * Adding an Index to Create / Update a Schema\n *\n * @param {string} name Name of the index\n * @param {object} index { field: value }\n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n *\n * \n * schema.addIndex('index_name', { 'field': 1 });\n * \n */\n\n }, {\n key: \"addIndex\",\n value: function (name\n /*: string*/\n , index\n /*: any*/\n ) {\n if (!name) {\n throw new Error('index name may not be null.');\n }\n\n if (!index) {\n throw new Error('index may not be null.');\n }\n\n this._indexes[name] = index;\n return this;\n }\n /**\n * Adding String Field\n *\n * @param {string} name Name of the field that will be created on Parse\n * @param {object} options See {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.Schema.html#addField addField}\n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n */\n\n }, {\n key: \"addString\",\n value: function (name\n /*: string*/\n , options\n /*: FieldOptions*/\n ) {\n return this.addField(name, 'String', options);\n }\n /**\n * Adding Number Field\n *\n * @param {string} name Name of the field that will be created on Parse\n * @param {object} options See {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.Schema.html#addField addField}\n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n */\n\n }, {\n key: \"addNumber\",\n value: function (name\n /*: string*/\n , options\n /*: FieldOptions*/\n ) {\n return this.addField(name, 'Number', options);\n }\n /**\n * Adding Boolean Field\n *\n * @param {string} name Name of the field that will be created on Parse\n * @param {object} options See {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.Schema.html#addField addField}\n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n */\n\n }, {\n key: \"addBoolean\",\n value: function (name\n /*: string*/\n , options\n /*: FieldOptions*/\n ) {\n return this.addField(name, 'Boolean', options);\n }\n /**\n * Adding Date Field\n *\n * @param {string} name Name of the field that will be created on Parse\n * @param {object} options See {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.Schema.html#addField addField}\n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n */\n\n }, {\n key: \"addDate\",\n value: function (name\n /*: string*/\n , options\n /*: FieldOptions*/\n ) {\n if (options && options.defaultValue) {\n options.defaultValue = {\n __type: 'Date',\n iso: new Date(options.defaultValue)\n };\n }\n\n return this.addField(name, 'Date', options);\n }\n /**\n * Adding File Field\n *\n * @param {string} name Name of the field that will be created on Parse\n * @param {object} options See {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.Schema.html#addField addField}\n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n */\n\n }, {\n key: \"addFile\",\n value: function (name\n /*: string*/\n , options\n /*: FieldOptions*/\n ) {\n return this.addField(name, 'File', options);\n }\n /**\n * Adding GeoPoint Field\n *\n * @param {string} name Name of the field that will be created on Parse\n * @param {object} options See {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.Schema.html#addField addField}\n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n */\n\n }, {\n key: \"addGeoPoint\",\n value: function (name\n /*: string*/\n , options\n /*: FieldOptions*/\n ) {\n return this.addField(name, 'GeoPoint', options);\n }\n /**\n * Adding Polygon Field\n *\n * @param {string} name Name of the field that will be created on Parse\n * @param {object} options See {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.Schema.html#addField addField}\n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n */\n\n }, {\n key: \"addPolygon\",\n value: function (name\n /*: string*/\n , options\n /*: FieldOptions*/\n ) {\n return this.addField(name, 'Polygon', options);\n }\n /**\n * Adding Array Field\n *\n * @param {string} name Name of the field that will be created on Parse\n * @param {object} options See {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.Schema.html#addField addField}\n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n */\n\n }, {\n key: \"addArray\",\n value: function (name\n /*: string*/\n , options\n /*: FieldOptions*/\n ) {\n return this.addField(name, 'Array', options);\n }\n /**\n * Adding Object Field\n *\n * @param {string} name Name of the field that will be created on Parse\n * @param {object} options See {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.Schema.html#addField addField}\n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n */\n\n }, {\n key: \"addObject\",\n value: function (name\n /*: string*/\n , options\n /*: FieldOptions*/\n ) {\n return this.addField(name, 'Object', options);\n }\n /**\n * Adding Pointer Field\n *\n * @param {string} name Name of the field that will be created on Parse\n * @param {string} targetClass Name of the target Pointer Class\n * @param {object} options See {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.Schema.html#addField addField}\n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n */\n\n }, {\n key: \"addPointer\",\n value: function (name\n /*: string*/\n , targetClass\n /*: string*/\n ) {\n var options\n /*: FieldOptions*/\n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!name) {\n throw new Error('field name may not be null.');\n }\n\n if (!targetClass) {\n throw new Error('You need to set the targetClass of the Pointer.');\n }\n\n var fieldOptions = {\n type: 'Pointer',\n targetClass: targetClass\n };\n\n if (typeof options.required === 'boolean') {\n fieldOptions.required = options.required;\n }\n\n if (options.defaultValue !== undefined) {\n fieldOptions.defaultValue = options.defaultValue;\n\n if (options.defaultValue instanceof _ParseObject.default) {\n fieldOptions.defaultValue = options.defaultValue.toPointer();\n }\n }\n\n this._fields[name] = fieldOptions;\n return this;\n }\n /**\n * Adding Relation Field\n *\n * @param {string} name Name of the field that will be created on Parse\n * @param {string} targetClass Name of the target Pointer Class\n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n */\n\n }, {\n key: \"addRelation\",\n value: function (name\n /*: string*/\n , targetClass\n /*: string*/\n ) {\n if (!name) {\n throw new Error('field name may not be null.');\n }\n\n if (!targetClass) {\n throw new Error('You need to set the targetClass of the Relation.');\n }\n\n this._fields[name] = {\n type: 'Relation',\n targetClass: targetClass\n };\n return this;\n }\n /**\n * Deleting a Field to Update on a Schema\n *\n * @param {string} name Name of the field\n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n */\n\n }, {\n key: \"deleteField\",\n value: function (name\n /*: string*/\n ) {\n this._fields[name] = {\n __op: 'Delete'\n };\n return this;\n }\n /**\n * Deleting an Index to Update on a Schema\n *\n * @param {string} name Name of the field\n * @returns {Parse.Schema} Returns the schema, so you can chain this call.\n */\n\n }, {\n key: \"deleteIndex\",\n value: function (name\n /*: string*/\n ) {\n this._indexes[name] = {\n __op: 'Delete'\n };\n return this;\n }\n }], [{\n key: \"all\",\n value: function () {\n var controller = _CoreManager.default.getSchemaController();\n\n return controller.get('').then(function (response) {\n if (response.results.length === 0) {\n throw new Error('Schema not found.');\n }\n\n return response.results;\n });\n }\n }]);\n return ParseSchema;\n}();\n\nvar DefaultController = {\n send: function (className\n /*: string*/\n , method\n /*: string*/\n )\n /*: Promise*/\n {\n var params\n /*: any*/\n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var RESTController = _CoreManager.default.getRESTController();\n\n return RESTController.request(method, \"schemas/\".concat(className), params, {\n useMasterKey: true\n });\n },\n get: function (className\n /*: string*/\n )\n /*: Promise*/\n {\n return this.send(className, 'GET');\n },\n create: function (className\n /*: string*/\n , params\n /*: any*/\n )\n /*: Promise*/\n {\n return this.send(className, 'POST', params);\n },\n update: function (className\n /*: string*/\n , params\n /*: any*/\n )\n /*: Promise*/\n {\n return this.send(className, 'PUT', params);\n },\n delete: function (className\n /*: string*/\n )\n /*: Promise*/\n {\n return this.send(className, 'DELETE');\n },\n purge: function (className\n /*: string*/\n )\n /*: Promise*/\n {\n var RESTController = _CoreManager.default.getRESTController();\n\n return RESTController.request('DELETE', \"purge/\".concat(className), {}, {\n useMasterKey: true\n });\n }\n};\n\n_CoreManager.default.setSchemaController(DefaultController);\n\nvar _default = ParseSchema;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseSchema.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseSession.js":
+/*!*********************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseSession.js ***!
+ \*********************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\nvar _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/reflect/construct */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/inherits */ \"../node_modules/@babel/runtime-corejs3/helpers/inherits.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js\"));\n\nvar _CoreManager = _interopRequireDefault(__webpack_require__(/*! ./CoreManager */ \"../node_modules/parse/lib/browser/CoreManager.js\"));\n\nvar _isRevocableSession = _interopRequireDefault(__webpack_require__(/*! ./isRevocableSession */ \"../node_modules/parse/lib/browser/isRevocableSession.js\"));\n\nvar _ParseObject2 = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n\nvar _ParseUser = _interopRequireDefault(__webpack_require__(/*! ./ParseUser */ \"../node_modules/parse/lib/browser/ParseUser.js\"));\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function () {\n var Super = (0, _getPrototypeOf2.default)(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = (0, _getPrototypeOf2.default)(this).constructor;\n result = _Reflect$construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return (0, _possibleConstructorReturn2.default)(this, result);\n };\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false;\n if (_Reflect$construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * A Parse.Session object is a local representation of a revocable session.\n * This class is a subclass of a Parse.Object, and retains the same\n * functionality of a Parse.Object.
\n *\n * @alias Parse.Session\n * @augments Parse.Object\n */\n\n\nvar ParseSession = /*#__PURE__*/function (_ParseObject) {\n (0, _inherits2.default)(ParseSession, _ParseObject);\n\n var _super = _createSuper(ParseSession);\n /**\n * @param {object} attributes The initial set of data to store in the user.\n */\n\n\n function ParseSession(attributes\n /*: ?AttributeMap*/\n ) {\n var _this;\n\n (0, _classCallCheck2.default)(this, ParseSession);\n _this = _super.call(this, '_Session');\n\n if (attributes && (0, _typeof2.default)(attributes) === 'object') {\n if (!_this.set(attributes || {})) {\n throw new Error(\"Can't create an invalid Session\");\n }\n }\n\n return _this;\n }\n /**\n * Returns the session token string.\n *\n * @returns {string}\n */\n\n\n (0, _createClass2.default)(ParseSession, [{\n key: \"getSessionToken\",\n value: function ()\n /*: string*/\n {\n var token = this.get('sessionToken');\n\n if (typeof token === 'string') {\n return token;\n }\n\n return '';\n }\n }], [{\n key: \"readOnlyAttributes\",\n value: function () {\n return ['createdWith', 'expiresAt', 'installationId', 'restricted', 'sessionToken', 'user'];\n }\n /**\n * Retrieves the Session object for the currently logged in session.\n *\n * @param {object} options useMasterKey\n * @static\n * @returns {Promise} A promise that is resolved with the Parse.Session\n * object after it has been fetched. If there is no current user, the\n * promise will be rejected.\n */\n\n }, {\n key: \"current\",\n value: function (options\n /*: FullOptions*/\n ) {\n options = options || {};\n\n var controller = _CoreManager.default.getSessionController();\n\n var sessionOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n sessionOptions.useMasterKey = options.useMasterKey;\n }\n\n return _ParseUser.default.currentAsync().then(function (user) {\n if (!user) {\n return _promise.default.reject('There is no current user.');\n }\n\n sessionOptions.sessionToken = user.getSessionToken();\n return controller.getSession(sessionOptions);\n });\n }\n /**\n * Determines whether the current session token is revocable.\n * This method is useful for migrating Express.js or Node.js web apps to\n * use revocable sessions. If you are migrating an app that uses the Parse\n * SDK in the browser only, please use Parse.User.enableRevocableSession()\n * instead, so that sessions can be automatically upgraded.\n *\n * @static\n * @returns {boolean}\n */\n\n }, {\n key: \"isCurrentSessionRevocable\",\n value: function ()\n /*: boolean*/\n {\n var currentUser = _ParseUser.default.current();\n\n if (currentUser) {\n return (0, _isRevocableSession.default)(currentUser.getSessionToken() || '');\n }\n\n return false;\n }\n }]);\n return ParseSession;\n}(_ParseObject2.default);\n\n_ParseObject2.default.registerSubclass('_Session', ParseSession);\n\nvar DefaultController = {\n getSession: function (options\n /*: RequestOptions*/\n )\n /*: Promise*/\n {\n var RESTController = _CoreManager.default.getRESTController();\n\n var session = new ParseSession();\n return RESTController.request('GET', 'sessions/me', {}, options).then(function (sessionData) {\n session._finishFetch(sessionData);\n\n session._setExisted(true);\n\n return session;\n });\n }\n};\n\n_CoreManager.default.setSessionController(DefaultController);\n\nvar _default = ParseSession;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseSession.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/ParseUser.js":
+/*!******************************************************!*\
+ !*** ../node_modules/parse/lib/browser/ParseUser.js ***!
+ \******************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\nvar _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/reflect/construct */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js\");\n\n_Object$defineProperty2(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _stringify = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/json/stringify */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js\"));\n\nvar _defineProperty = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\"));\n\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/regenerator */ \"../node_modules/@babel/runtime-corejs3/regenerator/index.js\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/asyncToGenerator */ \"../node_modules/@babel/runtime-corejs3/helpers/asyncToGenerator.js\"));\n\nvar _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/get */ \"../node_modules/@babel/runtime-corejs3/helpers/get.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/inherits */ \"../node_modules/@babel/runtime-corejs3/helpers/inherits.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/possibleConstructorReturn */ \"../node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/getPrototypeOf */ \"../node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js\"));\n\nvar _CoreManager = _interopRequireDefault(__webpack_require__(/*! ./CoreManager */ \"../node_modules/parse/lib/browser/CoreManager.js\"));\n\nvar _isRevocableSession = _interopRequireDefault(__webpack_require__(/*! ./isRevocableSession */ \"../node_modules/parse/lib/browser/isRevocableSession.js\"));\n\nvar _ParseError = _interopRequireDefault(__webpack_require__(/*! ./ParseError */ \"../node_modules/parse/lib/browser/ParseError.js\"));\n\nvar _ParseObject2 = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n\nvar _ParseSession = _interopRequireDefault(__webpack_require__(/*! ./ParseSession */ \"../node_modules/parse/lib/browser/ParseSession.js\"));\n\nvar _Storage = _interopRequireDefault(__webpack_require__(/*! ./Storage */ \"../node_modules/parse/lib/browser/Storage.js\"));\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function () {\n var Super = (0, _getPrototypeOf2.default)(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = (0, _getPrototypeOf2.default)(this).constructor;\n result = _Reflect$construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return (0, _possibleConstructorReturn2.default)(this, result);\n };\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false;\n if (_Reflect$construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar CURRENT_USER_KEY = 'currentUser';\nvar canUseCurrentUser = !_CoreManager.default.get('IS_NODE');\nvar currentUserCacheMatchesDisk = false;\nvar currentUserCache = null;\nvar authProviders = {};\n/**\n * A Parse.User object is a local representation of a user persisted to the\n * Parse cloud. This class is a subclass of a Parse.Object, and retains the\n * same functionality of a Parse.Object, but also extends it with various\n * user specific methods, like authentication, signing up, and validation of\n * uniqueness.
\n *\n * @alias Parse.User\n * @augments Parse.Object\n */\n\nvar ParseUser = /*#__PURE__*/function (_ParseObject) {\n (0, _inherits2.default)(ParseUser, _ParseObject);\n\n var _super = _createSuper(ParseUser);\n /**\n * @param {object} attributes The initial set of data to store in the user.\n */\n\n\n function ParseUser(attributes\n /*: ?AttributeMap*/\n ) {\n var _this;\n\n (0, _classCallCheck2.default)(this, ParseUser);\n _this = _super.call(this, '_User');\n\n if (attributes && (0, _typeof2.default)(attributes) === 'object') {\n if (!_this.set(attributes || {})) {\n throw new Error(\"Can't create an invalid Parse User\");\n }\n }\n\n return _this;\n }\n /**\n * Request a revocable session token to replace the older style of token.\n *\n * @param {object} options\n * @returns {Promise} A promise that is resolved when the replacement\n * token has been fetched.\n */\n\n\n (0, _createClass2.default)(ParseUser, [{\n key: \"_upgradeToRevocableSession\",\n value: function (options\n /*: RequestOptions*/\n )\n /*: Promise*/\n {\n options = options || {};\n var upgradeOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n upgradeOptions.useMasterKey = options.useMasterKey;\n }\n\n var controller = _CoreManager.default.getUserController();\n\n return controller.upgradeToRevocableSession(this, upgradeOptions);\n }\n /**\n * Parse allows you to link your users with {@link https://docs.parseplatform.org/parse-server/guide/#oauth-and-3rd-party-authentication 3rd party authentication}, enabling\n * your users to sign up or log into your application using their existing identities.\n * Since 2.9.0\n *\n * @see {@link https://docs.parseplatform.org/js/guide/#linking-users Linking Users}\n * @param {string | AuthProvider} provider Name of auth provider or {@link https://parseplatform.org/Parse-SDK-JS/api/master/AuthProvider.html AuthProvider}\n * @param {object} options\n * \n * If provider is string, options is {@link http://docs.parseplatform.org/parse-server/guide/#supported-3rd-party-authentications authData}\n * If provider is AuthProvider, options is saveOpts\n * \n * @param {object} saveOpts useMasterKey / sessionToken\n * @returns {Promise} A promise that is fulfilled with the user is linked\n */\n\n }, {\n key: \"linkWith\",\n value: function (provider\n /*: any*/\n , options\n /*: { authData?: AuthData }*/\n )\n /*: Promise*/\n {\n var _this2 = this;\n\n var saveOpts\n /*:: ?: FullOptions*/\n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n saveOpts.sessionToken = saveOpts.sessionToken || this.getSessionToken() || '';\n var authType;\n\n if (typeof provider === 'string') {\n authType = provider;\n\n if (authProviders[provider]) {\n provider = authProviders[provider];\n } else {\n var authProvider = {\n restoreAuthentication: function () {\n return true;\n },\n getAuthType: function () {\n return authType;\n }\n };\n authProviders[authProvider.getAuthType()] = authProvider;\n provider = authProvider;\n }\n } else {\n authType = provider.getAuthType();\n }\n\n if (options && options.hasOwnProperty('authData')) {\n var authData = this.get('authData') || {};\n\n if ((0, _typeof2.default)(authData) !== 'object') {\n throw new Error('Invalid type: authData field should be an object');\n }\n\n authData[authType] = options.authData;\n\n var controller = _CoreManager.default.getUserController();\n\n return controller.linkWith(this, authData, saveOpts);\n } else {\n return new _promise.default(function (resolve, reject) {\n provider.authenticate({\n success: function (provider, result) {\n var opts = {};\n opts.authData = result;\n\n _this2.linkWith(provider, opts, saveOpts).then(function () {\n resolve(_this2);\n }, function (error) {\n reject(error);\n });\n },\n error: function (provider, _error) {\n reject(_error);\n }\n });\n });\n }\n }\n /**\n * @param provider\n * @param options\n * @param saveOpts\n * @deprecated since 2.9.0 see {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.User.html#linkWith linkWith}\n * @returns {Promise}\n */\n\n }, {\n key: \"_linkWith\",\n value: function (provider\n /*: any*/\n , options\n /*: { authData?: AuthData }*/\n )\n /*: Promise*/\n {\n var saveOpts\n /*:: ?: FullOptions*/\n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.linkWith(provider, options, saveOpts);\n }\n /**\n * Synchronizes auth data for a provider (e.g. puts the access token in the\n * right place to be used by the Facebook SDK).\n *\n * @param provider\n */\n\n }, {\n key: \"_synchronizeAuthData\",\n value: function (provider\n /*: string*/\n ) {\n if (!this.isCurrent() || !provider) {\n return;\n }\n\n var authType;\n\n if (typeof provider === 'string') {\n authType = provider;\n provider = authProviders[authType];\n } else {\n authType = provider.getAuthType();\n }\n\n var authData = this.get('authData');\n\n if (!provider || !authData || (0, _typeof2.default)(authData) !== 'object') {\n return;\n }\n\n var success = provider.restoreAuthentication(authData[authType]);\n\n if (!success) {\n this._unlinkFrom(provider);\n }\n }\n /**\n * Synchronizes authData for all providers.\n */\n\n }, {\n key: \"_synchronizeAllAuthData\",\n value: function () {\n var authData = this.get('authData');\n\n if ((0, _typeof2.default)(authData) !== 'object') {\n return;\n }\n\n for (var _key in authData) {\n this._synchronizeAuthData(_key);\n }\n }\n /**\n * Removes null values from authData (which exist temporarily for unlinking)\n */\n\n }, {\n key: \"_cleanupAuthData\",\n value: function () {\n if (!this.isCurrent()) {\n return;\n }\n\n var authData = this.get('authData');\n\n if ((0, _typeof2.default)(authData) !== 'object') {\n return;\n }\n\n for (var _key2 in authData) {\n if (!authData[_key2]) {\n delete authData[_key2];\n }\n }\n }\n /**\n * Unlinks a user from a service.\n *\n * @param {string | AuthProvider} provider Name of auth provider or {@link https://parseplatform.org/Parse-SDK-JS/api/master/AuthProvider.html AuthProvider}\n * @param {object} options MasterKey / SessionToken\n * @returns {Promise} A promise that is fulfilled when the unlinking\n * finishes.\n */\n\n }, {\n key: \"_unlinkFrom\",\n value: function (provider\n /*: any*/\n , options\n /*:: ?: FullOptions*/\n )\n /*: Promise*/\n {\n var _this3 = this;\n\n return this.linkWith(provider, {\n authData: null\n }, options).then(function () {\n _this3._synchronizeAuthData(provider);\n\n return _promise.default.resolve(_this3);\n });\n }\n /**\n * Checks whether a user is linked to a service.\n *\n * @param {object} provider service to link to\n * @returns {boolean} true if link was successful\n */\n\n }, {\n key: \"_isLinked\",\n value: function (provider\n /*: any*/\n )\n /*: boolean*/\n {\n var authType;\n\n if (typeof provider === 'string') {\n authType = provider;\n } else {\n authType = provider.getAuthType();\n }\n\n var authData = this.get('authData') || {};\n\n if ((0, _typeof2.default)(authData) !== 'object') {\n return false;\n }\n\n return !!authData[authType];\n }\n /**\n * Deauthenticates all providers.\n */\n\n }, {\n key: \"_logOutWithAll\",\n value: function () {\n var authData = this.get('authData');\n\n if ((0, _typeof2.default)(authData) !== 'object') {\n return;\n }\n\n for (var _key3 in authData) {\n this._logOutWith(_key3);\n }\n }\n /**\n * Deauthenticates a single provider (e.g. removing access tokens from the\n * Facebook SDK).\n *\n * @param {object} provider service to logout of\n */\n\n }, {\n key: \"_logOutWith\",\n value: function (provider\n /*: any*/\n ) {\n if (!this.isCurrent()) {\n return;\n }\n\n if (typeof provider === 'string') {\n provider = authProviders[provider];\n }\n\n if (provider && provider.deauthenticate) {\n provider.deauthenticate();\n }\n }\n /**\n * Class instance method used to maintain specific keys when a fetch occurs.\n * Used to ensure that the session token is not lost.\n *\n * @returns {object} sessionToken\n */\n\n }, {\n key: \"_preserveFieldsOnFetch\",\n value: function ()\n /*: AttributeMap*/\n {\n return {\n sessionToken: this.get('sessionToken')\n };\n }\n /**\n * Returns true if current
would return this user.\n *\n * @returns {boolean} true if user is cached on disk\n */\n\n }, {\n key: \"isCurrent\",\n value: function ()\n /*: boolean*/\n {\n var current = ParseUser.current();\n return !!current && current.id === this.id;\n }\n /**\n * Returns true if current
would return this user.\n *\n * @returns {Promise} true if user is cached on disk\n */\n\n }, {\n key: \"isCurrentAsync\",\n value: function () {\n var _isCurrentAsync = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var current;\n return _regenerator.default.wrap(function (_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return ParseUser.currentAsync();\n\n case 2:\n current = _context.sent;\n return _context.abrupt(\"return\", !!current && current.id === this.id);\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function () {\n return _isCurrentAsync.apply(this, arguments);\n };\n }()\n /**\n * Returns get(\"username\").\n *\n * @returns {string}\n */\n\n }, {\n key: \"getUsername\",\n value: function ()\n /*: ?string*/\n {\n var username = this.get('username');\n\n if (username == null || typeof username === 'string') {\n return username;\n }\n\n return '';\n }\n /**\n * Calls set(\"username\", username, options) and returns the result.\n *\n * @param {string} username\n */\n\n }, {\n key: \"setUsername\",\n value: function (username\n /*: string*/\n ) {\n // Strip anonymity\n var authData = this.get('authData');\n\n if (authData && (0, _typeof2.default)(authData) === 'object' && authData.hasOwnProperty('anonymous')) {\n // We need to set anonymous to null instead of deleting it in order to remove it from Parse.\n authData.anonymous = null;\n }\n\n this.set('username', username);\n }\n /**\n * Calls set(\"password\", password, options) and returns the result.\n *\n * @param {string} password User's Password\n */\n\n }, {\n key: \"setPassword\",\n value: function (password\n /*: string*/\n ) {\n this.set('password', password);\n }\n /**\n * Returns get(\"email\").\n *\n * @returns {string} User's Email\n */\n\n }, {\n key: \"getEmail\",\n value: function ()\n /*: ?string*/\n {\n var email = this.get('email');\n\n if (email == null || typeof email === 'string') {\n return email;\n }\n\n return '';\n }\n /**\n * Calls set(\"email\", email) and returns the result.\n *\n * @param {string} email\n * @returns {boolean}\n */\n\n }, {\n key: \"setEmail\",\n value: function (email\n /*: string*/\n ) {\n return this.set('email', email);\n }\n /**\n * Returns the session token for this user, if the user has been logged in,\n * or if it is the result of a query with the master key. Otherwise, returns\n * undefined.\n *\n * @returns {string} the session token, or undefined\n */\n\n }, {\n key: \"getSessionToken\",\n value: function ()\n /*: ?string*/\n {\n var token = this.get('sessionToken');\n\n if (token == null || typeof token === 'string') {\n return token;\n }\n\n return '';\n }\n /**\n * Checks whether this user is the current user and has been authenticated.\n *\n * @returns {boolean} whether this user is the current user and is logged in.\n */\n\n }, {\n key: \"authenticated\",\n value: function ()\n /*: boolean*/\n {\n var current = ParseUser.current();\n return !!this.get('sessionToken') && !!current && current.id === this.id;\n }\n /**\n * Signs up a new user. You should call this instead of save for\n * new Parse.Users. This will create a new Parse.User on the server, and\n * also persist the session on disk so that you can access the user using\n * current
.\n *\n * A username and password must be set before calling signUp.
\n *\n * @param {object} attrs Extra fields to set on the new user, or null.\n * @param {object} options\n * @returns {Promise} A promise that is fulfilled when the signup\n * finishes.\n */\n\n }, {\n key: \"signUp\",\n value: function (attrs\n /*: AttributeMap*/\n , options\n /*:: ?: FullOptions*/\n )\n /*: Promise*/\n {\n options = options || {};\n var signupOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n signupOptions.useMasterKey = options.useMasterKey;\n }\n\n if (options.hasOwnProperty('installationId')) {\n signupOptions.installationId = options.installationId;\n }\n\n var controller = _CoreManager.default.getUserController();\n\n return controller.signUp(this, attrs, signupOptions);\n }\n /**\n * Logs in a Parse.User. On success, this saves the session to disk,\n * so you can retrieve the currently logged in user using\n * current
.\n *\n * A username and password must be set before calling logIn.
\n *\n * @param {object} options\n * @returns {Promise} A promise that is fulfilled with the user when\n * the login is complete.\n */\n\n }, {\n key: \"logIn\",\n value: function (options\n /*:: ?: FullOptions*/\n )\n /*: Promise*/\n {\n options = options || {};\n var loginOptions = {\n usePost: true\n };\n\n if (options.hasOwnProperty('useMasterKey')) {\n loginOptions.useMasterKey = options.useMasterKey;\n }\n\n if (options.hasOwnProperty('installationId')) {\n loginOptions.installationId = options.installationId;\n }\n\n if (options.hasOwnProperty('usePost')) {\n loginOptions.usePost = options.usePost;\n }\n\n var controller = _CoreManager.default.getUserController();\n\n return controller.logIn(this, loginOptions);\n }\n /**\n * Wrap the default save behavior with functionality to save to local\n * storage if this is current user.\n *\n * @param {...any} args\n * @returns {Promise}\n */\n\n }, {\n key: \"save\",\n value: function () {\n var _save = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var _len,\n args,\n _key4,\n current,\n _args2 = arguments;\n\n return _regenerator.default.wrap(function (_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n for (_len = _args2.length, args = new Array(_len), _key4 = 0; _key4 < _len; _key4++) {\n args[_key4] = _args2[_key4];\n }\n\n _context2.next = 3;\n return (0, _get2.default)((0, _getPrototypeOf2.default)(ParseUser.prototype), \"save\", this).apply(this, args);\n\n case 3:\n _context2.next = 5;\n return this.isCurrentAsync();\n\n case 5:\n current = _context2.sent;\n\n if (!current) {\n _context2.next = 8;\n break;\n }\n\n return _context2.abrupt(\"return\", _CoreManager.default.getUserController().updateUserOnDisk(this));\n\n case 8:\n return _context2.abrupt(\"return\", this);\n\n case 9:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function () {\n return _save.apply(this, arguments);\n };\n }()\n /**\n * Wrap the default destroy behavior with functionality that logs out\n * the current user when it is destroyed\n *\n * @param {...any} args\n * @returns {Parse.User}\n */\n\n }, {\n key: \"destroy\",\n value: function () {\n var _destroy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var _len2,\n args,\n _key5,\n current,\n _args3 = arguments;\n\n return _regenerator.default.wrap(function (_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n for (_len2 = _args3.length, args = new Array(_len2), _key5 = 0; _key5 < _len2; _key5++) {\n args[_key5] = _args3[_key5];\n }\n\n _context3.next = 3;\n return (0, _get2.default)((0, _getPrototypeOf2.default)(ParseUser.prototype), \"destroy\", this).apply(this, args);\n\n case 3:\n _context3.next = 5;\n return this.isCurrentAsync();\n\n case 5:\n current = _context3.sent;\n\n if (!current) {\n _context3.next = 8;\n break;\n }\n\n return _context3.abrupt(\"return\", _CoreManager.default.getUserController().removeUserFromDisk());\n\n case 8:\n return _context3.abrupt(\"return\", this);\n\n case 9:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function () {\n return _destroy.apply(this, arguments);\n };\n }()\n /**\n * Wrap the default fetch behavior with functionality to save to local\n * storage if this is current user.\n *\n * @param {...any} args\n * @returns {Parse.User}\n */\n\n }, {\n key: \"fetch\",\n value: function () {\n var _fetch = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var _len3,\n args,\n _key6,\n current,\n _args4 = arguments;\n\n return _regenerator.default.wrap(function (_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n for (_len3 = _args4.length, args = new Array(_len3), _key6 = 0; _key6 < _len3; _key6++) {\n args[_key6] = _args4[_key6];\n }\n\n _context4.next = 3;\n return (0, _get2.default)((0, _getPrototypeOf2.default)(ParseUser.prototype), \"fetch\", this).apply(this, args);\n\n case 3:\n _context4.next = 5;\n return this.isCurrentAsync();\n\n case 5:\n current = _context4.sent;\n\n if (!current) {\n _context4.next = 8;\n break;\n }\n\n return _context4.abrupt(\"return\", _CoreManager.default.getUserController().updateUserOnDisk(this));\n\n case 8:\n return _context4.abrupt(\"return\", this);\n\n case 9:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function () {\n return _fetch.apply(this, arguments);\n };\n }()\n /**\n * Wrap the default fetchWithInclude behavior with functionality to save to local\n * storage if this is current user.\n *\n * @param {...any} args\n * @returns {Parse.User}\n */\n\n }, {\n key: \"fetchWithInclude\",\n value: function () {\n var _fetchWithInclude = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n var _len4,\n args,\n _key7,\n current,\n _args5 = arguments;\n\n return _regenerator.default.wrap(function (_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n for (_len4 = _args5.length, args = new Array(_len4), _key7 = 0; _key7 < _len4; _key7++) {\n args[_key7] = _args5[_key7];\n }\n\n _context5.next = 3;\n return (0, _get2.default)((0, _getPrototypeOf2.default)(ParseUser.prototype), \"fetchWithInclude\", this).apply(this, args);\n\n case 3:\n _context5.next = 5;\n return this.isCurrentAsync();\n\n case 5:\n current = _context5.sent;\n\n if (!current) {\n _context5.next = 8;\n break;\n }\n\n return _context5.abrupt(\"return\", _CoreManager.default.getUserController().updateUserOnDisk(this));\n\n case 8:\n return _context5.abrupt(\"return\", this);\n\n case 9:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n return function () {\n return _fetchWithInclude.apply(this, arguments);\n };\n }()\n /**\n * Verify whether a given password is the password of the current user.\n *\n * @param {string} password A password to be verified\n * @param {object} options\n * @returns {Promise} A promise that is fulfilled with a user\n * when the password is correct.\n */\n\n }, {\n key: \"verifyPassword\",\n value: function (password\n /*: string*/\n , options\n /*:: ?: RequestOptions*/\n )\n /*: Promise*/\n {\n var username = this.getUsername() || '';\n return ParseUser.verifyPassword(username, password, options);\n }\n }], [{\n key: \"readOnlyAttributes\",\n value: function () {\n return ['sessionToken'];\n }\n /**\n * Adds functionality to the existing Parse.User class.\n *\n * @param {object} protoProps A set of properties to add to the prototype\n * @param {object} classProps A set of static properties to add to the class\n * @static\n * @returns {Parse.User} The newly extended Parse.User class\n */\n\n }, {\n key: \"extend\",\n value: function (protoProps\n /*: { [prop: string]: any }*/\n , classProps\n /*: { [prop: string]: any }*/\n ) {\n if (protoProps) {\n for (var _prop in protoProps) {\n if (_prop !== 'className') {\n (0, _defineProperty.default)(ParseUser.prototype, _prop, {\n value: protoProps[_prop],\n enumerable: false,\n writable: true,\n configurable: true\n });\n }\n }\n }\n\n if (classProps) {\n for (var _prop2 in classProps) {\n if (_prop2 !== 'className') {\n (0, _defineProperty.default)(ParseUser, _prop2, {\n value: classProps[_prop2],\n enumerable: false,\n writable: true,\n configurable: true\n });\n }\n }\n }\n\n return ParseUser;\n }\n /**\n * Retrieves the currently logged in ParseUser with a valid session,\n * either from memory or localStorage, if necessary.\n *\n * @static\n * @returns {Parse.Object} The currently logged in Parse.User.\n */\n\n }, {\n key: \"current\",\n value: function ()\n /*: ?ParseUser*/\n {\n if (!canUseCurrentUser) {\n return null;\n }\n\n var controller = _CoreManager.default.getUserController();\n\n return controller.currentUser();\n }\n /**\n * Retrieves the currently logged in ParseUser from asynchronous Storage.\n *\n * @static\n * @returns {Promise} A Promise that is resolved with the currently\n * logged in Parse User\n */\n\n }, {\n key: \"currentAsync\",\n value: function ()\n /*: Promise*/\n {\n if (!canUseCurrentUser) {\n return _promise.default.resolve(null);\n }\n\n var controller = _CoreManager.default.getUserController();\n\n return controller.currentUserAsync();\n }\n /**\n * Signs up a new user with a username (or email) and password.\n * This will create a new Parse.User on the server, and also persist the\n * session in localStorage so that you can access the user using\n * {@link #current}.\n *\n * @param {string} username The username (or email) to sign up with.\n * @param {string} password The password to sign up with.\n * @param {object} attrs Extra fields to set on the new user.\n * @param {object} options\n * @static\n * @returns {Promise} A promise that is fulfilled with the user when\n * the signup completes.\n */\n\n }, {\n key: \"signUp\",\n value: function (username\n /*: string*/\n , password\n /*: string*/\n , attrs\n /*: AttributeMap*/\n , options\n /*:: ?: FullOptions*/\n ) {\n attrs = attrs || {};\n attrs.username = username;\n attrs.password = password;\n var user = new this(attrs);\n return user.signUp({}, options);\n }\n /**\n * Logs in a user with a username (or email) and password. On success, this\n * saves the session to disk, so you can retrieve the currently logged in\n * user using current
.\n *\n * @param {string} username The username (or email) to log in with.\n * @param {string} password The password to log in with.\n * @param {object} options\n * @static\n * @returns {Promise} A promise that is fulfilled with the user when\n * the login completes.\n */\n\n }, {\n key: \"logIn\",\n value: function (username\n /*: string*/\n , password\n /*: string*/\n , options\n /*:: ?: FullOptions*/\n ) {\n if (typeof username !== 'string') {\n return _promise.default.reject(new _ParseError.default(_ParseError.default.OTHER_CAUSE, 'Username must be a string.'));\n } else if (typeof password !== 'string') {\n return _promise.default.reject(new _ParseError.default(_ParseError.default.OTHER_CAUSE, 'Password must be a string.'));\n }\n\n var user = new this();\n\n user._finishFetch({\n username: username,\n password: password\n });\n\n return user.logIn(options);\n }\n /**\n * Logs in a user with a session token. On success, this saves the session\n * to disk, so you can retrieve the currently logged in user using\n * current
.\n *\n * @param {string} sessionToken The sessionToken to log in with.\n * @param {object} options\n * @static\n * @returns {Promise} A promise that is fulfilled with the user when\n * the login completes.\n */\n\n }, {\n key: \"become\",\n value: function (sessionToken\n /*: string*/\n , options\n /*:: ?: RequestOptions*/\n ) {\n if (!canUseCurrentUser) {\n throw new Error('It is not memory-safe to become a user in a server environment');\n }\n\n options = options || {};\n var becomeOptions\n /*: RequestOptions*/\n = {\n sessionToken: sessionToken\n };\n\n if (options.hasOwnProperty('useMasterKey')) {\n becomeOptions.useMasterKey = options.useMasterKey;\n }\n\n var controller = _CoreManager.default.getUserController();\n\n var user = new this();\n return controller.become(user, becomeOptions);\n }\n /**\n * Retrieves a user with a session token.\n *\n * @param {string} sessionToken The sessionToken to get user with.\n * @param {object} options\n * @static\n * @returns {Promise} A promise that is fulfilled with the user is fetched.\n */\n\n }, {\n key: \"me\",\n value: function (sessionToken\n /*: string*/\n ) {\n var options\n /*:: ?: RequestOptions*/\n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var controller = _CoreManager.default.getUserController();\n\n var meOptions\n /*: RequestOptions*/\n = {\n sessionToken: sessionToken\n };\n\n if (options.useMasterKey) {\n meOptions.useMasterKey = options.useMasterKey;\n }\n\n var user = new this();\n return controller.me(user, meOptions);\n }\n /**\n * Logs in a user with a session token. On success, this saves the session\n * to disk, so you can retrieve the currently logged in user using\n * current
. If there is no session token the user will not logged in.\n *\n * @param {object} userJSON The JSON map of the User's data\n * @static\n * @returns {Promise} A promise that is fulfilled with the user when\n * the login completes.\n */\n\n }, {\n key: \"hydrate\",\n value: function (userJSON\n /*: AttributeMap*/\n ) {\n var controller = _CoreManager.default.getUserController();\n\n var user = new this();\n return controller.hydrate(user, userJSON);\n }\n /**\n * Static version of {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.User.html#linkWith linkWith}\n *\n * @param provider\n * @param options\n * @param saveOpts\n * @static\n * @returns {Promise}\n */\n\n }, {\n key: \"logInWith\",\n value: function (provider\n /*: any*/\n , options\n /*: { authData?: AuthData }*/\n , saveOpts\n /*:: ?: FullOptions*/\n )\n /*: Promise*/\n {\n var user = new this();\n return user.linkWith(provider, options, saveOpts);\n }\n /**\n * Logs out the currently logged in user session. This will remove the\n * session from disk, log out of linked services, and future calls to\n * current
will return null
.\n *\n * @param {object} options\n * @static\n * @returns {Promise} A promise that is resolved when the session is\n * destroyed on the server.\n */\n\n }, {\n key: \"logOut\",\n value: function () {\n var options\n /*: RequestOptions*/\n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var controller = _CoreManager.default.getUserController();\n\n return controller.logOut(options);\n }\n /**\n * Requests a password reset email to be sent to the specified email address\n * associated with the user account. This email allows the user to securely\n * reset their password on the Parse site.\n *\n * @param {string} email The email address associated with the user that\n * forgot their password.\n * @param {object} options\n * @static\n * @returns {Promise}\n */\n\n }, {\n key: \"requestPasswordReset\",\n value: function (email\n /*: string*/\n , options\n /*:: ?: RequestOptions*/\n ) {\n options = options || {};\n var requestOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n requestOptions.useMasterKey = options.useMasterKey;\n }\n\n var controller = _CoreManager.default.getUserController();\n\n return controller.requestPasswordReset(email, requestOptions);\n }\n /**\n * Request an email verification.\n *\n * @param {string} email The email address associated with the user that\n * forgot their password.\n * @param {object} options\n * @static\n * @returns {Promise}\n */\n\n }, {\n key: \"requestEmailVerification\",\n value: function (email\n /*: string*/\n , options\n /*:: ?: RequestOptions*/\n ) {\n options = options || {};\n var requestOptions = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n requestOptions.useMasterKey = options.useMasterKey;\n }\n\n var controller = _CoreManager.default.getUserController();\n\n return controller.requestEmailVerification(email, requestOptions);\n }\n /**\n * Verify whether a given password is the password of the current user.\n *\n * @param {string} username A username to be used for identificaiton\n * @param {string} password A password to be verified\n * @param {object} options\n * @static\n * @returns {Promise} A promise that is fulfilled with a user\n * when the password is correct.\n */\n\n }, {\n key: \"verifyPassword\",\n value: function (username\n /*: string*/\n , password\n /*: string*/\n , options\n /*:: ?: RequestOptions*/\n ) {\n if (typeof username !== 'string') {\n return _promise.default.reject(new _ParseError.default(_ParseError.default.OTHER_CAUSE, 'Username must be a string.'));\n }\n\n if (typeof password !== 'string') {\n return _promise.default.reject(new _ParseError.default(_ParseError.default.OTHER_CAUSE, 'Password must be a string.'));\n }\n\n options = options || {};\n var verificationOption = {};\n\n if (options.hasOwnProperty('useMasterKey')) {\n verificationOption.useMasterKey = options.useMasterKey;\n }\n\n var controller = _CoreManager.default.getUserController();\n\n return controller.verifyPassword(username, password, verificationOption);\n }\n /**\n * Allow someone to define a custom User class without className\n * being rewritten to _User. The default behavior is to rewrite\n * User to _User for legacy reasons. This allows developers to\n * override that behavior.\n *\n * @param {boolean} isAllowed Whether or not to allow custom User class\n * @static\n */\n\n }, {\n key: \"allowCustomUserClass\",\n value: function (isAllowed\n /*: boolean*/\n ) {\n _CoreManager.default.set('PERFORM_USER_REWRITE', !isAllowed);\n }\n /**\n * Allows a legacy application to start using revocable sessions. If the\n * current session token is not revocable, a request will be made for a new,\n * revocable session.\n * It is not necessary to call this method from cloud code unless you are\n * handling user signup or login from the server side. In a cloud code call,\n * this function will not attempt to upgrade the current token.\n *\n * @param {object} options\n * @static\n * @returns {Promise} A promise that is resolved when the process has\n * completed. If a replacement session token is requested, the promise\n * will be resolved after a new token has been fetched.\n */\n\n }, {\n key: \"enableRevocableSession\",\n value: function (options\n /*:: ?: RequestOptions*/\n ) {\n options = options || {};\n\n _CoreManager.default.set('FORCE_REVOCABLE_SESSION', true);\n\n if (canUseCurrentUser) {\n var current = ParseUser.current();\n\n if (current) {\n return current._upgradeToRevocableSession(options);\n }\n }\n\n return _promise.default.resolve();\n }\n /**\n * Enables the use of become or the current user in a server\n * environment. These features are disabled by default, since they depend on\n * global objects that are not memory-safe for most servers.\n *\n * @static\n */\n\n }, {\n key: \"enableUnsafeCurrentUser\",\n value: function () {\n canUseCurrentUser = true;\n }\n /**\n * Disables the use of become or the current user in any environment.\n * These features are disabled on servers by default, since they depend on\n * global objects that are not memory-safe for most servers.\n *\n * @static\n */\n\n }, {\n key: \"disableUnsafeCurrentUser\",\n value: function () {\n canUseCurrentUser = false;\n }\n /**\n * When registering users with {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.User.html#linkWith linkWith} a basic auth provider\n * is automatically created for you.\n *\n * For advanced authentication, you can register an Auth provider to\n * implement custom authentication, deauthentication.\n *\n * @param provider\n * @see {@link https://parseplatform.org/Parse-SDK-JS/api/master/AuthProvider.html AuthProvider}\n * @see {@link https://docs.parseplatform.org/js/guide/#custom-authentication-module Custom Authentication Module}\n * @static\n */\n\n }, {\n key: \"_registerAuthenticationProvider\",\n value: function (provider\n /*: any*/\n ) {\n authProviders[provider.getAuthType()] = provider; // Synchronize the current user with the auth provider.\n\n ParseUser.currentAsync().then(function (current) {\n if (current) {\n current._synchronizeAuthData(provider.getAuthType());\n }\n });\n }\n /**\n * @param provider\n * @param options\n * @param saveOpts\n * @deprecated since 2.9.0 see {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.User.html#logInWith logInWith}\n * @static\n * @returns {Promise}\n */\n\n }, {\n key: \"_logInWith\",\n value: function (provider\n /*: any*/\n , options\n /*: { authData?: AuthData }*/\n , saveOpts\n /*:: ?: FullOptions*/\n ) {\n var user = new this();\n return user.linkWith(provider, options, saveOpts);\n }\n }, {\n key: \"_clearCache\",\n value: function () {\n currentUserCache = null;\n currentUserCacheMatchesDisk = false;\n }\n }, {\n key: \"_setCurrentUserCache\",\n value: function (user\n /*: ParseUser*/\n ) {\n currentUserCache = user;\n }\n }]);\n return ParseUser;\n}(_ParseObject2.default);\n\n_ParseObject2.default.registerSubclass('_User', ParseUser);\n\nvar DefaultController = {\n updateUserOnDisk: function (user) {\n var path = _Storage.default.generatePath(CURRENT_USER_KEY);\n\n var json = user.toJSON();\n delete json.password;\n json.className = '_User';\n var userData = (0, _stringify.default)(json);\n\n if (_CoreManager.default.get('ENCRYPTED_USER')) {\n var crypto = _CoreManager.default.getCryptoController();\n\n userData = crypto.encrypt(json, _CoreManager.default.get('ENCRYPTED_KEY'));\n }\n\n return _Storage.default.setItemAsync(path, userData).then(function () {\n return user;\n });\n },\n removeUserFromDisk: function () {\n var path = _Storage.default.generatePath(CURRENT_USER_KEY);\n\n currentUserCacheMatchesDisk = true;\n currentUserCache = null;\n return _Storage.default.removeItemAsync(path);\n },\n setCurrentUser: function (user) {\n currentUserCache = user;\n\n user._cleanupAuthData();\n\n user._synchronizeAllAuthData();\n\n return DefaultController.updateUserOnDisk(user);\n },\n currentUser: function ()\n /*: ?ParseUser*/\n {\n if (currentUserCache) {\n return currentUserCache;\n }\n\n if (currentUserCacheMatchesDisk) {\n return null;\n }\n\n if (_Storage.default.async()) {\n throw new Error('Cannot call currentUser() when using a platform with an async ' + 'storage system. Call currentUserAsync() instead.');\n }\n\n var path = _Storage.default.generatePath(CURRENT_USER_KEY);\n\n var userData = _Storage.default.getItem(path);\n\n currentUserCacheMatchesDisk = true;\n\n if (!userData) {\n currentUserCache = null;\n return null;\n }\n\n if (_CoreManager.default.get('ENCRYPTED_USER')) {\n var crypto = _CoreManager.default.getCryptoController();\n\n userData = crypto.decrypt(userData, _CoreManager.default.get('ENCRYPTED_KEY'));\n }\n\n userData = JSON.parse(userData);\n\n if (!userData.className) {\n userData.className = '_User';\n }\n\n if (userData._id) {\n if (userData.objectId !== userData._id) {\n userData.objectId = userData._id;\n }\n\n delete userData._id;\n }\n\n if (userData._sessionToken) {\n userData.sessionToken = userData._sessionToken;\n delete userData._sessionToken;\n }\n\n var current = _ParseObject2.default.fromJSON(userData);\n\n currentUserCache = current;\n\n current._synchronizeAllAuthData();\n\n return current;\n },\n currentUserAsync: function ()\n /*: Promise*/\n {\n if (currentUserCache) {\n return _promise.default.resolve(currentUserCache);\n }\n\n if (currentUserCacheMatchesDisk) {\n return _promise.default.resolve(null);\n }\n\n var path = _Storage.default.generatePath(CURRENT_USER_KEY);\n\n return _Storage.default.getItemAsync(path).then(function (userData) {\n currentUserCacheMatchesDisk = true;\n\n if (!userData) {\n currentUserCache = null;\n return _promise.default.resolve(null);\n }\n\n if (_CoreManager.default.get('ENCRYPTED_USER')) {\n var crypto = _CoreManager.default.getCryptoController();\n\n userData = crypto.decrypt(userData.toString(), _CoreManager.default.get('ENCRYPTED_KEY'));\n }\n\n userData = JSON.parse(userData);\n\n if (!userData.className) {\n userData.className = '_User';\n }\n\n if (userData._id) {\n if (userData.objectId !== userData._id) {\n userData.objectId = userData._id;\n }\n\n delete userData._id;\n }\n\n if (userData._sessionToken) {\n userData.sessionToken = userData._sessionToken;\n delete userData._sessionToken;\n }\n\n var current = _ParseObject2.default.fromJSON(userData);\n\n currentUserCache = current;\n\n current._synchronizeAllAuthData();\n\n return _promise.default.resolve(current);\n });\n },\n signUp: function (user\n /*: ParseUser*/\n , attrs\n /*: AttributeMap*/\n , options\n /*: RequestOptions*/\n )\n /*: Promise*/\n {\n var username = attrs && attrs.username || user.get('username');\n var password = attrs && attrs.password || user.get('password');\n\n if (!username || !username.length) {\n return _promise.default.reject(new _ParseError.default(_ParseError.default.OTHER_CAUSE, 'Cannot sign up user with an empty username.'));\n }\n\n if (!password || !password.length) {\n return _promise.default.reject(new _ParseError.default(_ParseError.default.OTHER_CAUSE, 'Cannot sign up user with an empty password.'));\n }\n\n return user.save(attrs, options).then(function () {\n // Clear the password field\n user._finishFetch({\n password: undefined\n });\n\n if (canUseCurrentUser) {\n return DefaultController.setCurrentUser(user);\n }\n\n return user;\n });\n },\n logIn: function (user\n /*: ParseUser*/\n , options\n /*: RequestOptions*/\n )\n /*: Promise*/\n {\n var RESTController = _CoreManager.default.getRESTController();\n\n var stateController = _CoreManager.default.getObjectStateController();\n\n var auth = {\n username: user.get('username'),\n password: user.get('password')\n };\n return RESTController.request(options.usePost ? 'POST' : 'GET', 'login', auth, options).then(function (response) {\n user._migrateId(response.objectId);\n\n user._setExisted(true);\n\n stateController.setPendingOp(user._getStateIdentifier(), 'username', undefined);\n stateController.setPendingOp(user._getStateIdentifier(), 'password', undefined);\n response.password = undefined;\n\n user._finishFetch(response);\n\n if (!canUseCurrentUser) {\n // We can't set the current user, so just return the one we logged in\n return _promise.default.resolve(user);\n }\n\n return DefaultController.setCurrentUser(user);\n });\n },\n become: function (user\n /*: ParseUser*/\n , options\n /*: RequestOptions*/\n )\n /*: Promise*/\n {\n var RESTController = _CoreManager.default.getRESTController();\n\n return RESTController.request('GET', 'users/me', {}, options).then(function (response) {\n user._finishFetch(response);\n\n user._setExisted(true);\n\n return DefaultController.setCurrentUser(user);\n });\n },\n hydrate: function (user\n /*: ParseUser*/\n , userJSON\n /*: AttributeMap*/\n )\n /*: Promise*/\n {\n user._finishFetch(userJSON);\n\n user._setExisted(true);\n\n if (userJSON.sessionToken && canUseCurrentUser) {\n return DefaultController.setCurrentUser(user);\n } else {\n return _promise.default.resolve(user);\n }\n },\n me: function (user\n /*: ParseUser*/\n , options\n /*: RequestOptions*/\n )\n /*: Promise*/\n {\n var RESTController = _CoreManager.default.getRESTController();\n\n return RESTController.request('GET', 'users/me', {}, options).then(function (response) {\n user._finishFetch(response);\n\n user._setExisted(true);\n\n return user;\n });\n },\n logOut: function (options\n /*: RequestOptions*/\n )\n /*: Promise*/\n {\n var RESTController = _CoreManager.default.getRESTController();\n\n if (options.sessionToken) {\n return RESTController.request('POST', 'logout', {}, options);\n }\n\n return DefaultController.currentUserAsync().then(function (currentUser) {\n var path = _Storage.default.generatePath(CURRENT_USER_KEY);\n\n var promise = _Storage.default.removeItemAsync(path);\n\n if (currentUser !== null) {\n var currentSession = currentUser.getSessionToken();\n\n if (currentSession && (0, _isRevocableSession.default)(currentSession)) {\n promise = promise.then(function () {\n return RESTController.request('POST', 'logout', {}, {\n sessionToken: currentSession\n });\n });\n }\n\n currentUser._logOutWithAll();\n\n currentUser._finishFetch({\n sessionToken: undefined\n });\n }\n\n currentUserCacheMatchesDisk = true;\n currentUserCache = null;\n return promise;\n });\n },\n requestPasswordReset: function (email\n /*: string*/\n , options\n /*: RequestOptions*/\n ) {\n var RESTController = _CoreManager.default.getRESTController();\n\n return RESTController.request('POST', 'requestPasswordReset', {\n email: email\n }, options);\n },\n upgradeToRevocableSession: function (user\n /*: ParseUser*/\n , options\n /*: RequestOptions*/\n ) {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var token, RESTController, result, session, current;\n return _regenerator.default.wrap(function (_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n token = user.getSessionToken();\n\n if (token) {\n _context6.next = 3;\n break;\n }\n\n return _context6.abrupt(\"return\", _promise.default.reject(new _ParseError.default(_ParseError.default.SESSION_MISSING, 'Cannot upgrade a user with no session token')));\n\n case 3:\n options.sessionToken = token;\n RESTController = _CoreManager.default.getRESTController();\n _context6.next = 7;\n return RESTController.request('POST', 'upgradeToRevocableSession', {}, options);\n\n case 7:\n result = _context6.sent;\n session = new _ParseSession.default();\n\n session._finishFetch(result);\n\n user._finishFetch({\n sessionToken: session.getSessionToken()\n });\n\n _context6.next = 13;\n return user.isCurrentAsync();\n\n case 13:\n current = _context6.sent;\n\n if (!current) {\n _context6.next = 16;\n break;\n }\n\n return _context6.abrupt(\"return\", DefaultController.setCurrentUser(user));\n\n case 16:\n return _context6.abrupt(\"return\", _promise.default.resolve(user));\n\n case 17:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }))();\n },\n linkWith: function (user\n /*: ParseUser*/\n , authData\n /*: AuthData*/\n , options\n /*: FullOptions*/\n ) {\n return user.save({\n authData: authData\n }, options).then(function () {\n if (canUseCurrentUser) {\n return DefaultController.setCurrentUser(user);\n }\n\n return user;\n });\n },\n verifyPassword: function (username\n /*: string*/\n , password\n /*: string*/\n , options\n /*: RequestOptions*/\n ) {\n var RESTController = _CoreManager.default.getRESTController();\n\n return RESTController.request('GET', 'verifyPassword', {\n username: username,\n password: password\n }, options);\n },\n requestEmailVerification: function (email\n /*: string*/\n , options\n /*: RequestOptions*/\n ) {\n var RESTController = _CoreManager.default.getRESTController();\n\n return RESTController.request('POST', 'verificationEmailRequest', {\n email: email\n }, options);\n }\n};\n\n_CoreManager.default.setUserController(DefaultController);\n\nvar _default = ParseUser;\nexports[\"default\"] = _default;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/ParseUser.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/Push.js":
+/*!*************************************************!*\
+ !*** ../node_modules/parse/lib/browser/Push.js ***!
+ \*************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.getPushStatus = getPushStatus;\nexports.send = send;\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _CoreManager = _interopRequireDefault(__webpack_require__(/*! ./CoreManager */ \"../node_modules/parse/lib/browser/CoreManager.js\"));\n\nvar _ParseQuery = _interopRequireDefault(__webpack_require__(/*! ./ParseQuery */ \"../node_modules/parse/lib/browser/ParseQuery.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n/**\n * Contains functions to deal with Push in Parse.\n *\n * @class Parse.Push\n * @static\n * @hideconstructor\n */\n\n/**\n * Sends a push notification.\n * **Available in Cloud Code only.**\n *\n * See {@link https://docs.parseplatform.org/js/guide/#push-notifications Push Notification Guide}\n *\n * @function send\n * @name Parse.Push.send\n * @param {object} data - The data of the push notification. Valid fields\n * are:\n * \n * channels - An Array of channels to push to. \n * push_time - A Date object for when to send the push. \n * expiration_time - A Date object for when to expire\n * the push. \n * expiration_interval - The seconds from now to expire the push. \n * where - A Parse.Query over Parse.Installation that is used to match\n * a set of installations to push to. \n * data - The data to send as part of the push. \n * \n * @param {object} options Valid options\n * are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * \n * @returns {Promise} A promise that is fulfilled when the push request\n * completes.\n */\n\n\nfunction send(data\n/*: PushData*/\n)\n/*: Promise*/\n{\n var options\n /*:: ?: FullOptions*/\n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (data.where && data.where instanceof _ParseQuery.default) {\n data.where = data.where.toJSON().where;\n }\n\n if (data.push_time && (0, _typeof2.default)(data.push_time) === 'object') {\n data.push_time = data.push_time.toJSON();\n }\n\n if (data.expiration_time && (0, _typeof2.default)(data.expiration_time) === 'object') {\n data.expiration_time = data.expiration_time.toJSON();\n }\n\n if (data.expiration_time && data.expiration_interval) {\n throw new Error('expiration_time and expiration_interval cannot both be set.');\n }\n\n var pushOptions = {\n useMasterKey: true\n };\n\n if (options.hasOwnProperty('useMasterKey')) {\n pushOptions.useMasterKey = options.useMasterKey;\n }\n\n return _CoreManager.default.getPushController().send(data, pushOptions);\n}\n/**\n * Gets push status by Id\n *\n * @function getPushStatus\n * @name Parse.Push.getPushStatus\n * @param {string} pushStatusId The Id of Push Status.\n * @param {object} options Valid options\n * are:\n * useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * \n * @returns {Parse.Object} Status of Push.\n */\n\n\nfunction getPushStatus(pushStatusId\n/*: string*/\n)\n/*: Promise*/\n{\n var options\n /*:: ?: FullOptions*/\n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var pushOptions = {\n useMasterKey: true\n };\n\n if (options.hasOwnProperty('useMasterKey')) {\n pushOptions.useMasterKey = options.useMasterKey;\n }\n\n var query = new _ParseQuery.default('_PushStatus');\n return query.get(pushStatusId, pushOptions);\n}\n\nvar DefaultController = {\n send: function (data\n /*: PushData*/\n , options\n /*:: ?: FullOptions*/\n ) {\n return _CoreManager.default.getRESTController().request('POST', 'push', data, options);\n }\n};\n\n_CoreManager.default.setPushController(DefaultController);\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/Push.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/RESTController.js":
+/*!***********************************************************!*\
+ !*** ../node_modules/parse/lib/browser/RESTController.js ***!
+ \***********************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\nvar _Object$defineProperties = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-properties */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js\");\n\nvar _Object$getOwnPropertyDescriptors = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js\");\n\nvar _forEachInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js\");\n\nvar _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js\");\n\nvar _filterInstanceProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js\");\n\nvar _Object$getOwnPropertySymbols = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js\");\n\nvar _Object$keys = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\");\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ \"../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _setTimeout2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-timeout */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js\"));\n\nvar _includes = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/includes */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js\"));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/json/stringify */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js\"));\n\nvar _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\"));\n\nvar _CoreManager = _interopRequireDefault(__webpack_require__(/*! ./CoreManager */ \"../node_modules/parse/lib/browser/CoreManager.js\"));\n\nvar _ParseError = _interopRequireDefault(__webpack_require__(/*! ./ParseError */ \"../node_modules/parse/lib/browser/ParseError.js\"));\n\nvar _promiseUtils = __webpack_require__(/*! ./promiseUtils */ \"../node_modules/parse/lib/browser/promiseUtils.js\");\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = _Object$keys(object);\n\n if (_Object$getOwnPropertySymbols) {\n var symbols = _Object$getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) {\n return _Object$getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n var _context4;\n\n _forEachInstanceProperty(_context4 = ownKeys(Object(source), true)).call(_context4, function (key) {\n (0, _defineProperty2.default)(target, key, source[key]);\n });\n } else if (_Object$getOwnPropertyDescriptors) {\n _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source));\n } else {\n var _context5;\n\n _forEachInstanceProperty(_context5 = ownKeys(Object(source))).call(_context5, function (key) {\n _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n/* global XMLHttpRequest, XDomainRequest */\n\n\nvar uuidv4 = __webpack_require__(/*! ./uuid */ \"../node_modules/parse/lib/browser/uuid.js\");\n\nvar XHR = null;\n\nif (typeof XMLHttpRequest !== 'undefined') {\n XHR = XMLHttpRequest;\n}\n\nvar useXDomainRequest = false;\n\nif (typeof XDomainRequest !== 'undefined' && !('withCredentials' in new XMLHttpRequest())) {\n useXDomainRequest = true;\n}\n\nfunction ajaxIE9(method\n/*: string*/\n, url\n/*: string*/\n, data\n/*: any*/\n, headers\n/*:: ?: any*/\n, options\n/*:: ?: FullOptions*/\n) {\n return new _promise.default(function (resolve, reject) {\n var xdr = new XDomainRequest();\n\n xdr.onload = function () {\n var response;\n\n try {\n response = JSON.parse(xdr.responseText);\n } catch (e) {\n reject(e);\n }\n\n if (response) {\n resolve({\n response: response\n });\n }\n };\n\n xdr.onerror = xdr.ontimeout = function () {\n // Let's fake a real error message.\n var fakeResponse = {\n responseText: (0, _stringify.default)({\n code: _ParseError.default.X_DOMAIN_REQUEST,\n error: \"IE's XDomainRequest does not supply error info.\"\n })\n };\n reject(fakeResponse);\n };\n\n xdr.onprogress = function () {\n if (options && typeof options.progress === 'function') {\n options.progress(xdr.responseText);\n }\n };\n\n xdr.open(method, url);\n xdr.send(data);\n\n if (options && typeof options.requestTask === 'function') {\n options.requestTask(xdr);\n }\n });\n}\n\nvar RESTController = {\n ajax: function (method\n /*: string*/\n , url\n /*: string*/\n , data\n /*: any*/\n , headers\n /*:: ?: any*/\n , options\n /*:: ?: FullOptions*/\n ) {\n var _context;\n\n if (useXDomainRequest) {\n return ajaxIE9(method, url, data, headers, options);\n }\n\n var promise = (0, _promiseUtils.resolvingPromise)();\n var isIdempotent = _CoreManager.default.get('IDEMPOTENCY') && (0, _includes.default)(_context = ['POST', 'PUT']).call(_context, method);\n var requestId = isIdempotent ? uuidv4() : '';\n var attempts = 0;\n\n var dispatch = function dispatch() {\n if (XHR == null) {\n throw new Error('Cannot make a request: No definition of XMLHttpRequest was found.');\n }\n\n var handled = false;\n var xhr = new XHR();\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState !== 4 || handled || xhr._aborted) {\n return;\n }\n\n handled = true;\n\n if (xhr.status >= 200 && xhr.status < 300) {\n var response;\n\n try {\n response = JSON.parse(xhr.responseText);\n\n if (typeof xhr.getResponseHeader === 'function') {\n var _context2, _context3;\n\n if ((0, _includes.default)(_context2 = xhr.getAllResponseHeaders() || '').call(_context2, 'x-parse-job-status-id: ')) {\n response = xhr.getResponseHeader('x-parse-job-status-id');\n }\n\n if ((0, _includes.default)(_context3 = xhr.getAllResponseHeaders() || '').call(_context3, 'x-parse-push-status-id: ')) {\n response = xhr.getResponseHeader('x-parse-push-status-id');\n }\n }\n } catch (e) {\n promise.reject(e.toString());\n }\n\n if (response) {\n promise.resolve({\n response: response,\n status: xhr.status,\n xhr: xhr\n });\n }\n } else if (xhr.status >= 500 || xhr.status === 0) {\n // retry on 5XX or node-xmlhttprequest error\n if (++attempts < _CoreManager.default.get('REQUEST_ATTEMPT_LIMIT')) {\n // Exponentially-growing random delay\n var delay = Math.round(Math.random() * 125 * Math.pow(2, attempts));\n (0, _setTimeout2.default)(dispatch, delay);\n } else if (xhr.status === 0) {\n promise.reject('Unable to connect to the Parse API');\n } else {\n // After the retry limit is reached, fail\n promise.reject(xhr);\n }\n } else {\n promise.reject(xhr);\n }\n };\n\n headers = headers || {};\n\n if (typeof headers['Content-Type'] !== 'string') {\n headers['Content-Type'] = 'text/plain'; // Avoid pre-flight\n }\n\n if (_CoreManager.default.get('IS_NODE')) {\n headers['User-Agent'] = 'Parse/' + _CoreManager.default.get('VERSION') + ' (NodeJS ' + process.versions.node + ')';\n }\n\n if (isIdempotent) {\n headers['X-Parse-Request-Id'] = requestId;\n }\n\n if (_CoreManager.default.get('SERVER_AUTH_TYPE') && _CoreManager.default.get('SERVER_AUTH_TOKEN')) {\n headers['Authorization'] = _CoreManager.default.get('SERVER_AUTH_TYPE') + ' ' + _CoreManager.default.get('SERVER_AUTH_TOKEN');\n }\n\n var customHeaders = _CoreManager.default.get('REQUEST_HEADERS');\n\n for (var key in customHeaders) {\n headers[key] = customHeaders[key];\n }\n\n function handleProgress(type, event) {\n if (options && typeof options.progress === 'function') {\n if (event.lengthComputable) {\n options.progress(event.loaded / event.total, event.loaded, event.total, {\n type: type\n });\n } else {\n options.progress(null, null, null, {\n type: type\n });\n }\n }\n }\n\n xhr.onprogress = function (event) {\n handleProgress('download', event);\n };\n\n if (xhr.upload) {\n xhr.upload.onprogress = function (event) {\n handleProgress('upload', event);\n };\n }\n\n xhr.open(method, url, true);\n\n for (var h in headers) {\n xhr.setRequestHeader(h, headers[h]);\n }\n\n xhr.onabort = function () {\n promise.resolve({\n response: {\n results: []\n },\n status: 0,\n xhr: xhr\n });\n };\n\n xhr.send(data);\n\n if (options && typeof options.requestTask === 'function') {\n options.requestTask(xhr);\n }\n };\n\n dispatch();\n return promise;\n },\n request: function (method\n /*: string*/\n , path\n /*: string*/\n , data\n /*: mixed*/\n , options\n /*:: ?: RequestOptions*/\n ) {\n options = options || {};\n\n var url = _CoreManager.default.get('SERVER_URL');\n\n if (url[url.length - 1] !== '/') {\n url += '/';\n }\n\n url += path;\n var payload = {};\n\n if (data && (0, _typeof2.default)(data) === 'object') {\n for (var k in data) {\n payload[k] = data[k];\n }\n } // Add context\n\n\n var context = options.context;\n\n if (context !== undefined) {\n payload._context = context;\n }\n\n if (method !== 'POST') {\n payload._method = method;\n method = 'POST';\n }\n\n payload._ApplicationId = _CoreManager.default.get('APPLICATION_ID');\n\n var jsKey = _CoreManager.default.get('JAVASCRIPT_KEY');\n\n if (jsKey) {\n payload._JavaScriptKey = jsKey;\n }\n\n payload._ClientVersion = _CoreManager.default.get('VERSION');\n var useMasterKey = options.useMasterKey;\n\n if (typeof useMasterKey === 'undefined') {\n useMasterKey = _CoreManager.default.get('USE_MASTER_KEY');\n }\n\n if (useMasterKey) {\n if (_CoreManager.default.get('MASTER_KEY')) {\n delete payload._JavaScriptKey;\n payload._MasterKey = _CoreManager.default.get('MASTER_KEY');\n } else {\n throw new Error('Cannot use the Master Key, it has not been provided.');\n }\n }\n\n if (_CoreManager.default.get('FORCE_REVOCABLE_SESSION')) {\n payload._RevocableSession = '1';\n }\n\n var installationId = options.installationId;\n var installationIdPromise;\n\n if (installationId && typeof installationId === 'string') {\n installationIdPromise = _promise.default.resolve(installationId);\n } else {\n var installationController = _CoreManager.default.getInstallationController();\n\n installationIdPromise = installationController.currentInstallationId();\n }\n\n return installationIdPromise.then(function (iid) {\n payload._InstallationId = iid;\n\n var userController = _CoreManager.default.getUserController();\n\n if (options && typeof options.sessionToken === 'string') {\n return _promise.default.resolve(options.sessionToken);\n } else if (userController) {\n return userController.currentUserAsync().then(function (user) {\n if (user) {\n return _promise.default.resolve(user.getSessionToken());\n }\n\n return _promise.default.resolve(null);\n });\n }\n\n return _promise.default.resolve(null);\n }).then(function (token) {\n if (token) {\n payload._SessionToken = token;\n }\n\n var payloadString = (0, _stringify.default)(payload);\n return RESTController.ajax(method, url, payloadString, {}, options).then(function (_ref) {\n var response = _ref.response,\n status = _ref.status;\n\n if (options.returnStatus) {\n return _objectSpread(_objectSpread({}, response), {}, {\n _status: status\n });\n } else {\n return response;\n }\n });\n }).catch(RESTController.handleError);\n },\n handleError: function (response) {\n // Transform the error into an instance of ParseError by trying to parse\n // the error string as JSON\n var error;\n\n if (response && response.responseText) {\n try {\n var errorJSON = JSON.parse(response.responseText);\n error = new _ParseError.default(errorJSON.code, errorJSON.error);\n } catch (e) {\n // If we fail to parse the error text, that's okay.\n error = new _ParseError.default(_ParseError.default.INVALID_JSON, 'Received an error with invalid JSON from Parse: ' + response.responseText);\n }\n } else {\n var message = response.message ? response.message : response;\n error = new _ParseError.default(_ParseError.default.CONNECTION_FAILED, 'XMLHttpRequest failed: ' + (0, _stringify.default)(message));\n }\n\n return _promise.default.reject(error);\n },\n _setXHR: function (xhr\n /*: any*/\n ) {\n XHR = xhr;\n },\n _getXHR: function () {\n return XHR;\n }\n};\nmodule.exports = RESTController;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/RESTController.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/SingleInstanceStateController.js":
+/*!**************************************************************************!*\
+ !*** ../node_modules/parse/lib/browser/SingleInstanceStateController.js ***!
+ \**************************************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\nvar _typeof = __webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\");\n\nvar _WeakMap = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/weak-map */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/weak-map.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.clearAllState = clearAllState;\nexports.commitServerChanges = commitServerChanges;\nexports.duplicateState = duplicateState;\nexports.enqueueTask = enqueueTask;\nexports.estimateAttribute = estimateAttribute;\nexports.estimateAttributes = estimateAttributes;\nexports.getObjectCache = getObjectCache;\nexports.getPendingOps = getPendingOps;\nexports.getServerData = getServerData;\nexports.getState = getState;\nexports.initializeState = initializeState;\nexports.mergeFirstPendingState = mergeFirstPendingState;\nexports.popPendingState = popPendingState;\nexports.pushPendingState = pushPendingState;\nexports.removeState = removeState;\nexports.setPendingOp = setPendingOp;\nexports.setServerData = setServerData;\n\nvar ObjectStateMutations = _interopRequireWildcard(__webpack_require__(/*! ./ObjectStateMutations */ \"../node_modules/parse/lib/browser/ObjectStateMutations.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof _WeakMap !== \"function\") return null;\n var cacheBabelInterop = new _WeakMap();\n var cacheNodeInterop = new _WeakMap();\n return (_getRequireWildcardCache = function (nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = _Object$defineProperty && _Object$getOwnPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n _Object$defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj.default = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n\nvar objectState\n/*: {\n [className: string]: {\n [id: string]: State,\n },\n}*/\n= {};\n\nfunction getState(obj\n/*: ObjectIdentifier*/\n)\n/*: ?State*/\n{\n var classData = objectState[obj.className];\n\n if (classData) {\n return classData[obj.id] || null;\n }\n\n return null;\n}\n\nfunction initializeState(obj\n/*: ObjectIdentifier*/\n, initial\n/*:: ?: State*/\n)\n/*: State*/\n{\n var state = getState(obj);\n\n if (state) {\n return state;\n }\n\n if (!objectState[obj.className]) {\n objectState[obj.className] = {};\n }\n\n if (!initial) {\n initial = ObjectStateMutations.defaultState();\n }\n\n state = objectState[obj.className][obj.id] = initial;\n return state;\n}\n\nfunction removeState(obj\n/*: ObjectIdentifier*/\n)\n/*: ?State*/\n{\n var state = getState(obj);\n\n if (state === null) {\n return null;\n }\n\n delete objectState[obj.className][obj.id];\n return state;\n}\n\nfunction getServerData(obj\n/*: ObjectIdentifier*/\n)\n/*: AttributeMap*/\n{\n var state = getState(obj);\n\n if (state) {\n return state.serverData;\n }\n\n return {};\n}\n\nfunction setServerData(obj\n/*: ObjectIdentifier*/\n, attributes\n/*: AttributeMap*/\n) {\n var serverData = initializeState(obj).serverData;\n ObjectStateMutations.setServerData(serverData, attributes);\n}\n\nfunction getPendingOps(obj\n/*: ObjectIdentifier*/\n)\n/*: Array*/\n{\n var state = getState(obj);\n\n if (state) {\n return state.pendingOps;\n }\n\n return [{}];\n}\n\nfunction setPendingOp(obj\n/*: ObjectIdentifier*/\n, attr\n/*: string*/\n, op\n/*: ?Op*/\n) {\n var pendingOps = initializeState(obj).pendingOps;\n ObjectStateMutations.setPendingOp(pendingOps, attr, op);\n}\n\nfunction pushPendingState(obj\n/*: ObjectIdentifier*/\n) {\n var pendingOps = initializeState(obj).pendingOps;\n ObjectStateMutations.pushPendingState(pendingOps);\n}\n\nfunction popPendingState(obj\n/*: ObjectIdentifier*/\n)\n/*: OpsMap*/\n{\n var pendingOps = initializeState(obj).pendingOps;\n return ObjectStateMutations.popPendingState(pendingOps);\n}\n\nfunction mergeFirstPendingState(obj\n/*: ObjectIdentifier*/\n) {\n var pendingOps = getPendingOps(obj);\n ObjectStateMutations.mergeFirstPendingState(pendingOps);\n}\n\nfunction getObjectCache(obj\n/*: ObjectIdentifier*/\n)\n/*: ObjectCache*/\n{\n var state = getState(obj);\n\n if (state) {\n return state.objectCache;\n }\n\n return {};\n}\n\nfunction estimateAttribute(obj\n/*: ObjectIdentifier*/\n, attr\n/*: string*/\n)\n/*: mixed*/\n{\n var serverData = getServerData(obj);\n var pendingOps = getPendingOps(obj);\n return ObjectStateMutations.estimateAttribute(serverData, pendingOps, obj.className, obj.id, attr);\n}\n\nfunction estimateAttributes(obj\n/*: ObjectIdentifier*/\n)\n/*: AttributeMap*/\n{\n var serverData = getServerData(obj);\n var pendingOps = getPendingOps(obj);\n return ObjectStateMutations.estimateAttributes(serverData, pendingOps, obj.className, obj.id);\n}\n\nfunction commitServerChanges(obj\n/*: ObjectIdentifier*/\n, changes\n/*: AttributeMap*/\n) {\n var state = initializeState(obj);\n ObjectStateMutations.commitServerChanges(state.serverData, state.objectCache, changes);\n}\n\nfunction enqueueTask(obj\n/*: ObjectIdentifier*/\n, task\n/*: () => Promise*/\n)\n/*: Promise*/\n{\n var state = initializeState(obj);\n return state.tasks.enqueue(task);\n}\n\nfunction clearAllState() {\n objectState = {};\n}\n\nfunction duplicateState(source\n/*: { id: string }*/\n, dest\n/*: { id: string }*/\n) {\n dest.id = source.id;\n}\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/SingleInstanceStateController.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/Storage.js":
+/*!****************************************************!*\
+ !*** ../node_modules/parse/lib/browser/Storage.js ***!
+ \****************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\"));\n\nvar _CoreManager = _interopRequireDefault(__webpack_require__(/*! ./CoreManager */ \"../node_modules/parse/lib/browser/CoreManager.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n\nvar Storage = {\n async: function ()\n /*: boolean*/\n {\n var controller = _CoreManager.default.getStorageController();\n\n return !!controller.async;\n },\n getItem: function (path\n /*: string*/\n )\n /*: ?string*/\n {\n var controller = _CoreManager.default.getStorageController();\n\n if (controller.async === 1) {\n throw new Error('Synchronous storage is not supported by the current storage controller');\n }\n\n return controller.getItem(path);\n },\n getItemAsync: function (path\n /*: string*/\n )\n /*: Promise*/\n {\n var controller = _CoreManager.default.getStorageController();\n\n if (controller.async === 1) {\n return controller.getItemAsync(path);\n }\n\n return _promise.default.resolve(controller.getItem(path));\n },\n setItem: function (path\n /*: string*/\n , value\n /*: string*/\n )\n /*: void*/\n {\n var controller = _CoreManager.default.getStorageController();\n\n if (controller.async === 1) {\n throw new Error('Synchronous storage is not supported by the current storage controller');\n }\n\n return controller.setItem(path, value);\n },\n setItemAsync: function (path\n /*: string*/\n , value\n /*: string*/\n )\n /*: Promise*/\n {\n var controller = _CoreManager.default.getStorageController();\n\n if (controller.async === 1) {\n return controller.setItemAsync(path, value);\n }\n\n return _promise.default.resolve(controller.setItem(path, value));\n },\n removeItem: function (path\n /*: string*/\n )\n /*: void*/\n {\n var controller = _CoreManager.default.getStorageController();\n\n if (controller.async === 1) {\n throw new Error('Synchronous storage is not supported by the current storage controller');\n }\n\n return controller.removeItem(path);\n },\n removeItemAsync: function (path\n /*: string*/\n )\n /*: Promise*/\n {\n var controller = _CoreManager.default.getStorageController();\n\n if (controller.async === 1) {\n return controller.removeItemAsync(path);\n }\n\n return _promise.default.resolve(controller.removeItem(path));\n },\n getAllKeys: function ()\n /*: Array*/\n {\n var controller = _CoreManager.default.getStorageController();\n\n if (controller.async === 1) {\n throw new Error('Synchronous storage is not supported by the current storage controller');\n }\n\n return controller.getAllKeys();\n },\n getAllKeysAsync: function ()\n /*: Promise>*/\n {\n var controller = _CoreManager.default.getStorageController();\n\n if (controller.async === 1) {\n return controller.getAllKeysAsync();\n }\n\n return _promise.default.resolve(controller.getAllKeys());\n },\n generatePath: function (path\n /*: string*/\n )\n /*: string*/\n {\n if (!_CoreManager.default.get('APPLICATION_ID')) {\n throw new Error('You need to call Parse.initialize before using Parse.');\n }\n\n if (typeof path !== 'string') {\n throw new Error('Tried to get a Storage path that was not a String.');\n }\n\n if (path[0] === '/') {\n path = path.substr(1);\n }\n\n return 'Parse/' + _CoreManager.default.get('APPLICATION_ID') + '/' + path;\n },\n _clear: function () {\n var controller = _CoreManager.default.getStorageController();\n\n if (controller.hasOwnProperty('clear')) {\n controller.clear();\n }\n }\n};\nmodule.exports = Storage;\n\n_CoreManager.default.setStorageController(__webpack_require__(/*! ./StorageController.browser */ \"../node_modules/parse/lib/browser/StorageController.browser.js\"));\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/Storage.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/StorageController.browser.js":
+/*!**********************************************************************!*\
+ !*** ../node_modules/parse/lib/browser/StorageController.browser.js ***!
+ \**********************************************************************/
+/***/ ((module) => {
+
+"use strict";
+eval("\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n * @private\n */\n\n/* global localStorage */\n\nvar StorageController = {\n async: 0,\n getItem: function (path\n /*: string*/\n )\n /*: ?string*/\n {\n return localStorage.getItem(path);\n },\n setItem: function (path\n /*: string*/\n , value\n /*: string*/\n ) {\n try {\n localStorage.setItem(path, value);\n } catch (e) {\n // Quota exceeded, possibly due to Safari Private Browsing mode\n console.log(e.message);\n }\n },\n removeItem: function (path\n /*: string*/\n ) {\n localStorage.removeItem(path);\n },\n getAllKeys: function () {\n var keys = [];\n\n for (var i = 0; i < localStorage.length; i += 1) {\n keys.push(localStorage.key(i));\n }\n\n return keys;\n },\n clear: function () {\n localStorage.clear();\n }\n};\nmodule.exports = StorageController;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/StorageController.browser.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/TaskQueue.js":
+/*!******************************************************!*\
+ !*** ../node_modules/parse/lib/browser/TaskQueue.js ***!
+ \******************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/classCallCheck */ \"../node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/createClass */ \"../node_modules/@babel/runtime-corejs3/helpers/createClass.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/defineProperty */ \"../node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\"));\n\nvar _promiseUtils = __webpack_require__(/*! ./promiseUtils */ \"../node_modules/parse/lib/browser/promiseUtils.js\");\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n\nvar TaskQueue = /*#__PURE__*/function () {\n function TaskQueue() {\n (0, _classCallCheck2.default)(this, TaskQueue);\n (0, _defineProperty2.default)(this, \"queue\", void 0);\n this.queue = [];\n }\n\n (0, _createClass2.default)(TaskQueue, [{\n key: \"enqueue\",\n value: function (task\n /*: () => Promise*/\n )\n /*: Promise*/\n {\n var _this = this;\n\n var taskComplete = new _promiseUtils.resolvingPromise();\n this.queue.push({\n task: task,\n _completion: taskComplete\n });\n\n if (this.queue.length === 1) {\n task().then(function () {\n _this._dequeue();\n\n taskComplete.resolve();\n }, function (error) {\n _this._dequeue();\n\n taskComplete.reject(error);\n });\n }\n\n return taskComplete;\n }\n }, {\n key: \"_dequeue\",\n value: function () {\n var _this2 = this;\n\n this.queue.shift();\n\n if (this.queue.length) {\n var next = this.queue[0];\n next.task().then(function () {\n _this2._dequeue();\n\n next._completion.resolve();\n }, function (error) {\n _this2._dequeue();\n\n next._completion.reject(error);\n });\n }\n }\n }]);\n return TaskQueue;\n}();\n\nmodule.exports = TaskQueue;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/TaskQueue.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/UniqueInstanceStateController.js":
+/*!**************************************************************************!*\
+ !*** ../node_modules/parse/lib/browser/UniqueInstanceStateController.js ***!
+ \**************************************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\nvar _typeof = __webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\");\n\nvar _WeakMap2 = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/weak-map */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/weak-map.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.clearAllState = clearAllState;\nexports.commitServerChanges = commitServerChanges;\nexports.duplicateState = duplicateState;\nexports.enqueueTask = enqueueTask;\nexports.estimateAttribute = estimateAttribute;\nexports.estimateAttributes = estimateAttributes;\nexports.getObjectCache = getObjectCache;\nexports.getPendingOps = getPendingOps;\nexports.getServerData = getServerData;\nexports.getState = getState;\nexports.initializeState = initializeState;\nexports.mergeFirstPendingState = mergeFirstPendingState;\nexports.popPendingState = popPendingState;\nexports.pushPendingState = pushPendingState;\nexports.removeState = removeState;\nexports.setPendingOp = setPendingOp;\nexports.setServerData = setServerData;\n\nvar _weakMap = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/weak-map */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/weak-map.js\"));\n\nvar ObjectStateMutations = _interopRequireWildcard(__webpack_require__(/*! ./ObjectStateMutations */ \"../node_modules/parse/lib/browser/ObjectStateMutations.js\"));\n\nvar _TaskQueue = _interopRequireDefault(__webpack_require__(/*! ./TaskQueue */ \"../node_modules/parse/lib/browser/TaskQueue.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof _WeakMap2 !== \"function\") return null;\n var cacheBabelInterop = new _WeakMap2();\n var cacheNodeInterop = new _WeakMap2();\n return (_getRequireWildcardCache = function (nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = _Object$defineProperty && _Object$getOwnPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n _Object$defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj.default = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n\nvar objectState = new _weakMap.default();\n\nfunction getState(obj\n/*: ParseObject*/\n)\n/*: ?State*/\n{\n var classData = objectState.get(obj);\n return classData || null;\n}\n\nfunction initializeState(obj\n/*: ParseObject*/\n, initial\n/*:: ?: State*/\n)\n/*: State*/\n{\n var state = getState(obj);\n\n if (state) {\n return state;\n }\n\n if (!initial) {\n initial = {\n serverData: {},\n pendingOps: [{}],\n objectCache: {},\n tasks: new _TaskQueue.default(),\n existed: false\n };\n }\n\n state = initial;\n objectState.set(obj, state);\n return state;\n}\n\nfunction removeState(obj\n/*: ParseObject*/\n)\n/*: ?State*/\n{\n var state = getState(obj);\n\n if (state === null) {\n return null;\n }\n\n objectState.delete(obj);\n return state;\n}\n\nfunction getServerData(obj\n/*: ParseObject*/\n)\n/*: AttributeMap*/\n{\n var state = getState(obj);\n\n if (state) {\n return state.serverData;\n }\n\n return {};\n}\n\nfunction setServerData(obj\n/*: ParseObject*/\n, attributes\n/*: AttributeMap*/\n) {\n var serverData = initializeState(obj).serverData;\n ObjectStateMutations.setServerData(serverData, attributes);\n}\n\nfunction getPendingOps(obj\n/*: ParseObject*/\n)\n/*: Array*/\n{\n var state = getState(obj);\n\n if (state) {\n return state.pendingOps;\n }\n\n return [{}];\n}\n\nfunction setPendingOp(obj\n/*: ParseObject*/\n, attr\n/*: string*/\n, op\n/*: ?Op*/\n) {\n var pendingOps = initializeState(obj).pendingOps;\n ObjectStateMutations.setPendingOp(pendingOps, attr, op);\n}\n\nfunction pushPendingState(obj\n/*: ParseObject*/\n) {\n var pendingOps = initializeState(obj).pendingOps;\n ObjectStateMutations.pushPendingState(pendingOps);\n}\n\nfunction popPendingState(obj\n/*: ParseObject*/\n)\n/*: OpsMap*/\n{\n var pendingOps = initializeState(obj).pendingOps;\n return ObjectStateMutations.popPendingState(pendingOps);\n}\n\nfunction mergeFirstPendingState(obj\n/*: ParseObject*/\n) {\n var pendingOps = getPendingOps(obj);\n ObjectStateMutations.mergeFirstPendingState(pendingOps);\n}\n\nfunction getObjectCache(obj\n/*: ParseObject*/\n)\n/*: ObjectCache*/\n{\n var state = getState(obj);\n\n if (state) {\n return state.objectCache;\n }\n\n return {};\n}\n\nfunction estimateAttribute(obj\n/*: ParseObject*/\n, attr\n/*: string*/\n)\n/*: mixed*/\n{\n var serverData = getServerData(obj);\n var pendingOps = getPendingOps(obj);\n return ObjectStateMutations.estimateAttribute(serverData, pendingOps, obj.className, obj.id, attr);\n}\n\nfunction estimateAttributes(obj\n/*: ParseObject*/\n)\n/*: AttributeMap*/\n{\n var serverData = getServerData(obj);\n var pendingOps = getPendingOps(obj);\n return ObjectStateMutations.estimateAttributes(serverData, pendingOps, obj.className, obj.id);\n}\n\nfunction commitServerChanges(obj\n/*: ParseObject*/\n, changes\n/*: AttributeMap*/\n) {\n var state = initializeState(obj);\n ObjectStateMutations.commitServerChanges(state.serverData, state.objectCache, changes);\n}\n\nfunction enqueueTask(obj\n/*: ParseObject*/\n, task\n/*: () => Promise*/\n)\n/*: Promise*/\n{\n var state = initializeState(obj);\n return state.tasks.enqueue(task);\n}\n\nfunction duplicateState(source\n/*: ParseObject*/\n, dest\n/*: ParseObject*/\n)\n/*: void*/\n{\n var oldState = initializeState(source);\n var newState = initializeState(dest);\n\n for (var key in oldState.serverData) {\n newState.serverData[key] = oldState.serverData[key];\n }\n\n for (var index = 0; index < oldState.pendingOps.length; index++) {\n for (var _key in oldState.pendingOps[index]) {\n newState.pendingOps[index][_key] = oldState.pendingOps[index][_key];\n }\n }\n\n for (var _key2 in oldState.objectCache) {\n newState.objectCache[_key2] = oldState.objectCache[_key2];\n }\n\n newState.existed = oldState.existed;\n}\n\nfunction clearAllState() {\n objectState = new _weakMap.default();\n}\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/UniqueInstanceStateController.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/arrayContainsObject.js":
+/*!****************************************************************!*\
+ !*** ../node_modules/parse/lib/browser/arrayContainsObject.js ***!
+ \****************************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = arrayContainsObject;\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/index-of */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\"));\n\nvar _ParseObject = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n\nfunction arrayContainsObject(array\n/*: Array*/\n, object\n/*: ParseObject*/\n)\n/*: boolean*/\n{\n if ((0, _indexOf.default)(array).call(array, object) > -1) {\n return true;\n }\n\n for (var i = 0; i < array.length; i++) {\n if (array[i] instanceof _ParseObject.default && array[i].className === object.className && array[i]._getId() === object._getId()) {\n return true;\n }\n }\n\n return false;\n}\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/arrayContainsObject.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/canBeSerialized.js":
+/*!************************************************************!*\
+ !*** ../node_modules/parse/lib/browser/canBeSerialized.js ***!
+ \************************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = canBeSerialized;\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _ParseFile = _interopRequireDefault(__webpack_require__(/*! ./ParseFile */ \"../node_modules/parse/lib/browser/ParseFile.js\"));\n\nvar _ParseObject = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n\nvar _ParseRelation = _interopRequireDefault(__webpack_require__(/*! ./ParseRelation */ \"../node_modules/parse/lib/browser/ParseRelation.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n\nfunction canBeSerialized(obj\n/*: ParseObject*/\n)\n/*: boolean*/\n{\n if (!(obj instanceof _ParseObject.default)) {\n return true;\n }\n\n var attributes = obj.attributes;\n\n for (var attr in attributes) {\n var val = attributes[attr];\n\n if (!canBeSerializedHelper(val)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction canBeSerializedHelper(value\n/*: any*/\n)\n/*: boolean*/\n{\n if ((0, _typeof2.default)(value) !== 'object') {\n return true;\n }\n\n if (value instanceof _ParseRelation.default) {\n return true;\n }\n\n if (value instanceof _ParseObject.default) {\n return !!value.id;\n }\n\n if (value instanceof _ParseFile.default) {\n if (value.url()) {\n return true;\n }\n\n return false;\n }\n\n if ((0, _isArray.default)(value)) {\n for (var i = 0; i < value.length; i++) {\n if (!canBeSerializedHelper(value[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n for (var k in value) {\n if (!canBeSerializedHelper(value[k])) {\n return false;\n }\n }\n\n return true;\n}\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/canBeSerialized.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/decode.js":
+/*!***************************************************!*\
+ !*** ../node_modules/parse/lib/browser/decode.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = decode;\n\nvar _forEach = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js\"));\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _ParseACL = _interopRequireDefault(__webpack_require__(/*! ./ParseACL */ \"../node_modules/parse/lib/browser/ParseACL.js\"));\n\nvar _ParseFile = _interopRequireDefault(__webpack_require__(/*! ./ParseFile */ \"../node_modules/parse/lib/browser/ParseFile.js\"));\n\nvar _ParseGeoPoint = _interopRequireDefault(__webpack_require__(/*! ./ParseGeoPoint */ \"../node_modules/parse/lib/browser/ParseGeoPoint.js\"));\n\nvar _ParsePolygon = _interopRequireDefault(__webpack_require__(/*! ./ParsePolygon */ \"../node_modules/parse/lib/browser/ParsePolygon.js\"));\n\nvar _ParseObject = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n\nvar _ParseOp = __webpack_require__(/*! ./ParseOp */ \"../node_modules/parse/lib/browser/ParseOp.js\");\n\nvar _ParseRelation = _interopRequireDefault(__webpack_require__(/*! ./ParseRelation */ \"../node_modules/parse/lib/browser/ParseRelation.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n// eslint-disable-line no-unused-vars\n\n\nfunction decode(value\n/*: any*/\n)\n/*: any*/\n{\n if (value === null || (0, _typeof2.default)(value) !== 'object' || value instanceof Date) {\n return value;\n }\n\n if ((0, _isArray.default)(value)) {\n var dup = [];\n (0, _forEach.default)(value).call(value, function (v, i) {\n dup[i] = decode(v);\n });\n return dup;\n }\n\n if (typeof value.__op === 'string') {\n return (0, _ParseOp.opFromJSON)(value);\n }\n\n if (value.__type === 'Pointer' && value.className) {\n return _ParseObject.default.fromJSON(value);\n }\n\n if (value.__type === 'Object' && value.className) {\n return _ParseObject.default.fromJSON(value);\n }\n\n if (value.__type === 'Relation') {\n // The parent and key fields will be populated by the parent\n var relation = new _ParseRelation.default(null, null);\n relation.targetClassName = value.className;\n return relation;\n }\n\n if (value.__type === 'Date') {\n return new Date(value.iso);\n }\n\n if (value.__type === 'File') {\n return _ParseFile.default.fromJSON(value);\n }\n\n if (value.__type === 'GeoPoint') {\n return new _ParseGeoPoint.default({\n latitude: value.latitude,\n longitude: value.longitude\n });\n }\n\n if (value.__type === 'Polygon') {\n return new _ParsePolygon.default(value.coordinates);\n }\n\n var copy = {};\n\n for (var k in value) {\n copy[k] = decode(value[k]);\n }\n\n return copy;\n}\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/decode.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/encode.js":
+/*!***************************************************!*\
+ !*** ../node_modules/parse/lib/browser/encode.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = _default;\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _map = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js\"));\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _concat = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/concat */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js\"));\n\nvar _startsWith = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/starts-with */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js\"));\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\"));\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/index-of */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\"));\n\nvar _ParseACL = _interopRequireDefault(__webpack_require__(/*! ./ParseACL */ \"../node_modules/parse/lib/browser/ParseACL.js\"));\n\nvar _ParseFile = _interopRequireDefault(__webpack_require__(/*! ./ParseFile */ \"../node_modules/parse/lib/browser/ParseFile.js\"));\n\nvar _ParseGeoPoint = _interopRequireDefault(__webpack_require__(/*! ./ParseGeoPoint */ \"../node_modules/parse/lib/browser/ParseGeoPoint.js\"));\n\nvar _ParsePolygon = _interopRequireDefault(__webpack_require__(/*! ./ParsePolygon */ \"../node_modules/parse/lib/browser/ParsePolygon.js\"));\n\nvar _ParseObject = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n\nvar _ParseOp = __webpack_require__(/*! ./ParseOp */ \"../node_modules/parse/lib/browser/ParseOp.js\");\n\nvar _ParseRelation = _interopRequireDefault(__webpack_require__(/*! ./ParseRelation */ \"../node_modules/parse/lib/browser/ParseRelation.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n\nfunction encode(value\n/*: mixed*/\n, disallowObjects\n/*: boolean*/\n, forcePointers\n/*: boolean*/\n, seen\n/*: Array*/\n, offline\n/*: boolean*/\n)\n/*: any*/\n{\n if (value instanceof _ParseObject.default) {\n if (disallowObjects) {\n throw new Error('Parse Objects not allowed here');\n }\n\n var seenEntry = value.id ? value.className + ':' + value.id : value;\n\n if (forcePointers || !seen || (0, _indexOf.default)(seen).call(seen, seenEntry) > -1 || value.dirty() || (0, _keys.default)(value._getServerData()).length < 1) {\n var _context;\n\n if (offline && (0, _startsWith.default)(_context = value._getId()).call(_context, 'local')) {\n return value.toOfflinePointer();\n }\n\n return value.toPointer();\n }\n\n seen = (0, _concat.default)(seen).call(seen, seenEntry);\n return value._toFullJSON(seen, offline);\n }\n\n if (value instanceof _ParseOp.Op || value instanceof _ParseACL.default || value instanceof _ParseGeoPoint.default || value instanceof _ParsePolygon.default || value instanceof _ParseRelation.default) {\n return value.toJSON();\n }\n\n if (value instanceof _ParseFile.default) {\n if (!value.url()) {\n throw new Error('Tried to encode an unsaved file.');\n }\n\n return value.toJSON();\n }\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n if (isNaN(value)) {\n throw new Error('Tried to encode an invalid date.');\n }\n\n return {\n __type: 'Date',\n iso: value\n /*: any*/\n .toJSON()\n };\n }\n\n if (Object.prototype.toString.call(value) === '[object RegExp]' && typeof value.source === 'string') {\n return value.source;\n }\n\n if ((0, _isArray.default)(value)) {\n return (0, _map.default)(value).call(value, function (v) {\n return encode(v, disallowObjects, forcePointers, seen, offline);\n });\n }\n\n if (value && (0, _typeof2.default)(value) === 'object') {\n var output = {};\n\n for (var k in value) {\n output[k] = encode(value[k], disallowObjects, forcePointers, seen, offline);\n }\n\n return output;\n }\n\n return value;\n}\n\nfunction _default(value\n/*: mixed*/\n, disallowObjects\n/*:: ?: boolean*/\n, forcePointers\n/*:: ?: boolean*/\n, seen\n/*:: ?: Array*/\n, offline\n/*:: ?: boolean*/\n)\n/*: any*/\n{\n return encode(value, !!disallowObjects, !!forcePointers, seen || [], offline);\n}\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/encode.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/equals.js":
+/*!***************************************************!*\
+ !*** ../node_modules/parse/lib/browser/equals.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = equals;\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/keys */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\"));\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _ParseACL = _interopRequireDefault(__webpack_require__(/*! ./ParseACL */ \"../node_modules/parse/lib/browser/ParseACL.js\"));\n\nvar _ParseFile = _interopRequireDefault(__webpack_require__(/*! ./ParseFile */ \"../node_modules/parse/lib/browser/ParseFile.js\"));\n\nvar _ParseGeoPoint = _interopRequireDefault(__webpack_require__(/*! ./ParseGeoPoint */ \"../node_modules/parse/lib/browser/ParseGeoPoint.js\"));\n\nvar _ParseObject = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\nfunction equals(a, b) {\n var toString = Object.prototype.toString;\n\n if (toString.call(a) === '[object Date]' || toString.call(b) === '[object Date]') {\n var dateA = new Date(a);\n var dateB = new Date(b);\n return +dateA === +dateB;\n }\n\n if ((0, _typeof2.default)(a) !== (0, _typeof2.default)(b)) {\n return false;\n }\n\n if (!a || (0, _typeof2.default)(a) !== 'object') {\n // a is a primitive\n return a === b;\n }\n\n if ((0, _isArray.default)(a) || (0, _isArray.default)(b)) {\n if (!(0, _isArray.default)(a) || !(0, _isArray.default)(b)) {\n return false;\n }\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (var i = a.length; i--;) {\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n if (a instanceof _ParseACL.default || a instanceof _ParseFile.default || a instanceof _ParseGeoPoint.default || a instanceof _ParseObject.default) {\n return a.equals(b);\n }\n\n if (b instanceof _ParseObject.default) {\n if (a.__type === 'Object' || a.__type === 'Pointer') {\n return a.objectId === b.id && a.className === b.className;\n }\n }\n\n if ((0, _keys.default)(a).length !== (0, _keys.default)(b).length) {\n return false;\n }\n\n for (var k in a) {\n if (!equals(a[k], b[k])) {\n return false;\n }\n }\n\n return true;\n}\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/equals.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/escape.js":
+/*!***************************************************!*\
+ !*** ../node_modules/parse/lib/browser/escape.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = escape;\n/*\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\nvar encoded = {\n '&': '&',\n '<': '<',\n '>': '>',\n '/': '/',\n \"'\": ''',\n '\"': '"'\n};\n\nfunction escape(str\n/*: string*/\n)\n/*: string*/\n{\n return str.replace(/[&<>\\/'\"]/g, function (char) {\n return encoded[char];\n });\n}\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/escape.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/isRevocableSession.js":
+/*!***************************************************************!*\
+ !*** ../node_modules/parse/lib/browser/isRevocableSession.js ***!
+ \***************************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = isRevocableSession;\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/index-of */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n\nfunction isRevocableSession(token\n/*: string*/\n)\n/*: boolean*/\n{\n return (0, _indexOf.default)(token).call(token, 'r:') > -1;\n}\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/isRevocableSession.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/parseDate.js":
+/*!******************************************************!*\
+ !*** ../node_modules/parse/lib/browser/parseDate.js ***!
+ \******************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = parseDate;\n\nvar _parseInt2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/parse-int */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/parse-int.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n\nfunction parseDate(iso8601\n/*: string*/\n)\n/*: ?Date*/\n{\n var regexp = new RegExp('^([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2})' + 'T' + '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})' + '(.([0-9]+))?' + 'Z$');\n var match = regexp.exec(iso8601);\n\n if (!match) {\n return null;\n }\n\n var year = (0, _parseInt2.default)(match[1]) || 0;\n var month = ((0, _parseInt2.default)(match[2]) || 1) - 1;\n var day = (0, _parseInt2.default)(match[3]) || 0;\n var hour = (0, _parseInt2.default)(match[4]) || 0;\n var minute = (0, _parseInt2.default)(match[5]) || 0;\n var second = (0, _parseInt2.default)(match[6]) || 0;\n var milli = (0, _parseInt2.default)(match[8]) || 0;\n return new Date(Date.UTC(year, month, day, hour, minute, second, milli));\n}\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/parseDate.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/promiseUtils.js":
+/*!*********************************************************!*\
+ !*** ../node_modules/parse/lib/browser/promiseUtils.js ***!
+ \*********************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.continueWhile = continueWhile;\nexports.resolvingPromise = resolvingPromise;\nexports.when = when;\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\")); // Create Deferred Promise\n\n\nfunction resolvingPromise() {\n var res;\n var rej;\n var promise = new _promise.default(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\n\nfunction when(promises) {\n var objects;\n var arrayArgument = (0, _isArray.default)(promises);\n\n if (arrayArgument) {\n objects = promises;\n } else {\n objects = arguments;\n }\n\n var total = objects.length;\n var hadError = false;\n var results = [];\n var returnValue = arrayArgument ? [results] : results;\n var errors = [];\n results.length = objects.length;\n errors.length = objects.length;\n\n if (total === 0) {\n return _promise.default.resolve(returnValue);\n }\n\n var promise = new resolvingPromise();\n\n var resolveOne = function () {\n total--;\n\n if (total <= 0) {\n if (hadError) {\n promise.reject(errors);\n } else {\n promise.resolve(returnValue);\n }\n }\n };\n\n var chain = function (object, index) {\n if (object && typeof object.then === 'function') {\n object.then(function (result) {\n results[index] = result;\n resolveOne();\n }, function (error) {\n errors[index] = error;\n hadError = true;\n resolveOne();\n });\n } else {\n results[index] = object;\n resolveOne();\n }\n };\n\n for (var i = 0; i < objects.length; i++) {\n chain(objects[i], i);\n }\n\n return promise;\n}\n\nfunction continueWhile(test, emitter) {\n if (test()) {\n return emitter().then(function () {\n return continueWhile(test, emitter);\n });\n }\n\n return _promise.default.resolve();\n}\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/promiseUtils.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/unique.js":
+/*!***************************************************!*\
+ !*** ../node_modules/parse/lib/browser/unique.js ***!
+ \***************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = unique;\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/index-of */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\"));\n\nvar _forEach = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js\"));\n\nvar _arrayContainsObject = _interopRequireDefault(__webpack_require__(/*! ./arrayContainsObject */ \"../node_modules/parse/lib/browser/arrayContainsObject.js\"));\n\nvar _ParseObject = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n\nfunction unique\n/*:: */\n(arr\n/*: Array*/\n)\n/*: Array*/\n{\n var uniques = [];\n (0, _forEach.default)(arr).call(arr, function (value) {\n if (value instanceof _ParseObject.default) {\n if (!(0, _arrayContainsObject.default)(uniques, value)) {\n uniques.push(value);\n }\n } else {\n if ((0, _indexOf.default)(uniques).call(uniques, value) < 0) {\n uniques.push(value);\n }\n }\n });\n return uniques;\n}\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/unique.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/unsavedChildren.js":
+/*!************************************************************!*\
+ !*** ../node_modules/parse/lib/browser/unsavedChildren.js ***!
+ \************************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs3/helpers/interopRequireDefault */ \"../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/define-property */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports[\"default\"] = unsavedChildren;\n\nvar _forEach = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/for-each */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js\"));\n\nvar _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/array/is-array */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js\"));\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/index-of */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\"));\n\nvar _concat = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/concat */ \"../node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js\"));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs3/helpers/typeof */ \"../node_modules/@babel/runtime-corejs3/helpers/typeof.js\"));\n\nvar _ParseFile = _interopRequireDefault(__webpack_require__(/*! ./ParseFile */ \"../node_modules/parse/lib/browser/ParseFile.js\"));\n\nvar _ParseObject = _interopRequireDefault(__webpack_require__(/*! ./ParseObject */ \"../node_modules/parse/lib/browser/ParseObject.js\"));\n\nvar _ParseRelation = _interopRequireDefault(__webpack_require__(/*! ./ParseRelation */ \"../node_modules/parse/lib/browser/ParseRelation.js\"));\n/**\n * Copyright (c) 2015-present, Parse, LLC.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n\n/**\n * Return an array of unsaved children, which are either Parse Objects or Files.\n * If it encounters any dirty Objects without Ids, it will throw an exception.\n *\n * @param {Parse.Object} obj\n * @param {boolean} allowDeepUnsaved\n * @returns {Array}\n */\n\n\nfunction unsavedChildren(obj\n/*: ParseObject*/\n, allowDeepUnsaved\n/*:: ?: boolean*/\n)\n/*: Array*/\n{\n var encountered = {\n objects: {},\n files: []\n };\n\n var identifier = obj.className + ':' + obj._getId();\n\n encountered.objects[identifier] = obj.dirty() ? obj : true;\n var attributes = obj.attributes;\n\n for (var attr in attributes) {\n if ((0, _typeof2.default)(attributes[attr]) === 'object') {\n traverse(attributes[attr], encountered, false, !!allowDeepUnsaved);\n }\n }\n\n var unsaved = [];\n\n for (var id in encountered.objects) {\n if (id !== identifier && encountered.objects[id] !== true) {\n unsaved.push(encountered.objects[id]);\n }\n }\n\n return (0, _concat.default)(unsaved).call(unsaved, encountered.files);\n}\n\nfunction traverse(obj\n/*: ParseObject*/\n, encountered\n/*: EncounterMap*/\n, shouldThrow\n/*: boolean*/\n, allowDeepUnsaved\n/*: boolean*/\n) {\n if (obj instanceof _ParseObject.default) {\n if (!obj.id && shouldThrow) {\n throw new Error('Cannot create a pointer to an unsaved Object.');\n }\n\n var _identifier = obj.className + ':' + obj._getId();\n\n if (!encountered.objects[_identifier]) {\n encountered.objects[_identifier] = obj.dirty() ? obj : true;\n var attributes = obj.attributes;\n\n for (var attr in attributes) {\n if ((0, _typeof2.default)(attributes[attr]) === 'object') {\n traverse(attributes[attr], encountered, !allowDeepUnsaved, allowDeepUnsaved);\n }\n }\n }\n\n return;\n }\n\n if (obj instanceof _ParseFile.default) {\n var _context;\n\n if (!obj.url() && (0, _indexOf.default)(_context = encountered.files).call(_context, obj) < 0) {\n encountered.files.push(obj);\n }\n\n return;\n }\n\n if (obj instanceof _ParseRelation.default) {\n return;\n }\n\n if ((0, _isArray.default)(obj)) {\n (0, _forEach.default)(obj).call(obj, function (el) {\n if ((0, _typeof2.default)(el) === 'object') {\n traverse(el, encountered, shouldThrow, allowDeepUnsaved);\n }\n });\n }\n\n for (var k in obj) {\n if ((0, _typeof2.default)(obj[k]) === 'object') {\n traverse(obj[k], encountered, shouldThrow, allowDeepUnsaved);\n }\n }\n}\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/unsavedChildren.js?");
+
+/***/ }),
+
+/***/ "../node_modules/parse/lib/browser/uuid.js":
+/*!*************************************************!*\
+ !*** ../node_modules/parse/lib/browser/uuid.js ***!
+ \*************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+eval("\n\nvar uuid = null;\nuuid = __webpack_require__(/*! uuid/v4 */ \"../node_modules/uuid/v4.js\");\nmodule.exports = uuid;\n\n//# sourceURL=webpack:///../node_modules/parse/lib/browser/uuid.js?");
+
+/***/ }),
+
+/***/ "../node_modules/path-to-regexp/index.js":
+/*!***********************************************!*\
+ !*** ../node_modules/path-to-regexp/index.js ***!
+ \***********************************************/
+/***/ ((module) => {
+
+eval("/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.match = match\nmodule.exports.regexpToFunction = regexpToFunction\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * Default configs.\n */\nvar DEFAULT_DELIMITER = '/'\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\n var whitelist = (options && options.whitelist) || undefined\n var pathEscaped = false\n var res\n\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n pathEscaped = true\n continue\n }\n\n var prev = ''\n var name = res[2]\n var capture = res[3]\n var group = res[4]\n var modifier = res[5]\n\n if (!pathEscaped && path.length) {\n var k = path.length - 1\n var c = path[k]\n var matches = whitelist ? whitelist.indexOf(c) > -1 : true\n\n if (matches) {\n prev = c\n path = path.slice(0, k)\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n pathEscaped = false\n }\n\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var pattern = capture || group\n var delimiter = prev || defaultDelimiter\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n pattern: pattern\n ? escapeGroup(pattern)\n : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\n })\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index))\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nfunction match (str, options) {\n var keys = []\n var re = pathToRegexp(str, keys, options)\n return regexpToFunction(re, keys)\n}\n\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nfunction regexpToFunction (re, keys) {\n return function (pathname, options) {\n var m = re.exec(pathname)\n if (!m) return false\n\n var path = m[0]\n var index = m.index\n var params = {}\n var decode = (options && options.decode) || decodeURIComponent\n\n for (var i = 1; i < m.length; i++) {\n if (m[i] === undefined) continue\n\n var key = keys[i - 1]\n\n if (key.repeat) {\n params[key.name] = m[i].split(key.delimiter).map(function (value) {\n return decode(value, key)\n })\n } else {\n params[key.name] = decode(m[i], key)\n }\n }\n\n return { path: path, index: index, params: params }\n }\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (data, options) {\n var path = ''\n var encode = (options && options.encode) || encodeURIComponent\n var validate = options ? options.validate !== false : true\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n continue\n }\n\n var value = data ? data[token.name] : undefined\n var segment\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n }\n\n if (value.length === 0) {\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j], token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token)\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n continue\n }\n\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$/()])/g, '\\\\$1')\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {Array=} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n if (!keys) return path\n\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n pattern: null\n })\n }\n }\n\n return path\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n options = options || {}\n\n var strict = options.strict\n var start = options.start !== false\n var end = options.end !== false\n var delimiter = options.delimiter || DEFAULT_DELIMITER\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\n var route = start ? '^' : ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\n : token.pattern\n\n if (keys) keys.push(token)\n\n if (token.optional) {\n if (!token.prefix) {\n route += '(' + capture + ')?'\n } else {\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\n }\n } else {\n route += escapeString(token.prefix) + '(' + capture + ')'\n }\n }\n }\n\n if (end) {\n if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\n\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\n } else {\n var endToken = tokens[tokens.length - 1]\n var isEndDelimited = typeof endToken === 'string'\n ? endToken[endToken.length - 1] === delimiter\n : endToken === undefined\n\n if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\n if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\n }\n\n return new RegExp(route, flags(options))\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys)\n }\n\n if (Array.isArray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), keys, options)\n}\n\n\n//# sourceURL=webpack:///../node_modules/path-to-regexp/index.js?");
+
+/***/ }),
+
+/***/ "../node_modules/prismjs/plugins/line-numbers/prism-line-numbers.js":
+/*!**************************************************************************!*\
+ !*** ../node_modules/prismjs/plugins/line-numbers/prism-line-numbers.js ***!
+ \**************************************************************************/
+/***/ (() => {
+
+eval("(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t/**\n\t * Plugin name which is used as a class name for which is activating the plugin\n\t *\n\t * @type {string}\n\t */\n\tvar PLUGIN_NAME = 'line-numbers';\n\n\t/**\n\t * Regular expression used for determining line breaks\n\t *\n\t * @type {RegExp}\n\t */\n\tvar NEW_LINE_EXP = /\\n(?!$)/g;\n\n\n\t/**\n\t * Global exports\n\t */\n\tvar config = Prism.plugins.lineNumbers = {\n\t\t/**\n\t\t * Get node for provided line number\n\t\t *\n\t\t * @param {Element} element pre element\n\t\t * @param {number} number line number\n\t\t * @returns {Element|undefined}\n\t\t */\n\t\tgetLine: function (element, number) {\n\t\t\tif (element.tagName !== 'PRE' || !element.classList.contains(PLUGIN_NAME)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar lineNumberRows = element.querySelector('.line-numbers-rows');\n\t\t\tif (!lineNumberRows) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar lineNumberStart = parseInt(element.getAttribute('data-start'), 10) || 1;\n\t\t\tvar lineNumberEnd = lineNumberStart + (lineNumberRows.children.length - 1);\n\n\t\t\tif (number < lineNumberStart) {\n\t\t\t\tnumber = lineNumberStart;\n\t\t\t}\n\t\t\tif (number > lineNumberEnd) {\n\t\t\t\tnumber = lineNumberEnd;\n\t\t\t}\n\n\t\t\tvar lineIndex = number - lineNumberStart;\n\n\t\t\treturn lineNumberRows.children[lineIndex];\n\t\t},\n\n\t\t/**\n\t\t * Resizes the line numbers of the given element.\n\t\t *\n\t\t * This function will not add line numbers. It will only resize existing ones.\n\t\t *\n\t\t * @param {HTMLElement} element A `` element with line numbers.\n\t\t * @returns {void}\n\t\t */\n\t\tresize: function (element) {\n\t\t\tresizeElements([element]);\n\t\t},\n\n\t\t/**\n\t\t * Whether the plugin can assume that the units font sizes and margins are not depended on the size of\n\t\t * the current viewport.\n\t\t *\n\t\t * Setting this to `true` will allow the plugin to do certain optimizations for better performance.\n\t\t *\n\t\t * Set this to `false` if you use any of the following CSS units: `vh`, `vw`, `vmin`, `vmax`.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tassumeViewportIndependence: true\n\t};\n\n\t/**\n\t * Resizes the given elements.\n\t *\n\t * @param {HTMLElement[]} elements\n\t */\n\tfunction resizeElements(elements) {\n\t\telements = elements.filter(function (e) {\n\t\t\tvar codeStyles = getStyles(e);\n\t\t\tvar whiteSpace = codeStyles['white-space'];\n\t\t\treturn whiteSpace === 'pre-wrap' || whiteSpace === 'pre-line';\n\t\t});\n\n\t\tif (elements.length == 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar infos = elements.map(function (element) {\n\t\t\tvar codeElement = element.querySelector('code');\n\t\t\tvar lineNumbersWrapper = element.querySelector('.line-numbers-rows');\n\t\t\tif (!codeElement || !lineNumbersWrapper) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t/** @type {HTMLElement} */\n\t\t\tvar lineNumberSizer = element.querySelector('.line-numbers-sizer');\n\t\t\tvar codeLines = codeElement.textContent.split(NEW_LINE_EXP);\n\n\t\t\tif (!lineNumberSizer) {\n\t\t\t\tlineNumberSizer = document.createElement('span');\n\t\t\t\tlineNumberSizer.className = 'line-numbers-sizer';\n\n\t\t\t\tcodeElement.appendChild(lineNumberSizer);\n\t\t\t}\n\n\t\t\tlineNumberSizer.innerHTML = '0';\n\t\t\tlineNumberSizer.style.display = 'block';\n\n\t\t\tvar oneLinerHeight = lineNumberSizer.getBoundingClientRect().height;\n\t\t\tlineNumberSizer.innerHTML = '';\n\n\t\t\treturn {\n\t\t\t\telement: element,\n\t\t\t\tlines: codeLines,\n\t\t\t\tlineHeights: [],\n\t\t\t\toneLinerHeight: oneLinerHeight,\n\t\t\t\tsizer: lineNumberSizer,\n\t\t\t};\n\t\t}).filter(Boolean);\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar lines = info.lines;\n\t\t\tvar lineHeights = info.lineHeights;\n\t\t\tvar oneLinerHeight = info.oneLinerHeight;\n\n\t\t\tlineHeights[lines.length - 1] = undefined;\n\t\t\tlines.forEach(function (line, index) {\n\t\t\t\tif (line && line.length > 1) {\n\t\t\t\t\tvar e = lineNumberSizer.appendChild(document.createElement('span'));\n\t\t\t\t\te.style.display = 'block';\n\t\t\t\t\te.textContent = line;\n\t\t\t\t} else {\n\t\t\t\t\tlineHeights[index] = oneLinerHeight;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar lineHeights = info.lineHeights;\n\n\t\t\tvar childIndex = 0;\n\t\t\tfor (var i = 0; i < lineHeights.length; i++) {\n\t\t\t\tif (lineHeights[i] === undefined) {\n\t\t\t\t\tlineHeights[i] = lineNumberSizer.children[childIndex++].getBoundingClientRect().height;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar wrapper = info.element.querySelector('.line-numbers-rows');\n\n\t\t\tlineNumberSizer.style.display = 'none';\n\t\t\tlineNumberSizer.innerHTML = '';\n\n\t\t\tinfo.lineHeights.forEach(function (height, lineNumber) {\n\t\t\t\twrapper.children[lineNumber].style.height = height + 'px';\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Returns style declarations for the element\n\t *\n\t * @param {Element} element\n\t */\n\tfunction getStyles(element) {\n\t\tif (!element) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn window.getComputedStyle ? getComputedStyle(element) : (element.currentStyle || null);\n\t}\n\n\tvar lastWidth = undefined;\n\twindow.addEventListener('resize', function () {\n\t\tif (config.assumeViewportIndependence && lastWidth === window.innerWidth) {\n\t\t\treturn;\n\t\t}\n\t\tlastWidth = window.innerWidth;\n\n\t\tresizeElements(Array.prototype.slice.call(document.querySelectorAll('pre.' + PLUGIN_NAME)));\n\t});\n\n\tPrism.hooks.add('complete', function (env) {\n\t\tif (!env.code) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar code = /** @type {Element} */ (env.element);\n\t\tvar pre = /** @type {HTMLElement} */ (code.parentNode);\n\n\t\t// works only for wrapped inside (not inline)\n\t\tif (!pre || !/pre/i.test(pre.nodeName)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Abort if line numbers already exists\n\t\tif (code.querySelector('.line-numbers-rows')) {\n\t\t\treturn;\n\t\t}\n\n\t\t// only add line numbers if or one of its ancestors has the `line-numbers` class\n\t\tif (!Prism.util.isActive(code, PLUGIN_NAME)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove the class 'line-numbers' from the \n\t\tcode.classList.remove(PLUGIN_NAME);\n\t\t// Add the class 'line-numbers' to the \n\t\tpre.classList.add(PLUGIN_NAME);\n\n\t\tvar match = env.code.match(NEW_LINE_EXP);\n\t\tvar linesNum = match ? match.length + 1 : 1;\n\t\tvar lineNumbersWrapper;\n\n\t\tvar lines = new Array(linesNum + 1).join(' ');\n\n\t\tlineNumbersWrapper = document.createElement('span');\n\t\tlineNumbersWrapper.setAttribute('aria-hidden', 'true');\n\t\tlineNumbersWrapper.className = 'line-numbers-rows';\n\t\tlineNumbersWrapper.innerHTML = lines;\n\n\t\tif (pre.hasAttribute('data-start')) {\n\t\t\tpre.style.counterReset = 'linenumber ' + (parseInt(pre.getAttribute('data-start'), 10) - 1);\n\t\t}\n\n\t\tenv.element.appendChild(lineNumbersWrapper);\n\n\t\tresizeElements([pre]);\n\n\t\tPrism.hooks.run('line-numbers', env);\n\t});\n\n\tPrism.hooks.add('line-numbers', function (env) {\n\t\tenv.plugins = env.plugins || {};\n\t\tenv.plugins.lineNumbers = true;\n\t});\n\n}());\n\n\n//# sourceURL=webpack:///../node_modules/prismjs/plugins/line-numbers/prism-line-numbers.js?");
+
+/***/ }),
+
+/***/ "../node_modules/prismjs/prism.js":
+/*!****************************************!*\
+ !*** ../node_modules/prismjs/prism.js ***!
+ \****************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\n/// \n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT \n * @author Lea Verou \n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /\\blang(?:uage)?-([\\w-]+)\\b/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new