@teambit/react.ui.component-highlighter 0.0.492 → 0.0.496

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 (143) hide show
  1. package/{multi-highlighter/multi-highlighter.composition.tsx → children-highlighter/children-highlighter.composition.tsx} +41 -19
  2. package/{multi-highlighter/multi-highlighter.spec.tsx → children-highlighter/children-highlighter.spec.tsx} +3 -3
  3. package/children-highlighter/children-highlighter.tsx +9 -0
  4. package/children-highlighter/index.ts +5 -0
  5. package/{multi-highlighter/use-multi-highlighter.tsx → children-highlighter/use-children-highlighter.tsx} +18 -14
  6. package/component-highlighter.docs.md +13 -3
  7. package/dist/children-highlighter/children-highlighter.composition.d.ts +5 -0
  8. package/dist/{multi-highlighter/multi-highlighter.composition.js → children-highlighter/children-highlighter.composition.js} +37 -20
  9. package/dist/children-highlighter/children-highlighter.composition.js.map +1 -0
  10. package/dist/children-highlighter/children-highlighter.d.ts +3 -0
  11. package/dist/{multi-highlighter/multi-highlighter.js → children-highlighter/children-highlighter.js} +6 -6
  12. package/dist/children-highlighter/children-highlighter.js.map +1 -0
  13. package/dist/{multi-highlighter/multi-highlighter.spec.d.ts → children-highlighter/children-highlighter.spec.d.ts} +0 -0
  14. package/dist/{multi-highlighter/multi-highlighter.spec.js → children-highlighter/children-highlighter.spec.js} +4 -4
  15. package/dist/children-highlighter/children-highlighter.spec.js.map +1 -0
  16. package/dist/children-highlighter/index.d.ts +4 -0
  17. package/dist/children-highlighter/index.js +8 -0
  18. package/dist/children-highlighter/index.js.map +1 -0
  19. package/dist/{multi-highlighter/use-multi-highlighter.d.ts → children-highlighter/use-children-highlighter.d.ts} +4 -4
  20. package/dist/{multi-highlighter/use-multi-highlighter.js → children-highlighter/use-children-highlighter.js} +10 -11
  21. package/dist/children-highlighter/use-children-highlighter.js.map +1 -0
  22. package/dist/component-highlighter.docs.md +13 -3
  23. package/dist/element-highlighter/element-highlighter.compositions.d.ts +3 -1
  24. package/dist/element-highlighter/element-highlighter.compositions.js +15 -7
  25. package/dist/element-highlighter/element-highlighter.compositions.js.map +1 -1
  26. package/dist/element-highlighter/element-highlighter.d.ts +8 -9
  27. package/dist/element-highlighter/element-highlighter.js +3 -3
  28. package/dist/element-highlighter/element-highlighter.js.map +1 -1
  29. package/dist/element-highlighter/element-highlighter.module.scss +2 -5
  30. package/dist/element-highlighter/index.d.ts +1 -1
  31. package/dist/hover-highlighter/hover-highlighter.compositions.js +1 -1
  32. package/dist/hover-highlighter/hover-highlighter.compositions.js.map +1 -1
  33. package/dist/hover-highlighter/hover-highlighter.d.ts +1 -1
  34. package/dist/hover-highlighter/hover-highlighter.js +2 -2
  35. package/dist/hover-highlighter/hover-highlighter.js.map +1 -1
  36. package/dist/hover-highlighter/use-hover-highlighter.d.ts +5 -2
  37. package/dist/hover-highlighter/use-hover-highlighter.js +13 -15
  38. package/dist/hover-highlighter/use-hover-highlighter.js.map +1 -1
  39. package/dist/{hybrid-highligher → hybrid-highlighter}/hybrid-highlighter.d.ts +6 -3
  40. package/dist/{hybrid-highligher → hybrid-highlighter}/hybrid-highlighter.js +6 -4
  41. package/dist/hybrid-highlighter/hybrid-highlighter.js.map +1 -0
  42. package/dist/{hybrid-highligher → hybrid-highlighter}/index.d.ts +0 -0
  43. package/dist/{hybrid-highligher → hybrid-highlighter}/index.js +0 -0
  44. package/dist/hybrid-highlighter/index.js.map +1 -0
  45. package/dist/index.d.ts +4 -4
  46. package/dist/index.js +5 -5
  47. package/dist/index.js.map +1 -1
  48. package/dist/label/component-strip.d.ts +9 -0
  49. package/dist/label/component-strip.js +49 -0
  50. package/dist/label/component-strip.js.map +1 -0
  51. package/dist/label/component-strip.module.scss +49 -0
  52. package/dist/label/index.d.ts +4 -2
  53. package/dist/label/index.js +3 -2
  54. package/dist/label/index.js.map +1 -1
  55. package/dist/label/label-container.d.ts +13 -0
  56. package/dist/label/label-container.js +53 -0
  57. package/dist/label/label-container.js.map +1 -0
  58. package/dist/label/label.d.ts +7 -19
  59. package/dist/label/label.js +20 -27
  60. package/dist/label/label.js.map +1 -1
  61. package/dist/label/label.module.scss +24 -0
  62. package/dist/label/links.d.ts +2 -0
  63. package/dist/label/links.js +17 -0
  64. package/dist/label/links.js.map +1 -0
  65. package/dist/label/other-components.d.ts +10 -0
  66. package/dist/label/other-components.js +35 -0
  67. package/dist/label/other-components.js.map +1 -0
  68. package/dist/rule-matcher.d.ts +6 -0
  69. package/dist/rule-matcher.js +20 -2
  70. package/dist/rule-matcher.js.map +1 -1
  71. package/dist/use-animation-frame.d.ts +1 -1
  72. package/dist/use-animation-frame.js.map +1 -1
  73. package/element-highlighter/element-highlighter.compositions.tsx +22 -8
  74. package/element-highlighter/element-highlighter.module.scss +2 -5
  75. package/element-highlighter/element-highlighter.tsx +11 -16
  76. package/element-highlighter/index.ts +7 -1
  77. package/hover-highlighter/hover-highlighter.compositions.tsx +1 -1
  78. package/hover-highlighter/hover-highlighter.tsx +1 -1
  79. package/hover-highlighter/use-hover-highlighter.tsx +36 -19
  80. package/{hybrid-highligher → hybrid-highlighter}/hybrid-highlighter.tsx +18 -4
  81. package/{hybrid-highligher → hybrid-highlighter}/index.ts +0 -0
  82. package/index.ts +4 -4
  83. package/label/component-strip.module.scss +49 -0
  84. package/label/component-strip.tsx +49 -0
  85. package/label/index.ts +5 -2
  86. package/label/label-container.tsx +46 -0
  87. package/label/label.module.scss +24 -0
  88. package/label/label.tsx +35 -66
  89. package/label/links.tsx +9 -0
  90. package/label/other-components.tsx +53 -0
  91. package/package-tar/teambit-react.ui.component-highlighter-0.0.496.tgz +0 -0
  92. package/package.json +15 -15
  93. package/rule-matcher.tsx +27 -0
  94. package/tsconfig.json +2 -1
  95. package/use-animation-frame.tsx +1 -1
  96. package/bubble/bubble.module.scss +0 -24
  97. package/bubble/index.ts +0 -3
  98. package/dist/bubble/bubble.module.scss +0 -24
  99. package/dist/bubble/index.d.ts +0 -1
  100. package/dist/bubble/index.js +0 -9
  101. package/dist/bubble/index.js.map +0 -1
  102. package/dist/hybrid-highligher/hybrid-highlighter.js.map +0 -1
  103. package/dist/hybrid-highligher/index.js.map +0 -1
  104. package/dist/label/component-label/component-bubble.d.ts +0 -7
  105. package/dist/label/component-label/component-bubble.js +0 -35
  106. package/dist/label/component-label/component-bubble.js.map +0 -1
  107. package/dist/label/component-label/component-label.d.ts +0 -9
  108. package/dist/label/component-label/component-label.js +0 -32
  109. package/dist/label/component-label/component-label.js.map +0 -1
  110. package/dist/label/component-label/duo-component-bubble.module.scss +0 -24
  111. package/dist/label/component-label/index.d.ts +0 -2
  112. package/dist/label/component-label/index.js +0 -6
  113. package/dist/label/component-label/index.js.map +0 -1
  114. package/dist/label/component-label/scope-bubble.d.ts +0 -6
  115. package/dist/label/component-label/scope-bubble.js +0 -28
  116. package/dist/label/component-label/scope-bubble.js.map +0 -1
  117. package/dist/label/default-label/default-label.d.ts +0 -5
  118. package/dist/label/default-label/default-label.js +0 -30
  119. package/dist/label/default-label/default-label.js.map +0 -1
  120. package/dist/label/default-label/default-label.module.scss +0 -12
  121. package/dist/label/default-label/index.d.ts +0 -1
  122. package/dist/label/default-label/index.js +0 -6
  123. package/dist/label/default-label/index.js.map +0 -1
  124. package/dist/multi-highlighter/index.d.ts +0 -2
  125. package/dist/multi-highlighter/index.js +0 -6
  126. package/dist/multi-highlighter/index.js.map +0 -1
  127. package/dist/multi-highlighter/multi-highlighter.composition.d.ts +0 -4
  128. package/dist/multi-highlighter/multi-highlighter.composition.js.map +0 -1
  129. package/dist/multi-highlighter/multi-highlighter.d.ts +0 -3
  130. package/dist/multi-highlighter/multi-highlighter.js.map +0 -1
  131. package/dist/multi-highlighter/multi-highlighter.spec.js.map +0 -1
  132. package/dist/multi-highlighter/use-multi-highlighter.js.map +0 -1
  133. package/label/component-label/component-bubble.tsx +0 -30
  134. package/label/component-label/component-label.tsx +0 -31
  135. package/label/component-label/duo-component-bubble.module.scss +0 -24
  136. package/label/component-label/index.ts +0 -2
  137. package/label/component-label/scope-bubble.tsx +0 -20
  138. package/label/default-label/default-label.module.scss +0 -12
  139. package/label/default-label/default-label.tsx +0 -22
  140. package/label/default-label/index.ts +0 -1
  141. package/multi-highlighter/index.ts +0 -2
  142. package/multi-highlighter/multi-highlighter.tsx +0 -9
  143. package/package-tar/teambit-react.ui.component-highlighter-0.0.492.tgz +0 -0
