@elyra/canvas 12.22.0 → 12.23.1

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.
Files changed (142) hide show
  1. package/dist/canvas-constants-09ffa4d4.js +2 -0
  2. package/dist/canvas-constants-09ffa4d4.js.map +1 -0
  3. package/dist/canvas-constants-ab55d0fd.js +2 -0
  4. package/dist/canvas-constants-ab55d0fd.js.map +1 -0
  5. package/dist/canvas-controller-3a399ae6.js +2 -0
  6. package/dist/canvas-controller-3a399ae6.js.map +1 -0
  7. package/dist/canvas-controller-c046093c.js +2 -0
  8. package/dist/canvas-controller-c046093c.js.map +1 -0
  9. package/dist/{canvas-logger-a0f1beaa.js → canvas-logger-3459dfc2.js} +2 -2
  10. package/dist/{canvas-logger-a0f1beaa.js.map → canvas-logger-3459dfc2.js.map} +1 -1
  11. package/dist/{canvas-logger-815781bb.js → canvas-logger-fa8cef5b.js} +2 -2
  12. package/dist/{canvas-logger-815781bb.js.map → canvas-logger-fa8cef5b.js.map} +1 -1
  13. package/dist/common-canvas-088c1a4b.js +2 -0
  14. package/dist/common-canvas-088c1a4b.js.map +1 -0
  15. package/dist/common-canvas-7676cc1b.js +2 -0
  16. package/dist/common-canvas-7676cc1b.js.map +1 -0
  17. package/dist/common-canvas.es.js +1 -1
  18. package/dist/common-canvas.es.js.map +1 -1
  19. package/dist/common-canvas.js +1 -1
  20. package/dist/common-canvas.js.map +1 -1
  21. package/dist/common-properties-9d77f8e1.js +2 -0
  22. package/dist/common-properties-9d77f8e1.js.map +1 -0
  23. package/dist/common-properties-a31de521.js +2 -0
  24. package/dist/common-properties-a31de521.js.map +1 -0
  25. package/dist/{createClass-6db89a23.js → createClass-72b049bc.js} +1 -1
  26. package/dist/createClass-72b049bc.js.map +1 -0
  27. package/dist/{createClass-32a0cf0f.js → createClass-d5cac0b7.js} +1 -1
  28. package/dist/createClass-d5cac0b7.js.map +1 -0
  29. package/dist/{datarecord-metadata-v3-schema-6b6384ff.js → datarecord-metadata-v3-schema-03db5d5d.js} +2 -2
  30. package/dist/{datarecord-metadata-v3-schema-6b6384ff.js.map → datarecord-metadata-v3-schema-03db5d5d.js.map} +1 -1
  31. package/dist/{datarecord-metadata-v3-schema-81228a9a.js → datarecord-metadata-v3-schema-07d7682c.js} +2 -2
  32. package/dist/{datarecord-metadata-v3-schema-81228a9a.js.map → datarecord-metadata-v3-schema-07d7682c.js.map} +1 -1
  33. package/dist/extends-87da7df3.js +7 -0
  34. package/dist/extends-87da7df3.js.map +1 -0
  35. package/dist/{extends-12382a72.js → extends-dc95dba8.js} +2 -2
  36. package/dist/extends-dc95dba8.js.map +1 -0
  37. package/dist/flexible-table-59ad2c83.js +2 -0
  38. package/dist/flexible-table-59ad2c83.js.map +1 -0
  39. package/dist/flexible-table-5c4fbb7b.js +2 -0
  40. package/dist/flexible-table-5c4fbb7b.js.map +1 -0
  41. package/dist/{getPrototypeOf-bf88242f.js → getPrototypeOf-4e282dd3.js} +1 -1
  42. package/dist/getPrototypeOf-4e282dd3.js.map +1 -0
  43. package/dist/{getPrototypeOf-a1c3fe64.js → getPrototypeOf-b3806813.js} +1 -1
  44. package/dist/getPrototypeOf-b3806813.js.map +1 -0
  45. package/dist/{icon-1ef0f3b9.js → icon-2c16236a.js} +2 -2
  46. package/dist/{icon-162ec1ee.js.map → icon-2c16236a.js.map} +1 -1
  47. package/dist/{icon-162ec1ee.js → icon-816af0e7.js} +2 -2
  48. package/dist/{icon-1ef0f3b9.js.map → icon-816af0e7.js.map} +1 -1
  49. package/dist/index-2f6be19d.js +2 -0
  50. package/dist/index-2f6be19d.js.map +1 -0
  51. package/dist/index-6f739fa1.js +2 -0
  52. package/dist/index-6f739fa1.js.map +1 -0
  53. package/dist/lib/canvas-controller.es.js +1 -1
  54. package/dist/lib/canvas-controller.js +1 -1
  55. package/dist/lib/canvas.es.js +1 -1
  56. package/dist/lib/canvas.js +1 -1
  57. package/dist/lib/command-stack.es.js +1 -1
  58. package/dist/lib/command-stack.es.js.map +1 -1
  59. package/dist/lib/command-stack.js +1 -1
  60. package/dist/lib/command-stack.js.map +1 -1
  61. package/dist/lib/context-menu.es.js +1 -1
  62. package/dist/lib/context-menu.es.js.map +1 -1
  63. package/dist/lib/context-menu.js +1 -1
  64. package/dist/lib/context-menu.js.map +1 -1
  65. package/dist/lib/properties/field-picker.es.js +1 -1
  66. package/dist/lib/properties/field-picker.js +1 -1
  67. package/dist/lib/properties/flexible-table.es.js +1 -1
  68. package/dist/lib/properties/flexible-table.js +1 -1
  69. package/dist/lib/properties.es.js +1 -1
  70. package/dist/lib/properties.js +1 -1
  71. package/dist/lib/tooltip.es.js +1 -1
  72. package/dist/lib/tooltip.es.js.map +1 -1
  73. package/dist/lib/tooltip.js +1 -1
  74. package/dist/lib/tooltip.js.map +1 -1
  75. package/dist/styles/common-canvas.min.css +1 -1
  76. package/dist/styles/common-canvas.min.css.map +1 -1
  77. package/dist/{toolbar-bb5bee87.js → toolbar-2ef99bd8.js} +2 -2
  78. package/dist/{toolbar-59ce5251.js.map → toolbar-2ef99bd8.js.map} +1 -1
  79. package/dist/{toolbar-59ce5251.js → toolbar-cb967e26.js} +2 -2
  80. package/dist/{toolbar-bb5bee87.js.map → toolbar-cb967e26.js.map} +1 -1
  81. package/locales/common-properties/locales/en.json +2 -0
  82. package/package.json +1 -1
  83. package/src/common-canvas/cc-contents.jsx +14 -2
  84. package/src/common-canvas/constants/canvas-constants.js +1 -0
  85. package/src/common-canvas/svg-canvas-d3.js +8 -0
  86. package/src/common-canvas/svg-canvas-d3.scss +11 -1
  87. package/src/common-canvas/svg-canvas-renderer.js +176 -132
  88. package/src/common-canvas/svg-canvas-utils-decs.js +4 -3
  89. package/src/common-canvas/svg-canvas-utils-textarea.js +19 -5
  90. package/src/common-properties/components/editor-form/editor-form.jsx +6 -8
  91. package/src/common-properties/components/flexible-table/flexible-table.scss +1 -0
  92. package/src/common-properties/components/virtualized-table/virtualized-table.jsx +38 -34
  93. package/src/common-properties/components/virtualized-table/virtualized-table.scss +17 -0
  94. package/src/common-properties/constants/constants.js +3 -0
  95. package/src/common-properties/controls/expression/expression-builder/expression-select-field-function.jsx +25 -18
  96. package/src/common-properties/controls/expression/expressionInfo-parser.js +11 -0
  97. package/src/common-properties/controls/passwordfield/passwordfield.jsx +2 -2
  98. package/src/common-properties/controls/toggle/toggle.jsx +1 -3
  99. package/src/common-properties/controls/toggle/toggle.scss +7 -4
  100. package/src/common-properties/form/EditorForm.js +4 -2
  101. package/src/common-properties/ui-conditions/ui-conditions-parser.js +1 -1
  102. package/src/common-properties/ui-conditions/ui-groups-parser.js +1 -1
  103. package/src/common-properties/util/property-utils.js +3 -0
  104. package/src/context-menu/common-context-menu.jsx +7 -0
  105. package/src/context-menu/context-menu-wrapper.jsx +30 -15
  106. package/src/object-model/api-pipeline.js +6 -9
  107. package/src/object-model/layout-dimensions.js +6 -6
  108. package/src/object-model/pipeline-out-handler.js +1 -1
  109. package/src/object-model/redux/reducers/canvasinfo.js +0 -1
  110. package/src/object-model/redux/reducers/nodes.js +0 -9
  111. package/stats.html +1 -1
  112. package/dist/canvas-constants-34cdb7df.js +0 -2
  113. package/dist/canvas-constants-34cdb7df.js.map +0 -1
  114. package/dist/canvas-constants-3c09c7f6.js +0 -2
  115. package/dist/canvas-constants-3c09c7f6.js.map +0 -1
  116. package/dist/canvas-controller-ccb05f9f.js +0 -2
  117. package/dist/canvas-controller-ccb05f9f.js.map +0 -1
  118. package/dist/canvas-controller-feabad26.js +0 -2
  119. package/dist/canvas-controller-feabad26.js.map +0 -1
  120. package/dist/common-canvas-bcfe04ef.js +0 -2
  121. package/dist/common-canvas-bcfe04ef.js.map +0 -1
  122. package/dist/common-canvas-c4f77878.js +0 -2
  123. package/dist/common-canvas-c4f77878.js.map +0 -1
  124. package/dist/common-properties-597dd249.js +0 -2
  125. package/dist/common-properties-597dd249.js.map +0 -1
  126. package/dist/common-properties-de0ca66b.js +0 -2
  127. package/dist/common-properties-de0ca66b.js.map +0 -1
  128. package/dist/createClass-32a0cf0f.js.map +0 -1
  129. package/dist/createClass-6db89a23.js.map +0 -1
  130. package/dist/extends-12382a72.js.map +0 -1
  131. package/dist/extends-195c6b49.js +0 -7
  132. package/dist/extends-195c6b49.js.map +0 -1
  133. package/dist/flexible-table-056c538e.js +0 -2
  134. package/dist/flexible-table-056c538e.js.map +0 -1
  135. package/dist/flexible-table-7fb8a62e.js +0 -2
  136. package/dist/flexible-table-7fb8a62e.js.map +0 -1
  137. package/dist/getPrototypeOf-a1c3fe64.js.map +0 -1
  138. package/dist/getPrototypeOf-bf88242f.js.map +0 -1
  139. package/dist/index-61be3509.js +0 -2
  140. package/dist/index-61be3509.js.map +0 -1
  141. package/dist/index-8076376e.js +0 -2
  142. package/dist/index-8076376e.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"flexible-table-7fb8a62e.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\tonKeyDown={(evt) => {\n\t\t\t\t\t\tif (evt.code === \"Space\" || evt.code === \"Enter\") {\n\t\t\t\t\t\t\tthis.onRowClick(evt, rowData, index);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\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>\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, isEmpty } 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 && !isEmpty(this.props.data)) {\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\tconst emptyTableContent = isEmpty(this.props.data)\n\t\t\t? (\n\t\t\t\t<div className=\"properties-ft-empty-table\">\n\t\t\t\t\t{this.props.emptyTablePlaceholder}\n\t\t\t\t</div>\n\t\t\t)\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\t{emptyTableContent}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nFlexibleTable.defaultProps = {\n\tshowHeader: true,\n\tlight: true,\n\temptyTablePlaceholder: \"\"\n};\n\nFlexibleTable.propTypes = {\n\tsortable: PropTypes.array,\n\tcolumns: PropTypes.array.isRequired,\n\tdata: PropTypes.array.isRequired,\n\temptyTablePlaceholder: PropTypes.string,\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","onKeyDown","code","summaryTable","loading","Loading","small","withOverlay","parseInt","newStyle","assign","onDoubleClick","onMouseDown","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","data","setCheckedAll","removeEventListener","spec","row","rowIndex","_has","content","children","propertyId","defaultRowIndex","checkAll","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","emptyTableContent","emptyTablePlaceholder","ReactResizeDetector","handleWidth","onResize","selectedEditRow"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getPrototypeOf-a1c3fe64.js","sources":["../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"],"sourcesContent":["export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}"],"names":["_assertThisInitialized","self","ReferenceError","_setPrototypeOf","o","p","Object","setPrototypeOf","bind","__proto__","_inherits","subClass","superClass","TypeError","prototype","create","constructor","value","writable","configurable","defineProperty","_typeof","obj","Symbol","iterator","_possibleConstructorReturn","call","assertThisInitialized","_getPrototypeOf","getPrototypeOf"],"mappings":"AAAe,SAASA,EAAuBC,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAG3B,OAAOD,CACT,CCNe,SAASE,EAAgBC,EAAGC,GAKzC,OAJAF,EAAkBG,OAAOC,eAAiBD,OAAOC,eAAeC,OAAS,SAAyBJ,EAAGC,GAEnG,OADAD,EAAEK,UAAYJ,EACPD,GAEFD,EAAgBC,EAAGC,EAC5B,CCLe,SAASK,EAAUC,EAAUC,GAC1C,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIC,UAAU,sDAGtBF,EAASG,UAAYR,OAAOS,OAAOH,GAAcA,EAAWE,UAAW,CACrEE,YAAa,CACXC,MAAON,EACPO,UAAU,EACVC,cAAc,KAGlBb,OAAOc,eAAeT,EAAU,YAAa,CAC3CO,UAAU,IAERN,GAAYL,EAAeI,EAAUC,EAC3C,CCjBe,SAASS,EAAQC,GAG9B,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAC7F,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIN,cAAgBO,QAAUD,IAAQC,OAAOT,UAAY,gBAAkBQ,GACvHD,EAAQC,EACb,CCNe,SAASG,EAA2BxB,EAAMyB,GACvD,GAAIA,IAA2B,WAAlBL,EAAQK,IAAsC,mBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIb,UAAU,4DAGtB,OAAOc,EAAsB1B,EAC/B,CCVe,SAAS2B,EAAgBxB,GAItC,OAHAwB,EAAkBtB,OAAOC,eAAiBD,OAAOuB,eAAerB,OAAS,SAAyBJ,GAChG,OAAOA,EAAEK,WAAaH,OAAOuB,eAAezB,IAEvCwB,EAAgBxB,EACzB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getPrototypeOf-bf88242f.js","sources":["../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"],"sourcesContent":["export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}"],"names":["_assertThisInitialized","self","ReferenceError","_setPrototypeOf","o","p","Object","setPrototypeOf","bind","__proto__","_typeof","obj","Symbol","iterator","constructor","prototype","_getPrototypeOf","getPrototypeOf","subClass","superClass","TypeError","create","value","writable","configurable","defineProperty","call","assertThisInitialized"],"mappings":"aAAe,SAASA,EAAuBC,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAG3B,OAAOD,CACT,CCNe,SAASE,EAAgBC,EAAGC,GAKzC,OAJAF,EAAkBG,OAAOC,eAAiBD,OAAOC,eAAeC,OAAS,SAAyBJ,EAAGC,GAEnG,OADAD,EAAEK,UAAYJ,EACPD,GAEFD,EAAgBC,EAAGC,EAC5B,CCNe,SAASK,EAAQC,GAG9B,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAC7F,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GACvHD,EAAQC,EACb,CCRe,SAASK,EAAgBZ,GAItC,OAHAY,EAAkBV,OAAOC,eAAiBD,OAAOW,eAAeT,OAAS,SAAyBJ,GAChG,OAAOA,EAAEK,WAAaH,OAAOW,eAAeb,IAEvCY,EAAgBZ,EACzB,8ECJe,SAAmBc,EAAUC,GAC1C,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIC,UAAU,sDAGtBF,EAASH,UAAYT,OAAOe,OAAOF,GAAcA,EAAWJ,UAAW,CACrED,YAAa,CACXQ,MAAOJ,EACPK,UAAU,EACVC,cAAc,KAGlBlB,OAAOmB,eAAeP,EAAU,YAAa,CAC3CK,UAAU,IAERJ,GAAYZ,EAAeW,EAAUC,EAC3C,qCCfe,SAAoClB,EAAMyB,GACvD,GAAIA,IAA2B,WAAlBhB,EAAQgB,IAAsC,mBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIN,UAAU,4DAGtB,OAAOO,EAAsB1B,EAC/B"}
