@sis-cc/dotstatsuite-visions 12.5.0 → 12.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -42,7 +42,8 @@ var Item = function Item(_ref) {
42
42
  _ref$depth = _ref.depth,
43
43
  depth = _ref$depth === undefined ? 0 : _ref$depth,
44
44
  eventsListeners = _ref.eventsListeners,
45
- expanded = _ref.expanded;
45
+ expanded = _ref.expanded,
46
+ highlightedLabel = _ref.highlightedLabel;
46
47
 
47
48
  var _useKeyboardEscapeHan = useKeyboardEscapeHandler(),
48
49
  open = _useKeyboardEscapeHan.open,
@@ -50,6 +51,7 @@ var Item = function Item(_ref) {
50
51
 
51
52
  var padding = depth * 30 + (depth > 0 && !hasChildrenOnLevel ? 30 : 0) + (!hasChild && hasChildrenOnLevel ? 30 : 0);
52
53
 
54
+ var formattedLabel = highlightedLabel ? React.createElement('div', { dangerouslySetInnerHTML: { __html: highlightedLabel } }) : label;
53
55
  return React.createElement(
54
56
  ListItem,
55
57
  {
@@ -151,7 +153,7 @@ var Item = function Item(_ref) {
151
153
  variant: 'body2',
152
154
  className: cx(classes.label, (_cx5 = {}, _cx5[classes.disabledLabel] = isGreyed, _cx5[classes.tooltipNotice] = !R.isEmpty(description), _cx5))
153
155
  },
154
- label
156
+ formattedLabel
155
157
  )
156
158
  ),
157
159
  R.not(R.isNil(count)) && React.createElement(
@@ -193,7 +195,8 @@ Item.propTypes = process.env.NODE_ENV !== "production" ? {
193
195
  depth: PropTypes.number,
194
196
  eventsListeners: PropTypes.object,
195
197
  isGreyed: PropTypes.bool,
196
- expanded: PropTypes.bool
198
+ expanded: PropTypes.bool,
199
+ highlightedLabel: PropTypes.string
197
200
  } : {};
198
201
 
199
202
  export default Item;
@@ -29,31 +29,47 @@ export var spotlightFilter = function spotlightFilter(term) {
29
29
  }
30
30
  return acc;
31
31
  };
32
+ var matchRegExp = function matchRegExp(str) {
33
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
34
+ };
35
+
36
+ // Highlight matching terms in the label
37
+ var highlightLabel = function highlightLabel(label) {
38
+ var regex = new RegExp('(' + matchRegExp(term) + ')', 'gi');
39
+ return label.replace(regex, function (match) {
40
+ return '<span style=background-color:yellow;border-bottom:2px solid #8CC841>' + match + '</span>';
41
+ });
42
+ };
32
43
 
33
44
  var recurse = function recurse(item) {
34
- var isValidItem = R.includes(R.toLower(term), R.toLower(labelRenderer(item)));
45
+ var label = labelRenderer(item);
46
+ var isValidItem = R.includes(R.toLower(term), R.toLower(label));
35
47
 
36
48
  var result = [];
37
49
 
38
50
  if (isValidItem) {
51
+ var highlightedLabel = highlightLabel(label);
52
+ console.log(highlightedLabel);
39
53
  var parents = findParents(item);
40
- result = [].concat(parents, [item]);
54
+ result = [].concat(parents, [_extends({}, item, { highlightedLabel: highlightedLabel })]);
55
+
41
56
  if (displayChildren) {
42
57
  var children = getDescendants(R.prop('id', item), groupedItemsByParentId);
43
- return [].concat(parents, [item], children);
58
+ return [].concat(parents, [_extends({}, item, { highlightedLabel: highlightedLabel })], children);
44
59
  }
45
60
  }
61
+
46
62
  if (R.has(getHierarchicalId(item), groupedItemsByParentId)) {
47
63
  var childItems = groupedItemsByParentId[getHierarchicalId(item)] || [];
48
64
  var matchingChildren = R.chain(recurse, childItems);
49
65
 
50
66
  // res with any matching children
51
- return R.uniq([].concat(result, matchingChildren));
67
+ return R.uniqBy(R.prop('id'), [].concat(result, matchingChildren));
52
68
  }
53
69
  return result;
54
70
  };
55
71
 
56
- return R.uniq(R.chain(recurse, groupedItemsByParentId['#ROOT'] || []));
72
+ return R.uniqBy(R.prop('id'))(R.chain(recurse, groupedItemsByParentId['#ROOT'] || []));
57
73
  };
58
74
  };