@@ -1,25 +1,27 @@
1
1
  import React from 'react';
2
2
  // import { EnterpriseOffering } from '@teambit/evangelist.pages.enterprise-offering';
3
3
  import { MockedComponentWithMeta } from '@teambit/react.ui.highlighter.component-metadata.bit-component-meta';
4
+ import { IconButton } from '@teambit/design.ui.icon-button';
4
5
  import { ExcludeHighlighter } from '../ignore-highlighter';
5
- import { MultiHighlighter } from './multi-highlighter';
6
+ import { ChildrenHighlighter } from './children-highlighter';
6
7
 
7
- export const MultiHighlighterPreview = () => {
8
+ export const ChildrenHighlighterPreview = () => {
8
9
  return (
9
- <MultiHighlighter style={{ padding: 40, minWidth: 200 }}>
10
+ // highlighter runs in compositions, therefor should not have our font
11
+ <ChildrenHighlighter style={{ padding: 40, minWidth: 200, fontFamily: 'sans-serif' }}>
10
12
  <MockedComponentWithMeta>hover here</MockedComponentWithMeta>
11
13
  <br />
12
14
  <br />
13
15
  <br />
14
- <MockedComponentWithMeta>also here</MockedComponentWithMeta>
15
- </MultiHighlighter>
16
+ <IconButton>this will be highlighted with dropdown</IconButton>
17
+ </ChildrenHighlighter>
16
18
  );
17
19
  };
18
20
 
19
- export const MultiHighlighterWithCustomColors = () => {
21
+ export const ChildrenHighlighterWithCustomColors = () => {
20
22
  return (
21
- <MultiHighlighter
22
- style={{ padding: 40, minWidth: 200, color: 'yellow' }}
23
+ <ChildrenHighlighter
24
+ style={{ padding: 40, minWidth: 200, color: 'yellow', fontFamily: 'sans-serif' }}
23
25
  bgColor="cornflowerblue"
24
26
  bgColorHover="blue"
25
27
  bgColorActive="DarkSlateBlue"
@@ -29,14 +31,14 @@ export const MultiHighlighterWithCustomColors = () => {
29
31
  <br />
30
32
  <br />
31
33
  <MockedComponentWithMeta>also here</MockedComponentWithMeta>
32
- </MultiHighlighter>
34
+ </ChildrenHighlighter>
33
35
  );
34
36
  };
35
37
 
36
- export const MultiHighlighterInsideIgnore = () => {
38
+ export const ChildrenHighlighterInsideIgnore = () => {
37
39
  return (
38
40
  <ExcludeHighlighter>
39
- <MultiHighlighter>
41
+ <ChildrenHighlighter style={{ fontFamily: 'sans-serif' }}>
40
42
  Multi Highlighter should still work when inside <code>{'<ExcludeHighlighter>'}</code>
41
43
  <br />
42
44
  It should only skip exclusion zones inside of it.
@@ -48,16 +50,17 @@ export const MultiHighlighterInsideIgnore = () => {
48
50
  <br />
49
51
  <br />
50
52
  <MockedComponentWithMeta>also here</MockedComponentWithMeta>
51
- </MultiHighlighter>
53
+ </ChildrenHighlighter>
52
54
  </ExcludeHighlighter>
53
55
  );
54
56
  };
55
57
 
56
- export const MultiHighlighterWithRule = () => {
58
+ export const ChildrenHighlighterWithRule = () => {
57
59
  return (
58
- <MultiHighlighter rule="#someSubTree *">
59
- <br />
60
- <br />
60
+ <ChildrenHighlighter rule="#someSubTree *" style={{ minWidth: 300, fontFamily: 'sans-serif' }}>
61
+ <div>
62
+ element filter: <code>"#someSubTree *"</code>
63
+ </div>
61
64
  <br />
62
65
  <MockedComponentWithMeta>no highlighter</MockedComponentWithMeta>
63
66
  <br />
@@ -66,14 +69,33 @@ export const MultiHighlighterWithRule = () => {
66
69
  <div id="someSubTree">
67
70
  <MockedComponentWithMeta>this will be highlighted</MockedComponentWithMeta>
68
71
  </div>
69
- </MultiHighlighter>
72
+ </ChildrenHighlighter>
73
+ );
74
+ };
75
+
76
+ export const ChildrenHighlighterWithComponentRule = () => {
77
+ return (
78
+ <ChildrenHighlighter
79
+ componentRule="teambit.design/ui/icon-button"
80
+ style={{ minWidth: 300, fontFamily: 'sans-serif' }}
81
+ >
82
+ <div>
83
+ component filter: <code>"teambit.design/ui/icon-button"</code>
84
+ </div>
85
+ <br />
86
+ <MockedComponentWithMeta>no highlighter</MockedComponentWithMeta>
87
+ <br />
88
+ <br />
89
+ <br />
90
+ <IconButton>this will be highlighted</IconButton>
91
+ </ChildrenHighlighter>
70
92
  );
71
93
  };
72
94
 
73
95
  // export const HighlightingAllElementsInTheEnterprisePage = () => {
74
96
  // return (
75
- // <MultiHighlighter>
97
+ // <ChildrenHighlighter>
76
98
  // <EnterpriseOffering style={{ height: 300 }} />
77
- // </MultiHighlighter>
99
+ // </ChildrenHighlighter>
78
100
  // );
79
101
  // };
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
- import { MultiHighlighterPreview } from './multi-highlighter.composition';
3
+ import { ChildrenHighlighterPreview } from './children-highlighter.composition';
4
4
 
5
- it('should not throw when rendering the multi-highlighter', () => {
6
- const { getByText } = render(<MultiHighlighterPreview />);
5
+ it('should not throw when rendering the children-highlighter', () => {
6
+ const { getByText } = render(<ChildrenHighlighterPreview />);
7
7
 
8
8
  const rendered = getByText('hover here');
9
9
 
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+
3
+ import { HybridHighlighter, HybridHighlighterProps } from '../hybrid-highlighter';
4
+
5
+ export type ChildrenHighlighterProps = Omit<HybridHighlighterProps, 'mode'>;
6
+
7
+ export function ChildrenHighlighter({ watchMotion = false, ...props }: ChildrenHighlighterProps) {
8
+ return <HybridHighlighter {...props} mode={'allChildren'} watchMotion={watchMotion} />;
9
+ }
@@ -0,0 +1,5 @@
1
+ export { useChildrenHighlighter } from './use-children-highlighter';
2
+ export type { ChildrenHighlighterOptions } from './use-children-highlighter';
3
+
4
+ export { ChildrenHighlighter } from './children-highlighter';
5
+ export type { ChildrenHighlighterProps } from './children-highlighter';
@@ -1,34 +1,36 @@
1
1
  import { useEffect, RefObject } from 'react';
2
2
  import getXPath from 'get-xpath';
3
- import { domToReact, toRootElement } from '@teambit/react.modules.dom-to-react';
3
+ import { domToReacts, toRootElement } from '@teambit/react.modules.dom-to-react';
4
4
  import {
5
- hasComponentMeta,
6
5
  componentMetaField,
7
- componentMetaProperties,
6
+ hasComponentMeta,
7
+ ReactComponentMetaHolder,
8
8
  } from '@teambit/react.ui.highlighter.component-metadata.bit-component-meta';
9
9
  import { HighlightTarget } from '../element-highlighter';
10
10
  import { excludeHighlighterSelector } from '../ignore-highlighter';
11
- import { ruleMatcher, MatchRule } from '../rule-matcher';
11
+ import { ruleMatcher, MatchRule, ComponentMatchRule, componentRuleMatcher } from '../rule-matcher';
12
12
 
13
- type useMultiHighlighterProps = {
13
+ export type ChildrenHighlighterOptions = {
14
14
  onChange: (highlighterTargets: Record<string, HighlightTarget>) => void;
15
15
  disabled?: boolean;
16
16
  scopeRef: RefObject<HTMLElement>;
17
17
  scopeClass?: string;
18
18
  /** filter highlighter targets by this query selector. (May be a more complex object in the future) */
19
19
  rule?: MatchRule;
20
+ componentRule?: ComponentMatchRule;
20
21
 
21
22
  // /** automatically update when children update. Use with caution, might be slow */
22
23
  // watchDom?: boolean;
23
24
  };
24
25
 
25
- export function useMultiHighlighter({
26
+ export function useChildrenHighlighter({
26
27
  onChange,
27
28
  disabled,
28
29
  scopeRef,
29
30
  scopeClass: scopeSelector = '',
30
31
  rule,
31
- }: useMultiHighlighterProps) {
32
+ componentRule,
33
+ }: ChildrenHighlighterOptions) {
32
34
  useEffect(() => {
33
35
  const nextTargets: Record<string, HighlightTarget> = {};
34
36
  const scopeElement = scopeRef.current;
@@ -44,15 +46,17 @@ export function useMultiHighlighter({
44
46
  const uniqueRoots = new Set(rootElements);
45
47
 
46
48
  uniqueRoots.forEach((element) => {
47
- const comp = domToReact(element);
48
- if (!element || !hasComponentMeta(comp)) return;
49
+ if (!element) return;
50
+ const comps = domToReacts(element);
51
+ const componentsWithMeta = comps.filter(
52
+ (x) => hasComponentMeta(x) && componentRuleMatcher({ meta: x[componentMetaField] }, componentRule)
53
+ ) as ReactComponentMetaHolder[];
54
+
55
+ if (componentsWithMeta.length < 1) return;
49
56
 
50
57
  const key = getXPath(element);
51
- const meta = comp[componentMetaField];
52
- const compId = meta[componentMetaProperties.componentId];
53
- const link = meta[componentMetaProperties.homepageUrl];
54
- const local = meta[componentMetaProperties.isExported] === false;
55
- nextTargets[key] = { element, id: compId, link, local };
58
+
59
+ nextTargets[key] = { element, components: componentsWithMeta };
56
60
  });
57
61
 
58
62
  onChange(nextTargets);
@@ -94,7 +94,7 @@ The Component Highlighter comes in a few different modes:
94
94
  In addition to changing the `mode` prop, you can also use convenience exports from the same package:
95
95
 
96
96
  ```tsx
97
- import { MultiHighlighter, HoverHighlighter } from '@teambit/react.ui.component-highlighter';
97
+ import { ChildrenHighlighter, HoverHighlighter } from '@teambit/react.ui.component-highlighter';
98
98
 
99
99
  function example() {
100
100
  return (
@@ -103,9 +103,9 @@ function example() {
103
103
  <App />
104
104
  </HoverHighlighter>
105
105
 
106
- <MultiHighlighter>
106
+ <ChildrenHighlighter>
107
107
  <App />
108
- </MultiHighlighter>
108
+ </ChildrenHighlighter>
109
109
  </div>
110
110
  );
111
111
  }
@@ -153,6 +153,15 @@ For example:
153
153
  </ComponentHighlighter>
154
154
  ```
155
155
 
156
+ You can also filter by component id, using the `componentRule` prop:
157
+
158
+ ```tsx
159
+ <ComponentHighlighter componentRule="teambit.design/ui/icon-button">
160
+ <Paragraph>will not be highlighted</Paragraph>
161
+ <Button>this will be highlighted</Button>
162
+ </ComponentHighlighter>
163
+ ```
164
+
156
165
  ## Customization
157
166
 
158
167
  Use these CSS variables to edit the highlighter color
@@ -161,6 +170,7 @@ Use these CSS variables to edit the highlighter color
161
170
  --bit-highlighter-color: #eebcc9;
162
171
  --bit-highlighter-color-hover: #f6dae2;
163
172
  --bit-highlighter-color-active: #e79db1;
173
+ --bit-highlighter-shadow: 0px 11px 29px 0px rgba(0, 0, 0, 0.23));
164
174
  ```
165
175
 
166
176
  While it is preferred to use the css variables, you can also set them using react props:
@@ -0,0 +1,5 @@
1
+ export declare const ChildrenHighlighterPreview: () => JSX.Element;
2
+ export declare const ChildrenHighlighterWithCustomColors: () => JSX.Element;
3
+ export declare const ChildrenHighlighterInsideIgnore: () => JSX.Element;
4
+ export declare const ChildrenHighlighterWithRule: () => JSX.Element;
5
+ export declare const ChildrenHighlighterWithComponentRule: () => JSX.Element;
@@ -3,33 +3,36 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.MultiHighlighterWithRule = exports.MultiHighlighterInsideIgnore = exports.MultiHighlighterWithCustomColors = exports.MultiHighlighterPreview = void 0;
6
+ exports.ChildrenHighlighterWithComponentRule = exports.ChildrenHighlighterWithRule = exports.ChildrenHighlighterInsideIgnore = exports.ChildrenHighlighterWithCustomColors = exports.ChildrenHighlighterPreview = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  // import { EnterpriseOffering } from '@teambit/evangelist.pages.enterprise-offering';
9
9
  const react_ui_highlighter_component_metadata_bit_component_meta_1 = require("@teambit/react.ui.highlighter.component-metadata.bit-component-meta");
10
+ const design_ui_icon_button_1 = require("@teambit/design.ui.icon-button");
10
11
  const ignore_highlighter_1 = require("../ignore-highlighter");
11
- const multi_highlighter_1 = require("./multi-highlighter");
12
- const MultiHighlighterPreview = () => {
13
- return (react_1.default.createElement(multi_highlighter_1.MultiHighlighter, { style: { padding: 40, minWidth: 200 } },
12
+ const children_highlighter_1 = require("./children-highlighter");
13
+ const ChildrenHighlighterPreview = () => {
14
+ return (
15
+ // highlighter runs in compositions, therefor should not have our font
16
+ react_1.default.createElement(children_highlighter_1.ChildrenHighlighter, { style: { padding: 40, minWidth: 200, fontFamily: 'sans-serif' } },
14
17
  react_1.default.createElement(react_ui_highlighter_component_metadata_bit_component_meta_1.MockedComponentWithMeta, null, "hover here"),
15
18
  react_1.default.createElement("br", null),
16
19
  react_1.default.createElement("br", null),
17
20
  react_1.default.createElement("br", null),
18
- react_1.default.createElement(react_ui_highlighter_component_metadata_bit_component_meta_1.MockedComponentWithMeta, null, "also here")));
21
+ react_1.default.createElement(design_ui_icon_button_1.IconButton, null, "this will be highlighted with dropdown")));
19
22
  };
20
- exports.MultiHighlighterPreview = MultiHighlighterPreview;
21
- const MultiHighlighterWithCustomColors = () => {
22
- return (react_1.default.createElement(multi_highlighter_1.MultiHighlighter, { style: { padding: 40, minWidth: 200, color: 'yellow' }, bgColor: "cornflowerblue", bgColorHover: "blue", bgColorActive: "DarkSlateBlue" },
23
+ exports.ChildrenHighlighterPreview = ChildrenHighlighterPreview;
24
+ const ChildrenHighlighterWithCustomColors = () => {
25
+ return (react_1.default.createElement(children_highlighter_1.ChildrenHighlighter, { style: { padding: 40, minWidth: 200, color: 'yellow', fontFamily: 'sans-serif' }, bgColor: "cornflowerblue", bgColorHover: "blue", bgColorActive: "DarkSlateBlue" },
23
26
  react_1.default.createElement(react_ui_highlighter_component_metadata_bit_component_meta_1.MockedComponentWithMeta, null, "hover here"),
24
27
  react_1.default.createElement("br", null),
25
28
  react_1.default.createElement("br", null),
26
29
  react_1.default.createElement("br", null),
27
30
  react_1.default.createElement(react_ui_highlighter_component_metadata_bit_component_meta_1.MockedComponentWithMeta, null, "also here")));
28
31
  };
29
- exports.MultiHighlighterWithCustomColors = MultiHighlighterWithCustomColors;
30
- const MultiHighlighterInsideIgnore = () => {
32
+ exports.ChildrenHighlighterWithCustomColors = ChildrenHighlighterWithCustomColors;
33
+ const ChildrenHighlighterInsideIgnore = () => {
31
34
  return (react_1.default.createElement(ignore_highlighter_1.ExcludeHighlighter, null,
32
- react_1.default.createElement(multi_highlighter_1.MultiHighlighter, null,
35
+ react_1.default.createElement(children_highlighter_1.ChildrenHighlighter, { style: { fontFamily: 'sans-serif' } },
33
36
  "Multi Highlighter should still work when inside ",
34
37
  react_1.default.createElement("code", null, '<ExcludeHighlighter>'),
35
38
  react_1.default.createElement("br", null),
@@ -43,11 +46,12 @@ const MultiHighlighterInsideIgnore = () => {
43
46
  react_1.default.createElement("br", null),
44
47
  react_1.default.createElement(react_ui_highlighter_component_metadata_bit_component_meta_1.MockedComponentWithMeta, null, "also here"))));
45
48
  };
46
- exports.MultiHighlighterInsideIgnore = MultiHighlighterInsideIgnore;
47
- const MultiHighlighterWithRule = () => {
48
- return (react_1.default.createElement(multi_highlighter_1.MultiHighlighter, { rule: "#someSubTree *" },
49
- react_1.default.createElement("br", null),
50
- react_1.default.createElement("br", null),
49
+ exports.ChildrenHighlighterInsideIgnore = ChildrenHighlighterInsideIgnore;
50
+ const ChildrenHighlighterWithRule = () => {
51
+ return (react_1.default.createElement(children_highlighter_1.ChildrenHighlighter, { rule: "#someSubTree *", style: { minWidth: 300, fontFamily: 'sans-serif' } },
52
+ react_1.default.createElement("div", null,
53
+ "element filter: ",
54
+ react_1.default.createElement("code", null, "\"#someSubTree *\"")),
51
55
  react_1.default.createElement("br", null),
52
56
  react_1.default.createElement(react_ui_highlighter_component_metadata_bit_component_meta_1.MockedComponentWithMeta, null, "no highlighter"),
53
57
  react_1.default.createElement("br", null),
@@ -56,12 +60,25 @@ const MultiHighlighterWithRule = () => {
56
60
  react_1.default.createElement("div", { id: "someSubTree" },
57
61
  react_1.default.createElement(react_ui_highlighter_component_metadata_bit_component_meta_1.MockedComponentWithMeta, null, "this will be highlighted"))));
58
62
  };
59
- exports.MultiHighlighterWithRule = MultiHighlighterWithRule;
63
+ exports.ChildrenHighlighterWithRule = ChildrenHighlighterWithRule;
64
+ const ChildrenHighlighterWithComponentRule = () => {
65
+ return (react_1.default.createElement(children_highlighter_1.ChildrenHighlighter, { componentRule: "teambit.design/ui/icon-button", style: { minWidth: 300, fontFamily: 'sans-serif' } },
66
+ react_1.default.createElement("div", null,
67
+ "component filter: ",
68
+ react_1.default.createElement("code", null, "\"teambit.design/ui/icon-button\"")),
69
+ react_1.default.createElement("br", null),
70
+ react_1.default.createElement(react_ui_highlighter_component_metadata_bit_component_meta_1.MockedComponentWithMeta, null, "no highlighter"),
71
+ react_1.default.createElement("br", null),
72
+ react_1.default.createElement("br", null),
73
+ react_1.default.createElement("br", null),
74
+ react_1.default.createElement(design_ui_icon_button_1.IconButton, null, "this will be highlighted")));
75
+ };
76
+ exports.ChildrenHighlighterWithComponentRule = ChildrenHighlighterWithComponentRule;
60
77
  // export const HighlightingAllElementsInTheEnterprisePage = () => {
61
78
  // return (
62
- // <MultiHighlighter>
79
+ // <ChildrenHighlighter>
63
80
  // <EnterpriseOffering style={{ height: 300 }} />
64
- // </MultiHighlighter>
81
+ // </ChildrenHighlighter>
65
82
  // );
66
83
  // };
67
- //# sourceMappingURL=multi-highlighter.composition.js.map
84
+ //# sourceMappingURL=children-highlighter.composition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"children-highlighter.composition.js","sourceRoot":"","sources":["../../children-highlighter/children-highlighter.composition.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,sFAAsF;AACtF,oJAA8G;AAC9G,0EAA4D;AAC5D,8DAA2D;AAC3D,iEAA6D;AAEtD,MAAM,0BAA0B,GAAG,GAAG,EAAE;IAC7C,OAAO;IACL,sEAAsE;IACtE,8BAAC,0CAAmB,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE;QAClF,8BAAC,oFAAuB,qBAAqC;QAC7D,yCAAM;QACN,yCAAM;QACN,yCAAM;QACN,8BAAC,kCAAU,iDAAoD,CAC3C,CACvB,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,0BAA0B,8BAWrC;AAEK,MAAM,mCAAmC,GAAG,GAAG,EAAE;IACtD,OAAO,CACL,8BAAC,0CAAmB,IAClB,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,EAChF,OAAO,EAAC,gBAAgB,EACxB,YAAY,EAAC,MAAM,EACnB,aAAa,EAAC,eAAe;QAE7B,8BAAC,oFAAuB,qBAAqC;QAC7D,yCAAM;QACN,yCAAM;QACN,yCAAM;QACN,8BAAC,oFAAuB,oBAAoC,CACxC,CACvB,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,mCAAmC,uCAe9C;AAEK,MAAM,+BAA+B,GAAG,GAAG,EAAE;IAClD,OAAO,CACL,8BAAC,uCAAkB;QACjB,8BAAC,0CAAmB,IAAC,KAAK,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE;;YACN,4CAAO,sBAAsB,CAAQ;YACrF,yCAAM;;YAEN,yCAAM;YACN,yCAAM;YACN,yCAAM;YACN,8BAAC,oFAAuB,qBAAqC;YAC7D,yCAAM;YACN,yCAAM;YACN,yCAAM;YACN,8BAAC,oFAAuB,oBAAoC,CACxC,CACH,CACtB,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,+BAA+B,mCAkB1C;AAEK,MAAM,2BAA2B,GAAG,GAAG,EAAE;IAC9C,OAAO,CACL,8BAAC,0CAAmB,IAAC,IAAI,EAAC,gBAAgB,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE;QAC3F;;YACkB,iEAA6B,CACzC;QACN,yCAAM;QACN,8BAAC,oFAAuB,yBAAyC;QACjE,yCAAM;QACN,yCAAM;QACN,yCAAM;QACN,uCAAK,EAAE,EAAC,aAAa;YACnB,8BAAC,oFAAuB,mCAAmD,CACvE,CACc,CACvB,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,2BAA2B,+BAgBtC;AAEK,MAAM,oCAAoC,GAAG,GAAG,EAAE;IACvD,OAAO,CACL,8BAAC,0CAAmB,IAClB,aAAa,EAAC,+BAA+B,EAC7C,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE;QAElD;;YACoB,gFAA4C,CAC1D;QACN,yCAAM;QACN,8BAAC,oFAAuB,yBAAyC;QACjE,yCAAM;QACN,yCAAM;QACN,yCAAM;QACN,8BAAC,kCAAU,mCAAsC,CAC7B,CACvB,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,oCAAoC,wCAiB/C;AAEF,oEAAoE;AACpE,aAAa;AACb,4BAA4B;AAC5B,uDAAuD;AACvD,6BAA6B;AAC7B,OAAO;AACP,KAAK"}
@@ -0,0 +1,3 @@
1
+ import { HybridHighlighterProps } from '../hybrid-highlighter';
2
+ export declare type ChildrenHighlighterProps = Omit<HybridHighlighterProps, 'mode'>;
3
+ export declare function ChildrenHighlighter({ watchMotion, ...props }: ChildrenHighlighterProps): JSX.Element;
@@ -14,12 +14,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.MultiHighlighter = void 0;
17
+ exports.ChildrenHighlighter = void 0;
18
18
  const react_1 = __importDefault(require("react"));
19
- const hybrid_highligher_1 = require("../hybrid-highligher");
20
- function MultiHighlighter(_a) {
19
+ const hybrid_highlighter_1 = require("../hybrid-highlighter");
20
+ function ChildrenHighlighter(_a) {
21
21
  var { watchMotion = false } = _a, props = __rest(_a, ["watchMotion"]);
22
- return react_1.default.createElement(hybrid_highligher_1.HybridHighlighter, Object.assign({}, props, { mode: 'allChildren', watchMotion: watchMotion }));
22
+ return react_1.default.createElement(hybrid_highlighter_1.HybridHighlighter, Object.assign({}, props, { mode: 'allChildren', watchMotion: watchMotion }));
23
23
  }
24
- exports.MultiHighlighter = MultiHighlighter;
25
- //# sourceMappingURL=multi-highlighter.js.map
24
+ exports.ChildrenHighlighter = ChildrenHighlighter;
25
+ //# sourceMappingURL=children-highlighter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"children-highlighter.js","sourceRoot":"","sources":["../../children-highlighter/children-highlighter.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAE1B,8DAAkF;AAIlF,SAAgB,mBAAmB,CAAC,EAA2D;QAA3D,EAAE,WAAW,GAAG,KAAK,OAAsC,EAAjC,KAAK,cAA/B,eAAiC,CAAF;IACjE,OAAO,8BAAC,sCAAiB,oBAAK,KAAK,IAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,IAAI,CAAC;AACzF,CAAC;AAFD,kDAEC"}
@@ -5,9 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
7
  const react_2 = require("@testing-library/react");
8
- const multi_highlighter_composition_1 = require("./multi-highlighter.composition");
9
- it('should not throw when rendering the multi-highlighter', () => {
10
- const { getByText } = (0, react_2.render)(react_1.default.createElement(multi_highlighter_composition_1.MultiHighlighterPreview, null));
8
+ const children_highlighter_composition_1 = require("./children-highlighter.composition");
9
+ it('should not throw when rendering the children-highlighter', () => {
10
+ const { getByText } = (0, react_2.render)(react_1.default.createElement(children_highlighter_composition_1.ChildrenHighlighterPreview, null));
11
11
  const rendered = getByText('hover here');
12
12
  expect(rendered).toBeInstanceOf(HTMLElement);
13
13
  });
@@ -19,4 +19,4 @@ it('should not throw when rendering the multi-highlighter', () => {
19
19
  // const rendered = queryAllByText('input/button');
20
20
  // expect(rendered).toHaveLength(2);
21
21
  // });
22
- //# sourceMappingURL=multi-highlighter.spec.js.map
22
+ //# sourceMappingURL=children-highlighter.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"children-highlighter.spec.js","sourceRoot":"","sources":["../../children-highlighter/children-highlighter.spec.tsx"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,kDAAgD;AAChD,yFAAgF;AAEhF,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;IAClE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAAC,8BAAC,6DAA0B,OAAG,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IAEzC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,sFAAsF;AACtF,4EAA4E;AAC5E,oDAAoD;AAEpD,8BAA8B;AAC9B,sDAAsD;AAEtD,qDAAqD;AACrD,sCAAsC;AACtC,MAAM"}
@@ -0,0 +1,4 @@
1
+ export { useChildrenHighlighter } from './use-children-highlighter';
2
+ export type { ChildrenHighlighterOptions } from './use-children-highlighter';
3
+ export { ChildrenHighlighter } from './children-highlighter';
4
+ export type { ChildrenHighlighterProps } from './children-highlighter';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChildrenHighlighter = exports.useChildrenHighlighter = void 0;
4
+ var use_children_highlighter_1 = require("./use-children-highlighter");
5
+ Object.defineProperty(exports, "useChildrenHighlighter", { enumerable: true, get: function () { return use_children_highlighter_1.useChildrenHighlighter; } });
6
+ var children_highlighter_1 = require("./children-highlighter");
7
+ Object.defineProperty(exports, "ChildrenHighlighter", { enumerable: true, get: function () { return children_highlighter_1.ChildrenHighlighter; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../children-highlighter/index.ts"],"names":[],"mappings":";;;AAAA,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA;AAG/B,+DAA6D;AAApD,2HAAA,mBAAmB,OAAA"}
@@ -1,13 +1,13 @@
1
1
  import { RefObject } from 'react';
2
2
  import { HighlightTarget } from '../element-highlighter';
3
- import { MatchRule } from '../rule-matcher';
4
- declare type useMultiHighlighterProps = {
3
+ import { MatchRule, ComponentMatchRule } from '../rule-matcher';
4
+ export declare type ChildrenHighlighterOptions = {
5
5
  onChange: (highlighterTargets: Record<string, HighlightTarget>) => void;
6
6
  disabled?: boolean;
7
7
  scopeRef: RefObject<HTMLElement>;
8
8
  scopeClass?: string;
9
9
  /** filter highlighter targets by this query selector. (May be a more complex object in the future) */
10
10
  rule?: MatchRule;
11
+ componentRule?: ComponentMatchRule;
11
12
  };
12
- export declare function useMultiHighlighter({ onChange, disabled, scopeRef, scopeClass: scopeSelector, rule, }: useMultiHighlighterProps): void;
13
- export {};
13
+ export declare function useChildrenHighlighter({ onChange, disabled, scopeRef, scopeClass: scopeSelector, rule, componentRule, }: ChildrenHighlighterOptions): void;
@@ -3,14 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.useMultiHighlighter = void 0;
6
+ exports.useChildrenHighlighter = void 0;
7
7
  const react_1 = require("react");
8
8
  const get_xpath_1 = __importDefault(require("get-xpath"));
9
9
  const react_modules_dom_to_react_1 = require("@teambit/react.modules.dom-to-react");
10
10
  const react_ui_highlighter_component_metadata_bit_component_meta_1 = require("@teambit/react.ui.highlighter.component-metadata.bit-component-meta");
11
11
  const ignore_highlighter_1 = require("../ignore-highlighter");
12
12
  const rule_matcher_1 = require("../rule-matcher");
13
- function useMultiHighlighter({ onChange, disabled, scopeRef, scopeClass: scopeSelector = '', rule, }) {
13
+ function useChildrenHighlighter({ onChange, disabled, scopeRef, scopeClass: scopeSelector = '', rule, componentRule, }) {
14
14
  (0, react_1.useEffect)(() => {
15
15
  const nextTargets = {};
16
16
  const scopeElement = scopeRef.current;
@@ -26,20 +26,19 @@ function useMultiHighlighter({ onChange, disabled, scopeRef, scopeClass: scopeSe
26
26
  // deduplicate
27
27
  const uniqueRoots = new Set(rootElements);
28
28
  uniqueRoots.forEach((element) => {
29
- const comp = (0, react_modules_dom_to_react_1.domToReact)(element);
30
- if (!element || !(0, react_ui_highlighter_component_metadata_bit_component_meta_1.hasComponentMeta)(comp))
29
+ if (!element)
30
+ return;
31
+ const comps = (0, react_modules_dom_to_react_1.domToReacts)(element);
32
+ const componentsWithMeta = comps.filter((x) => (0, react_ui_highlighter_component_metadata_bit_component_meta_1.hasComponentMeta)(x) && (0, rule_matcher_1.componentRuleMatcher)({ meta: x[react_ui_highlighter_component_metadata_bit_component_meta_1.componentMetaField] }, componentRule));
33
+ if (componentsWithMeta.length < 1)
31
34
  return;
32
35
  const key = (0, get_xpath_1.default)(element);
33
- const meta = comp[react_ui_highlighter_component_metadata_bit_component_meta_1.componentMetaField];
34
- const compId = meta[react_ui_highlighter_component_metadata_bit_component_meta_1.componentMetaProperties.componentId];
35
- const link = meta[react_ui_highlighter_component_metadata_bit_component_meta_1.componentMetaProperties.homepageUrl];
36
- const local = meta[react_ui_highlighter_component_metadata_bit_component_meta_1.componentMetaProperties.isExported] === false;
37
- nextTargets[key] = { element, id: compId, link, local };
36
+ nextTargets[key] = { element, components: componentsWithMeta };
38
37
  });
39
38
  onChange(nextTargets);
40
39
  }, [disabled, scopeSelector]);
41
40
  }
42
- exports.useMultiHighlighter = useMultiHighlighter;
41
+ exports.useChildrenHighlighter = useChildrenHighlighter;
43
42
  function targetsSelector(
44
43
  /**
45
44
  * the scope in which to consider the exclude selector.
@@ -48,4 +47,4 @@ function targetsSelector(
48
47
  scopeSelector = ':scope') {
49
48
  return `:not(${scopeSelector} ${ignore_highlighter_1.excludeHighlighterSelector}, ${scopeSelector} ${ignore_highlighter_1.excludeHighlighterSelector} *)`;
50
49
  }
51
- //# sourceMappingURL=use-multi-highlighter.js.map
50
+ //# sourceMappingURL=use-children-highlighter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-children-highlighter.js","sourceRoot":"","sources":["../../children-highlighter/use-children-highlighter.tsx"],"names":[],"mappings":";;;;;;AAAA,iCAA6C;AAC7C,0DAAiC;AACjC,oFAAiF;AACjF,oJAI6E;AAE7E,8DAAmE;AACnE,kDAAmG;AAenG,SAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,EAAE,aAAa,GAAG,EAAE,EAC9B,IAAI,EACJ,aAAa,GACc;IAC3B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAAoC,EAAE,CAAC;QACxD,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,YAAY,IAAI,QAAQ;YAAE,OAAO;QAEtC,wCAAwC;QACxC,IAAI,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAc,eAAe,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/G,uBAAuB;QACvB,IAAI,IAAI;YAAE,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,0BAAW,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9E,yBAAyB;QACzB,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,0CAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,cAAc;QACd,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QAE1C,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,MAAM,KAAK,GAAG,IAAA,wCAAW,EAAC,OAAO,CAAC,CAAC;YACnC,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,6EAAgB,EAAC,CAAC,CAAC,IAAI,IAAA,mCAAoB,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,+EAAkB,CAAC,EAAE,EAAE,aAAa,CAAC,CACrE,CAAC;YAEhC,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO;YAE1C,MAAM,GAAG,GAAG,IAAA,mBAAQ,EAAC,OAAO,CAAC,CAAC;YAE9B,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,WAAW,CAAC,CAAC;IACxB,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;AAChC,CAAC;AAtCD,wDAsCC;AAED,SAAS,eAAe;AACtB;;;GAGG;AACH,aAAa,GAAG,QAAQ;IAExB,OAAO,QAAQ,aAAa,IAAI,+CAA0B,KAAK,aAAa,IAAI,+CAA0B,KAAK,CAAC;AAClH,CAAC"}
@@ -94,7 +94,7 @@ The Component Highlighter comes in a few different modes:
94
94
  In addition to changing the `mode` prop, you can also use convenience exports from the same package:
95
95
 
96
96
  ```tsx
97
- import { MultiHighlighter, HoverHighlighter } from '@teambit/react.ui.component-highlighter';
97
+ import { ChildrenHighlighter, HoverHighlighter } from '@teambit/react.ui.component-highlighter';
98
98
 
99
99
  function example() {
100
100
  return (
@@ -103,9 +103,9 @@ function example() {
103
103
  <App />
104
104
  </HoverHighlighter>
105
105
 
106
- <MultiHighlighter>
106
+ <ChildrenHighlighter>
107
107
  <App />
108
- </MultiHighlighter>
108
+ </ChildrenHighlighter>
109
109
  </div>
110
110
  );
111
111
  }
@@ -153,6 +153,15 @@ For example:
153
153
  </ComponentHighlighter>
154
154
  ```
155
155
 
156
+ You can also filter by component id, using the `componentRule` prop:
157
+
158
+ ```tsx
159
+ <ComponentHighlighter componentRule="teambit.design/ui/icon-button">
160
+ <Paragraph>will not be highlighted</Paragraph>
161
+ <Button>this will be highlighted</Button>
162
+ </ComponentHighlighter>
163
+ ```
164
+
156
165
  ## Customization
157
166
 
158
167
  Use these CSS variables to edit the highlighter color
@@ -161,6 +170,7 @@ Use these CSS variables to edit the highlighter color
161
170
  --bit-highlighter-color: #eebcc9;
162
171
  --bit-highlighter-color-hover: #f6dae2;
163
172
  --bit-highlighter-color-active: #e79db1;
173
+ --bit-highlighter-shadow: 0px 11px 29px 0px rgba(0, 0, 0, 0.23));
164
174
  ```
165
175
 
166
176
  While it is preferred to use the css variables, you can also set them using react props:
@@ -1,11 +1,13 @@
1
1
  import { CSSProperties } from 'react';
2
+ import { HighlighterSize } from './element-highlighter';
2
3
  declare type HighlightedElementProps = {
3
4
  style?: CSSProperties;
4
5
  targetStyle?: CSSProperties;
5
6
  className?: string;
6
7
  watchMotion?: boolean;
8
+ size?: HighlighterSize;
7
9
  };
8
- export declare const HighlightedElement: ({ style, targetStyle, watchMotion, className }: HighlightedElementProps) => JSX.Element;
10
+ export declare const HighlightedElement: ({ style, targetStyle, watchMotion, className, size }: HighlightedElementProps) => JSX.Element;
9
11
  export declare const Customized: () => JSX.Element;
10
12
  export declare const Sizes: () => JSX.Element;
11
13
  export declare const MovingElement: () => JSX.Element;
@@ -20,21 +20,26 @@ var __importStar = (this && this.__importStar) || function (mod) {
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
22
  exports.MovingElement = exports.Sizes = exports.Customized = exports.HighlightedElement = void 0;
23
+ const react_ui_highlighter_component_metadata_bit_component_meta_1 = require("@teambit/react.ui.highlighter.component-metadata.bit-component-meta");
23
24
  const react_1 = __importStar(require("react"));
24
25
  const element_highlighter_1 = require("./element-highlighter");
25
26
  const mockTarget = {
26
- id: 'teambit.design/ui/icon-button',
27
- link: 'https://bit.dev/teambit/design/ui/icon-button',
28
- scopeLink: 'https://bit.dev/teambit/design',
27
+ components: [
28
+ {
29
+ [react_ui_highlighter_component_metadata_bit_component_meta_1.componentMetaField]: {
30
+ id: 'teambit.design/ui/icon-button@1.6.2',
31
+ },
32
+ },
33
+ ],
29
34
  };
30
- const HighlightedElement = ({ style, targetStyle, watchMotion, className }) => {
35
+ const HighlightedElement = ({ style, targetStyle, watchMotion, className, size }) => {
31
36
  const [targetElement, setTargetElement] = (0, react_1.useState)(undefined);
32
37
  const targetRef = (0, react_1.createRef)();
33
38
  (0, react_1.useEffect)(() => setTargetElement(targetRef.current || undefined), [targetRef.current]);
34
39
  const target = targetElement && Object.assign(Object.assign({}, mockTarget), { element: targetElement });
35
- return (react_1.default.createElement("div", { className: className, style: { padding: '16px 16px 50px 16px', width: 300 } },
40
+ return (react_1.default.createElement("div", { className: className, style: { padding: '16px 16px 40px 16px', width: 300, fontFamily: 'sans-serif' } },
36
41
  react_1.default.createElement("div", { ref: targetRef, style: Object.assign({ width: 100 }, targetStyle) }, "highlight target"),
37
- target && react_1.default.createElement(element_highlighter_1.ElementHighlighter, { target: target, style: style, watchMotion: watchMotion, placement: "bottom" })));
42
+ target && (react_1.default.createElement(element_highlighter_1.ElementHighlighter, { target: target, style: style, watchMotion: watchMotion, placement: "bottom", size: size }))));
38
43
  };
39
44
  exports.HighlightedElement = HighlightedElement;
40
45
  const Customized = () => {
@@ -46,7 +51,10 @@ const Customized = () => {
46
51
  };
47
52
  exports.Customized = Customized;
48
53
  const Sizes = () => {
49
- return react_1.default.createElement(exports.HighlightedElement, { style: { fontSize: '16px' } });
54
+ return (react_1.default.createElement("div", null,
55
+ react_1.default.createElement(exports.HighlightedElement, { style: { fontSize: 10 } }),
56
+ react_1.default.createElement(exports.HighlightedElement, { style: { fontSize: 14 } }),
57
+ react_1.default.createElement(exports.HighlightedElement, { style: { fontSize: 18 } })));
50
58
  };
51
59
  exports.Sizes = Sizes;
52
60
  const MovingElement = () => {