@@ -1,2 +0,0 @@
1
- "use strict";var e=require("./createClass-6db89a23.js"),t=require("./getPrototypeOf-bf88242f.js"),r=require("./isArrayLikeObject-f3b27f64.js"),n=require("./flexible-table-7fb8a62e.js"),a=require("./_baseForOwn-7d4e8506.js"),i=require("react"),s=require("uuid"),o=require("./lib/tooltip.js"),l=require("react-intl"),u=require("carbon-components-react"),c=require("./extends-12382a72.js"),f=require("./canvas-constants-34cdb7df.js"),p=require("./en-7a0f1db1.js"),d=require("./icon-1ef0f3b9.js"),E=require("@carbon/icons-react");function h(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m=h(i);function y(e){var r=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 n,a=t._getPrototypeOf(e);if(r){var i=t._getPrototypeOf(this).constructor;n=Reflect.construct(a,arguments,i)}else n=a.apply(this,arguments);return t._possibleConstructorReturn(this,n)}}var T=function(r){t._inherits(i,r);var a=y(i);function i(){return e._classCallCheck(this,i),a.apply(this,arguments)}return e._createClass(i,[{key:"render",value:function(){var e,t,r=void 0===this.props.applyLabel?this.props.intl.formatMessage({id:"propertiesEdit.applyButton.label",defaultMessage:n.defaultMessages["propertiesEdit.applyButton.label"]}):this.props.applyLabel,a=void 0===this.props.rejectLabel?this.props.intl.formatMessage({id:"propertiesEdit.rejectButton.label",defaultMessage:n.defaultMessages["propertiesEdit.rejectButton.label"]}):this.props.rejectLabel;return this.props.cancelHandler&&(e=m.default.createElement(u.Button,{"data-id":"properties-cancel-button",className:"properties-cancel-button",type:"button",size:"small",kind:"secondary",onClick:this.props.cancelHandler},a)),this.props.okHandler&&(t=m.default.createElement(u.Button,{"data-id":"properties-apply-button",className:"properties-apply-button",type:"button",size:"small",onClick:this.props.okHandler,disabled:!this.props.applyButtonEnabled},r)),this.props.okHandler||this.props.cancelHandler?m.default.createElement("div",{className:c.classNames("properties-modal-buttons",{hide:void 0!==this.props.showPropertiesButtons&&!this.props.showPropertiesButtons})},e,t):null}}]),i}(i.Component);T.defaultProps={applyButtonEnabled:!0};var v=l.injectIntl(T),b=r._baseIsEqual;var S=function(e,t){return b(e,t)},A={TEXT:"text",ENUM:"enum",COLUMN:"column",NEW_COLUMN:"new_column",EXPRESSION:"expression",EMAIL:"email",URL:"url",COLOR:"color",INTERVAL_YEAR:"interval_year",INTERVAL_DAY:"interval_day",INTERVAL_SECOND:"interval_second",CUSTOM:"custom",UNSPECIFIED:""},N=r.isArrayLike_1;var _=function(e,t){return function(r,n){if(null==r)return r;if(!N(r))return e(r,n);for(var a=r.length,i=t?a:-1,s=Object(r);(t?i--:++i<a)&&!1!==n(s[i],i,s););return r}}(a._baseForOwn),g=_,I=r.isArrayLike_1;var O=function(e,t){var r=-1,n=I(e)?Array(e.length):[];return g(e,(function(e,a,i){n[++r]=t(e,a,i)})),n};var L=function(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e},C=r.isSymbol_1;var R=function(e,t){if(e!==t){var r=void 0!==e,n=null===e,a=e==e,i=C(e),s=void 0!==t,o=null===t,l=t==t,u=C(t);if(!o&&!u&&!i&&e>t||i&&s&&l&&!o&&!u||n&&s&&l||!r&&l||!a)return 1;if(!n&&!i&&!u&&e<t||u&&r&&a&&!n&&!i||o&&r&&a||!s&&a||!l)return-1}return 0};var P=function(e,t,r){for(var n=-1,a=e.criteria,i=t.criteria,s=a.length,o=r.length;++n<s;){var l=R(a[n],i[n]);if(l)return n>=o?l:l*("desc"==r[n]?-1:1)}return e.index-t.index},M=r._arrayMap,D=r._baseGet,x=n._baseIteratee,k=O,F=L,B=r._baseUnary,w=P,j=r.identity_1,U=r.isArray_1;var Y=function(e,t,r){t=t.length?M(t,(function(e){return U(e)?function(t){return D(t,1===e.length?e[0]:e)}:e})):[j];var n=-1;t=M(t,B(x));var a=k(e,(function(e,r,a){return{criteria:M(t,(function(t){return t(e)})),index:++n,value:e}}));return F(a,(function(e,t){return w(e,t,r)}))},G=r.eq_1,K=r.isArrayLike_1,q=r._isIndex,z=r.isObject_1;var H=function(e,t,r){if(!z(r))return!1;var n=typeof t;return!!("number"==n?K(r)&&q(t,r.length):"string"==n&&t in r)&&G(r[t],e)},V=r._baseFlatten,X=Y,W=r._baseRest,$=H,Z=W((function(e,t){if(null==e)return[];var r=t.length;return r>1&&$(e,t[0],t[1])?t=[]:r>2&&$(t[0],t[1],t[2])&&(t=[t[0]]),X(e,V(t,1),[])})),J={};function Q(e,t,r){var n="",a="",i="";return r&&(n=r+": "),t&&(t.lineNumber&&(a="(line "+t.lineNumber+"): "),i=t.message?t.message:"Message unavailable"),"["+e+"]: "+n+a+i}J.debug=function(e,t){console.log(Q("DEBUG",t,e))},J.info=function(e,t){console.log(Q("INFO",t,e))},J.warn=function(e,t){console.warn(Q("WARNING",t,e))},J.error=function(e,t){console.error(Q("ERROR",t,e))};var ee=J;function te(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return re(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return re(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,o=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){o=!0,i=e},f:function(){try{s||null==r.return||r.return()}finally{if(o)throw i}}}}function re(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function ne(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ae(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ne(Object(r),!0).forEach((function(t){f._defineProperty(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ne(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function ie(e){return{}.toString.call(e).match(/\s([a-zA-Z]+)/)[1].toLowerCase()}function se(e,t,r){var a=ae(ae({},n.defaultMessages),p.defaultMessages2);return null!=e?e.formatMessage({id:t,defaultMessage:a[t]},r):a[t]}function oe(e,t){return isNaN(e)?t.getPropertyValue({name:e.trim()}):parseFloat(e)}function le(e){if(e)if(e.subControls){for(var t=0;t<e.subControls.length;t++)if(e.subControls[t].role===A.COLUMN)return t}else if(e.role===A.COLUMN)return 0;return-1}function ue(e){var t=e.toLowerCase();return"Real"===e&&(t="double"),t}function ce(e,t,r){return"object"===ie(e)?t&&t.valueDef&&e.link_ref?r?e.field_name:e.link_ref+"."+e.field_name:null:e}function fe(e,t,r){var n,a=e.find((function(e){return e.origName===t}));switch(r){case"measure":if(!a)return c.CARBON_ICONS.MEASUREMENTS.EMPTY;switch(a.metadata.measure){case"range":n=c.CARBON_ICONS.MEASUREMENTS.SCALE;break;case"ordered_set":n=c.CARBON_ICONS.MEASUREMENTS.ORDINAL;break;case"discrete":n=c.CARBON_ICONS.MEASUREMENTS.DISCRETE;break;case"set":case"collection":case"geospatial":n=c.CARBON_ICONS.MEASUREMENTS.NOMINAL;break;case"flag":n=c.CARBON_ICONS.MEASUREMENTS.FLAG;break;default:n=c.CARBON_ICONS.MEASUREMENTS.EMPTY}break;case"type":if(!a)return"typeEmpty";switch(a.type){case c.DATA_TYPE.DATE:n=c.DATA_TYPE.DATE;break;case c.DATA_TYPE.TIME:n=c.DATA_TYPE.TIME;break;case c.DATA_TYPE.TIMESTAMP:n=c.DATA_TYPE.TIMESTAMP;break;case c.DATA_TYPE.STRING:n=c.DATA_TYPE.STRING;break;case c.DATA_TYPE.INTEGER:n=c.DATA_TYPE.INTEGER;break;case c.DATA_TYPE.DOUBLE:n=c.DATA_TYPE.DOUBLE;break;default:n="typeEmpty"}}return n}function pe(e,t){var r=t.indexOf(e);if(r>-1)return t[r];var n,a=e.toLowerCase(),i=te(t);try{for(i.s();!(n=i.n()).done;){var s=n.value;if(a===s.toLowerCase())return s}}catch(e){i.e(e)}finally{i.f()}var o,l=te(t);try{for(l.s();!(o=l.n()).done;){var u=o.value;if(a.startsWith(u.substring(0,6).toLowerCase()))return u}}catch(e){l.e(e)}finally{l.f()}return e}function de(e){var r=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 n,a=t._getPrototypeOf(e);if(r){var i=t._getPrototypeOf(this).constructor;n=Reflect.construct(a,arguments,i)}else n=a.apply(this,arguments);return t._possibleConstructorReturn(this,n)}}var Ee=function(n){t._inherits(i,n);var a=de(i);function i(){return e._classCallCheck(this,i),a.apply(this,arguments)}return e._createClass(i,[{key:"render",value:function(){var e=this.props.tooltipText;"object"!==t._typeof(this.props.tooltipText)&&(e=String(this.props.tooltipText));var n=m.default.createElement("div",{className:"properties-tooltips"},e);return m.default.createElement("div",{className:"properties-truncated-tooltip"},m.default.createElement(o,{id:"".concat(s.v4(),"-properties"),tip:n,direction:"bottom",className:"properties-tooltips",disable:!r.has_1(this.props,"disabled")||this.props.disabled,showToolTipIfTruncated:!0},this.props.content))}}]),i}(m.default.Component),he=Ee;function me(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return ye(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ye(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,o=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){o=!0,i=e},f:function(){try{s||null==r.return||r.return()}finally{if(o)throw i}}}}function ye(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function Te(e){var r=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 n,a=t._getPrototypeOf(e);if(r){var i=t._getPrototypeOf(this).constructor;n=Reflect.construct(a,arguments,i)}else n=a.apply(this,arguments);return t._possibleConstructorReturn(this,n)}}var ve=function(a){t._inherits(l,a);var i=Te(l);function l(r){var n;return e._classCallCheck(this,l),(n=i.call(this,r)).state={fields:n.props.fields,origFields:n.props.fields,filterIcons:[],filterText:"",selectedFields:n.props.currentFields},n.multiSchema=r.controller.getDatasetMetadataSchemas()&&r.controller.getDatasetMetadataSchemas().length>1,n.filterList=[],n.filterType=n.filterType.bind(t._assertThisInitialized(n)),n.getTableData=n.getTableData.bind(t._assertThisInitialized(n)),n.getVisibleData=n.getVisibleData.bind(t._assertThisInitialized(n)),n.handleSave=n.handleSave.bind(t._assertThisInitialized(n)),n.handleCancel=n.handleCancel.bind(t._assertThisInitialized(n)),n.handleReset=n.handleReset.bind(t._assertThisInitialized(n)),n.getNewSelections=n.getNewSelections.bind(t._assertThisInitialized(n)),n.onSort=n.onSort.bind(t._assertThisInitialized(n)),n.onFilter=n.onFilter.bind(t._assertThisInitialized(n)),n.updateFieldSelections=n.updateFieldSelections.bind(t._assertThisInitialized(n)),n.filterList=n.getAvailableFilters(),n}return e._createClass(l,[{key:"onFilter",value:function(e){this.setState({filterText:e})}},{key:"onSort",value:function(e){var t=Array.from(this.state.fields);t=Z(t,(function(t){switch(e.column){case"fieldName":return t.origName;case"dataType":return t.type;case"schemaName":return t.schema;default:return null}})),e.direction===c.SORT_DIRECTION.DESC&&t.reverse(),this.setState({fields:t})}},{key:"getAvailableFilters",value:function(){var e=[];for(var t in c.DATA_TYPE)if(r.has_1(c.DATA_TYPE,t)){var n,a=c.DATA_TYPE[t],i=me(this.props.fields);try{for(i.s();!(n=i.n()).done;){var s=n.value;if(a===s.type){var o,l={type:s.type},u=!1,f=me(e);try{for(f.s();!(o=f.n()).done;){if(o.value.type===l.type){u=!0;break}}}catch(e){f.e(e)}finally{f.f()}u||e.push(l);break}}}catch(e){i.e(e)}finally{i.f()}}return e}},{key:"getTableData",value:function(){for(var e=this.getVisibleData(),t=[],r=this.state.selectedFields,n=[],a=function(t){var a=e.findIndex((function(e){return e.name===r[t]}));-1!==a&&n.push(a)},i=0;i<r.length;i++)a(i);for(var s=0;s<e.length;s++){var o=e[s],l=[],u=null;if(this.props.dmIcon&&"type"!==this.props.dmIcon){var c=fe(this.props.controller.getDatasetMetadataFields(),o.origName,this.props.dmIcon),f=c?m.default.createElement(d.Icon,{type:c}):null;f&&(u=m.default.createElement("div",{className:"properties-fp-field-type-icon"},f))}var p=m.default.createElement("span",{className:"properties-fp-field-name"},o.origName),E=m.default.createElement(he,{content:p,tooltipText:o.origName,disabled:!1}),h=m.default.createElement("div",{className:"properties-fp-field"},u,E);if(l.push({column:"fieldName",content:h,fieldName:o.origName}),this.multiSchema){var y=m.default.createElement("div",{className:"properties-fp-schema"},o.schema);l.push({column:"schemaName",content:y})}l.push({column:"dataType",content:m.default.createElement("div",{className:"properties-fp-data"},m.default.createElement("div",{className:"properties-fp-data-type-icon"},m.default.createElement(d.Icon,{type:o.type})),m.default.createElement("div",{className:"properties-fp-field-type"},o.type)),value:o.type}),t.push({className:"properties-fp-data-rows",columns:l})}return this.selectedRowsIndex=n,t}},{key:"getVisibleData",value:function(){var e=this;return this.state.fields.filter((function(t){return e.state.filterIcons.indexOf(t.type)<0})).filter((function(t){return void 0===e.state.filterText||null===e.state.filterText||t.origName.toLowerCase().indexOf(e.state.filterText.toLowerCase())>-1}))}},{key:"getNewSelections",value:function(){var e=[],t=this.props.currentFields;if(this.state.selectedFields)for(var r=0;r<this.state.selectedFields.length;r++)(null==t||t.indexOf(this.state.selectedFields[r])<0)&&e.push(r);return e}},{key:"handleSave",value:function(){this.props.closeFieldPicker(this.state.selectedFields,this.getNewSelections())}},{key:"handleCancel",value:function(){this.handleReset(),this.props.closeFieldPicker()}},{key:"updateFieldSelections",value:function(e){var t=this.getVisibleData(),r=Array.from(this.state.selectedFields),n=r.filter((function(e,n,a){return-1===t.findIndex((function(e){return e.name===r[n]}))}));e.forEach((function(e){n.push(t[e].name)})),n=Array.from(new Set(n)),this.setState({selectedFields:n})}},{key:"isFieldInList",value:function(e,t){return e.some((function(e){return e.name===t}))}},{key:"handleReset",value:function(){this.setState({selectedFields:this.props.currentFields,filterIcons:[],filterText:""})}},{key:"filterType",value:function(e){var t=e.currentTarget.getAttribute("data-type"),r=Array.from(this.state.filterIcons),n=r.indexOf(t);n<0?r.push(t):r.splice(n,1),this.setState({filterIcons:r})}},{key:"_genBackButton",value:function(){if(this.props.rightFlyout){var e=se(this.props.controller.getReactIntl(),c.MESSAGE_KEYS.APPLYBUTTON_LABEL),t=se(this.props.controller.getReactIntl(),c.MESSAGE_KEYS.REJECTBUTTON_LABEL);return m.default.createElement(v,{okHandler:this.handleSave,cancelHandler:this.handleCancel,showPropertiesButtons:!0,applyLabel:e,rejectLabel:t})}var r=se(this.props.controller.getReactIntl(),c.MESSAGE_KEYS.FIELDPICKER_SAVEBUTTON_TOOLTIP),n=s.v4()+"-tooltip-fp",a=m.default.createElement("div",{className:"properties-tooltips"},r);return m.default.createElement("div",null,m.default.createElement(o,{id:n,tip:a,direction:"left",className:"properties-tooltips"},m.default.createElement("div",null,m.default.createElement(u.Button,{className:"properties-fp-back-button",renderIcon:E.ArrowLeft24,iconDescription:this.props.title,size:"small",kind:"primary",onClick:this.handleSave}),m.default.createElement("label",{className:"properties-fp-button-label"},this.props.title))))}},{key:"_genResetButton",value:function(){var e=se(this.props.controller.getReactIntl(),c.MESSAGE_KEYS.FIELDPICKER_RESETBUTTON_LABEL);return m.default.createElement(u.Button,{className:"properties-fp-reset-button-container",onClick:this.handleReset,renderIcon:E.Reset24,iconDescription:e,size:"small",kind:"ghost"},m.default.createElement("span",null,e))}},{key:"_genFilterTypes",value:function(){var e=this,t=se(this.props.controller.getReactIntl(),c.MESSAGE_KEYS.FIELDPICKER_FILTER_LABEL),n=this.filterList.map((function(n,a){for(var i=!0,l=0;l<e.state.filterIcons.length;l++)if(n.type===e.state.filterIcons[l]){i=!1;break}var f=s.v4()+"-tooltip-filters-"+a,p=se(e.props.controller.getReactIntl(),c.MESSAGE_KEYS["FIELDPICKER_".concat(n.type.toUpperCase(),"_LABEL")]),E=m.default.createElement("div",{className:"properties-tooltips"},p);return m.default.createElement("li",{key:"filters"+a,className:"properties-fp-filter-list-li"},m.default.createElement("div",{className:"properties-tooltips-filter"},m.default.createElement(o,{id:f,tip:E,direction:"bottom",className:"properties-tooltips icon-tooltip",disable:r.isEmpty_1(n.type)},m.default.createElement(u.Button,{className:"properties-fp-filter","data-type":n.type,onClick:e.filterType.bind(e),"aria-label":t+" "+n.type,kind:"ghost"},m.default.createElement(d.Icon,{type:n.type,disabled:!i})))))}));return m.default.createElement("ul",{className:"properties-fp-filter-list"},m.default.createElement("li",{className:"properties-fp-filter-list-title properties-fp-filter-list-li"},t),n)}},{key:"_genTable",value:function(){var e=se(this.props.controller.getReactIntl(),c.MESSAGE_KEYS.FIELDPICKER_FIELDCOLUMN_LABEL),t=se(this.props.controller.getReactIntl(),c.MESSAGE_KEYS.FIELDPICKER_SCHEMACOLUMN_LABEL),r=se(this.props.controller.getReactIntl(),c.MESSAGE_KEYS.FIELDPICKER_DATATYPECOLUMN_LABEL),a=[];a.push({key:"fieldName",label:e}),this.multiSchema&&a.push({key:"schemaName",label:t}),a.push({key:"dataType",label:r});var i=this.getTableData();return m.default.createElement(n.FlexibleTable,{className:"properties-fp-table",sortable:["fieldName","schemaName","dataType"],filterable:["fieldName"],onFilter:this.onFilter,columns:a,data:i,onSort:this.onSort,filterKeyword:this.state.filterText,scrollKey:"field-picker",noAutoSize:!0,tableLabel:this.props.title?this.props.title:"",selectedRows:this.selectedRowsIndex,updateRowSelections:this.updateFieldSelections,rowSelection:c.ROW_SELECTION.MULTIPLE,light:this.props.controller.getLight()})}},{key:"render",value:function(){var e=this._genBackButton(),t=this._genResetButton(),r=this._genFilterTypes(),n=this._genTable();return this.props.rightFlyout?m.default.createElement(m.default.Fragment,null,m.default.createElement("div",{className:"properties-fp-top-row"},r,t),n,e):m.default.createElement("div",null,m.default.createElement("div",{className:"properties-fp-top-row"},e,t),r,n)}}],[{key:"getDerivedStateFromProps",value:function(e,t){if(!S(e.fields,t.origFields)){var r=t.selectedFields;return e.currentFields&&(S(Object.keys(e.currentFields),Object.keys(t.selectedFields))||(r=e.currentFields)),{fields:e.fields,selectedFields:r,origFields:e.fields}}return{}}}]),l}(m.default.Component),be=ve;exports.ControlType={CUSTOM:"custom",TEXTFIELD:"textfield",PASSWORDFIELD:"passwordfield",TEXTAREA:"textarea",LIST:"list",EXPRESSION:"expression",NUMBERFIELD:"numberfield",DATEFIELD:"datefield",TIMEFIELD:"timefield",TIMESTAMP:"timestampfield",CHECKBOX:"checkbox",TOGGLE:"toggle",RADIOSET:"radioset",CHECKBOXSET:"checkboxset",ONEOFSELECT:"oneofselect",MULTISELECT:"multiselect",SOMEOFSELECT:"someofselect",SELECTCOLUMN:"selectcolumn",SELECTCOLUMNS:"selectcolumns",SELECTSCHEMA:"selectschema",STRUCTURETABLE:"structuretable",STRUCTUREEDITOR:"structureeditor",STRUCTURELISTEDITOR:"structurelisteditor",TOGGLETEXT:"toggletext",READONLY:"readonly",READONLYTABLE:"readonlyTable",SPINNER:"spinner",CODE:"code",HIDDEN:"hidden"},exports.EditStyle={INLINE:"inline",SUBPANEL:"subpanel",ON_PANEL:"on_panel"},exports.FieldPicker=be,exports.GroupType={CONTROLS:"controls",TABS:"tabs",SUB_TABS:"subTabs",PANELS:"panels",ADDITIONAL:"additional",COLUMN_SELECTION:"columnSelection",PANEL_SELECTOR:"panelSelector",CUSTOM_PANEL:"customPanel",SUMMARY_PANEL:"summaryPanel",ACTION_PANEL:"actionPanel",TEXT_PANEL:"textPanel",TWISTY_PANEL:"twistyPanel",COLUMN_PANEL:"columnPanel",TEARSHEET_PANEL:"tearsheetPanel"},exports.ItemType={CONTROL:"control",ADDITIONAL_LINK:"additionalLink",STATIC_TEXT:"staticText",HORIZONTAL_SEPARATOR:"hSeparator",PANEL:"panel",TEARSHEET:"tearsheet",SUB_TABS:"subTabs",PRIMARY_TABS:"primaryTabs",PANEL_SELECTOR:"panelSelector",CUSTOM_PANEL:"customPanel",ACTION:"action",TEXT_PANEL:"textPanel"},exports.ORIENTATIONS={VERTICAL:"vertical",HORIZONTAL:"horizontal"},exports.PanelType={GENERAL:"general",COLUMN_SELECTION:"columnSelection",CUSTOM:"custom",SUMMARY:"summary",ACTION_PANEL:"actionPanel",TWISTY_PANEL:"twisty",COLUMN_PANEL:"column",TEARSHEET:"tearsheet"},exports.ParamRole=A,exports.PropertiesButtons=v,exports.Separator={BEFORE:"before",AFTER:"after"},exports.Size={LARGE:"large",MEDIUM:"medium",SMALL:"small"},exports.TruncatedContentTooltip=he,exports.Type={BOOLEAN:"boolean",INTEGER:"integer",LONG:"long",DOUBLE:"double",STRING:"string",PASSWORD:"password",DATE:"date",TIME:"time",TIMESTAMP:"timestamp",STRUCTURE:"structure",OBJECT:"object"},exports._baseEach=_,exports._isIterateeCall=H,exports.convertArrayStructureToObject=function e(t,r,n,a){var i=[];if(r.forEach((function(e){i.push(e.name)})),t&&Array.isArray(n)){var s=[];return n.forEach((function(t,n){if(a){var o={};i.forEach((function(n,a){r[a].structureType&&"object"===r[a].structureType?o[n]=e(r[a].valueDef.isList,r[a].subControls,t[a],!0):void 0!==r.subControls?o[n]=e(r[a].valueDef.isList,r[a].subControls,t[a],!1):o[n]=void 0!==t[a]?t[a]:null})),s.push(o)}else{var l=[];t.forEach((function(t,n){var a=t;r[n].structureType&&"object"===r[n].structureType&&(a=e(r[n].valueDef.isList,r[n].subControls,t,!0)),l.push(a)})),s.push(l)}})),s}var o={};return i.forEach((function(e,t){o[e]=n&&void 0!==n[t]?n[t]:null})),o},exports.convertInputDataModel=function(e){var t={fields:[]};if(e&&e.columns){var r,n=te(e.columns);try{for(n.s();!(r=n.n()).done;){var a=r.value,i={};i.name=a.name,i.type=ue(a.storage),i.metadata={},i.metadata.description="",a.measure&&(i.metadata.measure=a.measure.toLowerCase()),a.modelingRole&&(i.metadata.modeling_role=a.modelingRole.toLowerCase()),t.fields.push(i)}}catch(e){n.e(e)}finally{n.f()}}return t},exports.convertObjectStructureToArray=function e(r,n,a){var i=[];if(n.forEach((function(e){i.push(e.name)})),r){var s=[];return"object"===t._typeof(a)&&null!==a&&Object.keys(a).length>0&&a.forEach((function(r){if(Array.isArray(r)){var a=[];r.forEach((function(r,i){var s=r;"object"===t._typeof(r)&&null!==r&&Object.keys(r).length>0&&(s=e(n[i].valueDef.isList,n[i].subControls,r)),a.push(s)})),s.push(a)}else if("object"===t._typeof(r)){var o=[];i.forEach((function(t,a){var i=void 0!==r[t]?r[t]:null;n[a].structureType&&"object"===n[a].structureType&&(i=e(n[a].valueDef.isList,n[a].subControls,r[t])),o.push(i)})),s.push(o)}})),s}var o=[];return i.forEach((function(e,t){var r=void 0!==a[e]?a[e]:null;o.push(r)})),o},exports.copy=function(e){return void 0!==e?p.cloneDeep_1(e):e},exports.evaluateText=function e(t,r){try{if(!t)return t;var n=t.indexOf("${");if(n<0)return t;var a=t.substr(n+2).indexOf("}");if(a<0)return t;var i=t.substr(n+2,a),s=t.replace("${"+i+"}",function(e,t){var r,n,a=e.indexOf("("),i=e.substr(0,a),s=e.slice(a+1,-1).split(",");if(0===s.length)return"";switch(i){case"percent":return!(n=oe(s[0],t))||isNaN(n)?0:(r=100/n,s.length>1&&(r=r.toFixed(parseInt(s[1],10))),r);case"sum":r=0;var o,l=te(s);try{for(l.s();!(o=l.n()).done;){n=oe(o.value,t),isNaN(n)||(r+=n)}}catch(e){l.e(e)}finally{l.f()}return r}return""}(i,r));return e(s,r)}catch(e){return ee.warn("Invalid expression. Make sure replacement expression in text is a valid expression."),t}},exports.fieldStringToValue=function(e,t,r){if("column"===t.role&&"structure"===t.valueDef.propType){var n,a=te(r.getDatasetMetadataFields());try{for(a.s();!(n=a.n()).done;){var i=n.value;if(i.name===e)return{link_ref:i.schema,field_name:i.origName}}}catch(e){a.e(e)}finally{a.f()}}return e},exports.fieldValueMatchesProto=function(e,t){return"object"===ie(e)&&e.link_ref?e.link_ref===t.schema&&e.field_name===t.origName:e===t.name},exports.formatMessage=se,exports.generateId=function(){return"properties-"+s.v4()},exports.getDMDefault=function(e,t,r){var n,a=e.dmDefault;if(t){var i,s=te(r);try{for(s.s();!(i=s.n()).done;){var o=i.value;if(o.name===t){switch(a){case"type":n=o.type;break;case"description":n=o.metadata.description;break;case"measure":n=pe(o.metadata.measure,e.values);break;case"modeling_role":n=pe(o.metadata.modeling_role,e.values)}break}}}catch(e){s.e(e)}finally{s.f()}}return n},exports.getDMFieldIcon=fe,exports.getFieldsFromControlValues=function(e,t,r){var n=le(e),a=[];if(t&&-1!==n){var i,s=te(t);try{for(s.s();!(i=s.n()).done;){var o=i.value,l=o;Array.isArray(o)?l=ce(o[n],e):"object"===ie(o)&&(l=ce(o,e)),a.push(l)}}catch(e){s.e(e)}finally{s.f()}}return a},exports.getTableFieldIndex=le,exports.isEqual_1=S,exports.isSubControlStructureObjectType=function e(t){if(t){if(t.structureType&&"object"===t.structureType)return!0;if(t.subControls){var r,n=te(t.subControls);try{for(n.s();!(r=n.n()).done;){var a=r.value;if(a.structureType&&"object"===a.structureType)return!0;if(a.subControls&&e(a))return!0}}catch(e){n.e(e)}finally{n.f()}return!1}}return!1},exports.logger=ee,exports.sortBy_1=Z,exports.stringifyFieldValue=ce,exports.toType=ie;
2
- //# sourceMappingURL=index-61be3509.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-61be3509.js","sources":["../src/common-properties/components/properties-buttons/properties-buttons.jsx","../node_modules/lodash/isEqual.js","../src/common-properties/constants/form-constants.js","../node_modules/lodash/_createBaseEach.js","../node_modules/lodash/_baseEach.js","../node_modules/lodash/_baseMap.js","../node_modules/lodash/_baseSortBy.js","../node_modules/lodash/_compareAscending.js","../node_modules/lodash/_compareMultiple.js","../node_modules/lodash/_baseOrderBy.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/lodash/sortBy.js","../utils/logger.js","../src/common-properties/util/property-utils.js","../src/common-properties/components/truncated-content-tooltip/truncated-content-tooltip.jsx","../src/common-properties/components/truncated-content-tooltip/index.js","../src/common-properties/components/field-picker/field-picker.jsx","../src/common-properties/components/field-picker/index.js"],"sourcesContent":["/*\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, { Component } from \"react\";\nimport { injectIntl } from \"react-intl\";\nimport PropTypes from \"prop-types\";\nimport { Button } from \"carbon-components-react\";\nimport classNames from \"classnames\";\nimport defaultMessages from \"../../../../locales/common-properties/locales/en.json\";\n\n\nclass PropertiesButtons extends Component {\n\n\trender() {\n\t\tconst applyButtonLabel = (typeof this.props.applyLabel === \"undefined\")\n\t\t\t? this.props.intl.formatMessage({ id: \"propertiesEdit.applyButton.label\", defaultMessage: defaultMessages[\"propertiesEdit.applyButton.label\"] })\n\t\t\t: this.props.applyLabel;\n\t\tconst rejectButtonLabel = (typeof this.props.rejectLabel === \"undefined\")\n\t\t\t? this.props.intl.formatMessage({ id: \"propertiesEdit.rejectButton.label\", defaultMessage: defaultMessages[\"propertiesEdit.rejectButton.label\"] })\n\t\t\t: this.props.rejectLabel;\n\n\t\tlet rejectButton;\n\t\tif (this.props.cancelHandler) {\n\t\t\trejectButton = (\n\t\t\t\t<Button\n\t\t\t\t\tdata-id=\"properties-cancel-button\"\n\t\t\t\t\tclassName=\"properties-cancel-button\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tkind=\"secondary\"\n\t\t\t\t\tonClick={this.props.cancelHandler}\n\t\t\t\t>\n\t\t\t\t\t{rejectButtonLabel}\n\t\t\t\t</Button>\n\t\t\t);\n\t\t}\n\t\tlet applyButton;\n\t\tif (this.props.okHandler) {\n\t\t\tapplyButton = (\n\t\t\t\t<Button\n\t\t\t\t\tdata-id=\"properties-apply-button\"\n\t\t\t\t\tclassName=\"properties-apply-button\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tonClick={this.props.okHandler}\n\t\t\t\t\tdisabled={!this.props.applyButtonEnabled}\n\t\t\t\t>\n\t\t\t\t\t{applyButtonLabel}\n\t\t\t\t</Button>\n\t\t\t);\n\t\t}\n\n\t\tconst propertiesModalButtons = this.props.okHandler || this.props.cancelHandler\n\t\t\t? (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"properties-modal-buttons\", { \"hide\": (typeof (this.props.showPropertiesButtons) !== \"undefined\" &&\n\t\t\t\t\t\t!this.props.showPropertiesButtons) })}\n\t\t\t\t>\n\t\t\t\t\t{rejectButton}\n\t\t\t\t\t{applyButton}\n\t\t\t\t</div>\n\t\t\t)\n\t\t\t: null;\n\n\t\treturn propertiesModalButtons;\n\t}\n}\n\nPropertiesButtons.propTypes = {\n\tintl: PropTypes.object.isRequired,\n\tcancelHandler: PropTypes.func,\n\tokHandler: PropTypes.func,\n\tapplyLabel: PropTypes.string,\n\trejectLabel: PropTypes.string,\n\tshowPropertiesButtons: PropTypes.bool,\n\tapplyButtonEnabled: PropTypes.bool\n};\n\nPropertiesButtons.defaultProps = {\n\tapplyButtonEnabled: true\n};\n\nexport default injectIntl(PropertiesButtons);\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\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\nconst ItemType = {\n\tCONTROL: \"control\",\n\tADDITIONAL_LINK: \"additionalLink\",\n\tSTATIC_TEXT: \"staticText\",\n\tHORIZONTAL_SEPARATOR: \"hSeparator\",\n\tPANEL: \"panel\",\n\tTEARSHEET: \"tearsheet\",\n\tSUB_TABS: \"subTabs\",\n\tPRIMARY_TABS: \"primaryTabs\",\n\tPANEL_SELECTOR: \"panelSelector\",\n\tCUSTOM_PANEL: \"customPanel\",\n\tACTION: \"action\",\n\tTEXT_PANEL: \"textPanel\"\n};\n\nconst EditStyle = {\n\tINLINE: \"inline\",\n\tSUBPANEL: \"subpanel\",\n\tON_PANEL: \"on_panel\"\n};\n\nconst Size = {\n\tLARGE: \"large\",\n\tMEDIUM: \"medium\",\n\tSMALL: \"small\"\n};\n\nconst GroupType = {\n\tCONTROLS: \"controls\",\n\tTABS: \"tabs\", // currently not used\n\tSUB_TABS: \"subTabs\",\n\tPANELS: \"panels\",\n\tADDITIONAL: \"additional\",\n\tCOLUMN_SELECTION: \"columnSelection\",\n\tPANEL_SELECTOR: \"panelSelector\",\n\tCUSTOM_PANEL: \"customPanel\",\n\tSUMMARY_PANEL: \"summaryPanel\",\n\tACTION_PANEL: \"actionPanel\",\n\tTEXT_PANEL: \"textPanel\",\n\tTWISTY_PANEL: \"twistyPanel\",\n\tCOLUMN_PANEL: \"columnPanel\",\n\tTEARSHEET_PANEL: \"tearsheetPanel\"\n};\n\nconst PanelType = {\n\tGENERAL: \"general\",\n\tCOLUMN_SELECTION: \"columnSelection\",\n\tCUSTOM: \"custom\",\n\tSUMMARY: \"summary\",\n\tACTION_PANEL: \"actionPanel\",\n\tTWISTY_PANEL: \"twisty\",\n\tCOLUMN_PANEL: \"column\",\n\tTEARSHEET: \"tearsheet\"\n};\n\nconst ControlType = {\n\tCUSTOM: \"custom\",\n\tTEXTFIELD: \"textfield\",\n\tPASSWORDFIELD: \"passwordfield\",\n\tTEXTAREA: \"textarea\",\n\tLIST: \"list\",\n\tEXPRESSION: \"expression\",\n\tNUMBERFIELD: \"numberfield\",\n\tDATEFIELD: \"datefield\",\n\tTIMEFIELD: \"timefield\",\n\tTIMESTAMP: \"timestampfield\",\n\tCHECKBOX: \"checkbox\",\n\tTOGGLE: \"toggle\",\n\tRADIOSET: \"radioset\",\n\tCHECKBOXSET: \"checkboxset\",\n\tONEOFSELECT: \"oneofselect\",\n\tMULTISELECT: \"multiselect\",\n\tSOMEOFSELECT: \"someofselect\",\n\tSELECTCOLUMN: \"selectcolumn\",\n\tSELECTCOLUMNS: \"selectcolumns\",\n\tSELECTSCHEMA: \"selectschema\",\n\tSTRUCTURETABLE: \"structuretable\",\n\tSTRUCTUREEDITOR: \"structureeditor\",\n\tSTRUCTURELISTEDITOR: \"structurelisteditor\",\n\tTOGGLETEXT: \"toggletext\",\n\tREADONLY: \"readonly\",\n\tREADONLYTABLE: \"readonlyTable\",\n\tSPINNER: \"spinner\",\n\tCODE: \"code\",\n\tHIDDEN: \"hidden\"\n};\n\nconst ParamRole = {\n\tTEXT: \"text\",\n\tENUM: \"enum\",\n\tCOLUMN: \"column\",\n\tNEW_COLUMN: \"new_column\",\n\tEXPRESSION: \"expression\",\n\tEMAIL: \"email\",\n\tURL: \"url\",\n\tCOLOR: \"color\",\n\tINTERVAL_YEAR: \"interval_year\",\n\tINTERVAL_DAY: \"interval_day\",\n\tINTERVAL_SECOND: \"interval_second\",\n\tCUSTOM: \"custom\",\n\tUNSPECIFIED: \"\"\n};\n\nconst Type = {\n\tBOOLEAN: \"boolean\",\n\tINTEGER: \"integer\",\n\tLONG: \"long\",\n\tDOUBLE: \"double\",\n\tSTRING: \"string\",\n\tPASSWORD: \"password\",\n\tDATE: \"date\",\n\tTIME: \"time\",\n\tTIMESTAMP: \"timestamp\",\n\tSTRUCTURE: \"structure\",\n\tOBJECT: \"object\"\n};\n\nconst Separator = {\n\tBEFORE: \"before\",\n\tAFTER: \"after\"\n};\n\nconst ORIENTATIONS = {\n\tVERTICAL: \"vertical\",\n\tHORIZONTAL: \"horizontal\"\n};\n\nfunction hasValue(Enum, value) {\n\tfor (var key in Enum) {\n\t\tif (value === Enum[key]) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nexport { GroupType, PanelType, Type, ParamRole, ControlType, hasValue, EditStyle, Size, ItemType, Separator, ORIENTATIONS };\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\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 no-console: [\"error\", { allow: [\"log\", \"warn\", \"error\"] }] */\n\n// Modules\n\n// Globals\n\n// Private Methods ------------------------------------------------------------>\n\nfunction _getErrorMessage(prefix, errorObject, id) {\n\tvar classID = \"\";\n\tvar lineNumber = \"\";\n\tvar message = \"\";\n\n\t// Class name\n\tif (id) {\n\t\tclassID = id + \": \";\n\t}\n\n\tif (errorObject) {\n\t\t// Line number\n\t\tif (errorObject.lineNumber) {\n\t\t\tlineNumber = \"(line \" + errorObject.lineNumber + \"): \";\n\t\t}\n\t\t// Error message\n\t\tif (errorObject.message) {\n\t\t\tmessage = errorObject.message;\n\t\t} else {\n\t\t\tmessage = \"Message unavailable\";\n\t\t}\n\t}\n\n\tvar errorMessage = \"[\" + prefix + \"]: \" +\n\t\t\t\t\t\tclassID +\n\t\t\t\t\t\tlineNumber +\n\t\t\t\t\t\tmessage;\n\n\treturn errorMessage;\n}\n\n/**\n * Prints a DEBUG status message to the console.\n *\n * @param {String} id: Logging ID included in status message.\n * @param {String} errorObject: Error object used to wrap message & line number.\n *\n * @returns void\n */\nfunction _debug(id, errorObject) {\n\tconsole.log(_getErrorMessage(\"DEBUG\", errorObject, id));\n}\n\n/**\n * Prints a INFO status message to the console.\n *\n * @param {String} id: Logging ID included in status message.\n * @param {String} errorObject: Error object used to wrap message & line number.\n *\n * @returns void\n */\nfunction _info(id, errorObject) {\n\tconsole.log(_getErrorMessage(\"INFO\", errorObject, id));\n}\n\n/**\n * Prints a WARNING status message to the console.\n *\n * @param {String} id: Logging ID included in status message.\n * @param {String} errorObject: Error object used to wrap message & line number.\n *\n * @returns void\n */\nfunction _warning(id, errorObject) {\n\tconsole.warn(_getErrorMessage(\"WARNING\", errorObject, id));\n}\n\n/**\n * Prints a ERROR status message to the console.\n *\n * @param {String} id: Logging ID included in status message.\n * @param {String} errorObject: Error object used to wrap message & line number.\n *\n * @returns void\n */\nfunction _error(id, errorObject) {\n\tconsole.error(_getErrorMessage(\"ERROR\", errorObject, id));\n}\n\n// Public Methods ------------------------------------------------------------->\n\nmodule.exports.debug = _debug;\nmodule.exports.info = _info;\nmodule.exports.warn = _warning;\nmodule.exports.error = _error;\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\n/* eslint max-depth: [\"error\", 5] */\n\nimport logger from \"../../../utils/logger\";\nimport { ParamRole } from \"../constants/form-constants\";\nimport { DATA_TYPE, CARBON_ICONS } from \"../constants/constants\";\nimport { cloneDeep } from \"lodash\";\nimport { v4 as uuid4 } from \"uuid\";\nimport defaultMessages1 from \"../../../locales/common-properties/locales/en.json\";\nimport defaultMessages2 from \"../../../locales/command-actions/locales/en.json\";\n\n/**\n * A better type identifier than a simple 'typeOf' call:\n *\n * \ttoType({a: 4}); //\"object\"\n *\ttoType([1, 2, 3]); //\"array\"\n *\t(function() {console.log(toType(arguments))})(); //arguments\n *\ttoType(new ReferenceError); //\"error\"\n *\ttoType(new Date); //\"date\"\n *\ttoType(/a-z/); //\"regexp\"\n *\ttoType(Math); //\"math\"\n *\ttoType(JSON); //\"json\"\n *\ttoType(new Number(4)); //\"number\"\n *\ttoType(new String(\"abc\")); //\"string\"\n *\ttoType(new Boolean(true)); //\"boolean\"\n */\nfunction toType(obj) {\n\treturn ({}).toString.call(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase();\n}\n\nfunction copy(obj) {\n\tif (typeof obj !== \"undefined\") {\n\t\treturn cloneDeep(obj);\n\t}\n\treturn obj;\n}\n\nfunction formatMessage(intl, key, substituteObj) {\n\tconst defaultMessages = { ...defaultMessages1, ...defaultMessages2 };\n\tlet formattedMessage;\n\tif (typeof intl !== \"undefined\" && intl !== null) {\n\t\tformattedMessage = intl.formatMessage({ id: key, defaultMessage: defaultMessages[key] }, substituteObj);\n\t} else {\n\t\tformattedMessage = defaultMessages[key];\n\t}\n\treturn formattedMessage;\n}\n\nfunction generateId() {\n\treturn \"properties-\" + uuid4();\n}\n\n/*\n* Parses text to see if there is any text replace elements ${}\n*/\nfunction evaluateText(text, controller) {\n\ttry {\n\t\tif (!text) {\n\t\t\treturn text;\n\t\t}\n\t\tconst startIdx = text.indexOf(\"${\");\n\t\tif (startIdx < 0) {\n\t\t\treturn text;\n\t\t}\n\t\tconst endIdx = text.substr(startIdx + 2).indexOf(\"}\");\n\t\tif (endIdx < 0) {\n\t\t\treturn text;\n\t\t}\n\t\tconst expression = text.substr(startIdx + 2, endIdx);\n\t\tconst newText = text.replace(\"${\" + expression + \"}\", _evaluateExpression(expression, controller));\n\t\treturn evaluateText(newText, controller); // test to see if there are more expressions\n\t} catch (e) {\n\t\tlogger.warn(\"Invalid expression. Make sure replacement expression in text is a valid expression.\");\n\t\treturn text;\n\t}\n}\n\nfunction _evaluateExpression(expression, controller) {\n\tconst paramStartIdx = expression.indexOf(\"(\");\n\tconst funcName = expression.substr(0, paramStartIdx);\n\tconst parameters = expression.slice(paramStartIdx + 1, -1).split(\",\");\n\tif (parameters.length === 0) {\n\t\treturn \"\";\n\t}\n\tlet value;\n\tlet paramValue;\n\tswitch (funcName) {\n\tcase \"percent\":\n\t\tparamValue = _getExpParameterValue(parameters[0], controller);\n\t\t// 0, undefined, null, or not a number return 0\n\t\tif (!paramValue || isNaN(paramValue)) {\n\t\t\treturn 0;\n\t\t}\n\t\tvalue = 100.0 / paramValue;\n\t\tif (parameters.length > 1) {\n\t\t\tvalue = value.toFixed(parseInt(parameters[1], 10));\n\t\t}\n\t\treturn value;\n\tcase \"sum\":\n\t\tvalue = 0;\n\t\tfor (const param of parameters) {\n\t\t\tparamValue = _getExpParameterValue(param, controller);\n\t\t\tif (!isNaN(paramValue)) {\n\t\t\t\tvalue += paramValue;\n\t\t\t}\n\t\t}\n\t\treturn value;\n\tdefault:\n\t\tbreak;\n\t}\n\treturn \"\";\n}\n\nfunction _getExpParameterValue(expParam, controller) {\n\t// assume property if parameter is a string\n\tif (isNaN(expParam)) {\n\t\treturn controller.getPropertyValue({ name: expParam.trim() });\n\t}\n\treturn parseFloat(expParam);\n}\n\nfunction getTableFieldIndex(control) {\n\tif (control) {\n\t\t// table\n\t\tif (control.subControls) {\n\t\t\tfor (let i = 0; i < control.subControls.length; i++) {\n\t\t\t\tif (control.subControls[i].role === ParamRole.COLUMN) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (control.role === ParamRole.COLUMN) { // array\n\t\t\treturn 0;\n\t\t}\n\t}\n\treturn -1;\n}\n\n// TODO: This can be removed once the WML Play service generates datasetMetadata instead of inputDataModel\n/**\n * Converts old style Modeler inputDataModel into newer datasetMetadata\n */\nfunction convertInputDataModel(dataModel) {\n\tconst datasetMetadata = {};\n\tdatasetMetadata.fields = [];\n\tif (dataModel && dataModel.columns) {\n\t\tfor (const column of dataModel.columns) {\n\t\t\tconst field = {};\n\t\t\tfield.name = column.name;\n\t\t\tfield.type = convertType(column.storage);\n\t\t\tfield.metadata = {};\n\t\t\tfield.metadata.description = \"\";\n\t\t\tif (column.measure) {\n\t\t\t\tfield.metadata.measure = column.measure.toLowerCase();\n\t\t\t}\n\t\t\tif (column.modelingRole) {\n\t\t\t\tfield.metadata.modeling_role = column.modelingRole.toLowerCase();\n\t\t\t}\n\t\t\tdatasetMetadata.fields.push(field);\n\t\t}\n\t}\n\treturn datasetMetadata;\n}\n\n/**\n * Converts from Modeler storage to WML type.\n */\nfunction convertType(storage) {\n\tlet retVal = storage.toLowerCase();\n\tif (storage === \"Real\") {\n\t\tretVal = \"double\";\n\t}\n\treturn retVal;\n}\n\n/**\n * Returns true if any subControl within control has 'structureType === object'\n */\nfunction isSubControlStructureObjectType(control) {\n\tif (control) {\n\t\tif (control.structureType && control.structureType === \"object\") {\n\t\t\treturn true;\n\t\t} else if (control.subControls) {\n\t\t\tfor (const subControl of control.subControls) {\n\t\t\t\tif (subControl.structureType && subControl.structureType === \"object\") {\n\t\t\t\t\treturn true;\n\t\t\t\t} else if (subControl.subControls) {\n\t\t\t\t\tconst objectType = isSubControlStructureObjectType(subControl);\n\t\t\t\t\tif (objectType) { // continue if false\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * Converts the currentValues of a structure control of type 'object'\n * from an array of objects to an array of values.\n * @isList boolean, true if this structure is a list\n * Example currentValues: [{a: 1, b: 2}, {a: 10, b; 20}] || {z: 9, y: 88, x: [\"abc\", \"def\"]}\n * Example convertedValues: [[1, 2], [10, 20]] || [9, 88, [\"abc\", \"def\"]]\n */\nfunction convertObjectStructureToArray(isList, subControls, currentValues) {\n\tconst structureKeys = [];\n\tsubControls.forEach((control) => {\n\t\tstructureKeys.push(control.name);\n\t});\n\n\tif (isList) {\n\t\tconst convertedValues = [];\n\t\tif (typeof currentValues === \"object\" && currentValues !== null && Object.keys(currentValues).length > 0) {\n\t\t\tcurrentValues.forEach((row) => {\n\t\t\t\tif (Array.isArray(row)) { // check if any values in the row is a nested object\n\t\t\t\t\tconst convertedRow = [];\n\t\t\t\t\trow.forEach((field, index) => {\n\t\t\t\t\t\tlet value = field;\n\t\t\t\t\t\tif (typeof field === \"object\" && field !== null && Object.keys(field).length > 0) {\n\t\t\t\t\t\t\tvalue = convertObjectStructureToArray(subControls[index].valueDef.isList, subControls[index].subControls, field);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconvertedRow.push(value);\n\t\t\t\t\t});\n\t\t\t\t\tconvertedValues.push(convertedRow);\n\t\t\t\t} else if (typeof row === \"object\") {\n\t\t\t\t\tconst convertedRow = [];\n\t\t\t\t\tstructureKeys.forEach((key, index) => {\n\t\t\t\t\t\tlet value = typeof row[key] !== \"undefined\" ? row[key] : null;\n\t\t\t\t\t\t// subControls that are type 'object' will need to be converted\n\t\t\t\t\t\tif (subControls[index].structureType && subControls[index].structureType === \"object\") {\n\t\t\t\t\t\t\tvalue = convertObjectStructureToArray(subControls[index].valueDef.isList, subControls[index].subControls, row[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconvertedRow.push(value);\n\t\t\t\t\t});\n\t\t\t\t\tconvertedValues.push(convertedRow);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn convertedValues;\n\t}\n\n\tconst converted = [];\n\tstructureKeys.forEach((key, index) => {\n\t\tconst value = typeof currentValues[key] !== \"undefined\" ? currentValues[key] : null;\n\t\tconverted.push(value);\n\t});\n\treturn converted;\n}\n\n/**\n * Converts the currentValues of a structure control of type 'object'\n * from an array of values to an array of objects.\n * @isList boolean, true if this structure is a list\n * @convert boolean, true if the current control values need to be converted.\n * If false, need to determine if the subControls need to be converted\n * Example currentValues: [[1, 2], [10, 20]] || [9, 88, [\"abc\", \"def\"]]\n * Example convertedValues: [{a: 1, b: 2}, {a: 10, b; 20}] || {z: 9, y: 88, x: [\"abc\", \"def\"]}\n */\nfunction convertArrayStructureToObject(isList, subControls, currentValues, convert) {\n\tconst structureKeys = [];\n\tsubControls.forEach((control) => {\n\t\tstructureKeys.push(control.name);\n\t});\n\n\tif (isList && Array.isArray(currentValues)) {\n\t\tconst convertedValues = [];\n\t\tcurrentValues.forEach((row, idx) => {\n\t\t\tif (convert) { // this control needs to be converted, convert all values in this row and determine if there are nested structures to be converted\n\t\t\t\tconst newObject = {};\n\t\t\t\tstructureKeys.forEach((key, keyIndex) => {\n\t\t\t\t\t// subControls that are type 'object' will need to be converted\n\t\t\t\t\tif (subControls[keyIndex].structureType && subControls[keyIndex].structureType === \"object\") { // nested object\n\t\t\t\t\t\tnewObject[key] = convertArrayStructureToObject(subControls[keyIndex].valueDef.isList, subControls[keyIndex].subControls, row[keyIndex], true);\n\t\t\t\t\t} else if (typeof subControls.subControls !== \"undefined\") { // nested array\n\t\t\t\t\t\tnewObject[key] = convertArrayStructureToObject(subControls[keyIndex].valueDef.isList, subControls[keyIndex].subControls, row[keyIndex], false);\n\t\t\t\t\t} else { // value\n\t\t\t\t\t\tnewObject[key] = typeof row[keyIndex] !== \"undefined\" ? row[keyIndex] : null;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconvertedValues.push(newObject);\n\t\t\t} else { // determine if each value in the row is a nested structure that needs to be converted\n\t\t\t\tconst convertedRow = [];\n\t\t\t\trow.forEach((field, index) => {\n\t\t\t\t\tlet value = field;\n\t\t\t\t\tif (subControls[index].structureType && subControls[index].structureType === \"object\") {\n\t\t\t\t\t\tvalue = convertArrayStructureToObject(subControls[index].valueDef.isList, subControls[index].subControls, field, true);\n\t\t\t\t\t}\n\t\t\t\t\tconvertedRow.push(value);\n\t\t\t\t});\n\t\t\t\tconvertedValues.push(convertedRow);\n\t\t\t}\n\t\t});\n\t\treturn convertedValues;\n\t}\n\n\tconst converted = {};\n\tstructureKeys.forEach((key, index) => {\n\t\tconverted[key] = currentValues && typeof currentValues[index] !== \"undefined\" ? currentValues[index] : null;\n\t});\n\treturn converted;\n}\n\n/**\n * Converts the input list of currentParameters into a simple array of field names\n * \tWill also remove invalid fields in currentParameters that are not in the data model.\n *\n * @param control the control to format the input list for\n * @param controlValues array of the currentControlValues\n * @param fields the filtered list of fields from the data model\n */\nfunction getFieldsFromControlValues(control, controlValues, fields) {\n\tconst dataColumnIndex = getTableFieldIndex(control);\n\tconst outputList = [];\n\tif (controlValues && dataColumnIndex !== -1) {\n\t\tfor (const controlValue of controlValues) {\n\t\t\tlet fieldName = controlValue;\n\t\t\tif (Array.isArray(controlValue)) {\n\t\t\t\tfieldName = stringifyFieldValue(controlValue[dataColumnIndex], control);\n\t\t\t} else if (toType(controlValue) === \"object\") {\n\t\t\t\tfieldName = stringifyFieldValue(controlValue, control);\n\t\t\t}\n\t\t\toutputList.push(fieldName);\n\t\t}\n\t}\n\treturn outputList;\n}\n\n/**\n * Returns the string field name for both string and object based field values.\n * If the control's propType is structure, return the combined schema and field names.\n *\n * @param value A field value. Can be string or object\n * @param control The control definition for the parameter\n * @param excludeSchema When true, exclude the schema prefix on compound entries\n * @return A string field name value or null\n */\nfunction stringifyFieldValue(value, control, excludeSchema) {\n\tconst theType = toType(value);\n\tif (theType === \"object\") {\n\t\tif (control && control.valueDef && value.link_ref) {\n\t\t\tlet stringName;\n\t\t\tif (!excludeSchema) {\n\t\t\t\tstringName = value.link_ref + \".\" + value.field_name;\n\t\t\t} else {\n\t\t\t\tstringName = value.field_name;\n\t\t\t}\n\t\t\treturn stringName;\n\t\t}\n\t\treturn null;\n\t}\n\treturn value;\n}\n\n/**\n * Returns true if the given field value matches the provided field prototype.\n *\n * @param fieldValue A persistent field value\n * @param fieldProto A field prototype structure\n * @return True if the field value matches the field prototype\n */\nfunction fieldValueMatchesProto(fieldValue, fieldProto) {\n\tconst theType = toType(fieldValue);\n\tif (theType === \"object\" && fieldValue.link_ref) {\n\t\treturn fieldValue.link_ref === fieldProto.schema &&\n\t\t\t\t\t\tfieldValue.field_name === fieldProto.origName;\n\t}\n\treturn fieldValue === fieldProto.name;\n}\n\n/**\n * Converts a display string for a field name into the value it is stored as.\n *\n * @param stringValue A field name, either plain or in schema.name format\n * @param The control The control\n * @param controller Properties controller\n * @return The field name in canonical format for storage (string or object)\n */\nfunction fieldStringToValue(stringValue, control, controller) {\n\tif (control.role === \"column\" && control.valueDef.propType === \"structure\") {\n\t\tconst dataModelFields = controller.getDatasetMetadataFields();\n\t\tfor (const field of dataModelFields) {\n\t\t\tif (field.name === stringValue) {\n\t\t\t\treturn { link_ref: field.schema, field_name: field.origName };\n\t\t\t}\n\t\t}\n\t}\n\treturn stringValue;\n}\n\nfunction getDMDefault(subControlDef, fieldName, fields) {\n\tlet defaultValue;\n\tconst dmField = subControlDef.dmDefault;\n\tif (fieldName) {\n\t\tfor (const field of fields) {\n\t\t\tif (field.name === fieldName) {\n\t\t\t\tswitch (dmField) {\n\t\t\t\tcase \"type\":\n\t\t\t\t\tdefaultValue = field.type;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"description\":\n\t\t\t\t\tdefaultValue = field.metadata.description;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"measure\":\n\t\t\t\t\tdefaultValue = _findCorrespondingValue(field.metadata.measure, subControlDef.values);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"modeling_role\":\n\t\t\t\t\tdefaultValue = _findCorrespondingValue(field.metadata.modeling_role, subControlDef.values);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn defaultValue;\n}\n\nfunction getDMFieldIcon(fields, value, iconType) {\n\tlet icon;\n\tconst correctField = fields.find(function(field) {\n\t\treturn field.origName === value;\n\t});\n\tswitch (iconType) {\n\tcase \"measure\":\n\t\tif (!correctField) {\n\t\t\treturn CARBON_ICONS.MEASUREMENTS.EMPTY;\n\t\t}\n\t\tswitch (correctField.metadata.measure) {\n\t\tcase \"range\":\n\t\t\ticon = CARBON_ICONS.MEASUREMENTS.SCALE;\n\t\t\tbreak;\n\t\tcase \"ordered_set\":\n\t\t\ticon = CARBON_ICONS.MEASUREMENTS.ORDINAL;\n\t\t\tbreak;\n\t\tcase \"discrete\":\n\t\t\ticon = CARBON_ICONS.MEASUREMENTS.DISCRETE;\n\t\t\tbreak;\n\t\tcase \"set\":\n\t\t\ticon = CARBON_ICONS.MEASUREMENTS.NOMINAL;\n\t\t\tbreak;\n\t\tcase \"flag\":\n\t\t\ticon = CARBON_ICONS.MEASUREMENTS.FLAG;\n\t\t\tbreak;\n\t\tcase \"collection\":\n\t\t\ticon = CARBON_ICONS.MEASUREMENTS.NOMINAL;\n\t\t\tbreak;\n\t\tcase \"geospatial\":\n\t\t\ticon = CARBON_ICONS.MEASUREMENTS.NOMINAL;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ticon = CARBON_ICONS.MEASUREMENTS.EMPTY;\n\t\t\tbreak;\n\t\t}\n\t\tbreak;\n\tcase \"type\":\n\t\tif (!correctField) {\n\t\t\treturn \"typeEmpty\";\n\t\t}\n\t\tswitch (correctField.type) {\n\t\tcase DATA_TYPE.DATE:\n\t\t\ticon = DATA_TYPE.DATE;\n\t\t\tbreak;\n\t\tcase DATA_TYPE.TIME:\n\t\t\ticon = DATA_TYPE.TIME;\n\t\t\tbreak;\n\t\tcase DATA_TYPE.TIMESTAMP:\n\t\t\ticon = DATA_TYPE.TIMESTAMP;\n\t\t\tbreak;\n\t\tcase DATA_TYPE.STRING:\n\t\t\ticon = DATA_TYPE.STRING;\n\t\t\tbreak;\n\t\tcase DATA_TYPE.INTEGER:\n\t\t\ticon = DATA_TYPE.INTEGER;\n\t\t\tbreak;\n\t\tcase DATA_TYPE.DOUBLE:\n\t\t\ticon = DATA_TYPE.DOUBLE;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ticon = \"typeEmpty\";\n\t\t\tbreak;\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\treturn icon;\n}\n\n\n// Attempts to synchronize the Modeler notions of measurement level\n// and modeling role with those defined in datarecord-metadata.\nfunction _findCorrespondingValue(input, values) {\n\t// First try for an exact match\n\tconst idx = values.indexOf(input);\n\tif (idx > -1) {\n\t\treturn values[idx];\n\t}\n\t// Next try for a case insensitive match\n\tconst searchTerm = input.toLowerCase();\n\tfor (const value of values) {\n\t\tif (searchTerm === value.toLowerCase()) {\n\t\t\treturn value;\n\t\t}\n\t}\n\t// Finally try for a startsWith match\n\tfor (const value of values) {\n\t\tif (searchTerm.startsWith(value.substring(0, 6).toLowerCase())) {\n\t\t\treturn value;\n\t\t}\n\t}\n\t// Last resort: Return the original value\n\treturn input;\n}\n\nexport {\n\ttoType,\n\tformatMessage,\n\tevaluateText,\n\tgetTableFieldIndex,\n\tconvertInputDataModel,\n\tisSubControlStructureObjectType,\n\tconvertObjectStructureToArray,\n\tconvertArrayStructureToObject,\n\tgetFieldsFromControlValues,\n\tcopy,\n\tstringifyFieldValue,\n\tfieldValueMatchesProto,\n\tfieldStringToValue,\n\tgenerateId,\n\tgetDMDefault,\n\tgetDMFieldIcon\n};\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\";\nimport { v4 as uuid4 } from \"uuid\";\nimport Tooltip from \"./../../../tooltip/tooltip.jsx\";\nimport { has } from \"lodash\";\n\n// Reusable component to show tooltip if the content is truncated\nexport default class TruncatedContentTooltip extends React.Component {\n\n\trender() {\n\t\tlet tooltipText = this.props.tooltipText;\n\t\tif (typeof this.props.tooltipText !== \"object\") {\n\t\t\ttooltipText = String(this.props.tooltipText);\n\t\t}\n\t\tconst tooltip = (\n\t\t\t<div className=\"properties-tooltips\">\n\t\t\t\t{tooltipText}\n\t\t\t</div>\n\t\t);\n\t\treturn (\n\t\t\t<div className=\"properties-truncated-tooltip\">\n\t\t\t\t<Tooltip\n\t\t\t\t\tid={`${uuid4()}-properties`}\n\t\t\t\t\ttip={tooltip}\n\t\t\t\t\tdirection=\"bottom\"\n\t\t\t\t\tclassName=\"properties-tooltips\"\n\t\t\t\t\tdisable={has(this.props, \"disabled\") ? this.props.disabled : true}\n\t\t\t\t\tshowToolTipIfTruncated\n\t\t\t\t>\n\t\t\t\t\t{this.props.content}\n\t\t\t\t</Tooltip>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nTruncatedContentTooltip.propTypes = {\n\tcontent: PropTypes.element.isRequired,\n\ttooltipText: PropTypes.oneOfType([\n\t\tPropTypes.string.isRequired,\n\t\tPropTypes.object.isRequired,\n\t\tPropTypes.number.isRequired,\n\t\tPropTypes.bool.isRequired,\n\t\tPropTypes.array.isRequired\n\t]),\n\tdisabled: PropTypes.bool\n};\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 TruncatedContentTooltip from \"./truncated-content-tooltip.jsx\";\nexport default TruncatedContentTooltip;\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\n/* eslint max-depth: [\"error\", 6] */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport FlexibleTable from \"./../flexible-table\";\nimport TruncatedContentTooltip from \"./../truncated-content-tooltip\";\nimport PropertiesButtons from \"./../properties-buttons\";\nimport * as PropertyUtils from \"./../../util/property-utils\";\n\nimport { Button } from \"carbon-components-react\";\n\nimport { MESSAGE_KEYS, DATA_TYPE, SORT_DIRECTION, ROW_SELECTION } from \"./../../constants/constants\";\nimport Icon from \"./../../../icons/icon.jsx\";\nimport { ArrowLeft24, Reset24 } from \"@carbon/icons-react\";\n\nimport { has, isEmpty, sortBy, isEqual } from \"lodash\";\n\nimport Tooltip from \"./../../../tooltip/tooltip.jsx\";\n\nimport { v4 as uuid4 } from \"uuid\";\n\nexport default class FieldPicker extends React.Component {\n\tstatic getDerivedStateFromProps(nextProps, prevState) {\n\t\tif (!isEqual(nextProps.fields, prevState.origFields)) {\n\t\t\tlet selectedFields = prevState.selectedFields;\n\t\t\tif (nextProps.currentFields) {\n\t\t\t\tif (!isEqual(Object.keys(nextProps.currentFields), Object.keys(prevState.selectedFields))) {\n\t\t\t\t\tselectedFields = nextProps.currentFields;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn ({ fields: nextProps.fields, selectedFields: selectedFields, origFields: nextProps.fields });\n\t\t}\n\t\treturn ({});\n\t}\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tfields: this.props.fields, // list of fields dynamically adjusted by filtered or sort criteria\n\t\t\torigFields: this.props.fields,\n\t\t\tfilterIcons: [],\n\t\t\tfilterText: \"\",\n\t\t\tselectedFields: this.props.currentFields // list of fields selected\n\t\t};\n\t\tthis.multiSchema = props.controller.getDatasetMetadataSchemas() &&\n\t\t\tprops.controller.getDatasetMetadataSchemas().length > 1;\n\t\tthis.filterList = [];\n\n\t\tthis.filterType = this.filterType.bind(this);\n\t\tthis.getTableData = this.getTableData.bind(this);\n\t\tthis.getVisibleData = this.getVisibleData.bind(this);\n\t\tthis.handleSave = this.handleSave.bind(this);\n\t\tthis.handleCancel = this.handleCancel.bind(this);\n\t\tthis.handleReset = this.handleReset.bind(this);\n\t\tthis.getNewSelections = this.getNewSelections.bind(this);\n\t\tthis.onSort = this.onSort.bind(this);\n\t\tthis.onFilter = this.onFilter.bind(this);\n\t\tthis.updateFieldSelections = this.updateFieldSelections.bind(this);\n\t\tthis.filterList = this.getAvailableFilters();\n\t}\n\n\tonFilter(filterString) {\n\t\tthis.setState({ filterText: filterString });\n\t}\n\n\t/**\n\t* Reorder the current list of fields displayed according to the sort column\n\t* @param spec object with a column and direction to sort\n\t*/\n\tonSort(spec) {\n\t\tlet fields = Array.from(this.state.fields);\n\t\tfields = sortBy(fields, function(field) {\n\t\t\tswitch (spec.column) {\n\t\t\tcase \"fieldName\": return field.origName;\n\t\t\tcase \"dataType\": return field.type;\n\t\t\tcase \"schemaName\": return field.schema;\n\t\t\tdefault: return null;\n\t\t\t}\n\t\t});\n\t\tif (spec.direction === SORT_DIRECTION.DESC) {\n\t\t\tfields.reverse();\n\t\t}\n\t\tthis.setState({ fields: fields });\n\t}\n\n\tgetAvailableFilters() {\n\t\tconst filters = [];\n\t\tfor (const key in DATA_TYPE) {\n\t\t\tif (has(DATA_TYPE, key)) {\n\t\t\t\tconst dataType = DATA_TYPE[key];\n\t\t\t\tfor (const field of this.props.fields) {\n\t\t\t\t\tif (dataType === field.type) {\n\t\t\t\t\t\tconst filter = {\n\t\t\t\t\t\t\t\"type\": field.type\n\t\t\t\t\t\t};\n\t\t\t\t\t\tlet duplicate = false;\n\t\t\t\t\t\tfor (const filtered of filters) {\n\t\t\t\t\t\t\tif (filtered.type === filter.type) {\n\t\t\t\t\t\t\t\tduplicate = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!duplicate) {\n\t\t\t\t\t\t\tfilters.push(filter);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn filters;\n\t}\n\n\tgetTableData() {\n\t\tconst fields = this.getVisibleData();\n\t\tconst tableData = [];\n\t\tconst selectedFields = this.state.selectedFields;\n\t\tconst selectedRowsIndex = [];\n\t\tfor (let i = 0; i < selectedFields.length; i++) {\n\t\t\tconst idx = fields.findIndex((field) => field.name === selectedFields[i]);\n\t\t\tif (idx !== -1) {\n\t\t\t\tselectedRowsIndex.push(idx);\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < fields.length; i++) {\n\t\t\tconst field = fields[i];\n\t\t\tconst columns = [];\n\t\t\tlet dmIcon = null;\n\t\t\tif (this.props.dmIcon && this.props.dmIcon !== \"type\") {\n\t\t\t\tconst metadata = this.props.controller.getDatasetMetadataFields();\n\t\t\t\tconst dmIconType = PropertyUtils.getDMFieldIcon(metadata, field.origName, this.props.dmIcon);\n\t\t\t\tconst icon = dmIconType ? <Icon type={dmIconType} /> : null;\n\t\t\t\t// don't show icon for type since it's already being displayed\n\t\t\t\tif (icon) {\n\t\t\t\t\tdmIcon = (\n\t\t\t\t\t\t<div className=\"properties-fp-field-type-icon\">\n\t\t\t\t\t\t\t{icon}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst fpFieldName = (\n\t\t\t\t<span className=\"properties-fp-field-name\">\n\t\t\t\t\t{field.origName}\n\t\t\t\t</span>\n\t\t\t);\n\n\t\t\tconst fieldNameWithTooltip = (\n\t\t\t\t<TruncatedContentTooltip\n\t\t\t\t\tcontent={fpFieldName}\n\t\t\t\t\ttooltipText={field.origName}\n\t\t\t\t\tdisabled={false}\n\t\t\t\t/>\n\t\t\t);\n\t\t\tconst fieldContent = (\n\t\t\t\t<div className=\"properties-fp-field\">\n\t\t\t\t\t{dmIcon}\n\t\t\t\t\t{fieldNameWithTooltip}\n\t\t\t\t</div>\n\t\t\t);\n\n\t\t\tcolumns.push({\n\t\t\t\tcolumn: \"fieldName\",\n\t\t\t\tcontent: fieldContent,\n\t\t\t\tfieldName: field.origName\n\t\t\t});\n\t\t\tif (this.multiSchema) {\n\t\t\t\tconst schemaContent = (<div className=\"properties-fp-schema\">\n\t\t\t\t\t{field.schema}\n\t\t\t\t</div>);\n\t\t\t\tcolumns.push({ column: \"schemaName\", content: schemaContent });\n\t\t\t}\n\t\t\tcolumns.push({\n\t\t\t\tcolumn: \"dataType\",\n\t\t\t\tcontent: (<div className=\"properties-fp-data\">\n\t\t\t\t\t<div className={\"properties-fp-data-type-icon\"}>\n\t\t\t\t\t\t<Icon type={field.type} />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"properties-fp-field-type\">{field.type}</div>\n\t\t\t\t</div>),\n\t\t\t\tvalue: field.type\n\t\t\t});\n\n\t\t\ttableData.push({ className: \"properties-fp-data-rows\", columns: columns });\n\t\t}\n\t\tthis.selectedRowsIndex = selectedRowsIndex;\n\t\treturn tableData;\n\t}\n\n\t/**\n\t* Returns list of visible fields from search or filter\n\t*/\n\tgetVisibleData() {\n\t\tconst that = this;\n\t\tconst data = this.state.fields;\n\t\tconst\tfilteredData = data.filter(function(row) {\n\t\t\treturn that.state.filterIcons.indexOf(row.type) < 0;\n\t\t});\n\n\t\tconst visibleData = filteredData.filter(function(row) {\n\t\t\tif (typeof that.state.filterText !== \"undefined\" && that.state.filterText !== null) {\n\t\t\t\treturn row.origName.toLowerCase().indexOf(that.state.filterText.toLowerCase()) > -1;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\treturn visibleData;\n\t}\n\n\t/**\n\t * Returns any new columns that were not a part of the original set.\n\t */\n\tgetNewSelections() {\n\t\tconst deltas = [];\n\t\tconst initialValues = this.props.currentFields;\n\t\tif (this.state.selectedFields) {\n\t\t\tfor (let i = 0; i < this.state.selectedFields.length; i++) {\n\t\t\t\tif (typeof initialValues === \"undefined\" || initialValues === null || initialValues.indexOf(this.state.selectedFields[i]) < 0) {\n\t\t\t\t\tdeltas.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn deltas;\n\t}\n\n\thandleSave() {\n\t\tthis.props.closeFieldPicker(this.state.selectedFields, this.getNewSelections());\n\t}\n\n\thandleCancel() {\n\t\tthis.handleReset();\n\t\tthis.props.closeFieldPicker();\n\t}\n\n\tupdateFieldSelections(rowsIndex) {\n\t\tconst fields = this.getVisibleData();\n\t\tconst currField = Array.from(this.state.selectedFields);\n\t\t// Remove previously selected fields\n\t\tlet current = currField.filter(function(value, index, arr) {\n\t\t\tconst idx = fields.findIndex((field) => field.name === currField[index]);\n\t\t\treturn (idx === -1);\n\t\t});\n\t\t// Add new selections in current\n\t\trowsIndex.forEach((rowIndex) => {\n\t\t\tcurrent.push(fields[rowIndex].name);\n\t\t});\n\n\t\tcurrent = Array.from(new Set(current));\n\t\tthis.setState({\n\t\t\tselectedFields: current\n\t\t});\n\t}\n\n\t/**\n\t* Returns true if field is found in list, else false\n\t* @param list array of fields to search through\n\t* @param fieldName field name to find in data\n\t*/\n\tisFieldInList(list, fieldName) {\n\t\treturn list.some(function(field) {\n\t\t\treturn field.name === fieldName;\n\t\t});\n\t}\n\n\thandleReset() {\n\t\tthis.setState({\n\t\t\tselectedFields: this.props.currentFields,\n\t\t\tfilterIcons: [],\n\t\t\tfilterText: \"\",\n\t\t});\n\t}\n\n\tfilterType(evt) {\n\t\tconst type = evt.currentTarget.getAttribute(\"data-type\");\n\t\tconst iconsSelected = Array.from(this.state.filterIcons);\n\t\tconst index = iconsSelected.indexOf(type);\n\t\tif (index < 0) {\n\t\t\ticonsSelected.push(type);\n\t\t} else {\n\t\t\ticonsSelected.splice(index, 1);\n\t\t}\n\t\tthis.setState({ filterIcons: iconsSelected });\n\t}\n\n\t_genBackButton() {\n\t\tif (this.props.rightFlyout) {\n\t\t\tconst applyLabel = PropertyUtils.formatMessage(this.props.controller.getReactIntl(), MESSAGE_KEYS.APPLYBUTTON_LABEL);\n\t\t\tconst rejectLabel = PropertyUtils.formatMessage(this.props.controller.getReactIntl(), MESSAGE_KEYS.REJECTBUTTON_LABEL);\n\n\t\t\treturn (<PropertiesButtons\n\t\t\t\tokHandler={this.handleSave}\n\t\t\t\tcancelHandler={this.handleCancel}\n\t\t\t\tshowPropertiesButtons\n\t\t\t\tapplyLabel={applyLabel}\n\t\t\t\trejectLabel={rejectLabel}\n\t\t\t/>);\n\t\t}\n\n\t\tconst saveTooltip = PropertyUtils.formatMessage(this.props.controller.getReactIntl(),\n\t\t\tMESSAGE_KEYS.FIELDPICKER_SAVEBUTTON_TOOLTIP);\n\t\tconst tooltipId = uuid4() + \"-tooltip-fp\";\n\t\tconst tooltip = (\n\t\t\t<div className=\"properties-tooltips\">\n\t\t\t\t{saveTooltip}\n\t\t\t</div>\n\t\t);\n\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<Tooltip\n\t\t\t\t\tid={tooltipId}\n\t\t\t\t\ttip={tooltip}\n\t\t\t\t\tdirection=\"left\"\n\t\t\t\t\tclassName=\"properties-tooltips\"\n\t\t\t\t>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"properties-fp-back-button\"\n\t\t\t\t\t\t\trenderIcon={ArrowLeft24}\n\t\t\t\t\t\t\ticonDescription={this.props.title}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tkind=\"primary\"\n\t\t\t\t\t\t\tonClick={this.handleSave}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<label className=\"properties-fp-button-label\">{this.props.title}</label>\n\t\t\t\t\t</div>\n\t\t\t\t</Tooltip>\n\t\t\t</div>\n\t\t);\n\t}\n\n\t_genResetButton() {\n\t\tconst resetLabel = PropertyUtils.formatMessage(this.props.controller.getReactIntl(),\n\t\t\tMESSAGE_KEYS.FIELDPICKER_RESETBUTTON_LABEL);\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tclassName=\"properties-fp-reset-button-container\"\n\t\t\t\tonClick={this.handleReset}\n\t\t\t\trenderIcon={Reset24}\n\t\t\t\ticonDescription={resetLabel}\n\t\t\t\tsize=\"small\"\n\t\t\t\tkind=\"ghost\"\n\t\t\t>\n\t\t\t\t<span>{resetLabel}</span>\n\t\t\t</Button>\n\t\t);\n\t}\n\n\t_genFilterTypes() {\n\t\tconst that = this;\n\t\tconst filterLabel = PropertyUtils.formatMessage(this.props.controller.getReactIntl(),\n\t\t\tMESSAGE_KEYS.FIELDPICKER_FILTER_LABEL);\n\t\tconst filters = this.filterList.map(function(filter, ind) {\n\t\t\tlet enabled = true;\n\t\t\tfor (let i = 0; i < that.state.filterIcons.length; i++) {\n\t\t\t\tif (filter.type === that.state.filterIcons[i]) {\n\t\t\t\t\tenabled = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst filterTooltipId = uuid4() + \"-tooltip-filters-\" + ind;\n\t\t\tconst dataTypeLabel = PropertyUtils.formatMessage(that.props.controller.getReactIntl(), MESSAGE_KEYS[`FIELDPICKER_${filter.type.toUpperCase()}_LABEL`]);\n\t\t\tconst tooltip = (\n\t\t\t\t<div className=\"properties-tooltips\">\n\t\t\t\t\t{dataTypeLabel}\n\t\t\t\t</div>\n\t\t\t);\n\t\t\tconst row = (\n\t\t\t\t<li key={\"filters\" + ind} className=\"properties-fp-filter-list-li\">\n\t\t\t\t\t<div className=\"properties-tooltips-filter\">\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\tid={filterTooltipId}\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 icon-tooltip\"\n\t\t\t\t\t\t\tdisable={isEmpty(filter.type)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tclassName=\"properties-fp-filter\"\n\t\t\t\t\t\t\t\tdata-type={filter.type}\n\t\t\t\t\t\t\t\tonClick={that.filterType.bind(that)}\n\t\t\t\t\t\t\t\taria-label={filterLabel + \" \" + filter.type}\n\t\t\t\t\t\t\t\tkind=\"ghost\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon type={filter.type} disabled={!enabled} />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</div>\n\t\t\t\t</li>\n\t\t\t);\n\t\t\treturn (row);\n\t\t});\n\t\treturn (\n\t\t\t<ul className=\"properties-fp-filter-list\">\n\t\t\t\t<li className=\"properties-fp-filter-list-title properties-fp-filter-list-li\">\n\t\t\t\t\t{filterLabel}\n\t\t\t\t</li>\n\t\t\t\t{filters}\n\t\t\t</ul>\n\t\t);\n\t}\n\n\t_genTable() {\n\n\t\tconst fieldColumnLabel = PropertyUtils.formatMessage(this.props.controller.getReactIntl(),\n\t\t\tMESSAGE_KEYS.FIELDPICKER_FIELDCOLUMN_LABEL);\n\t\t// TODO: debug why resource key not used\n\t\tconst schemaColumnLabel = PropertyUtils.formatMessage(this.props.controller.getReactIntl(),\n\t\t\tMESSAGE_KEYS.FIELDPICKER_SCHEMACOLUMN_LABEL);\n\t\tconst dataTypeColumnLabel = PropertyUtils.formatMessage(this.props.controller.getReactIntl(),\n\t\t\tMESSAGE_KEYS.FIELDPICKER_DATATYPECOLUMN_LABEL);\n\t\t// TODO get label from resource and make id unique\n\t\tconst headers = [];\n\t\theaders.push({ \"key\": \"fieldName\", \"label\": fieldColumnLabel });\n\t\tif (this.multiSchema) {\n\t\t\theaders.push({ \"key\": \"schemaName\", \"label\": schemaColumnLabel });\n\t\t}\n\t\theaders.push({ \"key\": \"dataType\", \"label\": dataTypeColumnLabel });\n\n\t\tconst tableData = this.getTableData();\n\n\t\treturn (\n\t\t\t<FlexibleTable className=\"properties-fp-table\"\n\t\t\t\tsortable={[\"fieldName\", \"schemaName\", \"dataType\"]}\n\t\t\t\tfilterable={[\"fieldName\"]}\n\t\t\t\tonFilter={this.onFilter}\n\t\t\t\tcolumns={headers}\n\t\t\t\tdata={tableData}\n\t\t\t\tonSort={this.onSort}\n\t\t\t\tfilterKeyword={this.state.filterText}\n\t\t\t\tscrollKey=\"field-picker\"\n\t\t\t\tnoAutoSize\n\t\t\t\ttableLabel={this.props.title ? this.props.title : \"\"}\n\t\t\t\tselectedRows={this.selectedRowsIndex}\n\t\t\t\tupdateRowSelections={this.updateFieldSelections}\n\t\t\t\trowSelection={ROW_SELECTION.MULTIPLE}\n\t\t\t\tlight={this.props.controller.getLight()}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\tconst backButton = this._genBackButton();\n\t\tconst resetButton = this._genResetButton();\n\t\tconst filterTypes = this._genFilterTypes();\n\t\tconst table = this._genTable();\n\n\t\tif (this.props.rightFlyout) {\n\t\t\treturn (<React.Fragment>\n\t\t\t\t<div className=\"properties-fp-top-row\">\n\t\t\t\t\t{filterTypes}\n\t\t\t\t\t{resetButton}\n\t\t\t\t</div>\n\t\t\t\t{table}\n\t\t\t\t{backButton}\n\t\t\t</React.Fragment>);\n\t\t}\n\n\t\treturn (<div>\n\t\t\t<div className=\"properties-fp-top-row\">\n\t\t\t\t{backButton}\n\t\t\t\t{resetButton}\n\t\t\t</div>\n\t\t\t{filterTypes}\n\t\t\t{table}\n\t\t</div>);\n\t}\n}\n\nFieldPicker.propTypes = {\n\tcloseFieldPicker: PropTypes.func.isRequired,\n\tcurrentFields: PropTypes.array.isRequired,\n\tfields: PropTypes.array, // in current data model\n\ttitle: PropTypes.string,\n\tcontroller: PropTypes.object.isRequired,\n\trightFlyout: PropTypes.bool,\n\tdmIcon: PropTypes.string\n};\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 FieldPicker from \"./field-picker.jsx\";\nexport default FieldPicker;\n"],"names":["PropertiesButtons","rejectButton","applyButton","applyButtonLabel","this","props","applyLabel","intl","formatMessage","id","defaultMessage","defaultMessages","rejectButtonLabel","rejectLabel","cancelHandler","React","Button","className","type","size","kind","onClick","okHandler","disabled","applyButtonEnabled","classNames","hide","showPropertiesButtons","Component","defaultProps","injectIntl","baseIsEqual","require$$0","isEqual_1","value","other","ParamRole","TEXT","ENUM","COLUMN","NEW_COLUMN","EXPRESSION","EMAIL","URL","COLOR","INTERVAL_YEAR","INTERVAL_DAY","INTERVAL_SECOND","CUSTOM","UNSPECIFIED","isArrayLike","_baseEach","eachFunc","fromRight","collection","iteratee","length","index","iterable","Object","createBaseEach","baseEach","require$$1","_baseMap","result","Array","key","_baseSortBy","array","comparer","sort","isSymbol","compareAscending","valIsDefined","undefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","_compareMultiple","object","orders","objCriteria","criteria","othCriteria","ordersLength","arrayMap","baseGet","baseIteratee","require$$2","baseMap","require$$3","baseSortBy","require$$4","baseUnary","require$$5","compareMultiple","require$$6","identity","require$$7","isArray","require$$8","_baseOrderBy","iteratees","eq","isIndex","isObject","_isIterateeCall","baseFlatten","baseOrderBy","baseRest","isIterateeCall","sortBy_1","_getErrorMessage","prefix","errorObject","classID","lineNumber","message","console","log","warn","error","toType","obj","toString","call","match","toLowerCase","substituteObj","defaultMessages1","defaultMessages2","_getExpParameterValue","expParam","controller","isNaN","getPropertyValue","name","trim","parseFloat","getTableFieldIndex","control","subControls","i","role","convertType","storage","retVal","stringifyFieldValue","excludeSchema","valueDef","link_ref","field_name","getDMFieldIcon","fields","iconType","icon","correctField","find","field","origName","CARBON_ICONS","MEASUREMENTS","EMPTY","metadata","measure","SCALE","ORDINAL","DISCRETE","NOMINAL","FLAG","DATA_TYPE","DATE","TIME","TIMESTAMP","STRING","INTEGER","DOUBLE","_findCorrespondingValue","input","values","idx","indexOf","searchTerm","_iterator7","startsWith","substring","_iterator8","TruncatedContentTooltip","tooltipText","_typeof","String","tooltip","Tooltip","uuid4","tip","direction","disable","_has","showToolTipIfTruncated","content","FieldPicker","_classCallCheck","_this","state","origFields","filterIcons","filterText","selectedFields","currentFields","multiSchema","getDatasetMetadataSchemas","filterList","filterType","bind","getTableData","getVisibleData","handleSave","handleCancel","handleReset","getNewSelections","onSort","onFilter","updateFieldSelections","getAvailableFilters","filterString","setState","spec","from","_sortBy","column","schema","SORT_DIRECTION","DESC","reverse","filters","dataType","filter","duplicate","_iterator2","push","_iterator","tableData","selectedRowsIndex","findIndex","_loop","columns","dmIcon","dmIconType","PropertyUtils","getDatasetMetadataFields","Icon","fpFieldName","fieldNameWithTooltip","fieldContent","fieldName","schemaContent","that","row","deltas","initialValues","closeFieldPicker","rowsIndex","currField","current","arr","forEach","rowIndex","Set","list","some","evt","currentTarget","getAttribute","iconsSelected","splice","rightFlyout","getReactIntl","MESSAGE_KEYS","APPLYBUTTON_LABEL","REJECTBUTTON_LABEL","saveTooltip","FIELDPICKER_SAVEBUTTON_TOOLTIP","tooltipId","renderIcon","ArrowLeft24","iconDescription","title","resetLabel","FIELDPICKER_RESETBUTTON_LABEL","Reset24","filterLabel","FIELDPICKER_FILTER_LABEL","map","ind","enabled","filterTooltipId","dataTypeLabel","toUpperCase","_isEmpty","fieldColumnLabel","FIELDPICKER_FIELDCOLUMN_LABEL","schemaColumnLabel","FIELDPICKER_SCHEMACOLUMN_LABEL","dataTypeColumnLabel","FIELDPICKER_DATATYPECOLUMN_LABEL","headers","label","FlexibleTable","sortable","filterable","data","filterKeyword","scrollKey","noAutoSize","tableLabel","selectedRows","updateRowSelections","rowSelection","ROW_SELECTION","MULTIPLE","light","getLight","backButton","_genBackButton","resetButton","_genResetButton","filterTypes","_genFilterTypes","table","_genTable","Fragment","nextProps","prevState","_isEqual","keys","TEXTFIELD","PASSWORDFIELD","TEXTAREA","LIST","NUMBERFIELD","DATEFIELD","TIMEFIELD","CHECKBOX","TOGGLE","RADIOSET","CHECKBOXSET","ONEOFSELECT","MULTISELECT","SOMEOFSELECT","SELECTCOLUMN","SELECTCOLUMNS","SELECTSCHEMA","STRUCTURETABLE","STRUCTUREEDITOR","STRUCTURELISTEDITOR","TOGGLETEXT","READONLY","READONLYTABLE","SPINNER","CODE","HIDDEN","INLINE","SUBPANEL","ON_PANEL","CONTROLS","TABS","SUB_TABS","PANELS","ADDITIONAL","COLUMN_SELECTION","PANEL_SELECTOR","CUSTOM_PANEL","SUMMARY_PANEL","ACTION_PANEL","TEXT_PANEL","TWISTY_PANEL","COLUMN_PANEL","TEARSHEET_PANEL","CONTROL","ADDITIONAL_LINK","STATIC_TEXT","HORIZONTAL_SEPARATOR","PANEL","TEARSHEET","PRIMARY_TABS","ACTION","VERTICAL","HORIZONTAL","GENERAL","SUMMARY","BEFORE","AFTER","LARGE","MEDIUM","SMALL","BOOLEAN","LONG","PASSWORD","STRUCTURE","OBJECT","convertArrayStructureToObject","isList","currentValues","convert","structureKeys","convertedValues","newObject","keyIndex","structureType","convertedRow","converted","dataModel","datasetMetadata","description","modelingRole","modeling_role","convertObjectStructureToArray","_cloneDeep","evaluateText","text","startIdx","endIdx","substr","expression","newText","replace","paramValue","paramStartIdx","funcName","parameters","slice","split","toFixed","parseInt","_evaluateExpression","e","logger","stringValue","propType","_iterator5","fieldValue","fieldProto","subControlDef","defaultValue","dmField","dmDefault","_iterator6","controlValues","dataColumnIndex","outputList","controlValue","_iterator4","isSubControlStructureObjectType","subControl","_iterator3"],"mappings":"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"}