59
75
 
@@ -85,7 +85,8 @@ var Item = function Item(_ref) {
85
85
  _ref$depth = _ref.depth,
86
86
  depth = _ref$depth === undefined ? 0 : _ref$depth,
87
87
  eventsListeners = _ref.eventsListeners,
88
- expanded = _ref.expanded;
88
+ expanded = _ref.expanded,
89
+ highlightedLabel = _ref.highlightedLabel;
89
90
 
90
91
  var _useKeyboardEscapeHan = (0, _useKeybordEscapeHandler2.default)(),
91
92
  open = _useKeyboardEscapeHan.open,
@@ -93,6 +94,7 @@ var Item = function Item(_ref) {
93
94
 
94
95
  var padding = depth * 30 + (depth > 0 && !hasChildrenOnLevel ? 30 : 0) + (!hasChild && hasChildrenOnLevel ? 30 : 0);
95
96
 
97
+ var formattedLabel = highlightedLabel ? _react2.default.createElement('div', { dangerouslySetInnerHTML: { __html: highlightedLabel } }) : label;
96
98
  return _react2.default.createElement(
97
99
  _ListItem2.default,
98
100
  {
@@ -194,7 +196,7 @@ var Item = function Item(_ref) {
194
196
  variant: 'body2',
195
197
  className: (0, _classnames2.default)(classes.label, (_cx5 = {}, _cx5[classes.disabledLabel] = isGreyed, _cx5[classes.tooltipNotice] = !R.isEmpty(description), _cx5))
196
198
  },
197
- label
199
+ formattedLabel
198
200
  )
199
201
  ),
200
202
  R.not(R.isNil(count)) && _react2.default.createElement(
@@ -236,7 +238,8 @@ Item.propTypes = process.env.NODE_ENV !== "production" ? {
236
238
  depth: _propTypes2.default.number,
237
239
  eventsListeners: _propTypes2.default.object,
238
240
  isGreyed: _propTypes2.default.bool,
239
- expanded: _propTypes2.default.bool
241
+ expanded: _propTypes2.default.bool,
242
+ highlightedLabel: _propTypes2.default.string
240
243
  } : {};
241
244
 
242
245
  exports.default = Item;
@@ -3,7 +3,8 @@
3
3
  exports.__esModule = true;
4
4
  exports.withSpotlight = exports.spotlightFilter = undefined;
5
5
 
6
- var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
6
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* eslint react/prop-types: 0 */
7
+
7
8
 
8
9
  var _ramda = require('ramda');
9
10
 
@@ -19,8 +20,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
19
20
 
20
21
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
21
22
 
22
- function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } /* eslint react/prop-types: 0 */
23
-
23
+ function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
24
24
 
25
25
  var spotlightFilter = exports.spotlightFilter = function spotlightFilter(term) {
26
26
  var labelRenderer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : R.prop('label');
@@ -44,31 +44,47 @@ var spotlightFilter = exports.spotlightFilter = function spotlightFilter(term) {
44
44
  }
45
45
  return acc;
46
46
  };
47
+ var matchRegExp = function matchRegExp(str) {
48
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
49
+ };
50
+
51
+ // Highlight matching terms in the label
52
+ var highlightLabel = function highlightLabel(label) {
53
+ var regex = new RegExp('(' + matchRegExp(term) + ')', 'gi');
54
+ return label.replace(regex, function (match) {
55
+ return '<span style=background-color:yellow;border-bottom:2px solid #8CC841>' + match + '</span>';
56
+ });
57
+ };
47
58
 
48
59
  var recurse = function recurse(item) {
49
- var isValidItem = R.includes(R.toLower(term), R.toLower(labelRenderer(item)));
60
+ var label = labelRenderer(item);
61
+ var isValidItem = R.includes(R.toLower(term), R.toLower(label));
50
62
 
51
63
  var result = [];
52
64
 
53
65
  if (isValidItem) {
66
+ var highlightedLabel = highlightLabel(label);
67
+ console.log(highlightedLabel);
54
68
  var parents = findParents(item);
55
- result = [].concat(parents, [item]);
69
+ result = [].concat(parents, [_extends({}, item, { highlightedLabel: highlightedLabel })]);
70
+
56
71
  if (displayChildren) {
57
72
  var children = (0, _utils.getDescendants)(R.prop('id', item), groupedItemsByParentId);
58
- return [].concat(parents, [item], children);
73
+ return [].concat(parents, [_extends({}, item, { highlightedLabel: highlightedLabel })], children);
59
74
  }
60
75
  }
76
+
61
77
  if (R.has((0, _utils.getHierarchicalId)(item), groupedItemsByParentId)) {
62
78
  var childItems = groupedItemsByParentId[(0, _utils.getHierarchicalId)(item)] || [];
63
79
  var matchingChildren = R.chain(recurse, childItems);
64
80
 
65
81
  // res with any matching children
66
- return R.uniq([].concat(result, matchingChildren));
82
+ return R.uniqBy(R.prop('id'), [].concat(result, matchingChildren));
67
83
  }
68
84
  return result;
69
85
  };
70
86
 
71
- return R.uniq(R.chain(recurse, groupedItemsByParentId['#ROOT'] || []));
87
+ return R.uniqBy(R.prop('id'))(R.chain(recurse, groupedItemsByParentId['#ROOT'] || []));
72
88
  };
73
89
  };
