diff --git a/lerna.json b/lerna.json index 3df4ed96..15c0a7b5 100644 --- a/lerna.json +++ b/lerna.json @@ -1,4 +1,4 @@ { "packages": ["packages/*"], - "version": "3.5.1" + "version": "3.6.0" } diff --git a/package.json b/package.json index 2eb1140c..faae6fef 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,6 @@ "boilerplate": "cd packages/ext-react-modern-boilerplate && npm start" }, "devDependencies": { - "lerna": "~3.5.1" + "lerna": "~3.6.0" } } diff --git a/packages/ext-react-babel-plugin/package.json b/packages/ext-react-babel-plugin/package.json index 9a056f27..2ca8bbff 100644 --- a/packages/ext-react-babel-plugin/package.json +++ b/packages/ext-react-babel-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sencha/ext-react-babel-plugin", - "version": "6.6.3", + "version": "6.6.4", "description": "Converts ES6 imports to reactify calls.", "main": "dist/index.js", "module": "index.js", @@ -16,9 +16,9 @@ "license": "MIT", "homepage": "https://github.com/sencha/ext-react/tree/master/packages/ext-react-babel-plugin", "devDependencies": { - "@babel/cli": "^7.1.5", - "@babel/core": "^7.1.6", - "@babel/preset-env": "^7.1.6", + "@babel/cli": "^7.2.0", + "@babel/core": "^7.2.0", + "@babel/preset-env": "^7.2.0", "babel-loader": "^8.0.4", "chalk": "^2.4.1", "fs": "^0.0.1-security" diff --git a/packages/ext-react-classic-boilerplate/package.json b/packages/ext-react-classic-boilerplate/package.json index 5620b2f2..ab230167 100644 --- a/packages/ext-react-classic-boilerplate/package.json +++ b/packages/ext-react-classic-boilerplate/package.json @@ -1,7 +1,7 @@ { "name": "@sencha/ext-react-classic-boilerplate", "product": "ext-react", - "version": "6.6.3", + "version": "6.6.4", "description": "A boilerplate project showing how to integrate React and Ext JS using the classic toolkit.", "main": "index.js", "scripts": { @@ -28,42 +28,42 @@ }, "dependencies": { "@babel/polyfill": "^7.0.0", - "@babel/runtime": "^7.1.5", + "@babel/runtime": "^7.2.0", "@sencha/ext": "~6.6.0", "@sencha/ext-classic": "~6.6.0", - "@sencha/ext-react": "~6.6.3", - "@sencha/ext-react-transition": "~6.6.3", - "@sencha/ext-react-renderercell": "~6.6.3", + "@sencha/ext-react": "~6.6.4", + "@sencha/ext-react-transition": "~6.6.4", + "@sencha/ext-react-renderercell": "~6.6.4", "@sencha/ext-classic-theme-triton": "~6.6.0", "prop-types": "^15.6.2", - "react": "^16.6.3", - "react-dom": "^16.6.3", + "react": "~16.6.3", + "react-dom": "~16.6.3", "react-router-dom": "^4.3.1" }, "devDependencies": { - "@babel/core": "^7.1.6", - "@babel/plugin-proposal-class-properties": "^7.1.0", - "@babel/plugin-proposal-decorators": "^7.1.6", - "@babel/plugin-proposal-export-namespace-from": "^7.0.0", - "@babel/plugin-proposal-function-sent": "^7.1.0", - "@babel/plugin-proposal-json-strings": "^7.0.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-throw-expressions": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-import-meta": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.1.0", - "@babel/preset-env": "^7.1.6", + "@babel/core": "^7.2.0", + "@babel/plugin-proposal-class-properties": "^7.2.1", + "@babel/plugin-proposal-decorators": "^7.2.0", + "@babel/plugin-proposal-export-namespace-from": "^7.2.0", + "@babel/plugin-proposal-function-sent": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-numeric-separator": "^7.2.0", + "@babel/plugin-proposal-throw-expressions": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-import-meta": "^7.2.0", + "@babel/plugin-transform-runtime": "^7.2.0", + "@babel/preset-env": "^7.2.0", "@babel/preset-react": "^7.0.0", - "@sencha/ext-react-babel-plugin": "~6.6.3", - "@sencha/ext-react-webpack-plugin": "~6.6.3", + "@sencha/ext-react-babel-plugin": "~6.6.4", + "@sencha/ext-react-webpack-plugin": "~6.6.4", "babel-loader": "^8.0.4", "copy-webpack-plugin": "^4.6.0", "cross-env": "^5.2.0", "html-webpack-plugin": "^3.2.0", - "portfinder": "^1.0.19", + "portfinder": "^1.0.20", "react-hot-loader": "^4.3.12", "rimraf": "^2.6.2", - "webpack": "^4.26.1", + "webpack": "^4.27.1", "webpack-cli": "^3.1.2", "webpack-dev-server": "^3.1.10", "webpack-shell-plugin": "^0.5.0" diff --git a/packages/ext-react-classic-demo/package.json b/packages/ext-react-classic-demo/package.json index c450822d..40fa65b2 100644 --- a/packages/ext-react-classic-demo/package.json +++ b/packages/ext-react-classic-demo/package.json @@ -1,7 +1,7 @@ { "name": "@sencha/ext-react-classic-demo", "product": "ext-react", - "version": "6.6.3", + "version": "6.6.4", "description": "ext-react-classic-demo", "main": "index.js", "scripts": { @@ -28,44 +28,44 @@ }, "dependencies": { "@babel/polyfill": "^7.0.0", - "@babel/runtime": "^7.0.0", + "@babel/runtime": "^7.2.0", "@sencha/ext": "~6.6.0", "@sencha/ext-classic": "~6.6.0", - "@sencha/ext-react": "~6.6.2", - "@sencha/ext-react-transition": "~6.6.2", - "@sencha/ext-react-renderercell": "~6.6.2", + "@sencha/ext-react": "~6.6.4", + "@sencha/ext-react-transition": "~6.6.4", + "@sencha/ext-react-renderercell": "~6.6.4", "@sencha/ext-classic-theme-triton": "~6.6.0", "prop-types": "^15.6.2", - "react": "^16.6.0", - "react-dom": "^16.6.0", + "react": "~16.6.3", + "react-dom": "~16.6.3", "react-router-dom": "^4.3.1" }, "devDependencies": { - "@babel/core": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-decorators": "^7.0.0", - "@babel/plugin-proposal-export-namespace-from": "^7.0.0", - "@babel/plugin-proposal-function-sent": "^7.0.0", - "@babel/plugin-proposal-json-strings": "^7.0.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-throw-expressions": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-import-meta": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/preset-env": "^7.0.0", + "@babel/core": "^7.2.0", + "@babel/plugin-proposal-class-properties": "^7.2.1", + "@babel/plugin-proposal-decorators": "^7.2.0", + "@babel/plugin-proposal-export-namespace-from": "^7.2.0", + "@babel/plugin-proposal-function-sent": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-numeric-separator": "^7.2.0", + "@babel/plugin-proposal-throw-expressions": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-import-meta": "^7.2.0", + "@babel/plugin-transform-runtime": "^7.2.0", + "@babel/preset-env": "^7.2.0", "@babel/preset-react": "^7.0.0", - "@sencha/ext-react-babel-plugin": "~6.6.2", - "@sencha/ext-react-webpack-plugin": "~6.6.2", - "babel-loader": "^8.0.2", - "copy-webpack-plugin": "^4.5.2", + "@sencha/ext-react-babel-plugin": "~6.6.4", + "@sencha/ext-react-webpack-plugin": "~6.6.4", + "babel-loader": "^8.0.4", + "copy-webpack-plugin": "^4.6.0", "cross-env": "^5.2.0", "html-webpack-plugin": "^3.2.0", - "portfinder": "^1.0.17", - "react-hot-loader": "^4.3.11", + "portfinder": "^1.0.20", + "react-hot-loader": "^4.3.12", "rimraf": "^2.6.2", - "webpack": "^4.19.1", - "webpack-cli": "^3.1.0", - "webpack-dev-server": "^3.1.8", + "webpack": "^4.27.1", + "webpack-cli": "^3.1.2", + "webpack-dev-server": "^3.1.10", "webpack-shell-plugin": "^0.5.0" } } diff --git a/packages/ext-react-classic-renderwhenready-no-plugin/package.json b/packages/ext-react-classic-renderwhenready-no-plugin/package.json index 1e7bd189..53c860dc 100644 --- a/packages/ext-react-classic-renderwhenready-no-plugin/package.json +++ b/packages/ext-react-classic-renderwhenready-no-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sencha/ext-react-classic-renderwhenready-no-plugin", - "version": "6.6.3", + "version": "6.6.4", "description": "A Demo", "main": "index.js", "scripts": { @@ -24,13 +24,13 @@ "@babel/polyfill": "^7.0.0", "@babel/runtime": "^7.1.5", - "@sencha/ext-react": "~6.6.3", + "@sencha/ext-react": "~6.6.4", "react-dynamic-modal":"^1.1.1", "prop-types": "^15.6.2", - "react": "^16.6.3", - "react-dom": "^16.6.3", + "react": "~16.6.3", + "react-dom": "~16.6.3", "react-redux": "^5.1.1", "react-router-dom": "^4.3.1", "redux": "^4.0.1" @@ -39,13 +39,13 @@ "@babel/core": "^7.1.6", "@babel/plugin-proposal-class-properties": "^7.1.0", "@babel/plugin-proposal-decorators": "^7.1.6", - "@babel/plugin-proposal-export-namespace-from": "^7.0.0", + "@babel/plugin-proposal-export-namespace-from": "^7.2.0", "@babel/plugin-proposal-function-sent": "^7.1.0", - "@babel/plugin-proposal-json-strings": "^7.0.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-throw-expressions": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-import-meta": "^7.0.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-numeric-separator": "^7.2.0", + "@babel/plugin-proposal-throw-expressions": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-import-meta": "^7.2.0", "@babel/plugin-transform-runtime": "^7.1.0", "@babel/preset-env": "^7.1.6", "@babel/preset-react": "^7.0.0", diff --git a/packages/ext-react-classic-renderwhenready/package.json b/packages/ext-react-classic-renderwhenready/package.json index eb814baf..6fd28ca2 100644 --- a/packages/ext-react-classic-renderwhenready/package.json +++ b/packages/ext-react-classic-renderwhenready/package.json @@ -1,6 +1,6 @@ { "name": "@sencha/ext-react-classic-renderwhenready", - "version": "6.6.3", + "version": "6.6.4", "description": "A Demo", "main": "index.js", "scripts": { @@ -27,12 +27,12 @@ "homepage": "https://github.com/sencha/ext-react#readme", "dependencies": { "@babel/polyfill": "^7.0.0", - "@babel/runtime": "^7.0.0", + "@babel/runtime": "^7.2.0", "@sencha/ext": "~6.6.0", "@sencha/ext-classic": "~6.6.0", "@sencha/ext-classic-theme-triton": "~6.6.0", - "@sencha/ext-react": "~6.6.2", - "@sencha/ext-react-renderercell": "~6.6.2", + "@sencha/ext-react": "~6.6.4", + "@sencha/ext-react-renderercell": "~6.6.4", "@sencha/ext-ux": "~6.6.0", "prop-types": "^15.6.2", "react": "^16.5.0", @@ -42,21 +42,21 @@ "redux": "^4.0.0" }, "devDependencies": { - "@babel/core": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-decorators": "^7.0.0", - "@babel/plugin-proposal-export-namespace-from": "^7.0.0", - "@babel/plugin-proposal-function-sent": "^7.0.0", - "@babel/plugin-proposal-json-strings": "^7.0.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-throw-expressions": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-import-meta": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/preset-env": "^7.0.0", + "@babel/core": "^7.2.0", + "@babel/plugin-proposal-class-properties": "^7.2.0", + "@babel/plugin-proposal-decorators": "^7.2.0", + "@babel/plugin-proposal-export-namespace-from": "^7.2.0", + "@babel/plugin-proposal-function-sent": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-numeric-separator": "^7.2.0", + "@babel/plugin-proposal-throw-expressions": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-import-meta": "^7.2.0", + "@babel/plugin-transform-runtime": "^7.2.0", + "@babel/preset-env": "^7.2.0", "@babel/preset-react": "^7.0.0", - "@sencha/ext-react-babel-plugin": "~6.6.2", - "@sencha/ext-react-webpack-plugin": "~6.6.2", + "@sencha/ext-react-babel-plugin": "~6.6.4", + "@sencha/ext-react-webpack-plugin": "~6.6.4", "babel-loader": "^8.0.0", "copy-webpack-plugin": "^4.5.2", "cross-env": "^5.2.0", @@ -65,7 +65,7 @@ "react-hot-loader": "^4.3.4", "webpack": "^4.17.2", "webpack-cli": "^3.1.0", - "webpack-dev-server": "^3.1.8", + "webpack-dev-server": "^3.1.10", "webpack-shell-plugin": "^0.5.0" } } diff --git a/packages/ext-react-conference-app/package.json b/packages/ext-react-conference-app/package.json index fd735340..6ad20b40 100644 --- a/packages/ext-react-conference-app/package.json +++ b/packages/ext-react-conference-app/package.json @@ -1,6 +1,6 @@ { "name": "@sencha/ext-react-conference-app", - "version": "6.6.3", + "version": "6.6.4", "description": "A full example app using ExtReact and Redux.", "main": "index.js", "scripts": { @@ -27,16 +27,16 @@ "homepage": "https://github.com/sencha/ext-react#readme", "dependencies": { "@babel/polyfill": "^7.0.0", - "@babel/runtime": "^7.0.0", + "@babel/runtime": "^7.2.0", "@sencha/ext": "~6.6.0", "@sencha/ext-calendar": "~6.6.0", "@sencha/ext-d3": "~6.6.0", "@sencha/ext-modern": "~6.6.0", "@sencha/ext-modern-theme-material": "~6.6.0", "@sencha/ext-modern-treegrid": "~6.6.0", - "@sencha/ext-react": "~6.6.2", - "@sencha/ext-react-renderercell": "~6.6.2", - "@sencha/ext-react-transition": "~6.6.2", + "@sencha/ext-react": "~6.6.4", + "@sencha/ext-react-renderercell": "~6.6.4", + "@sencha/ext-react-transition": "~6.6.4", "d3": "^5.4.0", "history": "^4.7.2", "prop-types": "^15.6.2", @@ -50,31 +50,31 @@ "topojson-client": "^3.0.0" }, "devDependencies": { - "@babel/core": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-decorators": "^7.0.0", - "@babel/plugin-proposal-export-namespace-from": "^7.0.0", - "@babel/plugin-proposal-function-sent": "^7.0.0", - "@babel/plugin-proposal-json-strings": "^7.0.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-throw-expressions": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-import-meta": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/preset-env": "^7.0.0", + "@babel/core": "^7.2.0", + "@babel/plugin-proposal-class-properties": "^7.2.0", + "@babel/plugin-proposal-decorators": "^7.2.0", + "@babel/plugin-proposal-export-namespace-from": "^7.2.0", + "@babel/plugin-proposal-function-sent": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-numeric-separator": "^7.2.0", + "@babel/plugin-proposal-throw-expressions": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-import-meta": "^7.2.0", + "@babel/plugin-transform-runtime": "^7.2.0", + "@babel/preset-env": "^7.2.0", "@babel/preset-react": "^7.0.0", - "@sencha/ext-react-babel-plugin": "~6.6.2", - "@sencha/ext-react-webpack-plugin": "~6.6.2", + "@sencha/ext-react-babel-plugin": "~6.6.4", + "@sencha/ext-react-webpack-plugin": "~6.6.4", "babel-loader": "^8.0.2", "copy-webpack-plugin": "^4.5.2", "cross-env": "^5.2.0", "html-webpack-plugin": "^3.2.0", - "portfinder": "^1.0.17", - "react-hot-loader": "^4.3.11", + "portfinder": "^1.0.20", + "react-hot-loader": "^4.3.12", "rimraf": "^2.6.2", - "webpack": "^4.19.1", + "webpack": "^4.27.1", "webpack-cli": "^3.1.1", - "webpack-dev-server": "^3.1.8", + "webpack-dev-server": "^3.1.10", "webpack-shell-plugin": "^0.5.0", "static-server": "~2.2.1" } diff --git a/packages/ext-react-froala-example/package.json b/packages/ext-react-froala-example/package.json index 71727fb5..37d640e2 100644 --- a/packages/ext-react-froala-example/package.json +++ b/packages/ext-react-froala-example/package.json @@ -1,6 +1,6 @@ { "name": "ext-react-froala-example", - "version": "6.6.3", + "version": "6.6.4", "description": "ExtReact example using the Froala HTML Editor", "keywords": [ "ExtReact" @@ -21,14 +21,14 @@ }, "dependencies": { "@babel/polyfill": "^7.0.0", - "@babel/runtime": "^7.0.0", + "@babel/runtime": "^7.2.0", "@sencha/ext": "~6.6.0", "@sencha/ext-modern": "~6.6.0", "@sencha/ext-modern-theme-material": "~6.6.0", "@sencha/ext-modern-treegrid": "~6.6.0", - "@sencha/ext-react": "~6.6.2", - "@sencha/ext-react-renderercell": "~6.6.2", - "@sencha/ext-react-transition": "~6.6.2", + "@sencha/ext-react": "~6.6.4", + "@sencha/ext-react-renderercell": "~6.6.4", + "@sencha/ext-react-transition": "~6.6.4", "prop-types": "^15.6.2", "react": "^16.6.0", "react-dom": "^16.6.0", @@ -36,34 +36,34 @@ "react-router-dom": "^4.3.1" }, "devDependencies": { - "@babel/core": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-decorators": "^7.0.0", - "@babel/plugin-proposal-export-namespace-from": "^7.0.0", - "@babel/plugin-proposal-function-sent": "^7.0.0", - "@babel/plugin-proposal-json-strings": "^7.0.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-throw-expressions": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-import-meta": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/preset-env": "^7.0.0", + "@babel/core": "^7.2.0", + "@babel/plugin-proposal-class-properties": "^7.2.0", + "@babel/plugin-proposal-decorators": "^7.2.0", + "@babel/plugin-proposal-export-namespace-from": "^7.2.0", + "@babel/plugin-proposal-function-sent": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-numeric-separator": "^7.2.0", + "@babel/plugin-proposal-throw-expressions": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-import-meta": "^7.2.0", + "@babel/plugin-transform-runtime": "^7.2.0", + "@babel/preset-env": "^7.2.0", "@babel/preset-react": "^7.0.0", - "@sencha/ext-react-babel-plugin": "~6.6.2", - "@sencha/ext-react-webpack-plugin": "~6.6.2", + "@sencha/ext-react-babel-plugin": "~6.6.4", + "@sencha/ext-react-webpack-plugin": "~6.6.4", "babel-loader": "^8.0.2", "cross-env": "^5.2.0", "css-loader": "^1.0.0", "url-loader": "^1.1.1", "file-loader": "^2.0.0", "html-webpack-plugin": "^3.2.0", - "portfinder": "^1.0.17", - "react-hot-loader": "^4.3.11", + "portfinder": "^1.0.20", + "react-hot-loader": "^4.3.12", "rimraf": "^2.6.2", "style-loader": "^0.23.0", - "webpack": "^4.19.1", + "webpack": "^4.27.1", "webpack-cli": "^3.1.0", - "webpack-dev-server": "^3.1.8", + "webpack-dev-server": "^3.1.10", "webpack-shell-plugin": "^0.5.0" } } diff --git a/packages/ext-react-gen/package.json b/packages/ext-react-gen/package.json index f601f268..9859863f 100644 --- a/packages/ext-react-gen/package.json +++ b/packages/ext-react-gen/package.json @@ -1,6 +1,6 @@ { "name": "@sencha/ext-react-gen", - "version": "6.6.3", + "version": "6.6.4", "description": "Sencha ExtReact code generator", "bin": { "ext-react-gen": "ext-react-gen.js", @@ -18,12 +18,12 @@ }, "preferGlobal": true, "dependencies": { - "@sencha/ext-react-modern-boilerplate": "~6.6.3", - "@sencha/ext-react-modern-typescript-boilerplate": "~6.6.3", - "@sencha/ext-react-classic-boilerplate": "~6.6.3", - "react": "^16.6.3", - "react-dom": "^16.6.3", - "react-reconciler": "^0.17.2", + "@sencha/ext-react-modern-boilerplate": "~6.6.4", + "@sencha/ext-react-modern-typescript-boilerplate": "~6.6.4", + "@sencha/ext-react-classic-boilerplate": "~6.6.4", + "react": "~16.6.3", + "react-dom": "~16.6.3", + "react-reconciler": "~0.17.2", "chalk": "^2.4.1", "glob": "^7.1.3", "boxen": "^2.0.0", diff --git a/packages/ext-react-kitchensink/package.json b/packages/ext-react-kitchensink/package.json index 0add54b4..f3e29d46 100644 --- a/packages/ext-react-kitchensink/package.json +++ b/packages/ext-react-kitchensink/package.json @@ -1,7 +1,7 @@ { "name": "@sencha/ext-react-kitchensink", "product": "ext-react", - "version": "6.6.3", + "version": "6.6.4", "description": "A boilerplate project for Ext React showing all Ext JS modern components.", "main": "index.js", "scripts": { @@ -32,13 +32,13 @@ "homepage": "https://github.com/sencha/ext-react#readme", "dependencies": { "@babel/polyfill": "^7.0.0", - "@babel/runtime": "^7.0.0", + "@babel/runtime": "^7.2.0", "@sencha/ext": "~6.6.0", "@sencha/ext-modern": "~6.6.0", "@sencha/ext-modern-treegrid": "~6.6.0", - "@sencha/ext-react": "~6.6.2", - "@sencha/ext-react-renderercell": "~6.6.2", - "@sencha/ext-react-transition": "~6.6.2", + "@sencha/ext-react": "~6.6.4", + "@sencha/ext-react-renderercell": "~6.6.4", + "@sencha/ext-react-transition": "~6.6.4", "@sencha/ext-calendar": "~6.6.0", "@sencha/ext-charts": "~6.6.0", "@sencha/ext-d3": "~6.6.0", @@ -48,42 +48,42 @@ "@sencha/ext-ux": "~6.6.0", "@sencha/ext-modern-theme-material": "~6.6.0", "d3": "4.5.0", - "highlightjs": "^9.10.0", - "history": "^4.7.2", - "prop-types": "^15.6.2", - "react": "^16.6.0", - "react-dom": "^16.6.0", - "react-redux": "^5.0.7", - "react-router-dom": "^4.3.1", - "redux": "^4.0.0" + "highlightjs": "~9.12.0", + "history": "~4.7.2", + "prop-types": "~15.6.2", + "react": "~16.6.3", + "react-dom": "~16.6.3", + "react-redux": "~6.0.0", + "react-router-dom": "~4.3.1", + "redux": "~4.0.1" }, "devDependencies": { - "@babel/core": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-decorators": "^7.0.0", - "@babel/plugin-proposal-export-namespace-from": "^7.0.0", - "@babel/plugin-proposal-function-sent": "^7.0.0", - "@babel/plugin-proposal-json-strings": "^7.0.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-throw-expressions": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-import-meta": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/preset-env": "^7.0.0", + "@babel/core": "^7.2.0", + "@babel/plugin-proposal-class-properties": "^7.2.1", + "@babel/plugin-proposal-decorators": "^7.2.0", + "@babel/plugin-proposal-export-namespace-from": "^7.2.0", + "@babel/plugin-proposal-function-sent": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-numeric-separator": "^7.2.0", + "@babel/plugin-proposal-throw-expressions": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-import-meta": "^7.2.0", + "@babel/plugin-transform-runtime": "^7.2.0", + "@babel/preset-env": "^7.2.0", "@babel/preset-react": "^7.0.0", - "@sencha/ext-react-babel-plugin": "~6.6.2", - "@sencha/ext-react-webpack-plugin": "~6.6.2", - "babel-loader": "^8.0.2", + "@sencha/ext-react-babel-plugin": "~6.6.4", + "@sencha/ext-react-webpack-plugin": "~6.6.4", + "babel-loader": "^8.0.4", "cross-env": "^5.2.0", - "css-loader": "^1.0.0", + "css-loader": "^1.0.1", "html-webpack-plugin": "^3.2.0", - "portfinder": "^1.0.17", - "react-hot-loader": "^4.3.8", + "portfinder": "^1.0.20", + "react-hot-loader": "^4.3.12", "rimraf": "^2.6.2", - "style-loader": "^0.23.0", - "webpack": "^4.26.1", - "webpack-cli": "^3.1.0", - "webpack-dev-server": "^3.1.8", + "style-loader": "^0.23.1", + "webpack": "^4.27.1", + "webpack-cli": "^3.1.2", + "webpack-dev-server": "^3.1.10", "webpack-shell-plugin-next": "^0.6.4" } } diff --git a/packages/ext-react-modern-boilerplate/package.json b/packages/ext-react-modern-boilerplate/package.json index 8da00bf9..49dfe2fc 100644 --- a/packages/ext-react-modern-boilerplate/package.json +++ b/packages/ext-react-modern-boilerplate/package.json @@ -1,7 +1,7 @@ { "name": "@sencha/ext-react-modern-boilerplate", "product": "ext-react", - "version": "6.6.3", + "version": "6.6.4", "description": "A foundation for React 16 apps built with ExtReact components.", "main": "index.js", "scripts": { @@ -38,30 +38,30 @@ "@sencha/ext-modern": "~6.6.0", "@sencha/ext-modern-treegrid": "~6.6.0", "@sencha/ext-modern-theme-material": "~6.6.0", - "@sencha/ext-react": "~6.6.3", - "@sencha/ext-react-transition": "~6.6.3", - "@sencha/ext-react-renderercell": "~6.6.3", + "@sencha/ext-react": "~6.6.4", + "@sencha/ext-react-transition": "~6.6.4", + "@sencha/ext-react-renderercell": "~6.6.4", "prop-types": "^15.6.2", - "react": "^16.6.3", - "react-dom": "^16.6.3", + "react": "~16.6.3", + "react-dom": "~16.6.3", "react-router-dom": "^4.3.1" }, "devDependencies": { "@babel/core": "^7.1.6", "@babel/plugin-proposal-class-properties": "^7.1.0", "@babel/plugin-proposal-decorators": "^7.1.6", - "@babel/plugin-proposal-export-namespace-from": "^7.0.0", + "@babel/plugin-proposal-export-namespace-from": "^7.2.0", "@babel/plugin-proposal-function-sent": "^7.1.0", - "@babel/plugin-proposal-json-strings": "^7.0.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-throw-expressions": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-import-meta": "^7.0.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-numeric-separator": "^7.2.0", + "@babel/plugin-proposal-throw-expressions": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-import-meta": "^7.2.0", "@babel/plugin-transform-runtime": "^7.1.0", "@babel/preset-env": "^7.1.6", "@babel/preset-react": "^7.0.0", - "@sencha/ext-react-babel-plugin": "~6.6.3", - "@sencha/ext-react-webpack-plugin": "~6.6.3", + "@sencha/ext-react-babel-plugin": "~6.6.4", + "@sencha/ext-react-webpack-plugin": "~6.6.4", "babel-loader": "^8.0.4", "cross-env": "^5.2.0", "html-webpack-plugin": "^3.2.0", diff --git a/packages/ext-react-modern-demo/package.json b/packages/ext-react-modern-demo/package.json index 499dcd34..6a40e4b9 100644 --- a/packages/ext-react-modern-demo/package.json +++ b/packages/ext-react-modern-demo/package.json @@ -1,7 +1,7 @@ { "name": "@sencha/ext-react-modern-demo", "product": "ext-react", - "version": "6.6.3", + "version": "6.6.4", "description": "ext-react-modern-demo", "main": "index.js", "scripts": { @@ -32,16 +32,16 @@ "@sencha/ext": "~6.6.0", "@sencha/ext-modern": "~6.6.0", "@sencha/ext-modern-treegrid": "~6.6.0", - "@sencha/ext-react": "~6.6.3", + "@sencha/ext-react": "~6.6.4", "@sencha/ext-charts": "~6.6.0", "@sencha/ext-d3": "~6.6.0", - "@sencha/ext-react-renderercell": "~6.6.3", + "@sencha/ext-react-renderercell": "~6.6.4", "@sencha/ext-ux": "~6.6.0", "@sencha/ext-modern-theme-material": "~6.6.0", "d3": "4.5.0", "prop-types": "^15.6.2", - "react": "^16.6.3", - "react-dom": "^16.6.3", + "react": "~16.6.3", + "react-dom": "~16.6.3", "react-redux": "^5.1.1", "react-router-dom": "^4.3.1", "redux": "^4.0.1" @@ -50,18 +50,18 @@ "@babel/core": "^7.1.6", "@babel/plugin-proposal-class-properties": "^7.1.0", "@babel/plugin-proposal-decorators": "^7.1.6", - "@babel/plugin-proposal-export-namespace-from": "^7.0.0", + "@babel/plugin-proposal-export-namespace-from": "^7.2.0", "@babel/plugin-proposal-function-sent": "^7.1.0", - "@babel/plugin-proposal-json-strings": "^7.0.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-throw-expressions": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-import-meta": "^7.0.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-numeric-separator": "^7.2.0", + "@babel/plugin-proposal-throw-expressions": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-import-meta": "^7.2.0", "@babel/plugin-transform-runtime": "^7.1.0", "@babel/preset-env": "^7.1.6", "@babel/preset-react": "^7.0.0", - "@sencha/ext-react-babel-plugin": "~6.6.3", - "@sencha/ext-react-webpack-plugin": "~6.6.3", + "@sencha/ext-react-babel-plugin": "~6.6.4", + "@sencha/ext-react-webpack-plugin": "~6.6.4", "babel-loader": "^8.0.4", "cross-env": "^5.2.0", "html-webpack-plugin": "^3.2.0", diff --git a/packages/ext-react-modern-renderwhenready/package.json b/packages/ext-react-modern-renderwhenready/package.json index 583c5fe5..8cc38424 100644 --- a/packages/ext-react-modern-renderwhenready/package.json +++ b/packages/ext-react-modern-renderwhenready/package.json @@ -1,6 +1,6 @@ { "name": "@sencha/ext-react-modern-renderwhenready", - "version": "6.6.3", + "version": "6.6.4", "description": "A Demo", "main": "index.js", "scripts": { @@ -34,8 +34,8 @@ "@sencha/ext-modern": "~6.6.0", "@sencha/ext-modern-theme-material": "~6.6.0", "@sencha/ext-modern-treegrid": "~6.6.0", - "@sencha/ext-react": "~6.6.3", - "@sencha/ext-react-renderercell": "~6.6.3", + "@sencha/ext-react": "~6.6.4", + "@sencha/ext-react-renderercell": "~6.6.4", "@sencha/ext-ux": "~6.6.0", "d3": "4.5.0", "prop-types": "^15.6.2", @@ -49,18 +49,18 @@ "@babel/core": "^7.1.6", "@babel/plugin-proposal-class-properties": "^7.1.0", "@babel/plugin-proposal-decorators": "^7.1.6", - "@babel/plugin-proposal-export-namespace-from": "^7.0.0", + "@babel/plugin-proposal-export-namespace-from": "^7.2.0", "@babel/plugin-proposal-function-sent": "^7.1.0", - "@babel/plugin-proposal-json-strings": "^7.0.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-throw-expressions": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-import-meta": "^7.0.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-numeric-separator": "^7.2.0", + "@babel/plugin-proposal-throw-expressions": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-import-meta": "^7.2.0", "@babel/plugin-transform-runtime": "^7.1.0", "@babel/preset-env": "^7.1.6", "@babel/preset-react": "^7.0.0", - "@sencha/ext-react-babel-plugin": "~6.6.3", - "@sencha/ext-react-webpack-plugin": "~6.6.3", + "@sencha/ext-react-babel-plugin": "~6.6.4", + "@sencha/ext-react-webpack-plugin": "~6.6.4", "babel-loader": "^8.0.4", "copy-webpack-plugin": "^4.6.0", "cross-env": "^5.2.0", diff --git a/packages/ext-react-modern-typescript-boilerplate/package.json b/packages/ext-react-modern-typescript-boilerplate/package.json index b9bb0630..c2b72422 100644 --- a/packages/ext-react-modern-typescript-boilerplate/package.json +++ b/packages/ext-react-modern-typescript-boilerplate/package.json @@ -1,7 +1,7 @@ { "name": "@sencha/ext-react-modern-typescript-boilerplate", "product": "ext-react", - "version": "6.6.3", + "version": "6.6.4", "description": "A foundation for React apps built with ExtReact modern toolkit components and TypeScript.", "main": "index.js", "scripts": { @@ -29,29 +29,29 @@ "@sencha/ext-modern": "~6.6.0", "@sencha/ext-modern-theme-material": "~6.6.0", "@sencha/ext-modern-treegrid": "~6.6.0", - "@sencha/ext-react": "~6.6.3", - "@sencha/ext-react-renderercell": "~6.6.3", + "@sencha/ext-react": "~6.6.4", + "@sencha/ext-react-renderercell": "~6.6.4", "prop-types": "^15.6.2", - "react": "^16.6.3", - "react-dom": "^16.6.3", + "react": "~16.6.3", + "react-dom": "~16.6.3", "react-router-dom": "^4.3.1" }, "devDependencies": { "@babel/core": "^7.1.6", "@babel/plugin-proposal-class-properties": "^7.1.0", "@babel/plugin-proposal-decorators": "^7.1.6", - "@babel/plugin-proposal-export-namespace-from": "^7.0.0", + "@babel/plugin-proposal-export-namespace-from": "^7.2.0", "@babel/plugin-proposal-function-sent": "^7.1.0", - "@babel/plugin-proposal-json-strings": "^7.0.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-throw-expressions": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-import-meta": "^7.0.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-numeric-separator": "^7.2.0", + "@babel/plugin-proposal-throw-expressions": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-import-meta": "^7.2.0", "@babel/plugin-transform-runtime": "^7.1.0", "@babel/preset-env": "^7.1.6", "@babel/preset-react": "^7.0.0", - "@sencha/ext-react-babel-plugin": "~6.6.3", - "@sencha/ext-react-webpack-plugin": "~6.6.3", + "@sencha/ext-react-babel-plugin": "~6.6.4", + "@sencha/ext-react-webpack-plugin": "~6.6.4", "babel-loader": "^8.0.4", "cross-env": "^5.2.0", "html-webpack-plugin": "^3.2.0", diff --git a/packages/ext-react-renderercell/package.json b/packages/ext-react-renderercell/package.json index 316d6766..b7140b89 100644 --- a/packages/ext-react-renderercell/package.json +++ b/packages/ext-react-renderercell/package.json @@ -1,6 +1,6 @@ { "name": "@sencha/ext-react-renderercell", - "version": "6.6.3", + "version": "6.6.4", "description": "ext-react-renderercell", "main": "index.js", "author": "Sencha, Inc.", @@ -12,7 +12,7 @@ }, "sencha": { "name": "renderercell", - "version": "6.6.3", + "version": "6.6.4", "compatVersion": "6.6.0", "namespace": "Ext", "type": "code", diff --git a/packages/ext-react-rest-example/package.json b/packages/ext-react-rest-example/package.json index 8446a5d2..685d6ced 100644 --- a/packages/ext-react-rest-example/package.json +++ b/packages/ext-react-rest-example/package.json @@ -1,7 +1,7 @@ { "name": "@sencha/ext-react-rest-example", "private": true, - "version": "6.6.3", + "version": "6.6.4", "description": "An example showing the use of ExtReact stores and proxies with a rest API.", "main": "index.js", "scripts": { @@ -33,13 +33,13 @@ "@sencha/ext-modern": "~6.6.0", "@sencha/ext-modern-theme-material": "~6.6.0", "@sencha/ext-modern-treegrid": "~6.6.0", - "@sencha/ext-react": "~6.6.3", - "@sencha/ext-react-renderercell": "~6.6.3", - "@sencha/ext-react-transition": "~6.6.3", + "@sencha/ext-react": "~6.6.4", + "@sencha/ext-react-renderercell": "~6.6.4", + "@sencha/ext-react-transition": "~6.6.4", "express": "^4.16.4", "prop-types": "^15.6.2", - "react": "^16.6.3", - "react-dom": "^16.6.3", + "react": "~16.6.3", + "react-dom": "~16.6.3", "react-redux": "^5.1.1", "redux": "^4.0.1", "sqlite3": "^4.0.4" @@ -48,18 +48,18 @@ "@babel/core": "^7.1.6", "@babel/plugin-proposal-class-properties": "^7.1.0", "@babel/plugin-proposal-decorators": "^7.1.6", - "@babel/plugin-proposal-export-namespace-from": "^7.0.0", + "@babel/plugin-proposal-export-namespace-from": "^7.2.0", "@babel/plugin-proposal-function-sent": "^7.1.0", - "@babel/plugin-proposal-json-strings": "^7.0.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-throw-expressions": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-import-meta": "^7.0.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-numeric-separator": "^7.2.0", + "@babel/plugin-proposal-throw-expressions": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-import-meta": "^7.2.0", "@babel/plugin-transform-runtime": "^7.1.0", "@babel/preset-env": "^7.1.6", "@babel/preset-react": "^7.0.0", - "@sencha/ext-react-babel-plugin": "~6.6.3", - "@sencha/ext-react-webpack-plugin": "~6.6.3", + "@sencha/ext-react-babel-plugin": "~6.6.4", + "@sencha/ext-react-webpack-plugin": "~6.6.4", "babel-loader": "^8.0.4", "cross-env": "^5.2.0", "html-webpack-plugin": "^3.2.0", diff --git a/packages/ext-react-tests/package.json b/packages/ext-react-tests/package.json index d3f83af3..01e4beef 100644 --- a/packages/ext-react-tests/package.json +++ b/packages/ext-react-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sencha/ext-react-tests", - "version": "6.6.3", + "version": "6.6.4", "description": "Sencha Test suite for the ExtReact library.", "main": "index.js", "private": true, @@ -39,12 +39,12 @@ "@sencha/ext-modern": "~6.6.0", "@sencha/ext-modern-theme-material": "~6.6.0", "@sencha/ext-modern-treegrid": "~6.6.0", - "@sencha/ext-react": "~6.6.3", - "@sencha/ext-react-renderercell": "~6.6.3", - "@sencha/ext-react-transition": "~6.6.3", + "@sencha/ext-react": "~6.6.4", + "@sencha/ext-react-renderercell": "~6.6.4", + "@sencha/ext-react-transition": "~6.6.4", "d3": "4.5.0", - "react": "^16.6.3", - "react-dom": "^16.6.3", + "react": "~16.6.3", + "react-dom": "~16.6.3", "react-redux": "^5.1.1", "react-router": "^4.3.1", "react-router-dom": "^4.3.1", @@ -55,18 +55,18 @@ "@babel/core": "^7.1.6", "@babel/plugin-proposal-class-properties": "^7.1.0", "@babel/plugin-proposal-decorators": "^7.1.6", - "@babel/plugin-proposal-export-namespace-from": "^7.0.0", + "@babel/plugin-proposal-export-namespace-from": "^7.2.0", "@babel/plugin-proposal-function-sent": "^7.1.0", - "@babel/plugin-proposal-json-strings": "^7.0.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-throw-expressions": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-import-meta": "^7.0.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-numeric-separator": "^7.2.0", + "@babel/plugin-proposal-throw-expressions": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-import-meta": "^7.2.0", "@babel/plugin-transform-runtime": "^7.1.0", "@babel/preset-env": "^7.1.6", "@babel/preset-react": "^7.0.0", - "@sencha/ext-react-babel-plugin": "~6.6.3", - "@sencha/ext-react-webpack-plugin": "~6.6.3", + "@sencha/ext-react-babel-plugin": "~6.6.4", + "@sencha/ext-react-webpack-plugin": "~6.6.4", "babel-core": "^7.0.0-bridge.0", "babel-loader": "^8.0.4", "check-dependencies": "^1.1.0", diff --git a/packages/ext-react-transition/package.json b/packages/ext-react-transition/package.json index 85a4e2ac..671f5b79 100644 --- a/packages/ext-react-transition/package.json +++ b/packages/ext-react-transition/package.json @@ -1,6 +1,6 @@ { "name": "@sencha/ext-react-transition", - "version": "6.6.3", + "version": "6.6.4", "description": "ext-react-transition", "main": "index.js", "author": "Sencha, Inc.", @@ -12,7 +12,7 @@ }, "sencha": { "name": "transition", - "version": "6.6.3", + "version": "6.6.4", "compatVersion": "6.6.0", "namespace": "Ext", "type": "code", diff --git a/packages/ext-react-webpack-plugin/dist/pluginUtil.js b/packages/ext-react-webpack-plugin/dist/pluginUtil.js index a110ed14..36c14852 100644 --- a/packages/ext-react-webpack-plugin/dist/pluginUtil.js +++ b/packages/ext-react-webpack-plugin/dist/pluginUtil.js @@ -346,6 +346,39 @@ function _prepareForBuild(app, vars, options, output, compilation) { fs.writeFileSync(path.join(output, 'jsdom-environment.js'), createJSDOMEnvironment(options, output), 'utf8'); fs.writeFileSync(path.join(output, 'workspace.json'), createWorkspaceJson(options, output), 'utf8'); + if (vars.framework == 'angular') { + if (fs.existsSync(path.join(process.cwd(), 'ext-angular/packages/'))) { + var fromPath = path.join(process.cwd(), 'ext-angular/'); + var toPath = path.join(output); + fsx.copySync(fromPath, toPath); + log(app + 'Copying ' + fromPath.replace(process.cwd(), '') + ' to: ' + toPath.replace(process.cwd(), '')); + } + + if (fs.existsSync(path.join(process.cwd(), 'ext-angular/overrides/'))) { + var fromPath = path.join(process.cwd(), 'ext-angular/'); + var toPath = path.join(output); + fsx.copySync(fromPath, toPath); + log(app + 'Copying ' + fromPath.replace(process.cwd(), '') + ' to: ' + toPath.replace(process.cwd(), '')); + } + } + + if (vars.framework == 'react') { + if (fs.existsSync(path.join(process.cwd(), 'ext-react/packages/'))) { + var fromPath = path.join(process.cwd(), 'ext-react/packages/'); + var toPath = path.join(output, 'packages'); + fsx.copySync(fromPath, toPath); + log(app + 'Copying ' + fromPath.replace(process.cwd(), '') + ' to: ' + toPath.replace(process.cwd(), '')); + } + + if (fs.existsSync(path.join(process.cwd(), 'ext-react/overrides/'))) { + var fromPath = path.join(process.cwd(), 'ext-react/overrides/'); + var toPath = path.join(output, 'overrides'); + fsx.copySync(fromPath, toPath); + log(app + 'Copying ' + fromPath.replace(process.cwd(), '') + ' to: ' + toPath.replace(process.cwd(), '')); + } + } //do we ever hit these? + + if (fs.existsSync(path.join(process.cwd(), 'resources/'))) { var fromResources = path.join(process.cwd(), 'resources/'); var toResources = path.join(output, '../resources'); @@ -359,6 +392,20 @@ function _prepareForBuild(app, vars, options, output, compilation) { fsx.copySync(fromResources, toResources); log(app + 'Copying ' + fromResources.replace(process.cwd(), '') + ' to: ' + toResources.replace(process.cwd(), '')); } + + if (fs.existsSync(path.join(process.cwd(), 'packages/'))) { + var fromPackages = path.join(process.cwd(), 'packages/'); + var toPackages = path.join(output, 'packages'); + fsx.copySync(fromPackages, toPackages); + log(app + 'Copying ' + fromPackages.replace(process.cwd(), '') + ' to: ' + toPackages.replace(process.cwd(), '')); + } + + if (fs.existsSync(path.join(process.cwd(), 'overrides/'))) { + var fromPath = path.join(process.cwd(), 'overrides/'); + var toPath = path.join(output, 'overrides'); + fsx.copySync(fromPath, toPath); + log(app + 'Copying ' + fromPath.replace(process.cwd(), '') + ' to: ' + toPath.replace(process.cwd(), '')); + } } vars.firstTime = false; @@ -638,4 +685,4 @@ function _getVersions(app, pluginName, frameworkName) { return app + 'ext-webpack-plugin v' + v.pluginVersion + ', Ext JS v' + v.extVersion + ' ' + v.edition + ' Edition, Sencha Cmd v' + v.cmdVersion + ', webpack v' + v.webpackVersion + frameworkInfo; } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wbHVnaW5VdGlsLmpzIl0sIm5hbWVzIjpbIl9jb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJwYXRoIiwicmVxdWlyZSIsImZzIiwidGhpc1ZhcnMiLCJ0aGlzT3B0aW9ucyIsInBsdWdpbiIsImZyYW1ld29yayIsInVuZGVmaW5lZCIsInBsdWdpbkVycm9ycyIsInB1c2giLCJ2YXJzIiwidmFsaWRhdGVPcHRpb25zIiwiZ2V0VmFsaWRhdGVPcHRpb25zIiwiZ2V0RGVmYXVsdFZhcnMiLCJwbHVnaW5OYW1lIiwiZnN4IiwidG9GYXNoaW9uRGlzdCIsInJlc29sdmUiLCJwcm9jZXNzIiwiY3dkIiwibG9ndiIsImV4aXN0c1N5bmMiLCJmcm9tRmFzaGlvbkRpc3QiLCJqb2luIiwiY29weVN5bmMiLCJhcHAiLCJfZ2V0QXBwIiwicmMiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJnZXREZWZhdWx0T3B0aW9ucyIsInN0cmluZ2lmeSIsImVudmlyb25tZW50IiwicHJvZHVjdGlvbiIsImxvZyIsIl9nZXRWZXJzaW9ucyIsIl9jb21waWxhdGlvbiIsImNvbXBpbGVyIiwiY29tcGlsYXRpb24iLCJob29rcyIsInN1Y2NlZWRNb2R1bGUiLCJ0YXAiLCJtb2R1bGUiLCJyZXNvdXJjZSIsIm1hdGNoIiwidG9vbGtpdCIsImRlcHMiLCJleHRyYWN0RnJvbVNvdXJjZSIsImh0bWxXZWJwYWNrUGx1Z2luQmVmb3JlSHRtbEdlbmVyYXRpb24iLCJkYXRhIiwib3V0cHV0UGF0aCIsImRldlNlcnZlciIsImNvbnRlbnRCYXNlIiwicmVwbGFjZSIsInRyaW0iLCJqc1BhdGgiLCJleHRQYXRoIiwiY3NzUGF0aCIsImFzc2V0cyIsImpzIiwidW5zaGlmdCIsImNzcyIsImUiLCJlcnJvcnMiLCJlbWl0IiwiY2FsbGJhY2siLCJfYnVpbGRFeHRCdW5kbGUiLCJfcHJlcGFyZUZvckJ1aWxkIiwiY29tbWFuZCIsIndhdGNoIiwicmVidWlsZCIsInBhcm1zIiwicHJvZmlsZSIsIndhdGNoU3RhcnRlZCIsImJyb3dzZXIiLCJicm93c2VyQ291bnQiLCJsZW5ndGgiLCJ1cmwiLCJwb3J0Iiwib3BuIiwib3V0cHV0IiwicmltcmFmIiwibWtkaXJwIiwicGFja2FnZXMiLCJ0aGVtZSIsImZpcnN0VGltZSIsInN5bmMiLCJidWlsZFhNTCIsImNyZWF0ZUFwcEpzb24iLCJjcmVhdGVXb3Jrc3BhY2VKc29uIiwiY3JlYXRlSlNET01FbnZpcm9ubWVudCIsIndyaXRlRmlsZVN5bmMiLCJmcm9tUmVzb3VyY2VzIiwidG9SZXNvdXJjZXMiLCJtYW5pZmVzdCIsImJ1bmRsZURpciIsInNlbmNoYSIsIlByb21pc2UiLCJyZWplY3QiLCJvbkJ1aWxkRG9uZSIsIm9wdHMiLCJzaWxlbnQiLCJzdGRpbyIsImVuY29kaW5nIiwiZXhlY3V0ZUFzeW5jIiwidGhlbiIsInJlYXNvbiIsIkRFRkFVTFRfU1VCU1RSUyIsInN1YnN0cmluZ3MiLCJjaGFsayIsImNyb3NzU3Bhd24iLCJjaGlsZCIsIm9uIiwiY29kZSIsInNpZ25hbCIsIkVycm9yIiwiZXJyb3IiLCJzdGRvdXQiLCJzdHIiLCJ0b1N0cmluZyIsInNvbWUiLCJ2IiwiaW5kZXhPZiIsImluY2x1ZGVzIiwicmVkIiwic3RkZXJyIiwic3RySmF2YU9wdHMiLCJjb25zb2xlIiwicyIsImN1cnNvclRvIiwiY2xlYXJMaW5lIiwid3JpdGUiLCJ2ZXJib3NlIiwicHJlZml4IiwicGxhdGZvcm0iLCJncmVlbiIsImZyYW1ld29ya05hbWUiLCJwbHVnaW5QYXRoIiwicGx1Z2luUGtnIiwicGx1Z2luVmVyc2lvbiIsInZlcnNpb24iLCJfcmVzb2x2ZWQiLCJlZGl0aW9uIiwid2VicGFja1BhdGgiLCJ3ZWJwYWNrUGtnIiwid2VicGFja1ZlcnNpb24iLCJleHRQa2ciLCJleHRWZXJzaW9uIiwiY21kUGF0aCIsImNtZFBrZyIsImNtZFZlcnNpb24iLCJ2ZXJzaW9uX2Z1bGwiLCJmcmFtZXdvcmtJbmZvIiwiZnJhbWV3b3JrUGF0aCIsImZyYW1ld29y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QixVQUFILENBQWNxSSxhQUFhLEdBQUMsZUFBNUIsS0FBZ0Q5SCxJQUFJLENBQUNDLEtBQUwsQ0FBVzNCLEVBQUUsQ0FBQzRCLFlBQUgsQ0FBZ0I0SCxhQUFhLEdBQUMsZUFBOUIsRUFBK0MsT0FBL0MsQ0FBWCxDQUFoRCxJQUF1SCxFQUEzSTtBQUNBaEMsSUFBQUEsQ0FBQyxDQUFDa0MsZ0JBQUYsR0FBcUJELFlBQVksQ0FBQ2QsT0FBbEM7QUFDQVksSUFBQUEsYUFBYSxHQUFHLE9BQU9oQixhQUFQLEdBQXVCLElBQXZCLEdBQThCZixDQUFDLENBQUNrQyxnQkFBaEQ7QUFDRDs7QUFDRCxTQUFPbkksR0FBRyxHQUFHLHNCQUFOLEdBQStCaUcsQ0FBQyxDQUFDa0IsYUFBakMsR0FBaUQsWUFBakQsR0FBZ0VsQixDQUFDLENBQUMwQixVQUFsRSxHQUErRSxHQUEvRSxHQUFxRjFCLENBQUMsQ0FBQ3FCLE9BQXZGLEdBQWlHLHdCQUFqRyxHQUE0SHJCLENBQUMsQ0FBQzZCLFVBQTlILEdBQTJJLGFBQTNJLEdBQTJKN0IsQ0FBQyxDQUFDd0IsY0FBN0osR0FBOEtPLGFBQXJMO0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyIvLyoqKioqKioqKipcbmV4cG9ydCBmdW5jdGlvbiBfY29uc3RydWN0b3Iob3B0aW9ucykge1xuICBjb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG4gIGNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKVxuXG4gIHZhciB0aGlzVmFycyA9IHt9XG4gIHZhciB0aGlzT3B0aW9ucyA9IHt9XG4gIHZhciBwbHVnaW4gPSB7fVxuXG4gIGlmIChvcHRpb25zLmZyYW1ld29yayA9PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzVmFycy5wbHVnaW5FcnJvcnMgPSBbXVxuICAgIHRoaXNWYXJzLnBsdWdpbkVycm9ycy5wdXNoKCd3ZWJwYWNrIGNvbmZpZzogZnJhbWV3b3JrIHBhcmFtZXRlciBvbiBleHQtd2VicGFjay1wbHVnaW4gaXMgbm90IGRlZmluZWQgLSB2YWx1ZXM6IHJlYWN0LCBhbmd1bGFyLCBleHRqcycpXG4gICAgcGx1Z2luLnZhcnMgPSB0aGlzVmFyc1xuICAgIHJldHVybiBwbHVnaW5cbiAgfVxuXG4gIGNvbnN0IHZhbGlkYXRlT3B0aW9ucyA9IHJlcXVpcmUoJ3NjaGVtYS11dGlscycpXG4gIHZhbGlkYXRlT3B0aW9ucyhyZXF1aXJlKGAuLyR7b3B0aW9ucy5mcmFtZXdvcmt9VXRpbGApLmdldFZhbGlkYXRlT3B0aW9ucygpLCBvcHRpb25zLCAnJylcblxuICAvL2ZpeCBzZW5jaGEgY21kIG5vIGpldHR5IHNlcnZlciBwcm9ibGVtXG4gIC8vIHZhciB3YXRjaEZpbGUgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSxgbm9kZV9tb2R1bGVzL0BzZW5jaGEvY21kL2Rpc3QvYW50L2J1aWxkL2FwcC93YXRjaC1pbXBsLnhtbGApXG4gIC8vIGxvZ3Yob3B0aW9ucywgYG1vZGlmeSAke3dhdGNoRmlsZX1gKVxuICAvLyB2YXIgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyh3YXRjaEZpbGUsICd1dGYtOCcpO1xuICAvLyB2YXIgaXAgPSAnd2ViU2VydmVyUmVmSWQ9XCJhcHAud2ViLnNlcnZlclwiJztcbiAgLy8gdmFyIG5ld1ZhbHVlID0gZGF0YS5yZXBsYWNlKG5ldyBSZWdFeHAoaXApLCAnJyk7XG4gIC8vIGZzLndyaXRlRmlsZVN5bmMod2F0Y2hGaWxlLCBuZXdWYWx1ZSwgJ3V0Zi04Jyk7XG5cbiAgdGhpc1ZhcnMgPSByZXF1aXJlKGAuLyR7b3B0aW9ucy5mcmFtZXdvcmt9VXRpbGApLmdldERlZmF1bHRWYXJzKClcbiAgdGhpc1ZhcnMuZnJhbWV3b3JrID0gb3B0aW9ucy5mcmFtZXdvcmtcbiAgc3dpdGNoKHRoaXNWYXJzLmZyYW1ld29yaykge1xuICAgIGNhc2UgJ2V4dGpzJzpcbiAgICAgIHRoaXNWYXJzLnBsdWdpbk5hbWUgPSAnZXh0LXdlYnBhY2stcGx1Z2luJ1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmVhY3QnOlxuICAgICAgdGhpc1ZhcnMucGx1Z2luTmFtZSA9ICdleHQtcmVhY3Qtd2VicGFjay1wbHVnaW4nXG4gICAgICBicmVhaztcbiAgICBjYXNlICdhbmd1bGFyJzpcbiAgICAgIHRoaXNWYXJzLnBsdWdpbk5hbWUgPSAnZXh0LWFuZ3VsYXItd2VicGFjay1wbHVnaW4nXG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhpc1ZhcnMucGx1Z2luTmFtZSA9ICdleHQtd2VicGFjay1wbHVnaW4nXG4gIH1cblxuICAvL2ZpeCBmYXNoaW9uIGRpc3QgcHJvYmxlbVxuICBjb25zdCBmc3ggPSByZXF1aXJlKCdmcy1leHRyYScpXG4gIHZhciB0b0Zhc2hpb25EaXN0ID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksYG5vZGVfbW9kdWxlcy9Ac2VuY2hhL2NtZC9kaXN0L2pzL25vZGVfbW9kdWxlcy9mYXNoaW9uL2Rpc3RgKVxuICBsb2d2KG9wdGlvbnMsIGB0b0Zhc2hpb25EaXN0ICR7dG9GYXNoaW9uRGlzdH1gKVxuICBpZiAoIWZzLmV4aXN0c1N5bmModG9GYXNoaW9uRGlzdCkpIHtcbiAgICBsb2d2KG9wdGlvbnMsIGBjb3B5YClcbiAgICB2YXIgZnJvbUZhc2hpb25EaXN0ID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdub2RlX21vZHVsZXMvQHNlbmNoYS8nICsgdGhpc1ZhcnMucGx1Z2luTmFtZSArICcvZmFzaGlvbi9kaXN0LycpXG4gICAgZnN4LmNvcHlTeW5jKGZyb21GYXNoaW9uRGlzdCwgdG9GYXNoaW9uRGlzdClcbiAgfVxuICBlbHNlIHtcbiAgICBsb2d2KG9wdGlvbnMsIGBubyBjb3B5YClcbiAgfVxuXG4gIHRoaXNWYXJzLmFwcCA9IHJlcXVpcmUoJy4vcGx1Z2luVXRpbCcpLl9nZXRBcHAoKVxuICBsb2d2KG9wdGlvbnMsIGBwbHVnaW5OYW1lIC0gJHt0aGlzVmFycy5wbHVnaW5OYW1lfWApXG4gIGxvZ3Yob3B0aW9ucywgYHRoaXNWYXJzLmFwcCAtICR7dGhpc1ZhcnMuYXBwfWApXG5cbiAgY29uc3QgcmMgPSAoZnMuZXhpc3RzU3luYyhgLmV4dC0ke3RoaXNWYXJzLmZyYW1ld29ya31yY2ApICYmIEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGAuZXh0LSR7dGhpc1ZhcnMuZnJhbWV3b3JrfXJjYCwgJ3V0Zi04JykpIHx8IHt9KVxuICB0aGlzT3B0aW9ucyA9IHsgLi4ucmVxdWlyZShgLi8ke3RoaXNWYXJzLmZyYW1ld29ya31VdGlsYCkuZ2V0RGVmYXVsdE9wdGlvbnMoKSwgLi4ub3B0aW9ucywgLi4ucmMgfVxuICBsb2d2KG9wdGlvbnMsIGB0aGlzT3B0aW9ucyAtICR7SlNPTi5zdHJpbmdpZnkodGhpc09wdGlvbnMpfWApXG4gIGlmICh0aGlzT3B0aW9ucy5lbnZpcm9ubWVudCA9PSAncHJvZHVjdGlvbicpIFxuICAgIHt0aGlzVmFycy5wcm9kdWN0aW9uID0gdHJ1ZX1cbiAgZWxzZSBcbiAgICB7dGhpc1ZhcnMucHJvZHVjdGlvbiA9IGZhbHNlfVxuICBsb2cocmVxdWlyZSgnLi9wbHVnaW5VdGlsJykuX2dldFZlcnNpb25zKHRoaXNWYXJzLmFwcCwgdGhpc1ZhcnMucGx1Z2luTmFtZSwgdGhpc1ZhcnMuZnJhbWV3b3JrKSlcbiAgbG9nKHRoaXNWYXJzLmFwcCArICdCdWlsZGluZyBmb3IgJyArIHRoaXNPcHRpb25zLmVudmlyb25tZW50KVxuXG4gIHBsdWdpbi52YXJzID0gdGhpc1ZhcnNcbiAgcGx1Z2luLm9wdGlvbnMgPSB0aGlzT3B0aW9uc1xuICByZXR1cm4gcGx1Z2luXG59XG5cbi8vKioqKioqKioqKlxuZXhwb3J0IGZ1bmN0aW9uIF9jb21waWxhdGlvbihjb21waWxlciwgY29tcGlsYXRpb24sIHZhcnMsIG9wdGlvbnMpIHtcbiAgdHJ5IHtcbiAgICByZXF1aXJlKCcuL3BsdWdpblV0aWwnKS5sb2d2KG9wdGlvbnMsJ0ZVTkNUSU9OIF9jb21waWxhdGlvbicpXG4gICAgaWYgKHZhcnMucHJvZHVjdGlvbikge1xuICAgICAgbG9ndihvcHRpb25zLGBleHQtY29tcGlsYXRpb246IHByb2R1Y3Rpb24gaXMgYCArICB2YXJzLnByb2R1Y3Rpb24pXG4gICAgICBjb21waWxhdGlvbi5ob29rcy5zdWNjZWVkTW9kdWxlLnRhcChgZXh0LXN1Y2NlZWQtbW9kdWxlYCwgKG1vZHVsZSkgPT4ge1xuICAgICAgICBpZiAobW9kdWxlLnJlc291cmNlICYmIG1vZHVsZS5yZXNvdXJjZS5tYXRjaCgvXFwuKGp8dClzeD8kLykgJiYgIW1vZHVsZS5yZXNvdXJjZS5tYXRjaCgvbm9kZV9tb2R1bGVzLykgJiYgIW1vZHVsZS5yZXNvdXJjZS5tYXRjaChgL2V4dC17JG9wdGlvbnMuZnJhbWV3b3JrfS9kaXN0L2ApICYmICFtb2R1bGUucmVzb3VyY2UubWF0Y2goYC9leHQtJHtvcHRpb25zLmZyYW1ld29ya30tJHtvcHRpb25zLnRvb2xraXR9L2ApKSB7XG4gICAgICAgICAgdmFycy5kZXBzID0gWyBcbiAgICAgICAgICAgIC4uLih2YXJzLmRlcHMgfHwgW10pLCBcbiAgICAgICAgICAgIC4uLnJlcXVpcmUoYC4vJHt2YXJzLmZyYW1ld29ya31VdGlsYCkuZXh0cmFjdEZyb21Tb3VyY2UobW9kdWxlLCBvcHRpb25zLCBjb21waWxhdGlvbikgXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGxvZ3Yob3B0aW9ucyxgZXh0LWNvbXBpbGF0aW9uOiBwcm9kdWN0aW9uIGlzIGAgKyAgdmFycy5wcm9kdWN0aW9uKVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy5mcmFtZXdvcmsgIT0gJ2FuZ3VsYXInKSB7XG4gICAgICBjb21waWxhdGlvbi5ob29rcy5odG1sV2VicGFja1BsdWdpbkJlZm9yZUh0bWxHZW5lcmF0aW9uLnRhcChgZXh0LWh0bWwtZ2VuZXJhdGlvbmAsKGRhdGEpID0+IHtcbiAgICAgICAgbG9ndihvcHRpb25zLCdIT09LIGV4dC1odG1sLWdlbmVyYXRpb24nKVxuICAgICAgICBjb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG4gICAgICAgIHZhciBvdXRwdXRQYXRoID0gJydcbiAgICAgICAgaWYgKGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyKSB7XG4gICAgICAgICAgaWYgKGNvbXBpbGVyLm91dHB1dFBhdGggPT09ICcvJykge1xuICAgICAgICAgICAgb3V0cHV0UGF0aCA9IHBhdGguam9pbihjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5jb250ZW50QmFzZSwgb3V0cHV0UGF0aClcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuY29udGVudEJhc2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIG91dHB1dFBhdGggPSAnYnVpbGQnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgb3V0cHV0UGF0aCA9ICcnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIG91dHB1dFBhdGggPSAnYnVpbGQnXG4gICAgICAgIH1cbiAgICAgICAgb3V0cHV0UGF0aCA9IG91dHB1dFBhdGgucmVwbGFjZShwcm9jZXNzLmN3ZCgpLCAnJykudHJpbSgpXG4gICAgICAgIHZhciBqc1BhdGggPSBwYXRoLmpvaW4ob3V0cHV0UGF0aCwgdmFycy5leHRQYXRoLCAnZXh0LmpzJylcbiAgICAgICAgdmFyIGNzc1BhdGggPSBwYXRoLmpvaW4ob3V0cHV0UGF0aCwgdmFycy5leHRQYXRoLCAnZXh0LmNzcycpXG4gICAgICAgIGRhdGEuYXNzZXRzLmpzLnVuc2hpZnQoanNQYXRoKVxuICAgICAgICBkYXRhLmFzc2V0cy5jc3MudW5zaGlmdChjc3NQYXRoKVxuICAgICAgICBsb2codmFycy5hcHAgKyBgQWRkaW5nICR7anNQYXRofSBhbmQgJHtjc3NQYXRofSB0byBpbmRleC5odG1sYClcbiAgICAgIH0pXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgbG9ndihvcHRpb25zLCdza2lwcGVkIEhPT0sgZXh0LWh0bWwtZ2VuZXJhdGlvbicpXG4gICAgfVxuICB9XG4gIGNhdGNoKGUpIHtcbiAgICByZXF1aXJlKCcuL3BsdWdpblV0aWwnKS5sb2d2KG9wdGlvbnMsZSlcbiAgICBjb21waWxhdGlvbi5lcnJvcnMucHVzaCgnX2NvbXBpbGF0aW9uOiAnICsgZSlcbiAgfVxufVxuXG4vLyoqKioqKioqKipcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbWl0KGNvbXBpbGVyLCBjb21waWxhdGlvbiwgdmFycywgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBsb2cgPSByZXF1aXJlKCcuL3BsdWdpblV0aWwnKS5sb2dcbiAgICBjb25zdCBsb2d2ID0gcmVxdWlyZSgnLi9wbHVnaW5VdGlsJykubG9ndlxuICAgIGxvZ3Yob3B0aW9ucywnRlVOQ1RJT04gZW1pdCcpXG4gICAgdmFyIGFwcCA9IHZhcnMuYXBwXG4gICAgdmFyIGZyYW1ld29yayA9IHZhcnMuZnJhbWV3b3JrXG4gICAgY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuICAgIGNvbnN0IF9idWlsZEV4dEJ1bmRsZSA9IHJlcXVpcmUoJy4vcGx1Z2luVXRpbCcpLl9idWlsZEV4dEJ1bmRsZVxuICAgIGxldCBvdXRwdXRQYXRoID0gcGF0aC5qb2luKGNvbXBpbGVyLm91dHB1dFBhdGgsdmFycy5leHRQYXRoKVxuICAgIGlmIChjb21waWxlci5vdXRwdXRQYXRoID09PSAnLycgJiYgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIpIHtcbiAgICAgIG91dHB1dFBhdGggPSBwYXRoLmpvaW4oY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuY29udGVudEJhc2UsIG91dHB1dFBhdGgpXG4gICAgfVxuICAgIGxvZ3Yob3B0aW9ucywnb3V0cHV0UGF0aDogJyArIG91dHB1dFBhdGgpXG4gICAgbG9ndihvcHRpb25zLCdmcmFtZXdvcms6ICcgKyBmcmFtZXdvcmspXG4gICAgaWYgKG9wdGlvbnMuZW1pdCA9PSB0cnVlKSB7XG4gICAgICBpZiAoZnJhbWV3b3JrICE9ICdleHRqcycpIHtcbiAgICAgICAgX3ByZXBhcmVGb3JCdWlsZChhcHAsIHZhcnMsIG9wdGlvbnMsIG91dHB1dFBhdGgsIGNvbXBpbGF0aW9uKVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHJlcXVpcmUoYC4vJHtmcmFtZXdvcmt9VXRpbGApLl9wcmVwYXJlRm9yQnVpbGQoYXBwLCB2YXJzLCBvcHRpb25zLCBvdXRwdXRQYXRoLCBjb21waWxhdGlvbilcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbW1hbmQgPSAnJ1xuICAgICAgaWYgKG9wdGlvbnMud2F0Y2ggPT0gJ3llcycpIHtcbiAgICAgICAgY29tbWFuZCA9ICd3YXRjaCdcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb21tYW5kID0gJ2J1aWxkJ1xuICAgICAgfVxuXG4gICAgICBpZiAodmFycy5yZWJ1aWxkID09IHRydWUpIHtcbiAgICAgICAgdmFyIHBhcm1zID0gW11cbiAgICAgICAgaWYgKG9wdGlvbnMucHJvZmlsZSA9PSB1bmRlZmluZWQgfHwgb3B0aW9ucy5wcm9maWxlID09ICcnIHx8IG9wdGlvbnMucHJvZmlsZSA9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKGNvbW1hbmQgPT0gJ2J1aWxkJykge1xuICAgICAgICAgICAgcGFybXMgPSBbJ2FwcCcsIGNvbW1hbmQsIG9wdGlvbnMuZW52aXJvbm1lbnRdXG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGFybXMgPSBbJ2FwcCcsIGNvbW1hbmQsICctLXdlYi1zZXJ2ZXInLCAnZmFsc2UnLCBvcHRpb25zLmVudmlyb25tZW50XVxuICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmIChjb21tYW5kID09ICdidWlsZCcpIHtcbiAgICAgICAgICAgIHBhcm1zID0gWydhcHAnLCBjb21tYW5kLCBvcHRpb25zLnByb2ZpbGUsIG9wdGlvbnMuZW52aXJvbm1lbnRdXG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGFybXMgPSBbJ2FwcCcsIGNvbW1hbmQsICctLXdlYi1zZXJ2ZXInLCAnZmFsc2UnLCBvcHRpb25zLnByb2ZpbGUsIG9wdGlvbnMuZW52aXJvbm1lbnRdXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhcnMud2F0Y2hTdGFydGVkID09IGZhbHNlKSB7XG4gICAgICAgICAgYXdhaXQgX2J1aWxkRXh0QnVuZGxlKGFwcCwgY29tcGlsYXRpb24sIG91dHB1dFBhdGgsIHBhcm1zLCBvcHRpb25zKVxuICAgICAgICAgIHZhcnMud2F0Y2hTdGFydGVkID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy9jb25zdCBqc0NodW5rID0gY29tcGlsYXRpb24uYWRkQ2h1bmsoYGV4dC1hbmd1bGFyLWpzYClcbiAgICAgICAgLy9qc0NodW5rLmhhc1J1bnRpbWUgPSBqc0NodW5rLmlzSW5pdGlhbCA9ICgpID0+IHRydWU7XG4gICAgICAgIC8vanNDaHVuay5maWxlcy5wdXNoKHBhdGguam9pbignYnVpbGQnLCAnZXh0LWFuZ3VsYXInLCAnZXh0LmpzJykpO1xuICAgICAgICAvL2pzQ2h1bmsuZmlsZXMucHVzaChwYXRoLmpvaW4oJ2J1aWxkJywgJ2V4dC1hbmd1bGFyJywgICdleHQuY3NzJykpO1xuICAgICAgICAvL2pzQ2h1bmsuaWQgPSAtMjsgLy8gdGhpcyBmb3JjZXMgaHRtbC13ZWJwYWNrLXBsdWdpbiB0byBpbmNsdWRlIGV4dC5qcyBmaXJzdFxuXG4gICAgICAgIGlmKG9wdGlvbnMuYnJvd3NlciA9PSB0cnVlICYmIG9wdGlvbnMud2F0Y2ggPT0gJ3llcycpIHtcbiAgICAgICAgICBpZiAodmFycy5icm93c2VyQ291bnQgPT0gMCAmJiBjb21waWxhdGlvbi5lcnJvcnMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIHZhciB1cmwgPSAnaHR0cDovL2xvY2FsaG9zdDonICsgb3B0aW9ucy5wb3J0XG4gICAgICAgICAgICBsb2coYXBwICsgYE9wZW5pbmcgYnJvd3NlciBhdCAke3VybH1gKVxuICAgICAgICAgICAgdmFycy5icm93c2VyQ291bnQrK1xuICAgICAgICAgICAgY29uc3Qgb3BuID0gcmVxdWlyZSgnb3BuJylcbiAgICAgICAgICAgIG9wbih1cmwpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGxvZ3Yob3B0aW9ucywnYnJvd3NlciBOT1Qgb3BlbmVkJylcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjaygpXG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FsbGJhY2soKVxuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGxvZyhgJHt2YXJzLmFwcH1GVU5DVElPTiBlbWl0IG5vdCBydW5gKVxuICAgICAgaWYob3B0aW9ucy5icm93c2VyID09IHRydWUpIHtcbiAgICAgICAgaWYgKHZhcnMuYnJvd3NlckNvdW50ID09IDAgJiYgb3B0aW9ucy53YXRjaCA9PSAneWVzJykge1xuICAgICAgICAgIHZhciB1cmwgPSAnaHR0cDovL2xvY2FsaG9zdDonICsgb3B0aW9ucy5wb3J0XG4gICAgICAgICAgbG9nKGFwcCArIGBPcGVuaW5nIGJyb3dzZXIgYXQgJHt1cmx9YClcbiAgICAgICAgICB2YXJzLmJyb3dzZXJDb3VudCsrXG4gICAgICAgICAgY29uc3Qgb3BuID0gcmVxdWlyZSgnb3BuJylcbiAgICAgICAgICBvcG4odXJsKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbG9ndihvcHRpb25zLCdicm93c2VyIE5PVCBvcGVuZWQnKVxuICAgICAgfVxuICAgICAgY2FsbGJhY2soKVxuICAgIH1cbiAgfVxuICBjYXRjaChlKSB7XG4gICAgcmVxdWlyZSgnLi9wbHVnaW5VdGlsJykubG9ndihvcHRpb25zLGUpXG4gICAgY29tcGlsYXRpb24uZXJyb3JzLnB1c2goJ2VtaXQ6ICcgKyBlKVxuICAgIGNhbGxiYWNrKClcbiAgfVxufVxuXG4vLyoqKioqKioqKipcbmV4cG9ydCBmdW5jdGlvbiBfcHJlcGFyZUZvckJ1aWxkKGFwcCwgdmFycywgb3B0aW9ucywgb3V0cHV0LCBjb21waWxhdGlvbikge1xuICB0cnkge1xuICAgIGxvZ3Yob3B0aW9ucywnRlVOQ1RJT04gX3ByZXBhcmVGb3JCdWlsZCcpXG4gICAgY29uc3QgcmltcmFmID0gcmVxdWlyZSgncmltcmFmJylcbiAgICBjb25zdCBta2RpcnAgPSByZXF1aXJlKCdta2RpcnAnKVxuICAgIGNvbnN0IGZzeCA9IHJlcXVpcmUoJ2ZzLWV4dHJhJylcbiAgICBjb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJylcbiAgICBjb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG5cbiAgICB2YXIgcGFja2FnZXMgPSBvcHRpb25zLnBhY2thZ2VzXG4gICAgdmFyIHRvb2xraXQgPSBvcHRpb25zLnRvb2xraXRcbiAgICB2YXIgdGhlbWUgPSBvcHRpb25zLnRoZW1lXG5cbiAgICB0aGVtZSA9IHRoZW1lIHx8ICh0b29sa2l0ID09PSAnY2xhc3NpYycgPyAndGhlbWUtdHJpdG9uJyA6ICd0aGVtZS1tYXRlcmlhbCcpXG4gICAgbG9ndihvcHRpb25zLCdmaXJzdFRpbWU6ICcgKyB2YXJzLmZpcnN0VGltZSlcbiAgICBpZiAodmFycy5maXJzdFRpbWUpIHtcbiAgICAgIHJpbXJhZi5zeW5jKG91dHB1dClcbiAgICAgIG1rZGlycC5zeW5jKG91dHB1dClcbiAgICAgIGNvbnN0IGJ1aWxkWE1MID0gcmVxdWlyZSgnLi9hcnRpZmFjdHMnKS5idWlsZFhNTFxuICAgICAgY29uc3QgY3JlYXRlQXBwSnNvbiA9IHJlcXVpcmUoJy4vYXJ0aWZhY3RzJykuY3JlYXRlQXBwSnNvblxuICAgICAgY29uc3QgY3JlYXRlV29ya3NwYWNlSnNvbiA9IHJlcXVpcmUoJy4vYXJ0aWZhY3RzJykuY3JlYXRlV29ya3NwYWNlSnNvblxuICAgICAgY29uc3QgY3JlYXRlSlNET01FbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vYXJ0aWZhY3RzJykuY3JlYXRlSlNET01FbnZpcm9ubWVudFxuXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihvdXRwdXQsICdidWlsZC54bWwnKSwgYnVpbGRYTUwodmFycy5wcm9kdWN0aW9uLCBvcHRpb25zLCBvdXRwdXQpLCAndXRmOCcpXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihvdXRwdXQsICdhcHAuanNvbicpLCBjcmVhdGVBcHBKc29uKHRoZW1lLCBwYWNrYWdlcywgdG9vbGtpdCwgb3B0aW9ucywgb3V0cHV0KSwgJ3V0ZjgnKVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ob3V0cHV0LCAnanNkb20tZW52aXJvbm1lbnQuanMnKSwgY3JlYXRlSlNET01FbnZpcm9ubWVudChvcHRpb25zLCBvdXRwdXQpLCAndXRmOCcpXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihvdXRwdXQsICd3b3Jrc3BhY2UuanNvbicpLCBjcmVhdGVXb3Jrc3BhY2VKc29uKG9wdGlvbnMsIG91dHB1dCksICd1dGY4JylcblxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksJ3Jlc291cmNlcy8nKSkpIHtcbiAgICAgICAgdmFyIGZyb21SZXNvdXJjZXMgPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ3Jlc291cmNlcy8nKVxuICAgICAgICB2YXIgdG9SZXNvdXJjZXMgPSBwYXRoLmpvaW4ob3V0cHV0LCAnLi4vcmVzb3VyY2VzJylcbiAgICAgICAgZnN4LmNvcHlTeW5jKGZyb21SZXNvdXJjZXMsIHRvUmVzb3VyY2VzKVxuICAgICAgICBsb2coYXBwICsgJ0NvcHlpbmcgJyArIGZyb21SZXNvdXJjZXMucmVwbGFjZShwcm9jZXNzLmN3ZCgpLCAnJykgKyAnIHRvOiAnICsgdG9SZXNvdXJjZXMucmVwbGFjZShwcm9jZXNzLmN3ZCgpLCAnJykpXG4gICAgICB9XG5cbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCdyZXNvdXJjZXMvJykpKSB7XG4gICAgICAgIHZhciBmcm9tUmVzb3VyY2VzID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdyZXNvdXJjZXMvJylcbiAgICAgICAgdmFyIHRvUmVzb3VyY2VzID0gcGF0aC5qb2luKG91dHB1dCwgJ3Jlc291cmNlcycpXG4gICAgICAgIGZzeC5jb3B5U3luYyhmcm9tUmVzb3VyY2VzLCB0b1Jlc291cmNlcylcbiAgICAgICAgbG9nKGFwcCArICdDb3B5aW5nICcgKyBmcm9tUmVzb3VyY2VzLnJlcGxhY2UocHJvY2Vzcy5jd2QoKSwgJycpICsgJyB0bzogJyArIHRvUmVzb3VyY2VzLnJlcGxhY2UocHJvY2Vzcy5jd2QoKSwgJycpKVxuICAgICAgfVxuICAgIH1cbiAgICB2YXJzLmZpcnN0VGltZSA9IGZhbHNlXG4gICAgdmFyIGpzID0gJydcbiAgICBpZiAodmFycy5wcm9kdWN0aW9uKSB7XG4gICAgICB2YXJzLmRlcHMucHVzaCgnRXh0LnJlcXVpcmUoXCJFeHQubGF5b3V0LipcIik7XFxuJylcbiAgICAgIGpzID0gdmFycy5kZXBzLmpvaW4oJztcXG4nKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBqcyA9ICdFeHQucmVxdWlyZShcIkV4dC4qXCIpJ1xuICAgIH1cbiAgICBpZiAodmFycy5tYW5pZmVzdCA9PT0gbnVsbCB8fCBqcyAhPT0gdmFycy5tYW5pZmVzdCkge1xuICAgICAgdmFycy5tYW5pZmVzdCA9IGpzXG4gICAgICBjb25zdCBtYW5pZmVzdCA9IHBhdGguam9pbihvdXRwdXQsICdtYW5pZmVzdC5qcycpXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKG1hbmlmZXN0LCBqcywgJ3V0ZjgnKVxuICAgICAgdmFycy5yZWJ1aWxkID0gdHJ1ZVxuICAgICAgdmFyIGJ1bmRsZURpciA9IG91dHB1dC5yZXBsYWNlKHByb2Nlc3MuY3dkKCksICcnKVxuICAgICAgaWYgKGJ1bmRsZURpci50cmltKCkgPT0gJycpIHtidW5kbGVEaXIgPSAnLi8nfVxuICAgICAgbG9nKGFwcCArICdCdWlsZGluZyBFeHQgYnVuZGxlIGF0OiAnICsgYnVuZGxlRGlyKVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhcnMucmVidWlsZCA9IGZhbHNlXG4gICAgICBsb2coYXBwICsgJ0V4dCByZWJ1aWxkIE5PVCBuZWVkZWQnKVxuICAgIH1cbiAgfVxuICBjYXRjaChlKSB7XG4gICAgcmVxdWlyZSgnLi9wbHVnaW5VdGlsJykubG9ndihvcHRpb25zLGUpXG4gICAgY29tcGlsYXRpb24uZXJyb3JzLnB1c2goJ19wcmVwYXJlRm9yQnVpbGQ6ICcgKyBlKVxuICB9XG59XG5cbi8vKioqKioqKioqKlxuZXhwb3J0IGZ1bmN0aW9uIF9idWlsZEV4dEJ1bmRsZShhcHAsIGNvbXBpbGF0aW9uLCBvdXRwdXRQYXRoLCBwYXJtcywgb3B0aW9ucykge1xuICB0cnkge1xuICAgIGNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKVxuICAgIGNvbnN0IGxvZ3YgPSByZXF1aXJlKCcuL3BsdWdpblV0aWwnKS5sb2d2XG4gICAgbG9ndihvcHRpb25zLCdGVU5DVElPTiBfYnVpbGRFeHRCdW5kbGUnKVxuXG4gICAgbGV0IHNlbmNoYTsgdHJ5IHsgc2VuY2hhID0gcmVxdWlyZSgnQHNlbmNoYS9jbWQnKSB9IGNhdGNoIChlKSB7IHNlbmNoYSA9ICdzZW5jaGEnIH1cbiAgICBpZiAoZnMuZXhpc3RzU3luYyhzZW5jaGEpKSB7XG4gICAgICBsb2d2KG9wdGlvbnMsJ3NlbmNoYSBmb2xkZXIgZXhpc3RzJylcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBsb2d2KG9wdGlvbnMsJ3NlbmNoYSBmb2xkZXIgRE9FUyBOT1QgZXhpc3QnKVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBvbkJ1aWxkRG9uZSA9ICgpID0+IHtcbiAgICAgICAgbG9ndihvcHRpb25zLCdvbkJ1aWxkRG9uZScpXG4gICAgICAgIHJlc29sdmUoKVxuICAgICAgfVxuXG4gICAgICB2YXIgb3B0cyA9IHsgY3dkOiBvdXRwdXRQYXRoLCBzaWxlbnQ6IHRydWUsIHN0ZGlvOiAncGlwZScsIGVuY29kaW5nOiAndXRmLTgnfVxuICAgICAgZXhlY3V0ZUFzeW5jKGFwcCwgc2VuY2hhLCBwYXJtcywgb3B0cywgY29tcGlsYXRpb24sIG9wdGlvbnMpLnRoZW4gKFxuICAgICAgICBmdW5jdGlvbigpIHsgb25CdWlsZERvbmUoKSB9LCBcbiAgICAgICAgZnVuY3Rpb24ocmVhc29uKSB7IHJlamVjdChyZWFzb24pIH1cbiAgICAgIClcbiAgICB9KVxuICB9XG4gIGNhdGNoKGUpIHtcbiAgICByZXF1aXJlKCcuL3BsdWdpblV0aWwnKS5sb2d2KG9wdGlvbnMsZSlcbiAgICBjb21waWxhdGlvbi5lcnJvcnMucHVzaCgnX2J1aWxkRXh0QnVuZGxlOiAnICsgZSlcbiAgICBjYWxsYmFjaygpXG4gIH1cbn1cblxuLy8qKioqKioqKioqXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUFzeW5jIChhcHAsIGNvbW1hbmQsIHBhcm1zLCBvcHRzLCBjb21waWxhdGlvbiwgb3B0aW9ucykge1xuICB0cnkge1xuICAgIC8vY29uc3QgREVGQVVMVF9TVUJTVFJTID0gWydbSU5GXSBMb2FkaW5nJywgJ1tJTkZdIFByb2Nlc3NpbmcnLCAnW0xPR10gRmFzaGlvbiBidWlsZCBjb21wbGV0ZScsICdbRVJSXScsICdbV1JOXScsIFwiW0lORl0gU2VydmVyXCIsIFwiW0lORl0gV3JpdGluZ1wiLCBcIltJTkZdIExvYWRpbmcgQnVpbGRcIiwgXCJbSU5GXSBXYWl0aW5nXCIsIFwiW0xPR10gRmFzaGlvbiB3YWl0aW5nXCJdO1xuICAgIGNvbnN0IERFRkFVTFRfU1VCU1RSUyA9IFtcIltJTkZdIHhTZXJ2ZXJcIiwgJ1tJTkZdIExvYWRpbmcnLCAnW0lORl0gQXBwZW5kJywgJ1tJTkZdIFByb2Nlc3NpbmcnLCAnW0lORl0gUHJvY2Vzc2luZyBCdWlsZCcsICdbTE9HXSBGYXNoaW9uIGJ1aWxkIGNvbXBsZXRlJywgJ1tFUlJdJywgJ1tXUk5dJywgXCJbSU5GXSBXcml0aW5nXCIsIFwiW0lORl0gTG9hZGluZyBCdWlsZFwiLCBcIltJTkZdIFdhaXRpbmdcIiwgXCJbTE9HXSBGYXNoaW9uIHdhaXRpbmdcIl07XG4gICAgdmFyIHN1YnN0cmluZ3MgPSBERUZBVUxUX1NVQlNUUlMgXG4gICAgdmFyIGNoYWxrID0gcmVxdWlyZSgnY2hhbGsnKVxuICAgIGNvbnN0IGNyb3NzU3Bhd24gPSByZXF1aXJlKCdjcm9zcy1zcGF3bicpXG4gICAgY29uc3QgbG9nID0gcmVxdWlyZSgnLi9wbHVnaW5VdGlsJykubG9nXG4gICAgbG9ndihvcHRpb25zLCAnRlVOQ1RJT04gZXhlY3V0ZUFzeW5jJylcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBsb2d2KG9wdGlvbnMsYGNvbW1hbmQgLSAke2NvbW1hbmR9YClcbiAgICAgIGxvZ3Yob3B0aW9ucywgYHBhcm1zIC0gJHtwYXJtc31gKVxuICAgICAgbG9ndihvcHRpb25zLCBgb3B0cyAtICR7SlNPTi5zdHJpbmdpZnkob3B0cyl9YClcbiAgICAgIGxldCBjaGlsZCA9IGNyb3NzU3Bhd24oY29tbWFuZCwgcGFybXMsIG9wdHMpXG4gICAgICBjaGlsZC5vbignY2xvc2UnLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICAgIGxvZ3Yob3B0aW9ucywgYG9uIGNsb3NlOiBgICsgY29kZSkgXG4gICAgICAgIGlmKGNvZGUgPT09IDApIHsgcmVzb2x2ZSgwKSB9XG4gICAgICAgIGVsc2UgeyBjb21waWxhdGlvbi5lcnJvcnMucHVzaCggbmV3IEVycm9yKGNvZGUpICk7IHJlc29sdmUoMCkgfVxuICAgICAgfSlcbiAgICAgIGNoaWxkLm9uKCdlcnJvcicsIChlcnJvcikgPT4geyBcbiAgICAgICAgbG9ndihvcHRpb25zLCBgb24gZXJyb3JgKSBcbiAgICAgICAgY29tcGlsYXRpb24uZXJyb3JzLnB1c2goZXJyb3IpXG4gICAgICAgIHJlc29sdmUoMClcbiAgICAgIH0pXG4gICAgICBjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCAoZGF0YSkgPT4ge1xuICAgICAgICB2YXIgc3RyID0gZGF0YS50b1N0cmluZygpLnJlcGxhY2UoL1xccj9cXG58XFxyL2csIFwiIFwiKS50cmltKClcbiAgICAgICAgbG9ndihvcHRpb25zLCBgJHtzdHJ9YClcbiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS50b1N0cmluZygpLm1hdGNoKC93YWl0aW5nIGZvciBjaGFuZ2VzXFwuXFwuXFwuLykpIHtcbiAgICAgICAgICByZXNvbHZlKDApXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYgKHN1YnN0cmluZ3Muc29tZShmdW5jdGlvbih2KSB7IHJldHVybiBkYXRhLmluZGV4T2YodikgPj0gMDsgfSkpIHsgXG4gICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShcIltJTkZdXCIsIFwiXCIpXG4gICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShcIltMT0ddXCIsIFwiXCIpXG4gICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShwcm9jZXNzLmN3ZCgpLCAnJykudHJpbSgpXG4gICAgICAgICAgICBpZiAoc3RyLmluY2x1ZGVzKFwiW0VSUl1cIikpIHtcbiAgICAgICAgICAgICAgY29tcGlsYXRpb24uZXJyb3JzLnB1c2goYXBwICsgc3RyLnJlcGxhY2UoL15cXFtFUlJcXF0gL2dpLCAnJykpO1xuICAgICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShcIltFUlJdXCIsIGAke2NoYWxrLnJlZChcIltFUlJdXCIpfWApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb2coYCR7YXBwfSR7c3RyfWApIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIGNoaWxkLnN0ZGVyci5vbignZGF0YScsIChkYXRhKSA9PiB7XG4gICAgICAgIGxvZ3Yob3B0aW9ucywgYGVycm9yIG9uIGNsb3NlOiBgICsgZGF0YSkgXG4gICAgICAgIHZhciBzdHIgPSBkYXRhLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxyP1xcbnxcXHIvZywgXCIgXCIpLnRyaW0oKVxuICAgICAgICB2YXIgc3RySmF2YU9wdHMgPSBcIlBpY2tlZCB1cCBfSkFWQV9PUFRJT05TXCI7XG4gICAgICAgIHZhciBpbmNsdWRlcyA9IHN0ci5pbmNsdWRlcyhzdHJKYXZhT3B0cylcbiAgICAgICAgaWYgKCFpbmNsdWRlcykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAke2FwcH0gJHtjaGFsay5yZWQoXCJbRVJSXVwiKX0gJHtzdHJ9YClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICB9XG4gIGNhdGNoKGUpIHtcbiAgICByZXF1aXJlKCcuL3BsdWdpblV0aWwnKS5sb2d2KG9wdGlvbnMsZSlcbiAgICBjb21waWxhdGlvbi5lcnJvcnMucHVzaCgnZXhlY3V0ZUFzeW5jOiAnICsgZSlcbiAgICBjYWxsYmFjaygpXG4gIH0gXG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZyhzKSB7XG4gIHJlcXVpcmUoJ3JlYWRsaW5lJykuY3Vyc29yVG8ocHJvY2Vzcy5zdGRvdXQsIDApXG4gIHRyeSB7XG4gICAgcHJvY2Vzcy5zdGRvdXQuY2xlYXJMaW5lKClcbiAgfVxuICBjYXRjaChlKSB7fVxuICBwcm9jZXNzLnN0ZG91dC53cml0ZShzKVxuICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXFxuJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ3Yob3B0aW9ucywgcykge1xuICBpZiAob3B0aW9ucy52ZXJib3NlID09ICd5ZXMnKSB7XG4gICAgcmVxdWlyZSgncmVhZGxpbmUnKS5jdXJzb3JUbyhwcm9jZXNzLnN0ZG91dCwgMClcbiAgICB0cnkge1xuICAgICAgcHJvY2Vzcy5zdGRvdXQuY2xlYXJMaW5lKClcbiAgICB9XG4gICAgY2F0Y2goZSkge31cbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShgLXZlcmJvc2U6ICR7c31gKVxuICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcXG4nKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfZ2V0QXBwKCkge1xuICB2YXIgY2hhbGsgPSByZXF1aXJlKCdjaGFsaycpXG4gIHZhciBwcmVmaXggPSBgYFxuICBjb25zdCBwbGF0Zm9ybSA9IHJlcXVpcmUoJ29zJykucGxhdGZvcm0oKVxuICBpZiAocGxhdGZvcm0gPT0gJ2RhcndpbicpIHsgcHJlZml4ID0gYOKEuSDvvaJleHTvvaM6YCB9XG4gIGVsc2UgeyBwcmVmaXggPSBgaSBbZXh0XTpgIH1cbiAgcmV0dXJuIGAke2NoYWxrLmdyZWVuKHByZWZpeCl9IGBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9nZXRWZXJzaW9ucyhhcHAsIHBsdWdpbk5hbWUsIGZyYW1ld29ya05hbWUpIHtcbiAgY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuICBjb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJylcblxuICB2YXIgdiA9IHt9XG4gIHZhciBwbHVnaW5QYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksJ25vZGVfbW9kdWxlcy9Ac2VuY2hhJywgcGx1Z2luTmFtZSlcbiAgdmFyIHBsdWdpblBrZyA9IChmcy5leGlzdHNTeW5jKHBsdWdpblBhdGgrJy9wYWNrYWdlLmpzb24nKSAmJiBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwbHVnaW5QYXRoKycvcGFja2FnZS5qc29uJywgJ3V0Zi04JykpIHx8IHt9KTtcbiAgdi5wbHVnaW5WZXJzaW9uID0gcGx1Z2luUGtnLnZlcnNpb25cbiAgdi5fcmVzb2x2ZWQgPSBwbHVnaW5Qa2cuX3Jlc29sdmVkXG4gIGlmICh2Ll9yZXNvbHZlZCA9PSB1bmRlZmluZWQpIHtcbiAgICB2LmVkaXRpb24gPSBgQ29tbWVyY2lhbGBcbiAgfVxuICBlbHNlIHtcbiAgICBpZiAoLTEgPT0gdi5fcmVzb2x2ZWQuaW5kZXhPZignY29tbXVuaXR5JykpIHtcbiAgICAgIHYuZWRpdGlvbiA9IGBDb21tZXJjaWFsYFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHYuZWRpdGlvbiA9IGBDb21tdW5pdHlgXG4gICAgfVxuICB9XG5cbiAgdmFyIHdlYnBhY2tQYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksJ25vZGVfbW9kdWxlcy93ZWJwYWNrJylcbiAgdmFyIHdlYnBhY2tQa2cgPSAoZnMuZXhpc3RzU3luYyh3ZWJwYWNrUGF0aCsnL3BhY2thZ2UuanNvbicpICYmIEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHdlYnBhY2tQYXRoKycvcGFja2FnZS5qc29uJywgJ3V0Zi04JykpIHx8IHt9KTtcbiAgdi53ZWJwYWNrVmVyc2lvbiA9IHdlYnBhY2tQa2cudmVyc2lvblxuXG4gIHZhciBleHRQYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksJ25vZGVfbW9kdWxlcy9Ac2VuY2hhL2V4dCcpXG4gIHZhciBleHRQa2cgPSAoZnMuZXhpc3RzU3luYyhleHRQYXRoKycvcGFja2FnZS5qc29uJykgJiYgSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoZXh0UGF0aCsnL3BhY2thZ2UuanNvbicsICd1dGYtOCcpKSB8fCB7fSk7XG4gIHYuZXh0VmVyc2lvbiA9IGV4dFBrZy5zZW5jaGEudmVyc2lvblxuXG4gIHZhciBjbWRQYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksYG5vZGVfbW9kdWxlcy9Ac2VuY2hhL2NtZGApXG4gIHZhciBjbWRQa2cgPSAoZnMuZXhpc3RzU3luYyhjbWRQYXRoKycvcGFja2FnZS5qc29uJykgJiYgSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoY21kUGF0aCsnL3BhY2thZ2UuanNvbicsICd1dGYtOCcpKSB8fCB7fSk7XG4gIHYuY21kVmVyc2lvbiA9IGNtZFBrZy52ZXJzaW9uX2Z1bGxcblxuICBpZiAodi5jbWRWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgIHZhciBjbWRQYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksYG5vZGVfbW9kdWxlcy9Ac2VuY2hhLyR7cGx1Z2luTmFtZX0vbm9kZV9tb2R1bGVzL0BzZW5jaGEvY21kYClcbiAgICB2YXIgY21kUGtnID0gKGZzLmV4aXN0c1N5bmMoY21kUGF0aCsnL3BhY2thZ2UuanNvbicpICYmIEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGNtZFBhdGgrJy9wYWNrYWdlLmpzb24nLCAndXRmLTgnKSkgfHwge30pO1xuICAgIHYuY21kVmVyc2lvbiA9IGNtZFBrZy52ZXJzaW9uX2Z1bGxcbiAgfVxuXG4gIHZhciBmcmFtZXdvcmtJbmZvID0gJydcbiAgIGlmIChmcmFtZXdvcmtOYW1lICE9IHVuZGVmaW5lZCAmJiBmcmFtZXdvcmtOYW1lICE9ICdleHRqcycpIHtcbiAgICB2YXIgZnJhbWV3b3JrUGF0aCA9ICcnXG4gICAgaWYgKGZyYW1ld29ya05hbWUgPT0gJ3JlYWN0Jykge1xuICAgICAgZnJhbWV3b3JrUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCdub2RlX21vZHVsZXMvcmVhY3QnKVxuICAgIH1cbiAgICBpZiAoZnJhbWV3b3JrTmFtZSA9PSAnYW5ndWxhcicpIHtcbiAgICAgIGZyYW1ld29ya1BhdGggPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwnbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL2NvcmUnKVxuICAgIH1cbiAgICB2YXIgZnJhbWV3b3JrUGtnID0gKGZzLmV4aXN0c1N5bmMoZnJhbWV3b3JrUGF0aCsnL3BhY2thZ2UuanNvbicpICYmIEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGZyYW1ld29ya1BhdGgrJy9wYWNrYWdlLmpzb24nLCAndXRmLTgnKSkgfHwge30pO1xuICAgIHYuZnJhbWV3b3JrVmVyc2lvbiA9IGZyYW1ld29ya1BrZy52ZXJzaW9uXG4gICAgZnJhbWV3b3JrSW5mbyA9ICcsICcgKyBmcmFtZXdvcmtOYW1lICsgJyB2JyArIHYuZnJhbWV3b3JrVmVyc2lvblxuICB9XG4gIHJldHVybiBhcHAgKyAnZXh0LXdlYnBhY2stcGx1Z2luIHYnICsgdi5wbHVnaW5WZXJzaW9uICsgJywgRXh0IEpTIHYnICsgdi5leHRWZXJzaW9uICsgJyAnICsgdi5lZGl0aW9uICsgJyBFZGl0aW9uLCBTZW5jaGEgQ21kIHYnICsgdi5jbWRWZXJzaW9uICsgJywgd2VicGFjayB2JyArIHYud2VicGFja1ZlcnNpb24gKyBmcmFtZXdvcmtJbmZvXG4gfSJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wbHVnaW5VdGlsLmpzIl0sIm5hbWVzIjpbIl9jb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJwYXRoIiwicmVxdWlyZSIsImZzIiwidGhpc1ZhcnMiLCJ0aGlzT3B0aW9ucyIsInBsdWdpbiIsImZyYW1ld29yayIsInVuZGVmaW5lZCIsInBsdWdpbkVycm9ycyIsInB1c2giLCJ2YXJzIiwidmFsaWRhdGVPcHRpb25zIiwiZ2V0VmFsaWRhdGVPcHRpb25zIiwiZ2V0RGVmYXVsdFZhcnMiLCJwbHVnaW5OYW1lIiwiZnN4IiwidG9GYXNoaW9uRGlzdCIsInJlc29sdmUiLCJwcm9jZXNzIiwiY3dkIiwibG9ndiIsImV4aXN0c1N5bmMiLCJmcm9tRmFzaGlvbkRpc3QiLCJqb2luIiwiY29weVN5bmMiLCJhcHAiLCJfZ2V0QXBwIiwicmMiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJnZXREZWZhdWx0T3B0aW9ucyIsInN0cmluZ2lmeSIsImVudmlyb25tZW50IiwicHJvZHVjdGlvbiIsImxvZyIsIl9nZXRWZXJzaW9ucyIsIl9jb21waWxhdGlvbiIsImNvbXBpbGVyIiwiY29tcGlsYXRpb24iLCJob29rcyIsInN1Y2NlZWRNb2R1bGUiLCJ0YXAiLCJtb2R1bGUiLCJyZXNvdXJjZSIsIm1hdGNoIiwidG9vbGtpdCIsImRlcHMiLCJleHRyYWN0RnJvbVNvdXJjZSIsImh0bWxXZWJwYWNrUGx1Z2luQmVmb3JlSHRtbEdlbmVyYXRpb24iLCJkYXRhIiwib3V0cHV0UGF0aCIsImRldlNlcnZlciIsImNvbnRlbnRCYXNlIiwicmVwbGFjZSIsInRyaW0iLCJqc1BhdGgiLCJleHRQYXRoIiwiY3NzUGF0aCIsImFzc2V0cyIsImpzIiwidW5zaGlmdCIsImNzcyIsImUiLCJlcnJvcnMiLCJlbWl0IiwiY2FsbGJhY2siLCJfYnVpbGRFeHRCdW5kbGUiLCJfcHJlcGFyZUZvckJ1aWxkIiwiY29tbWFuZCIsIndhdGNoIiwicmVidWlsZCIsInBhcm1zIiwicHJvZmlsZSIsIndhdGNoU3RhcnRlZCIsImJyb3dzZXIiLCJicm93c2VyQ291bnQiLCJsZW5ndGgiLCJ1cmwiLCJwb3J0Iiwib3BuIiwib3V0cHV0IiwicmltcmFmIiwibWtkaXJwIiwicGFja2FnZXMiLCJ0aGVtZSIsImZpcnN0VGltZSIsInN5bmMiLCJidWlsZFhNTCIsImNyZWF0ZUFwcEpzb24iLCJjcmVhdGVXb3Jrc3BhY2VKc29uIiwiY3JlYXRlSlNET01FbnZpcm9ubWVudCIsIndyaXRlRmlsZVN5bmMiLCJmcm9tUGF0aCIsInRvUGF0aCIsImZyb21SZXNvdXJjZXMiLCJ0b1Jlc291cmNlcyIsImZyb21QYWNrYWdlcyIsInRvUGFja2FnZXMiLCJtYW5pZmVzdCIsImJ1bmRsZURpciIsInNlbmNoYSIsIlByb21pc2UiLCJyZWplY3QiLCJvbkJ1aWxkRG9uZSIsIm9wdHMiLCJzaWxlbnQiLCJzdGRpbyIsImVuY29kaW5nIiwiZXhlY3V0ZUFzeW5jIiwidGhlbiIsInJlYXNvbiIsIkRFRkFVTFRfU1VCU1RSUyIsInN1YnN0cmluZ3MiLCJjaGFsayIsImNyb3NzU3Bhd24iLCJjaGlsZCIsIm9uIiwiY29kZSIsInNpZ25hbCIsIkVycm9yIiwiZXJyb3IiLCJzdGRvdXQiLCJzdHIiLCJ0b1N0cmluZyIsInNvbWUiLCJ2IiwiaW5kZXhPZiIsImluY2x1ZGVzIiwicmVkIiwic3RkZXJyIiwic3RySmF2YU9wdHMiLCJjb25zb2xlIiwicyIsImN1cnNvclRvIiwiY2xlYXJMaW5lIiwid3JpdGUiLCJ2ZXJib3NlIiwicHJlZml4IiwicGxhdGZvcm0iLCJncmVlbiIsImZyYW1ld29ya05hbWUiLCJwbHVnaW5QYXRoIiwicGx1Z2luUGtnIiwicGx1Z2luVmVyc2lvbiIsInZlcnNpb24iLCJfcmVzb2x2ZWQiLCJlZGl0aW9uIiwid2VicGFja1BhdGgiLCJ3ZWJwYWNrUGtnIiwid2VicGFja1ZlcnNpb24iLCJleHRQa2ciLCJleHRWZXJzaW9uIiwiY21kUGF0aCIsImNtZFBrZyIsImNtZFZlcnNpb24iLCJ2ZXJzaW9uX2Z1bGwiLCJmcmFtZXdvcmtJbmZvIiwiZnJhbWV3b3JrUGF0aCIsImZyYW1ld29ya1BrZyIsImZyYW1ld29ya1ZlcnNpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ08sU0FBU0EsWUFBVCxDQUFzQkMsT0FBdEIsRUFBK0I7QUFDcEMsUUFBTUMsSUFBSSxHQUFHQyxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxRQUFNQyxFQUFFLEdBQUdELE9BQU8sQ0FBQyxJQUFELENBQWxCOztBQUVBLE1BQUlFLFFBQVEsR0FBRyxFQUFmO0FBQ0EsTUFBSUMsV0FBVyxHQUFHLEVBQWxCO0FBQ0EsTUFBSUMsTUFBTSxHQUFHLEVBQWI7O0FBRUEsTUFBSU4sT0FBTyxDQUFDTyxTQUFSLElBQXFCQyxTQUF6QixFQUFvQztBQUNsQ0osSUFBQUEsUUFBUSxDQUFDSyxZQUFULEdBQXdCLEVBQXhCO0FBQ0FMLElBQUFBLFFBQVEsQ0FBQ0ssWUFBVCxDQUFzQkMsSUFBdEIsQ0FBMkIsMEdBQTNCO0FBQ0FKLElBQUFBLE1BQU0sQ0FBQ0ssSUFBUCxHQUFjUCxRQUFkO0FBQ0EsV0FBT0UsTUFBUDtBQUNEOztBQUVELFFBQU1NLGVBQWUsR0FBR1YsT0FBTyxDQUFDLGNBQUQsQ0FBL0I7O0FBQ0FVLEVBQUFBLGVBQWUsQ0FBQ1YsT0FBTyxDQUFFLEtBQUlGLE9BQU8sQ0FBQ08sU0FBVSxNQUF4QixDQUFQLENBQXNDTSxrQkFBdEMsRUFBRCxFQUE2RGIsT0FBN0QsRUFBc0UsRUFBdEUsQ0FBZixDQWhCb0MsQ0FrQnBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBSSxFQUFBQSxRQUFRLEdBQUdGLE9BQU8sQ0FBRSxLQUFJRixPQUFPLENBQUNPLFNBQVUsTUFBeEIsQ0FBUCxDQUFzQ08sY0FBdEMsRUFBWDtBQUNBVixFQUFBQSxRQUFRLENBQUNHLFNBQVQsR0FBcUJQLE9BQU8sQ0FBQ08sU0FBN0I7O0FBQ0EsVUFBT0gsUUFBUSxDQUFDRyxTQUFoQjtBQUNFLFNBQUss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LENBQUMsQ0FBQ2tCLGFBQWpDLEdBQWlELFlBQWpELEdBQWdFbEIsQ0FBQyxDQUFDMEIsVUFBbEUsR0FBK0UsR0FBL0UsR0FBcUYxQixDQUFDLENBQUNxQixPQUF2RixHQUFpRyx3QkFBakcsR0FBNEhyQixDQUFDLENBQUM2QixVQUE5SCxHQUEySSxhQUEzSSxHQUEySjdCLENBQUMsQ0FBQ3dCLGNBQTdKLEdBQThLTyxhQUFyTDtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLy8qKioqKioqKioqXG5leHBvcnQgZnVuY3Rpb24gX2NvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuICBjb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJylcblxuICB2YXIgdGhpc1ZhcnMgPSB7fVxuICB2YXIgdGhpc09wdGlvbnMgPSB7fVxuICB2YXIgcGx1Z2luID0ge31cblxuICBpZiAob3B0aW9ucy5mcmFtZXdvcmsgPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc1ZhcnMucGx1Z2luRXJyb3JzID0gW11cbiAgICB0aGlzVmFycy5wbHVnaW5FcnJvcnMucHVzaCgnd2VicGFjayBjb25maWc6IGZyYW1ld29yayBwYXJhbWV0ZXIgb24gZXh0LXdlYnBhY2stcGx1Z2luIGlzIG5vdCBkZWZpbmVkIC0gdmFsdWVzOiByZWFjdCwgYW5ndWxhciwgZXh0anMnKVxuICAgIHBsdWdpbi52YXJzID0gdGhpc1ZhcnNcbiAgICByZXR1cm4gcGx1Z2luXG4gIH1cblxuICBjb25zdCB2YWxpZGF0ZU9wdGlvbnMgPSByZXF1aXJlKCdzY2hlbWEtdXRpbHMnKVxuICB2YWxpZGF0ZU9wdGlvbnMocmVxdWlyZShgLi8ke29wdGlvbnMuZnJhbWV3b3JrfVV0aWxgKS5nZXRWYWxpZGF0ZU9wdGlvbnMoKSwgb3B0aW9ucywgJycpXG5cbiAgLy9maXggc2VuY2hhIGNtZCBubyBqZXR0eSBzZXJ2ZXIgcHJvYmxlbVxuICAvLyB2YXIgd2F0Y2hGaWxlID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksYG5vZGVfbW9kdWxlcy9Ac2VuY2hhL2NtZC9kaXN0L2FudC9idWlsZC9hcHAvd2F0Y2gtaW1wbC54bWxgKVxuICAvLyBsb2d2KG9wdGlvbnMsIGBtb2RpZnkgJHt3YXRjaEZpbGV9YClcbiAgLy8gdmFyIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmMod2F0Y2hGaWxlLCAndXRmLTgnKTtcbiAgLy8gdmFyIGlwID0gJ3dlYlNlcnZlclJlZklkPVwiYXBwLndlYi5zZXJ2ZXJcIic7XG4gIC8vIHZhciBuZXdWYWx1ZSA9IGRhdGEucmVwbGFjZShuZXcgUmVnRXhwKGlwKSwgJycpO1xuICAvLyBmcy53cml0ZUZpbGVTeW5jKHdhdGNoRmlsZSwgbmV3VmFsdWUsICd1dGYtOCcpO1xuXG4gIHRoaXNWYXJzID0gcmVxdWlyZShgLi8ke29wdGlvbnMuZnJhbWV3b3JrfVV0aWxgKS5nZXREZWZhdWx0VmFycygpXG4gIHRoaXNWYXJzLmZyYW1ld29yayA9IG9wdGlvbnMuZnJhbWV3b3JrXG4gIHN3aXRjaCh0aGlzVmFycy5mcmFtZXdvcmspIHtcbiAgICBjYXNlICdleHRqcyc6XG4gICAgICB0aGlzVmFycy5wbHVnaW5OYW1lID0gJ2V4dC13ZWJwYWNrLXBsdWdpbidcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3JlYWN0JzpcbiAgICAgIHRoaXNWYXJzLnBsdWdpbk5hbWUgPSAnZXh0LXJlYWN0LXdlYnBhY2stcGx1Z2luJ1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYW5ndWxhcic6XG4gICAgICB0aGlzVmFycy5wbHVnaW5OYW1lID0gJ2V4dC1hbmd1bGFyLXdlYnBhY2stcGx1Z2luJ1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRoaXNWYXJzLnBsdWdpbk5hbWUgPSAnZXh0LXdlYnBhY2stcGx1Z2luJ1xuICB9XG5cbiAgLy9maXggZmFzaGlvbiBkaXN0IHByb2JsZW1cbiAgY29uc3QgZnN4ID0gcmVxdWlyZSgnZnMtZXh0cmEnKVxuICB2YXIgdG9GYXNoaW9uRGlzdCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLGBub2RlX21vZHVsZXMvQHNlbmNoYS9jbWQvZGlzdC9qcy9ub2RlX21vZHVsZXMvZmFzaGlvbi9kaXN0YClcbiAgbG9ndihvcHRpb25zLCBgdG9GYXNoaW9uRGlzdCAke3RvRmFzaGlvbkRpc3R9YClcbiAgaWYgKCFmcy5leGlzdHNTeW5jKHRvRmFzaGlvbkRpc3QpKSB7XG4gICAgbG9ndihvcHRpb25zLCBgY29weWApXG4gICAgdmFyIGZyb21GYXNoaW9uRGlzdCA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnbm9kZV9tb2R1bGVzL0BzZW5jaGEvJyArIHRoaXNWYXJzLnBsdWdpbk5hbWUgKyAnL2Zhc2hpb24vZGlzdC8nKVxuICAgIGZzeC5jb3B5U3luYyhmcm9tRmFzaGlvbkRpc3QsIHRvRmFzaGlvbkRpc3QpXG4gIH1cbiAgZWxzZSB7XG4gICAgbG9ndihvcHRpb25zLCBgbm8gY29weWApXG4gIH1cblxuICB0aGlzVmFycy5hcHAgPSByZXF1aXJlKCcuL3BsdWdpblV0aWwnKS5fZ2V0QXBwKClcbiAgbG9ndihvcHRpb25zLCBgcGx1Z2luTmFtZSAtICR7dGhpc1ZhcnMucGx1Z2luTmFtZX1gKVxuICBsb2d2KG9wdGlvbnMsIGB0aGlzVmFycy5hcHAgLSAke3RoaXNWYXJzLmFwcH1gKVxuXG4gIGNvbnN0IHJjID0gKGZzLmV4aXN0c1N5bmMoYC5leHQtJHt0aGlzVmFycy5mcmFtZXdvcmt9cmNgKSAmJiBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhgLmV4dC0ke3RoaXNWYXJzLmZyYW1ld29ya31yY2AsICd1dGYtOCcpKSB8fCB7fSlcbiAgdGhpc09wdGlvbnMgPSB7IC4uLnJlcXVpcmUoYC4vJHt0aGlzVmFycy5mcmFtZXdvcmt9VXRpbGApLmdldERlZmF1bHRPcHRpb25zKCksIC4uLm9wdGlvbnMsIC4uLnJjIH1cbiAgbG9ndihvcHRpb25zLCBgdGhpc09wdGlvbnMgLSAke0pTT04uc3RyaW5naWZ5KHRoaXNPcHRpb25zKX1gKVxuICBpZiAodGhpc09wdGlvbnMuZW52aXJvbm1lbnQgPT0gJ3Byb2R1Y3Rpb24nKSBcbiAgICB7dGhpc1ZhcnMucHJvZHVjdGlvbiA9IHRydWV9XG4gIGVsc2UgXG4gICAge3RoaXNWYXJzLnByb2R1Y3Rpb24gPSBmYWxzZX1cbiAgbG9nKHJlcXVpcmUoJy4vcGx1Z2luVXRpbCcpLl9nZXRWZXJzaW9ucyh0aGlzVmFycy5hcHAsIHRoaXNWYXJzLnBsdWdpbk5hbWUsIHRoaXNWYXJzLmZyYW1ld29yaykpXG4gIGxvZyh0aGlzVmFycy5hcHAgKyAnQnVpbGRpbmcgZm9yICcgKyB0aGlzT3B0aW9ucy5lbnZpcm9ubWVudClcblxuICBwbHVnaW4udmFycyA9IHRoaXNWYXJzXG4gIHBsdWdpbi5vcHRpb25zID0gdGhpc09wdGlvbnNcbiAgcmV0dXJuIHBsdWdpblxufVxuXG4vLyoqKioqKioqKipcbmV4cG9ydCBmdW5jdGlvbiBfY29tcGlsYXRpb24oY29tcGlsZXIsIGNvbXBpbGF0aW9uLCB2YXJzLCBvcHRpb25zKSB7XG4gIHRyeSB7XG4gICAgcmVxdWlyZSgnLi9wbHVnaW5VdGlsJykubG9ndihvcHRpb25zLCdGVU5DVElPTiBfY29tcGlsYXRpb24nKVxuICAgIGlmICh2YXJzLnByb2R1Y3Rpb24pIHtcbiAgICAgIGxvZ3Yob3B0aW9ucyxgZXh0LWNvbXBpbGF0aW9uOiBwcm9kdWN0aW9uIGlzIGAgKyAgdmFycy5wcm9kdWN0aW9uKVxuICAgICAgY29tcGlsYXRpb24uaG9va3Muc3VjY2VlZE1vZHVsZS50YXAoYGV4dC1zdWNjZWVkLW1vZHVsZWAsIChtb2R1bGUpID0+IHtcbiAgICAgICAgaWYgKG1vZHVsZS5yZXNvdXJjZSAmJiBtb2R1bGUucmVzb3VyY2UubWF0Y2goL1xcLihqfHQpc3g/JC8pICYmICFtb2R1bGUucmVzb3VyY2UubWF0Y2goL25vZGVfbW9kdWxlcy8pICYmICFtb2R1bGUucmVzb3VyY2UubWF0Y2goYC9leHQteyRvcHRpb25zLmZyYW1ld29ya30vZGlzdC9gKSAmJiAhbW9kdWxlLnJlc291cmNlLm1hdGNoKGAvZXh0LSR7b3B0aW9ucy5mcmFtZXdvcmt9LSR7b3B0aW9ucy50b29sa2l0fS9gKSkge1xuICAgICAgICAgIHZhcnMuZGVwcyA9IFsgXG4gICAgICAgICAgICAuLi4odmFycy5kZXBzIHx8IFtdKSwgXG4gICAgICAgICAgICAuLi5yZXF1aXJlKGAuLyR7dmFycy5mcmFtZXdvcmt9VXRpbGApLmV4dHJhY3RGcm9tU291cmNlKG1vZHVsZSwgb3B0aW9ucywgY29tcGlsYXRpb24pIFxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBsb2d2KG9wdGlvbnMsYGV4dC1jb21waWxhdGlvbjogcHJvZHVjdGlvbiBpcyBgICsgIHZhcnMucHJvZHVjdGlvbilcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZnJhbWV3b3JrICE9ICdhbmd1bGFyJykge1xuICAgICAgY29tcGlsYXRpb24uaG9va3MuaHRtbFdlYnBhY2tQbHVnaW5CZWZvcmVIdG1sR2VuZXJhdGlvbi50YXAoYGV4dC1odG1sLWdlbmVyYXRpb25gLChkYXRhKSA9PiB7XG4gICAgICAgIGxvZ3Yob3B0aW9ucywnSE9PSyBleHQtaHRtbC1nZW5lcmF0aW9uJylcbiAgICAgICAgY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuICAgICAgICB2YXIgb3V0cHV0UGF0aCA9ICcnXG4gICAgICAgIGlmIChjb21waWxlci5vcHRpb25zLmRldlNlcnZlcikge1xuICAgICAgICAgIGlmIChjb21waWxlci5vdXRwdXRQYXRoID09PSAnLycpIHtcbiAgICAgICAgICAgIG91dHB1dFBhdGggPSBwYXRoLmpvaW4oY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuY29udGVudEJhc2UsIG91dHB1dFBhdGgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmNvbnRlbnRCYXNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBvdXRwdXRQYXRoID0gJ2J1aWxkJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIG91dHB1dFBhdGggPSAnJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBvdXRwdXRQYXRoID0gJ2J1aWxkJ1xuICAgICAgICB9XG4gICAgICAgIG91dHB1dFBhdGggPSBvdXRwdXRQYXRoLnJlcGxhY2UocHJvY2Vzcy5jd2QoKSwgJycpLnRyaW0oKVxuICAgICAgICB2YXIganNQYXRoID0gcGF0aC5qb2luKG91dHB1dFBhdGgsIHZhcnMuZXh0UGF0aCwgJ2V4dC5qcycpXG4gICAgICAgIHZhciBjc3NQYXRoID0gcGF0aC5qb2luKG91dHB1dFBhdGgsIHZhcnMuZXh0UGF0aCwgJ2V4dC5jc3MnKVxuICAgICAgICBkYXRhLmFzc2V0cy5qcy51bnNoaWZ0KGpzUGF0aClcbiAgICAgICAgZGF0YS5hc3NldHMuY3NzLnVuc2hpZnQoY3NzUGF0aClcbiAgICAgICAgbG9nKHZhcnMuYXBwICsgYEFkZGluZyAke2pzUGF0aH0gYW5kICR7Y3NzUGF0aH0gdG8gaW5kZXguaHRtbGApXG4gICAgICB9KVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGxvZ3Yob3B0aW9ucywnc2tpcHBlZCBIT09LIGV4dC1odG1sLWdlbmVyYXRpb24nKVxuICAgIH1cbiAgfVxuICBjYXRjaChlKSB7XG4gICAgcmVxdWlyZSgnLi9wbHVnaW5VdGlsJykubG9ndihvcHRpb25zLGUpXG4gICAgY29tcGlsYXRpb24uZXJyb3JzLnB1c2goJ19jb21waWxhdGlvbjogJyArIGUpXG4gIH1cbn1cblxuLy8qKioqKioqKioqXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW1pdChjb21waWxlciwgY29tcGlsYXRpb24sIHZhcnMsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgbG9nID0gcmVxdWlyZSgnLi9wbHVnaW5VdGlsJykubG9nXG4gICAgY29uc3QgbG9ndiA9IHJlcXVpcmUoJy4vcGx1Z2luVXRpbCcpLmxvZ3ZcbiAgICBsb2d2KG9wdGlvbnMsJ0ZVTkNUSU9OIGVtaXQnKVxuICAgIHZhciBhcHAgPSB2YXJzLmFwcFxuICAgIHZhciBmcmFtZXdvcmsgPSB2YXJzLmZyYW1ld29ya1xuICAgIGNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJylcbiAgICBjb25zdCBfYnVpbGRFeHRCdW5kbGUgPSByZXF1aXJlKCcuL3BsdWdpblV0aWwnKS5fYnVpbGRFeHRCdW5kbGVcbiAgICBsZXQgb3V0cHV0UGF0aCA9IHBhdGguam9pbihjb21waWxlci5vdXRwdXRQYXRoLHZhcnMuZXh0UGF0aClcbiAgICBpZiAoY29tcGlsZXIub3V0cHV0UGF0aCA9PT0gJy8nICYmIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyKSB7XG4gICAgICBvdXRwdXRQYXRoID0gcGF0aC5qb2luKGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmNvbnRlbnRCYXNlLCBvdXRwdXRQYXRoKVxuICAgIH1cbiAgICBsb2d2KG9wdGlvbnMsJ291dHB1dFBhdGg6ICcgKyBvdXRwdXRQYXRoKVxuICAgIGxvZ3Yob3B0aW9ucywnZnJhbWV3b3JrOiAnICsgZnJhbWV3b3JrKVxuICAgIGlmIChvcHRpb25zLmVtaXQgPT0gdHJ1ZSkge1xuICAgICAgaWYgKGZyYW1ld29yayAhPSAnZXh0anMnKSB7XG4gICAgICAgIF9wcmVwYXJlRm9yQnVpbGQoYXBwLCB2YXJzLCBvcHRpb25zLCBvdXRwdXRQYXRoLCBjb21waWxhdGlvbilcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICByZXF1aXJlKGAuLyR7ZnJhbWV3b3JrfVV0aWxgKS5fcHJlcGFyZUZvckJ1aWxkKGFwcCwgdmFycywgb3B0aW9ucywgb3V0cHV0UGF0aCwgY29tcGlsYXRpb24pXG4gICAgICB9XG5cbiAgICAgIHZhciBjb21tYW5kID0gJydcbiAgICAgIGlmIChvcHRpb25zLndhdGNoID09ICd5ZXMnKSB7XG4gICAgICAgIGNvbW1hbmQgPSAnd2F0Y2gnXG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY29tbWFuZCA9ICdidWlsZCdcbiAgICAgIH1cblxuICAgICAgaWYgKHZhcnMucmVidWlsZCA9PSB0cnVlKSB7XG4gICAgICAgIHZhciBwYXJtcyA9IFtdXG4gICAgICAgIGlmIChvcHRpb25zLnByb2ZpbGUgPT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMucHJvZmlsZSA9PSAnJyB8fCBvcHRpb25zLnByb2ZpbGUgPT0gbnVsbCkge1xuICAgICAgICAgIGlmIChjb21tYW5kID09ICdidWlsZCcpIHtcbiAgICAgICAgICAgIHBhcm1zID0gWydhcHAnLCBjb21tYW5kLCBvcHRpb25zLmVudmlyb25tZW50XVxuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBhcm1zID0gWydhcHAnLCBjb21tYW5kLCAnLS13ZWItc2VydmVyJywgJ2ZhbHNlJywgb3B0aW9ucy5lbnZpcm9ubWVudF1cbiAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAoY29tbWFuZCA9PSAnYnVpbGQnKSB7XG4gICAgICAgICAgICBwYXJtcyA9IFsnYXBwJywgY29tbWFuZCwgb3B0aW9ucy5wcm9maWxlLCBvcHRpb25zLmVudmlyb25tZW50XVxuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBhcm1zID0gWydhcHAnLCBjb21tYW5kLCAnLS13ZWItc2VydmVyJywgJ2ZhbHNlJywgb3B0aW9ucy5wcm9maWxlLCBvcHRpb25zLmVudmlyb25tZW50XVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YXJzLndhdGNoU3RhcnRlZCA9PSBmYWxzZSkge1xuICAgICAgICAgIGF3YWl0IF9idWlsZEV4dEJ1bmRsZShhcHAsIGNvbXBpbGF0aW9uLCBvdXRwdXRQYXRoLCBwYXJtcywgb3B0aW9ucylcbiAgICAgICAgICB2YXJzLndhdGNoU3RhcnRlZCA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vY29uc3QganNDaHVuayA9IGNvbXBpbGF0aW9uLmFkZENodW5rKGBleHQtYW5ndWxhci1qc2ApXG4gICAgICAgIC8vanNDaHVuay5oYXNSdW50aW1lID0ganNDaHVuay5pc0luaXRpYWwgPSAoKSA9PiB0cnVlO1xuICAgICAgICAvL2pzQ2h1bmsuZmlsZXMucHVzaChwYXRoLmpvaW4oJ2J1aWxkJywgJ2V4dC1hbmd1bGFyJywgJ2V4dC5qcycpKTtcbiAgICAgICAgLy9qc0NodW5rLmZpbGVzLnB1c2gocGF0aC5qb2luKCdidWlsZCcsICdleHQtYW5ndWxhcicsICAnZXh0LmNzcycpKTtcbiAgICAgICAgLy9qc0NodW5rLmlkID0gLTI7IC8vIHRoaXMgZm9yY2VzIGh0bWwtd2VicGFjay1wbHVnaW4gdG8gaW5jbHVkZSBleHQuanMgZmlyc3RcblxuICAgICAgICBpZihvcHRpb25zLmJyb3dzZXIgPT0gdHJ1ZSAmJiBvcHRpb25zLndhdGNoID09ICd5ZXMnKSB7XG4gICAgICAgICAgaWYgKHZhcnMuYnJvd3NlckNvdW50ID09IDAgJiYgY29tcGlsYXRpb24uZXJyb3JzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICB2YXIgdXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6JyArIG9wdGlvbnMucG9ydFxuICAgICAgICAgICAgbG9nKGFwcCArIGBPcGVuaW5nIGJyb3dzZXIgYXQgJHt1cmx9YClcbiAgICAgICAgICAgIHZhcnMuYnJvd3NlckNvdW50KytcbiAgICAgICAgICAgIGNvbnN0IG9wbiA9IHJlcXVpcmUoJ29wbicpXG4gICAgICAgICAgICBvcG4odXJsKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBsb2d2KG9wdGlvbnMsJ2Jyb3dzZXIgTk9UIG9wZW5lZCcpXG4gICAgICAgIH1cbiAgICAgICAgY2FsbGJhY2soKVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbGxiYWNrKClcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBsb2coYCR7dmFycy5hcHB9RlVOQ1RJT04gZW1pdCBub3QgcnVuYClcbiAgICAgIGlmKG9wdGlvbnMuYnJvd3NlciA9PSB0cnVlKSB7XG4gICAgICAgIGlmICh2YXJzLmJyb3dzZXJDb3VudCA9PSAwICYmIG9wdGlvbnMud2F0Y2ggPT0gJ3llcycpIHtcbiAgICAgICAgICB2YXIgdXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6JyArIG9wdGlvbnMucG9ydFxuICAgICAgICAgIGxvZyhhcHAgKyBgT3BlbmluZyBicm93c2VyIGF0ICR7dXJsfWApXG4gICAgICAgICAgdmFycy5icm93c2VyQ291bnQrK1xuICAgICAgICAgIGNvbnN0IG9wbiA9IHJlcXVpcmUoJ29wbicpXG4gICAgICAgICAgb3BuKHVybClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGxvZ3Yob3B0aW9ucywnYnJvd3NlciBOT1Qgb3BlbmVkJylcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKClcbiAgICB9XG4gIH1cbiAgY2F0Y2goZSkge1xuICAgIHJlcXVpcmUoJy4vcGx1Z2luVXRpbCcpLmxvZ3Yob3B0aW9ucyxlKVxuICAgIGNvbXBpbGF0aW9uLmVycm9ycy5wdXNoKCdlbWl0OiAnICsgZSlcbiAgICBjYWxsYmFjaygpXG4gIH1cbn1cblxuLy8qKioqKioqKioqXG5leHBvcnQgZnVuY3Rpb24gX3ByZXBhcmVGb3JCdWlsZChhcHAsIHZhcnMsIG9wdGlvbnMsIG91dHB1dCwgY29tcGlsYXRpb24pIHtcbiAgdHJ5IHtcbiAgICBsb2d2KG9wdGlvbnMsJ0ZVTkNUSU9OIF9wcmVwYXJlRm9yQnVpbGQnKVxuICAgIGNvbnN0IHJpbXJhZiA9IHJlcXVpcmUoJ3JpbXJhZicpXG4gICAgY29uc3QgbWtkaXJwID0gcmVxdWlyZSgnbWtkaXJwJylcbiAgICBjb25zdCBmc3ggPSByZXF1aXJlKCdmcy1leHRyYScpXG4gICAgY29uc3QgZnMgPSByZXF1aXJlKCdmcycpXG4gICAgY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuXG4gICAgdmFyIHBhY2thZ2VzID0gb3B0aW9ucy5wYWNrYWdlc1xuICAgIHZhciB0b29sa2l0ID0gb3B0aW9ucy50b29sa2l0XG4gICAgdmFyIHRoZW1lID0gb3B0aW9ucy50aGVtZVxuXG4gICAgdGhlbWUgPSB0aGVtZSB8fCAodG9vbGtpdCA9PT0gJ2NsYXNzaWMnID8gJ3RoZW1lLXRyaXRvbicgOiAndGhlbWUtbWF0ZXJpYWwnKVxuICAgIGxvZ3Yob3B0aW9ucywnZmlyc3RUaW1lOiAnICsgdmFycy5maXJzdFRpbWUpXG4gICAgaWYgKHZhcnMuZmlyc3RUaW1lKSB7XG4gICAgICByaW1yYWYuc3luYyhvdXRwdXQpXG4gICAgICBta2RpcnAuc3luYyhvdXRwdXQpXG4gICAgICBjb25zdCBidWlsZFhNTCA9IHJlcXVpcmUoJy4vYXJ0aWZhY3RzJykuYnVpbGRYTUxcbiAgICAgIGNvbnN0IGNyZWF0ZUFwcEpzb24gPSByZXF1aXJlKCcuL2FydGlmYWN0cycpLmNyZWF0ZUFwcEpzb25cbiAgICAgIGNvbnN0IGNyZWF0ZVdvcmtzcGFjZUpzb24gPSByZXF1aXJlKCcuL2FydGlmYWN0cycpLmNyZWF0ZVdvcmtzcGFjZUpzb25cbiAgICAgIGNvbnN0IGNyZWF0ZUpTRE9NRW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL2FydGlmYWN0cycpLmNyZWF0ZUpTRE9NRW52aXJvbm1lbnRcblxuICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ob3V0cHV0LCAnYnVpbGQueG1sJyksIGJ1aWxkWE1MKHZhcnMucHJvZHVjdGlvbiwgb3B0aW9ucywgb3V0cHV0KSwgJ3V0ZjgnKVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ob3V0cHV0LCAnYXBwLmpzb24nKSwgY3JlYXRlQXBwSnNvbih0aGVtZSwgcGFja2FnZXMsIHRvb2xraXQsIG9wdGlvbnMsIG91dHB1dCksICd1dGY4JylcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKG91dHB1dCwgJ2pzZG9tLWVudmlyb25tZW50LmpzJyksIGNyZWF0ZUpTRE9NRW52aXJvbm1lbnQob3B0aW9ucywgb3V0cHV0KSwgJ3V0ZjgnKVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ob3V0cHV0LCAnd29ya3NwYWNlLmpzb24nKSwgY3JlYXRlV29ya3NwYWNlSnNvbihvcHRpb25zLCBvdXRwdXQpLCAndXRmOCcpXG5cbiAgICAgIGlmICh2YXJzLmZyYW1ld29yayA9PSAnYW5ndWxhcicpIHtcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksJ2V4dC1hbmd1bGFyL3BhY2thZ2VzLycpKSkge1xuICAgICAgICAgIHZhciBmcm9tUGF0aCA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnZXh0LWFuZ3VsYXIvJylcbiAgICAgICAgICB2YXIgdG9QYXRoID0gcGF0aC5qb2luKG91dHB1dClcbiAgICAgICAgICBmc3guY29weVN5bmMoZnJvbVBhdGgsIHRvUGF0aClcbiAgICAgICAgICBsb2coYXBwICsgJ0NvcHlpbmcgJyArIGZyb21QYXRoLnJlcGxhY2UocHJvY2Vzcy5jd2QoKSwgJycpICsgJyB0bzogJyArIHRvUGF0aC5yZXBsYWNlKHByb2Nlc3MuY3dkKCksICcnKSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwnZXh0LWFuZ3VsYXIvb3ZlcnJpZGVzLycpKSkge1xuICAgICAgICAgIHZhciBmcm9tUGF0aCA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnZXh0LWFuZ3VsYXIvJylcbiAgICAgICAgICB2YXIgdG9QYXRoID0gcGF0aC5qb2luKG91dHB1dClcbiAgICAgICAgICBmc3guY29weVN5bmMoZnJvbVBhdGgsIHRvUGF0aClcbiAgICAgICAgICBsb2coYXBwICsgJ0NvcHlpbmcgJyArIGZyb21QYXRoLnJlcGxhY2UocHJvY2Vzcy5jd2QoKSwgJycpICsgJyB0bzogJyArIHRvUGF0aC5yZXBsYWNlKHByb2Nlc3MuY3dkKCksICcnKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHZhcnMuZnJhbWV3b3JrID09ICdyZWFjdCcpICB7XG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCdleHQtcmVhY3QvcGFja2FnZXMvJykpKSB7XG4gICAgICAgICAgdmFyIGZyb21QYXRoID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdleHQtcmVhY3QvcGFja2FnZXMvJylcbiAgICAgICAgICB2YXIgdG9QYXRoID0gcGF0aC5qb2luKG91dHB1dCwgJ3BhY2thZ2VzJylcbiAgICAgICAgICBmc3guY29weVN5bmMoZnJvbVBhdGgsIHRvUGF0aClcbiAgICAgICAgICBsb2coYXBwICsgJ0NvcHlpbmcgJyArIGZyb21QYXRoLnJlcGxhY2UocHJvY2Vzcy5jd2QoKSwgJycpICsgJyB0bzogJyArIHRvUGF0aC5yZXBsYWNlKHByb2Nlc3MuY3dkKCksICcnKSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwnZXh0LXJlYWN0L292ZXJyaWRlcy8nKSkpIHtcbiAgICAgICAgICB2YXIgZnJvbVBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ2V4dC1yZWFjdC9vdmVycmlkZXMvJylcbiAgICAgICAgICB2YXIgdG9QYXRoID0gcGF0aC5qb2luKG91dHB1dCwgJ292ZXJyaWRlcycpXG4gICAgICAgICAgZnN4LmNvcHlTeW5jKGZyb21QYXRoLCB0b1BhdGgpXG4gICAgICAgICAgbG9nKGFwcCArICdDb3B5aW5nICcgKyBmcm9tUGF0aC5yZXBsYWNlKHByb2Nlc3MuY3dkKCksICcnKSArICcgdG86ICcgKyB0b1BhdGgucmVwbGFjZShwcm9jZXNzLmN3ZCgpLCAnJykpXG4gICAgICAgIH1cbiAgICAgIH1cblxuLy9kbyB3ZSBldmVyIGhpdCB0aGVzZT9cbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCdyZXNvdXJjZXMvJykpKSB7XG4gICAgICAgIHZhciBmcm9tUmVzb3VyY2VzID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdyZXNvdXJjZXMvJylcbiAgICAgICAgdmFyIHRvUmVzb3VyY2VzID0gcGF0aC5qb2luKG91dHB1dCwgJy4uL3Jlc291cmNlcycpXG4gICAgICAgIGZzeC5jb3B5U3luYyhmcm9tUmVzb3VyY2VzLCB0b1Jlc291cmNlcylcbiAgICAgICAgbG9nKGFwcCArICdDb3B5aW5nICcgKyBmcm9tUmVzb3VyY2VzLnJlcGxhY2UocHJvY2Vzcy5jd2QoKSwgJycpICsgJyB0bzogJyArIHRvUmVzb3VyY2VzLnJlcGxhY2UocHJvY2Vzcy5jd2QoKSwgJycpKVxuICAgICAgfVxuXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwncmVzb3VyY2VzLycpKSkge1xuICAgICAgICB2YXIgZnJvbVJlc291cmNlcyA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAncmVzb3VyY2VzLycpXG4gICAgICAgIHZhciB0b1Jlc291cmNlcyA9IHBhdGguam9pbihvdXRwdXQsICdyZXNvdXJjZXMnKVxuICAgICAgICBmc3guY29weVN5bmMoZnJvbVJlc291cmNlcywgdG9SZXNvdXJjZXMpXG4gICAgICAgIGxvZyhhcHAgKyAnQ29weWluZyAnICsgZnJvbVJlc291cmNlcy5yZXBsYWNlKHByb2Nlc3MuY3dkKCksICcnKSArICcgdG86ICcgKyB0b1Jlc291cmNlcy5yZXBsYWNlKHByb2Nlc3MuY3dkKCksICcnKSlcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksJ3BhY2thZ2VzLycpKSkge1xuICAgICAgICB2YXIgZnJvbVBhY2thZ2VzID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdwYWNrYWdlcy8nKVxuICAgICAgICB2YXIgdG9QYWNrYWdlcyA9IHBhdGguam9pbihvdXRwdXQsICdwYWNrYWdlcycpXG4gICAgICAgIGZzeC5jb3B5U3luYyhmcm9tUGFja2FnZXMsIHRvUGFja2FnZXMpXG4gICAgICAgIGxvZyhhcHAgKyAnQ29weWluZyAnICsgZnJvbVBhY2thZ2VzLnJlcGxhY2UocHJvY2Vzcy5jd2QoKSwgJycpICsgJyB0bzogJyArIHRvUGFja2FnZXMucmVwbGFjZShwcm9jZXNzLmN3ZCgpLCAnJykpXG4gICAgICB9XG5cbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCdvdmVycmlkZXMvJykpKSB7XG4gICAgICAgIHZhciBmcm9tUGF0aCA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnb3ZlcnJpZGVzLycpXG4gICAgICAgIHZhciB0b1BhdGggPSBwYXRoLmpvaW4ob3V0cHV0LCAnb3ZlcnJpZGVzJylcbiAgICAgICAgZnN4LmNvcHlTeW5jKGZyb21QYXRoLCB0b1BhdGgpXG4gICAgICAgIGxvZyhhcHAgKyAnQ29weWluZyAnICsgZnJvbVBhdGgucmVwbGFjZShwcm9jZXNzLmN3ZCgpLCAnJykgKyAnIHRvOiAnICsgdG9QYXRoLnJlcGxhY2UocHJvY2Vzcy5jd2QoKSwgJycpKVxuICAgICAgfVxuXG5cblxuICAgIH1cbiAgICB2YXJzLmZpcnN0VGltZSA9IGZhbHNlXG4gICAgdmFyIGpzID0gJydcbiAgICBpZiAodmFycy5wcm9kdWN0aW9uKSB7XG4gICAgICB2YXJzLmRlcHMucHVzaCgnRXh0LnJlcXVpcmUoXCJFeHQubGF5b3V0LipcIik7XFxuJylcbiAgICAgIGpzID0gdmFycy5kZXBzLmpvaW4oJztcXG4nKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBqcyA9ICdFeHQucmVxdWlyZShcIkV4dC4qXCIpJ1xuICAgIH1cbiAgICBpZiAodmFycy5tYW5pZmVzdCA9PT0gbnVsbCB8fCBqcyAhPT0gdmFycy5tYW5pZmVzdCkge1xuICAgICAgdmFycy5tYW5pZmVzdCA9IGpzXG4gICAgICBjb25zdCBtYW5pZmVzdCA9IHBhdGguam9pbihvdXRwdXQsICdtYW5pZmVzdC5qcycpXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKG1hbmlmZXN0LCBqcywgJ3V0ZjgnKVxuICAgICAgdmFycy5yZWJ1aWxkID0gdHJ1ZVxuICAgICAgdmFyIGJ1bmRsZURpciA9IG91dHB1dC5yZXBsYWNlKHByb2Nlc3MuY3dkKCksICcnKVxuICAgICAgaWYgKGJ1bmRsZURpci50cmltKCkgPT0gJycpIHtidW5kbGVEaXIgPSAnLi8nfVxuICAgICAgbG9nKGFwcCArICdCdWlsZGluZyBFeHQgYnVuZGxlIGF0OiAnICsgYnVuZGxlRGlyKVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhcnMucmVidWlsZCA9IGZhbHNlXG4gICAgICBsb2coYXBwICsgJ0V4dCByZWJ1aWxkIE5PVCBuZWVkZWQnKVxuICAgIH1cbiAgfVxuICBjYXRjaChlKSB7XG4gICAgcmVxdWlyZSgnLi9wbHVnaW5VdGlsJykubG9ndihvcHRpb25zLGUpXG4gICAgY29tcGlsYXRpb24uZXJyb3JzLnB1c2goJ19wcmVwYXJlRm9yQnVpbGQ6ICcgKyBlKVxuICB9XG59XG5cbi8vKioqKioqKioqKlxuZXhwb3J0IGZ1bmN0aW9uIF9idWlsZEV4dEJ1bmRsZShhcHAsIGNvbXBpbGF0aW9uLCBvdXRwdXRQYXRoLCBwYXJtcywgb3B0aW9ucykge1xuICB0cnkge1xuICAgIGNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKVxuICAgIGNvbnN0IGxvZ3YgPSByZXF1aXJlKCcuL3BsdWdpblV0aWwnKS5sb2d2XG4gICAgbG9ndihvcHRpb25zLCdGVU5DVElPTiBfYnVpbGRFeHRCdW5kbGUnKVxuXG4gICAgbGV0IHNlbmNoYTsgdHJ5IHsgc2VuY2hhID0gcmVxdWlyZSgnQHNlbmNoYS9jbWQnKSB9IGNhdGNoIChlKSB7IHNlbmNoYSA9ICdzZW5jaGEnIH1cbiAgICBpZiAoZnMuZXhpc3RzU3luYyhzZW5jaGEpKSB7XG4gICAgICBsb2d2KG9wdGlvbnMsJ3NlbmNoYSBmb2xkZXIgZXhpc3RzJylcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBsb2d2KG9wdGlvbnMsJ3NlbmNoYSBmb2xkZXIgRE9FUyBOT1QgZXhpc3QnKVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBvbkJ1aWxkRG9uZSA9ICgpID0+IHtcbiAgICAgICAgbG9ndihvcHRpb25zLCdvbkJ1aWxkRG9uZScpXG4gICAgICAgIHJlc29sdmUoKVxuICAgICAgfVxuXG4gICAgICB2YXIgb3B0cyA9IHsgY3dkOiBvdXRwdXRQYXRoLCBzaWxlbnQ6IHRydWUsIHN0ZGlvOiAncGlwZScsIGVuY29kaW5nOiAndXRmLTgnfVxuICAgICAgZXhlY3V0ZUFzeW5jKGFwcCwgc2VuY2hhLCBwYXJtcywgb3B0cywgY29tcGlsYXRpb24sIG9wdGlvbnMpLnRoZW4gKFxuICAgICAgICBmdW5jdGlvbigpIHsgb25CdWlsZERvbmUoKSB9LCBcbiAgICAgICAgZnVuY3Rpb24ocmVhc29uKSB7IHJlamVjdChyZWFzb24pIH1cbiAgICAgIClcbiAgICB9KVxuICB9XG4gIGNhdGNoKGUpIHtcbiAgICByZXF1aXJlKCcuL3BsdWdpblV0aWwnKS5sb2d2KG9wdGlvbnMsZSlcbiAgICBjb21waWxhdGlvbi5lcnJvcnMucHVzaCgnX2J1aWxkRXh0QnVuZGxlOiAnICsgZSlcbiAgICBjYWxsYmFjaygpXG4gIH1cbn1cblxuLy8qKioqKioqKioqXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUFzeW5jIChhcHAsIGNvbW1hbmQsIHBhcm1zLCBvcHRzLCBjb21waWxhdGlvbiwgb3B0aW9ucykge1xuICB0cnkge1xuICAgIC8vY29uc3QgREVGQVVMVF9TVUJTVFJTID0gWydbSU5GXSBMb2FkaW5nJywgJ1tJTkZdIFByb2Nlc3NpbmcnLCAnW0xPR10gRmFzaGlvbiBidWlsZCBjb21wbGV0ZScsICdbRVJSXScsICdbV1JOXScsIFwiW0lORl0gU2VydmVyXCIsIFwiW0lORl0gV3JpdGluZ1wiLCBcIltJTkZdIExvYWRpbmcgQnVpbGRcIiwgXCJbSU5GXSBXYWl0aW5nXCIsIFwiW0xPR10gRmFzaGlvbiB3YWl0aW5nXCJdO1xuICAgIGNvbnN0IERFRkFVTFRfU1VCU1RSUyA9IFtcIltJTkZdIHhTZXJ2ZXJcIiwgJ1tJTkZdIExvYWRpbmcnLCAnW0lORl0gQXBwZW5kJywgJ1tJTkZdIFByb2Nlc3NpbmcnLCAnW0lORl0gUHJvY2Vzc2luZyBCdWlsZCcsICdbTE9HXSBGYXNoaW9uIGJ1aWxkIGNvbXBsZXRlJywgJ1tFUlJdJywgJ1tXUk5dJywgXCJbSU5GXSBXcml0aW5nXCIsIFwiW0lORl0gTG9hZGluZyBCdWlsZFwiLCBcIltJTkZdIFdhaXRpbmdcIiwgXCJbTE9HXSBGYXNoaW9uIHdhaXRpbmdcIl07XG4gICAgdmFyIHN1YnN0cmluZ3MgPSBERUZBVUxUX1NVQlNUUlMgXG4gICAgdmFyIGNoYWxrID0gcmVxdWlyZSgnY2hhbGsnKVxuICAgIGNvbnN0IGNyb3NzU3Bhd24gPSByZXF1aXJlKCdjcm9zcy1zcGF3bicpXG4gICAgY29uc3QgbG9nID0gcmVxdWlyZSgnLi9wbHVnaW5VdGlsJykubG9nXG4gICAgbG9ndihvcHRpb25zLCAnRlVOQ1RJT04gZXhlY3V0ZUFzeW5jJylcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBsb2d2KG9wdGlvbnMsYGNvbW1hbmQgLSAke2NvbW1hbmR9YClcbiAgICAgIGxvZ3Yob3B0aW9ucywgYHBhcm1zIC0gJHtwYXJtc31gKVxuICAgICAgbG9ndihvcHRpb25zLCBgb3B0cyAtICR7SlNPTi5zdHJpbmdpZnkob3B0cyl9YClcbiAgICAgIGxldCBjaGlsZCA9IGNyb3NzU3Bhd24oY29tbWFuZCwgcGFybXMsIG9wdHMpXG4gICAgICBjaGlsZC5vbignY2xvc2UnLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICAgIGxvZ3Yob3B0aW9ucywgYG9uIGNsb3NlOiBgICsgY29kZSkgXG4gICAgICAgIGlmKGNvZGUgPT09IDApIHsgcmVzb2x2ZSgwKSB9XG4gICAgICAgIGVsc2UgeyBjb21waWxhdGlvbi5lcnJvcnMucHVzaCggbmV3IEVycm9yKGNvZGUpICk7IHJlc29sdmUoMCkgfVxuICAgICAgfSlcbiAgICAgIGNoaWxkLm9uKCdlcnJvcicsIChlcnJvcikgPT4geyBcbiAgICAgICAgbG9ndihvcHRpb25zLCBgb24gZXJyb3JgKSBcbiAgICAgICAgY29tcGlsYXRpb24uZXJyb3JzLnB1c2goZXJyb3IpXG4gICAgICAgIHJlc29sdmUoMClcbiAgICAgIH0pXG4gICAgICBjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCAoZGF0YSkgPT4ge1xuICAgICAgICB2YXIgc3RyID0gZGF0YS50b1N0cmluZygpLnJlcGxhY2UoL1xccj9cXG58XFxyL2csIFwiIFwiKS50cmltKClcbiAgICAgICAgbG9ndihvcHRpb25zLCBgJHtzdHJ9YClcbiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS50b1N0cmluZygpLm1hdGNoKC93YWl0aW5nIGZvciBjaGFuZ2VzXFwuXFwuXFwuLykpIHtcbiAgICAgICAgICByZXNvbHZlKDApXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYgKHN1YnN0cmluZ3Muc29tZShmdW5jdGlvbih2KSB7IHJldHVybiBkYXRhLmluZGV4T2YodikgPj0gMDsgfSkpIHsgXG4gICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShcIltJTkZdXCIsIFwiXCIpXG4gICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShcIltMT0ddXCIsIFwiXCIpXG4gICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShwcm9jZXNzLmN3ZCgpLCAnJykudHJpbSgpXG4gICAgICAgICAgICBpZiAoc3RyLmluY2x1ZGVzKFwiW0VSUl1cIikpIHtcbiAgICAgICAgICAgICAgY29tcGlsYXRpb24uZXJyb3JzLnB1c2goYXBwICsgc3RyLnJlcGxhY2UoL15cXFtFUlJcXF0gL2dpLCAnJykpO1xuICAgICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShcIltFUlJdXCIsIGAke2NoYWxrLnJlZChcIltFUlJdXCIpfWApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb2coYCR7YXBwfSR7c3RyfWApIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIGNoaWxkLnN0ZGVyci5vbignZGF0YScsIChkYXRhKSA9PiB7XG4gICAgICAgIGxvZ3Yob3B0aW9ucywgYGVycm9yIG9uIGNsb3NlOiBgICsgZGF0YSkgXG4gICAgICAgIHZhciBzdHIgPSBkYXRhLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxyP1xcbnxcXHIvZywgXCIgXCIpLnRyaW0oKVxuICAgICAgICB2YXIgc3RySmF2YU9wdHMgPSBcIlBpY2tlZCB1cCBfSkFWQV9PUFRJT05TXCI7XG4gICAgICAgIHZhciBpbmNsdWRlcyA9IHN0ci5pbmNsdWRlcyhzdHJKYXZhT3B0cylcbiAgICAgICAgaWYgKCFpbmNsdWRlcykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAke2FwcH0gJHtjaGFsay5yZWQoXCJbRVJSXVwiKX0gJHtzdHJ9YClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICB9XG4gIGNhdGNoKGUpIHtcbiAgICByZXF1aXJlKCcuL3BsdWdpblV0aWwnKS5sb2d2KG9wdGlvbnMsZSlcbiAgICBjb21waWxhdGlvbi5lcnJvcnMucHVzaCgnZXhlY3V0ZUFzeW5jOiAnICsgZSlcbiAgICBjYWxsYmFjaygpXG4gIH0gXG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZyhzKSB7XG4gIHJlcXVpcmUoJ3JlYWRsaW5lJykuY3Vyc29yVG8ocHJvY2Vzcy5zdGRvdXQsIDApXG4gIHRyeSB7XG4gICAgcHJvY2Vzcy5zdGRvdXQuY2xlYXJMaW5lKClcbiAgfVxuICBjYXRjaChlKSB7fVxuICBwcm9jZXNzLnN0ZG91dC53cml0ZShzKVxuICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXFxuJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ3Yob3B0aW9ucywgcykge1xuICBpZiAob3B0aW9ucy52ZXJib3NlID09ICd5ZXMnKSB7XG4gICAgcmVxdWlyZSgncmVhZGxpbmUnKS5jdXJzb3JUbyhwcm9jZXNzLnN0ZG91dCwgMClcbiAgICB0cnkge1xuICAgICAgcHJvY2Vzcy5zdGRvdXQuY2xlYXJMaW5lKClcbiAgICB9XG4gICAgY2F0Y2goZSkge31cbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShgLXZlcmJvc2U6ICR7c31gKVxuICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcXG4nKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfZ2V0QXBwKCkge1xuICB2YXIgY2hhbGsgPSByZXF1aXJlKCdjaGFsaycpXG4gIHZhciBwcmVmaXggPSBgYFxuICBjb25zdCBwbGF0Zm9ybSA9IHJlcXVpcmUoJ29zJykucGxhdGZvcm0oKVxuICBpZiAocGxhdGZvcm0gPT0gJ2RhcndpbicpIHsgcHJlZml4ID0gYOKEuSDvvaJleHTvvaM6YCB9XG4gIGVsc2UgeyBwcmVmaXggPSBgaSBbZXh0XTpgIH1cbiAgcmV0dXJuIGAke2NoYWxrLmdyZWVuKHByZWZpeCl9IGBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9nZXRWZXJzaW9ucyhhcHAsIHBsdWdpbk5hbWUsIGZyYW1ld29ya05hbWUpIHtcbiAgY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuICBjb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJylcblxuICB2YXIgdiA9IHt9XG4gIHZhciBwbHVnaW5QYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksJ25vZGVfbW9kdWxlcy9Ac2VuY2hhJywgcGx1Z2luTmFtZSlcbiAgdmFyIHBsdWdpblBrZyA9IChmcy5leGlzdHNTeW5jKHBsdWdpblBhdGgrJy9wYWNrYWdlLmpzb24nKSAmJiBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwbHVnaW5QYXRoKycvcGFja2FnZS5qc29uJywgJ3V0Zi04JykpIHx8IHt9KTtcbiAgdi5wbHVnaW5WZXJzaW9uID0gcGx1Z2luUGtnLnZlcnNpb25cbiAgdi5fcmVzb2x2ZWQgPSBwbHVnaW5Qa2cuX3Jlc29sdmVkXG4gIGlmICh2Ll9yZXNvbHZlZCA9PSB1bmRlZmluZWQpIHtcbiAgICB2LmVkaXRpb24gPSBgQ29tbWVyY2lhbGBcbiAgfVxuICBlbHNlIHtcbiAgICBpZiAoLTEgPT0gdi5fcmVzb2x2ZWQuaW5kZXhPZignY29tbXVuaXR5JykpIHtcbiAgICAgIHYuZWRpdGlvbiA9IGBDb21tZXJjaWFsYFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHYuZWRpdGlvbiA9IGBDb21tdW5pdHlgXG4gICAgfVxuICB9XG5cbiAgdmFyIHdlYnBhY2tQYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksJ25vZGVfbW9kdWxlcy93ZWJwYWNrJylcbiAgdmFyIHdlYnBhY2tQa2cgPSAoZnMuZXhpc3RzU3luYyh3ZWJwYWNrUGF0aCsnL3BhY2thZ2UuanNvbicpICYmIEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHdlYnBhY2tQYXRoKycvcGFja2FnZS5qc29uJywgJ3V0Zi04JykpIHx8IHt9KTtcbiAgdi53ZWJwYWNrVmVyc2lvbiA9IHdlYnBhY2tQa2cudmVyc2lvblxuXG4gIHZhciBleHRQYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksJ25vZGVfbW9kdWxlcy9Ac2VuY2hhL2V4dCcpXG4gIHZhciBleHRQa2cgPSAoZnMuZXhpc3RzU3luYyhleHRQYXRoKycvcGFja2FnZS5qc29uJykgJiYgSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoZXh0UGF0aCsnL3BhY2thZ2UuanNvbicsICd1dGYtOCcpKSB8fCB7fSk7XG4gIHYuZXh0VmVyc2lvbiA9IGV4dFBrZy5zZW5jaGEudmVyc2lvblxuXG4gIHZhciBjbWRQYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksYG5vZGVfbW9kdWxlcy9Ac2VuY2hhL2NtZGApXG4gIHZhciBjbWRQa2cgPSAoZnMuZXhpc3RzU3luYyhjbWRQYXRoKycvcGFja2FnZS5qc29uJykgJiYgSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoY21kUGF0aCsnL3BhY2thZ2UuanNvbicsICd1dGYtOCcpKSB8fCB7fSk7XG4gIHYuY21kVmVyc2lvbiA9IGNtZFBrZy52ZXJzaW9uX2Z1bGxcblxuICBpZiAodi5jbWRWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgIHZhciBjbWRQYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksYG5vZGVfbW9kdWxlcy9Ac2VuY2hhLyR7cGx1Z2luTmFtZX0vbm9kZV9tb2R1bGVzL0BzZW5jaGEvY21kYClcbiAgICB2YXIgY21kUGtnID0gKGZzLmV4aXN0c1N5bmMoY21kUGF0aCsnL3BhY2thZ2UuanNvbicpICYmIEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGNtZFBhdGgrJy9wYWNrYWdlLmpzb24nLCAndXRmLTgnKSkgfHwge30pO1xuICAgIHYuY21kVmVyc2lvbiA9IGNtZFBrZy52ZXJzaW9uX2Z1bGxcbiAgfVxuXG4gIHZhciBmcmFtZXdvcmtJbmZvID0gJydcbiAgIGlmIChmcmFtZXdvcmtOYW1lICE9IHVuZGVmaW5lZCAmJiBmcmFtZXdvcmtOYW1lICE9ICdleHRqcycpIHtcbiAgICB2YXIgZnJhbWV3b3JrUGF0aCA9ICcnXG4gICAgaWYgKGZyYW1ld29ya05hbWUgPT0gJ3JlYWN0Jykge1xuICAgICAgZnJhbWV3b3JrUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCdub2RlX21vZHVsZXMvcmVhY3QnKVxuICAgIH1cbiAgICBpZiAoZnJhbWV3b3JrTmFtZSA9PSAnYW5ndWxhcicpIHtcbiAgICAgIGZyYW1ld29ya1BhdGggPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwnbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL2NvcmUnKVxuICAgIH1cbiAgICB2YXIgZnJhbWV3b3JrUGtnID0gKGZzLmV4aXN0c1N5bmMoZnJhbWV3b3JrUGF0aCsnL3BhY2thZ2UuanNvbicpICYmIEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGZyYW1ld29ya1BhdGgrJy9wYWNrYWdlLmpzb24nLCAndXRmLTgnKSkgfHwge30pO1xuICAgIHYuZnJhbWV3b3JrVmVyc2lvbiA9IGZyYW1ld29ya1BrZy52ZXJzaW9uXG4gICAgZnJhbWV3b3JrSW5mbyA9ICcsICcgKyBmcmFtZXdvcmtOYW1lICsgJyB2JyArIHYuZnJhbWV3b3JrVmVyc2lvblxuICB9XG4gIHJldHVybiBhcHAgKyAnZXh0LXdlYnBhY2stcGx1Z2luIHYnICsgdi5wbHVnaW5WZXJzaW9uICsgJywgRXh0IEpTIHYnICsgdi5leHRWZXJzaW9uICsgJyAnICsgdi5lZGl0aW9uICsgJyBFZGl0aW9uLCBTZW5jaGEgQ21kIHYnICsgdi5jbWRWZXJzaW9uICsgJywgd2VicGFjayB2JyArIHYud2VicGFja1ZlcnNpb24gKyBmcmFtZXdvcmtJbmZvXG4gfSJdfQ== \ No newline at end of file diff --git a/packages/ext-react-webpack-plugin/package.json b/packages/ext-react-webpack-plugin/package.json index 25aa02b5..29a57f93 100644 --- a/packages/ext-react-webpack-plugin/package.json +++ b/packages/ext-react-webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sencha/ext-react-webpack-plugin", - "version": "6.6.3", + "version": "6.6.4", "description": "A webpack plugin that produces minimal ExtReact and Ext JS bundles containing only those components used in your app.", "main": "dist/index.js", "scripts": { @@ -29,7 +29,7 @@ "devDependencies": { "@babel/cli": "^7.1.5", "@babel/core": "^7.1.6", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.2.0", "@babel/plugin-transform-async-to-generator": "^7.1.0", "@babel/plugin-transform-regenerator": "^7.0.0", "@babel/polyfill": "^7.0.0", diff --git a/packages/ext-react-webpack-plugin/src/pluginUtil.js b/packages/ext-react-webpack-plugin/src/pluginUtil.js index 14337ac8..409a5ef7 100644 --- a/packages/ext-react-webpack-plugin/src/pluginUtil.js +++ b/packages/ext-react-webpack-plugin/src/pluginUtil.js @@ -264,6 +264,36 @@ export function _prepareForBuild(app, vars, options, output, compilation) { fs.writeFileSync(path.join(output, 'jsdom-environment.js'), createJSDOMEnvironment(options, output), 'utf8') fs.writeFileSync(path.join(output, 'workspace.json'), createWorkspaceJson(options, output), 'utf8') + if (vars.framework == 'angular') { + if (fs.existsSync(path.join(process.cwd(),'ext-angular/packages/'))) { + var fromPath = path.join(process.cwd(), 'ext-angular/') + var toPath = path.join(output) + fsx.copySync(fromPath, toPath) + log(app + 'Copying ' + fromPath.replace(process.cwd(), '') + ' to: ' + toPath.replace(process.cwd(), '')) + } + if (fs.existsSync(path.join(process.cwd(),'ext-angular/overrides/'))) { + var fromPath = path.join(process.cwd(), 'ext-angular/') + var toPath = path.join(output) + fsx.copySync(fromPath, toPath) + log(app + 'Copying ' + fromPath.replace(process.cwd(), '') + ' to: ' + toPath.replace(process.cwd(), '')) + } + } + if (vars.framework == 'react') { + if (fs.existsSync(path.join(process.cwd(),'ext-react/packages/'))) { + var fromPath = path.join(process.cwd(), 'ext-react/packages/') + var toPath = path.join(output, 'packages') + fsx.copySync(fromPath, toPath) + log(app + 'Copying ' + fromPath.replace(process.cwd(), '') + ' to: ' + toPath.replace(process.cwd(), '')) + } + if (fs.existsSync(path.join(process.cwd(),'ext-react/overrides/'))) { + var fromPath = path.join(process.cwd(), 'ext-react/overrides/') + var toPath = path.join(output, 'overrides') + fsx.copySync(fromPath, toPath) + log(app + 'Copying ' + fromPath.replace(process.cwd(), '') + ' to: ' + toPath.replace(process.cwd(), '')) + } + } + +//do we ever hit these? if (fs.existsSync(path.join(process.cwd(),'resources/'))) { var fromResources = path.join(process.cwd(), 'resources/') var toResources = path.join(output, '../resources') @@ -277,6 +307,23 @@ export function _prepareForBuild(app, vars, options, output, compilation) { fsx.copySync(fromResources, toResources) log(app + 'Copying ' + fromResources.replace(process.cwd(), '') + ' to: ' + toResources.replace(process.cwd(), '')) } + + if (fs.existsSync(path.join(process.cwd(),'packages/'))) { + var fromPackages = path.join(process.cwd(), 'packages/') + var toPackages = path.join(output, 'packages') + fsx.copySync(fromPackages, toPackages) + log(app + 'Copying ' + fromPackages.replace(process.cwd(), '') + ' to: ' + toPackages.replace(process.cwd(), '')) + } + + if (fs.existsSync(path.join(process.cwd(),'overrides/'))) { + var fromPath = path.join(process.cwd(), 'overrides/') + var toPath = path.join(output, 'overrides') + fsx.copySync(fromPath, toPath) + log(app + 'Copying ' + fromPath.replace(process.cwd(), '') + ' to: ' + toPath.replace(process.cwd(), '')) + } + + + } vars.firstTime = false var js = '' diff --git a/packages/ext-react/dist/ExtRenderer.js b/packages/ext-react/dist/ExtRenderer.js index 9c5879ae..1d323f0f 100644 --- a/packages/ext-react/dist/ExtRenderer.js +++ b/packages/ext-react/dist/ExtRenderer.js @@ -427,16 +427,33 @@ function isAssignableFrom(subClass, parentClass) { function doAdd(childXtype, parentCmp, childCmp, childPropsChildren) { l("ExtRenderer.js: doAdd, parentxtype: " + parentCmp.xtype + ", childxtype: " + childXtype + ", (parentCmp, childCmp, childPropsChildern)", parentCmp, childCmp, childPropsChildren); - - if (parentCmp.xtype == 'grid') { - if (childXtype == 'column' || childXtype == 'treecolumn' || childXtype == 'textcolumn' || childXtype == 'checkcolumn' || childXtype == 'datecolumn' || childXtype == 'rownumberer' || childXtype == 'numbercolumn') { + var parentXtype = parentCmp.xtype; + + if (parentXtype == 'grid') { + // if (childXtype == 'column' || + // childXtype == 'treecolumn' || + // childXtype == 'textcolumn' || + // childXtype == 'checkcolumn' || + // childXtype == 'datecolumn' || + // childXtype == 'rownumberer' || + // childXtype == 'numbercolumn' ) { + if (childxtype === 'column' || childxtype === 'treecolumn' || childxtype === 'textcolumn' || childxtype === 'checkcolumn' || childxtype === 'datecolumn' || childxtype === 'rownumberer' || childxtype === 'numbercolumn') { parentCmp.addColumn(childCmp); + } else if ((childxtype === 'toolbar' || childxtype === 'titlebar') && parentCmp.getHideHeaders != undefined) { + if (parentCmp.getHideHeaders() === false) { + //var j = parentCmp.items.items.length; + parentCmp.insert(1, childCmp); + } else { + parentCmp.add(childCmp); + } + } else { + console.log('??'); } - } else if (parentCmp.xtype == 'tooltip') { + } else if (parentXtype == 'tooltip') { parentCmp.setTooltip(childCmp); - } else if (parentCmp.xtype == 'plugin') { + } else if (parentXtype == 'plugin') { parentCmp.setPlugin(childCmp); - } else if (parentCmp.xtype == 'button') { + } else if (parentXtype == 'button') { if (childXtype == 'menu') { // l(`doAdd button/menu`) l("ExtRenderer.js: doAdd, parentxtype: " + parentCmp.xtype + ", childxtype: " + childXtype + ", button/menu setMenu"); @@ -465,85 +482,84 @@ function doAdd(childXtype, parentCmp, childCmp, childPropsChildren) { } else { //l(`doAdd did nothing!!!`, parentCmp.xtype, childCmp.xtype) l("ExtRenderer.js: doAdd, parentxtype: " + parentCmp.xtype + ", childxtype: " + childXtype + ", did nothing!!!"); - } //we return if we handle html children correctly - //return - // if (childPropsChildren == undefined) return - // if (childPropsChildren.type == undefined) { - // if(typeof childPropsChildren === "string") { - // //PLAIN TEXT CASE - // var text=childPropsChildren - // //l(`${text} is PLAIN TEXT`) - // l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, ${text} is PLAIN TEXT`) - // childCmp.setHtml(text) - // } - // else { - // l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, (children)`, childPropsChildren) - // for (var i = 0; i < childPropsChildren.length; i++) { - // var child = childPropsChildren[i] - // var xtype = null - // try { - // var type = child.type - // if (type == undefined) { - // type = child[0].type - // } - // xtype = type.toLowerCase().replace(/_/g, '-') - // } - // catch(e) { - // l(`ExtRenderer.js: doAdd, child ${i}, catch (child)`, child) - // continue - // } - // if (xtype != null) { - // var target = Ext.ClassManager.getByAlias(`widget.${xtype}`) - // if (target == undefined) { - // //l(`${xtype} is HTML`) - // l(`ExtRenderer.js: doAdd, child ${i}, xtype: ${xtype}, is HTML`) - // //should call wrapDOMElement(node)??? what does classic do? can widget be used? - // var widget = Ext.create({xtype:'widget'}) - // childCmp.add(widget) - // ReactDOM.render(child,widget.el.dom) - // } - // else { - // // l(`xtype is NULL`) - // l(`ExtRenderer.js: doAdd, child ${i}, xtype: ${xtype}, target ${xtype}`) - // } - // } - // else { - // l(`ExtRenderer.js: doAdd, children, xtype: ${xtype}, i: ${i}, is null`) - // //l(`${xtype} is ExtJS`) - // } - // } - // } - // } - // else { - // l(childPropsChildren); - // var child = childPropsChildren - // var xtype = null - // try { - // var type = child.type - // if (type == undefined) { - // type = child[0].type - // } - // xtype = type.toLowerCase().replace(/_/g, '-') - // } - // catch(e) { - // } - // if (xtype != null) { - // var extObject = Ext.ClassManager.getByAlias(`widget.${xtype}`) - // if (extObject == undefined) { - // l(`${xtype} is HTML`) - // //should call wrapDOMElement(node)??? what does classic do? can widget be used? - // var widget = Ext.create({xtype:'widget'}) - // childCmp.add(widget) - // ReactDOM.render(child,widget.el.dom) - // } - // else { - // l(`xtype is NULL`) - // } - // } - // else { - // l(`${xtype} is ExtJS`) - // } - // } - -} + } +} //we return if we handle html children correctly +//return +// if (childPropsChildren == undefined) return +// if (childPropsChildren.type == undefined) { +// if(typeof childPropsChildren === "string") { +// //PLAIN TEXT CASE +// var text=childPropsChildren +// //l(`${text} is PLAIN TEXT`) +// l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, ${text} is PLAIN TEXT`) +// childCmp.setHtml(text) +// } +// else { +// l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, (children)`, childPropsChildren) +// for (var i = 0; i < childPropsChildren.length; i++) { +// var child = childPropsChildren[i] +// var xtype = null +// try { +// var type = child.type +// if (type == undefined) { +// type = child[0].type +// } +// xtype = type.toLowerCase().replace(/_/g, '-') +// } +// catch(e) { +// l(`ExtRenderer.js: doAdd, child ${i}, catch (child)`, child) +// continue +// } +// if (xtype != null) { +// var target = Ext.ClassManager.getByAlias(`widget.${xtype}`) +// if (target == undefined) { +// //l(`${xtype} is HTML`) +// l(`ExtRenderer.js: doAdd, child ${i}, xtype: ${xtype}, is HTML`) +// //should call wrapDOMElement(node)??? what does classic do? can widget be used? +// var widget = Ext.create({xtype:'widget'}) +// childCmp.add(widget) +// ReactDOM.render(child,widget.el.dom) +// } +// else { +// // l(`xtype is NULL`) +// l(`ExtRenderer.js: doAdd, child ${i}, xtype: ${xtype}, target ${xtype}`) +// } +// } +// else { +// l(`ExtRenderer.js: doAdd, children, xtype: ${xtype}, i: ${i}, is null`) +// //l(`${xtype} is ExtJS`) +// } +// } +// } +// } +// else { +// l(childPropsChildren); +// var child = childPropsChildren +// var xtype = null +// try { +// var type = child.type +// if (type == undefined) { +// type = child[0].type +// } +// xtype = type.toLowerCase().replace(/_/g, '-') +// } +// catch(e) { +// } +// if (xtype != null) { +// var extObject = Ext.ClassManager.getByAlias(`widget.${xtype}`) +// if (extObject == undefined) { +// l(`${xtype} is HTML`) +// //should call wrapDOMElement(node)??? what does classic do? can widget be used? +// var widget = Ext.create({xtype:'widget'}) +// childCmp.add(widget) +// ReactDOM.render(child,widget.el.dom) +// } +// else { +// l(`xtype is NULL`) +// } +// } +// else { +// l(`${xtype} is ExtJS`) +// } +// } //# sourceMappingURL=ExtRenderer.js.map \ No newline at end of file diff --git a/packages/ext-react/dist/ExtRenderer.js.map b/packages/ext-react/dist/ExtRenderer.js.map index c35beef4..74a17673 100644 --- a/packages/ext-react/dist/ExtRenderer.js.map +++ b/packages/ext-react/dist/ExtRenderer.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/ExtRenderer.js"],"names":["ReactDOM","l","reactify2","htmlify2","React","Reconciler","invariant","emptyObject","UPDATE_SIGNAL","CLASS_CACHE","Grid","Ext","ClassManager","getByAlias","Column","Button","Menu","ToolTip","CellBase","get","WidgetCell","Dialog","Field","FitLayout","TabPanel","RendererCell","ExtRenderer","createInstance","type","props","internalInstanceHandle","instance","xtype","toLowerCase","replace","extJSClass","undefined","htmlifiedClass","reactifiedClass","appendInitialChild","parentInstance","childInstance","trim","length","parentXtype","childXtype","rawcolumns","push","cmp","rawmenu","rawmenuitems","rawcell","initialConfig","raweditor","rawbuttons","rawwidget","rawtooltip","config","rel","name","rawConfigs","rawitems","finalizeInitialChildren","ExtJSComponent","columns","items","menu","buttons","cell","editor","widget","tooltip","renderer","isAssignableFrom","forEach","column","Object","assign","children","rawhtml","html","_cloneProps","create","cls","isClassic","render","createElement","el","dom","createTextInstance","text","rootContainerInstance","getPublicInstance","prepareForCommit","prepareUpdate","domElement","oldProps","newProps","resetAfterCommit","resetTextContent","shouldDeprioritizeSubtree","getRootHostContext","getChildHostContext","shouldSetTextContent","s","now","useSyncScheduling","supportsMutation","appendChildToContainer","target","parentCmp","childCmp","ExtReactRoot","console","log","error","add","removeChildFromContainer","child","remove","commitMount","_applyProps","commitUpdate","updatePayload","appendChild","doAdd","reactChildren","warn","insertBefore","beforeChild","insertInContainerBefore","injectBefore","removeChild","removeColumn","setMenu","getItems","getItemId","commitTextUpdate","textInstance","oldText","newText","wrapDOMElement","node","contentEl","Component","element","DOMLazyTree","insertTreeBefore","document","HTMLElement","$createdByExtReact","_extCmp","subClass","parentClass","prototype","childPropsChildren","addColumn","setTooltip","setPlugin","addDockedItems","getHideHeaders","i","insert"],"mappings":";;AAAA,OAAOA,QAAP,MAAqB,WAArB;AACA,SAASC,CAAT,QAAkB,SAAlB;AACA,SAASC,SAAT,EAAoBC,QAApB,QAAoC,YAApC;AACA,OAAOC,KAAP,MAAkB,OAAlB;AACA,OAAOC,UAAP,MAAuB,kBAAvB;AACA,OAAOC,SAAP,MAAsB,oBAAtB;AACA,OAAOC,WAAP,MAAwB,sBAAxB;AACA,IAAMC,aAAa,GAAG,EAAtB;AACA,IAAMC,WAAW;AACfC,EAAAA,IAAI,EAAEC,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,CAA4B,aAA5B,CADS;AAEfC,EAAAA,MAAM,EAAEH,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,CAA4B,mBAA5B,CAFO;AAGfE,EAAAA,MAAM,EAAEJ,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,CAA4B,eAA5B,CAHO;AAIfG,EAAAA,IAAI,EAAEL,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,CAA4B,aAA5B,CAJS;AAKfI,EAAAA,OAAO,EAAEN,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,CAA4B,gBAA5B,CALM;AAMfK,EAAAA,QAAQ,EAAEP,GAAG,CAACC,YAAJ,CAAiBO,GAAjB,CAAqB,oBAArB,CANK;AAOfC,EAAAA,UAAU,EAAET,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,CAA4B,mBAA5B,CAPG;AAQfQ,EAAAA,MAAM,EAAEV,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,CAA4B,eAA5B,CARO;AASfS,EAAAA,KAAK,EAAEX,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,CAA4B,cAA5B,CATQ;AAUfU,EAAAA,SAAS,EAAEZ,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,CAA4B,YAA5B,CAVI;AAWfW,EAAAA,QAAQ,EAAEb,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,CAA4B,iBAA5B,CAXK;AAYfY,EAAAA,YAAY,EAAEd,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,CAA4B,qBAA5B;AAZC,2BAaRF,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,CAA4B,cAA5B,CAbQ,eAAjB;AAgBA,IAAMa,WAAW,GAAGrB,UAAU,CAAC;AAE7BsB,EAAAA,cAF6B,0BAEdC,IAFc,EAERC,KAFQ,EAEDC,sBAFC,EAEuB;AAClD,QAAIC,QAAQ,GAAG,IAAf;AACA,QAAMC,KAAK,GAAGJ,IAAI,CAACK,WAAL,GAAmBC,OAAnB,CAA2B,IAA3B,EAAiC,GAAjC,CAAd;AACA,QAAIC,UAAU,GAAGxB,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,aAAsCmB,KAAtC,CAAjB;;AACA,QAAIG,UAAU,IAAIC,SAAlB,EAA6B;AAC3BnC,MAAAA,CAAC,yCAAuC2B,IAAvC,mEAA0GA,IAA1G,EAAgHC,KAAhH,EAAuHC,sBAAvH,CAAD,CAD2B,CAE3B;;AACA,UAAIO,cAAc,GAAGlC,QAAQ,CAACyB,IAAD,CAA7B;AACAG,MAAAA,QAAQ,GAAI,IAAIM,cAAJ,CAAmBR,KAAnB,CAAZ;AACA,aAAOE,QAAP;AACD,KAND,MAOK;AACH9B,MAAAA,CAAC,yCAAuC2B,IAAvC,wCAAgFC,KAAhF,EAAuFC,sBAAvF,CAAD;AACA,UAAIQ,eAAe,GAAGpC,SAAS,CAAC0B,IAAD,CAA/B,CAFG,CAEmC;;AACtCG,MAAAA,QAAQ,GAAI,IAAIO,eAAJ,CAAoBT,KAApB,CAAZ;AACA,aAAOE,QAAP;AACD;AACF,GAnB4B;AAqB7BQ,EAAAA,kBArB6B,8BAqBVC,cArBU,EAqBMC,aArBN,EAqBqB;AAChD,QAAIA,aAAa,IAAI,IAAjB,IAA0B,OAAOA,aAAP,KAAyB,QAAzB,IAAqCA,aAAa,CAACC,IAAd,GAAqBC,MAArB,KAAgC,CAAnG,EAAuG;AAAC;AAAO;;AAC/G,QAAIH,cAAc,IAAI,IAAlB,IAA0BC,aAAa,IAAI,IAA/C,EAAqD;AACnD;AACA;AACAxC,MAAAA,CAAC,mCAAD;AACA,UAAI2C,WAAW,GAAGJ,cAAc,CAACR,KAAjC;AACA,UAAIa,UAAU,GAAGJ,aAAa,CAACT,KAA/B;;AACA,UAAIa,UAAU,IAAI,QAAd,IACAA,UAAU,IAAI,YADd,IAEAA,UAAU,IAAI,YAFd,IAGAA,UAAU,IAAI,aAHd,IAIAA,UAAU,IAAI,YAJd,IAKAA,UAAU,IAAI,cALlB,EAMA;AACE,YAAGL,cAAc,CAACM,UAAf,IAA6BV,SAAhC,EAA2C;AAAEI,UAAAA,cAAc,CAACM,UAAf,GAA4B,EAA5B;AAAgC;;AAC7EN,QAAAA,cAAc,CAACM,UAAf,CAA0BC,IAA1B,CAA+BN,aAAa,CAACO,GAA7C;AACD,OATD,MAUK,IAAIJ,WAAW,IAAI,QAAf,IAA2BC,UAAU,IAAI,MAA7C,EAAqD;AACxD,YAAGL,cAAc,CAACS,OAAf,IAA0Bb,SAA7B,EAAwC;AAAEI,UAAAA,cAAc,CAACS,OAAf,GAAyB,EAAzB;AAA6B;;AACvET,QAAAA,cAAc,CAACS,OAAf,GAAwBR,aAAa,CAACO,GAAtC;AACD,OAHI,MAIA,IAAIJ,WAAW,IAAI,MAAf,IAAyBC,UAAU,IAAI,UAA3C,EAAuD;AAC1D,YAAGL,cAAc,CAACU,YAAf,IAA+Bd,SAAlC,EAA6C;AAAEI,UAAAA,cAAc,CAACU,YAAf,GAA8B,EAA9B;AAAkC;;AACjFV,QAAAA,cAAc,CAACU,YAAf,CAA4BH,IAA5B,CAAiCN,aAAa,CAACO,GAA/C;AACD,OAHI,MAIA,IAAIJ,WAAW,IAAI,QAAf,IAA2BC,UAAU,IAAI,cAA7C,EAA6D;AAChE,YAAGL,cAAc,CAACW,OAAf,IAA0Bf,SAA7B,EACAI,cAAc,CAACW,OAAf,GAAyBV,aAAa,CAACO,GAAd,CAAkBI,aAA3C;AACD,OAHI,MAIA,IAAIR,WAAW,IAAI,QAAf,IAA2BC,UAAU,IAAI,YAA7C,EAA2D;AAC9D,YAAGL,cAAc,CAACW,OAAf,IAA0Bf,SAA7B,EACAI,cAAc,CAACW,OAAf,GAAyBV,aAAa,CAACO,GAAd,CAAkBI,aAA3C;AACD,OAHI,MAIA,IAAIR,WAAW,IAAI,QAAf,IAA2BH,aAAa,CAACO,GAAd,YAA6BvC,WAAW,CAACa,KAAxE,EAAgF;AACnF,YAAGkB,cAAc,CAACa,SAAf,IAA4BjB,SAA/B,EACAI,cAAc,CAACa,SAAf,GAA2BZ,aAAa,CAACO,GAAzC;AACD,OAHI,MAIA,IAAIJ,WAAW,IAAI,QAAf,IAA2BC,UAAU,IAAI,QAA7C,EAAuD;AAC1D,YAAGL,cAAc,CAACc,UAAf,IAA6BlB,SAAhC,EAA2C;AAAEI,UAAAA,cAAc,CAACc,UAAf,GAA4B,EAA5B;AAAgC;;AAC7Ed,QAAAA,cAAc,CAACc,UAAf,CAA0BP,IAA1B,CAA+BN,aAAa,CAACO,GAA7C;AACD,OAHI,MAIA,IAAIJ,WAAW,IAAI,YAAnB,EAAiC;AACpC,YAAGJ,cAAc,CAACe,SAAf,IAA4BnB,SAA/B,EACAI,cAAc,CAACe,SAAf,GAA2Bd,aAAa,CAACO,GAAd,CAAkBI,aAA7C;AACD,OAHI,MAIA,IAAIP,UAAU,IAAI,SAAlB,EAA6B;AAChC,YAAGL,cAAc,CAACgB,UAAf,IAA6BpB,SAAhC,EACAI,cAAc,CAACgB,UAAf,GAA4Bf,aAAa,CAACO,GAA1C;AACD,OAHI,MAIA,IAAIP,aAAa,CAACO,GAAd,CAAkBS,MAAlB,IAA4BhB,aAAa,CAACO,GAAd,CAAkBS,MAAlB,CAAyBC,GAAzD,EAA8D;AACjE,YAAIC,IAAI,GAAGlB,aAAa,CAACO,GAAd,CAAkBS,MAAlB,CAAyB,KAAzB,CAAX;;AACA,YAAG,OAAOE,IAAP,IAAe,QAAlB,EAA4B;AAC1BnB,UAAAA,cAAc,CAACoB,UAAf,CAA0BD,IAA1B,IAAkClB,aAAa,CAACO,GAAhD;AACD;AACF,OALI,MAMA;AACH,YAAGR,cAAc,CAACqB,QAAf,IAA2BzB,SAA9B,EAAyC;AAAEI,UAAAA,cAAc,CAACqB,QAAf,GAA0B,EAA1B;AAA8B;;AACzE,YAAGhB,UAAU,IAAI,WAAjB,EAA8B;AAC5BL,UAAAA,cAAc,CAACqB,QAAf,CAAwBd,IAAxB,CAA6BN,aAAa,CAACO,GAAd,CAAkBI,aAA/C;AACD,SAFD,MAEO;AACLZ,UAAAA,cAAc,CAACqB,QAAf,CAAwBd,IAAxB,CAA6BN,aAAa,CAACO,GAA3C;AACD;AACF;AACF;AACH,GAtF6B;AAwF7Bc,EAAAA,uBAxF6B,mCAwFLC,cAxFK,EAwFWnC,IAxFX,EAwFiBC,KAxFjB,EAwFwB;AACnD5B,IAAAA,CAAC,wCAAD,CADmD,CAEnD;;AACA,QAAM+B,KAAK,GAAGJ,IAAI,CAACK,WAAL,GAAmBC,OAAnB,CAA2B,IAA3B,EAAiC,GAAjC,CAAd;;AACA,QAAI6B,cAAc,CAAC5B,UAAf,IAA6B,IAAjC,EAAuC;AACrClC,MAAAA,CAAC,kDAAgD2B,IAAhD,iBAAgEI,KAAhE,gCAAkG+B,cAAlG,EAAiHlC,KAAjH,CAAD;;AACA,UAAGkC,cAAc,CAACjB,UAAf,IAA6BV,SAAhC,EAA2C;AACzCnC,QAAAA,CAAC,wDAAuD8D,cAAc,CAACH,UAAf,CAA0B5B,KAAjF,EAAuF+B,cAAc,CAACjB,UAAtG,CAAD;AACAiB,QAAAA,cAAc,CAACH,UAAf,CAA0BI,OAA1B,GAAoCD,cAAc,CAACjB,UAAnD;AACD;;AACD,UAAGiB,cAAc,CAACF,QAAf,IAA2BzB,SAA9B,EAAyC;AACvCnC,QAAAA,CAAC,oDAAmD8D,cAAc,CAACH,UAAf,CAA0B5B,KAA7E,EAAmF+B,cAAc,CAACF,QAAlG,CAAD;AACAE,QAAAA,cAAc,CAACH,UAAf,CAA0BK,KAA1B,GAAkCF,cAAc,CAACF,QAAjD;AACD;;AACD,UAAGE,cAAc,CAACd,OAAf,IAA0Bb,SAA7B,EAAwC;AACtCnC,QAAAA,CAAC,mDAAkD8D,cAAc,CAACH,UAAf,CAA0B5B,KAA5E,EAAkF+B,cAAc,CAACd,OAAjG,CAAD;AACAc,QAAAA,cAAc,CAACH,UAAf,CAA0BM,IAA1B,GAAiCH,cAAc,CAACd,OAAhD;AACD;;AACD,UAAGc,cAAc,CAACb,YAAf,IAA+Bd,SAAlC,EAA6C;AAC3CnC,QAAAA,CAAC,yDAAwD8D,cAAc,CAACH,UAAf,CAA0B5B,KAAlF,EAAwF+B,cAAc,CAACb,YAAvG,CAAD;AACAa,QAAAA,cAAc,CAACH,UAAf,CAA0BK,KAA1B,GAAkCF,cAAc,CAACb,YAAjD;AACD;;AACD,UAAGa,cAAc,CAACT,UAAf,IAA6BlB,SAAhC,EAA2C;AACzCnC,QAAAA,CAAC,4DAA2D8D,cAAc,CAACH,UAAf,CAA0B5B,KAArF,EAA2F+B,cAAc,CAACb,YAA1G,CAAD;AACAa,QAAAA,cAAc,CAACH,UAAf,CAA0BO,OAA1B,GAAoCJ,cAAc,CAACT,UAAnD;AACD;;AACD,UAAGS,cAAc,CAACZ,OAAf,IAA0Bf,SAA7B,EAAwC;AACtCnC,QAAAA,CAAC,mDAAkD8D,cAAc,CAACH,UAAf,CAA0B5B,KAA5E,EAAkF+B,cAAc,CAACd,OAAjG,CAAD;AACAc,QAAAA,cAAc,CAACH,UAAf,CAA0BQ,IAA1B,GAAiCL,cAAc,CAACZ,OAAhD;AACD;;AACD,UAAGY,cAAc,CAACV,SAAf,IAA4BjB,SAA/B,EAA0C;AACxCnC,QAAAA,CAAC,qDAAoD8D,cAAc,CAACH,UAAf,CAA0B5B,KAA9E,EAAoF+B,cAAc,CAACd,OAAnG,CAAD;AACAc,QAAAA,cAAc,CAACH,UAAf,CAA0BS,MAA1B,GAAmCN,cAAc,CAACV,SAAlD;AACD;;AACD,UAAGU,cAAc,CAACR,SAAf,IAA4BnB,SAA/B,EAA0C;AACxCnC,QAAAA,CAAC,qDAAoD8D,cAAc,CAACH,UAAf,CAA0B5B,KAA9E,EAAoF+B,cAAc,CAACd,OAAnG,CAAD;AACAc,QAAAA,cAAc,CAACH,UAAf,CAA0BU,MAA1B,GAAmCP,cAAc,CAACR,SAAlD;AACD;;AACD,UAAGQ,cAAc,CAACP,UAAf,IAA6BpB,SAAhC,EAA2C;AACzCnC,QAAAA,CAAC,qDAAoD8D,cAAc,CAACH,UAAf,CAA0B5B,KAA9E,EAAoF+B,cAAc,CAACd,OAAnG,CAAD;AACAc,QAAAA,cAAc,CAACH,UAAf,CAA0BW,OAA1B,GAAoCR,cAAc,CAACP,UAAnD;AACD;;AACD,UAAGO,cAAc,CAACH,UAAf,CAA0BY,QAA1B,IAAsCpC,SAAtC,IAAmD3B,WAAW,CAACK,MAA/D,IAAyE2D,gBAAgB,CAACV,cAAc,CAACH,UAAhB,EAA2BnD,WAAW,CAACK,MAAvC,CAA5F,EAA4I;AAC1Ib,QAAAA,CAAC,aAAY8D,cAAc,CAACH,UAAf,CAA0B5B,KAAtC,EAA4C+B,cAAc,CAACH,UAAf,CAA0BY,QAAtE,CAAD;AACAT,QAAAA,cAAc,CAACH,UAAf,CAA0BQ,IAA1B,GAAgCL,cAAc,CAACH,UAAf,CAA0BQ,IAA1B,IAAkC,EAAlE;AACAL,QAAAA,cAAc,CAACH,UAAf,CAA0BQ,IAA1B,CAA+BpC,KAA/B,GAAuC,cAAvC;AACD;;AACD,UAAG+B,cAAc,CAACH,UAAf,CAA0BI,OAA1B,IAAoC5B,SAApC,IAAiD3B,WAAW,CAACK,MAA7D,IAAuE2D,gBAAgB,CAACV,cAAc,CAACH,UAAhB,EAA2BnD,WAAW,CAACK,MAAvC,CAA1F,EAA0I;AACxIb,QAAAA,CAAC,aAAY8D,cAAc,CAACH,UAAf,CAA0B5B,KAAtC,EAA4C+B,cAAc,CAACH,UAAf,CAA0BY,QAAtE,CAAD;AACAT,QAAAA,cAAc,CAACH,UAAf,CAA0BI,OAA1B,CAAkCU,OAAlC,CAA0C,UAASC,MAAT,EAAgB;AACxD,cAAGA,MAAM,CAACH,QAAP,IAAmBpC,SAAtB,EAAiC;AAC/BuC,YAAAA,MAAM,CAACP,IAAP,GAAaO,MAAM,CAACP,IAAP,IAAe,EAA5B;AACAO,YAAAA,MAAM,CAACP,IAAP,CAAYpC,KAAZ,GAAoB,cAApB;AACD;AACF,SALD;AAMD;;AACD,UAAG+B,cAAc,CAACH,UAAf,CAA0BH,MAA1B,IAAoCrB,SAAvC,EAAmD;AACjDwC,QAAAA,MAAM,CAACC,MAAP,CAAcd,cAAc,CAACH,UAA7B,EAAyCG,cAAc,CAACH,UAAf,CAA0BH,MAAnE;AACD;;AACD,UAAI,OAAO5B,KAAK,CAACiD,QAAb,IAA0B,QAA1B,IAAsC,OAAOjD,KAAK,CAACiD,QAAb,IAA0B,QAApE,EAA8E;AAC5E,YAAGf,cAAc,CAACgB,OAAf,KAA2B3C,SAA9B,EAAyC;AACvC2B,UAAAA,cAAc,CAACH,UAAf,CAA0BoB,IAA1B,GAAiCnD,KAAK,CAACiD,QAAvC;AACD;AACF;;AACDf,MAAAA,cAAc,CAACH,UAAf,GAA4BG,cAAc,CAACkB,WAAf,CAA2BlB,cAAc,CAACH,UAA1C,CAA5B;AACAG,MAAAA,cAAc,CAACf,GAAf,GAAqB,IAAIe,cAAc,CAAC5B,UAAnB,CAA8B4B,cAAc,CAACH,UAA7C,CAArB;AACA3D,MAAAA,CAAC,kDAAgD2B,IAAhD,iBAAgEI,KAAhE,wDAA0H+B,cAAc,CAACH,UAAzI,EAAqJG,cAAc,CAACf,GAApK,CAAD;AACD,KA/DD,MAgEK;AACH;AACA,UAAIA,GAAG,GAAGrC,GAAG,CAACuE,MAAJ,CAAW;AAAClD,QAAAA,KAAK,EAAC,WAAP;AAAoBmD,QAAAA,GAAG,EAAE;AAAzB,OAAX,CAAV;;AACA,UAAIxE,GAAG,CAACyE,SAAR,EAAmB,CACjB;AACD,OAFD,MAGK;AACHpF,QAAAA,QAAQ,CAACqF,MAAT,CAAgBjF,KAAK,CAACkF,aAAN,CAAoB1D,IAApB,EAA0BC,KAA1B,EAAiCA,KAAK,CAACiD,QAAvC,CAAhB,EAAiE9B,GAAG,CAACuC,EAAJ,CAAOC,GAAxE;AACD;;AACDzB,MAAAA,cAAc,CAACf,GAAf,GAAqBA,GAArB;AACA/C,MAAAA,CAAC,kDAAgD2B,IAAhD,iBAAgEI,KAAhE,+BAAgG+B,cAAhG,CAAD;AACD;;AACD,WAAO,IAAP;AACD,GAzK4B;AA2K7B0B,EAAAA,kBA3K6B,8BA2KVC,IA3KU,EA2KJC,qBA3KI,EA2KmB7D,sBA3KnB,EA2K2C;AACtE7B,IAAAA,CAAC,6EAA4EyF,IAA5E,EAAkFC,qBAAlF,EAAyG7D,sBAAzG,CAAD;AACA,WAAO4D,IAAP;AACD,GA9K4B;AAgL7BE,EAAAA,iBAhL6B,6BAgLX7D,QAhLW,EAgLD;AAC1B9B,IAAAA,CAAC,sBAAqB8B,QAArB,CAAD;AACA,WAAOA,QAAP;AACD,GAnL4B;AAqL7B8D,EAAAA,gBArL6B,8BAqLV;AACjB5F,IAAAA,CAAC,8BAAD;AACD,GAvL4B;AAyL7B6F,EAAAA,aAzL6B,yBAyLfC,UAzLe,EAyLHnE,IAzLG,EAyLGoE,QAzLH,EAyLaC,QAzLb,EAyLuB;AAClDhG,IAAAA,CAAC,oBAAkB2B,IAAlB,iBAAD;AACA,WAAOpB,aAAP;AACD,GA5L4B;AA8L7B0F,EAAAA,gBA9L6B,8BA8LV;AACjBjG,IAAAA,CAAC,8BAAD;AACD,GAhM4B;AAkM7BkG,EAAAA,gBAlM6B,4BAkMZJ,UAlMY,EAkMA;AAC3B9F,IAAAA,CAAC,8BAAD;AACA,GApM2B;AAsM7BmG,EAAAA,yBAtM6B,qCAsMHxE,IAtMG,EAsMGC,KAtMH,EAsMU;AACrC5B,IAAAA,CAAC,uCAAD;AACA,WAAO,KAAP;AACD,GAzM4B;AA2M7BoG,EAAAA,kBA3M6B,gCA2MR;AACnBpG,IAAAA,CAAC,gCAAD;AACA,WAAOM,WAAP;AACD,GA9M4B;AAgN7B+F,EAAAA,mBAhN6B,iCAgNP;AACpBrG,IAAAA,CAAC,iCAAD;AACA,WAAOM,WAAP;AACD,GAnN4B;AAqN7B;AAEAgG,EAAAA,oBAvN6B,gCAuNR3E,IAvNQ,EAuNFC,KAvNE,EAuNK;AAChC5B,IAAAA,CAAC,6CAA4C2B,IAA5C,EAAiDC,KAAjD,CAAD,CADgC,CAEhC;;AACA,QAAMG,KAAK,GAAGJ,IAAI,CAACK,WAAL,GAAmBC,OAAnB,CAA2B,IAA3B,EAAiC,GAAjC,CAAd;AACA,QAAIC,UAAU,GAAGxB,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,aAAsCmB,KAAtC,CAAjB;AACA,QAAIwE,CAAC,GAAG,OAAO3E,KAAK,CAACiD,QAAb,KAA0B,QAA1B,IAAsC,OAAOjD,KAAK,CAACiD,QAAb,KAA0B,QAAhE,IAA4E3C,UAAU,KAAKC,SAAnG;AACAnC,IAAAA,CAAC,oCAAmCuG,CAAnC,CAAD;AACA,WACE,OAAO3E,KAAK,CAACiD,QAAb,KAA0B,QAA1B,IAAsC,OAAOjD,KAAK,CAACiD,QAAb,KAA0B,QAAhE,IAA4E3C,UAAU,KAAKC,SAD7F;AAGD,GAjO4B;AAmO7B;AACAqE,EAAAA,GAAG,EAAE,eAAM,CAAE,CApOgB;AAsO7BC,EAAAA,iBAAiB,EAAE,IAtOU;AAuO9BC,EAAAA,gBAAgB,EAAE,IAvOY;AAyO7BC,EAAAA,sBAzO6B,kCAyONpE,cAzOM,EAyOUC,aAzOV,EAyOyB;AACpD;AACA,QAAID,cAAc,IAAI,IAAlB,IAA0BC,aAAa,IAAI,IAA/C,EAAqD;AACnDxC,MAAAA,CAAC,CAAC,8EAAD,EAAiFwC,aAAa,CAACoE,MAA/F,EAAuGrE,cAAvG,EAAuHC,aAAvH,CAAD,CADmD,CAEnD;;AACA,UAAIqE,SAAS,GAAGtE,cAAhB;AACA,UAAIuE,QAAQ,GAAGtE,aAAa,CAACO,GAA7B;;AAEA,UAAI8D,SAAS,CAACE,YAAV,IAA0B,IAA9B,EAAoC;AAClCC,QAAAA,OAAO,CAACC,GAAR,CAAY,2EAAZ;AACA,cAAMC,KAAN;AACD,OAHD,MAIK;AACHlH,QAAAA,CAAC,CAAC,wEAAD,CAAD;;AACA,YAAG8G,QAAH,EAAa;AACXD,UAAAA,SAAS,CAACM,GAAV,CAAcL,QAAd;AACD,SAFD,MAEO;AACL9G,UAAAA,CAAC,CAAC,6EAAD,CAAD;AACD;AACF;AACF,KAlBD,MAmBK;AACHA,MAAAA,CAAC,CAAC,8CAAD,EAAiDuC,cAAjD,CAAD;AACAvC,MAAAA,CAAC,CAAC,6CAAD,EAAgDwC,aAAhD,CAAD;AACD,KAxBmD,CA0BpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACD,GA3Q4B;AA6Q7B4E,EAAAA,wBA7Q6B,oCA6QJ7E,cA7QI,EA6QY8E,KA7QZ,EA6QmB;AAC9CrH,IAAAA,CAAC,qDAAqDuC,cAArD,EAAqE8E,KAArE,CAAD;;AACA,QAAI9E,cAAc,IAAI,IAAlB,IAA0B8E,KAAK,IAAI,IAAvC,EAA6C;AAC3C,UAAGA,KAAK,CAACtE,GAAT,EAAc;AACZR,QAAAA,cAAc,CAAC+E,MAAf,CAAsBD,KAAK,CAACtE,GAA5B,EAAiC,IAAjC;AACD,OAFD,MAEO;AACLiE,QAAAA,OAAO,CAACC,GAAR,CAAY,mDAAZ;AACD;AACF;AACF,GAtR4B;AAwR7BM,EAAAA,WAxR6B,uBAwRjBzF,QAxRiB,EAwRPH,IAxRO,EAwRDqE,QAxRC,EAwRS;AACpChG,IAAAA,CAAC,qDAAoD8B,QAApD,EAA8DH,IAA9D,EAAoEqE,QAApE,CAAD;AACA,QAAMjE,KAAK,GAAGJ,IAAI,CAACK,WAAL,GAAmBC,OAAnB,CAA2B,IAA3B,EAAiC,GAAjC,CAAd;AACA,QAAIC,UAAU,GAAGxB,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,aAAsCmB,KAAtC,CAAjB;;AACA,QAAI,CAACG,UAAL,EAAiB;AACfJ,MAAAA,QAAQ,CAAC0F,WAAT,CAAqB,IAArB,EAA2BxB,QAA3B,EAAqClE,QAArC,EAA+CH,IAA/C;AACD;AACF,GA/R4B;AAiS7B8F,EAAAA,YAjS6B,wBAiShB3F,QAjSgB,EAiSN4F,aAjSM,EAiSS/F,IAjST,EAiSeoE,QAjSf,EAiSyBC,QAjSzB,EAiSmC;AAC9DhG,IAAAA,CAAC,mBAAiB2B,IAAjB,qDAAuEG,QAAvE,EAAiF4F,aAAjF,EAAgG3B,QAAhG,EAA0GC,QAA1G,CAAD;;AACA,QAAIlE,QAAQ,CAAC0F,WAAb,EAA0B;AACxB1F,MAAAA,QAAQ,CAAC0F,WAAT,CAAqBzB,QAArB,EAA+BC,QAA/B,EAAyClE,QAAzC,EAAmDH,IAAnD;AACD,KAFD,MAGK;AACHqF,MAAAA,OAAO,CAACC,GAAR,CAAY,oBAAZ;AACAD,MAAAA,OAAO,CAACC,GAAR,CAAYnF,QAAZ;AACD;AACF,GA1S4B;AA4S7B6F,EAAAA,WA5S6B,uBA4SjBpF,cA5SiB,EA4SDC,aA5SC,EA4Sc;AACzC,QAAGA,aAAa,CAACO,GAAd,KAAsBZ,SAAzB,EAAoC;AAClCnC,MAAAA,CAAC,CAAC,YAAD,CAAD;AACA,aAAO,KAAP;AACD;;AACD,QAAIuC,cAAc,IAAI,IAAlB,IAA0BC,aAAa,IAAI,IAA/C,EAAqD;AACnDxC,MAAAA,CAAC,CAAC,0DAAD,EAA6DwC,aAAa,CAACT,KAA3E,EAAkFQ,cAAlF,EAAkGC,aAAlG,CAAD;AACAoF,MAAAA,KAAK,CAACpF,aAAa,CAACT,KAAf,EAAsBQ,cAAc,CAACQ,GAArC,EAA0CP,aAAa,CAACO,GAAxD,EAA6DP,aAAa,CAACqF,aAA3E,CAAL;AACD,KAHD,MAIK;AACHb,MAAAA,OAAO,CAACc,IAAR,CAAa,eAAb;AACD;AACF,GAxT4B;AA0T7BC,EAAAA,YA1T6B,wBA0ThBxF,cA1TgB,EA0TA8E,KA1TA,EA0TOW,WA1TP,EA0ToB;AAC/ChI,IAAAA,CAAC,0BAAD;AACAK,IAAAA,SAAS,CACPgH,KAAK,KAAKW,WADH,EAEP,gDAFO,CAAT;;AAIA,QAAGzF,cAAc,CAACQ,GAAf,CAAmBgF,YAAnB,IAAmC,OAAOxF,cAAc,CAACQ,GAAf,CAAmBgF,YAA1B,KAA2C,UAAjF,EAA6F;AAC3FxF,MAAAA,cAAc,CAACQ,GAAf,CAAmBgF,YAAnB,CAAgCV,KAAK,CAACtE,GAAtC,EAA2CiF,WAAW,CAACjF,GAAvD;AACD;AACF,GAnU4B;AAqU7BkF,EAAAA,uBArU6B,mCAqUL1F,cArUK,EAqUW8E,KArUX,EAqUkBW,WArUlB,EAqU+B;AAC1DhI,IAAAA,CAAC,qCAAD;AACAK,IAAAA,SAAS,CACPgH,KAAK,KAAKW,WADH,EAEP,gDAFO,CAAT;AAIAX,IAAAA,KAAK,CAACa,YAAN,CAAmBF,WAAnB;AACD,GA5U4B;AA8U7BG,EAAAA,WA9U6B,uBA8UjB5F,cA9UiB,EA8UD8E,KA9UC,EA8UM;AACjC,QAAI9E,cAAc,IAAI,IAAlB,IAA0B8E,KAAK,IAAI,IAAvC,EAA6C;AAC3CrH,MAAAA,CAAC,wCAAwCuC,cAAxC,EAAwD8E,KAAxD,CAAD,CAD2C,CAE3C;;AACA,UAAI9E,cAAc,CAACR,KAAf,IAAwB,MAA5B,EAAoC,OAHO,CAGA;;AAC3C,UAAIsF,KAAK,CAACtE,GAAN,IAAaZ,SAAjB,EAA4B;AAC1B,YAAGI,cAAc,CAACQ,GAAf,CAAmBhB,KAAnB,IAA4B,MAA5B,IAAsCsF,KAAK,CAACtE,GAAN,CAAUhB,KAAV,IAAmB,QAA5D,EAAsE;AACpEQ,UAAAA,cAAc,CAACQ,GAAf,CAAmBqF,YAAnB,CAAgCf,KAAK,CAACtE,GAAtC;AACD,SAFD,MAGK,IAAGR,cAAc,CAACQ,GAAf,CAAmBhB,KAAnB,KAA6B,QAAhC,EAA0C;AAC7C,cAAGsF,KAAK,CAACtE,GAAN,CAAUhB,KAAV,KAAoB,MAAvB,EAA8B;AAC5BQ,YAAAA,cAAc,CAACQ,GAAf,CAAmBsF,OAAnB,CAA2B,IAA3B;AACD;AACF,SAJI,MAKA,IAAG9F,cAAc,CAACQ,GAAf,CAAmBuF,QAAnB,IAA8BnG,SAA9B,IAA2C,OAAOI,cAAc,CAACQ,GAAf,CAAmBuF,QAA1B,IAAsC,UAAjF,IAA+F/F,cAAc,CAACQ,GAAf,CAAmBuF,QAAnB,GAA8BpH,GAA9B,CAAkCmG,KAAK,CAACtE,GAAN,CAAUwF,SAAV,EAAlC,CAAlG,EAA4J;AAC/JhG,UAAAA,cAAc,CAACQ,GAAf,CAAmBuE,MAAnB,CAA0BD,KAAK,CAACtE,GAAhC,EAAqC,IAArC;AACD,SAFI,MAEE;AACL/C,UAAAA,CAAC,CAAC,uBAAD,CAAD;AACD;AACF;AACF,KAnBD,MAoBK;AACHgH,MAAAA,OAAO,CAACc,IAAR,CAAa,6BAAb;AACD;AACF,GAtW4B;AAwW7BU,EAAAA,gBAxW6B,4BAwWZC,YAxWY,EAwWEC,OAxWF,EAwWWC,OAxWX,EAwWoB;AAC/C3I,IAAAA,CAAC,8BAAD;AACD;AA1W4B,CAAD,CAA9B;AA8WA,eAAeyB,WAAf;AAEA;;;;;;;;AAOA,SAASmH,cAAT,CAAwBC,IAAxB,EAA8B;AAC5B,MAAIC,SAAS,GAAGD,IAAI,CAACA,IAArB;AAEA,MAAM9F,GAAG,GAAG,IAAIrC,GAAG,CAACqI,SAAR,CAAkB;AAC1B;AACA;AACA7D,IAAAA,GAAG,EAAE;AAHqB,GAAlB,CAAZ;;AAMA,MAAInC,GAAG,CAACiG,OAAR,EAAiB;AACb;AACAC,IAAAA,WAAW,CAACC,gBAAZ,CAA6BnG,GAAG,CAACiG,OAAJ,CAAYzD,GAAzC,EAA8CsD,IAA9C;AACH,GAHD,MAGO;AACH;AACA,QAAMjC,MAAM,GAAGuC,QAAQ,CAAC9D,aAAT,CAAuB,KAAvB,CAAf;AACA4D,IAAAA,WAAW,CAACC,gBAAZ,CAA6BtC,MAA7B,EAAqCiC,IAArC;AACA9F,IAAAA,GAAG,CAAC+F,SAAJ,GAAgBA,SAAS,YAAYM,WAArB,GAAmCN,SAAnC,GAA+ClC;AAAO;AAAtE;AACH;;AAED7D,EAAAA,GAAG,CAACsG,kBAAJ,GAAyB,IAAzB;AACAP,EAAAA,SAAS,CAACQ,OAAV,GAAoBvG,GAApB,CApB4B,CAsB5B;AACA;;AACAA,EAAAA,GAAG,CAAC8F,IAAJ,GAAWC,SAAX;AAEA,SAAO/F,GAAP;AACD;AAED;;;;;;;;AAMA,SAASyB,gBAAT,CAA0B+E,QAA1B,EAAoCC,WAApC,EAAiD;AAC/C,MAAI,CAACD,QAAD,IAAa,CAACC,WAAlB,EAA+B,OAAO,KAAP;;AAC/B,MAAIA,WAAW,CAACzH,KAAZ,IAAqB,YAArB,IAAqCwH,QAAQ,CAACxH,KAAT,IAAkBI,SAA3D,EAAsE;AACpEoH,IAAAA,QAAQ,GAAG7I,GAAG,CAACC,YAAJ,CAAiBC,UAAjB,CAA4B,YAAY2I,QAAQ,CAACxH,KAAjD,CAAX;AACD;;AACD,SAAOwH,QAAQ,KAAKC,WAAb,IAA4BD,QAAQ,CAACE,SAAT,YAA8BD,WAAjE;AACD,C,CAED;;;AACA,SAAS5B,KAAT,CAAehF,UAAf,EAA2BiE,SAA3B,EAAsCC,QAAtC,EAAgD4C,kBAAhD,EAAoE;AAClE1J,EAAAA,CAAC,0CAAwC6G,SAAS,CAAC9E,KAAlD,sBAAwEa,UAAxE,kDAAiIiE,SAAjI,EAA4IC,QAA5I,EAAsJ4C,kBAAtJ,CAAD;;AAEA,MAAG7C,SAAS,CAAC9E,KAAV,IAAmB,MAAtB,EAA8B;AAC5B,QAAIa,UAAU,IAAI,QAAd,IACJA,UAAU,IAAI,YADV,IAEJA,UAAU,IAAI,YAFV,IAGJA,UAAU,IAAI,aAHV,IAIJA,UAAU,IAAI,YAJV,IAKJA,UAAU,IAAI,aALV,IAMJA,UAAU,IAAI,cANd,EAM+B;AAC/BiE,MAAAA,SAAS,CAAC8C,SAAV,CAAoB7C,QAApB;AACC;AACF,GAVD,MAWK,IAAID,SAAS,CAAC9E,KAAV,IAAmB,SAAvB,EAAkC;AACrC8E,IAAAA,SAAS,CAAC+C,UAAV,CAAqB9C,QAArB;AACD,GAFI,MAGA,IAAID,SAAS,CAAC9E,KAAV,IAAmB,QAAvB,EAAiC;AACpC8E,IAAAA,SAAS,CAACgD,SAAV,CAAoB/C,QAApB;AACD,GAFI,MAGA,IAAID,SAAS,CAAC9E,KAAV,IAAmB,QAAvB,EAAiC;AACpC,QAAIa,UAAU,IAAI,MAAlB,EAA0B;AAC9B;AACM5C,MAAAA,CAAC,0CAAwC6G,SAAS,CAAC9E,KAAlD,sBAAwEa,UAAxE,2BAAD;AACAiE,MAAAA,SAAS,CAACwB,OAAV,CAAkBvB,QAAlB;AACD,KAJD,MAKK;AACH9G,MAAAA,CAAC,0CAAwC6G,SAAS,CAAC9E,KAAlD,sBAAwEa,UAAxE,sBAAD;AACD;AACF,GATI,MAWA,IAAIA,UAAU,IAAI,SAAd,IAA4BlC,GAAG,CAACyE,SAAJ,IAAiB,IAAjD,EAAuD;AAC1DnF,IAAAA,CAAC,0CAAwC6G,SAAS,CAAC9E,KAAlD,sBAAwEa,UAAxE,wCAAD;AACAiE,IAAAA,SAAS,CAACiD,cAAV,CAAyBhD,QAAzB;AACD,GAHI,MAMA,IAAI,CAAClE,UAAU,IAAI,SAAd,IAA2BA,UAAU,IAAI,UAA1C,KAAyDiE,SAAS,CAACkD,cAAV,IAA4B5H,SAAzF,EAAoG;AACvG,QAAI0E,SAAS,CAACkD,cAAV,MAA8B,KAAlC,EAAyC;AAC7C;AACM/J,MAAAA,CAAC,0CAAwC6G,SAAS,CAAC9E,KAAlD,sBAAwEa,UAAxE,4CAAD;AACA,UAAIoH,CAAC,GAAGnD,SAAS,CAAC7C,KAAV,CAAgBA,KAAhB,CAAsBtB,MAA9B;AACAmE,MAAAA,SAAS,CAACoD,MAAV,CAAiBD,CAAC,GAAC,CAAnB,EAAqBlD,QAArB;AACA,KALF,MAMK;AACH;AACA9G,MAAAA,CAAC,0CAAwC6G,SAAS,CAAC9E,KAAlD,sBAAwEa,UAAxE,yCAAD;AACAiE,MAAAA,SAAS,CAACM,GAAV,CAAcL,QAAd;AACD;AACF,GAZI,MAaA,IAAID,SAAS,CAACM,GAAV,IAAiBhF,SAArB,EAAgC;AACnC;AACAnC,IAAAA,CAAC,0CAAwC6G,SAAS,CAAC9E,KAAlD,sBAAwEa,UAAxE,WAAD;AACAiE,IAAAA,SAAS,CAACM,GAAV,CAAcL,QAAd;AACD,GAJI,MAKA;AACH;AACA9G,IAAAA,CAAC,0CAAwC6G,SAAS,CAAC9E,KAAlD,sBAAwEa,UAAxE,sBAAD;AAED,GA3DiE,CA8DpE;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACC","sourcesContent":["import ReactDOM from 'react-dom';\nimport { l } from './index'\nimport { reactify2, htmlify2 } from './reactify';\nimport React from 'react';\nimport Reconciler from 'react-reconciler';\nimport invariant from 'fbjs/lib/invariant';\nimport emptyObject from 'fbjs/lib/emptyObject';\nconst UPDATE_SIGNAL = {};\nconst CLASS_CACHE = {\n Grid: Ext.ClassManager.getByAlias('widget.grid'),\n Column: Ext.ClassManager.getByAlias('widget.gridcolumn'),\n Button: Ext.ClassManager.getByAlias('widget.button'),\n Menu: Ext.ClassManager.getByAlias('widget.menu'),\n ToolTip: Ext.ClassManager.getByAlias('widget.tooltip'),\n CellBase: Ext.ClassManager.get('Ext.grid.cell.Base'),\n WidgetCell: Ext.ClassManager.getByAlias('widget.widgetcell'),\n Dialog: Ext.ClassManager.getByAlias('widget.dialog'),\n Field: Ext.ClassManager.getByAlias('widget.field'),\n FitLayout: Ext.ClassManager.getByAlias('layout.fit'),\n TabPanel: Ext.ClassManager.getByAlias('widget.tabpanel'),\n RendererCell: Ext.ClassManager.getByAlias('widget.renderercell'),\n Field: Ext.ClassManager.getByAlias('widget.field')\n}\n\nconst ExtRenderer = Reconciler({\n\n createInstance(type, props, internalInstanceHandle) {\n let instance = null;\n const xtype = type.toLowerCase().replace(/_/g, '-')\n var extJSClass = Ext.ClassManager.getByAlias(`widget.${xtype}`)\n if (extJSClass == undefined) {\n l(`ExtRenderer: createInstance, type: ${type}, extJSClass UNDEFINED (type, props, internalInstanceHandle)`,type, props, internalInstanceHandle)\n //SK : HTML Rendering - STEP 1 : Create HTML Instance\n var htmlifiedClass = htmlify2(type)\n instance = new htmlifiedClass(props);\n return instance\n }\n else {\n l(`ExtRenderer: createInstance, type: ${type}, (props, internalInstanceHandle)`, props, internalInstanceHandle)\n var reactifiedClass = reactify2(type) // could send xtype\n instance = new reactifiedClass(props);\n return instance;\n }\n },\n\n appendInitialChild(parentInstance, childInstance) {\n if (childInstance == null || (typeof childInstance === \"string\" && childInstance.trim().length === 0)) {return}\n if (parentInstance != null && childInstance != null) {\n //SK : Do not uncomment below console statement. It will cause error in case of div\n //l(`ExtRenderer: appendInitialChild, parentxtype: ${parentInstance.rawConfigs.xtype}, childxtype: ${childInstance.cmp.xtype}, (parentInstance, childInstance)`,parentInstance, childInstance)\n l(`ExtRenderer: appendInitialChild`)\n var parentXtype = parentInstance.xtype\n var childXtype = childInstance.xtype\n if (childXtype == 'column' ||\n childXtype == 'treecolumn' ||\n childXtype == 'textcolumn' ||\n childXtype == 'checkcolumn' ||\n childXtype == 'datecolumn' ||\n childXtype == 'numbercolumn' )\n {\n if(parentInstance.rawcolumns == undefined) { parentInstance.rawcolumns = [] }\n parentInstance.rawcolumns.push(childInstance.cmp)\n }\n else if (parentXtype == 'button' && childXtype == 'menu') {\n if(parentInstance.rawmenu == undefined) { parentInstance.rawmenu = {} }\n parentInstance.rawmenu =childInstance.cmp\n }\n else if (parentXtype == 'menu' && childXtype == 'menuitem') {\n if(parentInstance.rawmenuitems == undefined) { parentInstance.rawmenuitems = [] }\n parentInstance.rawmenuitems.push(childInstance.cmp)\n }\n else if (parentXtype == 'column' && childXtype == 'renderercell') {\n if(parentInstance.rawcell == undefined) \n parentInstance.rawcell = childInstance.cmp.initialConfig\n }\n else if (parentXtype == 'column' && childXtype == 'widgetcell') {\n if(parentInstance.rawcell == undefined) \n parentInstance.rawcell = childInstance.cmp.initialConfig\n }\n else if (parentXtype == 'column' && childInstance.cmp instanceof CLASS_CACHE.Field ) {\n if(parentInstance.raweditor == undefined) \n parentInstance.raweditor = childInstance.cmp\n } \n else if (parentXtype == 'dialog' && childXtype == 'button') {\n if(parentInstance.rawbuttons == undefined) { parentInstance.rawbuttons = [] }\n parentInstance.rawbuttons.push(childInstance.cmp)\n }\n else if (parentXtype == 'widgetcell') {\n if(parentInstance.rawwidget == undefined) \n parentInstance.rawwidget = childInstance.cmp.initialConfig\n }\n else if (childXtype == 'tooltip') {\n if(parentInstance.rawtooltip == undefined) \n parentInstance.rawtooltip = childInstance.cmp\n }\n else if (childInstance.cmp.config && childInstance.cmp.config.rel) {\n let name = childInstance.cmp.config['rel']\n if(typeof name == 'string') {\n parentInstance.rawConfigs[name] = childInstance.cmp\n }\n }\n else {\n if(parentInstance.rawitems == undefined) { parentInstance.rawitems = [] }\n if(childXtype == 'cartesian') {\n parentInstance.rawitems.push(childInstance.cmp.initialConfig)\n } else {\n parentInstance.rawitems.push(childInstance.cmp)\n }\n }\n }\n\t},\n\n finalizeInitialChildren(ExtJSComponent, type, props) {\n l(`ExtRenderer: finalizeInitialChildren`)\n //console.log('setting collection configs and creating EXT component here')\n const xtype = type.toLowerCase().replace(/_/g, '-')\n if (ExtJSComponent.extJSClass != null) {\n l(`ExtRenderer: finalizeInitialChildren, type: ${type}, xtype: ${xtype}, (ExtJSComponent, props)`, ExtJSComponent,props)\n if(ExtJSComponent.rawcolumns != undefined) {\n l(`new set columns config (parent xtype,child columns)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawcolumns)\n ExtJSComponent.rawConfigs.columns = ExtJSComponent.rawcolumns\n }\n if(ExtJSComponent.rawitems != undefined) {\n l(`new set items config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawitems)\n ExtJSComponent.rawConfigs.items = ExtJSComponent.rawitems\n }\n if(ExtJSComponent.rawmenu != undefined) {\n l(`new set menu config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawmenu)\n ExtJSComponent.rawConfigs.menu = ExtJSComponent.rawmenu\n }\n if(ExtJSComponent.rawmenuitems != undefined) {\n l(`new set menu items config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawmenuitems)\n ExtJSComponent.rawConfigs.items = ExtJSComponent.rawmenuitems\n }\n if(ExtJSComponent.rawbuttons != undefined) {\n l(`new set buttons items config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawmenuitems)\n ExtJSComponent.rawConfigs.buttons = ExtJSComponent.rawbuttons\n }\n if(ExtJSComponent.rawcell != undefined) {\n l(`new set cell config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawmenu)\n ExtJSComponent.rawConfigs.cell = ExtJSComponent.rawcell\n }\n if(ExtJSComponent.raweditor != undefined) {\n l(`new set editor config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawmenu)\n ExtJSComponent.rawConfigs.editor = ExtJSComponent.raweditor\n }\n if(ExtJSComponent.rawwidget != undefined) {\n l(`new set widget config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawmenu)\n ExtJSComponent.rawConfigs.widget = ExtJSComponent.rawwidget\n }\n if(ExtJSComponent.rawtooltip != undefined) {\n l(`new set widget config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawmenu)\n ExtJSComponent.rawConfigs.tooltip = ExtJSComponent.rawtooltip\n }\n if(ExtJSComponent.rawConfigs.renderer != undefined && CLASS_CACHE.Column && isAssignableFrom(ExtJSComponent.rawConfigs,CLASS_CACHE.Column)) {\n l(`renderer`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawConfigs.renderer)\n ExtJSComponent.rawConfigs.cell= ExtJSComponent.rawConfigs.cell || {}\n ExtJSComponent.rawConfigs.cell.xtype = 'renderercell'\n }\n if(ExtJSComponent.rawConfigs.columns!= undefined && CLASS_CACHE.Column && isAssignableFrom(ExtJSComponent.rawConfigs,CLASS_CACHE.Column)) {\n l(`renderer`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawConfigs.renderer)\n ExtJSComponent.rawConfigs.columns.forEach(function(column){\n if(column.renderer != undefined) {\n column.cell= column.cell || {}\n column.cell.xtype = 'renderercell'\n }\n })\n }\n if(ExtJSComponent.rawConfigs.config != undefined ) {\n Object.assign(ExtJSComponent.rawConfigs, ExtJSComponent.rawConfigs.config); \n }\n if (typeof(props.children) == 'string' || typeof(props.children) == 'number') {\n if(ExtJSComponent.rawhtml === undefined) {\n ExtJSComponent.rawConfigs.html = props.children\n }\n }\n ExtJSComponent.rawConfigs = ExtJSComponent._cloneProps(ExtJSComponent.rawConfigs)\n ExtJSComponent.cmp = new ExtJSComponent.extJSClass(ExtJSComponent.rawConfigs)\n l(`ExtRenderer: finalizeInitialChildren, type: ${type}, xtype: ${xtype}, (ExtJSComponent.rawConfigs, ExtJSComponent.cmp)`, ExtJSComponent.rawConfigs, ExtJSComponent.cmp)\n }\n else {\n //SK : HTML Rendering - STEP 2 : Create component and render HTML in its DOM\n var cmp = Ext.create({xtype:'container', cls: 'x-react-element'})\n if (Ext.isClassic) {\n //in commit\n }\n else {\n ReactDOM.render(React.createElement(type, props, props.children),cmp.el.dom)\n }\n ExtJSComponent.cmp = cmp\n l(`ExtRenderer: finalizeInitialChildren, type: ${type}, xtype: ${xtype}, ExtJSComponent == html`,ExtJSComponent)\n }\n return true;\n },\n \n createTextInstance(text, rootContainerInstance, internalInstanceHandle) {\n l(`createTextInstance (text, rootContainerInstance, internalInstanceHandle)`,text, rootContainerInstance, internalInstanceHandle)\n return text\n },\n \n getPublicInstance(instance) {\n l(`getPublicInstance`,instance)\n return instance\n },\n\n prepareForCommit() {\n l(`prepareForCommit**********`)\n },\n\n prepareUpdate(domElement, type, oldProps, newProps) {\n l(`prepareUpdate ${type} **********`)\n return UPDATE_SIGNAL\n },\n\n resetAfterCommit() {\n l(`resetAfterCommit**********`)\n },\n\n resetTextContent(domElement) {\n l(`resetTextContent**********`)\n },\n\n shouldDeprioritizeSubtree(type, props) {\n l(`shouldDeprioritizeSubtree**********`)\n return false\n },\n\n getRootHostContext() {\n l(`getRootHostContext**********`)\n return emptyObject\n },\n\n getChildHostContext() {\n l(`getChildHostContext**********`)\n return emptyObject\n },\n\n //scheduleDeferredCallback: ReactDOMFrameScheduling.rIC,\n\n shouldSetTextContent(type, props) {\n l(`shouldSetTextContent**********type,props`,type,props)\n //SK : FOR HTML Nested Components we need to create instance for only parent so we set the text context\n const xtype = type.toLowerCase().replace(/_/g, '-')\n var extJSClass = Ext.ClassManager.getByAlias(`widget.${xtype}`)\n var s = typeof props.children === 'string' || typeof props.children === 'number' || extJSClass === undefined\n l(`shouldSetTextContent**********s`,s)\n return (\n typeof props.children === 'string' || typeof props.children === 'number' || extJSClass === undefined\n );\n },\n\n //now: ReactDOMFrameScheduling.now,\n now: () => {},\n\n useSyncScheduling: true,\n\tsupportsMutation: true,\n\n appendChildToContainer(parentInstance, childInstance) {\n //should only be for ExtReact root component\n if (parentInstance != null && childInstance != null) {\n l('appendChildToContainer (childInstance.target, parentInstance, childInstance)', childInstance.target, parentInstance, childInstance)\n //this section replaces all of doAdd!!!\n var parentCmp = parentInstance\n var childCmp = childInstance.cmp\n\n if (parentCmp.ExtReactRoot != true) {\n console.log('appendChildToContainer ERROR ExtReactRoot is the only one to be in do Add')\n throw error\n }\n else {\n l('appendChildToContainer This is ExtReactRoot, call add method on parent')\n if(childCmp) {\n parentCmp.add(childCmp)\n } else {\n l(\"appendChildToContainer This is ExtReactRoot but with string/non ExtJS child\")\n }\n }\n }\n else {\n l('appendChildToContainer (null) parentInstance', parentInstance)\n l('appendChildToContainer (null) childInstance', childInstance)\n }\n\n // if (Ext.isClassic) {\n // if(childInstance.createElement) {\n // console.log(childInstance)\n // console.log(childInstance.createElement)\n // console.log(childInstance.cmp.getEl().dom)\n // ReactDOM.render(childInstance.createElement,childInstance.cmp.getEl().dom)\n // }\n // }\n },\n\n removeChildFromContainer(parentInstance, child) {\n l(`removeChildFromContainer (parentInstance, child)`, parentInstance, child)\n if (parentInstance != null && child != null) {\n if(child.cmp) {\n parentInstance.remove(child.cmp, true)\n } else {\n console.log(\"removeChildFromContainer - child.cmp is undefined\")\n } \n }\n },\n\n commitMount(instance, type, newProps) {\n l(`commitMount********** (instance, type, newProps)`,instance, type, newProps)\n const xtype = type.toLowerCase().replace(/_/g, '-')\n var extJSClass = Ext.ClassManager.getByAlias(`widget.${xtype}`);\n if (!extJSClass) {\n instance._applyProps(null, newProps, instance, type);\n }\n },\n\n commitUpdate(instance, updatePayload, type, oldProps, newProps) {\n l(`commitUpdate ${type} (instance, updatePayload, oldProps, newProps)`, instance, updatePayload, oldProps, newProps)\n if (instance._applyProps) {\n instance._applyProps(oldProps, newProps, instance, type);\n }\n else {\n console.log('Error: _applyProps')\n console.log(instance)\n }\n },\n\n appendChild(parentInstance, childInstance) {\n if(childInstance.cmp === undefined) {\n l(\"plain text\")\n return false;\n }\n if (parentInstance != null && childInstance != null) {\n l('appendChild (childInstance.xtype, parentInstance, child)', childInstance.xtype, parentInstance, childInstance)\n doAdd(childInstance.xtype, parentInstance.cmp, childInstance.cmp, childInstance.reactChildren)\n }\n else {\n console.warn('both are null')\n }\n },\n\n insertBefore(parentInstance, child, beforeChild) {\n l(`insertBefore**********`)\n invariant(\n child !== beforeChild,\n 'ExtRenderer: Can not insert node before itself',\n );\n if(parentInstance.cmp.insertBefore && typeof parentInstance.cmp.insertBefore === 'function') {\n parentInstance.cmp.insertBefore(child.cmp, beforeChild.cmp);\n }\n },\n\n insertInContainerBefore(parentInstance, child, beforeChild) {\n l(`insertInContainerBefore**********`)\n invariant(\n child !== beforeChild,\n 'ExtRenderer: Can not insert node before itself',\n );\n child.injectBefore(beforeChild);\n },\n\n removeChild(parentInstance, child) {\n if (parentInstance != null && child != null) {\n l(`removeChild (parentInstance, child)`, parentInstance, child)\n //not working commented out for tab panel close - does this cause anything to break??\n if (parentInstance.xtype == 'html') return //correct??\n if (child.cmp != undefined) {\n if(parentInstance.cmp.xtype == 'grid' && child.cmp.xtype == 'column') {\n parentInstance.cmp.removeColumn(child.cmp);\n } \n else if(parentInstance.cmp.xtype === \"button\") {\n if(child.cmp.xtype === \"menu\"){\n parentInstance.cmp.setMenu(null)\n }\n }\n else if(parentInstance.cmp.getItems!= undefined && typeof parentInstance.cmp.getItems == 'function' && parentInstance.cmp.getItems().get(child.cmp.getItemId())) {\n parentInstance.cmp.remove(child.cmp, true)\n } else {\n l(\"DID NOTHING IN REMOVE\")\n } \n }\n }\n else {\n console.warn('removeChild - both are null')\n }\n },\n\n commitTextUpdate(textInstance, oldText, newText) {\n l(`commitTextUpdate**********`)\n },\n\n})\n\nexport default ExtRenderer\n\n/**\n * Wraps a dom element in an Ext Component so it can be added as a child item to an Ext Container. We attach\n * a reference to the generated Component to the dom element so it can be destroyed later if the dom element\n * is removed when rerendering\n * @param {Object} node A React node object with node, children, and text\n * @returns {Ext.Component}\n */\nfunction wrapDOMElement(node) {\n let contentEl = node.node;\n\n const cmp = new Ext.Component({ \n // We give the wrapper component a class so that developers can reset css \n // properties (ex. box-sizing: context-box) for third party components.\n cls: 'x-react-element' \n });\n \n if (cmp.element) {\n // modern\n DOMLazyTree.insertTreeBefore(cmp.element.dom, node);\n } else {\n // classic\n const target = document.createElement('div');\n DOMLazyTree.insertTreeBefore(target, node);\n cmp.contentEl = contentEl instanceof HTMLElement ? contentEl : target /* text fragment or comment */;\n }\n\n cmp.$createdByExtReact = true;\n contentEl._extCmp = cmp;\n\n // this is needed for devtools when using dangerouslyReplaceNodeWithMarkup\n // this not needed in fiber\n cmp.node = contentEl;\n\n return cmp;\n}\n\n/**\n * Returns true if subClass is parentClass or a sub class of parentClass\n * @param {Ext.Class} subClass\n * @param {Ext.Class} parentClass\n * @return {Boolean}\n */\nfunction isAssignableFrom(subClass, parentClass) {\n if (!subClass || !parentClass) return false;\n if (parentClass.xtype == 'gridcolumn' && subClass.xtype != undefined) {\n subClass = Ext.ClassManager.getByAlias('widget.' + subClass.xtype)\n }\n return subClass === parentClass || subClass.prototype instanceof parentClass;\n}\n\n//this needs to be refactored\nfunction doAdd(childXtype, parentCmp, childCmp, childPropsChildren) {\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, (parentCmp, childCmp, childPropsChildern)`, parentCmp, childCmp, childPropsChildren)\n\n if(parentCmp.xtype == 'grid') {\n if (childXtype == 'column' || \n childXtype == 'treecolumn' || \n childXtype == 'textcolumn' || \n childXtype == 'checkcolumn' || \n childXtype == 'datecolumn' || \n childXtype == 'rownumberer' ||\n childXtype == 'numbercolumn' ) {\n parentCmp.addColumn(childCmp);\n }\n }\n else if (parentCmp.xtype == 'tooltip') {\n parentCmp.setTooltip(childCmp)\n }\n else if (parentCmp.xtype == 'plugin') {\n parentCmp.setPlugin(childCmp)\n }\n else if (parentCmp.xtype == 'button') {\n if (childXtype == 'menu') {\n// l(`doAdd button/menu`)\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, button/menu setMenu`)\n parentCmp.setMenu(childCmp)\n }\n else {\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, did nothing!!!`)\n }\n }\n\n else if (childXtype == 'toolbar' && Ext.isClassic == true) {\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, toolbar, classic, addDockedItems`)\n parentCmp.addDockedItems(childCmp)\n }\n\n\n else if ((childXtype == 'toolbar' || childXtype == 'titlebar') && parentCmp.getHideHeaders != undefined) {\n if (parentCmp.getHideHeaders() == false) {\n// l(`doAdd toolbar hideHeaders is false`)\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, toolbar hideHeaders is false, insert`)\n var i = parentCmp.items.items.length\n parentCmp.insert(i-1,childCmp)\n }\n else {\n //l(`doAdd toolbar hideHeaders is true`)\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, toolbar hideHeaders is false, add`)\n parentCmp.add(childCmp)\n }\n }\n else if (parentCmp.add != undefined) {\n //l(`doAdd use add method`, parentCmp.xtype, childCmp.xtype)\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, add`)\n parentCmp.add(childCmp)\n }\n else {\n //l(`doAdd did nothing!!!`, parentCmp.xtype, childCmp.xtype)\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, did nothing!!!`)\n\n }\n\n \n//we return if we handle html children correctly\n//return\n\n\n\n\n// if (childPropsChildren == undefined) return\n// if (childPropsChildren.type == undefined) { \n// if(typeof childPropsChildren === \"string\") {\n// //PLAIN TEXT CASE\n// var text=childPropsChildren\n// //l(`${text} is PLAIN TEXT`)\n// l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, ${text} is PLAIN TEXT`)\n// childCmp.setHtml(text)\n// } \n// else {\n// l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, (children)`, childPropsChildren)\n// for (var i = 0; i < childPropsChildren.length; i++) {\n// var child = childPropsChildren[i]\n// var xtype = null\n// try {\n// var type = child.type\n// if (type == undefined) { \n// type = child[0].type \n// }\n// xtype = type.toLowerCase().replace(/_/g, '-')\n// }\n// catch(e) {\n// l(`ExtRenderer.js: doAdd, child ${i}, catch (child)`, child)\n// continue\n// }\n// if (xtype != null) {\n// var target = Ext.ClassManager.getByAlias(`widget.${xtype}`)\n// if (target == undefined) {\n// //l(`${xtype} is HTML`)\n// l(`ExtRenderer.js: doAdd, child ${i}, xtype: ${xtype}, is HTML`)\n// //should call wrapDOMElement(node)??? what does classic do? can widget be used?\n// var widget = Ext.create({xtype:'widget'})\n// childCmp.add(widget)\n// ReactDOM.render(child,widget.el.dom)\n// }\n// else {\n// // l(`xtype is NULL`)\n// l(`ExtRenderer.js: doAdd, child ${i}, xtype: ${xtype}, target ${xtype}`)\n// }\n// }\n// else {\n// l(`ExtRenderer.js: doAdd, children, xtype: ${xtype}, i: ${i}, is null`)\n// //l(`${xtype} is ExtJS`)\n// }\n// }\n// }\n \n// }\n// else {\n// l(childPropsChildren);\n// var child = childPropsChildren\n\n// var xtype = null\n// try {\n// var type = child.type\n// if (type == undefined) { \n// type = child[0].type \n// }\n// xtype = type.toLowerCase().replace(/_/g, '-')\n// }\n// catch(e) {\n// }\n\n// if (xtype != null) {\n// var extObject = Ext.ClassManager.getByAlias(`widget.${xtype}`)\n// if (extObject == undefined) {\n// l(`${xtype} is HTML`)\n// //should call wrapDOMElement(node)??? what does classic do? can widget be used?\n\n// var widget = Ext.create({xtype:'widget'})\n// childCmp.add(widget)\n// ReactDOM.render(child,widget.el.dom)\n// }\n// else {\n// l(`xtype is NULL`)\n// }\n// }\n// else {\n// l(`${xtype} is ExtJS`)\n// }\n\n// }\n}\n"],"file":"ExtRenderer.js"} \ No newline at end of file +{"version":3,"sources":["../src/ExtRenderer.js"],"names":["ReactDOM","l","reactify2","htmlify2","React","Reconciler","invariant","emptyObject","UPDATE_SIGNAL","CLASS_CACHE","Grid","Ext","ClassManager","getByAlias","Column","Button","Menu","ToolTip","CellBase","get","WidgetCell","Dialog","Field","FitLayout","TabPanel","RendererCell","ExtRenderer","createInstance","type","props","internalInstanceHandle","instance","xtype","toLowerCase","replace","extJSClass","undefined","htmlifiedClass","reactifiedClass","appendInitialChild","parentInstance","childInstance","trim","length","parentXtype","childXtype","rawcolumns","push","cmp","rawmenu","rawmenuitems","rawcell","initialConfig","raweditor","rawbuttons","rawwidget","rawtooltip","config","rel","name","rawConfigs","rawitems","finalizeInitialChildren","ExtJSComponent","columns","items","menu","buttons","cell","editor","widget","tooltip","renderer","isAssignableFrom","forEach","column","Object","assign","children","rawhtml","html","_cloneProps","create","cls","isClassic","render","createElement","el","dom","createTextInstance","text","rootContainerInstance","getPublicInstance","prepareForCommit","prepareUpdate","domElement","oldProps","newProps","resetAfterCommit","resetTextContent","shouldDeprioritizeSubtree","getRootHostContext","getChildHostContext","shouldSetTextContent","s","now","useSyncScheduling","supportsMutation","appendChildToContainer","target","parentCmp","childCmp","ExtReactRoot","console","log","error","add","removeChildFromContainer","child","remove","commitMount","_applyProps","commitUpdate","updatePayload","appendChild","doAdd","reactChildren","warn","insertBefore","beforeChild","insertInContainerBefore","injectBefore","removeChild","removeColumn","setMenu","getItems","getItemId","commitTextUpdate","textInstance","oldText","newText","wrapDOMElement","node","contentEl","Component","element","DOMLazyTree","insertTreeBefore","document","HTMLElement","$createdByExtReact","_extCmp","subClass","parentClass","prototype","childPropsChildren","childxtype","addColumn","getHideHeaders","insert","setTooltip","setPlugin","addDockedItems","i"],"mappings":"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","sourcesContent":["import ReactDOM from 'react-dom';\nimport { l } from './index'\nimport { reactify2, htmlify2 } from './reactify';\nimport React from 'react';\nimport Reconciler from 'react-reconciler';\nimport invariant from 'fbjs/lib/invariant';\nimport emptyObject from 'fbjs/lib/emptyObject';\nconst UPDATE_SIGNAL = {};\nconst CLASS_CACHE = {\n Grid: Ext.ClassManager.getByAlias('widget.grid'),\n Column: Ext.ClassManager.getByAlias('widget.gridcolumn'),\n Button: Ext.ClassManager.getByAlias('widget.button'),\n Menu: Ext.ClassManager.getByAlias('widget.menu'),\n ToolTip: Ext.ClassManager.getByAlias('widget.tooltip'),\n CellBase: Ext.ClassManager.get('Ext.grid.cell.Base'),\n WidgetCell: Ext.ClassManager.getByAlias('widget.widgetcell'),\n Dialog: Ext.ClassManager.getByAlias('widget.dialog'),\n Field: Ext.ClassManager.getByAlias('widget.field'),\n FitLayout: Ext.ClassManager.getByAlias('layout.fit'),\n TabPanel: Ext.ClassManager.getByAlias('widget.tabpanel'),\n RendererCell: Ext.ClassManager.getByAlias('widget.renderercell'),\n Field: Ext.ClassManager.getByAlias('widget.field')\n}\n\nconst ExtRenderer = Reconciler({\n\n createInstance(type, props, internalInstanceHandle) {\n let instance = null;\n const xtype = type.toLowerCase().replace(/_/g, '-')\n var extJSClass = Ext.ClassManager.getByAlias(`widget.${xtype}`)\n if (extJSClass == undefined) {\n l(`ExtRenderer: createInstance, type: ${type}, extJSClass UNDEFINED (type, props, internalInstanceHandle)`,type, props, internalInstanceHandle)\n //SK : HTML Rendering - STEP 1 : Create HTML Instance\n var htmlifiedClass = htmlify2(type)\n instance = new htmlifiedClass(props);\n return instance\n }\n else {\n l(`ExtRenderer: createInstance, type: ${type}, (props, internalInstanceHandle)`, props, internalInstanceHandle)\n var reactifiedClass = reactify2(type) // could send xtype\n instance = new reactifiedClass(props);\n return instance;\n }\n },\n\n appendInitialChild(parentInstance, childInstance) {\n if (childInstance == null || (typeof childInstance === \"string\" && childInstance.trim().length === 0)) {return}\n if (parentInstance != null && childInstance != null) {\n //SK : Do not uncomment below console statement. It will cause error in case of div\n //l(`ExtRenderer: appendInitialChild, parentxtype: ${parentInstance.rawConfigs.xtype}, childxtype: ${childInstance.cmp.xtype}, (parentInstance, childInstance)`,parentInstance, childInstance)\n l(`ExtRenderer: appendInitialChild`)\n var parentXtype = parentInstance.xtype\n var childXtype = childInstance.xtype\n if (childXtype == 'column' ||\n childXtype == 'treecolumn' ||\n childXtype == 'textcolumn' ||\n childXtype == 'checkcolumn' ||\n childXtype == 'datecolumn' ||\n childXtype == 'numbercolumn' )\n {\n if(parentInstance.rawcolumns == undefined) { parentInstance.rawcolumns = [] }\n parentInstance.rawcolumns.push(childInstance.cmp)\n }\n else if (parentXtype == 'button' && childXtype == 'menu') {\n if(parentInstance.rawmenu == undefined) { parentInstance.rawmenu = {} }\n parentInstance.rawmenu =childInstance.cmp\n }\n else if (parentXtype == 'menu' && childXtype == 'menuitem') {\n if(parentInstance.rawmenuitems == undefined) { parentInstance.rawmenuitems = [] }\n parentInstance.rawmenuitems.push(childInstance.cmp)\n }\n else if (parentXtype == 'column' && childXtype == 'renderercell') {\n if(parentInstance.rawcell == undefined) \n parentInstance.rawcell = childInstance.cmp.initialConfig\n }\n else if (parentXtype == 'column' && childXtype == 'widgetcell') {\n if(parentInstance.rawcell == undefined) \n parentInstance.rawcell = childInstance.cmp.initialConfig\n }\n else if (parentXtype == 'column' && childInstance.cmp instanceof CLASS_CACHE.Field ) {\n if(parentInstance.raweditor == undefined) \n parentInstance.raweditor = childInstance.cmp\n } \n else if (parentXtype == 'dialog' && childXtype == 'button') {\n if(parentInstance.rawbuttons == undefined) { parentInstance.rawbuttons = [] }\n parentInstance.rawbuttons.push(childInstance.cmp)\n }\n else if (parentXtype == 'widgetcell') {\n if(parentInstance.rawwidget == undefined) \n parentInstance.rawwidget = childInstance.cmp.initialConfig\n }\n else if (childXtype == 'tooltip') {\n if(parentInstance.rawtooltip == undefined) \n parentInstance.rawtooltip = childInstance.cmp\n }\n else if (childInstance.cmp.config && childInstance.cmp.config.rel) {\n let name = childInstance.cmp.config['rel']\n if(typeof name == 'string') {\n parentInstance.rawConfigs[name] = childInstance.cmp\n }\n }\n else {\n if(parentInstance.rawitems == undefined) { parentInstance.rawitems = [] }\n if(childXtype == 'cartesian') {\n parentInstance.rawitems.push(childInstance.cmp.initialConfig)\n } else {\n parentInstance.rawitems.push(childInstance.cmp)\n }\n }\n }\n\t},\n\n finalizeInitialChildren(ExtJSComponent, type, props) {\n l(`ExtRenderer: finalizeInitialChildren`)\n //console.log('setting collection configs and creating EXT component here')\n const xtype = type.toLowerCase().replace(/_/g, '-')\n if (ExtJSComponent.extJSClass != null) {\n l(`ExtRenderer: finalizeInitialChildren, type: ${type}, xtype: ${xtype}, (ExtJSComponent, props)`, ExtJSComponent,props)\n if(ExtJSComponent.rawcolumns != undefined) {\n l(`new set columns config (parent xtype,child columns)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawcolumns)\n ExtJSComponent.rawConfigs.columns = ExtJSComponent.rawcolumns\n }\n if(ExtJSComponent.rawitems != undefined) {\n l(`new set items config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawitems)\n ExtJSComponent.rawConfigs.items = ExtJSComponent.rawitems\n }\n if(ExtJSComponent.rawmenu != undefined) {\n l(`new set menu config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawmenu)\n ExtJSComponent.rawConfigs.menu = ExtJSComponent.rawmenu\n }\n if(ExtJSComponent.rawmenuitems != undefined) {\n l(`new set menu items config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawmenuitems)\n ExtJSComponent.rawConfigs.items = ExtJSComponent.rawmenuitems\n }\n if(ExtJSComponent.rawbuttons != undefined) {\n l(`new set buttons items config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawmenuitems)\n ExtJSComponent.rawConfigs.buttons = ExtJSComponent.rawbuttons\n }\n if(ExtJSComponent.rawcell != undefined) {\n l(`new set cell config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawmenu)\n ExtJSComponent.rawConfigs.cell = ExtJSComponent.rawcell\n }\n if(ExtJSComponent.raweditor != undefined) {\n l(`new set editor config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawmenu)\n ExtJSComponent.rawConfigs.editor = ExtJSComponent.raweditor\n }\n if(ExtJSComponent.rawwidget != undefined) {\n l(`new set widget config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawmenu)\n ExtJSComponent.rawConfigs.widget = ExtJSComponent.rawwidget\n }\n if(ExtJSComponent.rawtooltip != undefined) {\n l(`new set widget config (parent xtype,child items)`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawmenu)\n ExtJSComponent.rawConfigs.tooltip = ExtJSComponent.rawtooltip\n }\n if(ExtJSComponent.rawConfigs.renderer != undefined && CLASS_CACHE.Column && isAssignableFrom(ExtJSComponent.rawConfigs,CLASS_CACHE.Column)) {\n l(`renderer`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawConfigs.renderer)\n ExtJSComponent.rawConfigs.cell= ExtJSComponent.rawConfigs.cell || {}\n ExtJSComponent.rawConfigs.cell.xtype = 'renderercell'\n }\n if(ExtJSComponent.rawConfigs.columns!= undefined && CLASS_CACHE.Column && isAssignableFrom(ExtJSComponent.rawConfigs,CLASS_CACHE.Column)) {\n l(`renderer`,ExtJSComponent.rawConfigs.xtype,ExtJSComponent.rawConfigs.renderer)\n ExtJSComponent.rawConfigs.columns.forEach(function(column){\n if(column.renderer != undefined) {\n column.cell= column.cell || {}\n column.cell.xtype = 'renderercell'\n }\n })\n }\n if(ExtJSComponent.rawConfigs.config != undefined ) {\n Object.assign(ExtJSComponent.rawConfigs, ExtJSComponent.rawConfigs.config); \n }\n if (typeof(props.children) == 'string' || typeof(props.children) == 'number') {\n if(ExtJSComponent.rawhtml === undefined) {\n ExtJSComponent.rawConfigs.html = props.children\n }\n }\n ExtJSComponent.rawConfigs = ExtJSComponent._cloneProps(ExtJSComponent.rawConfigs)\n ExtJSComponent.cmp = new ExtJSComponent.extJSClass(ExtJSComponent.rawConfigs)\n l(`ExtRenderer: finalizeInitialChildren, type: ${type}, xtype: ${xtype}, (ExtJSComponent.rawConfigs, ExtJSComponent.cmp)`, ExtJSComponent.rawConfigs, ExtJSComponent.cmp)\n }\n else {\n //SK : HTML Rendering - STEP 2 : Create component and render HTML in its DOM\n var cmp = Ext.create({xtype:'container', cls: 'x-react-element'})\n if (Ext.isClassic) {\n //in commit\n }\n else {\n ReactDOM.render(React.createElement(type, props, props.children),cmp.el.dom)\n }\n ExtJSComponent.cmp = cmp\n l(`ExtRenderer: finalizeInitialChildren, type: ${type}, xtype: ${xtype}, ExtJSComponent == html`,ExtJSComponent)\n }\n return true;\n },\n \n createTextInstance(text, rootContainerInstance, internalInstanceHandle) {\n l(`createTextInstance (text, rootContainerInstance, internalInstanceHandle)`,text, rootContainerInstance, internalInstanceHandle)\n return text\n },\n \n getPublicInstance(instance) {\n l(`getPublicInstance`,instance)\n return instance\n },\n\n prepareForCommit() {\n l(`prepareForCommit**********`)\n },\n\n prepareUpdate(domElement, type, oldProps, newProps) {\n l(`prepareUpdate ${type} **********`)\n return UPDATE_SIGNAL\n },\n\n resetAfterCommit() {\n l(`resetAfterCommit**********`)\n },\n\n resetTextContent(domElement) {\n l(`resetTextContent**********`)\n },\n\n shouldDeprioritizeSubtree(type, props) {\n l(`shouldDeprioritizeSubtree**********`)\n return false\n },\n\n getRootHostContext() {\n l(`getRootHostContext**********`)\n return emptyObject\n },\n\n getChildHostContext() {\n l(`getChildHostContext**********`)\n return emptyObject\n },\n\n //scheduleDeferredCallback: ReactDOMFrameScheduling.rIC,\n\n shouldSetTextContent(type, props) {\n l(`shouldSetTextContent**********type,props`,type,props)\n //SK : FOR HTML Nested Components we need to create instance for only parent so we set the text context\n const xtype = type.toLowerCase().replace(/_/g, '-')\n var extJSClass = Ext.ClassManager.getByAlias(`widget.${xtype}`)\n var s = typeof props.children === 'string' || typeof props.children === 'number' || extJSClass === undefined\n l(`shouldSetTextContent**********s`,s)\n return (\n typeof props.children === 'string' || typeof props.children === 'number' || extJSClass === undefined\n );\n },\n\n //now: ReactDOMFrameScheduling.now,\n now: () => {},\n\n useSyncScheduling: true,\n\tsupportsMutation: true,\n\n appendChildToContainer(parentInstance, childInstance) {\n //should only be for ExtReact root component\n if (parentInstance != null && childInstance != null) {\n l('appendChildToContainer (childInstance.target, parentInstance, childInstance)', childInstance.target, parentInstance, childInstance)\n //this section replaces all of doAdd!!!\n var parentCmp = parentInstance\n var childCmp = childInstance.cmp\n\n if (parentCmp.ExtReactRoot != true) {\n console.log('appendChildToContainer ERROR ExtReactRoot is the only one to be in do Add')\n throw error\n }\n else {\n l('appendChildToContainer This is ExtReactRoot, call add method on parent')\n if(childCmp) {\n parentCmp.add(childCmp)\n } else {\n l(\"appendChildToContainer This is ExtReactRoot but with string/non ExtJS child\")\n }\n }\n }\n else {\n l('appendChildToContainer (null) parentInstance', parentInstance)\n l('appendChildToContainer (null) childInstance', childInstance)\n }\n\n // if (Ext.isClassic) {\n // if(childInstance.createElement) {\n // console.log(childInstance)\n // console.log(childInstance.createElement)\n // console.log(childInstance.cmp.getEl().dom)\n // ReactDOM.render(childInstance.createElement,childInstance.cmp.getEl().dom)\n // }\n // }\n },\n\n removeChildFromContainer(parentInstance, child) {\n l(`removeChildFromContainer (parentInstance, child)`, parentInstance, child)\n if (parentInstance != null && child != null) {\n if(child.cmp) {\n parentInstance.remove(child.cmp, true)\n } else {\n console.log(\"removeChildFromContainer - child.cmp is undefined\")\n } \n }\n },\n\n commitMount(instance, type, newProps) {\n l(`commitMount********** (instance, type, newProps)`,instance, type, newProps)\n const xtype = type.toLowerCase().replace(/_/g, '-')\n var extJSClass = Ext.ClassManager.getByAlias(`widget.${xtype}`);\n if (!extJSClass) {\n instance._applyProps(null, newProps, instance, type);\n }\n },\n\n commitUpdate(instance, updatePayload, type, oldProps, newProps) {\n l(`commitUpdate ${type} (instance, updatePayload, oldProps, newProps)`, instance, updatePayload, oldProps, newProps)\n if (instance._applyProps) {\n instance._applyProps(oldProps, newProps, instance, type);\n }\n else {\n console.log('Error: _applyProps')\n console.log(instance)\n }\n },\n\n appendChild(parentInstance, childInstance) {\n if(childInstance.cmp === undefined) {\n l(\"plain text\")\n return false;\n }\n if (parentInstance != null && childInstance != null) {\n l('appendChild (childInstance.xtype, parentInstance, child)', childInstance.xtype, parentInstance, childInstance)\n doAdd(childInstance.xtype, parentInstance.cmp, childInstance.cmp, childInstance.reactChildren)\n }\n else {\n console.warn('both are null')\n }\n },\n\n insertBefore(parentInstance, child, beforeChild) {\n l(`insertBefore**********`)\n invariant(\n child !== beforeChild,\n 'ExtRenderer: Can not insert node before itself',\n );\n if(parentInstance.cmp.insertBefore && typeof parentInstance.cmp.insertBefore === 'function') {\n parentInstance.cmp.insertBefore(child.cmp, beforeChild.cmp);\n }\n },\n\n insertInContainerBefore(parentInstance, child, beforeChild) {\n l(`insertInContainerBefore**********`)\n invariant(\n child !== beforeChild,\n 'ExtRenderer: Can not insert node before itself',\n );\n child.injectBefore(beforeChild);\n },\n\n removeChild(parentInstance, child) {\n if (parentInstance != null && child != null) {\n l(`removeChild (parentInstance, child)`, parentInstance, child)\n //not working commented out for tab panel close - does this cause anything to break??\n if (parentInstance.xtype == 'html') return //correct??\n if (child.cmp != undefined) {\n if(parentInstance.cmp.xtype == 'grid' && child.cmp.xtype == 'column') {\n parentInstance.cmp.removeColumn(child.cmp);\n } \n else if(parentInstance.cmp.xtype === \"button\") {\n if(child.cmp.xtype === \"menu\"){\n parentInstance.cmp.setMenu(null)\n }\n }\n else if(parentInstance.cmp.getItems!= undefined && typeof parentInstance.cmp.getItems == 'function' && parentInstance.cmp.getItems().get(child.cmp.getItemId())) {\n parentInstance.cmp.remove(child.cmp, true)\n } else {\n l(\"DID NOTHING IN REMOVE\")\n } \n }\n }\n else {\n console.warn('removeChild - both are null')\n }\n },\n\n commitTextUpdate(textInstance, oldText, newText) {\n l(`commitTextUpdate**********`)\n },\n\n})\n\nexport default ExtRenderer\n\n/**\n * Wraps a dom element in an Ext Component so it can be added as a child item to an Ext Container. We attach\n * a reference to the generated Component to the dom element so it can be destroyed later if the dom element\n * is removed when rerendering\n * @param {Object} node A React node object with node, children, and text\n * @returns {Ext.Component}\n */\nfunction wrapDOMElement(node) {\n let contentEl = node.node;\n\n const cmp = new Ext.Component({ \n // We give the wrapper component a class so that developers can reset css \n // properties (ex. box-sizing: context-box) for third party components.\n cls: 'x-react-element' \n });\n \n if (cmp.element) {\n // modern\n DOMLazyTree.insertTreeBefore(cmp.element.dom, node);\n } else {\n // classic\n const target = document.createElement('div');\n DOMLazyTree.insertTreeBefore(target, node);\n cmp.contentEl = contentEl instanceof HTMLElement ? contentEl : target /* text fragment or comment */;\n }\n\n cmp.$createdByExtReact = true;\n contentEl._extCmp = cmp;\n\n // this is needed for devtools when using dangerouslyReplaceNodeWithMarkup\n // this not needed in fiber\n cmp.node = contentEl;\n\n return cmp;\n}\n\n/**\n * Returns true if subClass is parentClass or a sub class of parentClass\n * @param {Ext.Class} subClass\n * @param {Ext.Class} parentClass\n * @return {Boolean}\n */\nfunction isAssignableFrom(subClass, parentClass) {\n if (!subClass || !parentClass) return false;\n if (parentClass.xtype == 'gridcolumn' && subClass.xtype != undefined) {\n subClass = Ext.ClassManager.getByAlias('widget.' + subClass.xtype)\n }\n return subClass === parentClass || subClass.prototype instanceof parentClass;\n}\n\n//this needs to be refactored\nfunction doAdd(childXtype, parentCmp, childCmp, childPropsChildren) {\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, (parentCmp, childCmp, childPropsChildern)`, parentCmp, childCmp, childPropsChildren)\n\n var parentXtype = parentCmp.xtype\n\n\n if(parentXtype == 'grid') {\n // if (childXtype == 'column' || \n // childXtype == 'treecolumn' || \n // childXtype == 'textcolumn' || \n // childXtype == 'checkcolumn' || \n // childXtype == 'datecolumn' || \n // childXtype == 'rownumberer' ||\n // childXtype == 'numbercolumn' ) {\n if (childxtype === 'column' || childxtype === 'treecolumn' || childxtype === 'textcolumn' || childxtype === 'checkcolumn' || childxtype === 'datecolumn' || childxtype === 'rownumberer' || childxtype === 'numbercolumn') {\n parentCmp.addColumn(childCmp);\n }\n else if ((childxtype === 'toolbar' || childxtype === 'titlebar') && parentCmp.getHideHeaders != undefined) {\n if (parentCmp.getHideHeaders() === false) {\n //var j = parentCmp.items.items.length;\n parentCmp.insert(1, childCmp);\n }\n else {\n parentCmp.add(childCmp);\n }\n }\n else {\n console.log('??')\n }\n }\n else if (parentXtype == 'tooltip') {\n parentCmp.setTooltip(childCmp)\n }\n else if (parentXtype == 'plugin') {\n parentCmp.setPlugin(childCmp)\n }\n else if (parentXtype == 'button') {\n if (childXtype == 'menu') {\n// l(`doAdd button/menu`)\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, button/menu setMenu`)\n parentCmp.setMenu(childCmp)\n }\n else {\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, did nothing!!!`)\n }\n }\n\n else if (childXtype == 'toolbar' && Ext.isClassic == true) {\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, toolbar, classic, addDockedItems`)\n parentCmp.addDockedItems(childCmp)\n }\n\n\n else if ((childXtype == 'toolbar' || childXtype == 'titlebar') && parentCmp.getHideHeaders != undefined) {\n if (parentCmp.getHideHeaders() == false) {\n// l(`doAdd toolbar hideHeaders is false`)\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, toolbar hideHeaders is false, insert`)\n var i = parentCmp.items.items.length\n parentCmp.insert(i-1,childCmp)\n }\n else {\n //l(`doAdd toolbar hideHeaders is true`)\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, toolbar hideHeaders is false, add`)\n parentCmp.add(childCmp)\n }\n }\n else if (parentCmp.add != undefined) {\n //l(`doAdd use add method`, parentCmp.xtype, childCmp.xtype)\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, add`)\n parentCmp.add(childCmp)\n }\n else {\n //l(`doAdd did nothing!!!`, parentCmp.xtype, childCmp.xtype)\n l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, did nothing!!!`)\n\n }\n\n}\n\n\n//we return if we handle html children correctly\n//return\n\n\n\n\n// if (childPropsChildren == undefined) return\n// if (childPropsChildren.type == undefined) { \n// if(typeof childPropsChildren === \"string\") {\n// //PLAIN TEXT CASE\n// var text=childPropsChildren\n// //l(`${text} is PLAIN TEXT`)\n// l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, ${text} is PLAIN TEXT`)\n// childCmp.setHtml(text)\n// } \n// else {\n// l(`ExtRenderer.js: doAdd, parentxtype: ${parentCmp.xtype}, childxtype: ${childXtype}, (children)`, childPropsChildren)\n// for (var i = 0; i < childPropsChildren.length; i++) {\n// var child = childPropsChildren[i]\n// var xtype = null\n// try {\n// var type = child.type\n// if (type == undefined) { \n// type = child[0].type \n// }\n// xtype = type.toLowerCase().replace(/_/g, '-')\n// }\n// catch(e) {\n// l(`ExtRenderer.js: doAdd, child ${i}, catch (child)`, child)\n// continue\n// }\n// if (xtype != null) {\n// var target = Ext.ClassManager.getByAlias(`widget.${xtype}`)\n// if (target == undefined) {\n// //l(`${xtype} is HTML`)\n// l(`ExtRenderer.js: doAdd, child ${i}, xtype: ${xtype}, is HTML`)\n// //should call wrapDOMElement(node)??? what does classic do? can widget be used?\n// var widget = Ext.create({xtype:'widget'})\n// childCmp.add(widget)\n// ReactDOM.render(child,widget.el.dom)\n// }\n// else {\n// // l(`xtype is NULL`)\n// l(`ExtRenderer.js: doAdd, child ${i}, xtype: ${xtype}, target ${xtype}`)\n// }\n// }\n// else {\n// l(`ExtRenderer.js: doAdd, children, xtype: ${xtype}, i: ${i}, is null`)\n// //l(`${xtype} is ExtJS`)\n// }\n// }\n// }\n \n// }\n// else {\n// l(childPropsChildren);\n// var child = childPropsChildren\n\n// var xtype = null\n// try {\n// var type = child.type\n// if (type == undefined) { \n// type = child[0].type \n// }\n// xtype = type.toLowerCase().replace(/_/g, '-')\n// }\n// catch(e) {\n// }\n\n// if (xtype != null) {\n// var extObject = Ext.ClassManager.getByAlias(`widget.${xtype}`)\n// if (extObject == undefined) {\n// l(`${xtype} is HTML`)\n// //should call wrapDOMElement(node)??? what does classic do? can widget be used?\n\n// var widget = Ext.create({xtype:'widget'})\n// childCmp.add(widget)\n// ReactDOM.render(child,widget.el.dom)\n// }\n// else {\n// l(`xtype is NULL`)\n// }\n// }\n// else {\n// l(`${xtype} is ExtJS`)\n// }\n\n// }\n\n"],"file":"ExtRenderer.js"} \ No newline at end of file diff --git a/packages/ext-react/index.d.ts b/packages/ext-react/index.d.ts deleted file mode 100644 index 4b00ff3d..00000000 --- a/packages/ext-react/index.d.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { ReactElement, Component, ComponentClass, StatelessComponent } from 'react'; - -export function ExtReact
() - -export interface LaunchOptions { - debug: boolean -} - -/** - * Launches the app and renders the specified root component into the html body - * @param rootComponent The root component to render - */ -export function launch
(rootComponent: ReactElement
, options?: Partial (callback: (viewport: HTMLElement) => void | ReactElement , options?: Partial (component: ComponentClass | StatelessComponent ): ComponentClass ;
-
-export interface InstallOptions {
- /**
- * Adds a stylesheet that mimics an Ext JS Viewport by setting the html, body, and react root element to height: 100%.
- * Set this to true when using an Ext JS component at the root of your app.
- */
- viewport: boolean;
-}
-
-/**
- * Configures React.
- * @deprecated Use launch(