@teambit/react.ui.component-highlighter 0.0.0-4d64e75088ad738b699f1df7db0bcd7201d589d0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/children-highlighter/children-highlighter.composition.tsx +103 -0
- package/children-highlighter/children-highlighter.spec.tsx +22 -0
- package/children-highlighter/children-highlighter.tsx +9 -0
- package/children-highlighter/index.ts +5 -0
- package/children-highlighter/use-children-highlighter.tsx +79 -0
- package/component-highlighter.docs.md +191 -0
- package/dist/children-highlighter/children-highlighter.composition.d.ts +6 -0
- package/dist/children-highlighter/children-highlighter.composition.js +93 -0
- package/dist/children-highlighter/children-highlighter.composition.js.map +1 -0
- package/dist/children-highlighter/children-highlighter.d.ts +4 -0
- package/dist/children-highlighter/children-highlighter.js +24 -0
- package/dist/children-highlighter/children-highlighter.js.map +1 -0
- package/dist/children-highlighter/children-highlighter.spec.d.ts +1 -0
- package/dist/children-highlighter/children-highlighter.spec.js +22 -0
- package/dist/children-highlighter/children-highlighter.spec.js.map +1 -0
- package/dist/children-highlighter/index.d.ts +4 -0
- package/dist/children-highlighter/index.js +8 -0
- package/dist/children-highlighter/index.js.map +1 -0
- package/dist/children-highlighter/use-children-highlighter.d.ts +18 -0
- package/dist/children-highlighter/use-children-highlighter.js +51 -0
- package/dist/children-highlighter/use-children-highlighter.js.map +1 -0
- package/dist/component-highlighter.docs.md +191 -0
- package/dist/element-highlighter/element-highlighter.compositions.d.ts +14 -0
- package/dist/element-highlighter/element-highlighter.compositions.js +103 -0
- package/dist/element-highlighter/element-highlighter.compositions.js.map +1 -0
- package/dist/element-highlighter/element-highlighter.d.ts +22 -0
- package/dist/element-highlighter/element-highlighter.js +31 -0
- package/dist/element-highlighter/element-highlighter.js.map +1 -0
- package/dist/element-highlighter/element-highlighter.module.scss +10 -0
- package/dist/element-highlighter/index.d.ts +2 -0
- package/dist/element-highlighter/index.js +6 -0
- package/dist/element-highlighter/index.js.map +1 -0
- package/dist/frame/frame.d.ts +13 -0
- package/dist/frame/frame.js +126 -0
- package/dist/frame/frame.js.map +1 -0
- package/dist/frame/frame.module.scss +23 -0
- package/dist/frame/index.d.ts +2 -0
- package/dist/frame/index.js +6 -0
- package/dist/frame/index.js.map +1 -0
- package/dist/hover-highlighter/bubble-to-component.d.ts +24 -0
- package/dist/hover-highlighter/bubble-to-component.js +55 -0
- package/dist/hover-highlighter/bubble-to-component.js.map +1 -0
- package/dist/hover-highlighter/bubble-to-component.spec.d.ts +1 -0
- package/dist/hover-highlighter/bubble-to-component.spec.js +38 -0
- package/dist/hover-highlighter/bubble-to-component.spec.js.map +1 -0
- package/dist/hover-highlighter/hover-highlighter.compositions.d.ts +4 -0
- package/dist/hover-highlighter/hover-highlighter.compositions.js +73 -0
- package/dist/hover-highlighter/hover-highlighter.compositions.js.map +1 -0
- package/dist/hover-highlighter/hover-highlighter.d.ts +4 -0
- package/dist/hover-highlighter/hover-highlighter.js +24 -0
- package/dist/hover-highlighter/hover-highlighter.js.map +1 -0
- package/dist/hover-highlighter/hover-highlighter.spec.d.ts +1 -0
- package/dist/hover-highlighter/hover-highlighter.spec.js +95 -0
- package/dist/hover-highlighter/hover-highlighter.spec.js.map +1 -0
- package/dist/hover-highlighter/index.d.ts +4 -0
- package/dist/hover-highlighter/index.js +8 -0
- package/dist/hover-highlighter/index.js.map +1 -0
- package/dist/hover-highlighter/use-hover-highlighter.d.ts +25 -0
- package/dist/hover-highlighter/use-hover-highlighter.js +47 -0
- package/dist/hover-highlighter/use-hover-highlighter.js.map +1 -0
- package/dist/hybrid-highlighter/hybrid-highlighter.d.ts +36 -0
- package/dist/hybrid-highlighter/hybrid-highlighter.js +79 -0
- package/dist/hybrid-highlighter/hybrid-highlighter.js.map +1 -0
- package/dist/hybrid-highlighter/index.d.ts +2 -0
- package/dist/hybrid-highlighter/index.js +6 -0
- package/dist/hybrid-highlighter/index.js.map +1 -0
- package/dist/ignore-highlighter.d.ts +19 -0
- package/dist/ignore-highlighter.js +25 -0
- package/dist/ignore-highlighter.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/label/component-strip.compositions.d.ts +2 -0
- package/dist/label/component-strip.compositions.js +17 -0
- package/dist/label/component-strip.compositions.js.map +1 -0
- package/dist/label/component-strip.d.ts +7 -0
- package/dist/label/component-strip.js +61 -0
- package/dist/label/component-strip.js.map +1 -0
- package/dist/label/component-strip.module.scss +68 -0
- package/dist/label/index.d.ts +4 -0
- package/dist/label/index.js +8 -0
- package/dist/label/index.js.map +1 -0
- package/dist/label/label-container.d.ts +12 -0
- package/dist/label/label-container.js +75 -0
- package/dist/label/label-container.js.map +1 -0
- package/dist/label/label.d.ts +6 -0
- package/dist/label/label.js +60 -0
- package/dist/label/label.js.map +1 -0
- package/dist/label/label.module.scss +32 -0
- package/dist/label/links.d.ts +2 -0
- package/dist/label/links.js +16 -0
- package/dist/label/links.js.map +1 -0
- package/dist/label/other-components.d.ts +9 -0
- package/dist/label/other-components.js +34 -0
- package/dist/label/other-components.js.map +1 -0
- package/dist/mock-component.d.ts +14 -0
- package/dist/mock-component.js +43 -0
- package/dist/mock-component.js.map +1 -0
- package/dist/preview-1751963029152.js +10 -0
- package/dist/rule-matcher.d.ts +8 -0
- package/dist/rule-matcher.js +32 -0
- package/dist/rule-matcher.js.map +1 -0
- package/element-highlighter/element-highlighter.compositions.tsx +130 -0
- package/element-highlighter/element-highlighter.module.scss +10 -0
- package/element-highlighter/element-highlighter.tsx +51 -0
- package/element-highlighter/index.ts +2 -0
- package/frame/frame.module.scss +23 -0
- package/frame/frame.tsx +139 -0
- package/frame/index.ts +2 -0
- package/hover-highlighter/bubble-to-component.spec.tsx +57 -0
- package/hover-highlighter/bubble-to-component.tsx +82 -0
- package/hover-highlighter/hover-highlighter.compositions.tsx +65 -0
- package/hover-highlighter/hover-highlighter.spec.tsx +115 -0
- package/hover-highlighter/hover-highlighter.tsx +8 -0
- package/hover-highlighter/index.ts +5 -0
- package/hover-highlighter/use-hover-highlighter.tsx +85 -0
- package/hybrid-highlighter/hybrid-highlighter.tsx +136 -0
- package/hybrid-highlighter/index.ts +2 -0
- package/ignore-highlighter.tsx +22 -0
- package/index.ts +21 -0
- package/label/component-strip.compositions.tsx +13 -0
- package/label/component-strip.module.scss +68 -0
- package/label/component-strip.tsx +57 -0
- package/label/index.ts +5 -0
- package/label/label-container.tsx +72 -0
- package/label/label.module.scss +32 -0
- package/label/label.tsx +37 -0
- package/label/links.tsx +9 -0
- package/label/other-components.tsx +51 -0
- package/mock-component.tsx +23 -0
- package/package.json +61 -0
- package/rule-matcher.tsx +42 -0
- package/types/asset.d.ts +29 -0
- package/types/style.d.ts +42 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Frame = void 0;
|
|
4
|
+
var frame_1 = require("./frame");
|
|
5
|
+
Object.defineProperty(exports, "Frame", { enumerable: true, get: function () { return frame_1.Frame; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../frame/index.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAAvB,8FAAA,KAAK,OAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ReactComponentMetaHolder } from '@teambit/react.ui.highlighter.component-metadata.bit-component-meta';
|
|
2
|
+
import { MatchRule, ComponentMatchRule } from '../rule-matcher';
|
|
3
|
+
type BubblingOptions = {
|
|
4
|
+
/** filter elements by this rule */
|
|
5
|
+
elementRule?: MatchRule;
|
|
6
|
+
/** filter components by this rule */
|
|
7
|
+
componentRule?: ComponentMatchRule;
|
|
8
|
+
/**
|
|
9
|
+
* continue bubbling when encountering a parent of the same component
|
|
10
|
+
* @default true
|
|
11
|
+
*/
|
|
12
|
+
propagateSameParents?: boolean;
|
|
13
|
+
};
|
|
14
|
+
/** go up the dom tree until reaching a react bit component */
|
|
15
|
+
export declare function bubbleToComponent(element: HTMLElement | null, { elementRule, componentRule, propagateSameParents }?: BubblingOptions): {
|
|
16
|
+
element: HTMLElement;
|
|
17
|
+
components: ReactComponentMetaHolder[];
|
|
18
|
+
} | {
|
|
19
|
+
element: any;
|
|
20
|
+
components: {
|
|
21
|
+
__bit_component: any;
|
|
22
|
+
}[];
|
|
23
|
+
};
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bubbleToComponent = bubbleToComponent;
|
|
4
|
+
const react_modules_dom_to_react_1 = require("@teambit/react.modules.dom-to-react");
|
|
5
|
+
const react_ui_highlighter_component_metadata_bit_component_meta_1 = require("@teambit/react.ui.highlighter.component-metadata.bit-component-meta");
|
|
6
|
+
const rule_matcher_1 = require("../rule-matcher");
|
|
7
|
+
/** go up the dom tree until reaching a react bit component */
|
|
8
|
+
function bubbleToComponent(element, { elementRule, componentRule, propagateSameParents = true } = {}) {
|
|
9
|
+
var _a, _b, _c, _d, _e;
|
|
10
|
+
// check if the element is rendered in Vue
|
|
11
|
+
if (element === null || element === void 0 ? void 0 : element.__vnode) {
|
|
12
|
+
const vueComp = (_b = (_a = element.__vnode) === null || _a === void 0 ? void 0 : _a.ctx) === null || _b === void 0 ? void 0 : _b.type;
|
|
13
|
+
const comp = vueComp === null || vueComp === void 0 ? void 0 : vueComp.__bit_component;
|
|
14
|
+
const compEl = (_e = (_d = (_c = element.__vnode) === null || _c === void 0 ? void 0 : _c.ctx) === null || _d === void 0 ? void 0 : _d.ctx) === null || _e === void 0 ? void 0 : _e.$el;
|
|
15
|
+
if (compEl && comp) {
|
|
16
|
+
return {
|
|
17
|
+
element: compEl,
|
|
18
|
+
components: [{ [react_ui_highlighter_component_metadata_bit_component_meta_1.componentMetaField]: comp }],
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
let current = bubbleToFirstComponent(element, elementRule, componentRule);
|
|
23
|
+
if (!propagateSameParents)
|
|
24
|
+
return current;
|
|
25
|
+
while (current) {
|
|
26
|
+
const parentElement = current.element.parentElement;
|
|
27
|
+
const parent = bubbleToFirstComponent(parentElement, elementRule, componentRule);
|
|
28
|
+
const primeComponent = current === null || current === void 0 ? void 0 : current.components.slice(-1).pop();
|
|
29
|
+
const parentPrimeComponent = parent === null || parent === void 0 ? void 0 : parent.components.slice(-1).pop();
|
|
30
|
+
if ((primeComponent === null || primeComponent === void 0 ? void 0 : primeComponent[react_ui_highlighter_component_metadata_bit_component_meta_1.componentMetaField].id) !== (parentPrimeComponent === null || parentPrimeComponent === void 0 ? void 0 : parentPrimeComponent[react_ui_highlighter_component_metadata_bit_component_meta_1.componentMetaField].id))
|
|
31
|
+
return current;
|
|
32
|
+
current = parent;
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
/** go up the dom tree until reaching a react bit component */
|
|
37
|
+
function bubbleToFirstComponent(element, elementRule, componentRule) {
|
|
38
|
+
for (let current = element; current; current = current.parentElement) {
|
|
39
|
+
current = (0, react_modules_dom_to_react_1.toRootElement)(current);
|
|
40
|
+
if (!current)
|
|
41
|
+
return undefined;
|
|
42
|
+
if ((0, rule_matcher_1.ruleMatcher)(current, elementRule)) {
|
|
43
|
+
const components = (0, react_modules_dom_to_react_1.domToReacts)(current);
|
|
44
|
+
const relevantComponents = components.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));
|
|
45
|
+
if (relevantComponents.length < 1)
|
|
46
|
+
return undefined;
|
|
47
|
+
return {
|
|
48
|
+
element: current,
|
|
49
|
+
components: relevantComponents,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=bubble-to-component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bubble-to-component.js","sourceRoot":"","sources":["../../hover-highlighter/bubble-to-component.tsx"],"names":[],"mappings":";;AAqBA,8CAiCC;AAtDD,oFAAiF;AACjF,oJAI6E;AAC7E,kDAAmG;AAcnG,8DAA8D;AAC9D,SAAgB,iBAAiB,CAC/B,OAA2B,EAC3B,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,GAAG,IAAI,KAAsB,EAAE;;IAEjF,0CAA0C;IAC1C,IAAK,OAAe,aAAf,OAAO,uBAAP,OAAO,CAAU,OAAO,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAA,MAAC,OAAe,CAAC,OAAO,0CAAE,GAAG,0CAAE,IAAI,CAAC;QACpD,MAAM,IAAI,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,CAAC;QACtC,MAAM,MAAM,GAAG,MAAA,MAAA,MAAC,OAAe,CAAC,OAAO,0CAAE,GAAG,0CAAE,GAAG,0CAAE,GAAG,CAAC;QACvD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO;gBACL,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,CAAC,EAAE,CAAC,+EAAkB,CAAC,EAAE,IAAI,EAAE,CAAC;aAC7C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1E,IAAI,CAAC,oBAAoB;QAAE,OAAO,OAAO,CAAC;IAE1C,OAAO,OAAO,EAAE,CAAC;QACf,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QACpD,MAAM,MAAM,GAAG,sBAAsB,CAAC,aAAa,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;QAEjF,MAAM,cAAc,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;QAC3D,MAAM,oBAAoB,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;QAEhE,IAAI,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,+EAAkB,EAAE,EAAE,OAAK,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAG,+EAAkB,EAAE,EAAE,CAAA;YAAE,OAAO,OAAO,CAAC;QAE9G,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8DAA8D;AAC9D,SAAS,sBAAsB,CAC7B,OAA2B,EAC3B,WAAuB,EACvB,aAAkC;IAElC,KAAK,IAAI,OAAO,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QACrE,OAAO,GAAG,IAAA,0CAAa,EAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,IAAI,IAAA,0BAAW,EAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,IAAA,wCAAW,EAAC,OAAO,CAAC,CAAC;YAExC,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAC1C,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,SAAS,CAAC;YACpD,OAAO;gBACL,OAAO,EAAE,OAAO;gBAChB,UAAU,EAAE,kBAAkB;aAC/B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const react_2 = require("@testing-library/react");
|
|
8
|
+
const mock_component_1 = require("../mock-component");
|
|
9
|
+
const bubble_to_component_1 = require("./bubble-to-component");
|
|
10
|
+
it('should find component when starting from a div', () => {
|
|
11
|
+
const { getByText, getByTestId } = (0, react_2.render)(react_1.default.createElement(mock_component_1.MockTarget, { "data-testid": "expected-result" },
|
|
12
|
+
react_1.default.createElement("div", null, "hello world")));
|
|
13
|
+
const rendered = getByText('hello world');
|
|
14
|
+
const result = (0, bubble_to_component_1.bubbleToComponent)(rendered);
|
|
15
|
+
expect(result === null || result === void 0 ? void 0 : result.element).toBe(getByTestId('expected-result'));
|
|
16
|
+
expect(result === null || result === void 0 ? void 0 : result.components).toEqual([mock_component_1.MockTarget]);
|
|
17
|
+
});
|
|
18
|
+
it('should bubble to root component when it renders itself recursively', () => {
|
|
19
|
+
const { getByText, getByTestId } = (0, react_2.render)(react_1.default.createElement(mock_component_1.MockTarget, { "data-testid": "expected-result" },
|
|
20
|
+
react_1.default.createElement(mock_component_1.MockTarget, null,
|
|
21
|
+
react_1.default.createElement(mock_component_1.MockTarget, null,
|
|
22
|
+
react_1.default.createElement("div", null, "hello world")))));
|
|
23
|
+
const rendered = getByText('hello world');
|
|
24
|
+
const result = (0, bubble_to_component_1.bubbleToComponent)(rendered);
|
|
25
|
+
expect(result === null || result === void 0 ? void 0 : result.element).toBe(getByTestId('expected-result'));
|
|
26
|
+
expect(result === null || result === void 0 ? void 0 : result.components).toEqual([mock_component_1.MockTarget]);
|
|
27
|
+
});
|
|
28
|
+
it('should find first component, when parent propagation is disabled', () => {
|
|
29
|
+
const { getByText, getByTestId } = (0, react_2.render)(react_1.default.createElement(mock_component_1.MockTarget, null,
|
|
30
|
+
react_1.default.createElement(mock_component_1.MockTarget, null,
|
|
31
|
+
react_1.default.createElement(mock_component_1.MockTarget, { "data-testid": "expected-result" },
|
|
32
|
+
react_1.default.createElement("div", null, "hello world")))));
|
|
33
|
+
const rendered = getByText('hello world');
|
|
34
|
+
const result = (0, bubble_to_component_1.bubbleToComponent)(rendered, { propagateSameParents: false });
|
|
35
|
+
expect(result === null || result === void 0 ? void 0 : result.element).toBe(getByTestId('expected-result'));
|
|
36
|
+
expect(result === null || result === void 0 ? void 0 : result.components).toEqual([mock_component_1.MockTarget]);
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=bubble-to-component.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bubble-to-component.spec.js","sourceRoot":"","sources":["../../hover-highlighter/bubble-to-component.spec.tsx"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,kDAAgD;AAChD,sDAA+C;AAC/C,+DAA0D;AAE1D,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;IACxD,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAA,cAAM,EACvC,8BAAC,2BAAU,mBAAa,iBAAiB;QACvC,yDAAsB,CACX,CACd,CAAC;IAEF,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAE1C,MAAM,MAAM,GAAG,IAAA,uCAAiB,EAAC,QAAQ,CAAC,CAAC;IAE3C,MAAM,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,2BAAU,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;IAC5E,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAA,cAAM,EACvC,8BAAC,2BAAU,mBAAa,iBAAiB;QACvC,8BAAC,2BAAU;YACT,8BAAC,2BAAU;gBACT,yDAAsB,CACX,CACF,CACF,CACd,CAAC;IAEF,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAE1C,MAAM,MAAM,GAAG,IAAA,uCAAiB,EAAC,QAAQ,CAAC,CAAC;IAE3C,MAAM,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,2BAAU,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;IAC1E,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAA,cAAM,EACvC,8BAAC,2BAAU;QACT,8BAAC,2BAAU;YACT,8BAAC,2BAAU,mBAAa,iBAAiB;gBACvC,yDAAsB,CACX,CACF,CACF,CACd,CAAC;IAEF,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAE1C,MAAM,MAAM,GAAG,IAAA,uCAAiB,EAAC,QAAQ,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,CAAC;IAE5E,MAAM,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,2BAAU,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.HoverExclusionZones = exports.UnmountingElement = exports.ShowWhenHovering = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const hover_highlighter_1 = require("./hover-highlighter");
|
|
29
|
+
const mock_component_1 = require("../mock-component");
|
|
30
|
+
const ignore_highlighter_1 = require("../ignore-highlighter");
|
|
31
|
+
const ShowWhenHovering = () => {
|
|
32
|
+
const [disabled, setDisabled] = (0, react_1.useState)(false);
|
|
33
|
+
return (react_1.default.createElement("div", { style: { padding: '16px 50px 32px 16px', minWidth: 300, fontFamily: 'sans-serif' } },
|
|
34
|
+
react_1.default.createElement(hover_highlighter_1.HoverHighlighter, { style: { padding: 16 }, disabled: disabled },
|
|
35
|
+
react_1.default.createElement("div", null,
|
|
36
|
+
react_1.default.createElement("br", null),
|
|
37
|
+
react_1.default.createElement("div", null,
|
|
38
|
+
react_1.default.createElement(mock_component_1.MockButton, { onClick: () => setDisabled((x) => !x) }, "Hover here")),
|
|
39
|
+
react_1.default.createElement("div", null,
|
|
40
|
+
disabled ? 'X' : '✓',
|
|
41
|
+
" highlighter is ",
|
|
42
|
+
disabled ? 'disabled' : 'enabled')))));
|
|
43
|
+
};
|
|
44
|
+
exports.ShowWhenHovering = ShowWhenHovering;
|
|
45
|
+
const UnmountingElement = () => {
|
|
46
|
+
const [shown, setShown] = (0, react_1.useState)(true);
|
|
47
|
+
(0, react_1.useEffect)(() => {
|
|
48
|
+
const tid = setInterval(() => setShown((x) => !x), 1500);
|
|
49
|
+
return () => clearInterval(tid);
|
|
50
|
+
}, []);
|
|
51
|
+
return (react_1.default.createElement("div", { style: { padding: '16px 50px 32px 16px', minWidth: 300, fontFamily: 'sans-serif' } },
|
|
52
|
+
react_1.default.createElement(hover_highlighter_1.HoverHighlighter, null,
|
|
53
|
+
react_1.default.createElement("div", null, !shown && '(hidden)'),
|
|
54
|
+
react_1.default.createElement("div", null, shown && react_1.default.createElement(mock_component_1.MockButton, null, "Hover here")),
|
|
55
|
+
react_1.default.createElement("br", null),
|
|
56
|
+
react_1.default.createElement(mock_component_1.MockTarget, null,
|
|
57
|
+
react_1.default.createElement("div", null, shown && react_1.default.createElement(mock_component_1.MockButton, null, "Hover here")),
|
|
58
|
+
react_1.default.createElement("div", null, "same with a container")))));
|
|
59
|
+
};
|
|
60
|
+
exports.UnmountingElement = UnmountingElement;
|
|
61
|
+
const HoverExclusionZones = () => {
|
|
62
|
+
return (react_1.default.createElement("div", { style: { padding: '16px 50px 32px 16px', minWidth: 300, fontFamily: 'sans-serif' } },
|
|
63
|
+
react_1.default.createElement(hover_highlighter_1.HoverHighlighter, null,
|
|
64
|
+
react_1.default.createElement(mock_component_1.MockTarget, null,
|
|
65
|
+
"container (target-able)",
|
|
66
|
+
react_1.default.createElement("div", null, react_1.default.createElement(mock_component_1.MockButton, null, "will be highlighted"))),
|
|
67
|
+
react_1.default.createElement("br", null),
|
|
68
|
+
react_1.default.createElement(mock_component_1.MockTarget, null,
|
|
69
|
+
"container (target-able)",
|
|
70
|
+
react_1.default.createElement("div", Object.assign({}, ignore_highlighter_1.excludeHighlighterAtt), react_1.default.createElement(mock_component_1.MockButton, null, "will be ignored"))))));
|
|
71
|
+
};
|
|
72
|
+
exports.HoverExclusionZones = HoverExclusionZones;
|
|
73
|
+
//# sourceMappingURL=hover-highlighter.compositions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover-highlighter.compositions.js","sourceRoot":"","sources":["../../hover-highlighter/hover-highlighter.compositions.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAmD;AACnD,2DAAuD;AACvD,sDAA2D;AAC3D,8DAA8D;AAEvD,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IAEzD,OAAO,CACL,uCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE;QACrF,8BAAC,oCAAgB,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ;YAC1D;gBACE,yCAAM;gBACN;oBACE,8BAAC,2BAAU,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAyB,CACtE;gBACN;oBACG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;;oBAAkB,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CACpE,CACF,CACW,CACf,CACP,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,gBAAgB,oBAkB3B;AAEK,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IACzC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACzD,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,uCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE;QACrF,8BAAC,oCAAgB;YACf,2CAAM,CAAC,KAAK,IAAI,UAAU,CAAO;YAEjC,2CAAM,KAAK,IAAI,8BAAC,2BAAU,qBAAwB,CAAO;YACzD,yCAAM;YACN,8BAAC,2BAAU;gBACT,2CAAM,KAAK,IAAI,8BAAC,2BAAU,qBAAwB,CAAO;gBACzD,mEAAgC,CACrB,CACI,CACf,CACP,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,iBAAiB,qBAqB5B;AAEK,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,OAAO,CACL,uCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE;QACrF,8BAAC,oCAAgB;YACf,8BAAC,2BAAU;;gBAET,2CAAM,8BAAC,2BAAU,8BAAiC,CAAO,CAC9C;YACb,yCAAM;YACN,8BAAC,2BAAU;;gBAET,uDAAS,0CAAqB,GAAG,8BAAC,2BAAU,0BAA6B,CAAO,CACrE,CACI,CACf,CACP,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,mBAAmB,uBAgB9B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.HoverHighlighter = HoverHighlighter;
|
|
18
|
+
const react_1 = __importDefault(require("react"));
|
|
19
|
+
const hybrid_highlighter_1 = require("../hybrid-highlighter");
|
|
20
|
+
function HoverHighlighter(_a) {
|
|
21
|
+
var props = __rest(_a, []);
|
|
22
|
+
return react_1.default.createElement(hybrid_highlighter_1.HybridHighlighter, Object.assign({}, props, { mode: 'hover' }));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=hover-highlighter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover-highlighter.js","sourceRoot":"","sources":["../../hover-highlighter/hover-highlighter.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAKA,4CAEC;AAPD,kDAA0B;AAC1B,8DAAkF;AAIlF,SAAgB,gBAAgB,CAAC,EAAmC;QAA9B,KAAK,cAAV,EAAY,CAAF;IACzC,OAAO,8BAAC,sCAAiB,oBAAK,KAAK,IAAE,IAAI,EAAE,OAAO,IAAI,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const react_1 = __importDefault(require("react"));
|
|
16
|
+
const test_utils_1 = require("react-dom/test-utils");
|
|
17
|
+
const react_2 = require("@testing-library/react");
|
|
18
|
+
const react_ui_highlighter_component_metadata_bit_component_meta_1 = require("@teambit/react.ui.highlighter.component-metadata.bit-component-meta");
|
|
19
|
+
const hover_highlighter_1 = require("./hover-highlighter");
|
|
20
|
+
const debounceTime = 2;
|
|
21
|
+
function ButtonComponent({ children }) {
|
|
22
|
+
return react_1.default.createElement("button", null, children);
|
|
23
|
+
}
|
|
24
|
+
ButtonComponent[react_ui_highlighter_component_metadata_bit_component_meta_1.componentMetaField] = {
|
|
25
|
+
// could use a non-bit-id to render the "default" bubble
|
|
26
|
+
id: 'teambit.base-ui/input/button',
|
|
27
|
+
};
|
|
28
|
+
it('should show bubble when hovering on element with bit id', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
|
+
const { getByText, findByText } = (0, react_2.render)(react_1.default.createElement(hover_highlighter_1.HoverHighlighter, { debounceSelection: debounceTime },
|
|
30
|
+
react_1.default.createElement(ButtonComponent, null, "hover here")));
|
|
31
|
+
const rendered = getByText('hover here');
|
|
32
|
+
expect(rendered).toBeTruthy();
|
|
33
|
+
(0, test_utils_1.act)(() => {
|
|
34
|
+
react_2.fireEvent.mouseOver(rendered);
|
|
35
|
+
});
|
|
36
|
+
const highlightBubble = yield findByText('input/button');
|
|
37
|
+
expect(highlightBubble).toBeInstanceOf(HTMLElement);
|
|
38
|
+
}));
|
|
39
|
+
it('should hide the highlight when hovering out of the element', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
+
const { getByText, findByText, queryByText } = (0, react_2.render)(react_1.default.createElement(hover_highlighter_1.HoverHighlighter, { debounceSelection: debounceTime },
|
|
41
|
+
react_1.default.createElement(ButtonComponent, null, "hover here")));
|
|
42
|
+
const rendered = getByText('hover here');
|
|
43
|
+
(0, test_utils_1.act)(() => {
|
|
44
|
+
react_2.fireEvent.mouseOver(rendered);
|
|
45
|
+
});
|
|
46
|
+
const highlightBubble = yield findByText('input/button');
|
|
47
|
+
expect(highlightBubble).toBeInstanceOf(HTMLElement);
|
|
48
|
+
(0, test_utils_1.act)(() => {
|
|
49
|
+
react_2.fireEvent.mouseOut(rendered);
|
|
50
|
+
});
|
|
51
|
+
yield (0, react_2.waitForElementToBeRemoved)(() => queryByText('input/button'));
|
|
52
|
+
}));
|
|
53
|
+
it('should keep the highlighter, when hovering on it (even when moving out of the component zone)', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
54
|
+
const { getByText, findByText } = (0, react_2.render)(react_1.default.createElement(hover_highlighter_1.HoverHighlighter, { debounceSelection: debounceTime },
|
|
55
|
+
react_1.default.createElement(ButtonComponent, null, "hover here")));
|
|
56
|
+
const rendered = getByText('hover here');
|
|
57
|
+
(0, test_utils_1.act)(() => {
|
|
58
|
+
// hover on target element:
|
|
59
|
+
react_2.fireEvent.mouseOver(rendered);
|
|
60
|
+
});
|
|
61
|
+
const highlightBubble = yield findByText('input/button');
|
|
62
|
+
yield (0, test_utils_1.act)(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
63
|
+
// move mouse out of target element, "towards" the highlighter bubble
|
|
64
|
+
// this should trigger hiding
|
|
65
|
+
react_2.fireEvent.mouseOut(rendered);
|
|
66
|
+
// move mouse into the highlighter bubble
|
|
67
|
+
react_2.fireEvent.mouseEnter(highlightBubble);
|
|
68
|
+
// allow react to update state during the act()
|
|
69
|
+
// and before verifying highlighter remains
|
|
70
|
+
yield new Promise((resolve) => setTimeout(resolve, debounceTime + 10));
|
|
71
|
+
}));
|
|
72
|
+
// highlighter should still focus the target button
|
|
73
|
+
expect(yield findByText('input/button')).toBeInstanceOf(HTMLElement);
|
|
74
|
+
}));
|
|
75
|
+
it('should hide the highlighter when moving the mouse away of it', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
76
|
+
const { getByText, queryByText, findByText } = (0, react_2.render)(react_1.default.createElement(hover_highlighter_1.HoverHighlighter, { debounceSelection: debounceTime },
|
|
77
|
+
react_1.default.createElement(ButtonComponent, null, "hover here")));
|
|
78
|
+
const rendered = getByText('hover here');
|
|
79
|
+
// hover on target element:
|
|
80
|
+
yield (0, test_utils_1.act)(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
81
|
+
react_2.fireEvent.mouseOver(rendered);
|
|
82
|
+
}));
|
|
83
|
+
const highlightBubble = yield findByText('input/button');
|
|
84
|
+
yield (0, test_utils_1.act)(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
85
|
+
// hover on highlighter
|
|
86
|
+
react_2.fireEvent.mouseEnter(highlightBubble);
|
|
87
|
+
// leave the highlighter
|
|
88
|
+
react_2.fireEvent.mouseOut(highlightBubble);
|
|
89
|
+
yield new Promise((resolve) => setTimeout(resolve, debounceTime + 10));
|
|
90
|
+
}));
|
|
91
|
+
// highlighter sometimes disappears before this check,
|
|
92
|
+
// so not using waitForElementToBeRemoved, and using setTimeout instead
|
|
93
|
+
expect(queryByText('input/button')).toBeNull();
|
|
94
|
+
}));
|
|
95
|
+
//# sourceMappingURL=hover-highlighter.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover-highlighter.spec.js","sourceRoot":"","sources":["../../hover-highlighter/hover-highlighter.spec.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HoverHighlighter = exports.useHoverHighlighter = void 0;
|
|
4
|
+
var use_hover_highlighter_1 = require("./use-hover-highlighter");
|
|
5
|
+
Object.defineProperty(exports, "useHoverHighlighter", { enumerable: true, get: function () { return use_hover_highlighter_1.useHoverHighlighter; } });
|
|
6
|
+
var hover_highlighter_1 = require("./hover-highlighter");
|
|
7
|
+
Object.defineProperty(exports, "HoverHighlighter", { enumerable: true, get: function () { return hover_highlighter_1.HoverHighlighter; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../hover-highlighter/index.ts"],"names":[],"mappings":";;;AAAA,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAG5B,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ComponentMetaHolder } from '@teambit/react.ui.highlighter.component-metadata.bit-component-meta';
|
|
3
|
+
import { MatchRule, ComponentMatchRule } from '../rule-matcher';
|
|
4
|
+
type HighlightTarget = {
|
|
5
|
+
element: HTMLElement;
|
|
6
|
+
components: ComponentMetaHolder[];
|
|
7
|
+
};
|
|
8
|
+
export type useHoverHighlighterOptions = {
|
|
9
|
+
debounceDuration: number;
|
|
10
|
+
scopeClass: string;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
/** filter highlighter targets by this query selector. (May be a more complex object in the future) */
|
|
13
|
+
rule?: MatchRule;
|
|
14
|
+
/** filter targets by this component match rule */
|
|
15
|
+
componentRule?: ComponentMatchRule;
|
|
16
|
+
};
|
|
17
|
+
/** fires onChange when targeting a new component */
|
|
18
|
+
export declare function useHoverHighlighter<T extends HTMLElement = HTMLElement>(onChange: (target?: HighlightTarget) => void, props: React.HTMLAttributes<T>, { debounceDuration, scopeClass, disabled, rule, componentRule }: useHoverHighlighterOptions): {
|
|
19
|
+
onMouseOver?: undefined;
|
|
20
|
+
onMouseLeave?: undefined;
|
|
21
|
+
} | {
|
|
22
|
+
onMouseOver: (event: React.MouseEvent<T, MouseEvent>) => void;
|
|
23
|
+
onMouseLeave: (event: React.MouseEvent<T, MouseEvent>) => void;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useHoverHighlighter = useHoverHighlighter;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const use_debounce_1 = require("use-debounce");
|
|
6
|
+
const react_ui_hover_selector_1 = require("@teambit/react.ui.hover-selector");
|
|
7
|
+
const ignore_highlighter_1 = require("../ignore-highlighter");
|
|
8
|
+
const bubble_to_component_1 = require("./bubble-to-component");
|
|
9
|
+
/** fires onChange when targeting a new component */
|
|
10
|
+
function useHoverHighlighter(onChange, props = {}, { debounceDuration, scopeClass, disabled, rule, componentRule }) {
|
|
11
|
+
const { handleElement } = useHoverHandler({ onChange, scopeClass, debounceDuration, disabled, rule, componentRule });
|
|
12
|
+
const handlers = (0, react_ui_hover_selector_1.useHoverSelection)(disabled ? undefined : handleElement, props);
|
|
13
|
+
return handlers;
|
|
14
|
+
}
|
|
15
|
+
function useHoverHandler({ onChange, scopeClass = '', debounceDuration, disabled, rule, componentRule, }) {
|
|
16
|
+
// debounced method is ref'ed, so no need for useCallback
|
|
17
|
+
const _handleElement = (element) => {
|
|
18
|
+
// clear highlighter at the edges:
|
|
19
|
+
if (!element || element.hasAttribute('data-nullify-component-highlight')) {
|
|
20
|
+
onChange(undefined);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// clear when ancestor has 'data-ignore-component-highlight'
|
|
24
|
+
if (element.closest(`.${scopeClass} ${ignore_highlighter_1.excludeHighlighterSelector}`)) {
|
|
25
|
+
onChange(undefined);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// skip DOM trees having 'data-skip-component-highlight'
|
|
29
|
+
if (element.closest(`.${scopeClass} ${ignore_highlighter_1.skipHighlighterSelector}`))
|
|
30
|
+
return;
|
|
31
|
+
const result = (0, bubble_to_component_1.bubbleToComponent)(element, { elementRule: rule, componentRule });
|
|
32
|
+
if (!result)
|
|
33
|
+
return;
|
|
34
|
+
onChange({
|
|
35
|
+
element: result.element,
|
|
36
|
+
components: result.components,
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
const handleElement = (0, use_debounce_1.useDebouncedCallback)(_handleElement, debounceDuration);
|
|
40
|
+
// clear when disabling
|
|
41
|
+
(0, react_1.useEffect)(() => {
|
|
42
|
+
if (disabled)
|
|
43
|
+
handleElement.cancel();
|
|
44
|
+
}, [disabled, handleElement]);
|
|
45
|
+
return { handleElement };
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=use-hover-highlighter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-hover-highlighter.js","sourceRoot":"","sources":["../../hover-highlighter/use-hover-highlighter.tsx"],"names":[],"mappings":";;AAqBA,kDAUC;AA/BD,iCAAyC;AACzC,+CAAoD;AACpD,8EAAqE;AAGrE,8DAA4F;AAE5F,+DAA0D;AAa1D,oDAAoD;AACpD,SAAgB,mBAAmB,CACjC,QAA4C,EAC5C,QAAiC,EAAE,EACnC,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAA8B;IAE3F,MAAM,EAAE,aAAa,EAAE,GAAG,eAAe,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IAErH,MAAM,QAAQ,GAAG,IAAA,2CAAiB,EAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAEhF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAWD,SAAS,eAAe,CAAC,EACvB,QAAQ,EACR,UAAU,GAAG,EAAE,EACf,gBAAgB,EAChB,QAAQ,EACR,IAAI,EACJ,aAAa,GACY;IACzB,yDAAyD;IACzD,MAAM,cAAc,GAAG,CAAC,OAA2B,EAAE,EAAE;QACrD,kCAAkC;QAClC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,kCAAkC,CAAC,EAAE,CAAC;YACzE,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QAED,4DAA4D;QAC5D,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,UAAU,IAAI,+CAA0B,EAAE,CAAC,EAAE,CAAC;YACpE,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QAED,wDAAwD;QACxD,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,UAAU,IAAI,4CAAuB,EAAE,CAAC;YAAE,OAAO;QAEzE,MAAM,MAAM,GAAG,IAAA,uCAAiB,EAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,QAAQ,CAAC;YACP,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,IAAA,mCAAoB,EAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAE7E,uBAAuB;IACvB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,QAAQ;YAAE,aAAa,CAAC,MAAM,EAAE,CAAC;IACvC,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAE9B,OAAO,EAAE,aAAa,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React, { CSSProperties } from 'react';
|
|
2
|
+
import { Placement, HighlightClasses } from '../element-highlighter';
|
|
3
|
+
import type { MatchRule, ComponentMatchRule } from '../rule-matcher';
|
|
4
|
+
export interface HybridHighlighterProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
/** stop all highlighting and drop listeners */
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
/** default pop location for the label */
|
|
8
|
+
placement?: Placement;
|
|
9
|
+
/** customize styles */
|
|
10
|
+
classes?: HighlightClasses;
|
|
11
|
+
/** customize highlighter */
|
|
12
|
+
highlightStyle?: CSSProperties;
|
|
13
|
+
/** debounces element hover selection.
|
|
14
|
+
* A higher value will reduce element lookups as well as "keep" the highlight on the current element for longer.
|
|
15
|
+
* Initial selection (when no element is currently selected) will always happen immediately to improve the user experience.
|
|
16
|
+
* @default 80ms
|
|
17
|
+
*/
|
|
18
|
+
debounceSelection?: number;
|
|
19
|
+
/** continually update frame position to match moving elements */
|
|
20
|
+
watchMotion?: boolean;
|
|
21
|
+
/** filter highlighter targets by this query selector. (May be a more complex object in the future) */
|
|
22
|
+
rule?: MatchRule;
|
|
23
|
+
/** filter components to match this rule. Can be id, array of ids, or a function */
|
|
24
|
+
componentRule?: ComponentMatchRule;
|
|
25
|
+
/** set the behavior of the highlighter.
|
|
26
|
+
* `disabled` - stops highlighting.
|
|
27
|
+
* `allChildren` - highlights all components rendered under children
|
|
28
|
+
* `hover` - highlighters the component immediately under the mouse cursor
|
|
29
|
+
* */
|
|
30
|
+
mode?: 'allChildren' | 'hover';
|
|
31
|
+
bgColor?: string;
|
|
32
|
+
bgColorHover?: string;
|
|
33
|
+
bgColorActive?: string;
|
|
34
|
+
}
|
|
35
|
+
/** automatically highlight components on hover */
|
|
36
|
+
export declare function HybridHighlighter({ disabled, mode, debounceSelection, watchMotion, placement, rule, componentRule, classes, highlightStyle, className, style, bgColor, bgColorHover, bgColorActive, children, ...rest }: HybridHighlighterProps): React.JSX.Element;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
26
|
+
var t = {};
|
|
27
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
28
|
+
t[p] = s[p];
|
|
29
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
30
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
31
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
32
|
+
t[p[i]] = s[p[i]];
|
|
33
|
+
}
|
|
34
|
+
return t;
|
|
35
|
+
};
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.HybridHighlighter = HybridHighlighter;
|
|
41
|
+
const react_1 = __importStar(require("react"));
|
|
42
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
43
|
+
const uuid_1 = require("uuid");
|
|
44
|
+
const hover_highlighter_1 = require("../hover-highlighter");
|
|
45
|
+
const element_highlighter_1 = require("../element-highlighter");
|
|
46
|
+
const children_highlighter_1 = require("../children-highlighter");
|
|
47
|
+
/** automatically highlight components on hover */
|
|
48
|
+
function HybridHighlighter(_a) {
|
|
49
|
+
var { disabled, mode = 'hover', debounceSelection = 80, watchMotion = true, placement, rule, componentRule, classes, highlightStyle, className, style, bgColor, bgColorHover, bgColorActive, children } = _a, rest = __rest(_a, ["disabled", "mode", "debounceSelection", "watchMotion", "placement", "rule", "componentRule", "classes", "highlightStyle", "className", "style", "bgColor", "bgColorHover", "bgColorActive", "children"]);
|
|
50
|
+
const ref = (0, react_1.createRef)();
|
|
51
|
+
const [targets, setTarget] = (0, react_1.useState)({});
|
|
52
|
+
const scopeClass = (0, react_1.useRef)(`hl-scope-${(0, uuid_1.v4)()}`).current;
|
|
53
|
+
const hasTargets = Object.entries(targets).length > 0;
|
|
54
|
+
// clear targets when disabled
|
|
55
|
+
(0, react_1.useEffect)(() => {
|
|
56
|
+
if (disabled)
|
|
57
|
+
setTarget({});
|
|
58
|
+
}, [disabled]);
|
|
59
|
+
const handlers = (0, hover_highlighter_1.useHoverHighlighter)((nextTarget) => setTarget(nextTarget ? { 'hover-target': nextTarget } : {}), rest, {
|
|
60
|
+
debounceDuration: hasTargets ? debounceSelection : 0,
|
|
61
|
+
scopeClass,
|
|
62
|
+
disabled: disabled || mode !== 'hover',
|
|
63
|
+
rule,
|
|
64
|
+
componentRule,
|
|
65
|
+
});
|
|
66
|
+
(0, children_highlighter_1.useChildrenHighlighter)({
|
|
67
|
+
onChange: setTarget,
|
|
68
|
+
scopeRef: ref,
|
|
69
|
+
scopeClass,
|
|
70
|
+
disabled: disabled || mode !== 'allChildren',
|
|
71
|
+
rule,
|
|
72
|
+
componentRule,
|
|
73
|
+
});
|
|
74
|
+
const _styles = (0, react_1.useMemo)(() => (Object.assign({ '--bit-highlighter-color': bgColor, '--bit-highlighter-color-hover': bgColorHover, '--bit-highlighter-color-active': bgColorActive }, style)), [bgColor, bgColorHover, bgColorActive, style]);
|
|
75
|
+
return (react_1.default.createElement("div", Object.assign({ ref: ref }, rest, handlers, { style: _styles, className: (0, classnames_1.default)(className, scopeClass), "data-nullify-component-highlight": true }),
|
|
76
|
+
children,
|
|
77
|
+
Object.entries(targets).map(([key, target]) => (react_1.default.createElement(element_highlighter_1.ElementHighlighter, { key: key, targetRef: { current: target.element }, components: target.components, classes: classes, style: highlightStyle, placement: placement, watchMotion: watchMotion })))));
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=hybrid-highlighter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hybrid-highlighter.js","sourceRoot":"","sources":["../../hybrid-highlighter/hybrid-highlighter.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,8CAuFC;AAvID,+CAA8F;AAC9F,4DAAoC;AACpC,+BAA0B;AAI1B,4DAA2D;AAC3D,gEAAyF;AACzF,kEAAiE;AAuCjE,kDAAkD;AAClD,SAAgB,iBAAiB,CAAC,EAkBT;QAlBS,EAChC,QAAQ,EACR,IAAI,GAAG,OAAO,EACd,iBAAiB,GAAG,EAAE,EACtB,WAAW,GAAG,IAAI,EAClB,SAAS,EACT,IAAI,EACJ,aAAa,EAEb,OAAO,EACP,cAAc,EACd,SAAS,EACT,KAAK,EACL,OAAO,EACP,YAAY,EACZ,aAAa,EACb,QAAQ,OAEe,EADpB,IAAI,cAjByB,yMAkBjC,CADQ;IAEP,MAAM,GAAG,GAAG,IAAA,iBAAS,GAAkB,CAAC;IACxC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAkC,EAAE,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,IAAA,cAAM,EAAC,YAAY,IAAA,SAAE,GAAE,EAAE,CAAC,CAAC,OAAO,CAAC;IACtD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAEtD,8BAA8B;IAC9B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,QAAQ;YAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,QAAQ,GAAG,IAAA,uCAAmB,EAClC,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC3E,IAAI,EACJ;QACE,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACpD,UAAU;QACV,QAAQ,EAAE,QAAQ,IAAI,IAAI,KAAK,OAAO;QACtC,IAAI;QACJ,aAAa;KACd,CACF,CAAC;IAEF,IAAA,6CAAsB,EAAC;QACrB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,GAAG;QACb,UAAU;QACV,QAAQ,EAAE,QAAQ,IAAI,IAAI,KAAK,aAAa;QAC5C,IAAI;QACJ,aAAa;KACd,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAA,eAAO,EACrB,GAAG,EAAE,CAAC,iBACJ,yBAAyB,EAAE,OAAO,EAClC,+BAA+B,EAAE,YAAY,EAC7C,gCAAgC,EAAE,aAAa,IAC5C,KAAK,EACR,EACF,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,CAAC,CAC9C,CAAC;IAEF,OAAO,CACL,qDACE,GAAG,EAAE,GAAG,IACJ,IAAI,EACJ,QAAQ,IACZ,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,IAAA,oBAAU,EAAC,SAAS,EAAE,UAAU,CAAC;QAG3C,QAAQ;QAKR,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAC9C,8BAAC,wCAAkB,IACjB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EACtC,UAAU,EAAE,MAAM,CAAC,UAAU,EAC7B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,GACxB,CACH,CAAC,CACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HybridHighlighter = void 0;
|
|
4
|
+
var hybrid_highlighter_1 = require("./hybrid-highlighter");
|
|
5
|
+
Object.defineProperty(exports, "HybridHighlighter", { enumerable: true, get: function () { return hybrid_highlighter_1.HybridHighlighter; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../hybrid-highlighter/index.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA"}
|