74
90
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sis-cc/dotstatsuite-visions",
3
- "version": "12.5.0",
3
+ "version": "12.6.0",
4
4
  "description": "Library of visual components",
5
5
  "author": "OECD",
6
6
  "homepage": "https://visions-qa.siscc.org/#o",
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @sis-cc/dotstatsuite-visions v12.5.0 - https://visions-qa.siscc.org/#o
2
+ * @sis-cc/dotstatsuite-visions v12.6.0 - https://visions-qa.siscc.org/#o
3
3
  * MIT Licensed
4
4
  */
5
5
  (function webpackUniversalModuleDefinition(root, factory) {
@@ -9187,7 +9187,7 @@ if (true) {
9187
9187
  /* 166 */
9188
9188
  /***/ (function(module) {
9189
9189
 
9190
- module.exports = {"name":"@sis-cc/dotstatsuite-visions","version":"12.5.0","description":"Library of visual components","author":"OECD","homepage":"https://visions-qa.siscc.org/#o","license":"MIT","repository":"https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-visions","main":"lib/index.js","module":"es/index.js","engines":{"node":">=14"},"files":["css","es","lib","umd"],"scripts":{"build":"nwb build-react-component --copy-files --no-demo && node scripts/doc && nwb build-demo","build:dev":"nwb build-react-component --copy-files --no-demo","clean":"nwb clean-module && nwb clean-demo","prepublishOnly":"npm run build","start":"nwb serve-react-demo","test":"jest","test:watch":"jest --watch --no-cache","lint":"eslint src/ --color","precommit":"lint-staged"},"dependencies":{"@emotion/react":"^11.13.0","@emotion/styled":"^11.13.0","@hello-pangea/dnd":"^16.6.0","@mui/icons-material":"^5.16.5","@mui/material":"^5.16.5","@mui/styles":"^5.16.5","@react-hook/size":"^2.1.1","classnames":"^2.2.6","cross-env":"^7.0.3","date-fns":"^1.30.1","isemail":"^3.2.0","numeral":"^2.0.6","prop-types":"^15.7.2","ramda":"^0.27.0","react-draggable":"^4.4.5","react-error-boundary":"^4.0.10","react-virtualized":"^9.21.2"},"peerDependencies":{"@mui/icons-material":"^5.16.5","@mui/material":"^5.16.5","react":"^18","react-dom":"^18"},"devDependencies":{"@babel/eslint-parser":"^7.5.4","@babel/plugin-syntax-dynamic-import":"^7.2.0","@cfaester/enzyme-adapter-react-18":"^0.7.0","@mui/icons-material":"^5.16.5","@mui/material":"^5.16.5","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^14.0.0","babel-jest":"^24.8.0","babel-preset-react-app":"^9.0.0","dox":"^0.9.0","eslint":"^8.39.0","eslint-plugin-import":"^2.27.5","eslint-plugin-jsx-a11y":"^6.7.1","eslint-plugin-prettier":"^4.2.1","eslint-plugin-react":"^7.32.2","eslint-plugin-react-hooks":"^4.6.0","husky":"^2.7.0","identity-obj-proxy":"^3.0.0","jest":"^24.8.0","jss":"^10.10.0","jss-rtl":"^0.2.3","lint-staged":"^8.2.1","mutationobserver-shim":"^0.3.7","nwb":"0.23.0","prettier":"^2.8.8","pretty-quick":"^3.1.3","react":"^18","react-a11y":"^1.1.0","react-dom":"^18","react-helmet":"^5.2.1","react-scrollable-anchor":"^0.6.1","react-syntax-highlighter":"^10.2.1","sanitize-html":"2.7.0","webpack":"^5.68.0","webpack-cli":"^4.9.2","webpack-dev-server":"^4.7.4"},"jest":{"verbose":true,"coverageDirectory":"coverage","collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/ScopeList/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFilesAfterEnv":["<rootDir>/tests/setup.js"],"testMatch":["**/tests/**/*.{spec,test}.{js,jsx,ts,tsx}","!**/tests/ScopeList.test.js"],"testEnvironment":"jsdom","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy","\\.(jpg|jpeg|png)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"]},"babel":{"presets":["react-app"],"plugins":["@babel/plugin-syntax-dynamic-import"]},"eslintConfig":{"env":{"browser":true,"jest":true,"node":true,"es6":true},"extends":["eslint:recommended","plugin:react/recommended","plugin:jsx-a11y/recommended"],"parser":"@babel/eslint-parser","parserOptions":{"babelOptions":{"presets":[["babel-preset-react-app",false],"babel-preset-react-app/test"]},"ecmaFeatures":{"experimentalObjectRestSpread":true,"jsx":true},"sourceType":"module"},"plugins":["prettier","react","import","react-hooks","jsx-a11y"],"rules":{"no-console":"warn","no-unused-vars":"error","react/display-name":"off","react-hooks/rules-of-hooks":"error","react-hooks/exhaustive-deps":"warn","no-use-before-define":"error"}},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"src/**/*.{js,css}":["prettier --write","git add","yarn lint"]},"prettier":{"endOfLine":"lf","useTabs":false,"printWidth":100,"tabWidth":2,"singleQuote":true,"trailingComma":"all","bracketSameLine":false,"bracketSpacing":true,"parser":"babel","semi":true,"arrowParens":"avoid"}};
9190
+ module.exports = {"name":"@sis-cc/dotstatsuite-visions","version":"12.6.0","description":"Library of visual components","author":"OECD","homepage":"https://visions-qa.siscc.org/#o","license":"MIT","repository":"https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-visions","main":"lib/index.js","module":"es/index.js","engines":{"node":">=14"},"files":["css","es","lib","umd"],"scripts":{"build":"nwb build-react-component --copy-files --no-demo && node scripts/doc && nwb build-demo","build:dev":"nwb build-react-component --copy-files --no-demo","clean":"nwb clean-module && nwb clean-demo","prepublishOnly":"npm run build","start":"nwb serve-react-demo","test":"jest","test:watch":"jest --watch --no-cache","lint":"eslint src/ --color","precommit":"lint-staged"},"dependencies":{"@emotion/react":"^11.13.0","@emotion/styled":"^11.13.0","@hello-pangea/dnd":"^16.6.0","@mui/icons-material":"^5.16.5","@mui/material":"^5.16.5","@mui/styles":"^5.16.5","@react-hook/size":"^2.1.1","classnames":"^2.2.6","cross-env":"^7.0.3","date-fns":"^1.30.1","isemail":"^3.2.0","numeral":"^2.0.6","prop-types":"^15.7.2","ramda":"^0.27.0","react-draggable":"^4.4.5","react-error-boundary":"^4.0.10","react-virtualized":"^9.21.2"},"peerDependencies":{"@mui/icons-material":"^5.16.5","@mui/material":"^5.16.5","react":"^18","react-dom":"^18"},"devDependencies":{"@babel/eslint-parser":"^7.5.4","@babel/plugin-syntax-dynamic-import":"^7.2.0","@cfaester/enzyme-adapter-react-18":"^0.7.0","@mui/icons-material":"^5.16.5","@mui/material":"^5.16.5","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^14.0.0","babel-jest":"^24.8.0","babel-preset-react-app":"^9.0.0","dox":"^0.9.0","eslint":"^8.39.0","eslint-plugin-import":"^2.27.5","eslint-plugin-jsx-a11y":"^6.7.1","eslint-plugin-prettier":"^4.2.1","eslint-plugin-react":"^7.32.2","eslint-plugin-react-hooks":"^4.6.0","husky":"^2.7.0","identity-obj-proxy":"^3.0.0","jest":"^24.8.0","jss":"^10.10.0","jss-rtl":"^0.2.3","lint-staged":"^8.2.1","mutationobserver-shim":"^0.3.7","nwb":"0.23.0","prettier":"^2.8.8","pretty-quick":"^3.1.3","react":"^18","react-a11y":"^1.1.0","react-dom":"^18","react-helmet":"^5.2.1","react-scrollable-anchor":"^0.6.1","react-syntax-highlighter":"^10.2.1","sanitize-html":"2.7.0","webpack":"^5.68.0","webpack-cli":"^4.9.2","webpack-dev-server":"^4.7.4"},"jest":{"verbose":true,"coverageDirectory":"coverage","collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/ScopeList/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFilesAfterEnv":["<rootDir>/tests/setup.js"],"testMatch":["**/tests/**/*.{spec,test}.{js,jsx,ts,tsx}","!**/tests/ScopeList.test.js"],"testEnvironment":"jsdom","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy","\\.(jpg|jpeg|png)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"]},"babel":{"presets":["react-app"],"plugins":["@babel/plugin-syntax-dynamic-import"]},"eslintConfig":{"env":{"browser":true,"jest":true,"node":true,"es6":true},"extends":["eslint:recommended","plugin:react/recommended","plugin:jsx-a11y/recommended"],"parser":"@babel/eslint-parser","parserOptions":{"babelOptions":{"presets":[["babel-preset-react-app",false],"babel-preset-react-app/test"]},"ecmaFeatures":{"experimentalObjectRestSpread":true,"jsx":true},"sourceType":"module"},"plugins":["prettier","react","import","react-hooks","jsx-a11y"],"rules":{"no-console":"warn","no-unused-vars":"error","react/display-name":"off","react-hooks/rules-of-hooks":"error","react-hooks/exhaustive-deps":"warn","no-use-before-define":"error"}},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"src/**/*.{js,css}":["prettier --write","git add","yarn lint"]},"prettier":{"endOfLine":"lf","useTabs":false,"printWidth":100,"tabWidth":2,"singleQuote":true,"trailingComma":"all","bracketSameLine":false,"bracketSpacing":true,"parser":"babel","semi":true,"arrowParens":"avoid"}};
9191
9191
 
9192
9192
  /***/ }),
