@elyra/canvas 12.12.3 → 12.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.stylelintrc.json +17 -16
- package/README.md +1 -1
- package/dist/_baseForOwn-7d4e8506.js.map +1 -1
- package/dist/_baseForOwn-d38b560e.js.map +1 -1
- package/dist/canvas-constants-34cdb7df.js.map +1 -1
- package/dist/canvas-constants-3c09c7f6.js.map +1 -1
- package/dist/{canvas-controller-e91d037b.js → canvas-controller-720a509c.js} +2 -2
- package/dist/canvas-controller-720a509c.js.map +1 -0
- package/dist/canvas-controller-73113a1b.js +2 -0
- package/dist/canvas-controller-73113a1b.js.map +1 -0
- package/dist/common-canvas-21b6ab50.js +2 -0
- package/dist/common-canvas-21b6ab50.js.map +1 -0
- package/dist/common-canvas-baef2726.js +2 -0
- package/dist/common-canvas-baef2726.js.map +1 -0
- package/dist/common-canvas.es.js +1 -1
- package/dist/common-canvas.es.js.map +1 -1
- package/dist/common-canvas.js +1 -1
- package/dist/common-canvas.js.map +1 -1
- package/dist/common-properties-86de4c9f.js +2 -0
- package/dist/common-properties-86de4c9f.js.map +1 -0
- package/dist/common-properties-9e579309.js +2 -0
- package/dist/common-properties-9e579309.js.map +1 -0
- package/dist/createClass-32a0cf0f.js.map +1 -1
- package/dist/createClass-6db89a23.js.map +1 -1
- package/dist/datarecord-metadata-v3-schema-6b6384ff.js.map +1 -1
- package/dist/datarecord-metadata-v3-schema-81228a9a.js.map +1 -1
- package/dist/en-7a0f1db1.js.map +1 -1
- package/dist/en-8647c347.js.map +1 -1
- package/dist/{extends-7fdcdc52.js → extends-1139e06f.js} +2 -2
- package/dist/{extends-7fdcdc52.js.map → extends-1139e06f.js.map} +1 -1
- package/dist/extends-8d17c85c.js.map +1 -1
- package/dist/{flexible-table-a13cb7d0.js → flexible-table-d3598aa8.js} +2 -2
- package/dist/flexible-table-d3598aa8.js.map +1 -0
- package/dist/{flexible-table-50ce600a.js → flexible-table-fe7fbc13.js} +2 -2
- package/dist/flexible-table-fe7fbc13.js.map +1 -0
- package/dist/getPrototypeOf-a1c3fe64.js.map +1 -1
- package/dist/getPrototypeOf-bf88242f.js.map +1 -1
- package/dist/{icon-bf77b2aa.js → icon-918d2dd3.js} +2 -2
- package/dist/{icon-bf77b2aa.js.map → icon-918d2dd3.js.map} +1 -1
- package/dist/{index-f2c306ba.js → index-669f95a7.js} +2 -2
- package/dist/{index-f2c306ba.js.map → index-669f95a7.js.map} +1 -1
- package/dist/{index-0e6c8b9c.js → index-6d3404e1.js} +2 -2
- package/dist/{index-0e6c8b9c.js.map → index-6d3404e1.js.map} +1 -1
- package/dist/isArrayLikeObject-a9c7973b.js.map +1 -1
- package/dist/isArrayLikeObject-f3b27f64.js.map +1 -1
- package/dist/lib/canvas-controller.es.js +1 -1
- package/dist/lib/canvas-controller.js +1 -1
- package/dist/lib/canvas.es.js +1 -1
- package/dist/lib/canvas.js +1 -1
- package/dist/lib/context-menu.es.js +1 -1
- package/dist/lib/properties/field-picker.es.js +1 -1
- package/dist/lib/properties/field-picker.js +1 -1
- package/dist/lib/properties/flexible-table.es.js +1 -1
- package/dist/lib/properties/flexible-table.js +1 -1
- package/dist/lib/properties.es.js +1 -1
- package/dist/lib/properties.js +1 -1
- package/dist/lib/tooltip.es.js +1 -1
- package/dist/lib/tooltip.es.js.map +1 -1
- package/dist/lib/tooltip.js +1 -1
- package/dist/lib/tooltip.js.map +1 -1
- package/dist/styles/common-canvas.min.css +1 -1
- package/dist/styles/common-canvas.min.css.map +1 -1
- package/dist/toolbar-29ec7983.js +2 -0
- package/dist/toolbar-29ec7983.js.map +1 -0
- package/dist/toolbar-3f4b173f.js +2 -0
- package/dist/toolbar-3f4b173f.js.map +1 -0
- package/locales/command-actions/locales/de.json +50 -8
- package/locales/command-actions/locales/en.json +1 -1
- package/locales/command-actions/locales/es.json +50 -8
- package/locales/command-actions/locales/fr.json +50 -8
- package/locales/command-actions/locales/index.js +2 -2
- package/locales/command-actions/locales/it.json +50 -8
- package/locales/command-actions/locales/ja.json +50 -8
- package/locales/command-actions/locales/ko.json +42 -0
- package/locales/command-actions/locales/pt-br.json +50 -8
- package/locales/command-actions/locales/zh-CN.json +51 -0
- package/locales/command-actions/locales/zh-TW.json +51 -0
- package/locales/common-canvas/locales/de.json +36 -26
- package/locales/common-canvas/locales/en.json +14 -1
- package/locales/common-canvas/locales/eo.json +14 -1
- package/locales/common-canvas/locales/es.json +36 -26
- package/locales/common-canvas/locales/fr.json +36 -26
- package/locales/common-canvas/locales/index.js +2 -2
- package/locales/common-canvas/locales/it.json +36 -26
- package/locales/common-canvas/locales/ja.json +36 -26
- package/locales/common-canvas/locales/ko.json +7 -2
- package/locales/common-canvas/locales/pt-br.json +36 -26
- package/locales/common-canvas/locales/zh-CN.json +37 -0
- package/locales/common-canvas/locales/zh-TW.json +37 -0
- package/locales/common-properties/locales/de.json +92 -92
- package/locales/common-properties/locales/en.json +1 -1
- package/locales/common-properties/locales/es.json +92 -92
- package/locales/common-properties/locales/fr.json +92 -92
- package/locales/common-properties/locales/index.js +2 -2
- package/locales/common-properties/locales/it.json +92 -92
- package/locales/common-properties/locales/ja.json +92 -92
- package/locales/common-properties/locales/ko.json +1 -1
- package/locales/common-properties/locales/pt-br.json +92 -92
- package/locales/common-properties/locales/zh-CN.json +93 -0
- package/locales/common-properties/locales/zh-TW.json +93 -0
- package/locales/palette/locales/de.json +9 -9
- package/locales/palette/locales/en.json +6 -6
- package/locales/palette/locales/es.json +9 -9
- package/locales/palette/locales/fr.json +9 -9
- package/locales/palette/locales/index.js +2 -2
- package/locales/palette/locales/it.json +9 -9
- package/locales/palette/locales/ja.json +9 -9
- package/locales/palette/locales/pt-br.json +9 -9
- package/locales/palette/locales/zh-CN.json +10 -0
- package/locales/palette/locales/zh-TW.json +10 -0
- package/locales/toolbar/locales/de.json +7 -7
- package/locales/toolbar/locales/en.json +1 -1
- package/locales/toolbar/locales/es.json +7 -7
- package/locales/toolbar/locales/fr.json +7 -7
- package/locales/toolbar/locales/index.js +2 -2
- package/locales/toolbar/locales/it.json +7 -7
- package/locales/toolbar/locales/ja.json +7 -7
- package/locales/toolbar/locales/pt-br.json +7 -7
- package/locales/toolbar/locales/zh-CN.json +8 -0
- package/locales/toolbar/locales/zh-TW.json +8 -0
- package/package.json +3 -2
- package/src/common-canvas/canvas-controller.js +19 -3
- package/src/common-canvas/cc-bottom-panel.jsx +37 -21
- package/src/common-canvas/cc-central-items.jsx +1 -1
- package/src/common-canvas/cc-contents.jsx +10 -3
- package/src/common-canvas/cc-text-toolbar.jsx +141 -0
- package/src/common-canvas/cc-toolbar.jsx +8 -6
- package/src/common-canvas/common-canvas-utils.js +37 -4
- package/src/common-canvas/common-canvas.scss +52 -5
- package/src/common-canvas/svg-canvas-d3.scss +172 -23
- package/src/common-canvas/svg-canvas-pipeline.js +10 -3
- package/src/common-canvas/svg-canvas-renderer.js +93 -341
- package/src/common-canvas/svg-canvas-utils-decs.js +0 -5
- package/src/common-canvas/svg-canvas-utils-markdown.js +515 -0
- package/src/common-canvas/svg-canvas-utils-nodes.js +0 -5
- package/src/common-canvas/svg-canvas-utils-textarea.js +472 -0
- package/src/common-properties/components/control-item/control-item.scss +1 -1
- package/src/common-properties/components/flexible-table/flexible-table.jsx +14 -3
- package/src/common-properties/components/flexible-table/flexible-table.scss +20 -0
- package/src/common-properties/components/title-editor/title-editor.jsx +2 -2
- package/src/common-properties/components/title-editor/title-editor.scss +1 -16
- package/src/common-properties/controls/abstract-table.jsx +2 -0
- package/src/common-properties/controls/checkbox/checkbox.jsx +1 -1
- package/src/common-properties/controls/checkboxset/checkboxset.jsx +36 -11
- package/src/common-properties/controls/checkboxset/checkboxset.scss +6 -0
- package/src/common-properties/controls/list/list.jsx +1 -0
- package/src/common-properties/controls/radioset/radioset.jsx +25 -1
- package/src/common-properties/controls/radioset/radioset.scss +19 -0
- package/src/common-properties/controls/selectcolumns/selectcolumns.jsx +1 -0
- package/src/common-properties/controls/someofselect/someofselect.jsx +1 -0
- package/src/common-properties/form/ControlInfo.js +3 -0
- package/src/common-properties/form/EditorForm.js +45 -3
- package/src/common-properties/panels/action-panel/action-panel.jsx +38 -3
- package/src/common-properties/panels/action-panel/action-panel.scss +3 -0
- package/src/common-properties/panels/text-panel/text-panel.jsx +38 -7
- package/src/common-properties/panels/text-panel/text-panel.scss +4 -3
- package/src/common-properties/properties-controller.js +39 -12
- package/src/common-properties/ui-conditions/conditions-utils.js +14 -8
- package/src/common-properties/util/L10nProvider.js +6 -0
- package/src/object-model/config-utils.js +1 -0
- package/src/object-model/layout-dimensions.js +14 -2
- package/src/object-model/object-model.js +12 -0
- package/src/object-model/redux/canvas-store.js +4 -1
- package/src/object-model/redux/reducers/bottompanel.js +1 -3
- package/src/object-model/redux/reducers/texttoolbar.js +29 -0
- package/src/palette/palette-content-list-item.jsx +12 -2
- package/src/palette/palette-content-list.jsx +11 -19
- package/src/palette/palette-dialog-content-grid.jsx +1 -6
- package/src/palette/palette-dialog-content.jsx +13 -11
- package/src/palette/palette-flyout-content-category.jsx +90 -57
- package/src/palette/palette-flyout-content.jsx +4 -24
- package/src/palette/palette.scss +72 -44
- package/src/toolbar/toolbar-action-item.jsx +9 -6
- package/src/toolbar/toolbar-overflow-item.jsx +1 -0
- package/src/toolbar/toolbar.jsx +12 -15
- package/src/tooltip/tooltip.jsx +14 -5
- package/stats.html +1 -1
- package/dist/canvas-controller-de76a796.js +0 -2
- package/dist/canvas-controller-de76a796.js.map +0 -1
- package/dist/canvas-controller-e91d037b.js.map +0 -1
- package/dist/common-canvas-522f6263.js +0 -2
- package/dist/common-canvas-522f6263.js.map +0 -1
- package/dist/common-canvas-90539c97.js +0 -2
- package/dist/common-canvas-90539c97.js.map +0 -1
- package/dist/common-properties-245c4711.js +0 -2
- package/dist/common-properties-245c4711.js.map +0 -1
- package/dist/common-properties-49e6bb67.js +0 -2
- package/dist/common-properties-49e6bb67.js.map +0 -1
- package/dist/flexible-table-50ce600a.js.map +0 -1
- package/dist/flexible-table-a13cb7d0.js.map +0 -1
- package/dist/toolbar-1c181339.js +0 -2
- package/dist/toolbar-1c181339.js.map +0 -1
- package/dist/toolbar-c6fa3cdb.js +0 -2
- package/dist/toolbar-c6fa3cdb.js.map +0 -1
- package/locales/command-actions/locales/zh-cn.json +0 -9
- package/locales/command-actions/locales/zh-tw.json +0 -9
- package/locales/common-canvas/locales/zh-cn.json +0 -27
- package/locales/common-canvas/locales/zh-tw.json +0 -27
- package/locales/common-properties/locales/zh-cn.json +0 -93
- package/locales/common-properties/locales/zh-tw.json +0 -93
- package/locales/palette/locales/zh-cn.json +0 -10
- package/locales/palette/locales/zh-tw.json +0 -10
- package/locales/toolbar/locales/zh-cn.json +0 -8
- package/locales/toolbar/locales/zh-tw.json +0 -8
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flexible-table-50ce600a.js","sources":["../node_modules/lodash/hasIn.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/property.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/mapValues.js","../node_modules/lodash/differenceBy.js","../src/common-properties/components/virtualized-table/virtualized-table.jsx","../src/common-properties/components/flexible-table/flexible-table.jsx"],"sourcesContent":["var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var baseDifference = require('./_baseDifference'),\n baseFlatten = require('./_baseFlatten'),\n baseIteratee = require('./_baseIteratee'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n last = require('./last');\n\n/**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\nvar differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2))\n : [];\n});\n\nmodule.exports = differenceBy;\n","/*\n * Copyright 2017-2022 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Column, Table, AutoSizer } from \"react-virtualized\";\nimport Draggable from \"react-draggable\";\nimport { Checkbox, Loading } from \"carbon-components-react\";\nimport { ArrowUp16, ArrowDown16, ArrowsVertical16 } from \"@carbon/icons-react\";\nimport Tooltip from \"./../../../tooltip/tooltip.jsx\";\nimport { SORT_DIRECTION, STATES, ROW_SELECTION, MINIMUM_COLUMN_WIDTH, MINIMUM_COLUMN_WIDTH_WITHOUT_LABEL } from \"./../../constants/constants\";\nimport { injectIntl } from \"react-intl\";\nimport defaultMessages from \"../../../../locales/common-properties/locales/en.json\";\n\nimport { isEmpty, differenceBy, mapValues } from \"lodash\";\nimport { v4 as uuid4 } from \"uuid\";\nimport classNames from \"classnames\";\n\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\n\nclass VirtualizedTable extends React.Component {\n\n\tstatic getDerivedStateFromProps(nextProps, prevState) {\n\t\tconst updatedState = {};\n\t\tif (nextProps.rowCount !== prevState.rowCount) {\n\t\t\tupdatedState.rowCount = nextProps.rowCount;\n\t\t}\n\t\t// Only get new columns if column label (headerLabel) is different. This is useful when changing \"View in tables\" dropdown in Expression control.\n\t\t// We're not comparing all properties in columns object because width can be different after resizing.\n\t\tif (!prevState.columnResized || !isEmpty(differenceBy(nextProps.columns, prevState.columns, \"headerLabel\"))) {\n\t\t\tupdatedState.columns = nextProps.columns;\n\t\t}\n\t\treturn (updatedState);\n\t}\n\n\tconstructor(props, context) {\n\t\tsuper(props, context);\n\n\t\tthis.state = {\n\t\t\trowCount: this.props.rowCount,\n\t\t\tcolumns: this.props.columns,\n\t\t\tcolumnResized: false\n\t\t};\n\t\tthis.virtualizedTableRef = React.createRef();\n\t\tthis.lastChecked = isEmpty(props.rowsSelected) ? null : props.rowsSelected.slice(-1).pop();\n\n\t\tthis.isOverSelectOption = false;\n\t\tthis.mouseEventCalled = false;\n\t\tthis.keyBoardEventCalled = false;\n\t\tthis.cellRenderer = this.cellRenderer.bind(this);\n\t\tthis.selectAll = this.selectAll.bind(this);\n\t\tthis.headerRowRenderer = this.headerRowRenderer.bind(this);\n\t\tthis.headerColRenderer = this.headerColRenderer.bind(this);\n\t\tthis.onRowClick = this.onRowClick.bind(this);\n\t\tthis.overSelectOption = this.overSelectOption.bind(this);\n\t\tthis.resizeColumn = this.resizeColumn.bind(this);\n\t}\n\n\tcomponentDidUpdate() {\n\t\t// If the rowHeight prop is a function, the virtualized table doesn't always adjust its\n\t\t// row heights correctly when the table data has changed. So in this case we need\n\t\t// to recompute the row heights.\n\t\tif (typeof this.props.rowHeight === \"function\") {\n\t\t\tthis.recomputeRowHeights();\n\t\t}\n\t}\n\n\t// This is also triggered when clicking on a checkbox\n\tonRowClick(evt, rowData, index) {\n\t\tif (evt.target.className === \"bx--select-option\") {\n\t\t\tevt.stopPropagation(); // stop propagation when selecting dropdown select options within table rows\n\t\t} else {\n\t\t\t// Set selections\n\t\t\tconst selected = !this.isRowSelected(rowData.originalRowIndex);\n\t\t\tif (typeof this.props.setRowsSelected === \"function\") {\n\t\t\t\tthis.props.setRowsSelected({\n\t\t\t\t\t\"index\": index,\n\t\t\t\t\t\"originalRowIndex\": rowData.originalRowIndex,\n\t\t\t\t\t\"selected\": selected,\n\t\t\t\t\t\"isOverSelectOption\": this.isOverSelectOption,\n\t\t\t\t\t\"selectMultipleRows\": evt.shiftKey ? evt.shiftKey : false,\n\t\t\t\t\t\"lastCheckedRow\": this.lastChecked === null ? 0 : this.lastChecked }, evt);\n\n\t\t\t\t// Track lastChecked row for shift key selection\n\t\t\t\tthis.lastChecked = rowData.index;\n\t\t\t}\n\t\t}\n\t}\n\n\tonRowDoubleClick(evt, rowKey, index) {\n\t\tif (this.props.onRowDoubleClick) {\n\t\t\tthis.props.onRowDoubleClick(evt, rowKey, index);\n\t\t}\n\t}\n\n\tgetCheckboxLabelColumnIndex(columns) {\n\t\t// If 1st column is Index, use the next column for labeling\n\t\tfor (let i = 0; i < columns.length; i++) {\n\t\t\tif (columns[i].operation !== \"index\") {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\t// Use first column by default\n\t\treturn 0;\n\t}\n\n\tgetColumnIndex(columns, key) {\n\t\tconst index = columns.findIndex((column) => column.key === key);\n\t\treturn index;\n\t}\n\n\t// Returns an object of deltas for every column - {columnKey: individualDelta}\n\tgetColumnWiseDeltas(columns, deltaX) {\n\t\tconst columnWiseDeltas = {};\n\t\tif (columns.length > 0) {\n\t\t\t// sort columns in ascending order of widths because smallest column will reach MINIMUM_COLUMN_WIDTH first\n\t\t\tcolumns.sort((a, b) => a.width - b.width);\n\t\t\tlet totalDelta = deltaX;\n\t\t\t// Finalize individualDelta for 1 column at a time starting from smallest column\n\t\t\t// If individualDelta is greater than maximum allowed delta for the column, set individualDelta = maximum allowed delta until column reaches MINIMUM_COLUMN_WIDTH\n\t\t\t// Total delta will reduce after every iteration\n\t\t\tfor (let i = 0; i < columns.length; i++) {\n\t\t\t\tconst widthOfAllColumns = columns.slice(i).reduce((prev, current) => prev + current.width, 0);\n\t\t\t\tlet individualDelta = Math.round((columns[i].width * totalDelta) / widthOfAllColumns);\n\t\t\t\t// check if individualDelta is greater than the maximum allowed delta for this column\n\t\t\t\tif (columns[i].headerLabel.length > 0 && columns[i].width - individualDelta < MINIMUM_COLUMN_WIDTH) {\n\t\t\t\t\tindividualDelta = columns[i].width - MINIMUM_COLUMN_WIDTH;\n\t\t\t\t} else if (columns[i].width - individualDelta < MINIMUM_COLUMN_WIDTH_WITHOUT_LABEL) {\n\t\t\t\t\tindividualDelta = columns[i].width - MINIMUM_COLUMN_WIDTH_WITHOUT_LABEL;\n\t\t\t\t}\n\t\t\t\ttotalDelta -= individualDelta;\n\t\t\t\tcolumnWiseDeltas[columns[i].key] = individualDelta;\n\t\t\t}\n\t\t\tif (totalDelta > 0) {\n\t\t\t\t// deltaX is greater than maximum allowed delta for all columns.\n\t\t\t\t// Don't allow resizing by setting individualDelta = 0 for ALL columns\n\t\t\t\treturn mapValues(columnWiseDeltas, () => 0);\n\t\t\t}\n\t\t}\n\t\treturn columnWiseDeltas;\n\t}\n\n\tisRowSelected(index) {\n\t\tif (this.props.rowsSelected) {\n\t\t\treturn this.props.rowsSelected.indexOf(index) > -1;\n\t\t}\n\t\treturn false;\n\t}\n\n\tisLastColumn(dataKey) {\n\t\tconst columnIndex = this.getColumnIndex(this.props.columns, dataKey);\n\t\tconst isLastColumn = (columnIndex === (this.props.columns.length - 1));\n\t\treturn isLastColumn;\n\t}\n\n\tselectAll(selected) {\n\t\tthis.props.setAllRowsSelected(selected);\n\t}\n\n\t// Callback responsible for rendering a cell's contents.\n\tcellRenderer({ cellData }) {\n\t\tif (cellData === null || typeof cellData === \"undefined\") {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn cellData;\n\t}\n\n\tcellRendererHTML({ cellData }) {\n\t\tif (cellData === null || typeof cellData === \"undefined\") {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn (<div dangerouslySetInnerHTML={{ __html: cellData }} />);\n\t}\n\n\trecomputeRowHeights(index) {\n\t\tif (this.virtualizedTableRef && this.virtualizedTableRef.current) {\n\t\t\tthis.virtualizedTableRef.current.recomputeRowHeights(index);\n\t\t}\n\t}\n\n\t// Responsible for rendering the table header row given an array of columns.\n\theaderRowRenderer(scrollKey, { className, columns, style }) {\n\t\tconst checkboxLabelColumnIndex = (typeof this.props.columns === \"undefined\" || this.props.columns.length === 0) ? 0 : this.getCheckboxLabelColumnIndex(this.props.columns);\n\t\tconst headerCheckboxLabel = (typeof this.props.columns === \"undefined\" || this.props.columns.length === 0) ? \"\" : this.props.columns[checkboxLabelColumnIndex].headerLabel;\n\t\tconst translatedHeaderCheckboxLabel = this.props.intl.formatMessage(\n\t\t\t{ id: \"virtualizedTable.header.checkbox.label\", defaultMessage: defaultMessages[\"virtualizedTable.header.checkbox.label\"] },\n\t\t\t{ header_checkbox_label: headerCheckboxLabel }\n\t\t);\n\t\tconst checkbox = this.props.selectable && this.props.rowSelection !== ROW_SELECTION.SINGLE ? (<div role=\"columnheader\" className=\"properties-vt-header-checkbox\">\n\t\t\t<Checkbox\n\t\t\t\tid={`properties-vt-hd-cb-${scrollKey}`}\n\t\t\t\tonChange={this.selectAll}\n\t\t\t\tchecked={this.props.checkedAll}\n\t\t\t\tlabelText={translatedHeaderCheckboxLabel}\n\t\t\t\thideLabel\n\t\t\t/>\n\t\t</div>)\n\t\t\t: \"\";\n\n\t\treturn (<div className={className} data-role=\"properties-header-row\" role=\"row\" style={style}>\n\t\t\t{checkbox}\n\t\t\t{columns}\n\t\t</div>);\n\t}\n\n\theaderColRenderer({ columnData, dataKey, disableSort, label, sortBy, sortDirection }) {\n\t\tlet sortIcon = null;\n\t\tif (typeof this.props.sortColumns[dataKey] !== \"undefined\") {\n\t\t\tlet type = null;\n\t\t\tswitch (this.props.sortColumns[dataKey]) {\n\t\t\tcase SORT_DIRECTION.ASC:\n\t\t\t\ttype = <ArrowUp16 disabled={this.props.tableState === STATES.DISABLED} />;\n\t\t\t\tbreak;\n\t\t\tcase SORT_DIRECTION.DESC:\n\t\t\t\ttype = <ArrowDown16 disabled={this.props.tableState === STATES.DISABLED} />;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ttype = <ArrowsVertical16 disabled={this.props.tableState === STATES.DISABLED} />;\n\t\t\t}\n\t\t\tsortIcon = (<span className=\"properties-ft-column-sort-icon\">\n\t\t\t\t{type}\n\t\t\t</span>);\n\t\t}\n\n\t\tlet tooltip = null;\n\t\tif (columnData.description && columnData.headerLabel) {\n\t\t\ttooltip = (\n\t\t\t\t<div className=\"properties-tooltips\">\n\t\t\t\t\t<span style= {{ fontWeight: \"bold\" }}>{columnData.headerLabel}</span>\n\t\t\t\t\t<br />\n\t\t\t\t\t{columnData.description}\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else if (columnData.description) {\n\t\t\ttooltip = (\n\t\t\t\t<div className=\"properties-tooltips\">\n\t\t\t\t\t{columnData.description}\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else if (columnData.headerLabel) {\n\t\t\ttooltip = (\n\t\t\t\t<div className=\"properties-tooltips\">\n\t\t\t\t\t<span style= {{ fontWeight: \"bold\" }}>{columnData.headerLabel}</span>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tconst tooltipId = uuid4() + \"-tooltip-column-\" + dataKey;\n\n\t\tconst resizeElem = columnData.resizable && !this.isLastColumn(dataKey)\n\t\t\t? (<Draggable\n\t\t\t\taxis=\"x\"\n\t\t\t\tdefaultClassName=\"properties-vt-header-resize\"\n\t\t\t\tdefaultClassNameDragging=\"properties-vt-header-resize-active\"\n\t\t\t\tonDrag={\n\t\t\t\t\t(evt, { deltaX }) => {\n\t\t\t\t\t\tthis.resizeColumn({ dataKey, deltaX });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tposition={{ x: 0 }}\n\t\t\t\tzIndex={999}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\trole=\"button\" tabIndex=\"0\"\n\t\t\t\t\taria-label=\"Resize column\"\n\t\t\t\t/>\n\t\t\t</Draggable>)\n\t\t\t: \"\";\n\n\t\treturn (\n\t\t\t<div className={classNames({ \"properties-vt-column-with-resize\": resizeElem !== \"\", \"properties-vt-column-without-resize\": resizeElem === \"\" })}>\n\t\t\t\t<div className={classNames(\"properties-vt-column properties-tooltips-container\", { \"sort-column-active\": dataKey === this.props.sortBy })}>\n\t\t\t\t\t{ isEmpty(tooltip)\n\t\t\t\t\t\t? label\n\t\t\t\t\t\t: <Tooltip\n\t\t\t\t\t\t\tid={tooltipId}\n\t\t\t\t\t\t\ttip={tooltip}\n\t\t\t\t\t\t\tdirection=\"bottom\"\n\t\t\t\t\t\t\tclassName=\"properties-tooltips\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t}\n\t\t\t\t\t{disableSort === false && sortIcon}\n\t\t\t\t</div>\n\t\t\t\t{ resizeElem }\n\t\t\t</div>\n\t\t);\n\t}\n\n\t/* Columns are not resizable by default. Host application specifies resizable columns in parameter definition.\n\t* When a column is resized, width of ALL the columns to the right of resized column is adjusted.\n\t* Every column grows/shrinks directly proportional to column width.\n\t* Example: If a column width is reduced by 10px and there are 4 columns on the right of resized column having widths [40, 30, 20, 10],\n\t* Then 10px will be adjusted in 4 columns as - [4px, 3px, 2px, 1px]\n\t* When every column's width reaches MINIMUM_COLUMN_WIDTH (56px), resizing is stopped.\n\t* Special case - For columns without labels, when their width reaches MINIMUM_COLUMN_WIDTH_WITHOUT_LABEL (32px), resizing is stopped.\n\t*/\n\tresizeColumn({ dataKey, deltaX }) {\n\t\tthis.setState((prevState) => {\n\n\t\t\tconst columns = prevState.columns;\n\t\t\t// Calculate number of resizable columns on the right of resized column\n\t\t\tconst resizedColumnIndex = this.getColumnIndex(columns, dataKey);\n\t\t\tconst allColumnsOnRight = columns.slice(resizedColumnIndex + 1);\n\t\t\t// Exclude columns having staticWidth: true\n\t\t\tconst nonStaticColumns = allColumnsOnRight.filter((column) => !column.staticWidth);\n\n\t\t\tconst resizableColumns = nonStaticColumns.filter((column) => {\n\t\t\t\t// When shrinking, get columns having width greater than MINIMUM_COLUMN_WIDTH\n\t\t\t\tif (deltaX >= 0) {\n\t\t\t\t\tif (column.headerLabel.length > 0) {\n\t\t\t\t\t\t// Column with label has min width 56px\n\t\t\t\t\t\treturn (column.width > MINIMUM_COLUMN_WIDTH);\n\t\t\t\t\t}\n\t\t\t\t\t// Column without label has min width 32px\n\t\t\t\t\treturn (column.width > MINIMUM_COLUMN_WIDTH_WITHOUT_LABEL);\n\t\t\t\t}\n\t\t\t\t// When expanding, get all columns\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\t// Get column wise delta for resizableColumns\n\t\t\tconst columnWiseDeltas = this.getColumnWiseDeltas(resizableColumns, deltaX);\n\t\t\tconst columnsToBeResized = Object.keys(columnWiseDeltas);\n\n\t\t\t// check if all column wise deltas are 0. This happens when deltaX is more than maximum allowed delta for all columns\n\t\t\tconst everyColumnHasZeroDelta = Object.values(columnWiseDeltas).every((delta) => delta === 0);\n\n\t\t\tif ((columns[resizedColumnIndex].width + deltaX) > MINIMUM_COLUMN_WIDTH && !isEmpty(columnWiseDeltas) && !everyColumnHasZeroDelta) {\n\t\t\t\tcolumns[resizedColumnIndex].width += deltaX;\n\t\t\t\t// Adjust width of all resizable columns\n\t\t\t\tcolumnsToBeResized.forEach((columnKey) => {\n\t\t\t\t\tconst idx = columns.findIndex((col) => col.key === columnKey);\n\t\t\t\t\tcolumns[idx].width -= columnWiseDeltas[columnKey];\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tcolumnResized: true,\n\t\t\t\tcolumns: columns\n\t\t\t};\n\t\t});\n\t}\n\n\toverSelectOption(evt) {\n\t\t// Differentiate between mouse and keyboard event\n\t\tif (evt.type === \"mouseenter\" && !this.keyBoardEventCalled) {\n\t\t\tthis.mouseEventCalled = true;\n\t\t\tthis.isOverSelectOption = !this.isOverSelectOption;\n\t\t} else if (evt.type === \"mouseleave\" && this.mouseEventCalled) {\n\t\t\tthis.mouseEventCalled = false;\n\t\t\tthis.isOverSelectOption = !this.isOverSelectOption;\n\t\t} else if (evt.type === \"focus\" && !this.mouseEventCalled) {\n\t\t\tthis.keyBoardEventCalled = true;\n\t\t\tthis.isOverSelectOption = !this.isOverSelectOption;\n\t\t} else if (evt.type === \"blur\" && this.keyBoardEventCalled) {\n\t\t\tthis.keyBoardEventCalled = false;\n\t\t\tthis.isOverSelectOption = !this.isOverSelectOption;\n\t\t}\n\t}\n\n\t// Responsible for rendering a table row given an array of columns.\n\trowRenderer(scrollKey, { className, columns, index, key, rowData, style }) {\n\t\tlet selectOption = \"\";\n\t\tlet selectedRow = false;\n\t\tconst rowDisabled = typeof rowData.disabled === \"boolean\" ? rowData.disabled : false;\n\n\t\tif (typeof this.props.rowHeight === \"function\" && this.props.rowHeight({ index }) === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.props.selectable) {\n\t\t\tconst rowSelected = this.isRowSelected(rowData.originalRowIndex);\n\t\t\tselectedRow = this.props.selectable && rowSelected;\n\t\t\tif (this.props.rowSelection !== ROW_SELECTION.SINGLE) {\n\t\t\t\tconst translatedRowCheckboxLabel = this.props.intl.formatMessage(\n\t\t\t\t\t{ id: \"virtualizedTable.row.checkbox.label\", defaultMessage: defaultMessages[\"virtualizedTable.row.checkbox.label\"] },\n\t\t\t\t\t{ row_index: index + 1, table_label: (this.props.tableLabel ? this.props.tableLabel : \"\") }\n\t\t\t\t);\n\n\t\t\t\tselectOption = (<div className=\"properties-vt-row-checkbox\"\n\t\t\t\t\trole=\"gridcell\"\n\t\t\t\t\tonMouseEnter={(evt) => this.overSelectOption(evt)}\n\t\t\t\t\tonMouseLeave={(evt) => this.overSelectOption(evt)}\n\t\t\t\t\tonFocus={(evt) => this.overSelectOption(evt)}\n\t\t\t\t\tonBlur={(evt) => this.overSelectOption(evt)}\n\t\t\t\t>\n\t\t\t\t\t<Checkbox\n\t\t\t\t\t\tid={`properties-vt-row-cb-${scrollKey}-${index}`}\n\t\t\t\t\t\tkey={`properties-vt-row-cb-${scrollKey}-${index}`}\n\t\t\t\t\t\tlabelText={translatedRowCheckboxLabel}\n\t\t\t\t\t\thideLabel\n\t\t\t\t\t\tchecked={rowSelected}\n\t\t\t\t\t\tdisabled={rowDisabled}\n\t\t\t\t\t/>\n\t\t\t\t</div>);\n\t\t\t}\n\t\t}\n\n\t\tif (this.props.summaryTable) {\n\t\t\tselectOption = <div className=\"properties-vt-row-checkbox\" />;\n\t\t}\n\n\t\tif (rowData.loading === true) {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tclassName={className}\n\t\t\t\t\tkey={key}\n\t\t\t\t\tdata-role=\"properties-loading-row\"\n\t\t\t\t\trole=\"row\"\n\t\t\t\t\tstyle={style}\n\t\t\t\t>\n\t\t\t\t\t<Loading className=\"properties-vt-small-loading\" small withOverlay={false} />\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tconst width = (parseInt(style.width, 10)) + \"px\"; // Subtract 2px to account for row borders\n\t\tconst newStyle = Object.assign({}, style, { width: width });\n\n\t\t// Empty style required on cell for react-virtualized. This div wrapper is required to apply the onDoubleClick handler.\n\t\treturn (<div style={{}} key={key} className=\"properties-vt-double-click\" onDoubleClick={(evt) => this.onRowDoubleClick(evt, rowData.rowKey, index)}>\n\t\t\t<div\n\t\t\t\tclassName={classNames(className,\n\t\t\t\t\t{ \"properties-vt-row-selected\": selectedRow },\n\t\t\t\t\t{ \"properties-vt-row-disabled\": rowDisabled },\n\t\t\t\t\t{ \"properties-vt-row-non-interactive\": !this.props.selectable } // ReadonlyTable with single row selection is non-interactive.\n\t\t\t\t)}\n\t\t\t\tdata-role=\"properties-data-row\"\n\t\t\t\trole=\"row\"\n\t\t\t\tstyle={newStyle}\n\t\t\t\tonMouseDown={(evt) => this.onRowClick(evt, rowData, index)}\n\t\t\t\tonKeyPress={(evt) => {\n\t\t\t\t\tif (evt.code === \"Space\" || evt.code === \"Enter\") {\n\t\t\t\t\t\tthis.onRowClick(evt, rowData, index);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{selectOption}\n\t\t\t\t{columns}\n\t\t\t</div>\n\t\t</div>);\n\t}\n\n\trender() {\n\t\tconst defaultTestHeight = 2000; // 2000 is set to accommodate test data \"category-selection-data\" with all categories expanded\n\n\t\t// AutoSizer manages width and height properties so the table fills the available space.\n\t\t// It does a direct DOM manipulation to the parent, outside React's VirtualDOM.\n\t\t// Since the actual DOM is not available when unit testing, we are passing in a default\n\t\t// width of 500 and a default height of 300.\n\t\treturn (\n\t\t\t<div className=\"properties-vt\">\n\t\t\t\t<div className={classNames(\"properties-vt-autosizer\",\n\t\t\t\t\t{ \"properties-vt-single-selection\": this.props.rowSelection && this.props.rowSelection === ROW_SELECTION.SINGLE,\n\t\t\t\t\t\t\"properties-light-disabled\": !this.props.light })}\n\t\t\t\t>\n\t\t\t\t\t<AutoSizer>\n\t\t\t\t\t\t{({ height, width }) => ( // Table height: subtract 50 for margin below the table.\n\t\t\t\t\t\t\t<Table\n\t\t\t\t\t\t\t\tref={this.virtualizedTableRef}\n\t\t\t\t\t\t\t\twidth={width ? width : 500}\n\t\t\t\t\t\t\t\theight={height ? height : defaultTestHeight}\n\n\t\t\t\t\t\t\t\tclassName=\"properties-autosized-vt\"\n\t\t\t\t\t\t\t\taria-label={this.props.tableLabel ? this.props.tableLabel : \"\"}\n\n\t\t\t\t\t\t\t\tdisableHeader={this.props.disableHeader}\n\t\t\t\t\t\t\t\theaderClassName=\"properties-autosized-vt-header\"\n\t\t\t\t\t\t\t\theaderHeight={32}\n\t\t\t\t\t\t\t\theaderRowRenderer={this.headerRowRenderer.bind(this, this.props.scrollKey)}\n\t\t\t\t\t\t\t\tonHeaderClick={this.props.onHeaderClick}\n\n\t\t\t\t\t\t\t\trowClassName=\"properties-vt-row-class\"\n\t\t\t\t\t\t\t\trowHeight={this.props.rowHeight ? this.props.rowHeight : 32}\n\n\t\t\t\t\t\t\t\trowCount={this.state.rowCount}\n\t\t\t\t\t\t\t\trowGetter={this.props.rowGetter}\n\t\t\t\t\t\t\t\trowRenderer={this.rowRenderer.bind(this, this.props.scrollKey)}\n\n\t\t\t\t\t\t\t\tscrollToIndex={this.props.scrollToIndex}\n\t\t\t\t\t\t\t\tscrollToAlignment={this.props.scrollToAlignment}\n\n\t\t\t\t\t\t\t\tsort={this.props.onSort}\n\t\t\t\t\t\t\t\tsortDirection={this.props.sortDirection}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tthis.state.columns.map((column) => (\n\t\t\t\t\t\t\t\t\t\t<Column\n\t\t\t\t\t\t\t\t\t\t\tkey={column.key}\n\t\t\t\t\t\t\t\t\t\t\tlabel={column.label}\n\t\t\t\t\t\t\t\t\t\t\tdataKey={column.key}\n\t\t\t\t\t\t\t\t\t\t\twidth={column.width}\n\t\t\t\t\t\t\t\t\t\t\tcolumnData={column}\n\t\t\t\t\t\t\t\t\t\t\tdisableSort={typeof this.props.sortColumns[column.key] === \"undefined\"}\n\t\t\t\t\t\t\t\t\t\t\tcellRenderer={column.isHTML ? this.cellRendererHTML : this.cellRenderer}\n\t\t\t\t\t\t\t\t\t\t\theaderRenderer={this.headerColRenderer}\n\t\t\t\t\t\t\t\t\t\t\t{...column.minWidth && { minWidth: column.minWidth }}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</Table>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</AutoSizer>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nVirtualizedTable.defaultProps = {\n\tdisableHeader: false\n};\n\nVirtualizedTable.propTypes = {\n\ttableLabel: PropTypes.string,\n\tselectable: PropTypes.bool,\n\tsummaryTable: PropTypes.bool,\n\trowSelection: PropTypes.string,\n\tdisableHeader: PropTypes.bool,\n\tcolumns: PropTypes.array.isRequired,\n\trowCount: PropTypes.number.isRequired,\n\trowGetter: PropTypes.func.isRequired,\n\trowHeight: PropTypes.oneOfType([\n\t\tPropTypes.func.isRequired,\n\t\tPropTypes.number.isRequired\n\t]),\n\tonRowDoubleClick: PropTypes.func,\n\trowsSelected: PropTypes.array, // Required if selectable is true\n\tcheckedAll: PropTypes.bool, // Required if selectable is true\n\tsetRowsSelected: PropTypes.func, // Required if selectable is true\n\tsetAllRowsSelected: PropTypes.func, // Required if selectable is true\n\tscrollToIndex: PropTypes.number,\n\tscrollToAlignment: PropTypes.string,\n\tonSort: PropTypes.func,\n\tsortBy: PropTypes.string,\n\tsortColumns: PropTypes.object,\n\tsortDirection: PropTypes.string,\n\tonHeaderClick: PropTypes.func,\n\tscrollKey: PropTypes.string,\n\ttableState: PropTypes.string,\n\tlight: PropTypes.bool,\n\tintl: PropTypes.object.isRequired\n};\n\nexport default injectIntl(VirtualizedTable);\n","/*\n * Copyright 2017-2022 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint complexity: [\"error\", 25] */\n/* eslint max-depth: [\"error\", 6] */\n\nimport React from \"react\";\nimport { injectIntl } from \"react-intl\";\nimport ReactDOM from \"react-dom\";\nimport PropTypes from \"prop-types\";\nimport { Search } from \"carbon-components-react\";\nimport VirtualizedTable from \"./../virtualized-table/virtualized-table.jsx\";\nimport { SORT_DIRECTION, STATES, ROW_HEIGHT, ROW_SELECTION } from \"./../../constants/constants\";\nimport ReactResizeDetector from \"react-resize-detector\";\nimport classNames from \"classnames\";\nimport { has } from \"lodash\";\nimport defaultMessages from \"../../../../locales/common-properties/locales/en.json\";\n\nclass FlexibleTable extends React.Component {\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tconst sortDirs = {};\n\t\tif (typeof this.props.sortable !== \"undefined\") {\n\t\t\tfor (var i = 0; i < this.props.sortable.length; i++) {\n\t\t\t\tconst sortCol = this.props.sortable[i];\n\t\t\t\tsortDirs[sortCol] = SORT_DIRECTION.NOT_SORTED;\n\t\t\t}\n\t\t}\n\t\tthis.state = {\n\t\t\tcheckedAllRows: false,\n\t\t\tcolumnSortDir: sortDirs,\n\t\t\tcurrentSortColumn: \"\",\n\t\t\ttableWidth: 0,\n\t\t\ttableHeight: 0\n\t\t};\n\n\t\tthis.rowHeight = this.rowHeight.bind(this);\n\t\tthis.rowGetter = this.rowGetter.bind(this);\n\n\t\tthis.getOriginalRowIndex = this.getOriginalRowIndex.bind(this);\n\t\tthis.getLastChildPropertyIdRow = this.getLastChildPropertyIdRow.bind(this);\n\n\t\tthis.calculateColumnWidths = this.calculateColumnWidths.bind(this);\n\t\tthis.handleFilterChange = this.handleFilterChange.bind(this);\n\t\tthis.onSort = this.onSort.bind(this);\n\t\tthis.sortHeaderClick = this.sortHeaderClick.bind(this);\n\t\tthis._updateTableWidth = this._updateTableWidth.bind(this);\n\t\tthis._adjustTableHeight = this._adjustTableHeight.bind(this);\n\t\tthis.handleCheckedRow = this.handleCheckedRow.bind(this);\n\t\tthis.handleCheckedAllRows = this.handleCheckedAllRows.bind(this);\n\t\tthis.handleCheckedMultipleRows = this.handleCheckedMultipleRows.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tthis._adjustTableHeight();\n\t\twindow.addEventListener(\"resize\", this._adjustTableHeight);\n\t\tthis.tableNode = ReactDOM.findDOMNode(this.refs.table);\n\t}\n\n\tcomponentDidUpdate(prevProps, prevState) {\n\t\tif (prevProps.rows !== this.props.rows ||\n\t\t\tprevProps.columns !== this.props.columns ||\n\t\t\tprevProps.noAutoSize !== this.props.noAutoSize) {\n\t\t\tthis._adjustTableHeight();\n\t\t}\n\n\t\t// Calculate if checkedAllRows is true\n\t\tif (this.props.selectedRows) {\n\t\t\tthis.setCheckedAll(this.props.selectedRows);\n\t\t}\n\n\t\tthis.tableNode = ReactDOM.findDOMNode(this.refs.table);\n\t}\n\n\tcomponentWillUnmount() {\n\t\twindow.removeEventListener(\"resize\", this._adjustTableHeight);\n\t}\n\n\tonSort({ sortBy }) {\n\t\tif (this.props.onSort) {\n\t\t\tconst sortDirection = (this.state.columnSortDir[sortBy] === SORT_DIRECTION.ASC) ? SORT_DIRECTION.DESC : SORT_DIRECTION.ASC;\n\t\t\tconst spec = {\n\t\t\t\tcolumn: sortBy,\n\t\t\t\tdirection: sortDirection\n\t\t\t};\n\t\t\tthis.props.onSort(spec);\n\t\t}\n\t}\n\n\t/**\n\t* The current displayed row may have an index that is different from its actual index within the dataset\n\t* Given the current displayed row and index of the table,\n\t* return its original row index from its row's propertyId\n\t*/\n\tgetOriginalRowIndex(row, index) {\n\t\tlet rowIndex = index;\n\t\tif (row.columns && has(row.columns[0], \"content.props.children.props.propertyId.propertyId\")) {\n\t\t\t// this is a nested control\n\t\t\trowIndex = this.getLastChildPropertyIdRow(row.columns[0].content.props.children.props.propertyId, index);\n\t\t} else if (row.columns && has(row.columns[0], \"content.props.children.props.propertyId.row\")) {\n\t\t\trowIndex = row.columns[0].content.props.children.props.propertyId.row;\n\t\t} else if (typeof row.rowKey === \"number\") { // expression tables uses rowKey\n\t\t\trowIndex = parseInt(row.rowKey, 10);\n\t\t}\n\t\treturn rowIndex;\n\t}\n\n\t// Get the 'row' of the last child's propertyId\n\tgetLastChildPropertyIdRow(propertyId, defaultRowIndex) {\n\t\tif (typeof propertyId.propertyId !== \"undefined\") {\n\t\t\treturn this.getLastChildPropertyIdRow(propertyId.propertyId);\n\t\t}\n\t\tif (typeof propertyId.row !== \"undefined\") {\n\t\t\treturn propertyId.row;\n\t\t}\n\t\treturn defaultRowIndex;\n\t}\n\n\t/**\n\t* The header checkAll box may change depending on the current visible rows\n\t* Determine if all visible rows in the table are currently selected\n\t* and set the `checkedAllRows` state accordingly\n\t*/\n\tsetCheckedAll(selectedRows) {\n\t\tlet checkAll = true;\n\t\tfor (let idx = 0; idx < this.props.data.length; idx++) {\n\t\t\tconst row = this.props.data[idx];\n\t\t\tconst originalRowIndex = this.getOriginalRowIndex(row, idx);\n\t\t\tif (selectedRows.indexOf(originalRowIndex) < 0) {\n\t\t\t\tcheckAll = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (this.state.checkedAllRows !== checkAll) {\n\t\t\tthis.setState({ checkedAllRows: checkAll });\n\t\t}\n\t}\n\n\t/**\n\t* Calculate the width for each column to fit within the table\n\t* Widths provided in columns without 'px' are 'weighted' and will be scaled\n\t* Widths provided in columns with 'px' are used as is without scaling\n\t* if width is provided with 'px', subtract that from the total available table width\n\t* if width is provided, divide the column 'weighted' width with the max width from columns\n\t* return the scaled factor\n\t* multiply each column 'weighted' width with the scaled factor to get the actual width in pixels\n\t* @param columns column definitions\n\t* @param parentTableWidth\n\t*/\n\tcalculateColumnWidths(columns, parentTableWidth) {\n\t\tlet tableWidth = parentTableWidth - 12; // subtract 12 for the left padding scss $spacing-04\n\t\tif (this.props.rowSelection !== ROW_SELECTION.SINGLE) {\n\t\t\ttableWidth -= 40;\n\t\t}\n\t\tlet remainingColumns = columns.length; // keep track of how many columns to calculate width for\n\t\tlet maxWeight = 0;\n\n\t\tfor (const columnDef of columns) {\n\t\t\t// if columns have specific width subtract from total width\n\t\t\tif (columnDef.width) {\n\t\t\t\tif (typeof columnDef.width === \"string\" && columnDef.width.includes(\"px\")) {\n\t\t\t\t\ttableWidth -= parseInt(columnDef.width, 10);\n\t\t\t\t\tremainingColumns--;\n\t\t\t\t} else {\n\t\t\t\t\tmaxWeight = Math.max(maxWeight, columnDef.width); // keep track of which column has highest width provided\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst widths = [];\n\t\tconst defaultWidth = Math.floor(tableWidth / remainingColumns); // use default width for columns without a weight\n\t\tconst weightedWidths = [];\n\t\tlet sumWeightedWidths = 0;\n\n\t\t// scale weight of columns with width provided\n\t\tfor (const columnDef of columns) {\n\t\t\tif (columnDef.width && !isNaN(columnDef.width)) {\n\t\t\t\tweightedWidths.push(columnDef.width / maxWeight);\n\t\t\t\tsumWeightedWidths += (columnDef.width / maxWeight);\n\t\t\t} else {\n\t\t\t\tweightedWidths.push(null);\n\t\t\t}\n\t\t}\n\n\t\tconst scaledWidth = tableWidth / sumWeightedWidths; // scaled width multiplier for each column with width provided\n\n\t\tlet sumColumnWidth = 0;\n\t\tfor (let idx = 0; idx < columns.length; idx++) {\n\t\t\tconst columnDef = columns[idx];\n\t\t\tif (columnDef.width) {\n\t\t\t\t// use the width provided with 'px' as is\n\t\t\t\tif (typeof columnDef.width === \"string\" && columnDef.width.includes(\"px\")) {\n\t\t\t\t\twidths.push(Math.floor(parseInt(columnDef.width, 10)) + \"px\");\n\t\t\t\t\tsumColumnWidth += parseInt(columnDef.width, 10);\n\t\t\t\t} else { // multiply the width provided by the scaled width\n\t\t\t\t\tconst calculatedWidth = Math.floor(weightedWidths[idx] * scaledWidth);\n\t\t\t\t\twidths.push(calculatedWidth + \"px\");\n\t\t\t\t\tsumColumnWidth += calculatedWidth;\n\t\t\t\t}\n\t\t\t} else { // if no width provided, use the defaultWidth\n\t\t\t\twidths.push(defaultWidth);\n\t\t\t\tsumColumnWidth += defaultWidth;\n\t\t\t}\n\t\t}\n\n\t\t// if any columns had decimals floored, allocate additional space to the first column\n\t\tlet compare = parentTableWidth;\n\t\tif (this.props.rowSelection !== ROW_SELECTION.SINGLE) {\n\t\t\tcompare -= 40;\n\t\t}\n\n\t\tif (sumColumnWidth < compare) {\n\t\t\tconst firstColWith = parseInt(widths[0], 10);\n\t\t\twidths[0] = firstColWith + compare - sumColumnWidth + \"px\";\n\t\t}\n\n\t\treturn widths;\n\t}\n\n\t_updateTableWidth(width, height) {\n\t\tif (this.state.tableWidth !== Math.floor(width - 2)) {\n\t\t\tthis.setState({\n\t\t\t\ttableWidth: Math.floor(width - 2) // subtract 2 px for the borders\n\t\t\t});\n\t\t}\n\t}\n\n\t_adjustTableHeight() {\n\t\tif (this.props.noAutoSize) {\n\t\t\treturn;\n\t\t}\n\t\tlet newHeight = this.state.tableHeight;\n\t\tconst rowHeight = 2; // in rem\n\t\tconst headerHeight = 2; // in rem\n\t\tconst rows = typeof this.props.rows !== \"undefined\" ? this.props.rows : 5.5;\n\t\tif (Array.isArray(this.props.data) && this.props.data.length < rows) {\n\t\t\tnewHeight = (rowHeight * this.props.data.length + headerHeight) + \"rem\";\n\t\t} else if (rows > 0) {\n\t\t\tnewHeight = (rowHeight * rows + headerHeight) + \"rem\";\n\t\t} else if (rows === 0) { // only display header\n\t\t\tnewHeight = headerHeight + \"rem\";\n\t\t} else if (rows === -1) {\n\t\t\tif (this.flexibleTable) {\n\t\t\t\tconst labelAndDescriptionHeight = 50; // possible dynamically set this in the future\n\t\t\t\tconst ftHeaderHeight = (typeof this.flexibleTableHeader !== \"undefined\") ? ReactDOM.findDOMNode(this.flexibleTableHeader).getBoundingClientRect().height : 0;\n\t\t\t\tconst flyoutHeight = this.findPropertyNodeHeight(this.flexibleTable, \"properties-wf-children\");\n\t\t\t\tif (flyoutHeight === 0) {\n\t\t\t\t\tnewHeight = \"100vh\"; // set full window height if flyout height not found\n\t\t\t\t} else {\n\t\t\t\t\tnewHeight = `calc(${flyoutHeight - ftHeaderHeight - labelAndDescriptionHeight}px - 3.5rem)`; // 3.5rem to adjust padding\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (newHeight !== this.state.tableHeight) {\n\t\t\tthis.setState({ tableHeight: newHeight });\n\t\t}\n\t}\n\n\tfindPropertyNodeHeight(node, className) {\n\t\tif (node && node.parentNode && node.parentNode.className && node.parentNode.className.includes(className)) {\n\t\t\tconst foundNode = ReactDOM.findDOMNode(node.parentNode).getBoundingClientRect();\n\t\t\tif (foundNode) {\n\t\t\t\treturn foundNode.height;\n\t\t\t}\n\t\t\treturn 0;\n\t\t} else if (node && node.parentNode) {\n\t\t\treturn this.findPropertyNodeHeight(node.parentNode, className);\n\t\t}\n\t\treturn 0;\n\t}\n\n\tsortHeaderClick({ dataKey }) {\n\t\tconst colSortDir = this.state.columnSortDir;\n\t\tif (typeof colSortDir[dataKey] !== \"undefined\") {\n\t\t\t// At a time only 1 column will be shown as sorted. Revert other columns to not sorted.\n\t\t\tObject.keys(colSortDir).forEach((key) => {\n\t\t\t\tif (key !== dataKey) {\n\t\t\t\t\tcolSortDir[key] = SORT_DIRECTION.NOT_SORTED;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// Only dataKey column will be sorted\n\t\t\tcolSortDir[dataKey] = (colSortDir[dataKey] === SORT_DIRECTION.ASC) ? SORT_DIRECTION.DESC : SORT_DIRECTION.ASC;\n\t\t\tthis.setState({\n\t\t\t\tcolumnSortDir: colSortDir,\n\t\t\t\tcurrentSortColumn: dataKey\n\t\t\t});\n\t\t}\n\t}\n\n\thandleFilterChange(evt) {\n\t\tif (this.props.onFilter) {\n\t\t\tthis.props.onFilter(evt.target.value);\n\t\t}\n\t}\n\n\thandleCheckedAllRows(checked) {\n\t\tlet selectAll = [];\n\t\tconst controlValue = this.props.data;\n\t\tif (checked) {\n\t\t\tselectAll = Array.from(this.props.selectedRows);\n\t\t\tfor (var rowIndex = 0; rowIndex < controlValue.length; rowIndex++) {\n\t\t\t\tconst originalRowIndex = this.getOriginalRowIndex(controlValue[rowIndex], rowIndex);\n\t\t\t\tselectAll.push(originalRowIndex);\n\t\t\t}\n\t\t}\n\t\tselectAll = Array.from(new Set(selectAll));\n\t\tthis.props.updateRowSelections(selectAll);\n\t\tthis.setState({ checkedAllRows: checked });\n\t}\n\n\t/**\n\t* This method is called when user wants to select multiple rows using shift key\n\t* Select/deselect all rows between lastCheckedRow and existingRow\n\t* @param lastCheckedRow (integer) - index of last selected row\n\t* @param existingRow (integer) - index of row where shift key is clicked\n\t* @param checked (boolean) - rows are to be selected or deselected\n\t*/\n\thandleCheckedMultipleRows(lastCheckedRow, existingRow, checked) {\n\t\tlet selectedRows = this.props.selectedRows ? this.props.selectedRows : [];\n\t\t// Calculate rows between lastChecked row and existingRow\n\t\tlet inBetweenRows;\n\t\tif (lastCheckedRow < existingRow) {\n\t\t\tinBetweenRows = Array.from({ length: (existingRow - lastCheckedRow) + 1 }, (_, i) => lastCheckedRow + i);\n\t\t} else {\n\t\t\tinBetweenRows = Array.from({ length: (lastCheckedRow - existingRow) + 1 }, (_, i) => existingRow + i);\n\t\t}\n\t\t// if selectedRows already has inBetweenRows, remove them first\n\t\tselectedRows = selectedRows.filter((row) => !inBetweenRows.includes(row)); // Deselecting inBetweenRows using shift key\n\t\tif (checked) {\n\t\t\tselectedRows = selectedRows.concat(inBetweenRows); \t// Selecting inBetweenRows using shift key\n\t\t}\n\t\treturn selectedRows;\n\t}\n\n\thandleCheckedRow(data, evt) {\n\t\tconst dataRowIndex = data.originalRowIndex; // Use the originalRowIndex for selection in case rows are filtered.\n\t\tconst displayedRowIndex = data.index;\n\t\tconst checked = data.selected;\n\t\tconst overSelectOption = data.isOverSelectOption;\n\n\t\tif (!this.props.data[displayedRowIndex].disabled) {\n\t\t\tif (overSelectOption) { // Checkbox is clicked\n\t\t\t\tlet current = this.props.selectedRows ? this.props.selectedRows : [];\n\t\t\t\tif (data.selectMultipleRows) { // multiple rows selected/deselected using shift key\n\t\t\t\t\tcurrent = this.handleCheckedMultipleRows(data.lastCheckedRow, displayedRowIndex, checked);\n\t\t\t\t\tthis.setCheckedAll(current);\n\t\t\t\t} else if (checked) { // single row selected\n\t\t\t\t\tcurrent = current.concat(dataRowIndex);\n\t\t\t\t\tthis.setCheckedAll(current);\n\t\t\t\t} else if (current) { // single row deselected\n\t\t\t\t\tcurrent = current.filter(function(element) {\n\t\t\t\t\t\treturn element !== dataRowIndex;\n\t\t\t\t\t});\n\t\t\t\t\tthis.setState({ checkedAllRows: false });\n\t\t\t\t}\n\t\t\t\t// Sort ascending because we want to add selected rows in the same order as they're displayed in the table\n\t\t\t\tcurrent.sort((a, b) => a - b);\n\t\t\t\tthis.props.updateRowSelections(current);\n\t\t\t} else if (this.props.rowSelection === ROW_SELECTION.SINGLE && typeof this.props.updateRowSelections !== \"undefined\") { // Table row is clicked\n\t\t\t\tthis.props.updateRowSelections(data.index, evt, this.props.data[data.index].rowKey);\n\t\t\t}\n\t\t}\n\t}\n\n\n\t/**\n\t* Generate the table header specs from this.props.columns\n\t* this.props.columns: array of objects\n\t* [\n\t* {\n\t* \"key\": string,\n\t* \"label\": string,\n\t* \"width\": integer or string if containts 'px',\n\t* \"description\": optional string,\n\t* \"resizable\": optional boolean,\n\t* \"staticWidth\": optional boolean - This is a special property added only for SPSS modeler which directly calls FlexibleTable. This property is NOT a part of uiHints.\n\t* }\n\t* ]\n\t* @param columnWidths\n\t*/\n\tgenerateTableHeaderRow(columnWidths) {\n\t\tconst headers = [];\n\t\tlet searchLabel = \"\";\n\t\tfor (var j = 0; j < this.props.columns.length; j++) {\n\t\t\tconst columnDef = this.props.columns[j];\n\t\t\tif (typeof this.props.filterable !== \"undefined\" && this.props.filterable[0] === columnDef.key) {\n\t\t\t\tsearchLabel = columnDef.label;\n\t\t\t}\n\t\t\tconst width = Math.abs(parseInt(columnWidths[j], 10));\n\t\t\tlet headerLabel;\n\t\t\tif (typeof (columnDef.label) === \"object\") {\n\t\t\t\theaderLabel = columnDef.label.props.labelText;\n\t\t\t} else if (typeof (columnDef.label) === \"string\") {\n\t\t\t\theaderLabel = columnDef.label;\n\t\t\t}\n\t\t\theaders.push({\n\t\t\t\tkey: columnDef.key,\n\t\t\t\tlabel: columnDef.label,\n\t\t\t\twidth: width,\n\t\t\t\tdescription: columnDef.description,\n\t\t\t\theaderLabel: headerLabel,\n\t\t\t\tresizable: columnDef.resizable,\n\t\t\t\toperation: columnDef.operation,\n\t\t\t\tstaticWidth: columnDef.staticWidth ? columnDef.staticWidth : false // Used to exclude a column from resizing. If true, \"resizable\" value will be ignored.\n\t\t\t});\n\t\t}\n\t\treturn {\n\t\t\theaders: headers,\n\t\t\tsearchLabel: searchLabel\n\t\t};\n\t}\n\n\t/**\n\t* Callback responsible for returning a data row given an index\n\t*/\n\trowGetter({ index }) {\n\t\tconst row = this.props.data[index];\n\t\tconst originalRowIndex = this.getOriginalRowIndex(row, index);\n\n\t\tconst columns = {};\n\t\tif (row.columns) {\n\t\t\tfor (let cidx = 0; cidx < row.columns.length; cidx++) {\n\t\t\t\tconst column = row.columns[cidx];\n\t\t\t\tcolumns[column.column] = column.content;\n\t\t\t}\n\t\t}\n\t\treturn Object.assign({}, columns, {\n\t\t\tloading: false,\n\t\t\tindex: index,\n\t\t\toriginalRowIndex: originalRowIndex,\n\t\t\trowKey: typeof row.rowKey !== \"undefined\" ? row.rowKey : this.props.scrollKey + \"-row-\" + index,\n\t\t\tdisabled: row.disabled\n\t\t});\n\t}\n\n\t// Function that returns the height of a row given its index\n\trowHeight({ index }) {\n\t\treturn ROW_HEIGHT;\n\t}\n\n\trender() {\n\t\tconst tableWidth = this.state.tableWidth;\n\t\tconst columnWidths = this.calculateColumnWidths(this.props.columns, tableWidth);\n\t\tconst headerInfo = this.generateTableHeaderRow(columnWidths);\n\n\t\tconst headers = headerInfo.headers;\n\t\tconst searchLabel = headerInfo.searchLabel;\n\t\tconst disabled = this.props.tableState === STATES.DISABLED;\n\n\t\tlet searchBar = null;\n\n\t\tif (typeof this.props.filterable !== \"undefined\" && this.props.filterable.length !== 0) {\n\t\t\tconst placeHolder = this.props.intl.formatMessage(\n\t\t\t\t{ id: \"table.search.placeholder\", defaultMessage: defaultMessages[\"table.search.placeholder\"] },\n\t\t\t\t{ column_name: searchLabel }\n\t\t\t);\n\t\t\tconst searchBarLabel = this.props.intl.formatMessage(\n\t\t\t\t{ id: \"table.search.label\", defaultMessage: defaultMessages[\"table.search.label\"] },\n\t\t\t\t{ table_name: this.props.tableLabel }\n\t\t\t);\n\n\t\t\tsearchBar = (\n\t\t\t\t<div className={classNames(\"properties-ft-search-container\", { \"disabled\": disabled })}>\n\t\t\t\t\t<Search\n\t\t\t\t\t\tclassName=\"properties-ft-search-text\"\n\t\t\t\t\t\tplaceholder={placeHolder}\n\t\t\t\t\t\tonChange={this.handleFilterChange}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tlabelText={searchBarLabel}\n\t\t\t\t\t\tlight={this.props.light}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tlet scrollIndex = -1;\n\t\tif (typeof this.props.scrollToRow !== \"undefined\" && this.props.scrollToRow !== null) {\n\t\t\tscrollIndex = this.props.scrollToRow;\n\t\t}\n\n\t\tlet heightStyle = {};\n\t\tif (!this.props.noAutoSize) {\n\t\t\theightStyle = { height: this.state.tableHeight };\n\t\t}\n\n\t\tconst containerClass = this.props.showHeader ? \"properties-ft-container-absolute \" : \"properties-ft-container-absolute-noheader \";\n\t\tconst messageClass = (!this.props.messageInfo) ? containerClass + STATES.INFO : containerClass + this.props.messageInfo.type;\n\t\tconst ftHeader = (searchBar || this.props.topRightPanel)\n\t\t\t? (<div className=\"properties-ft-table-header\" ref={ (ref) => (this.flexibleTableHeader = ref) }>\n\t\t\t\t{searchBar}\n\t\t\t\t{this.props.topRightPanel}\n\t\t\t</div>)\n\t\t\t: null;\n\n\t\treturn (\n\t\t\t<div data-id={\"properties-ft-\" + this.props.scrollKey} className=\"properties-ft-control-container\" ref={ (ref) => (this.flexibleTable = ref) }>\n\t\t\t\t{ftHeader}\n\t\t\t\t<div className=\"properties-ft-container-panel\">\n\t\t\t\t\t<ReactResizeDetector handleWidth onResize={this._updateTableWidth}>\n\t\t\t\t\t\t<div className=\"properties-ft-container-wrapper\" style={ heightStyle }>\n\t\t\t\t\t\t\t<div className={messageClass}>\n\t\t\t\t\t\t\t\t{this.props.selectedEditRow}\n\t\t\t\t\t\t\t\t<VirtualizedTable\n\t\t\t\t\t\t\t\t\ttableLabel={this.props.tableLabel}\n\t\t\t\t\t\t\t\t\tcolumns={headers}\n\t\t\t\t\t\t\t\t\tonHeaderClick={this.sortHeaderClick}\n\t\t\t\t\t\t\t\t\trowCount={this.props.data.length}\n\t\t\t\t\t\t\t\t\trowHeight={this.rowHeight}\n\t\t\t\t\t\t\t\t\trowGetter={this.rowGetter}\n\t\t\t\t\t\t\t\t\tsummaryTable={this.props.summaryTable}\n\t\t\t\t\t\t\t\t\tselectable={typeof this.props.updateRowSelections !== \"undefined\"}\n\t\t\t\t\t\t\t\t\trowSelection={this.props.rowSelection}\n\t\t\t\t\t\t\t\t\tdisableHeader={!this.props.showHeader}\n\t\t\t\t\t\t\t\t\tonRowDoubleClick={this.props.onRowDoubleClick}\n\t\t\t\t\t\t\t\t\trowsSelected={this.props.selectedRows}\n\t\t\t\t\t\t\t\t\tcheckedAll={this.state.checkedAllRows}\n\t\t\t\t\t\t\t\t\tsetRowsSelected={this.handleCheckedRow}\n\t\t\t\t\t\t\t\t\tsetAllRowsSelected={this.handleCheckedAllRows}\n\t\t\t\t\t\t\t\t\tscrollKey={this.props.scrollKey}\n\t\t\t\t\t\t\t\t\tonSort={this.onSort}\n\t\t\t\t\t\t\t\t\tsortBy={this.state.currentSortColumn}\n\t\t\t\t\t\t\t\t\tsortColumns={this.state.columnSortDir}\n\t\t\t\t\t\t\t\t\tsortDirection={this.state.columnSortDir[this.state.currentSortColumn]}\n\t\t\t\t\t\t\t\t\ttableState={this.props.tableState}\n\t\t\t\t\t\t\t\t\tlight={this.props.light}\n\t\t\t\t\t\t\t\t\t{...(scrollIndex !== -1 && { scrollToIndex: scrollIndex, scrollToAlignment: \"center\" })}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ReactResizeDetector>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nFlexibleTable.defaultProps = {\n\tshowHeader: true,\n\tlight: true\n};\n\nFlexibleTable.propTypes = {\n\tsortable: PropTypes.array,\n\tcolumns: PropTypes.array.isRequired,\n\tdata: PropTypes.array.isRequired,\n\tfilterable: PropTypes.array,\n\tfilterBy: PropTypes.string,\n\tfilterKeyword: PropTypes.string,\n\thideFilterInput: PropTypes.func,\n\tscrollToRow: PropTypes.number,\n\tonSort: PropTypes.func,\n\tonFilter: PropTypes.func,\n\tshowHeader: PropTypes.bool,\n\tselectedEditRow: PropTypes.object,\n\ttopRightPanel: PropTypes.object,\n\tscrollKey: PropTypes.string,\n\ttableLabel: PropTypes.string,\n\trows: PropTypes.number,\n\tnoAutoSize: PropTypes.bool,\n\ttableState: PropTypes.string,\n\tmessageInfo: PropTypes.object,\n\tupdateRowSelections: PropTypes.func,\n\tonRowDoubleClick: PropTypes.func,\n\tselectedRows: PropTypes.array,\n\trowSelection: PropTypes.string,\n\tsummaryTable: PropTypes.bool,\n\tlight: PropTypes.bool,\n\tintl: PropTypes.object.isRequired\n};\n\nexport default injectIntl(FlexibleTable);\n"],"names":["baseHasIn","object","key","Object","hasPath","require$$1","hasIn_1","path","_matchesStrictComparable","srcValue","undefined","baseIsMatch","require$$0","getMatchData","matchesStrictComparable","require$$2","_baseMatches","source","matchData","length","baseIsEqual","get","hasIn","isKey","require$$3","isStrictComparable","require$$4","require$$5","toKey","require$$6","_baseMatchesProperty","objValue","COMPARE_PARTIAL_FLAG","_baseProperty","baseGet","baseProperty","basePropertyDeep","property_1","baseMatches","baseMatchesProperty","identity","isArray","property","_baseIteratee","value","baseAssignValue","baseForOwn","baseIteratee","mapValues_1","iteratee","result","baseDifference","baseFlatten","baseRest","isArrayLikeObject","last","differenceBy_1","array","values","VirtualizedTable","props","context","_classCallCheck","_this","state","rowCount","columns","columnResized","virtualizedTableRef","React","createRef","lastChecked","_isEmpty","rowsSelected","slice","pop","isOverSelectOption","mouseEventCalled","keyBoardEventCalled","cellRenderer","bind","selectAll","headerRowRenderer","headerColRenderer","onRowClick","overSelectOption","resizeColumn","this","rowHeight","recomputeRowHeights","evt","rowData","index","target","className","stopPropagation","selected","isRowSelected","originalRowIndex","setRowsSelected","selectMultipleRows","shiftKey","lastCheckedRow","rowKey","onRowDoubleClick","i","operation","findIndex","column","deltaX","columnWiseDeltas","sort","a","b","width","totalDelta","widthOfAllColumns","reduce","prev","current","individualDelta","Math","round","headerLabel","MINIMUM_COLUMN_WIDTH","MINIMUM_COLUMN_WIDTH_WITHOUT_LABEL","_mapValues","indexOf","dataKey","isLastColumn","getColumnIndex","setAllRowsSelected","cellData","dangerouslySetInnerHTML","__html","scrollKey","style","checkboxLabelColumnIndex","getCheckboxLabelColumnIndex","headerCheckboxLabel","translatedHeaderCheckboxLabel","intl","formatMessage","id","defaultMessage","defaultMessages","header_checkbox_label","checkbox","selectable","rowSelection","ROW_SELECTION","SINGLE","role","Checkbox","onChange","checked","checkedAll","labelText","hideLabel","columnData","disableSort","label","sortBy","sortDirection","sortIcon","sortColumns","type","SORT_DIRECTION","ASC","ArrowUp16","disabled","tableState","STATES","DISABLED","DESC","ArrowDown16","ArrowsVertical16","tooltip","description","fontWeight","tooltipId","uuid4","resizeElem","resizable","Draggable","axis","defaultClassName","defaultClassNameDragging","onDrag","_this2","position","x","zIndex","tabIndex","classNames","Tooltip","tip","direction","setState","prevState","resizedColumnIndex","_this3","resizableColumns","filter","staticWidth","getColumnWiseDeltas","columnsToBeResized","keys","everyColumnHasZeroDelta","every","delta","forEach","columnKey","idx","col","selectOption","selectedRow","rowDisabled","rowSelected","translatedRowCheckboxLabel","row_index","table_label","tableLabel","onMouseEnter","_this4","onMouseLeave","onFocus","onBlur","summaryTable","loading","Loading","small","withOverlay","parseInt","newStyle","assign","onDoubleClick","onMouseDown","onKeyPress","code","light","AutoSizer","height","Table","ref","_this5","disableHeader","headerClassName","headerHeight","onHeaderClick","rowClassName","rowGetter","rowRenderer","scrollToIndex","scrollToAlignment","onSort","map","Column","isHTML","cellRendererHTML","headerRenderer","minWidth","nextProps","updatedState","_differenceBy","Component","defaultProps","injectIntl","FlexibleTable","sortDirs","sortable","NOT_SORTED","checkedAllRows","columnSortDir","currentSortColumn","tableWidth","tableHeight","getOriginalRowIndex","getLastChildPropertyIdRow","calculateColumnWidths","handleFilterChange","sortHeaderClick","_updateTableWidth","_adjustTableHeight","handleCheckedRow","handleCheckedAllRows","handleCheckedMultipleRows","window","addEventListener","tableNode","ReactDOM","findDOMNode","refs","table","prevProps","rows","noAutoSize","selectedRows","setCheckedAll","removeEventListener","spec","row","rowIndex","_has","content","children","propertyId","defaultRowIndex","checkAll","data","parentTableWidth","remainingColumns","maxWeight","columnDef","includes","max","_iterator","widths","defaultWidth","floor","weightedWidths","sumWeightedWidths","isNaN","push","_iterator2","scaledWidth","sumColumnWidth","calculatedWidth","compare","firstColWith","newHeight","Array","flexibleTable","ftHeaderHeight","flexibleTableHeader","getBoundingClientRect","flyoutHeight","findPropertyNodeHeight","node","parentNode","foundNode","colSortDir","onFilter","controlValue","from","Set","updateRowSelections","existingRow","inBetweenRows","_","concat","dataRowIndex","displayedRowIndex","element","columnWidths","headers","searchLabel","j","filterable","abs","_typeof","cidx","ROW_HEIGHT","headerInfo","generateTableHeaderRow","searchBar","placeHolder","column_name","searchBarLabel","table_name","Search","placeholder","size","scrollIndex","scrollToRow","heightStyle","containerClass","showHeader","messageClass","messageInfo","INFO","ftHeader","topRightPanel","ReactResizeDetector","handleWidth","onResize","selectedEditRow"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flexible-table-a13cb7d0.js","sources":["../node_modules/lodash/hasIn.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/property.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/mapValues.js","../node_modules/lodash/differenceBy.js","../src/common-properties/components/virtualized-table/virtualized-table.jsx","../src/common-properties/components/flexible-table/flexible-table.jsx"],"sourcesContent":["var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var baseDifference = require('./_baseDifference'),\n baseFlatten = require('./_baseFlatten'),\n baseIteratee = require('./_baseIteratee'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n last = require('./last');\n\n/**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\nvar differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2))\n : [];\n});\n\nmodule.exports = differenceBy;\n","/*\n * Copyright 2017-2022 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Column, Table, AutoSizer } from \"react-virtualized\";\nimport Draggable from \"react-draggable\";\nimport { Checkbox, Loading } from \"carbon-components-react\";\nimport { ArrowUp16, ArrowDown16, ArrowsVertical16 } from \"@carbon/icons-react\";\nimport Tooltip from \"./../../../tooltip/tooltip.jsx\";\nimport { SORT_DIRECTION, STATES, ROW_SELECTION, MINIMUM_COLUMN_WIDTH, MINIMUM_COLUMN_WIDTH_WITHOUT_LABEL } from \"./../../constants/constants\";\nimport { injectIntl } from \"react-intl\";\nimport defaultMessages from \"../../../../locales/common-properties/locales/en.json\";\n\nimport { isEmpty, differenceBy, mapValues } from \"lodash\";\nimport { v4 as uuid4 } from \"uuid\";\nimport classNames from \"classnames\";\n\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\n\nclass VirtualizedTable extends React.Component {\n\n\tstatic getDerivedStateFromProps(nextProps, prevState) {\n\t\tconst updatedState = {};\n\t\tif (nextProps.rowCount !== prevState.rowCount) {\n\t\t\tupdatedState.rowCount = nextProps.rowCount;\n\t\t}\n\t\t// Only get new columns if column label (headerLabel) is different. This is useful when changing \"View in tables\" dropdown in Expression control.\n\t\t// We're not comparing all properties in columns object because width can be different after resizing.\n\t\tif (!prevState.columnResized || !isEmpty(differenceBy(nextProps.columns, prevState.columns, \"headerLabel\"))) {\n\t\t\tupdatedState.columns = nextProps.columns;\n\t\t}\n\t\treturn (updatedState);\n\t}\n\n\tconstructor(props, context) {\n\t\tsuper(props, context);\n\n\t\tthis.state = {\n\t\t\trowCount: this.props.rowCount,\n\t\t\tcolumns: this.props.columns,\n\t\t\tcolumnResized: false\n\t\t};\n\t\tthis.virtualizedTableRef = React.createRef();\n\t\tthis.lastChecked = isEmpty(props.rowsSelected) ? null : props.rowsSelected.slice(-1).pop();\n\n\t\tthis.isOverSelectOption = false;\n\t\tthis.mouseEventCalled = false;\n\t\tthis.keyBoardEventCalled = false;\n\t\tthis.cellRenderer = this.cellRenderer.bind(this);\n\t\tthis.selectAll = this.selectAll.bind(this);\n\t\tthis.headerRowRenderer = this.headerRowRenderer.bind(this);\n\t\tthis.headerColRenderer = this.headerColRenderer.bind(this);\n\t\tthis.onRowClick = this.onRowClick.bind(this);\n\t\tthis.overSelectOption = this.overSelectOption.bind(this);\n\t\tthis.resizeColumn = this.resizeColumn.bind(this);\n\t}\n\n\tcomponentDidUpdate() {\n\t\t// If the rowHeight prop is a function, the virtualized table doesn't always adjust its\n\t\t// row heights correctly when the table data has changed. So in this case we need\n\t\t// to recompute the row heights.\n\t\tif (typeof this.props.rowHeight === \"function\") {\n\t\t\tthis.recomputeRowHeights();\n\t\t}\n\t}\n\n\t// This is also triggered when clicking on a checkbox\n\tonRowClick(evt, rowData, index) {\n\t\tif (evt.target.className === \"bx--select-option\") {\n\t\t\tevt.stopPropagation(); // stop propagation when selecting dropdown select options within table rows\n\t\t} else {\n\t\t\t// Set selections\n\t\t\tconst selected = !this.isRowSelected(rowData.originalRowIndex);\n\t\t\tif (typeof this.props.setRowsSelected === \"function\") {\n\t\t\t\tthis.props.setRowsSelected({\n\t\t\t\t\t\"index\": index,\n\t\t\t\t\t\"originalRowIndex\": rowData.originalRowIndex,\n\t\t\t\t\t\"selected\": selected,\n\t\t\t\t\t\"isOverSelectOption\": this.isOverSelectOption,\n\t\t\t\t\t\"selectMultipleRows\": evt.shiftKey ? evt.shiftKey : false,\n\t\t\t\t\t\"lastCheckedRow\": this.lastChecked === null ? 0 : this.lastChecked }, evt);\n\n\t\t\t\t// Track lastChecked row for shift key selection\n\t\t\t\tthis.lastChecked = rowData.index;\n\t\t\t}\n\t\t}\n\t}\n\n\tonRowDoubleClick(evt, rowKey, index) {\n\t\tif (this.props.onRowDoubleClick) {\n\t\t\tthis.props.onRowDoubleClick(evt, rowKey, index);\n\t\t}\n\t}\n\n\tgetCheckboxLabelColumnIndex(columns) {\n\t\t// If 1st column is Index, use the next column for labeling\n\t\tfor (let i = 0; i < columns.length; i++) {\n\t\t\tif (columns[i].operation !== \"index\") {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\t// Use first column by default\n\t\treturn 0;\n\t}\n\n\tgetColumnIndex(columns, key) {\n\t\tconst index = columns.findIndex((column) => column.key === key);\n\t\treturn index;\n\t}\n\n\t// Returns an object of deltas for every column - {columnKey: individualDelta}\n\tgetColumnWiseDeltas(columns, deltaX) {\n\t\tconst columnWiseDeltas = {};\n\t\tif (columns.length > 0) {\n\t\t\t// sort columns in ascending order of widths because smallest column will reach MINIMUM_COLUMN_WIDTH first\n\t\t\tcolumns.sort((a, b) => a.width - b.width);\n\t\t\tlet totalDelta = deltaX;\n\t\t\t// Finalize individualDelta for 1 column at a time starting from smallest column\n\t\t\t// If individualDelta is greater than maximum allowed delta for the column, set individualDelta = maximum allowed delta until column reaches MINIMUM_COLUMN_WIDTH\n\t\t\t// Total delta will reduce after every iteration\n\t\t\tfor (let i = 0; i < columns.length; i++) {\n\t\t\t\tconst widthOfAllColumns = columns.slice(i).reduce((prev, current) => prev + current.width, 0);\n\t\t\t\tlet individualDelta = Math.round((columns[i].width * totalDelta) / widthOfAllColumns);\n\t\t\t\t// check if individualDelta is greater than the maximum allowed delta for this column\n\t\t\t\tif (columns[i].headerLabel.length > 0 && columns[i].width - individualDelta < MINIMUM_COLUMN_WIDTH) {\n\t\t\t\t\tindividualDelta = columns[i].width - MINIMUM_COLUMN_WIDTH;\n\t\t\t\t} else if (columns[i].width - individualDelta < MINIMUM_COLUMN_WIDTH_WITHOUT_LABEL) {\n\t\t\t\t\tindividualDelta = columns[i].width - MINIMUM_COLUMN_WIDTH_WITHOUT_LABEL;\n\t\t\t\t}\n\t\t\t\ttotalDelta -= individualDelta;\n\t\t\t\tcolumnWiseDeltas[columns[i].key] = individualDelta;\n\t\t\t}\n\t\t\tif (totalDelta > 0) {\n\t\t\t\t// deltaX is greater than maximum allowed delta for all columns.\n\t\t\t\t// Don't allow resizing by setting individualDelta = 0 for ALL columns\n\t\t\t\treturn mapValues(columnWiseDeltas, () => 0);\n\t\t\t}\n\t\t}\n\t\treturn columnWiseDeltas;\n\t}\n\n\tisRowSelected(index) {\n\t\tif (this.props.rowsSelected) {\n\t\t\treturn this.props.rowsSelected.indexOf(index) > -1;\n\t\t}\n\t\treturn false;\n\t}\n\n\tisLastColumn(dataKey) {\n\t\tconst columnIndex = this.getColumnIndex(this.props.columns, dataKey);\n\t\tconst isLastColumn = (columnIndex === (this.props.columns.length - 1));\n\t\treturn isLastColumn;\n\t}\n\n\tselectAll(selected) {\n\t\tthis.props.setAllRowsSelected(selected);\n\t}\n\n\t// Callback responsible for rendering a cell's contents.\n\tcellRenderer({ cellData }) {\n\t\tif (cellData === null || typeof cellData === \"undefined\") {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn cellData;\n\t}\n\n\tcellRendererHTML({ cellData }) {\n\t\tif (cellData === null || typeof cellData === \"undefined\") {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn (<div dangerouslySetInnerHTML={{ __html: cellData }} />);\n\t}\n\n\trecomputeRowHeights(index) {\n\t\tif (this.virtualizedTableRef && this.virtualizedTableRef.current) {\n\t\t\tthis.virtualizedTableRef.current.recomputeRowHeights(index);\n\t\t}\n\t}\n\n\t// Responsible for rendering the table header row given an array of columns.\n\theaderRowRenderer(scrollKey, { className, columns, style }) {\n\t\tconst checkboxLabelColumnIndex = (typeof this.props.columns === \"undefined\" || this.props.columns.length === 0) ? 0 : this.getCheckboxLabelColumnIndex(this.props.columns);\n\t\tconst headerCheckboxLabel = (typeof this.props.columns === \"undefined\" || this.props.columns.length === 0) ? \"\" : this.props.columns[checkboxLabelColumnIndex].headerLabel;\n\t\tconst translatedHeaderCheckboxLabel = this.props.intl.formatMessage(\n\t\t\t{ id: \"virtualizedTable.header.checkbox.label\", defaultMessage: defaultMessages[\"virtualizedTable.header.checkbox.label\"] },\n\t\t\t{ header_checkbox_label: headerCheckboxLabel }\n\t\t);\n\t\tconst checkbox = this.props.selectable && this.props.rowSelection !== ROW_SELECTION.SINGLE ? (<div role=\"columnheader\" className=\"properties-vt-header-checkbox\">\n\t\t\t<Checkbox\n\t\t\t\tid={`properties-vt-hd-cb-${scrollKey}`}\n\t\t\t\tonChange={this.selectAll}\n\t\t\t\tchecked={this.props.checkedAll}\n\t\t\t\tlabelText={translatedHeaderCheckboxLabel}\n\t\t\t\thideLabel\n\t\t\t/>\n\t\t</div>)\n\t\t\t: \"\";\n\n\t\treturn (<div className={className} data-role=\"properties-header-row\" role=\"row\" style={style}>\n\t\t\t{checkbox}\n\t\t\t{columns}\n\t\t</div>);\n\t}\n\n\theaderColRenderer({ columnData, dataKey, disableSort, label, sortBy, sortDirection }) {\n\t\tlet sortIcon = null;\n\t\tif (typeof this.props.sortColumns[dataKey] !== \"undefined\") {\n\t\t\tlet type = null;\n\t\t\tswitch (this.props.sortColumns[dataKey]) {\n\t\t\tcase SORT_DIRECTION.ASC:\n\t\t\t\ttype = <ArrowUp16 disabled={this.props.tableState === STATES.DISABLED} />;\n\t\t\t\tbreak;\n\t\t\tcase SORT_DIRECTION.DESC:\n\t\t\t\ttype = <ArrowDown16 disabled={this.props.tableState === STATES.DISABLED} />;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ttype = <ArrowsVertical16 disabled={this.props.tableState === STATES.DISABLED} />;\n\t\t\t}\n\t\t\tsortIcon = (<span className=\"properties-ft-column-sort-icon\">\n\t\t\t\t{type}\n\t\t\t</span>);\n\t\t}\n\n\t\tlet tooltip = null;\n\t\tif (columnData.description && columnData.headerLabel) {\n\t\t\ttooltip = (\n\t\t\t\t<div className=\"properties-tooltips\">\n\t\t\t\t\t<span style= {{ fontWeight: \"bold\" }}>{columnData.headerLabel}</span>\n\t\t\t\t\t<br />\n\t\t\t\t\t{columnData.description}\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else if (columnData.description) {\n\t\t\ttooltip = (\n\t\t\t\t<div className=\"properties-tooltips\">\n\t\t\t\t\t{columnData.description}\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else if (columnData.headerLabel) {\n\t\t\ttooltip = (\n\t\t\t\t<div className=\"properties-tooltips\">\n\t\t\t\t\t<span style= {{ fontWeight: \"bold\" }}>{columnData.headerLabel}</span>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tconst tooltipId = uuid4() + \"-tooltip-column-\" + dataKey;\n\n\t\tconst resizeElem = columnData.resizable && !this.isLastColumn(dataKey)\n\t\t\t? (<Draggable\n\t\t\t\taxis=\"x\"\n\t\t\t\tdefaultClassName=\"properties-vt-header-resize\"\n\t\t\t\tdefaultClassNameDragging=\"properties-vt-header-resize-active\"\n\t\t\t\tonDrag={\n\t\t\t\t\t(evt, { deltaX }) => {\n\t\t\t\t\t\tthis.resizeColumn({ dataKey, deltaX });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tposition={{ x: 0 }}\n\t\t\t\tzIndex={999}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\trole=\"button\" tabIndex=\"0\"\n\t\t\t\t\taria-label=\"Resize column\"\n\t\t\t\t/>\n\t\t\t</Draggable>)\n\t\t\t: \"\";\n\n\t\treturn (\n\t\t\t<div className={classNames({ \"properties-vt-column-with-resize\": resizeElem !== \"\", \"properties-vt-column-without-resize\": resizeElem === \"\" })}>\n\t\t\t\t<div className={classNames(\"properties-vt-column properties-tooltips-container\", { \"sort-column-active\": dataKey === this.props.sortBy })}>\n\t\t\t\t\t{ isEmpty(tooltip)\n\t\t\t\t\t\t? label\n\t\t\t\t\t\t: <Tooltip\n\t\t\t\t\t\t\tid={tooltipId}\n\t\t\t\t\t\t\ttip={tooltip}\n\t\t\t\t\t\t\tdirection=\"bottom\"\n\t\t\t\t\t\t\tclassName=\"properties-tooltips\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t}\n\t\t\t\t\t{disableSort === false && sortIcon}\n\t\t\t\t</div>\n\t\t\t\t{ resizeElem }\n\t\t\t</div>\n\t\t);\n\t}\n\n\t/* Columns are not resizable by default. Host application specifies resizable columns in parameter definition.\n\t* When a column is resized, width of ALL the columns to the right of resized column is adjusted.\n\t* Every column grows/shrinks directly proportional to column width.\n\t* Example: If a column width is reduced by 10px and there are 4 columns on the right of resized column having widths [40, 30, 20, 10],\n\t* Then 10px will be adjusted in 4 columns as - [4px, 3px, 2px, 1px]\n\t* When every column's width reaches MINIMUM_COLUMN_WIDTH (56px), resizing is stopped.\n\t* Special case - For columns without labels, when their width reaches MINIMUM_COLUMN_WIDTH_WITHOUT_LABEL (32px), resizing is stopped.\n\t*/\n\tresizeColumn({ dataKey, deltaX }) {\n\t\tthis.setState((prevState) => {\n\n\t\t\tconst columns = prevState.columns;\n\t\t\t// Calculate number of resizable columns on the right of resized column\n\t\t\tconst resizedColumnIndex = this.getColumnIndex(columns, dataKey);\n\t\t\tconst allColumnsOnRight = columns.slice(resizedColumnIndex + 1);\n\t\t\t// Exclude columns having staticWidth: true\n\t\t\tconst nonStaticColumns = allColumnsOnRight.filter((column) => !column.staticWidth);\n\n\t\t\tconst resizableColumns = nonStaticColumns.filter((column) => {\n\t\t\t\t// When shrinking, get columns having width greater than MINIMUM_COLUMN_WIDTH\n\t\t\t\tif (deltaX >= 0) {\n\t\t\t\t\tif (column.headerLabel.length > 0) {\n\t\t\t\t\t\t// Column with label has min width 56px\n\t\t\t\t\t\treturn (column.width > MINIMUM_COLUMN_WIDTH);\n\t\t\t\t\t}\n\t\t\t\t\t// Column without label has min width 32px\n\t\t\t\t\treturn (column.width > MINIMUM_COLUMN_WIDTH_WITHOUT_LABEL);\n\t\t\t\t}\n\t\t\t\t// When expanding, get all columns\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\t// Get column wise delta for resizableColumns\n\t\t\tconst columnWiseDeltas = this.getColumnWiseDeltas(resizableColumns, deltaX);\n\t\t\tconst columnsToBeResized = Object.keys(columnWiseDeltas);\n\n\t\t\t// check if all column wise deltas are 0. This happens when deltaX is more than maximum allowed delta for all columns\n\t\t\tconst everyColumnHasZeroDelta = Object.values(columnWiseDeltas).every((delta) => delta === 0);\n\n\t\t\tif ((columns[resizedColumnIndex].width + deltaX) > MINIMUM_COLUMN_WIDTH && !isEmpty(columnWiseDeltas) && !everyColumnHasZeroDelta) {\n\t\t\t\tcolumns[resizedColumnIndex].width += deltaX;\n\t\t\t\t// Adjust width of all resizable columns\n\t\t\t\tcolumnsToBeResized.forEach((columnKey) => {\n\t\t\t\t\tconst idx = columns.findIndex((col) => col.key === columnKey);\n\t\t\t\t\tcolumns[idx].width -= columnWiseDeltas[columnKey];\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tcolumnResized: true,\n\t\t\t\tcolumns: columns\n\t\t\t};\n\t\t});\n\t}\n\n\toverSelectOption(evt) {\n\t\t// Differentiate between mouse and keyboard event\n\t\tif (evt.type === \"mouseenter\" && !this.keyBoardEventCalled) {\n\t\t\tthis.mouseEventCalled = true;\n\t\t\tthis.isOverSelectOption = !this.isOverSelectOption;\n\t\t} else if (evt.type === \"mouseleave\" && this.mouseEventCalled) {\n\t\t\tthis.mouseEventCalled = false;\n\t\t\tthis.isOverSelectOption = !this.isOverSelectOption;\n\t\t} else if (evt.type === \"focus\" && !this.mouseEventCalled) {\n\t\t\tthis.keyBoardEventCalled = true;\n\t\t\tthis.isOverSelectOption = !this.isOverSelectOption;\n\t\t} else if (evt.type === \"blur\" && this.keyBoardEventCalled) {\n\t\t\tthis.keyBoardEventCalled = false;\n\t\t\tthis.isOverSelectOption = !this.isOverSelectOption;\n\t\t}\n\t}\n\n\t// Responsible for rendering a table row given an array of columns.\n\trowRenderer(scrollKey, { className, columns, index, key, rowData, style }) {\n\t\tlet selectOption = \"\";\n\t\tlet selectedRow = false;\n\t\tconst rowDisabled = typeof rowData.disabled === \"boolean\" ? rowData.disabled : false;\n\n\t\tif (typeof this.props.rowHeight === \"function\" && this.props.rowHeight({ index }) === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.props.selectable) {\n\t\t\tconst rowSelected = this.isRowSelected(rowData.originalRowIndex);\n\t\t\tselectedRow = this.props.selectable && rowSelected;\n\t\t\tif (this.props.rowSelection !== ROW_SELECTION.SINGLE) {\n\t\t\t\tconst translatedRowCheckboxLabel = this.props.intl.formatMessage(\n\t\t\t\t\t{ id: \"virtualizedTable.row.checkbox.label\", defaultMessage: defaultMessages[\"virtualizedTable.row.checkbox.label\"] },\n\t\t\t\t\t{ row_index: index + 1, table_label: (this.props.tableLabel ? this.props.tableLabel : \"\") }\n\t\t\t\t);\n\n\t\t\t\tselectOption = (<div className=\"properties-vt-row-checkbox\"\n\t\t\t\t\trole=\"gridcell\"\n\t\t\t\t\tonMouseEnter={(evt) => this.overSelectOption(evt)}\n\t\t\t\t\tonMouseLeave={(evt) => this.overSelectOption(evt)}\n\t\t\t\t\tonFocus={(evt) => this.overSelectOption(evt)}\n\t\t\t\t\tonBlur={(evt) => this.overSelectOption(evt)}\n\t\t\t\t>\n\t\t\t\t\t<Checkbox\n\t\t\t\t\t\tid={`properties-vt-row-cb-${scrollKey}-${index}`}\n\t\t\t\t\t\tkey={`properties-vt-row-cb-${scrollKey}-${index}`}\n\t\t\t\t\t\tlabelText={translatedRowCheckboxLabel}\n\t\t\t\t\t\thideLabel\n\t\t\t\t\t\tchecked={rowSelected}\n\t\t\t\t\t\tdisabled={rowDisabled}\n\t\t\t\t\t/>\n\t\t\t\t</div>);\n\t\t\t}\n\t\t}\n\n\t\tif (this.props.summaryTable) {\n\t\t\tselectOption = <div className=\"properties-vt-row-checkbox\" />;\n\t\t}\n\n\t\tif (rowData.loading === true) {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tclassName={className}\n\t\t\t\t\tkey={key}\n\t\t\t\t\tdata-role=\"properties-loading-row\"\n\t\t\t\t\trole=\"row\"\n\t\t\t\t\tstyle={style}\n\t\t\t\t>\n\t\t\t\t\t<Loading className=\"properties-vt-small-loading\" small withOverlay={false} />\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tconst width = (parseInt(style.width, 10)) + \"px\"; // Subtract 2px to account for row borders\n\t\tconst newStyle = Object.assign({}, style, { width: width });\n\n\t\t// Empty style required on cell for react-virtualized. This div wrapper is required to apply the onDoubleClick handler.\n\t\treturn (<div style={{}} key={key} className=\"properties-vt-double-click\" onDoubleClick={(evt) => this.onRowDoubleClick(evt, rowData.rowKey, index)}>\n\t\t\t<div\n\t\t\t\tclassName={classNames(className,\n\t\t\t\t\t{ \"properties-vt-row-selected\": selectedRow },\n\t\t\t\t\t{ \"properties-vt-row-disabled\": rowDisabled },\n\t\t\t\t\t{ \"properties-vt-row-non-interactive\": !this.props.selectable } // ReadonlyTable with single row selection is non-interactive.\n\t\t\t\t)}\n\t\t\t\tdata-role=\"properties-data-row\"\n\t\t\t\trole=\"row\"\n\t\t\t\tstyle={newStyle}\n\t\t\t\tonMouseDown={(evt) => this.onRowClick(evt, rowData, index)}\n\t\t\t\tonKeyPress={(evt) => {\n\t\t\t\t\tif (evt.code === \"Space\" || evt.code === \"Enter\") {\n\t\t\t\t\t\tthis.onRowClick(evt, rowData, index);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{selectOption}\n\t\t\t\t{columns}\n\t\t\t</div>\n\t\t</div>);\n\t}\n\n\trender() {\n\t\tconst defaultTestHeight = 2000; // 2000 is set to accommodate test data \"category-selection-data\" with all categories expanded\n\n\t\t// AutoSizer manages width and height properties so the table fills the available space.\n\t\t// It does a direct DOM manipulation to the parent, outside React's VirtualDOM.\n\t\t// Since the actual DOM is not available when unit testing, we are passing in a default\n\t\t// width of 500 and a default height of 300.\n\t\treturn (\n\t\t\t<div className=\"properties-vt\">\n\t\t\t\t<div className={classNames(\"properties-vt-autosizer\",\n\t\t\t\t\t{ \"properties-vt-single-selection\": this.props.rowSelection && this.props.rowSelection === ROW_SELECTION.SINGLE,\n\t\t\t\t\t\t\"properties-light-disabled\": !this.props.light })}\n\t\t\t\t>\n\t\t\t\t\t<AutoSizer>\n\t\t\t\t\t\t{({ height, width }) => ( // Table height: subtract 50 for margin below the table.\n\t\t\t\t\t\t\t<Table\n\t\t\t\t\t\t\t\tref={this.virtualizedTableRef}\n\t\t\t\t\t\t\t\twidth={width ? width : 500}\n\t\t\t\t\t\t\t\theight={height ? height : defaultTestHeight}\n\n\t\t\t\t\t\t\t\tclassName=\"properties-autosized-vt\"\n\t\t\t\t\t\t\t\taria-label={this.props.tableLabel ? this.props.tableLabel : \"\"}\n\n\t\t\t\t\t\t\t\tdisableHeader={this.props.disableHeader}\n\t\t\t\t\t\t\t\theaderClassName=\"properties-autosized-vt-header\"\n\t\t\t\t\t\t\t\theaderHeight={32}\n\t\t\t\t\t\t\t\theaderRowRenderer={this.headerRowRenderer.bind(this, this.props.scrollKey)}\n\t\t\t\t\t\t\t\tonHeaderClick={this.props.onHeaderClick}\n\n\t\t\t\t\t\t\t\trowClassName=\"properties-vt-row-class\"\n\t\t\t\t\t\t\t\trowHeight={this.props.rowHeight ? this.props.rowHeight : 32}\n\n\t\t\t\t\t\t\t\trowCount={this.state.rowCount}\n\t\t\t\t\t\t\t\trowGetter={this.props.rowGetter}\n\t\t\t\t\t\t\t\trowRenderer={this.rowRenderer.bind(this, this.props.scrollKey)}\n\n\t\t\t\t\t\t\t\tscrollToIndex={this.props.scrollToIndex}\n\t\t\t\t\t\t\t\tscrollToAlignment={this.props.scrollToAlignment}\n\n\t\t\t\t\t\t\t\tsort={this.props.onSort}\n\t\t\t\t\t\t\t\tsortDirection={this.props.sortDirection}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tthis.state.columns.map((column) => (\n\t\t\t\t\t\t\t\t\t\t<Column\n\t\t\t\t\t\t\t\t\t\t\tkey={column.key}\n\t\t\t\t\t\t\t\t\t\t\tlabel={column.label}\n\t\t\t\t\t\t\t\t\t\t\tdataKey={column.key}\n\t\t\t\t\t\t\t\t\t\t\twidth={column.width}\n\t\t\t\t\t\t\t\t\t\t\tcolumnData={column}\n\t\t\t\t\t\t\t\t\t\t\tdisableSort={typeof this.props.sortColumns[column.key] === \"undefined\"}\n\t\t\t\t\t\t\t\t\t\t\tcellRenderer={column.isHTML ? this.cellRendererHTML : this.cellRenderer}\n\t\t\t\t\t\t\t\t\t\t\theaderRenderer={this.headerColRenderer}\n\t\t\t\t\t\t\t\t\t\t\t{...column.minWidth && { minWidth: column.minWidth }}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</Table>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</AutoSizer>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nVirtualizedTable.defaultProps = {\n\tdisableHeader: false\n};\n\nVirtualizedTable.propTypes = {\n\ttableLabel: PropTypes.string,\n\tselectable: PropTypes.bool,\n\tsummaryTable: PropTypes.bool,\n\trowSelection: PropTypes.string,\n\tdisableHeader: PropTypes.bool,\n\tcolumns: PropTypes.array.isRequired,\n\trowCount: PropTypes.number.isRequired,\n\trowGetter: PropTypes.func.isRequired,\n\trowHeight: PropTypes.oneOfType([\n\t\tPropTypes.func.isRequired,\n\t\tPropTypes.number.isRequired\n\t]),\n\tonRowDoubleClick: PropTypes.func,\n\trowsSelected: PropTypes.array, // Required if selectable is true\n\tcheckedAll: PropTypes.bool, // Required if selectable is true\n\tsetRowsSelected: PropTypes.func, // Required if selectable is true\n\tsetAllRowsSelected: PropTypes.func, // Required if selectable is true\n\tscrollToIndex: PropTypes.number,\n\tscrollToAlignment: PropTypes.string,\n\tonSort: PropTypes.func,\n\tsortBy: PropTypes.string,\n\tsortColumns: PropTypes.object,\n\tsortDirection: PropTypes.string,\n\tonHeaderClick: PropTypes.func,\n\tscrollKey: PropTypes.string,\n\ttableState: PropTypes.string,\n\tlight: PropTypes.bool,\n\tintl: PropTypes.object.isRequired\n};\n\nexport default injectIntl(VirtualizedTable);\n","/*\n * Copyright 2017-2022 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint complexity: [\"error\", 25] */\n/* eslint max-depth: [\"error\", 6] */\n\nimport React from \"react\";\nimport { injectIntl } from \"react-intl\";\nimport ReactDOM from \"react-dom\";\nimport PropTypes from \"prop-types\";\nimport { Search } from \"carbon-components-react\";\nimport VirtualizedTable from \"./../virtualized-table/virtualized-table.jsx\";\nimport { SORT_DIRECTION, STATES, ROW_HEIGHT, ROW_SELECTION } from \"./../../constants/constants\";\nimport ReactResizeDetector from \"react-resize-detector\";\nimport classNames from \"classnames\";\nimport { has } from \"lodash\";\nimport defaultMessages from \"../../../../locales/common-properties/locales/en.json\";\n\nclass FlexibleTable extends React.Component {\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tconst sortDirs = {};\n\t\tif (typeof this.props.sortable !== \"undefined\") {\n\t\t\tfor (var i = 0; i < this.props.sortable.length; i++) {\n\t\t\t\tconst sortCol = this.props.sortable[i];\n\t\t\t\tsortDirs[sortCol] = SORT_DIRECTION.NOT_SORTED;\n\t\t\t}\n\t\t}\n\t\tthis.state = {\n\t\t\tcheckedAllRows: false,\n\t\t\tcolumnSortDir: sortDirs,\n\t\t\tcurrentSortColumn: \"\",\n\t\t\ttableWidth: 0,\n\t\t\ttableHeight: 0\n\t\t};\n\n\t\tthis.rowHeight = this.rowHeight.bind(this);\n\t\tthis.rowGetter = this.rowGetter.bind(this);\n\n\t\tthis.getOriginalRowIndex = this.getOriginalRowIndex.bind(this);\n\t\tthis.getLastChildPropertyIdRow = this.getLastChildPropertyIdRow.bind(this);\n\n\t\tthis.calculateColumnWidths = this.calculateColumnWidths.bind(this);\n\t\tthis.handleFilterChange = this.handleFilterChange.bind(this);\n\t\tthis.onSort = this.onSort.bind(this);\n\t\tthis.sortHeaderClick = this.sortHeaderClick.bind(this);\n\t\tthis._updateTableWidth = this._updateTableWidth.bind(this);\n\t\tthis._adjustTableHeight = this._adjustTableHeight.bind(this);\n\t\tthis.handleCheckedRow = this.handleCheckedRow.bind(this);\n\t\tthis.handleCheckedAllRows = this.handleCheckedAllRows.bind(this);\n\t\tthis.handleCheckedMultipleRows = this.handleCheckedMultipleRows.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tthis._adjustTableHeight();\n\t\twindow.addEventListener(\"resize\", this._adjustTableHeight);\n\t\tthis.tableNode = ReactDOM.findDOMNode(this.refs.table);\n\t}\n\n\tcomponentDidUpdate(prevProps, prevState) {\n\t\tif (prevProps.rows !== this.props.rows ||\n\t\t\tprevProps.columns !== this.props.columns ||\n\t\t\tprevProps.noAutoSize !== this.props.noAutoSize) {\n\t\t\tthis._adjustTableHeight();\n\t\t}\n\n\t\t// Calculate if checkedAllRows is true\n\t\tif (this.props.selectedRows) {\n\t\t\tthis.setCheckedAll(this.props.selectedRows);\n\t\t}\n\n\t\tthis.tableNode = ReactDOM.findDOMNode(this.refs.table);\n\t}\n\n\tcomponentWillUnmount() {\n\t\twindow.removeEventListener(\"resize\", this._adjustTableHeight);\n\t}\n\n\tonSort({ sortBy }) {\n\t\tif (this.props.onSort) {\n\t\t\tconst sortDirection = (this.state.columnSortDir[sortBy] === SORT_DIRECTION.ASC) ? SORT_DIRECTION.DESC : SORT_DIRECTION.ASC;\n\t\t\tconst spec = {\n\t\t\t\tcolumn: sortBy,\n\t\t\t\tdirection: sortDirection\n\t\t\t};\n\t\t\tthis.props.onSort(spec);\n\t\t}\n\t}\n\n\t/**\n\t* The current displayed row may have an index that is different from its actual index within the dataset\n\t* Given the current displayed row and index of the table,\n\t* return its original row index from its row's propertyId\n\t*/\n\tgetOriginalRowIndex(row, index) {\n\t\tlet rowIndex = index;\n\t\tif (row.columns && has(row.columns[0], \"content.props.children.props.propertyId.propertyId\")) {\n\t\t\t// this is a nested control\n\t\t\trowIndex = this.getLastChildPropertyIdRow(row.columns[0].content.props.children.props.propertyId, index);\n\t\t} else if (row.columns && has(row.columns[0], \"content.props.children.props.propertyId.row\")) {\n\t\t\trowIndex = row.columns[0].content.props.children.props.propertyId.row;\n\t\t} else if (typeof row.rowKey === \"number\") { // expression tables uses rowKey\n\t\t\trowIndex = parseInt(row.rowKey, 10);\n\t\t}\n\t\treturn rowIndex;\n\t}\n\n\t// Get the 'row' of the last child's propertyId\n\tgetLastChildPropertyIdRow(propertyId, defaultRowIndex) {\n\t\tif (typeof propertyId.propertyId !== \"undefined\") {\n\t\t\treturn this.getLastChildPropertyIdRow(propertyId.propertyId);\n\t\t}\n\t\tif (typeof propertyId.row !== \"undefined\") {\n\t\t\treturn propertyId.row;\n\t\t}\n\t\treturn defaultRowIndex;\n\t}\n\n\t/**\n\t* The header checkAll box may change depending on the current visible rows\n\t* Determine if all visible rows in the table are currently selected\n\t* and set the `checkedAllRows` state accordingly\n\t*/\n\tsetCheckedAll(selectedRows) {\n\t\tlet checkAll = true;\n\t\tfor (let idx = 0; idx < this.props.data.length; idx++) {\n\t\t\tconst row = this.props.data[idx];\n\t\t\tconst originalRowIndex = this.getOriginalRowIndex(row, idx);\n\t\t\tif (selectedRows.indexOf(originalRowIndex) < 0) {\n\t\t\t\tcheckAll = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (this.state.checkedAllRows !== checkAll) {\n\t\t\tthis.setState({ checkedAllRows: checkAll });\n\t\t}\n\t}\n\n\t/**\n\t* Calculate the width for each column to fit within the table\n\t* Widths provided in columns without 'px' are 'weighted' and will be scaled\n\t* Widths provided in columns with 'px' are used as is without scaling\n\t* if width is provided with 'px', subtract that from the total available table width\n\t* if width is provided, divide the column 'weighted' width with the max width from columns\n\t* return the scaled factor\n\t* multiply each column 'weighted' width with the scaled factor to get the actual width in pixels\n\t* @param columns column definitions\n\t* @param parentTableWidth\n\t*/\n\tcalculateColumnWidths(columns, parentTableWidth) {\n\t\tlet tableWidth = parentTableWidth - 12; // subtract 12 for the left padding scss $spacing-04\n\t\tif (this.props.rowSelection !== ROW_SELECTION.SINGLE) {\n\t\t\ttableWidth -= 40;\n\t\t}\n\t\tlet remainingColumns = columns.length; // keep track of how many columns to calculate width for\n\t\tlet maxWeight = 0;\n\n\t\tfor (const columnDef of columns) {\n\t\t\t// if columns have specific width subtract from total width\n\t\t\tif (columnDef.width) {\n\t\t\t\tif (typeof columnDef.width === \"string\" && columnDef.width.includes(\"px\")) {\n\t\t\t\t\ttableWidth -= parseInt(columnDef.width, 10);\n\t\t\t\t\tremainingColumns--;\n\t\t\t\t} else {\n\t\t\t\t\tmaxWeight = Math.max(maxWeight, columnDef.width); // keep track of which column has highest width provided\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst widths = [];\n\t\tconst defaultWidth = Math.floor(tableWidth / remainingColumns); // use default width for columns without a weight\n\t\tconst weightedWidths = [];\n\t\tlet sumWeightedWidths = 0;\n\n\t\t// scale weight of columns with width provided\n\t\tfor (const columnDef of columns) {\n\t\t\tif (columnDef.width && !isNaN(columnDef.width)) {\n\t\t\t\tweightedWidths.push(columnDef.width / maxWeight);\n\t\t\t\tsumWeightedWidths += (columnDef.width / maxWeight);\n\t\t\t} else {\n\t\t\t\tweightedWidths.push(null);\n\t\t\t}\n\t\t}\n\n\t\tconst scaledWidth = tableWidth / sumWeightedWidths; // scaled width multiplier for each column with width provided\n\n\t\tlet sumColumnWidth = 0;\n\t\tfor (let idx = 0; idx < columns.length; idx++) {\n\t\t\tconst columnDef = columns[idx];\n\t\t\tif (columnDef.width) {\n\t\t\t\t// use the width provided with 'px' as is\n\t\t\t\tif (typeof columnDef.width === \"string\" && columnDef.width.includes(\"px\")) {\n\t\t\t\t\twidths.push(Math.floor(parseInt(columnDef.width, 10)) + \"px\");\n\t\t\t\t\tsumColumnWidth += parseInt(columnDef.width, 10);\n\t\t\t\t} else { // multiply the width provided by the scaled width\n\t\t\t\t\tconst calculatedWidth = Math.floor(weightedWidths[idx] * scaledWidth);\n\t\t\t\t\twidths.push(calculatedWidth + \"px\");\n\t\t\t\t\tsumColumnWidth += calculatedWidth;\n\t\t\t\t}\n\t\t\t} else { // if no width provided, use the defaultWidth\n\t\t\t\twidths.push(defaultWidth);\n\t\t\t\tsumColumnWidth += defaultWidth;\n\t\t\t}\n\t\t}\n\n\t\t// if any columns had decimals floored, allocate additional space to the first column\n\t\tlet compare = parentTableWidth;\n\t\tif (this.props.rowSelection !== ROW_SELECTION.SINGLE) {\n\t\t\tcompare -= 40;\n\t\t}\n\n\t\tif (sumColumnWidth < compare) {\n\t\t\tconst firstColWith = parseInt(widths[0], 10);\n\t\t\twidths[0] = firstColWith + compare - sumColumnWidth + \"px\";\n\t\t}\n\n\t\treturn widths;\n\t}\n\n\t_updateTableWidth(width, height) {\n\t\tif (this.state.tableWidth !== Math.floor(width - 2)) {\n\t\t\tthis.setState({\n\t\t\t\ttableWidth: Math.floor(width - 2) // subtract 2 px for the borders\n\t\t\t});\n\t\t}\n\t}\n\n\t_adjustTableHeight() {\n\t\tif (this.props.noAutoSize) {\n\t\t\treturn;\n\t\t}\n\t\tlet newHeight = this.state.tableHeight;\n\t\tconst rowHeight = 2; // in rem\n\t\tconst headerHeight = 2; // in rem\n\t\tconst rows = typeof this.props.rows !== \"undefined\" ? this.props.rows : 5.5;\n\t\tif (Array.isArray(this.props.data) && this.props.data.length < rows) {\n\t\t\tnewHeight = (rowHeight * this.props.data.length + headerHeight) + \"rem\";\n\t\t} else if (rows > 0) {\n\t\t\tnewHeight = (rowHeight * rows + headerHeight) + \"rem\";\n\t\t} else if (rows === 0) { // only display header\n\t\t\tnewHeight = headerHeight + \"rem\";\n\t\t} else if (rows === -1) {\n\t\t\tif (this.flexibleTable) {\n\t\t\t\tconst labelAndDescriptionHeight = 50; // possible dynamically set this in the future\n\t\t\t\tconst ftHeaderHeight = (typeof this.flexibleTableHeader !== \"undefined\") ? ReactDOM.findDOMNode(this.flexibleTableHeader).getBoundingClientRect().height : 0;\n\t\t\t\tconst flyoutHeight = this.findPropertyNodeHeight(this.flexibleTable, \"properties-wf-children\");\n\t\t\t\tif (flyoutHeight === 0) {\n\t\t\t\t\tnewHeight = \"100vh\"; // set full window height if flyout height not found\n\t\t\t\t} else {\n\t\t\t\t\tnewHeight = `calc(${flyoutHeight - ftHeaderHeight - labelAndDescriptionHeight}px - 3.5rem)`; // 3.5rem to adjust padding\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (newHeight !== this.state.tableHeight) {\n\t\t\tthis.setState({ tableHeight: newHeight });\n\t\t}\n\t}\n\n\tfindPropertyNodeHeight(node, className) {\n\t\tif (node && node.parentNode && node.parentNode.className && node.parentNode.className.includes(className)) {\n\t\t\tconst foundNode = ReactDOM.findDOMNode(node.parentNode).getBoundingClientRect();\n\t\t\tif (foundNode) {\n\t\t\t\treturn foundNode.height;\n\t\t\t}\n\t\t\treturn 0;\n\t\t} else if (node && node.parentNode) {\n\t\t\treturn this.findPropertyNodeHeight(node.parentNode, className);\n\t\t}\n\t\treturn 0;\n\t}\n\n\tsortHeaderClick({ dataKey }) {\n\t\tconst colSortDir = this.state.columnSortDir;\n\t\tif (typeof colSortDir[dataKey] !== \"undefined\") {\n\t\t\t// At a time only 1 column will be shown as sorted. Revert other columns to not sorted.\n\t\t\tObject.keys(colSortDir).forEach((key) => {\n\t\t\t\tif (key !== dataKey) {\n\t\t\t\t\tcolSortDir[key] = SORT_DIRECTION.NOT_SORTED;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// Only dataKey column will be sorted\n\t\t\tcolSortDir[dataKey] = (colSortDir[dataKey] === SORT_DIRECTION.ASC) ? SORT_DIRECTION.DESC : SORT_DIRECTION.ASC;\n\t\t\tthis.setState({\n\t\t\t\tcolumnSortDir: colSortDir,\n\t\t\t\tcurrentSortColumn: dataKey\n\t\t\t});\n\t\t}\n\t}\n\n\thandleFilterChange(evt) {\n\t\tif (this.props.onFilter) {\n\t\t\tthis.props.onFilter(evt.target.value);\n\t\t}\n\t}\n\n\thandleCheckedAllRows(checked) {\n\t\tlet selectAll = [];\n\t\tconst controlValue = this.props.data;\n\t\tif (checked) {\n\t\t\tselectAll = Array.from(this.props.selectedRows);\n\t\t\tfor (var rowIndex = 0; rowIndex < controlValue.length; rowIndex++) {\n\t\t\t\tconst originalRowIndex = this.getOriginalRowIndex(controlValue[rowIndex], rowIndex);\n\t\t\t\tselectAll.push(originalRowIndex);\n\t\t\t}\n\t\t}\n\t\tselectAll = Array.from(new Set(selectAll));\n\t\tthis.props.updateRowSelections(selectAll);\n\t\tthis.setState({ checkedAllRows: checked });\n\t}\n\n\t/**\n\t* This method is called when user wants to select multiple rows using shift key\n\t* Select/deselect all rows between lastCheckedRow and existingRow\n\t* @param lastCheckedRow (integer) - index of last selected row\n\t* @param existingRow (integer) - index of row where shift key is clicked\n\t* @param checked (boolean) - rows are to be selected or deselected\n\t*/\n\thandleCheckedMultipleRows(lastCheckedRow, existingRow, checked) {\n\t\tlet selectedRows = this.props.selectedRows ? this.props.selectedRows : [];\n\t\t// Calculate rows between lastChecked row and existingRow\n\t\tlet inBetweenRows;\n\t\tif (lastCheckedRow < existingRow) {\n\t\t\tinBetweenRows = Array.from({ length: (existingRow - lastCheckedRow) + 1 }, (_, i) => lastCheckedRow + i);\n\t\t} else {\n\t\t\tinBetweenRows = Array.from({ length: (lastCheckedRow - existingRow) + 1 }, (_, i) => existingRow + i);\n\t\t}\n\t\t// if selectedRows already has inBetweenRows, remove them first\n\t\tselectedRows = selectedRows.filter((row) => !inBetweenRows.includes(row)); // Deselecting inBetweenRows using shift key\n\t\tif (checked) {\n\t\t\tselectedRows = selectedRows.concat(inBetweenRows); \t// Selecting inBetweenRows using shift key\n\t\t}\n\t\treturn selectedRows;\n\t}\n\n\thandleCheckedRow(data, evt) {\n\t\tconst dataRowIndex = data.originalRowIndex; // Use the originalRowIndex for selection in case rows are filtered.\n\t\tconst displayedRowIndex = data.index;\n\t\tconst checked = data.selected;\n\t\tconst overSelectOption = data.isOverSelectOption;\n\n\t\tif (!this.props.data[displayedRowIndex].disabled) {\n\t\t\tif (overSelectOption) { // Checkbox is clicked\n\t\t\t\tlet current = this.props.selectedRows ? this.props.selectedRows : [];\n\t\t\t\tif (data.selectMultipleRows) { // multiple rows selected/deselected using shift key\n\t\t\t\t\tcurrent = this.handleCheckedMultipleRows(data.lastCheckedRow, displayedRowIndex, checked);\n\t\t\t\t\tthis.setCheckedAll(current);\n\t\t\t\t} else if (checked) { // single row selected\n\t\t\t\t\tcurrent = current.concat(dataRowIndex);\n\t\t\t\t\tthis.setCheckedAll(current);\n\t\t\t\t} else if (current) { // single row deselected\n\t\t\t\t\tcurrent = current.filter(function(element) {\n\t\t\t\t\t\treturn element !== dataRowIndex;\n\t\t\t\t\t});\n\t\t\t\t\tthis.setState({ checkedAllRows: false });\n\t\t\t\t}\n\t\t\t\t// Sort ascending because we want to add selected rows in the same order as they're displayed in the table\n\t\t\t\tcurrent.sort((a, b) => a - b);\n\t\t\t\tthis.props.updateRowSelections(current);\n\t\t\t} else if (this.props.rowSelection === ROW_SELECTION.SINGLE && typeof this.props.updateRowSelections !== \"undefined\") { // Table row is clicked\n\t\t\t\tthis.props.updateRowSelections(data.index, evt, this.props.data[data.index].rowKey);\n\t\t\t}\n\t\t}\n\t}\n\n\n\t/**\n\t* Generate the table header specs from this.props.columns\n\t* this.props.columns: array of objects\n\t* [\n\t* {\n\t* \"key\": string,\n\t* \"label\": string,\n\t* \"width\": integer or string if containts 'px',\n\t* \"description\": optional string,\n\t* \"resizable\": optional boolean,\n\t* \"staticWidth\": optional boolean - This is a special property added only for SPSS modeler which directly calls FlexibleTable. This property is NOT a part of uiHints.\n\t* }\n\t* ]\n\t* @param columnWidths\n\t*/\n\tgenerateTableHeaderRow(columnWidths) {\n\t\tconst headers = [];\n\t\tlet searchLabel = \"\";\n\t\tfor (var j = 0; j < this.props.columns.length; j++) {\n\t\t\tconst columnDef = this.props.columns[j];\n\t\t\tif (typeof this.props.filterable !== \"undefined\" && this.props.filterable[0] === columnDef.key) {\n\t\t\t\tsearchLabel = columnDef.label;\n\t\t\t}\n\t\t\tconst width = Math.abs(parseInt(columnWidths[j], 10));\n\t\t\tlet headerLabel;\n\t\t\tif (typeof (columnDef.label) === \"object\") {\n\t\t\t\theaderLabel = columnDef.label.props.labelText;\n\t\t\t} else if (typeof (columnDef.label) === \"string\") {\n\t\t\t\theaderLabel = columnDef.label;\n\t\t\t}\n\t\t\theaders.push({\n\t\t\t\tkey: columnDef.key,\n\t\t\t\tlabel: columnDef.label,\n\t\t\t\twidth: width,\n\t\t\t\tdescription: columnDef.description,\n\t\t\t\theaderLabel: headerLabel,\n\t\t\t\tresizable: columnDef.resizable,\n\t\t\t\toperation: columnDef.operation,\n\t\t\t\tstaticWidth: columnDef.staticWidth ? columnDef.staticWidth : false // Used to exclude a column from resizing. If true, \"resizable\" value will be ignored.\n\t\t\t});\n\t\t}\n\t\treturn {\n\t\t\theaders: headers,\n\t\t\tsearchLabel: searchLabel\n\t\t};\n\t}\n\n\t/**\n\t* Callback responsible for returning a data row given an index\n\t*/\n\trowGetter({ index }) {\n\t\tconst row = this.props.data[index];\n\t\tconst originalRowIndex = this.getOriginalRowIndex(row, index);\n\n\t\tconst columns = {};\n\t\tif (row.columns) {\n\t\t\tfor (let cidx = 0; cidx < row.columns.length; cidx++) {\n\t\t\t\tconst column = row.columns[cidx];\n\t\t\t\tcolumns[column.column] = column.content;\n\t\t\t}\n\t\t}\n\t\treturn Object.assign({}, columns, {\n\t\t\tloading: false,\n\t\t\tindex: index,\n\t\t\toriginalRowIndex: originalRowIndex,\n\t\t\trowKey: typeof row.rowKey !== \"undefined\" ? row.rowKey : this.props.scrollKey + \"-row-\" + index,\n\t\t\tdisabled: row.disabled\n\t\t});\n\t}\n\n\t// Function that returns the height of a row given its index\n\trowHeight({ index }) {\n\t\treturn ROW_HEIGHT;\n\t}\n\n\trender() {\n\t\tconst tableWidth = this.state.tableWidth;\n\t\tconst columnWidths = this.calculateColumnWidths(this.props.columns, tableWidth);\n\t\tconst headerInfo = this.generateTableHeaderRow(columnWidths);\n\n\t\tconst headers = headerInfo.headers;\n\t\tconst searchLabel = headerInfo.searchLabel;\n\t\tconst disabled = this.props.tableState === STATES.DISABLED;\n\n\t\tlet searchBar = null;\n\n\t\tif (typeof this.props.filterable !== \"undefined\" && this.props.filterable.length !== 0) {\n\t\t\tconst placeHolder = this.props.intl.formatMessage(\n\t\t\t\t{ id: \"table.search.placeholder\", defaultMessage: defaultMessages[\"table.search.placeholder\"] },\n\t\t\t\t{ column_name: searchLabel }\n\t\t\t);\n\t\t\tconst searchBarLabel = this.props.intl.formatMessage(\n\t\t\t\t{ id: \"table.search.label\", defaultMessage: defaultMessages[\"table.search.label\"] },\n\t\t\t\t{ table_name: this.props.tableLabel }\n\t\t\t);\n\n\t\t\tsearchBar = (\n\t\t\t\t<div className={classNames(\"properties-ft-search-container\", { \"disabled\": disabled })}>\n\t\t\t\t\t<Search\n\t\t\t\t\t\tclassName=\"properties-ft-search-text\"\n\t\t\t\t\t\tplaceholder={placeHolder}\n\t\t\t\t\t\tonChange={this.handleFilterChange}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tlabelText={searchBarLabel}\n\t\t\t\t\t\tlight={this.props.light}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tlet scrollIndex = -1;\n\t\tif (typeof this.props.scrollToRow !== \"undefined\" && this.props.scrollToRow !== null) {\n\t\t\tscrollIndex = this.props.scrollToRow;\n\t\t}\n\n\t\tlet heightStyle = {};\n\t\tif (!this.props.noAutoSize) {\n\t\t\theightStyle = { height: this.state.tableHeight };\n\t\t}\n\n\t\tconst containerClass = this.props.showHeader ? \"properties-ft-container-absolute \" : \"properties-ft-container-absolute-noheader \";\n\t\tconst messageClass = (!this.props.messageInfo) ? containerClass + STATES.INFO : containerClass + this.props.messageInfo.type;\n\t\tconst ftHeader = (searchBar || this.props.topRightPanel)\n\t\t\t? (<div className=\"properties-ft-table-header\" ref={ (ref) => (this.flexibleTableHeader = ref) }>\n\t\t\t\t{searchBar}\n\t\t\t\t{this.props.topRightPanel}\n\t\t\t</div>)\n\t\t\t: null;\n\n\t\treturn (\n\t\t\t<div data-id={\"properties-ft-\" + this.props.scrollKey} className=\"properties-ft-control-container\" ref={ (ref) => (this.flexibleTable = ref) }>\n\t\t\t\t{ftHeader}\n\t\t\t\t<div className=\"properties-ft-container-panel\">\n\t\t\t\t\t<ReactResizeDetector handleWidth onResize={this._updateTableWidth}>\n\t\t\t\t\t\t<div className=\"properties-ft-container-wrapper\" style={ heightStyle }>\n\t\t\t\t\t\t\t<div className={messageClass}>\n\t\t\t\t\t\t\t\t{this.props.selectedEditRow}\n\t\t\t\t\t\t\t\t<VirtualizedTable\n\t\t\t\t\t\t\t\t\ttableLabel={this.props.tableLabel}\n\t\t\t\t\t\t\t\t\tcolumns={headers}\n\t\t\t\t\t\t\t\t\tonHeaderClick={this.sortHeaderClick}\n\t\t\t\t\t\t\t\t\trowCount={this.props.data.length}\n\t\t\t\t\t\t\t\t\trowHeight={this.rowHeight}\n\t\t\t\t\t\t\t\t\trowGetter={this.rowGetter}\n\t\t\t\t\t\t\t\t\tsummaryTable={this.props.summaryTable}\n\t\t\t\t\t\t\t\t\tselectable={typeof this.props.updateRowSelections !== \"undefined\"}\n\t\t\t\t\t\t\t\t\trowSelection={this.props.rowSelection}\n\t\t\t\t\t\t\t\t\tdisableHeader={!this.props.showHeader}\n\t\t\t\t\t\t\t\t\tonRowDoubleClick={this.props.onRowDoubleClick}\n\t\t\t\t\t\t\t\t\trowsSelected={this.props.selectedRows}\n\t\t\t\t\t\t\t\t\tcheckedAll={this.state.checkedAllRows}\n\t\t\t\t\t\t\t\t\tsetRowsSelected={this.handleCheckedRow}\n\t\t\t\t\t\t\t\t\tsetAllRowsSelected={this.handleCheckedAllRows}\n\t\t\t\t\t\t\t\t\tscrollKey={this.props.scrollKey}\n\t\t\t\t\t\t\t\t\tonSort={this.onSort}\n\t\t\t\t\t\t\t\t\tsortBy={this.state.currentSortColumn}\n\t\t\t\t\t\t\t\t\tsortColumns={this.state.columnSortDir}\n\t\t\t\t\t\t\t\t\tsortDirection={this.state.columnSortDir[this.state.currentSortColumn]}\n\t\t\t\t\t\t\t\t\ttableState={this.props.tableState}\n\t\t\t\t\t\t\t\t\tlight={this.props.light}\n\t\t\t\t\t\t\t\t\t{...(scrollIndex !== -1 && { scrollToIndex: scrollIndex, scrollToAlignment: \"center\" })}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ReactResizeDetector>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nFlexibleTable.defaultProps = {\n\tshowHeader: true,\n\tlight: true\n};\n\nFlexibleTable.propTypes = {\n\tsortable: PropTypes.array,\n\tcolumns: PropTypes.array.isRequired,\n\tdata: PropTypes.array.isRequired,\n\tfilterable: PropTypes.array,\n\tfilterBy: PropTypes.string,\n\tfilterKeyword: PropTypes.string,\n\thideFilterInput: PropTypes.func,\n\tscrollToRow: PropTypes.number,\n\tonSort: PropTypes.func,\n\tonFilter: PropTypes.func,\n\tshowHeader: PropTypes.bool,\n\tselectedEditRow: PropTypes.object,\n\ttopRightPanel: PropTypes.object,\n\tscrollKey: PropTypes.string,\n\ttableLabel: PropTypes.string,\n\trows: PropTypes.number,\n\tnoAutoSize: PropTypes.bool,\n\ttableState: PropTypes.string,\n\tmessageInfo: PropTypes.object,\n\tupdateRowSelections: PropTypes.func,\n\tonRowDoubleClick: PropTypes.func,\n\tselectedRows: PropTypes.array,\n\trowSelection: PropTypes.string,\n\tsummaryTable: PropTypes.bool,\n\tlight: PropTypes.bool,\n\tintl: PropTypes.object.isRequired\n};\n\nexport default injectIntl(FlexibleTable);\n"],"names":["baseHasIn","object","key","Object","hasPath","require$$1","hasIn_1","path","_matchesStrictComparable","srcValue","undefined","baseIsMatch","require$$0","getMatchData","matchesStrictComparable","require$$2","baseIsEqual","get","hasIn","isKey","require$$3","isStrictComparable","require$$4","require$$5","toKey","require$$6","baseGet","baseProperty","basePropertyDeep","baseMatches","source","matchData","length","baseMatchesProperty","objValue","COMPARE_PARTIAL_FLAG","identity","isArray","property","_baseIteratee","value","baseAssignValue","baseForOwn","baseIteratee","mapValues_1","iteratee","result","baseDifference","baseFlatten","isArrayLikeObject","last","differenceBy_1","array","values","VirtualizedTable","props","context","_classCallCheck","_this","state","rowCount","columns","columnResized","virtualizedTableRef","React","createRef","lastChecked","_isEmpty","rowsSelected","slice","pop","isOverSelectOption","mouseEventCalled","keyBoardEventCalled","cellRenderer","bind","selectAll","headerRowRenderer","headerColRenderer","onRowClick","overSelectOption","resizeColumn","this","rowHeight","recomputeRowHeights","evt","rowData","index","target","className","stopPropagation","selected","isRowSelected","originalRowIndex","setRowsSelected","selectMultipleRows","shiftKey","lastCheckedRow","rowKey","onRowDoubleClick","i","operation","findIndex","column","deltaX","columnWiseDeltas","sort","a","b","width","totalDelta","widthOfAllColumns","reduce","prev","current","individualDelta","Math","round","headerLabel","MINIMUM_COLUMN_WIDTH","MINIMUM_COLUMN_WIDTH_WITHOUT_LABEL","_mapValues","indexOf","dataKey","isLastColumn","getColumnIndex","setAllRowsSelected","cellData","dangerouslySetInnerHTML","__html","scrollKey","style","checkboxLabelColumnIndex","getCheckboxLabelColumnIndex","headerCheckboxLabel","translatedHeaderCheckboxLabel","intl","formatMessage","id","defaultMessage","defaultMessages","header_checkbox_label","checkbox","selectable","rowSelection","ROW_SELECTION","SINGLE","role","Checkbox","onChange","checked","checkedAll","labelText","hideLabel","columnData","disableSort","label","sortBy","sortDirection","sortIcon","sortColumns","type","SORT_DIRECTION","ASC","ArrowUp16","disabled","tableState","STATES","DISABLED","DESC","ArrowDown16","ArrowsVertical16","tooltip","description","fontWeight","tooltipId","uuid4","resizeElem","resizable","Draggable","axis","defaultClassName","defaultClassNameDragging","onDrag","_this2","position","x","zIndex","tabIndex","classNames","Tooltip","tip","direction","setState","prevState","resizedColumnIndex","_this3","resizableColumns","filter","staticWidth","getColumnWiseDeltas","columnsToBeResized","keys","everyColumnHasZeroDelta","every","delta","forEach","columnKey","idx","col","selectOption","selectedRow","rowDisabled","rowSelected","translatedRowCheckboxLabel","row_index","table_label","tableLabel","onMouseEnter","_this4","onMouseLeave","onFocus","onBlur","summaryTable","loading","Loading","small","withOverlay","parseInt","newStyle","assign","onDoubleClick","onMouseDown","onKeyPress","code","light","AutoSizer","height","Table","ref","_this5","disableHeader","headerClassName","headerHeight","onHeaderClick","rowClassName","rowGetter","rowRenderer","scrollToIndex","scrollToAlignment","onSort","map","Column","isHTML","cellRendererHTML","headerRenderer","minWidth","nextProps","updatedState","_differenceBy","Component","defaultProps","injectIntl","FlexibleTable","sortDirs","sortable","NOT_SORTED","checkedAllRows","columnSortDir","currentSortColumn","tableWidth","tableHeight","getOriginalRowIndex","getLastChildPropertyIdRow","calculateColumnWidths","handleFilterChange","sortHeaderClick","_updateTableWidth","_adjustTableHeight","handleCheckedRow","handleCheckedAllRows","handleCheckedMultipleRows","window","addEventListener","tableNode","ReactDOM","findDOMNode","refs","table","prevProps","rows","noAutoSize","selectedRows","setCheckedAll","removeEventListener","spec","row","rowIndex","_has","content","children","propertyId","defaultRowIndex","checkAll","data","parentTableWidth","remainingColumns","maxWeight","columnDef","includes","max","_iterator","widths","defaultWidth","floor","weightedWidths","sumWeightedWidths","isNaN","push","_iterator2","scaledWidth","sumColumnWidth","calculatedWidth","compare","firstColWith","newHeight","Array","flexibleTable","ftHeaderHeight","flexibleTableHeader","getBoundingClientRect","flyoutHeight","findPropertyNodeHeight","node","parentNode","foundNode","colSortDir","onFilter","controlValue","from","Set","updateRowSelections","existingRow","inBetweenRows","_","concat","dataRowIndex","displayedRowIndex","element","columnWidths","headers","searchLabel","j","filterable","abs","_typeof","cidx","ROW_HEIGHT","headerInfo","generateTableHeaderRow","searchBar","placeHolder","column_name","searchBarLabel","table_name","Search","placeholder","size","scrollIndex","scrollToRow","heightStyle","containerClass","showHeader","messageClass","messageInfo","INFO","ftHeader","topRightPanel","ReactResizeDetector","handleWidth","onResize","selectedEditRow"],"mappings":"67KAAIA,ECQJ,SAAmBC,EAAQC,GACzB,OAAiB,MAAVD,GAAkBC,KAAOC,OAAOF,IDRrCG,EAAUC,MAgCdC,GAJA,SAAeL,EAAQM,GACrB,OAAiB,MAAVN,GAAkBG,EAAQH,EAAQM,EAAMP,QEXjDQ,GAVA,SAAiCN,EAAKO,GACpC,OAAO,SAASR,GACd,OAAc,MAAVA,IAGGA,EAAOC,KAASO,SACPC,IAAbD,GAA2BP,KAAOC,OAAOF,OCf5CU,GAAcC,EACdC,GAAeR,EACfS,GAA0BC,OCF1BC,GAAcJ,EACdK,GAAMZ,EACNa,GAAQH,GACRI,GAAQC,EACRC,GAAqBC,EACrBR,GAA0BS,GAC1BC,GAAQC,MCNRC,GAAUd,MCAVe,GCOJ,SAAsBzB,GACpB,OAAO,SAASD,GACd,OAAiB,MAAVA,OAAiBS,EAAYT,EAAOC,KDR3C0B,GDQJ,SAA0BrB,GACxB,OAAO,SAASN,GACd,OAAOyB,GAAQzB,EAAQM,KCTvBY,GAAQJ,EACRS,GAAQJ,MEHRS,GLWJ,SAAqBC,GACnB,IAAIC,EAAYlB,GAAaiB,GAC7B,OAAwB,GAApBC,EAAUC,QAAeD,EAAU,GAAG,GACjCjB,GAAwBiB,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAAS9B,GACd,OAAOA,IAAW6B,GAAUnB,GAAYV,EAAQ6B,EAAQC,KKhBxDE,GJmBJ,SAA6B1B,EAAME,GACjC,OAAIU,GAAMZ,IAASc,GAAmBZ,GAC7BK,GAAwBU,GAAMjB,GAAOE,GAEvC,SAASR,GACd,IAAIiC,EAAWjB,GAAIhB,EAAQM,GAC3B,YAAqBG,IAAbwB,GAA0BA,IAAazB,EAC3CS,GAAMjB,EAAQM,GACdS,GAAYP,EAAUyB,EAAUC,KI1BpCC,GAAWrB,EACXsB,GAAUjB,EACVkB,GFuBJ,SAAkB/B,GAChB,OAAOY,GAAMZ,GAAQoB,GAAaH,GAAMjB,IAASqB,GAAiBrB,QEEpEgC,GAjBA,SAAsBC,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACKJ,GAEW,iBAATI,EACFH,GAAQG,GACXP,GAAoBO,EAAM,GAAIA,EAAM,IACpCX,GAAYW,GAEXF,GAASE,IC3BdC,GAAkB7B,EAClB8B,GAAarC,EACbsC,GAAe5B,OAwCnB6B,GAVA,SAAmB3C,EAAQ4C,GACzB,IAAIC,EAAS,GAMb,OALAD,EAAWF,GAAaE,GAExBH,GAAWzC,GAAQ,SAASuC,EAAOtC,EAAKD,GACtCwC,GAAgBK,EAAQ5C,EAAK2C,EAASL,EAAOtC,EAAKD,OAE7C6C,GCvCLC,GAAiBnC,EACjBoC,GAAc3C,EACdsC,GAAe5B,GAEfkC,GAAoB3B,EACpB4B,GAAO3B,EAsCX4B,GAxCe/B,GA8Ba,SAASgC,EAAOC,GAC1C,IAAIR,EAAWK,GAAKG,GAIpB,OAHIJ,GAAkBJ,KACpBA,OAAWnC,GAENuC,GAAkBG,GACrBL,GAAeK,EAAOJ,GAAYK,EAAQ,EAAGJ,IAAmB,GAAON,GAAaE,IACpF,kbCRAS,kCAeL,WAAYC,EAAOC,GAAS,MAAA,OAAAC,WAC3BC,cAAMH,EAAOC,IAERG,MAAQ,CACZC,SAAUF,EAAKH,MAAMK,SACrBC,QAASH,EAAKH,MAAMM,QACpBC,eAAe,GAEhBJ,EAAKK,oBAAsBC,EAAMC,YACjCP,EAAKQ,YAAcC,EAAQZ,EAAMa,cAAgB,KAAOb,EAAMa,aAAaC,OAAO,GAAGC,MAErFZ,EAAKa,oBAAqB,EAC1Bb,EAAKc,kBAAmB,EACxBd,EAAKe,qBAAsB,EAC3Bf,EAAKgB,aAAehB,EAAKgB,aAAaC,WACtCjB,EAAKkB,UAAYlB,EAAKkB,UAAUD,WAChCjB,EAAKmB,kBAAoBnB,EAAKmB,kBAAkBF,WAChDjB,EAAKoB,kBAAoBpB,EAAKoB,kBAAkBH,WAChDjB,EAAKqB,WAAarB,EAAKqB,WAAWJ,WAClCjB,EAAKsB,iBAAmBtB,EAAKsB,iBAAiBL,WAC9CjB,EAAKuB,aAAevB,EAAKuB,aAAaN,yDAGvC,WAIqC,mBAAzBO,KAAK3B,MAAM4B,WACrBD,KAAKE,gDAKP,SAAWC,EAAKC,EAASC,GACxB,GAA6B,sBAAzBF,EAAIG,OAAOC,UACdJ,EAAIK,sBACE,CAEN,IAAMC,GAAYT,KAAKU,cAAcN,EAAQO,kBACH,mBAA/BX,KAAK3B,MAAMuC,kBACrBZ,KAAK3B,MAAMuC,gBAAgB,CAC1BP,MAASA,EACTM,iBAAoBP,EAAQO,iBAC5BF,SAAYA,EACZpB,mBAAsBW,KAAKX,mBAC3BwB,qBAAsBV,EAAIW,UAAWX,EAAIW,SACzCC,eAAuC,OAArBf,KAAKhB,YAAuB,EAAIgB,KAAKhB,aAAemB,GAGvEH,KAAKhB,YAAcoB,EAAQC,wCAK9B,SAAiBF,EAAKa,EAAQX,GACzBL,KAAK3B,MAAM4C,kBACdjB,KAAK3B,MAAM4C,iBAAiBd,EAAKa,EAAQX,8CAI3C,SAA4B1B,GAE3B,IAAK,IAAIuC,EAAI,EAAGA,EAAIvC,EAAQ7B,OAAQoE,IACnC,GAA6B,UAAzBvC,EAAQuC,GAAGC,UACd,OAAOD,EAIT,OAAO,gCAGR,SAAevC,EAAS3D,GAEvB,OADc2D,EAAQyC,WAAU,SAACC,GAAD,OAAYA,EAAOrG,MAAQA,wCAK5D,SAAoB2D,EAAS2C,GAC5B,IAAMC,EAAmB,GACzB,GAAI5C,EAAQ7B,OAAS,EAAG,CAEvB6B,EAAQ6C,MAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAEE,MAAQD,EAAEC,SAKnC,IAJA,IAAIC,EAAaN,EAIRJ,EAAI,EAAGA,EAAIvC,EAAQ7B,OAAQoE,IAAK,CACxC,IAAMW,EAAoBlD,EAAQQ,MAAM+B,GAAGY,QAAO,SAACC,EAAMC,GAAP,OAAmBD,EAAOC,EAAQL,QAAO,GACvFM,EAAkBC,KAAKC,MAAOxD,EAAQuC,GAAGS,MAAQC,EAAcC,GAE/DlD,EAAQuC,GAAGkB,YAAYtF,OAAS,GAAK6B,EAAQuC,GAAGS,MAAQM,EAAkBI,EAC7EJ,EAAkBtD,EAAQuC,GAAGS,MAAQU,EAC3B1D,EAAQuC,GAAGS,MAAQM,EAAkBK,IAC/CL,EAAkBtD,EAAQuC,GAAGS,MAAQW,GAEtCV,GAAcK,EACdV,EAAiB5C,EAAQuC,GAAGlG,KAAOiH,EAEpC,GAAIL,EAAa,EAGhB,OAAOW,GAAUhB,GAAkB,WAAA,OAAM,KAG3C,OAAOA,+BAGR,SAAclB,GACb,QAAIL,KAAK3B,MAAMa,cACPc,KAAK3B,MAAMa,aAAasD,QAAQnC,IAAU,8BAKnD,SAAaoC,GACZ,IACMC,EADc1C,KAAK2C,eAAe3C,KAAK3B,MAAMM,QAAS8D,KACrBzC,KAAK3B,MAAMM,QAAQ7B,OAAS,EACnE,OAAO4F,2BAGR,SAAUjC,GACTT,KAAK3B,MAAMuE,mBAAmBnC,+BAI/B,YAA2B,IAAZoC,IAAAA,SACd,OAAIA,QACI,GAEDA,kCAGR,YAA+B,IAAZA,IAAAA,SAClB,OAAIA,QACI,GAEA/D,uBAAKgE,wBAAyB,CAAEC,OAAQF,wCAGjD,SAAoBxC,GACfL,KAAKnB,qBAAuBmB,KAAKnB,oBAAoBmD,SACxDhC,KAAKnB,oBAAoBmD,QAAQ9B,oBAAoBG,oCAKvD,SAAkB2C,KAA0C,IAA7BzC,IAAAA,UAAW5B,IAAAA,QAASsE,IAAAA,MAC5CC,OAA0D,IAAvBlD,KAAK3B,MAAMM,SAAyD,IAA9BqB,KAAK3B,MAAMM,QAAQ7B,OAAgB,EAAIkD,KAAKmD,4BAA4BnD,KAAK3B,MAAMM,SAC5JyE,OAAqD,IAAvBpD,KAAK3B,MAAMM,SAAyD,IAA9BqB,KAAK3B,MAAMM,QAAQ7B,OAAgB,GAAKkD,KAAK3B,MAAMM,QAAQuE,GAA0Bd,YACzJiB,EAAgCrD,KAAK3B,MAAMiF,KAAKC,cACrD,CAAEC,GAAI,yCAA0CC,eAAgBC,EAAgB,2CAChF,CAAEC,sBAAuBP,IAEpBQ,EAAW5D,KAAK3B,MAAMwF,YAAc7D,KAAK3B,MAAMyF,eAAiBC,EAAcC,OAAUlF,uBAAKmF,KAAK,eAAe1D,UAAU,iCAChIzB,gBAACoF,GACAV,iCAA2BR,GAC3BmB,SAAUnE,KAAKN,UACf0E,QAASpE,KAAK3B,MAAMgG,WACpBC,UAAWjB,EACXkB,gBAGC,GAEH,OAAQzF,uBAAKyB,UAAWA,EAAW,YAAU,wBAAwB0D,KAAK,MAAMhB,MAAOA,GACrFW,EACAjF,oCAIH,YAAsF,WAAlE6F,IAAAA,WAAY/B,IAAAA,QAASgC,IAAAA,YAAaC,IAAAA,QAAOC,SAAQC,cACpE,IAAIC,EAAW,KACf,QAA+C,IAApC7E,KAAK3B,MAAMyG,YAAYrC,GAA0B,CAC3D,IAAIsC,EAAO,KACX,OAAQ/E,KAAK3B,MAAMyG,YAAYrC,IAC/B,KAAKuC,EAAeC,IACnBF,EAAOjG,gBAACoG,GAAUC,SAAUnF,KAAK3B,MAAM+G,aAAeC,EAAOC,WAC7D,MACD,KAAKN,EAAeO,KACnBR,EAAOjG,gBAAC0G,GAAYL,SAAUnF,KAAK3B,MAAM+G,aAAeC,EAAOC,WAC/D,MACD,QACCP,EAAOjG,gBAAC2G,GAAiBN,SAAUnF,KAAK3B,MAAM+G,aAAeC,EAAOC,WAErET,EAAY/F,wBAAMyB,UAAU,kCAC1BwE,GAIH,IAAIW,EAAU,KACVlB,EAAWmB,aAAenB,EAAWpC,YACxCsD,EACC5G,uBAAKyB,UAAU,uBACdzB,wBAAMmE,MAAQ,CAAE2C,WAAY,SAAWpB,EAAWpC,aAClDtD,2BACC0F,EAAWmB,aAGJnB,EAAWmB,YACrBD,EACC5G,uBAAKyB,UAAU,uBACbiE,EAAWmB,aAGJnB,EAAWpC,cACrBsD,EACC5G,uBAAKyB,UAAU,uBACdzB,wBAAMmE,MAAQ,CAAE2C,WAAY,SAAWpB,EAAWpC,eAKrD,IAAMyD,EAAYC,IAAU,mBAAqBrD,EAE3CsD,EAAavB,EAAWwB,YAAchG,KAAK0C,aAAaD,GAC1D3D,gBAACmH,GACHC,KAAK,IACLC,iBAAiB,8BACjBC,yBAAyB,qCACzBC,OACC,SAAClG,KAAoB,IAAbmB,IAAAA,OACPgF,EAAKvG,aAAa,CAAE0C,QAAAA,EAASnB,OAAAA,KAG/BiF,SAAU,CAAEC,EAAG,GACfC,OAAQ,KAER3H,uBACCmF,KAAK,SAASyC,SAAS,IACvB,aAAW,mBAGX,GAEH,OACC5H,uBAAKyB,UAAWoG,EAAW,CAAE,mCAAmD,KAAfZ,EAAmB,sCAAsD,KAAfA,KAC1HjH,uBAAKyB,UAAWoG,EAAW,qDAAsD,CAAE,qBAAsBlE,IAAYzC,KAAK3B,MAAMsG,UAC7H1F,EAAQyG,GACPhB,EACA5F,gBAAC8H,GACFpD,GAAIqC,EACJgB,IAAKnB,EACLoB,UAAU,SACVvG,UAAU,uBAETmE,IAGc,IAAhBD,GAAyBI,GAEzBkB,+BAaL,YAAkC,WAAnBtD,IAAAA,QAASnB,IAAAA,OACvBtB,KAAK+G,UAAS,SAACC,GAEd,IAAMrI,EAAUqI,EAAUrI,QAEpBsI,EAAqBC,EAAKvE,eAAehE,EAAS8D,GAKlD0E,EAJoBxI,EAAQQ,MAAM8H,EAAqB,GAElBG,QAAO,SAAC/F,GAAD,OAAaA,EAAOgG,eAE5BD,QAAO,SAAC/F,GAEjD,QAAIC,GAAU,KACTD,EAAOe,YAAYtF,OAAS,EAEvBuE,EAAOM,MAAQU,EAGhBhB,EAAOM,MAAQW,MAOnBf,EAAmB2F,EAAKI,oBAAoBH,EAAkB7F,GAC9DiG,EAAqBtM,OAAOuM,KAAKjG,GAGjCkG,EAA0BxM,OAAOkD,OAAOoD,GAAkBmG,OAAM,SAACC,GAAD,OAAqB,IAAVA,KAUjF,OARKhJ,EAAQsI,GAAoBtF,MAAQL,EAAUe,IAAyBpD,EAAQsC,KAAsBkG,IACzG9I,EAAQsI,GAAoBtF,OAASL,EAErCiG,EAAmBK,SAAQ,SAACC,GAC3B,IAAMC,EAAMnJ,EAAQyC,WAAU,SAAC2G,GAAD,OAASA,EAAI/M,MAAQ6M,KACnDlJ,EAAQmJ,GAAKnG,OAASJ,EAAiBsG,OAGlC,CACNjJ,eAAe,EACfD,QAASA,sCAKZ,SAAiBwB,GAEC,eAAbA,EAAI4E,MAA0B/E,KAAKT,oBAGf,eAAbY,EAAI4E,MAAyB/E,KAAKV,kBAC5CU,KAAKV,kBAAmB,EACxBU,KAAKX,oBAAsBW,KAAKX,oBACT,UAAbc,EAAI4E,MAAqB/E,KAAKV,iBAGjB,SAAba,EAAI4E,MAAmB/E,KAAKT,sBACtCS,KAAKT,qBAAsB,EAC3BS,KAAKX,oBAAsBW,KAAKX,qBAJhCW,KAAKT,qBAAsB,EAC3BS,KAAKX,oBAAsBW,KAAKX,qBAPhCW,KAAKV,kBAAmB,EACxBU,KAAKX,oBAAsBW,KAAKX,+CAclC,SAAY2D,KAA+D,WAAlDzC,IAAAA,UAAW5B,IAAAA,QAAS0B,IAAAA,MAAOrF,IAAAA,IAAKoF,IAAAA,QAAS6C,IAAAA,MAC7D+E,EAAe,GACfC,GAAc,EACZC,EAA0C,kBAArB9H,EAAQ+E,UAAyB/E,EAAQ+E,SAEpE,GAAoC,mBAAzBnF,KAAK3B,MAAM4B,WAAgE,IAApCD,KAAK3B,MAAM4B,UAAU,CAAEI,MAAAA,IACxE,OAAO,KAGR,GAAIL,KAAK3B,MAAMwF,WAAY,CAC1B,IAAMsE,EAAcnI,KAAKU,cAAcN,EAAQO,kBAE/C,GADAsH,EAAcjI,KAAK3B,MAAMwF,YAAcsE,EACnCnI,KAAK3B,MAAMyF,eAAiBC,EAAcC,OAAQ,CACrD,IAAMoE,EAA6BpI,KAAK3B,MAAMiF,KAAKC,cAClD,CAAEC,GAAI,sCAAuCC,eAAgBC,EAAgB,wCAC7E,CAAE2E,UAAWhI,EAAQ,EAAGiI,YAActI,KAAK3B,MAAMkK,WAAavI,KAAK3B,MAAMkK,WAAa,KAGvFP,EAAgBlJ,uBAAKyB,UAAU,6BAC9B0D,KAAK,WACLuE,aAAc,SAACrI,GAAD,OAASsI,EAAK3I,iBAAiBK,IAC7CuI,aAAc,SAACvI,GAAD,OAASsI,EAAK3I,iBAAiBK,IAC7CwI,QAAS,SAACxI,GAAD,OAASsI,EAAK3I,iBAAiBK,IACxCyI,OAAQ,SAACzI,GAAD,OAASsI,EAAK3I,iBAAiBK,KAEvCrB,gBAACoF,GACAV,kCAA4BR,cAAa3C,GACzCrF,mCAA6BgI,cAAa3C,GAC1CiE,UAAW8D,EACX7D,aACAH,QAAS+D,EACThD,SAAU+C,MAUd,GAJIlI,KAAK3B,MAAMwK,eACdb,EAAelJ,uBAAKyB,UAAU,iCAGP,IAApBH,EAAQ0I,QACX,OACChK,uBACCyB,UAAWA,EACXvF,IAAKA,EACL,YAAU,yBACViJ,KAAK,MACLhB,MAAOA,GAEPnE,gBAACiK,GAAQxI,UAAU,8BAA8ByI,SAAMC,aAAa,KAKvE,IAAMtH,EAASuH,SAASjG,EAAMtB,MAAO,IAAO,KACtCwH,EAAWlO,OAAOmO,OAAO,GAAInG,EAAO,CAAEtB,MAAOA,IAGnD,OAAQ7C,uBAAKmE,MAAO,GAAIjI,IAAKA,EAAKuF,UAAU,6BAA6B8I,cAAe,SAAClJ,GAAD,OAASsI,EAAKxH,iBAAiBd,EAAKC,EAAQY,OAAQX,KAC3IvB,uBACCyB,UAAWoG,EAAWpG,EACrB,CAAE,6BAA8B0H,GAChC,CAAE,6BAA8BC,GAChC,CAAE,qCAAsClI,KAAK3B,MAAMwF,aAEpD,YAAU,sBACVI,KAAK,MACLhB,MAAOkG,EACPG,YAAa,SAACnJ,GAAD,OAASsI,EAAK5I,WAAWM,EAAKC,EAASC,IACpDkJ,WAAY,SAACpJ,GACK,UAAbA,EAAIqJ,MAAiC,UAAbrJ,EAAIqJ,MAC/Bf,EAAK5I,WAAWM,EAAKC,EAASC,KAI/B2H,EACArJ,0BAKJ,WAAS,WAOR,OACCG,uBAAKyB,UAAU,iBACdzB,uBAAKyB,UAAWoG,EAAW,0BAC1B,CAAE,iCAAkC3G,KAAK3B,MAAMyF,cAAgB9D,KAAK3B,MAAMyF,eAAiBC,EAAcC,OACxG,6BAA8BhE,KAAK3B,MAAMoL,SAE1C3K,gBAAC4K,QACC,YAAA,IAAGC,IAAAA,OAAQhI,IAAAA,MAAX,OACA7C,gBAAC8K,GACAC,IAAKC,EAAKjL,oBACV8C,MAAOA,GAAgB,IACvBgI,OAAQA,GAjBY,IAmBpBpJ,UAAU,0BACV,aAAYuJ,EAAKzL,MAAMkK,WAAauB,EAAKzL,MAAMkK,WAAa,GAE5DwB,cAAeD,EAAKzL,MAAM0L,cAC1BC,gBAAgB,iCAChBC,aAAc,GACdtK,kBAAmBmK,EAAKnK,kBAAkBF,KAAKqK,EAAMA,EAAKzL,MAAM2E,WAChEkH,cAAeJ,EAAKzL,MAAM6L,cAE1BC,aAAa,0BACblK,UAAW6J,EAAKzL,MAAM4B,UAAY6J,EAAKzL,MAAM4B,UAAY,GAEzDvB,SAAUoL,EAAKrL,MAAMC,SACrB0L,UAAWN,EAAKzL,MAAM+L,UACtBC,YAAaP,EAAKO,YAAY5K,KAAKqK,EAAMA,EAAKzL,MAAM2E,WAEpDsH,cAAeR,EAAKzL,MAAMiM,cAC1BC,kBAAmBT,EAAKzL,MAAMkM,kBAE9B/I,KAAMsI,EAAKzL,MAAMmM,OACjB5F,cAAekF,EAAKzL,MAAMuG,eAGzBkF,EAAKrL,MAAME,QAAQ8L,KAAI,SAACpJ,GAAD,OACtBvC,gBAAC4L,KACA1P,IAAKqG,EAAOrG,IACZ0J,MAAOrD,EAAOqD,MACdjC,QAASpB,EAAOrG,IAChB2G,MAAON,EAAOM,MACd6C,WAAYnD,EACZoD,iBAA2D,IAAvCqF,EAAKzL,MAAMyG,YAAYzD,EAAOrG,KAClDwE,aAAc6B,EAAOsJ,OAASb,EAAKc,iBAAmBd,EAAKtK,aAC3DqL,eAAgBf,EAAKlK,mBACjByB,EAAOyJ,UAAY,CAAEA,SAAUzJ,EAAOyJ,+DA3dpD,SAAgCC,EAAW/D,GAC1C,IAAMgE,EAAe,GASrB,OARID,EAAUrM,WAAasI,EAAUtI,WACpCsM,EAAatM,SAAWqM,EAAUrM,UAI9BsI,EAAUpI,eAAkBK,EAAQgM,GAAaF,EAAUpM,QAASqI,EAAUrI,QAAS,kBAC3FqM,EAAarM,QAAUoM,EAAUpM,SAE1BqM,SAZqBlM,EAAMoM,WA0erC9M,GAAiB+M,aAAe,CAC/BpB,eAAe,GAkChB,OAAeqB,EAAWhN,w8CC/gBpBiN,kCAEL,WAAYhN,GAAO,MAAAE,UAGlB,IAAM+M,EAAW,GACjB,QAAmC,KAHnC9M,cAAMH,IAGUA,MAAMkN,SACrB,IAAK,IAAIrK,EAAI,EAAGA,EAAI1C,EAAKH,MAAMkN,SAASzO,OAAQoE,IAAK,CAEpDoK,EADgB9M,EAAKH,MAAMkN,SAASrK,IAChB8D,EAAewG,WAPnB,OAUlBhN,EAAKC,MAAQ,CACZgN,gBAAgB,EAChBC,cAAeJ,EACfK,kBAAmB,GACnBC,WAAY,EACZC,YAAa,GAGdrN,EAAKyB,UAAYzB,EAAKyB,UAAUR,WAChCjB,EAAK4L,UAAY5L,EAAK4L,UAAU3K,WAEhCjB,EAAKsN,oBAAsBtN,EAAKsN,oBAAoBrM,WACpDjB,EAAKuN,0BAA4BvN,EAAKuN,0BAA0BtM,WAEhEjB,EAAKwN,sBAAwBxN,EAAKwN,sBAAsBvM,WACxDjB,EAAKyN,mBAAqBzN,EAAKyN,mBAAmBxM,WAClDjB,EAAKgM,OAAShM,EAAKgM,OAAO/K,WAC1BjB,EAAK0N,gBAAkB1N,EAAK0N,gBAAgBzM,WAC5CjB,EAAK2N,kBAAoB3N,EAAK2N,kBAAkB1M,WAChDjB,EAAK4N,mBAAqB5N,EAAK4N,mBAAmB3M,WAClDjB,EAAK6N,iBAAmB7N,EAAK6N,iBAAiB5M,WAC9CjB,EAAK8N,qBAAuB9N,EAAK8N,qBAAqB7M,WACtDjB,EAAK+N,0BAA4B/N,EAAK+N,0BAA0B9M,wDAGjE,WACCO,KAAKoM,qBACLI,OAAOC,iBAAiB,SAAUzM,KAAKoM,oBACvCpM,KAAK0M,UAAYC,EAASC,YAAY5M,KAAK6M,KAAKC,yCAGjD,SAAmBC,EAAW/F,GACzB+F,EAAUC,OAAShN,KAAK3B,MAAM2O,MACjCD,EAAUpO,UAAYqB,KAAK3B,MAAMM,SACjCoO,EAAUE,aAAejN,KAAK3B,MAAM4O,YACpCjN,KAAKoM,qBAIFpM,KAAK3B,MAAM6O,cACdlN,KAAKmN,cAAcnN,KAAK3B,MAAM6O,cAG/BlN,KAAK0M,UAAYC,EAASC,YAAY5M,KAAK6M,KAAKC,2CAGjD,WACCN,OAAOY,oBAAoB,SAAUpN,KAAKoM,0CAG3C,YAAmB,IAAVzH,IAAAA,OACR,GAAI3E,KAAK3B,MAAMmM,OAAQ,CACtB,IACM6C,EAAO,CACZhM,OAAQsD,EACRmC,UAHsB9G,KAAKvB,MAAMiN,cAAc/G,KAAYK,EAAeC,IAAOD,EAAeO,KAAOP,EAAeC,KAKvHjF,KAAK3B,MAAMmM,OAAO6C,uCASpB,SAAoBC,EAAKjN,GACxB,IAAIkN,EAAWlN,EASf,OARIiN,EAAI3O,SAAW6O,EAAIF,EAAI3O,QAAQ,GAAI,sDAEtC4O,EAAWvN,KAAK+L,0BAA0BuB,EAAI3O,QAAQ,GAAG8O,QAAQpP,MAAMqP,SAASrP,MAAMsP,WAAYtN,GACxFiN,EAAI3O,SAAW6O,EAAIF,EAAI3O,QAAQ,GAAI,+CAC7C4O,EAAWD,EAAI3O,QAAQ,GAAG8O,QAAQpP,MAAMqP,SAASrP,MAAMsP,WAAWL,IAClC,iBAAfA,EAAItM,SACrBuM,EAAWrE,SAASoE,EAAItM,OAAQ,KAE1BuM,2CAIR,SAA0BI,EAAYC,GACrC,YAAqC,IAA1BD,EAAWA,WACd3N,KAAK+L,0BAA0B4B,EAAWA,iBAEpB,IAAnBA,EAAWL,IACdK,EAAWL,IAEZM,+BAQR,SAAcV,GAEb,IADA,IAAIW,GAAW,EACN/F,EAAM,EAAGA,EAAM9H,KAAK3B,MAAMyP,KAAKhR,OAAQgL,IAAO,CACtD,IAAMwF,EAAMtN,KAAK3B,MAAMyP,KAAKhG,GACtBnH,EAAmBX,KAAK8L,oBAAoBwB,EAAKxF,GACvD,GAAIoF,EAAa1K,QAAQ7B,GAAoB,EAAG,CAC/CkN,GAAW,EACX,OAGE7N,KAAKvB,MAAMgN,iBAAmBoC,GACjC7N,KAAK+G,SAAS,CAAE0E,eAAgBoC,yCAelC,SAAsBlP,EAASoP,GAC9B,IAAInC,EAAamC,EAAmB,GAChC/N,KAAK3B,MAAMyF,eAAiBC,EAAcC,SAC7C4H,GAAc,IAEf,MAAIoC,EAAmBrP,EAAQ7B,OAC3BmR,EAAY,OAEQtP,GARwB,IAQhD,2BAAiC,CAAA,IAAtBuP,UAENA,EAAUvM,QACkB,iBAApBuM,EAAUvM,OAAsBuM,EAAUvM,MAAMwM,SAAS,OACnEvC,GAAc1C,SAASgF,EAAUvM,MAAO,IACxCqM,KAEAC,EAAY/L,KAAKkM,IAAIH,EAAWC,EAAUvM,kBAfG0M,eAAAA,MAmBhD,MAAMC,EAAS,GACTC,EAAerM,KAAKsM,MAAM5C,EAAaoC,GACvCS,EAAiB,GACnBC,EAAoB,OAGA/P,GAzBwB,IAyBhD,2BAAiC,CAAA,IAAtBuP,UACNA,EAAUvM,QAAUgN,MAAMT,EAAUvM,QACvC8M,EAAeG,KAAKV,EAAUvM,MAAQsM,GACtCS,GAAsBR,EAAUvM,MAAQsM,GAExCQ,EAAeG,KAAK,gBA9B0BC,eAAAA,MAqChD,IAHA,IAAMC,EAAclD,EAAa8C,EAE7BK,EAAiB,EACZjH,EAAM,EAAGA,EAAMnJ,EAAQ7B,OAAQgL,IAAO,CAC9C,IAAMoG,EAAYvP,EAAQmJ,GAC1B,GAAIoG,EAAUvM,MAEb,GAA+B,iBAApBuM,EAAUvM,OAAsBuM,EAAUvM,MAAMwM,SAAS,MACnEG,EAAOM,KAAK1M,KAAKsM,MAAMtF,SAASgF,EAAUvM,MAAO,KAAO,MACxDoN,GAAkB7F,SAASgF,EAAUvM,MAAO,QACtC,CACN,IAAMqN,EAAkB9M,KAAKsM,MAAMC,EAAe3G,GAAOgH,GACzDR,EAAOM,KAAKI,EAAkB,MAC9BD,GAAkBC,OAGnBV,EAAOM,KAAKL,GACZQ,GAAkBR,EAKpB,IAAIU,EAAUlB,EAKd,GAJI/N,KAAK3B,MAAMyF,eAAiBC,EAAcC,SAC7CiL,GAAW,IAGRF,EAAiBE,EAAS,CAC7B,IAAMC,EAAehG,SAASoF,EAAO,GAAI,IACzCA,EAAO,GAAKY,EAAeD,EAAUF,EAAiB,KAGvD,OAAOT,mCAGR,SAAkB3M,EAAOgI,GACpB3J,KAAKvB,MAAMmN,aAAe1J,KAAKsM,MAAM7M,EAAQ,IAChD3B,KAAK+G,SAAS,CACb6E,WAAY1J,KAAKsM,MAAM7M,EAAQ,uCAKlC,WACC,IAAI3B,KAAK3B,MAAM4O,WAAf,CAGA,IAAIkC,EAAYnP,KAAKvB,MAAMoN,YAGrBmB,OAAkC,IAApBhN,KAAK3B,MAAM2O,KAAuBhN,KAAK3B,MAAM2O,KAAO,IACxE,GAAIoC,MAAMjS,QAAQ6C,KAAK3B,MAAMyP,OAAS9N,KAAK3B,MAAMyP,KAAKhR,OAASkQ,EAC9DmC,EAJiB,EAIQnP,KAAK3B,MAAMyP,KAAKhR,OAHrB,EAG8C,WAC5D,GAAIkQ,EAAO,EACjBmC,EANiB,EAMQnC,EALL,EAK4B,WAC1C,GAAa,IAATA,EACVmC,EAAYlF,YACN,IAAc,IAAV+C,GACNhN,KAAKqP,cAAe,CACvB,IACMC,OAAsD,IAA7BtP,KAAKuP,oBAAuC5C,EAASC,YAAY5M,KAAKuP,qBAAqBC,wBAAwB7F,OAAS,EACrJ8F,EAAezP,KAAK0P,uBAAuB1P,KAAKqP,cAAe,0BAEpEF,EADoB,IAAjBM,EACS,uBAEQA,EAAeH,EANF,mBAUhCH,IAAcnP,KAAKvB,MAAMoN,aAC5B7L,KAAK+G,SAAS,CAAE8E,YAAasD,2CAI/B,SAAuBQ,EAAMpP,GAC5B,GAAIoP,GAAQA,EAAKC,YAAcD,EAAKC,WAAWrP,WAAaoP,EAAKC,WAAWrP,UAAU4N,SAAS5N,GAAY,CAC1G,IAAMsP,EAAYlD,EAASC,YAAY+C,EAAKC,YAAYJ,wBACxD,OAAIK,EACIA,EAAUlG,OAEX,EACD,OAAIgG,GAAQA,EAAKC,WAChB5P,KAAK0P,uBAAuBC,EAAKC,WAAYrP,GAE9C,iCAGR,YAA6B,IAAXkC,IAAAA,QACXqN,EAAa9P,KAAKvB,MAAMiN,mBACK,IAAxBoE,EAAWrN,KAErBxH,OAAOuM,KAAKsI,GAAYlI,SAAQ,SAAC5M,GAC5BA,IAAQyH,IACXqN,EAAW9U,GAAOgK,EAAewG,eAInCsE,EAAWrN,GAAYqN,EAAWrN,KAAauC,EAAeC,IAAOD,EAAeO,KAAOP,EAAeC,IAC1GjF,KAAK+G,SAAS,CACb2E,cAAeoE,EACfnE,kBAAmBlJ,uCAKtB,SAAmBtC,GACdH,KAAK3B,MAAM0R,UACd/P,KAAK3B,MAAM0R,SAAS5P,EAAIG,OAAOhD,2CAIjC,SAAqB8G,GACpB,IAAI1E,EAAY,GACVsQ,EAAehQ,KAAK3B,MAAMyP,KAChC,GAAI1J,EAAS,CACZ1E,EAAY0P,MAAMa,KAAKjQ,KAAK3B,MAAM6O,cAClC,IAAK,IAAIK,EAAW,EAAGA,EAAWyC,EAAalT,OAAQyQ,IAAY,CAClE,IAAM5M,EAAmBX,KAAK8L,oBAAoBkE,EAAazC,GAAWA,GAC1E7N,EAAUkP,KAAKjO,IAGjBjB,EAAY0P,MAAMa,KAAK,IAAIC,IAAIxQ,IAC/BM,KAAK3B,MAAM8R,oBAAoBzQ,GAC/BM,KAAK+G,SAAS,CAAE0E,eAAgBrH,6CAUjC,SAA0BrD,EAAgBqP,EAAahM,GACtD,IAEIiM,EAFAnD,EAAelN,KAAK3B,MAAM6O,aAAelN,KAAK3B,MAAM6O,aAAe,GAavE,OATCmD,EADGtP,EAAiBqP,EACJhB,MAAMa,KAAK,CAAEnT,OAASsT,EAAcrP,EAAkB,IAAK,SAACuP,EAAGpP,GAAJ,OAAUH,EAAiBG,KAEtFkO,MAAMa,KAAK,CAAEnT,OAASiE,EAAiBqP,EAAe,IAAK,SAACE,EAAGpP,GAAJ,OAAUkP,EAAclP,KAGpGgM,EAAeA,EAAa9F,QAAO,SAACkG,GAAD,OAAU+C,EAAclC,SAASb,MAChElJ,IACH8I,EAAeA,EAAaqD,OAAOF,IAE7BnD,kCAGR,SAAiBY,EAAM3N,GACtB,IAAMqQ,EAAe1C,EAAKnN,iBACpB8P,EAAoB3C,EAAKzN,MACzB+D,EAAU0J,EAAKrN,SACfX,EAAmBgO,EAAKzO,mBAE9B,IAAKW,KAAK3B,MAAMyP,KAAK2C,GAAmBtL,SACvC,GAAIrF,EAAkB,CACrB,IAAIkC,EAAUhC,KAAK3B,MAAM6O,aAAelN,KAAK3B,MAAM6O,aAAe,GAC9DY,EAAKjN,oBACRmB,EAAUhC,KAAKuM,0BAA0BuB,EAAK/M,eAAgB0P,EAAmBrM,GACjFpE,KAAKmN,cAAcnL,IACToC,GACVpC,EAAUA,EAAQuO,OAAOC,GACzBxQ,KAAKmN,cAAcnL,IACTA,IACVA,EAAUA,EAAQoF,QAAO,SAASsJ,GACjC,OAAOA,IAAYF,KAEpBxQ,KAAK+G,SAAS,CAAE0E,gBAAgB,KAGjCzJ,EAAQR,MAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAIC,KAC3B1B,KAAK3B,MAAM8R,oBAAoBnO,QACrBhC,KAAK3B,MAAMyF,eAAiBC,EAAcC,aAAoD,IAAnChE,KAAK3B,MAAM8R,qBAChFnQ,KAAK3B,MAAM8R,oBAAoBrC,EAAKzN,MAAOF,EAAKH,KAAK3B,MAAMyP,KAAKA,EAAKzN,OAAOW,8CAqB/E,SAAuB2P,GAGtB,IAFA,IAAMC,EAAU,GACZC,EAAc,GACTC,EAAI,EAAGA,EAAI9Q,KAAK3B,MAAMM,QAAQ7B,OAAQgU,IAAK,CACnD,IAAM5C,EAAYlO,KAAK3B,MAAMM,QAAQmS,QACA,IAA1B9Q,KAAK3B,MAAM0S,YAA8B/Q,KAAK3B,MAAM0S,WAAW,KAAO7C,EAAUlT,MAC1F6V,EAAc3C,EAAUxJ,OAEzB,IAAM/C,EAAQO,KAAK8O,IAAI9H,SAASyH,EAAaG,GAAI,KAC7C1O,SAC6B,WAA7B6O,EAAQ/C,EAAUxJ,OACrBtC,EAAc8L,EAAUxJ,MAAMrG,MAAMiG,UACG,iBAArB4J,EAAUxJ,QAC5BtC,EAAc8L,EAAUxJ,OAEzBkM,EAAQhC,KAAK,CACZ5T,IAAKkT,EAAUlT,IACf0J,MAAOwJ,EAAUxJ,MACjB/C,MAAOA,EACPgE,YAAauI,EAAUvI,YACvBvD,YAAaA,EACb4D,UAAWkI,EAAUlI,UACrB7E,UAAW+M,EAAU/M,UACrBkG,cAAa6G,EAAU7G,aAAc6G,EAAU7G,cAGjD,MAAO,CACNuJ,QAASA,EACTC,YAAaA,4BAOf,YAAqB,IAATxQ,IAAAA,MACLiN,EAAMtN,KAAK3B,MAAMyP,KAAKzN,GACtBM,EAAmBX,KAAK8L,oBAAoBwB,EAAKjN,GAEjD1B,EAAU,GAChB,GAAI2O,EAAI3O,QACP,IAAK,IAAIuS,EAAO,EAAGA,EAAO5D,EAAI3O,QAAQ7B,OAAQoU,IAAQ,CACrD,IAAM7P,EAASiM,EAAI3O,QAAQuS,GAC3BvS,EAAQ0C,EAAOA,QAAUA,EAAOoM,QAGlC,OAAOxS,OAAOmO,OAAO,GAAIzK,EAAS,CACjCmK,SAAS,EACTzI,MAAOA,EACPM,iBAAkBA,EAClBK,YAA8B,IAAfsM,EAAItM,OAAyBsM,EAAItM,OAAShB,KAAK3B,MAAM2E,UAAY,QAAU3C,EAC1F8E,SAAUmI,EAAInI,oCAKhB,YACC,SADW9E,MACJ8Q,wBAGR,WAAS,WACFvF,EAAa5L,KAAKvB,MAAMmN,WACxB+E,EAAe3Q,KAAKgM,sBAAsBhM,KAAK3B,MAAMM,QAASiN,GAC9DwF,EAAapR,KAAKqR,uBAAuBV,GAEzCC,EAAUQ,EAAWR,QACrBC,EAAcO,EAAWP,YACzB1L,EAAWnF,KAAK3B,MAAM+G,aAAeC,EAAOC,SAE9CgM,EAAY,KAEhB,QAAqC,IAA1BtR,KAAK3B,MAAM0S,YAA+D,IAAjC/Q,KAAK3B,MAAM0S,WAAWjU,OAAc,CACvF,IAAMyU,EAAcvR,KAAK3B,MAAMiF,KAAKC,cACnC,CAAEC,GAAI,2BAA4BC,eAAgBC,EAAgB,6BAClE,CAAE8N,YAAaX,IAEVY,EAAiBzR,KAAK3B,MAAMiF,KAAKC,cACtC,CAAEC,GAAI,qBAAsBC,eAAgBC,EAAgB,uBAC5D,CAAEgO,WAAY1R,KAAK3B,MAAMkK,aAG1B+I,EACCxS,uBAAKyB,UAAWoG,EAAW,iCAAkC,CAAExB,SAAYA,KAC1ErG,gBAAC6S,GACApR,UAAU,4BACVqR,YAAaL,EACbpN,SAAUnE,KAAKiM,mBACf9G,SAAUA,EACV0M,KAAK,KACLvN,UAAWmN,EACXhI,MAAOzJ,KAAK3B,MAAMoL,SAMtB,IAAIqI,GAAe,OACmB,IAA3B9R,KAAK3B,MAAM0T,aAA0D,OAA3B/R,KAAK3B,MAAM0T,cAC/DD,EAAc9R,KAAK3B,MAAM0T,aAG1B,IAAIC,EAAc,GACbhS,KAAK3B,MAAM4O,aACf+E,EAAc,CAAErI,OAAQ3J,KAAKvB,MAAMoN,cAGpC,IAAMoG,EAAiBjS,KAAK3B,MAAM6T,WAAa,oCAAsC,6CAC/EC,EAAiBnS,KAAK3B,MAAM+T,YAA8CH,EAAiBjS,KAAK3B,MAAM+T,YAAYrN,KAAvEkN,EAAiB5M,EAAOgN,KACnEC,EAAYhB,GAAatR,KAAK3B,MAAMkU,cACtCzT,uBAAKyB,UAAU,6BAA6BsJ,IAAM,SAACA,GAAD,OAAUvD,EAAKiJ,oBAAsB1F,IACxFyH,EACAtR,KAAK3B,MAAMkU,eAEX,KAEH,OACCzT,uBAAK,UAAS,iBAAmBkB,KAAK3B,MAAM2E,UAAWzC,UAAU,kCAAkCsJ,IAAM,SAACA,GAAD,OAAUvD,EAAK+I,cAAgBxF,IACtIyI,EACDxT,uBAAKyB,UAAU,iCACdzB,gBAAC0T,GAAoBC,eAAYC,SAAU1S,KAAKmM,mBAC/CrN,uBAAKyB,UAAU,kCAAkC0C,MAAQ+O,GACxDlT,uBAAKyB,UAAW4R,GACdnS,KAAK3B,MAAMsU,gBACZ7T,gBAACV,MACAmK,WAAYvI,KAAK3B,MAAMkK,WACvB5J,QAASiS,EACT1G,cAAelK,KAAKkM,gBACpBxN,SAAUsB,KAAK3B,MAAMyP,KAAKhR,OAC1BmD,UAAWD,KAAKC,UAChBmK,UAAWpK,KAAKoK,UAChBvB,aAAc7I,KAAK3B,MAAMwK,aACzBhF,gBAAsD,IAAnC7D,KAAK3B,MAAM8R,oBAC9BrM,aAAc9D,KAAK3B,MAAMyF,aACzBiG,eAAgB/J,KAAK3B,MAAM6T,WAC3BjR,iBAAkBjB,KAAK3B,MAAM4C,iBAC7B/B,aAAcc,KAAK3B,MAAM6O,aACzB7I,WAAYrE,KAAKvB,MAAMgN,eACvB7K,gBAAiBZ,KAAKqM,iBACtBzJ,mBAAoB5C,KAAKsM,qBACzBtJ,UAAWhD,KAAK3B,MAAM2E,UACtBwH,OAAQxK,KAAKwK,OACb7F,OAAQ3E,KAAKvB,MAAMkN,kBACnB7G,YAAa9E,KAAKvB,MAAMiN,cACxB9G,cAAe5E,KAAKvB,MAAMiN,cAAc1L,KAAKvB,MAAMkN,mBACnDvG,WAAYpF,KAAK3B,MAAM+G,WACvBqE,MAAOzJ,KAAK3B,MAAMoL,QACI,IAAjBqI,GAAsB,CAAExH,cAAewH,EAAavH,kBAAmB,wBA7fzDzL,EAAMoM,WAwgBlCG,GAAcF,aAAe,CAC5B+G,YAAY,EACZzI,OAAO,GAgCR,OAAe2B,EAAWC"}
|
package/dist/toolbar-1c181339.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("./isArrayLikeObject-f3b27f64.js"),t=require("./datarecord-metadata-v3-schema-6b6384ff.js"),r=require("./createClass-6db89a23.js"),a=require("./getPrototypeOf-bf88242f.js"),n=require("react"),o=require("react-intl"),l=require("react-resize-detector"),i=require("./lib/tooltip.js"),s=require("carbon-components-react"),c=require("react-inlinesvg"),u=require("./extends-8d17c85c.js"),d=require("@carbon/icons-react"),f=require("./canvas-constants-34cdb7df.js");function C(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var h=C(n),v=C(l),p=C(c),b=/\s/;var m=function(e){for(var t=e.length;t--&&b.test(e.charAt(t)););return t},g=/^\s+/;var E=function(e){return e?e.slice(0,m(e)+1).replace(g,""):e},O=e.isObject_1,y=e.isSymbol_1,x=/^[-+]0x[0-9a-f]+$/i,I=/^0b[01]+$/i,T=/^0o[0-7]+$/i,w=parseInt;var B=function(e){if("number"==typeof e)return e;if(y(e))return NaN;if(O(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=O(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=E(e);var r=I.test(e);return r||T.test(e)?w(e.slice(2),r?2:8):x.test(e)?NaN:+e},A={"toolbar.palette":"Palette","toolbar.zoomIn":"Zoom in","toolbar.zoomOut":"Zoom out","toolbar.zoomToFit":"Zoom to fit","toolbar.overflowMenu":"Overflow menu","toolbar.label":"Canvas toolbar"};function R(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=a._getPrototypeOf(e);if(t){var o=a._getPrototypeOf(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return a._possibleConstructorReturn(this,r)}}var F=function(e){a._inherits(n,e);var t=R(n);function n(e){var o;return r._classCallCheck(this,n),(o=t.call(this,e)).actionClickHandler=o.actionClickHandler.bind(a._assertThisInitialized(o)),o}return r._createClass(n,[{key:"getDefaultIcon",value:function(e){var t=e.iconTypeOverride?e.iconTypeOverride:e.action,r=!e.enable;switch(t){case f.TOOLBAR_STOP:return h.default.createElement(d.StopFilledAlt16,{disabled:r});case f.TOOLBAR_RUN:return h.default.createElement(d.Play16,{disabled:r});case f.TOOLBAR_UNDO:return h.default.createElement(d.Undo16,{disabled:r});case f.TOOLBAR_REDO:return h.default.createElement(d.Redo16,{disabled:r});case f.TOOLBAR_CUT:return h.default.createElement(d.Cut16,{disabled:r});case f.TOOLBAR_COPY:return h.default.createElement(d.Copy16,{disabled:r});case f.TOOLBAR_PASTE:return h.default.createElement(d.Paste16,{disabled:r});case f.TOOLBAR_CREATE_AUTO_COMMENT:return h.default.createElement(d.AddComment16,{disabled:r});case f.TOOLBAR_DELETE_SELECTED_OBJECTS:return h.default.createElement(d.TrashCan16,{disabled:r});case f.TOOLBAR_ZOOM_IN:return h.default.createElement(d.ZoomIn16,{disabled:r});case f.TOOLBAR_ZOOM_OUT:return h.default.createElement(d.ZoomOut16,{disabled:r});case f.TOOLBAR_ZOOM_FIT:return h.default.createElement(p.default,{src:"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22currentColor%22%3E%20%3Cpath%20d%3D%22M6%2C7.5h4v1H6Z%22%2F%3E%20%3Cpath%20d%3D%22M4%2C12h8a.94.94%2C0%2C0%2C0%2C1-1V5a.94.94%2C0%2C0%2C0-1-1H4A.94.94%2C0%2C0%2C0%2C3%2C5v6A.94.94%2C0%2C0%2C0%2C4%2C12ZM4%2C5h8v6H4Z%22%2F%3E%20%3Cpolygon%20points%3D%222%203.5%201%203.5%201%201%203.5%201%203.5%202%202%202%202%203.5%22%2F%3E%20%3Cpolygon%20points%3D%2215%203.5%2014%203.5%2014%202%2012.5%202%2012.5%201%2015%201%2015%203.5%22%2F%3E%20%3Cpolygon%20points%3D%2215%2015%2012.5%2015%2012.5%2014%2014%2014%2014%2012.5%2015%2012.5%2015%2015%22%2F%3E%20%3Cpolygon%20points%3D%223.5%2015%201%2015%201%2012.5%202%2012.5%202%2014%203.5%2014%203.5%2015%22%2F%3E%3C%2Fsvg%3E",disabled:r});case f.TOOLBAR_ARRANGE_HORIZONALLY:return h.default.createElement(p.default,{src:"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Crect%20x%3D%221.5%22%20y%3D%222%22%20width%3D%2213%22%20height%3D%221%22%2F%3E%3Crect%20x%3D%221.5%22%20y%3D%2213%22%20width%3D%2213%22%20height%3D%221%22%2F%3E%3Cpath%20d%3D%22M7%2C10.5H2a.47.47%2C0%2C0%2C1-.5-.5V6A.47.47%2C0%2C0%2C1%2C2%2C5.5H7a.47.47%2C0%2C0%2C1%2C.5.5v4A.47.47%2C0%2C0%2C1%2C7%2C10.5Zm-4.5-1h4v-3h-4Z%22%2F%3E%3Cpath%20d%3D%22M14%2C10.5H9a.47.47%2C0%2C0%2C1-.5-.5V6A.47.47%2C0%2C0%2C1%2C9%2C5.5h5a.47.47%2C0%2C0%2C1%2C.5.5v4A.47.47%2C0%2C0%2C1%2C14%2C10.5Zm-4.5-1h4v-3h-4Z%22%2F%3E%3C%2Fsvg%3E",disabled:r});case f.TOOLBAR_ARRANGE_VERTICALLY:return h.default.createElement(p.default,{src:"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Crect%20x%3D%222%22%20y%3D%221.5%22%20width%3D%221%22%20height%3D%2213%22%2F%3E%3Crect%20x%3D%2213%22%20y%3D%221.5%22%20width%3D%221%22%20height%3D%2213%22%2F%3E%3Cpath%20d%3D%22M10.5%2C7.5h-5A.47.47%2C0%2C0%2C1%2C5%2C7V3a.47.47%2C0%2C0%2C1%2C.5-.5h5A.47.47%2C0%2C0%2C1%2C11%2C3V7A.47.47%2C0%2C0%2C1%2C10.5%2C7.5ZM6%2C6.5h4v-3H6Z%22%2F%3E%3Cpath%20d%3D%22M10.5%2C13.5h-5A.47.47%2C0%2C0%2C1%2C5%2C13V9a.47.47%2C0%2C0%2C1%2C.5-.5h5A.47.47%2C0%2C0%2C1%2C11%2C9v4A.47.47%2C0%2C0%2C1%2C10.5%2C13.5ZM6%2C12.5h4v-3H6Z%22%2F%3E%3C%2Fsvg%3E",disabled:r});case f.TOOLBAR_OPEN_PALETTE:return h.default.createElement(p.default,{src:"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22currentColor%22%3E%20%3Crect%20width%3D%2232%22%20height%3D%2232%22%20fill%3D%22none%22%2F%3E%20%3Cpath%20d%3D%22M28%2C4H4A2%2C2%2C0%2C0%2C0%2C2%2C6V26a2%2C2%2C0%2C0%2C0%2C2%2C2H28a2%2C2%2C0%2C0%2C0%2C2-2V6A2%2C2%2C0%2C0%2C0%2C28%2C4Zm0%2C22H12V17.1h8.9l-2.5%2C2.5%2C1.5%2C1.5L25%2C16l-5.1-5.1-1.5%2C1.5%2C2.5%2C2.5H12V6H28Z%22%2F%3E%3C%2Fsvg%3E",disabled:r});case f.TOOLBAR_CLOSE_PALETTE:return h.default.createElement(p.default,{src:"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22currentColor%22%3E%20%3Crect%20width%3D%2232%22%20height%3D%2232%22%20fill%3D%22none%22%2F%3E%20%3Cpath%20d%3D%22M28%2C4H4A2%2C2%2C0%2C0%2C0%2C2%2C6V26a2%2C2%2C0%2C0%2C0%2C2%2C2H28a2%2C2%2C0%2C0%2C0%2C2-2V6A2%2C2%2C0%2C0%2C0%2C28%2C4Zm0%2C11H19.1l2.5-2.5L20.1%2C11%2C15%2C16l5.1%2C5.1%2C1.5-1.5-2.5-2.5H28V26H12V6H28Z%22%2F%3E%3C%2Fsvg%3E",disabled:r});case f.TOOLBAR_TOGGLE_NOTIFICATION_PANEL:return h.default.createElement(p.default,{src:"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22currentColor%22%3E%20%3Cpath%20d%3D%22M27%2C12V27H5V5H20V3H5A2%2C2%2C0%2C0%2C0%2C3%2C5V27a2%2C2%2C0%2C0%2C0%2C2%2C2H27a2%2C2%2C0%2C0%2C0%2C2-2V12Z%22%2F%3E%20%3Ccircle%20class%3D%22dot%22%20cx%3D%2226.5%22%20cy%3D%225.5%22%20r%3D%223.5%22%2F%3E%3C%2Fsvg%3E",disabled:r});default:return null}}},{key:"generateLabel",value:function(e,t,r,a){var n="toolbar-icon-label";return n+=this.generateLabelType(r,a),n+=t?" disabled":"",h.default.createElement("div",{className:n},e)}},{key:"generateLabelType",value:function(e,t){return e?" overflow":"before"===t?" before":"after"===t?" after":""}},{key:"generateIcon",value:function(e){var t=this.getDefaultIcon(e);if(e.iconEnabled){var r=e.iconEnabled,a=e.iconDisabled||e.iconEnabled,n=e.enable?r:a,o="toolbar-icon-"+this.props.instanceId+" -"+e.action;t="string"==typeof n?h.default.createElement(p.default,{id:o,src:n,disabled:!e.enable}):n}return t?h.default.createElement("div",{className:"toolbar-icon"},t):null}},{key:"actionClickHandler",value:function(){this.props.toolbarActionHandler(this.props.actionObj.action)}},{key:"generateButton",value:function(e){var t=null,r=null;this.props.overflow?r=this.generateLabel(e.label,!e.enable,!0):"before"===e.incLabelWithIcon?t=this.generateLabel(e.label,!e.enable,!1,e.incLabelWithIcon):"after"===e.incLabelWithIcon&&(r=this.generateLabel(e.label,!e.enable,!1,e.incLabelWithIcon));var a=this.generateIcon(e),n=e.textContent?h.default.createElement("div",{className:"toolbar-text-content"}," ",e.textContent," "):null,o=u.classNames("toolbar-item-content",e.className?e.className:null,{overflow:this.props.overflow,disabled:!e.enable,default:!e.kind}),l=e.kind||"ghost",i=h.default.createElement("div",{className:o},t,a,r,n);return i=this.wrapInTooltip(i),i=h.default.createElement(s.Button,{kind:l,onClick:this.actionClickHandler,disabled:!e.enable,onFocus:this.props.onFocus,"aria-label":e.label},i)}},{key:"generateActionName",value:function(e){return this.props.actionObj.action+"-action"}},{key:"wrapInTooltip",value:function(e){if(!this.props.overflow&&(this.showLabelAsTip(this.props.actionObj)||this.props.actionObj.tooltip)){var t=this.generateActionName(),r=this.props.actionObj.tooltip?this.props.actionObj.tooltip:this.props.actionObj.label,a=t+"-"+this.props.instanceId+"-tooltip",n=!!this.props.actionObj.enable&&this.props.actionObj.enable;return h.default.createElement(i,{id:a,tip:r,disable:!n,className:"icon-tooltip"},e)}return e}},{key:"showLabelAsTip",value:function(e){return!!e.label&&("before"!==e.incLabelWithIcon&&"after"!==e.incLabelWithIcon)}},{key:"render",value:function(){var e=this.props.actionObj,t=this.generateActionName(),r=null;r=e.jsx?this.wrapInTooltip(e.jsx):this.generateButton(e);var a=!this.props.overflow||null,n=e.kind?e.kind:"default",o=u.classNames({"toolbar-overflow-menu-item":this.props.overflow,"toolbar-item":!this.props.overflow&&!e.jsx,"toolbar-jsx-item":!this.props.overflow&&e.jsx,"toolbar-overflow-jsx-item":this.props.overflow&&e.jsx,"toolbar-item-selected":e.isSelected},n,t);return h.default.createElement("div",{className:o,"data-toolbar-item":a},r)}}]),n}(h.default.Component);function _(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=a._getPrototypeOf(e);if(t){var o=a._getPrototypeOf(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return a._possibleConstructorReturn(this,r)}}var D=function(e){a._inherits(n,e);var t=_(n);function n(e){var o;return r._classCallCheck(this,n),(o=t.call(this,e)).toggleExtendedMenu=o.toggleExtendedMenu.bind(a._assertThisInitialized(o)),o}return r._createClass(n,[{key:"toggleExtendedMenu",value:function(){this.props.toggleExtendedMenu(this.props.index)}},{key:"render",value:function(){var e=this.props.showExtendedMenu?this.props.generateExtensionMenuItems(this.props.index):[],t=this.props.showExtendedMenu?"":"toolbar-popover-list-hide",r=null;e.length>0&&(r=h.default.createElement("div",{className:"toolbar-popover-list "+t},e));var a="toolbar-spacer toolbar-index-"+this.props.index;return h.default.createElement("div",{className:a},h.default.createElement("div",{className:"toolbar-overflow-item"},h.default.createElement(s.Button,{kind:"ghost",onClick:this.toggleExtendedMenu,onFocus:this.props.onFocus,"aria-label":this.props.label},h.default.createElement("div",{className:"toolbar-item-content default"},h.default.createElement("div",{className:"toolbar-icon"},h.default.createElement(d.OverflowMenuVertical16,null))))),r)}}]),n}(h.default.Component);function k(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=a._getPrototypeOf(e);if(t){var o=a._getPrototypeOf(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return a._possibleConstructorReturn(this,r)}}var L=function(e){a._inherits(n,e);var t=k(n);function n(){return r._classCallCheck(this,n),t.apply(this,arguments)}return r._createClass(n,[{key:"render",value:function(){var e=this.props.overflow?"toolbar-divider-overflow":"toolbar-divider";return h.default.createElement("div",{className:e,"data-toolbar-item":!0,tabIndex:-1,"aria-hidden":!0}," ")}}]),n}(h.default.Component);function M(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=a._getPrototypeOf(e);if(t){var o=a._getPrototypeOf(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return a._possibleConstructorReturn(this,r)}}var N=function(e){a._inherits(o,e);var n=M(o);function o(e){var t;return r._classCallCheck(this,o),(t=n.call(this,e)).state={showExtendedMenuIndex:-1},t.leftBar=[],t.rightBar=[],t.onFocus=t.onFocus.bind(a._assertThisInitialized(t)),t.onToolbarResize=t.onToolbarResize.bind(a._assertThisInitialized(t)),t.toggleExtendedMenu=t.toggleExtendedMenu.bind(a._assertThisInitialized(t)),t.generateExtensionMenuItems=t.generateExtensionMenuItems.bind(a._assertThisInitialized(t)),t}return r._createClass(o,[{key:"onFocus",value:function(){this.setLeftBarItemsTabIndex(),this.setRightBarItemsTabIndex()}},{key:"onScroll",value:function(e){e.currentTarget.scroll(0,0),e.preventDefault()}},{key:"onToolbarResize",value:function(){this.state.showExtendedMenuIndex>-1&&this.setState({showExtendedMenuIndex:-1}),this.setLeftBarItemsTabIndex(),this.setRightBarItemsTabIndex()}},{key:"setLeftBarItemsTabIndex",value:function(){var e=this.getBar("left");if(e){for(var t=e.querySelectorAll("[data-toolbar-item=true]")||[],r=this.getTopOfFirstOverflowItem(e),a=-1,n=0;n<t.length;n++){var o=t[n].getBoundingClientRect();this.setOverflowItemButtonTabIndex(n,-1,e),o.top===r?(a=n,this.setToolbarItemButtonTabIndex(t[n],0)):this.setToolbarItemButtonTabIndex(t[n],-1)}a<t.length&&this.setOverflowItemButtonTabIndex(a+1,0,e)}}},{key:"setRightBarItemsTabIndex",value:function(){for(var e=this.getRightBarItems(),t=0,r=0;r<e.length;r++){var a=e[r].getBoundingClientRect();0===r&&(t=a.top),a.top===t?this.setToolbarItemButtonTabIndex(e[r],0):this.setToolbarItemButtonTabIndex(e[r],-1)}}},{key:"getBar",value:function(e){var t=this.props.instanceId;return document.querySelector(".toolbar-div[instanceid='".concat(t,"'] > .toolbar-").concat(e,"-bar"))||[]}},{key:"getRightBarItems",value:function(){var e=this.getBar("right");return e&&e.querySelectorAll("[data-toolbar-item=true]")||[]}},{key:"getTopOfFirstOverflowItem",value:function(e){var t=this.getOverflowItem(0,e);return t?t.getBoundingClientRect().top:0}},{key:"getOverflowItem",value:function(e,t){var r="toolbar-index-"+e;return t.getElementsByClassName(r)[0]}},{key:"setToolbarItemButtonTabIndex",value:function(e,t){var r=e.querySelector("button");r&&r.setAttribute("tabindex",t)}},{key:"setOverflowItemButtonTabIndex",value:function(e,t,r){var a=this.getOverflowItem(e,r);if(a){var n=a.querySelector("button");n&&n.setAttribute("tabindex",t)}}},{key:"generateToolbarItems",value:function(e,t,r){for(var a=[],n=0;n<e.length;n++){var o=e[n];o&&(r&&!o.divider&&a.push(this.generateOverflowIcon(n)),a.push(this.generateToolbarItem(o,n,t)))}return a}},{key:"generateToolbarItem",value:function(e,t,r){var a=null;return e&&(a=e.divider?h.default.createElement(L,{key:"toolbar-item-key-"+t,overflow:r}):h.default.createElement(F,{key:"toolbar-item-key-"+t,actionObj:e,toolbarActionHandler:this.props.toolbarActionHandler,overflow:r,instanceId:this.props.instanceId,onFocus:this.onFocus})),a}},{key:"generateOverflowIcon",value:function(e){var t=this.props.additionalText?this.props.additionalText.overflowMenuLabel:"";return h.default.createElement(D,{key:"toolbar-overflow-item-key-"+e,index:e,showExtendedMenu:this.state.showExtendedMenuIndex===e,toggleExtendedMenu:this.toggleExtendedMenu,generateExtensionMenuItems:this.generateExtensionMenuItems,onFocus:this.onFocus,label:t})}},{key:"generateExtensionMenuItems",value:function(e){var t=this.generateRightOverflowItems();t.reverse();var r=this.leftBar.slice(e).concat(t);return this.generateToolbarItems(r,!0,!1)}},{key:"generateRightOverflowItems",value:function(){for(var e=[],t=this.getRightBarItems(),r=0,a=0;a<t.length;a++){var n=t[a].getBoundingClientRect();0===a&&(r=n.top),n.top!==r&&e.push(this.rightBar[a])}return e}},{key:"toggleExtendedMenu",value:function(e){var t=e===this.state.showExtendedMenuIndex?-1:e;this.setState({showExtendedMenuIndex:t})}},{key:"render",value:function(){this.leftBar=this.props.config.leftBar||[],this.rightBar=this.props.config.rightBar||[],this.rightBar=t._toConsumableArray(this.rightBar).reverse()||[];var e=this.generateToolbarItems(this.leftBar,!1,!0),r=this.generateToolbarItems(this.rightBar,!1,!1);return h.default.createElement("section",{"aria-label":this.props.intl.formatMessage({id:"toolbar.label",defaultMessage:A["toolbar.label"]}),role:"toolbar"},h.default.createElement(v.default,{handleWidth:!0,onResize:this.onToolbarResize},h.default.createElement("div",{className:"toolbar-div",instanceid:this.props.instanceId},h.default.createElement("div",{className:"toolbar-left-bar",onScroll:this.onScroll},e),h.default.createElement("div",{className:"toolbar-right-bar"},r))))}}]),o}(h.default.Component),H=o.injectIntl(N);exports.Toolbar=H,exports.defaultToolbarMessages=A,exports.toNumber_1=B;
|
|
2
|
-
//# sourceMappingURL=toolbar-1c181339.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar-1c181339.js","sources":["../node_modules/lodash/_trimmedEndIndex.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/toNumber.js","../src/toolbar/toolbar-action-item.jsx","../assets/images/zoom_to_fit.svg","../assets/images/arrange_horizontally.svg","../assets/images/arrange_vertically.svg","../assets/images/palette/palette_open.svg","../assets/images/palette/palette_close.svg","../assets/images/notification_counter_icon.svg","../src/toolbar/toolbar-overflow-item.jsx","../src/toolbar/toolbar-divider-item.jsx","../src/toolbar/toolbar.jsx"],"sourcesContent":["/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","/*\n * Copyright 2017-2022 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Tooltip from \"../tooltip/tooltip.jsx\";\nimport ArrangeHorizontally from \"./../../assets/images/arrange_horizontally.svg\";\nimport ArrangeVertically from \"./../../assets/images/arrange_vertically.svg\";\nimport ToggleNotificationPanel from \"./../../assets/images/notification_counter_icon.svg\";\nimport PaletteClose from \"./../../assets/images/palette/palette_close.svg\";\nimport PaletteOpen from \"./../../assets/images/palette/palette_open.svg\";\nimport ZoomToFit from \"./../../assets/images/zoom_to_fit.svg\";\n\nimport { Button } from \"carbon-components-react\";\nimport SVG from \"react-inlinesvg\";\nimport classNames from \"classnames\";\nimport { StopFilledAlt16, Play16, Undo16, Redo16, Cut16, Copy16, Paste16,\n\tAddComment16, TrashCan16, ZoomIn16, ZoomOut16 } from \"@carbon/icons-react\";\nimport { TOOLBAR_STOP, TOOLBAR_RUN, TOOLBAR_UNDO, TOOLBAR_REDO, TOOLBAR_CUT,\n\tTOOLBAR_COPY, TOOLBAR_PASTE, TOOLBAR_CREATE_AUTO_COMMENT,\n\tTOOLBAR_DELETE_SELECTED_OBJECTS, TOOLBAR_ZOOM_IN, TOOLBAR_ZOOM_OUT, TOOLBAR_ZOOM_FIT,\n\tTOOLBAR_ARRANGE_HORIZONALLY, TOOLBAR_ARRANGE_VERTICALLY, TOOLBAR_OPEN_PALETTE,\n\tTOOLBAR_CLOSE_PALETTE, TOOLBAR_TOGGLE_NOTIFICATION_PANEL }\n\tfrom \"../common-canvas/constants/canvas-constants.js\";\n\nclass ToolbarActionItem extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.actionClickHandler = this.actionClickHandler.bind(this);\n\t}\n\n\t// Returns a default icon, if there is one, for the action passed in. The\n\t// icon may be overridden by the iconTypeOverride field if it is provided.\n\t// It also may be set to disabled state.\n\tgetDefaultIcon(actionObj) {\n\t\tconst iconType = actionObj.iconTypeOverride ? actionObj.iconTypeOverride : actionObj.action;\n\t\tconst disabled = !actionObj.enable;\n\n\t\tswitch (iconType) {\n\t\tcase (TOOLBAR_STOP):\n\t\t\treturn <StopFilledAlt16 disabled={disabled} />;\n\t\tcase (TOOLBAR_RUN):\n\t\t\treturn <Play16 disabled={disabled} />;\n\t\tcase (TOOLBAR_UNDO):\n\t\t\treturn <Undo16 disabled={disabled} />;\n\t\tcase (TOOLBAR_REDO):\n\t\t\treturn <Redo16 disabled={disabled} />;\n\t\tcase (TOOLBAR_CUT):\n\t\t\treturn <Cut16 disabled={disabled} />;\n\t\tcase (TOOLBAR_COPY):\n\t\t\treturn <Copy16 disabled={disabled} />;\n\t\tcase (TOOLBAR_PASTE):\n\t\t\treturn <Paste16 disabled={disabled} />;\n\t\tcase (TOOLBAR_CREATE_AUTO_COMMENT):\n\t\t\treturn <AddComment16 disabled={disabled} />;\n\t\tcase (TOOLBAR_DELETE_SELECTED_OBJECTS):\n\t\t\treturn <TrashCan16 disabled={disabled} />;\n\t\tcase (TOOLBAR_ZOOM_IN):\n\t\t\treturn <ZoomIn16 disabled={disabled} />;\n\t\tcase (TOOLBAR_ZOOM_OUT):\n\t\t\treturn <ZoomOut16 disabled={disabled} />;\n\n\t\tcase (TOOLBAR_ZOOM_FIT):\n\t\t\treturn <SVG src={ZoomToFit} disabled={disabled} />;\n\t\tcase (TOOLBAR_ARRANGE_HORIZONALLY):\n\t\t\treturn <SVG src={ArrangeHorizontally} disabled={disabled} />;\n\t\tcase (TOOLBAR_ARRANGE_VERTICALLY):\n\t\t\treturn <SVG src={ArrangeVertically} disabled={disabled} />;\n\t\tcase (TOOLBAR_OPEN_PALETTE):\n\t\t\treturn <SVG src={PaletteOpen} disabled={disabled} />;\n\t\tcase (TOOLBAR_CLOSE_PALETTE):\n\t\t\treturn <SVG src={PaletteClose} disabled={disabled} />;\n\t\tcase (TOOLBAR_TOGGLE_NOTIFICATION_PANEL):\n\t\t\treturn <SVG src={ToggleNotificationPanel} disabled={disabled} />;\n\n\t\tdefault:\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tgenerateLabel(label, disable, overflow, incLabelWithIcon) {\n\t\tlet className = \"toolbar-icon-label\";\n\t\tclassName += this.generateLabelType(overflow, incLabelWithIcon);\n\t\tclassName += disable ? \" disabled\" : \"\";\n\t\treturn (<div className={className}>{label}</div>);\n\t}\n\n\tgenerateLabelType(overflow, inLabelWithIcon) {\n\t\tif (overflow) {\n\t\t\treturn \" overflow\";\n\t\t} else if (inLabelWithIcon === \"before\") {\n\t\t\treturn \" before\";\n\t\t} else if (inLabelWithIcon === \"after\") {\n\t\t\treturn \" after\";\n\t\t}\n\t\treturn \"\";\n\t}\n\n\tgenerateIcon(actionObj) {\n\t\tlet icon = this.getDefaultIcon(actionObj);\n\n\t\t// Host application provided icon. This will override any default icon.\n\t\tif (actionObj.iconEnabled) {\n\t\t\tconst iconEnabled = actionObj.iconEnabled;\n\t\t\tconst iconDisabled = actionObj.iconDisabled || actionObj.iconEnabled;\n\t\t\tconst customIcon = actionObj.enable ? iconEnabled : iconDisabled;\n\t\t\tconst id = \"toolbar-icon-\" + this.props.instanceId + \" -\" + actionObj.action;\n\n\t\t\tif (typeof customIcon === \"string\") {\n\t\t\t\ticon = (<SVG id={id} src={customIcon} disabled={!actionObj.enable} />);\n\t\t\t} else {\n\t\t\t\ticon = customIcon;\n\t\t\t}\n\t\t}\n\n\t\tif (icon) {\n\t\t\treturn (\n\t\t\t\t<div className={\"toolbar-icon\"}>\n\t\t\t\t\t{icon}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\n\tactionClickHandler() {\n\t\tthis.props.toolbarActionHandler(this.props.actionObj.action);\n\t}\n\n\tgenerateButton(actionObj) {\n\t\tlet labelBefore = null;\n\t\tlet labelAfter = null;\n\n\t\tif (this.props.overflow) {\n\t\t\tlabelAfter = this.generateLabel(actionObj.label, !actionObj.enable, true);\n\n\t\t} else if (actionObj.incLabelWithIcon === \"before\") {\n\t\t\tlabelBefore = this.generateLabel(actionObj.label, !actionObj.enable, false, actionObj.incLabelWithIcon);\n\n\t\t} else if (actionObj.incLabelWithIcon === \"after\") {\n\t\t\tlabelAfter = this.generateLabel(actionObj.label, !actionObj.enable, false, actionObj.incLabelWithIcon);\n\t\t}\n\n\t\tconst icon = this.generateIcon(actionObj);\n\t\tconst textContent = actionObj.textContent ? (<div className=\"toolbar-text-content\"> {actionObj.textContent} </div>) : null;\n\n\t\tconst itemContentClassName = classNames(\n\t\t\t\"toolbar-item-content\",\n\t\t\tactionObj.className ? actionObj.className : null,\n\t\t\t{ \"overflow\": this.props.overflow, \"disabled\": !actionObj.enable, \"default\": !actionObj.kind });\n\n\t\t// If no 'kind' is set, use ghost and then override colors using the \"default\" class in innerDivClassName.\n\t\tconst kind = actionObj.kind || \"ghost\";\n\n\t\tlet buttonContent = (\n\t\t\t<div className={itemContentClassName}>\n\t\t\t\t{labelBefore}\n\t\t\t\t{icon}\n\t\t\t\t{labelAfter}\n\t\t\t\t{textContent}\n\t\t\t</div>\n\t\t);\n\n\t\tbuttonContent = this.wrapInTooltip(buttonContent);\n\n\t\tbuttonContent = (\n\t\t\t<Button kind={kind}\n\t\t\t\tonClick={this.actionClickHandler}\n\t\t\t\tdisabled={!actionObj.enable}\n\t\t\t\tonFocus={this.props.onFocus}\n\t\t\t\taria-label={actionObj.label}\n\t\t\t>\n\t\t\t\t{buttonContent}\n\t\t\t</Button>\n\t\t);\n\n\t\treturn buttonContent;\n\t}\n\n\tgenerateActionName(actionObj) {\n\t\treturn this.props.actionObj.action + \"-action\";\n\t}\n\n\twrapInTooltip(content) {\n\t\tif (!this.props.overflow && (this.showLabelAsTip(this.props.actionObj) || this.props.actionObj.tooltip)) {\n\t\t\tconst actionName = this.generateActionName();\n\t\t\tconst tipText = this.props.actionObj.tooltip ? this.props.actionObj.tooltip : this.props.actionObj.label;\n\t\t\tconst tooltipId = actionName + \"-\" + this.props.instanceId + \"-tooltip\";\n\t\t\tconst enableTooltip = this.props.actionObj.enable ? this.props.actionObj.enable : false;\n\n\t\t\treturn (\n\t\t\t\t<Tooltip id={tooltipId} tip={tipText} disable={!enableTooltip} className=\"icon-tooltip\" >\n\t\t\t\t\t{content}\n\t\t\t\t</Tooltip>\n\t\t\t);\n\t\t}\n\t\treturn content;\n\t}\n\n\t// Returns true if the label should be shown as a tooltip or false if not.\n\t// We do not show the label as a tooltip if it is already shown in the\n\t// toolbar next to the icon (i.e. incLabelWithIcon is set to something).\n\tshowLabelAsTip(actionObj) {\n\t\tif (actionObj.label) {\n\t\t\tif (actionObj.incLabelWithIcon === \"before\" ||\n\t\t\t\t\tactionObj.incLabelWithIcon === \"after\") {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\trender() {\n\t\tconst actionObj = this.props.actionObj;\n\t\tconst actionName = this.generateActionName();\n\t\tlet divContent = null;\n\n\t\tif (actionObj.jsx) {\n\t\t\tdivContent = this.wrapInTooltip(actionObj.jsx);\n\t\t} else {\n\t\t\tdivContent = this.generateButton(actionObj);\n\t\t}\n\n\t\tconst isToolbarItem = this.props.overflow ? null : true; // null wil make data-toolbar-item be removed\n\t\tconst kindAsClass = actionObj.kind ? actionObj.kind : \"default\";\n\n\t\tconst itemClassName = classNames(\n\t\t\t{ \"toolbar-overflow-menu-item\": this.props.overflow,\n\t\t\t\t\"toolbar-item\": !this.props.overflow && !actionObj.jsx,\n\t\t\t\t\"toolbar-jsx-item\": !this.props.overflow && actionObj.jsx,\n\t\t\t\t\"toolbar-overflow-jsx-item\": this.props.overflow && actionObj.jsx,\n\t\t\t\t\"toolbar-item-selected\": actionObj.isSelected },\n\t\t\tkindAsClass,\n\t\t\tactionName);\n\n\t\treturn (\n\t\t\t<div className={itemClassName} data-toolbar-item={isToolbarItem}>\n\t\t\t\t{divContent}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nToolbarActionItem.propTypes = {\n\tactionObj: PropTypes.shape({\n\t\taction: PropTypes.string.isRequired,\n\t\tlabel: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object\n\t\t]),\n\t\tincLabelWithIcon: PropTypes.oneOf([\"no\", \"before\", \"after\"]),\n\t\tenable: PropTypes.bool,\n\t\ticonEnabled: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object\n\t\t]),\n\t\ticonDisabled: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object\n\t\t]),\n\t\tclassName: PropTypes.string,\n\t\ttextContent: PropTypes.string,\n\t\ticonTypeOverride: PropTypes.string,\n\t\tisSelected: PropTypes.bool,\n\t\tkind: PropTypes.string,\n\t\tjsx: PropTypes.object,\n\t\ttooltip: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object\n\t\t])\n\t}),\n\ttoolbarActionHandler: PropTypes.func.isRequired,\n\tinstanceId: PropTypes.number.isRequired,\n\toverflow: PropTypes.bool,\n\tonFocus: PropTypes.func\n};\n\nexport default ToolbarActionItem;\n","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22currentColor%22%3E%20%3Cpath%20d%3D%22M6%2C7.5h4v1H6Z%22%2F%3E%20%3Cpath%20d%3D%22M4%2C12h8a.94.94%2C0%2C0%2C0%2C1-1V5a.94.94%2C0%2C0%2C0-1-1H4A.94.94%2C0%2C0%2C0%2C3%2C5v6A.94.94%2C0%2C0%2C0%2C4%2C12ZM4%2C5h8v6H4Z%22%2F%3E%20%3Cpolygon%20points%3D%222%203.5%201%203.5%201%201%203.5%201%203.5%202%202%202%202%203.5%22%2F%3E%20%3Cpolygon%20points%3D%2215%203.5%2014%203.5%2014%202%2012.5%202%2012.5%201%2015%201%2015%203.5%22%2F%3E%20%3Cpolygon%20points%3D%2215%2015%2012.5%2015%2012.5%2014%2014%2014%2014%2012.5%2015%2012.5%2015%2015%22%2F%3E%20%3Cpolygon%20points%3D%223.5%2015%201%2015%201%2012.5%202%2012.5%202%2014%203.5%2014%203.5%2015%22%2F%3E%3C%2Fsvg%3E\"","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Crect%20x%3D%221.5%22%20y%3D%222%22%20width%3D%2213%22%20height%3D%221%22%2F%3E%3Crect%20x%3D%221.5%22%20y%3D%2213%22%20width%3D%2213%22%20height%3D%221%22%2F%3E%3Cpath%20d%3D%22M7%2C10.5H2a.47.47%2C0%2C0%2C1-.5-.5V6A.47.47%2C0%2C0%2C1%2C2%2C5.5H7a.47.47%2C0%2C0%2C1%2C.5.5v4A.47.47%2C0%2C0%2C1%2C7%2C10.5Zm-4.5-1h4v-3h-4Z%22%2F%3E%3Cpath%20d%3D%22M14%2C10.5H9a.47.47%2C0%2C0%2C1-.5-.5V6A.47.47%2C0%2C0%2C1%2C9%2C5.5h5a.47.47%2C0%2C0%2C1%2C.5.5v4A.47.47%2C0%2C0%2C1%2C14%2C10.5Zm-4.5-1h4v-3h-4Z%22%2F%3E%3C%2Fsvg%3E\"","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Crect%20x%3D%222%22%20y%3D%221.5%22%20width%3D%221%22%20height%3D%2213%22%2F%3E%3Crect%20x%3D%2213%22%20y%3D%221.5%22%20width%3D%221%22%20height%3D%2213%22%2F%3E%3Cpath%20d%3D%22M10.5%2C7.5h-5A.47.47%2C0%2C0%2C1%2C5%2C7V3a.47.47%2C0%2C0%2C1%2C.5-.5h5A.47.47%2C0%2C0%2C1%2C11%2C3V7A.47.47%2C0%2C0%2C1%2C10.5%2C7.5ZM6%2C6.5h4v-3H6Z%22%2F%3E%3Cpath%20d%3D%22M10.5%2C13.5h-5A.47.47%2C0%2C0%2C1%2C5%2C13V9a.47.47%2C0%2C0%2C1%2C.5-.5h5A.47.47%2C0%2C0%2C1%2C11%2C9v4A.47.47%2C0%2C0%2C1%2C10.5%2C13.5ZM6%2C12.5h4v-3H6Z%22%2F%3E%3C%2Fsvg%3E\"","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22currentColor%22%3E%20%3Crect%20width%3D%2232%22%20height%3D%2232%22%20fill%3D%22none%22%2F%3E%20%3Cpath%20d%3D%22M28%2C4H4A2%2C2%2C0%2C0%2C0%2C2%2C6V26a2%2C2%2C0%2C0%2C0%2C2%2C2H28a2%2C2%2C0%2C0%2C0%2C2-2V6A2%2C2%2C0%2C0%2C0%2C28%2C4Zm0%2C22H12V17.1h8.9l-2.5%2C2.5%2C1.5%2C1.5L25%2C16l-5.1-5.1-1.5%2C1.5%2C2.5%2C2.5H12V6H28Z%22%2F%3E%3C%2Fsvg%3E\"","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22currentColor%22%3E%20%3Crect%20width%3D%2232%22%20height%3D%2232%22%20fill%3D%22none%22%2F%3E%20%3Cpath%20d%3D%22M28%2C4H4A2%2C2%2C0%2C0%2C0%2C2%2C6V26a2%2C2%2C0%2C0%2C0%2C2%2C2H28a2%2C2%2C0%2C0%2C0%2C2-2V6A2%2C2%2C0%2C0%2C0%2C28%2C4Zm0%2C11H19.1l2.5-2.5L20.1%2C11%2C15%2C16l5.1%2C5.1%2C1.5-1.5-2.5-2.5H28V26H12V6H28Z%22%2F%3E%3C%2Fsvg%3E\"","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22currentColor%22%3E%20%3Cpath%20d%3D%22M27%2C12V27H5V5H20V3H5A2%2C2%2C0%2C0%2C0%2C3%2C5V27a2%2C2%2C0%2C0%2C0%2C2%2C2H27a2%2C2%2C0%2C0%2C0%2C2-2V12Z%22%2F%3E%20%3Ccircle%20class%3D%22dot%22%20cx%3D%2226.5%22%20cy%3D%225.5%22%20r%3D%223.5%22%2F%3E%3C%2Fsvg%3E\"","/*\n * Copyright 2017-2022 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { Button } from \"carbon-components-react\";\nimport { OverflowMenuVertical16 } from \"@carbon/icons-react\";\n\nclass ToolbarOverflowItem extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.toggleExtendedMenu = this.toggleExtendedMenu.bind(this);\n\t}\n\n\ttoggleExtendedMenu() {\n\t\tthis.props.toggleExtendedMenu(this.props.index);\n\t}\n\n\trender() {\n\t\tconst menuItems = this.props.showExtendedMenu ? this.props.generateExtensionMenuItems(this.props.index) : [];\n\t\tconst subMenuClassName = this.props.showExtendedMenu ? \"\" : \"toolbar-popover-list-hide\";\n\n\t\tlet overflowMenu = null;\n\t\tif (menuItems.length > 0) {\n\t\t\toverflowMenu = (\n\t\t\t\t<div className={\"toolbar-popover-list \" + subMenuClassName}>\n\t\t\t\t\t{menuItems}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\tconst className = \"toolbar-spacer toolbar-index-\" + this.props.index;\n\n\t\treturn (\n\t\t\t<div className={className} >\n\t\t\t\t<div className={\"toolbar-overflow-item\"}>\n\t\t\t\t\t<Button kind=\"ghost\"\n\t\t\t\t\t\tonClick={this.toggleExtendedMenu}\n\t\t\t\t\t\tonFocus={this.props.onFocus}\n\t\t\t\t\t\taria-label={this.props.label}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"toolbar-item-content default\">\n\t\t\t\t\t\t\t<div className=\"toolbar-icon\">\n\t\t\t\t\t\t\t\t<OverflowMenuVertical16 />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t\t{overflowMenu}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nToolbarOverflowItem.propTypes = {\n\tshowExtendedMenu: PropTypes.bool.isRequired,\n\ttoggleExtendedMenu: PropTypes.func.isRequired,\n\tindex: PropTypes.number.isRequired,\n\tgenerateExtensionMenuItems: PropTypes.func,\n\tonFocus: PropTypes.func,\n\tlabel: PropTypes.string\n};\n\nexport default ToolbarOverflowItem;\n","/*\n * Copyright 2017-2022 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nclass ToolbarDividerItem extends React.Component {\n\n\trender() {\n\t\tconst dividerClassName = this.props.overflow ? \"toolbar-divider-overflow\" : \"toolbar-divider\";\n\n\t\t// Add a space as content. When using display: inline-block the div needs\n\t\t// some content so it is displayed inline with the other elements of the\n\t\t// toolbar. With no content it is displayed above (!) the other elements.\n\t\treturn (\n\t\t\t<div className={dividerClassName} data-toolbar-item tabIndex={-1} aria-hidden > </div>\n\t\t);\n\t}\n}\n\nToolbarDividerItem.propTypes = {\n\toverflow: PropTypes.bool\n};\n\nexport default ToolbarDividerItem;\n","/*\n * Copyright 2017-2022 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { injectIntl } from \"react-intl\";\nimport PropTypes from \"prop-types\";\nimport defaultMessages from \"../../locales/toolbar/locales/en.json\";\nimport ReactResizeDetector from \"react-resize-detector\";\n\nimport ToolbarActionItem from \"./toolbar-action-item.jsx\";\nimport ToolbarOverflowItem from \"./toolbar-overflow-item.jsx\";\nimport ToolbarDividerItem from \"./toolbar-divider-item.jsx\";\n\nclass Toolbar extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tshowExtendedMenuIndex: -1\n\t\t};\n\n\t\tthis.leftBar = [];\n\t\tthis.rightBar = [];\n\n\t\tthis.onFocus = this.onFocus.bind(this);\n\t\tthis.onToolbarResize = this.onToolbarResize.bind(this);\n\t\tthis.toggleExtendedMenu = this.toggleExtendedMenu.bind(this);\n\t\tthis.generateExtensionMenuItems = this.generateExtensionMenuItems.bind(this);\n\t}\n\n\t// When the toolbar is initially opened the tabindex for each element may not\n\t// be set correctly because of the time it takes to initially render the DOM.\n\t// Typically, this means the tabindex is not set correctly on whichever\n\t// overflow menu icon is displayed. Therefore, as the user moves the focus\n\t// to the first element in the toolbar (whose tabindex IS typically OK) we\n\t// set the tabindex for all elements again, this then sets the overflow\n\t// icon's tabindex correctly.\n\tonFocus() {\n\t\tthis.setLeftBarItemsTabIndex();\n\t\tthis.setRightBarItemsTabIndex();\n\t}\n\n\t// Prevents the inline-block elements of the left bar being scrolled to\n\t// reveal the wrapped elements, when the user tabs through the elements.\n\tonScroll(evt) {\n\t\tevt.currentTarget.scroll(0, 0);\n\t\tevt.preventDefault();\n\t}\n\n\t// Close the overflow menu, if it is open, when the toolbar is resized in\n\t// case a new menu needs to be displayed with the new toolbar width.\n\tonToolbarResize() {\n\t\tif (this.state.showExtendedMenuIndex > -1) {\n\t\t\tthis.setState({ showExtendedMenuIndex: -1 });\n\t\t}\n\n\t\tthis.setLeftBarItemsTabIndex();\n\t\tthis.setRightBarItemsTabIndex();\n\t}\n\n\t// Sets the tabindex on all left bar items so tabbing works correctly. This\n\t// falls into two parts: 1. Set the tabindex for all overflow items to -1\n\t// except the overflow item that is displayed (if there is one). 2. Set the\n\t// tabindex of all hidden regular toolbar items to -1 and to 0 for all\n\t// displayed regular toolbar items.\n\t// Note: We detect the y coordinate of the 'top row' by using the top of\n\t// the first overflow icon. This is because the toolbar might be compressed\n\t// to the extent that the first overflow icon is the only item on the left\n\t// of the toolbar.\n\tsetLeftBarItemsTabIndex() {\n\t\tconst bar = this.getBar(\"left\");\n\t\tif (!bar) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst items = bar.querySelectorAll(\"[data-toolbar-item=true]\") || [];\n\t\tconst topRow = this.getTopOfFirstOverflowItem(bar);\n\t\tlet lastTopRowElement = -1;\n\n\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\tconst itemRect = items[i].getBoundingClientRect();\n\n\t\t\tthis.setOverflowItemButtonTabIndex(i, -1, bar);\n\n\t\t\tif (itemRect.top === topRow) {\n\t\t\t\tlastTopRowElement = i;\n\t\t\t\tthis.setToolbarItemButtonTabIndex(items[i], 0);\n\t\t\t} else {\n\t\t\t\tthis.setToolbarItemButtonTabIndex(items[i], -1);\n\t\t\t}\n\t\t}\n\n\t\tif (lastTopRowElement < items.length) {\n\t\t\tthis.setOverflowItemButtonTabIndex(lastTopRowElement + 1, 0, bar);\n\t\t}\n\t}\n\n\t// Sets the tabindex on all right bar items so tabbing works correctly. This\n\t// involves setting the tabindex of all hidden regular toolbar items to -1\n\t// and to 0 for all displayed regular toolbar items.\n\tsetRightBarItemsTabIndex() {\n\t\tconst items = this.getRightBarItems();\n\t\tlet topRow = 0;\n\n\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\tconst itemRect = items[i].getBoundingClientRect();\n\n\t\t\tif (i === 0) {\n\t\t\t\ttopRow = itemRect.top;\n\t\t\t}\n\n\t\t\tif (itemRect.top === topRow) {\n\t\t\t\tthis.setToolbarItemButtonTabIndex(items[i], 0);\n\t\t\t} else {\n\t\t\t\tthis.setToolbarItemButtonTabIndex(items[i], -1);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetBar(side) {\n\t\tconst id = this.props.instanceId;\n\t\tconst part = document.querySelector(`.toolbar-div[instanceid='${id}'] > .toolbar-${side}-bar`) || [];\n\t\treturn part;\n\t}\n\n\tgetRightBarItems() {\n\t\tconst bar = this.getBar(\"right\");\n\t\tif (!bar) {\n\t\t\treturn [];\n\t\t}\n\t\treturn bar.querySelectorAll(\"[data-toolbar-item=true]\") || [];\n\t}\n\n\tgetTopOfFirstOverflowItem(bar) {\n\t\tconst firstOverflowItem = this.getOverflowItem(0, bar);\n\t\tif (firstOverflowItem) {\n\t\t\tconst rect = firstOverflowItem.getBoundingClientRect();\n\t\t\treturn rect.top;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tgetOverflowItem(index, bar) {\n\t\tconst overflowClassName = \"toolbar-index-\" + index;\n\t\treturn bar.getElementsByClassName(overflowClassName)[0];\n\t}\n\n\tsetToolbarItemButtonTabIndex(item, tabIndex) {\n\t\tconst button = item.querySelector(\"button\");\n\t\tif (button) {\n\t\t\tbutton.setAttribute(\"tabindex\", tabIndex);\n\t\t}\n\t}\n\n\tsetOverflowItemButtonTabIndex(index, tabIndex, bar) {\n\t\tconst overflowItem = this.getOverflowItem(index, bar);\n\t\tif (overflowItem) {\n\t\t\tconst overflowButton = overflowItem.querySelector(\"button\");\n\t\t\tif (overflowButton) {\n\t\t\t\toverflowButton.setAttribute(\"tabindex\", tabIndex);\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateToolbarItems(actionDefinitions, overflow, withSpacer) {\n\t\tconst newItems = [];\n\n\t\tfor (let i = 0; i < actionDefinitions.length; i++) {\n\t\t\tconst actionObj = actionDefinitions[i];\n\t\t\tif (actionObj) {\n\t\t\t\tif (withSpacer && !actionObj.divider) {\n\t\t\t\t\tnewItems.push(this.generateOverflowIcon(i));\n\t\t\t\t}\n\t\t\t\tnewItems.push(this.generateToolbarItem(actionObj, i, overflow));\n\t\t\t}\n\t\t}\n\t\treturn newItems;\n\t}\n\n\tgenerateToolbarItem(actionObj, i, overflow) {\n\t\tlet jsx = null;\n\t\tif (actionObj) {\n\t\t\tif (actionObj.divider) {\n\t\t\t\tjsx = (\n\t\t\t\t\t<ToolbarDividerItem\n\t\t\t\t\t\tkey={\"toolbar-item-key-\" + i}\n\t\t\t\t\t\toverflow={overflow}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tjsx = (\n\t\t\t\t\t<ToolbarActionItem\n\t\t\t\t\t\tkey={\"toolbar-item-key-\" + i}\n\t\t\t\t\t\tactionObj={actionObj}\n\t\t\t\t\t\ttoolbarActionHandler={this.props.toolbarActionHandler}\n\t\t\t\t\t\toverflow={overflow}\n\t\t\t\t\t\tinstanceId={this.props.instanceId}\n\t\t\t\t\t\tonFocus={this.onFocus}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn jsx;\n\t}\n\n\tgenerateOverflowIcon(index) {\n\t\tconst label = this.props.additionalText ? this.props.additionalText.overflowMenuLabel : \"\";\n\t\tconst jsx = (\n\t\t\t<ToolbarOverflowItem\n\t\t\t\tkey={\"toolbar-overflow-item-key-\" + index}\n\t\t\t\tindex={index}\n\t\t\t\tshowExtendedMenu={this.state.showExtendedMenuIndex === index}\n\t\t\t\ttoggleExtendedMenu={this.toggleExtendedMenu}\n\t\t\t\tgenerateExtensionMenuItems={this.generateExtensionMenuItems}\n\t\t\t\tonFocus={this.onFocus}\n\t\t\t\tlabel={label}\n\t\t\t/>\n\t\t);\n\n\t\treturn jsx;\n\t}\n\n\t// Generates an array of action definition elements that correspond to the\n\t// hidden DOM items on the left and right of the toolbar. For any left bar\n\t// items we can use the leftIndex passed in to split the leftBar defintion\n\t// array, however for the right side we need to loop through the DOM items\n\t// and discover which is hidden and which is displayed.\n\tgenerateExtensionMenuItems(leftIndex) {\n\t\tconst rightItems = this.generateRightOverflowItems();\n\t\trightItems.reverse();\n\n\t\tconst overflowMenuBarItems = this.leftBar.slice(leftIndex).concat(rightItems);\n\t\tconst extensionItems = this.generateToolbarItems(overflowMenuBarItems, true, false);\n\t\treturn extensionItems;\n\t}\n\n\t// Generates an array of right side defintion items that correspond to\n\t// right side DOM items that are hidden.\n\tgenerateRightOverflowItems() {\n\t\tconst newDefItems = [];\n\t\tconst items = this.getRightBarItems();\n\t\tlet topRow = 0;\n\n\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\tconst rect = items[i].getBoundingClientRect();\n\n\t\t\tif (i === 0) {\n\t\t\t\ttopRow = rect.top;\n\t\t\t}\n\n\t\t\tif (rect.top !== topRow) {\n\t\t\t\tnewDefItems.push(this.rightBar[i]);\n\t\t\t}\n\t\t}\n\t\treturn newDefItems;\n\t}\n\n\ttoggleExtendedMenu(index) {\n\t\tconst newIndex = index === this.state.showExtendedMenuIndex ? -1 : index;\n\t\tthis.setState({ showExtendedMenuIndex: newIndex });\n\t}\n\n\trender() {\n\t\tthis.leftBar = this.props.config.leftBar || [];\n\t\tthis.rightBar = this.props.config.rightBar || [];\n\t\tthis.rightBar = [...this.rightBar].reverse() || [];\n\n\t\tconst leftItems = this.generateToolbarItems(this.leftBar, false, true);\n\t\tconst rightItems = this.generateToolbarItems(this.rightBar, false, false);\n\n\t\tconst canvasToolbar = (\n\t\t\t<section aria-label={this.props.intl.formatMessage({ id: \"toolbar.label\", defaultMessage: defaultMessages[\"toolbar.label\"] })} role=\"toolbar\">\n\t\t\t\t<ReactResizeDetector handleWidth onResize={this.onToolbarResize}>\n\t\t\t\t\t<div className=\"toolbar-div\" instanceid={this.props.instanceId}>\n\t\t\t\t\t\t<div className=\"toolbar-left-bar\" onScroll={this.onScroll}>\n\t\t\t\t\t\t\t{leftItems}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"toolbar-right-bar\">\n\t\t\t\t\t\t\t{rightItems}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</ReactResizeDetector>\n\t\t\t</section>\n\t\t);\n\t\treturn canvasToolbar;\n\t}\n}\n\nToolbar.propTypes = {\n\tintl: PropTypes.object.isRequired,\n\tconfig: PropTypes.object.isRequired,\n\tinstanceId: PropTypes.number,\n\ttoolbarActionHandler: PropTypes.func,\n\tadditionalText: PropTypes.object\n};\n\nexport default injectIntl(Toolbar);\n"],"names":["reWhitespace","trimmedEndIndex","string","index","length","test","charAt","reTrimStart","baseTrim","slice","replace","isObject","require$$1","isSymbol","require$$2","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","toNumber_1","value","other","valueOf","isBinary","props","_classCallCheck","_this","actionClickHandler","bind","actionObj","iconType","iconTypeOverride","action","disabled","enable","TOOLBAR_STOP","React","StopFilledAlt16","TOOLBAR_RUN","Play16","TOOLBAR_UNDO","Undo16","TOOLBAR_REDO","Redo16","TOOLBAR_CUT","Cut16","TOOLBAR_COPY","Copy16","TOOLBAR_PASTE","Paste16","TOOLBAR_CREATE_AUTO_COMMENT","AddComment16","TOOLBAR_DELETE_SELECTED_OBJECTS","TrashCan16","TOOLBAR_ZOOM_IN","ZoomIn16","TOOLBAR_ZOOM_OUT","ZoomOut16","TOOLBAR_ZOOM_FIT","SVG","src","TOOLBAR_ARRANGE_HORIZONALLY","TOOLBAR_ARRANGE_VERTICALLY","TOOLBAR_OPEN_PALETTE","TOOLBAR_CLOSE_PALETTE","TOOLBAR_TOGGLE_NOTIFICATION_PANEL","label","disable","overflow","incLabelWithIcon","className","this","generateLabelType","inLabelWithIcon","icon","getDefaultIcon","iconEnabled","iconDisabled","customIcon","id","instanceId","toolbarActionHandler","labelBefore","labelAfter","generateLabel","generateIcon","textContent","itemContentClassName","classNames","default","kind","buttonContent","wrapInTooltip","Button","onClick","onFocus","content","showLabelAsTip","tooltip","actionName","generateActionName","tipText","tooltipId","enableTooltip","Tooltip","tip","divContent","jsx","generateButton","isToolbarItem","kindAsClass","itemClassName","isSelected","Component","toggleExtendedMenu","menuItems","showExtendedMenu","generateExtensionMenuItems","subMenuClassName","overflowMenu","OverflowMenuVertical16","dividerClassName","tabIndex","Toolbar","state","showExtendedMenuIndex","leftBar","rightBar","onToolbarResize","setLeftBarItemsTabIndex","setRightBarItemsTabIndex","evt","currentTarget","scroll","preventDefault","setState","bar","getBar","items","querySelectorAll","topRow","getTopOfFirstOverflowItem","lastTopRowElement","i","itemRect","getBoundingClientRect","setOverflowItemButtonTabIndex","top","setToolbarItemButtonTabIndex","getRightBarItems","side","document","querySelector","firstOverflowItem","getOverflowItem","overflowClassName","getElementsByClassName","item","button","setAttribute","overflowItem","overflowButton","actionDefinitions","withSpacer","newItems","divider","push","generateOverflowIcon","generateToolbarItem","ToolbarDividerItem","key","ToolbarActionItem","additionalText","overflowMenuLabel","ToolbarOverflowItem","leftIndex","rightItems","generateRightOverflowItems","reverse","overflowMenuBarItems","concat","generateToolbarItems","newDefItems","rect","newIndex","config","_toConsumableArray","leftItems","intl","formatMessage","defaultMessage","defaultMessages","role","ReactResizeDetector","handleWidth","onResize","instanceid","onScroll","injectIntl"],"mappings":"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"}
|