9193
9193
  /* 167 */
@@ -79542,7 +79542,8 @@ var VirtualizedTree_Item_Item = function Item(_ref) {
79542
79542
  _ref$depth = _ref.depth,
79543
79543
  depth = _ref$depth === undefined ? 0 : _ref$depth,
79544
79544
  eventsListeners = _ref.eventsListeners,
79545
- expanded = _ref.expanded;
79545
+ expanded = _ref.expanded,
79546
+ highlightedLabel = _ref.highlightedLabel;
79546
79547
 
79547
79548
  var _useKeyboardEscapeHan = useKeybordEscapeHandler(),
79548
79549
  open = _useKeyboardEscapeHan.open,
@@ -79550,6 +79551,7 @@ var VirtualizedTree_Item_Item = function Item(_ref) {
79550
79551
 
79551
79552
  var padding = depth * 30 + (depth > 0 && !hasChildrenOnLevel ? 30 : 0) + (!hasChild && hasChildrenOnLevel ? 30 : 0);
79552
79553
 
79554
+ var formattedLabel = highlightedLabel ? react_default.a.createElement('div', { dangerouslySetInnerHTML: { __html: highlightedLabel } }) : label;
79553
79555
  return react_default.a.createElement(
79554
79556
  material_ListItem_ListItem,
79555
79557
  {
@@ -79651,7 +79653,7 @@ var VirtualizedTree_Item_Item = function Item(_ref) {
79651
79653
  variant: 'body2',
79652
79654
  className: classnames_default()(classes.label, (_cx5 = {}, _cx5[classes.disabledLabel] = isGreyed, _cx5[classes.tooltipNotice] = !es_isEmpty(description), _cx5))
79653
79655
  },
79654
- label
79656
+ formattedLabel
79655
79657
  )
79656
79658
  ),
79657
79659
  es_not(es_isNil(count)) && react_default.a.createElement(
@@ -79693,7 +79695,8 @@ VirtualizedTree_Item_Item.propTypes = {
79693
79695
  depth: prop_types_default.a.number,
79694
79696
  eventsListeners: prop_types_default.a.object,
79695
79697
  isGreyed: prop_types_default.a.bool,
79696
- expanded: prop_types_default.a.bool
79698
+ expanded: prop_types_default.a.bool,
79699
+ highlightedLabel: prop_types_default.a.string
79697
79700
  };
79698
79701
 
79699
79702
  /* harmony default export */ var VirtualizedTree_Item = (VirtualizedTree_Item_Item);
@@ -80769,31 +80772,47 @@ var withSpotlight_spotlightFilter = function spotlightFilter(term) {
80769
80772
  }
80770
80773
  return acc;
80771
80774
  };
80775
+ var matchRegExp = function matchRegExp(str) {
80776
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
80777
+ };
80778
+
80779
+ // Highlight matching terms in the label
80780
+ var highlightLabel = function highlightLabel(label) {
80781
+ var regex = new RegExp('(' + matchRegExp(term) + ')', 'gi');
80782
+ return label.replace(regex, function (match) {
80783
+ return '<span style=background-color:yellow;border-bottom:2px solid #8CC841>' + match + '</span>';
80784
+ });
80785
+ };
80772
80786
 
80773
80787
  var recurse = function recurse(item) {
80774
- var isValidItem = es_includes(es_toLower(term), es_toLower(labelRenderer(item)));
80788
+ var label = labelRenderer(item);
80789
+ var isValidItem = es_includes(es_toLower(term), es_toLower(label));
80775
80790
 
80776
80791
  var result = [];
80777
80792
 
80778
80793
  if (isValidItem) {
80794
+ var highlightedLabel = highlightLabel(label);
80795
+ console.log(highlightedLabel);
80779
80796
  var parents = findParents(item);
80780
- result = [].concat(parents, [item]);
80797
+ result = [].concat(parents, [withSpotlight_extends({}, item, { highlightedLabel: highlightedLabel })]);
80798
+
80781
80799
  if (displayChildren) {
80782
80800
  var children = utils_getDescendants(es_prop('id', item), groupedItemsByParentId);
80783
- return [].concat(parents, [item], children);
80801
+ return [].concat(parents, [withSpotlight_extends({}, item, { highlightedLabel: highlightedLabel })], children);
80784
80802
  }
80785
80803
  }
80804
+
80786
80805
  if (es_has(utils_getHierarchicalId(item), groupedItemsByParentId)) {
80787
80806
  var childItems = groupedItemsByParentId[utils_getHierarchicalId(item)] || [];
80788
80807
  var matchingChildren = es_chain(recurse, childItems);
80789
80808
 
80790
80809
  // res with any matching children
80791
- return es_uniq([].concat(result, matchingChildren));
80810
+ return es_uniqBy(es_prop('id'), [].concat(result, matchingChildren));
80792
80811
  }
80793
80812
  return result;
80794
80813
  };
80795
80814
 
80796
- return es_uniq(es_chain(recurse, groupedItemsByParentId['#ROOT'] || []));
80815
+ return es_uniqBy(es_prop('id'))(es_chain(recurse, groupedItemsByParentId['#ROOT'] || []));
80797
80816
  };
80798
80817
  };
80799
80818