@corva/ui 3.79.0-13 → 3.79.0-15
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/cjs-bundle/components/CommentCard/CommentCard.js +1 -1
- package/cjs-bundle/components/CommentCard/CommentCard.js.map +1 -1
- package/cjs-bundle/components/CommentCard/CommentCard.scss.js +1 -1
- package/cjs-bundle/components/CurveTooltip/CurveTooltip.js +2 -0
- package/cjs-bundle/components/CurveTooltip/CurveTooltip.js.map +1 -0
- package/cjs-bundle/components/CurveTooltip/CurveTooltip.scss.js +2 -0
- package/cjs-bundle/components/CurveTooltip/CurveTooltip.scss.js.map +1 -0
- package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/IsolatedPage.js +1 -1
- package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/IsolatedPage.js.map +1 -1
- package/cjs-bundle/components/NewCommentCursor/NewCommentCursor.js +1 -1
- package/cjs-bundle/components/NewCommentCursor/NewCommentCursor.js.map +1 -1
- package/cjs-bundle/config/highcharts/highcharts.js +1 -1
- package/cjs-bundle/config/highcharts/highcharts.js.map +1 -1
- package/components/CommentCard/CommentCard.d.ts.map +1 -1
- package/components/CommentCard/CommentCard.js +1 -1
- package/components/CommentCard/CommentCard.js.map +1 -1
- package/components/CommentCard/CommentCard.scss.js +1 -1
- package/components/CommentCard/CommentCard.types.d.ts +3 -0
- package/components/CommentCard/CommentCard.types.d.ts.map +1 -1
- package/components/CurveTooltip/CurveTooltip.d.ts +24 -0
- package/components/CurveTooltip/CurveTooltip.d.ts.map +1 -0
- package/components/CurveTooltip/CurveTooltip.js +2 -0
- package/components/CurveTooltip/CurveTooltip.js.map +1 -0
- package/components/CurveTooltip/CurveTooltip.scss.js +2 -0
- package/components/CurveTooltip/CurveTooltip.scss.js.map +1 -0
- package/components/CurveTooltip/index.d.ts +2 -0
- package/components/CurveTooltip/index.d.ts.map +1 -0
- package/components/DevCenter/IsolatedDevCenterAppContainer/IsolatedPage.d.ts +1 -0
- package/components/DevCenter/IsolatedDevCenterAppContainer/IsolatedPage.d.ts.map +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/IsolatedPage.js +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/IsolatedPage.js.map +1 -1
- package/components/NewCommentCursor/NewCommentCursor.d.ts +2 -0
- package/components/NewCommentCursor/NewCommentCursor.d.ts.map +1 -1
- package/components/NewCommentCursor/NewCommentCursor.js +1 -1
- package/components/NewCommentCursor/NewCommentCursor.js.map +1 -1
- package/components/NewCommentCursor/__tests__/NewCommentCursor.test.d.ts +2 -0
- package/components/NewCommentCursor/__tests__/NewCommentCursor.test.d.ts.map +1 -0
- package/config/highcharts/highcharts.d.ts.map +1 -1
- package/config/highcharts/highcharts.js +1 -1
- package/config/highcharts/highcharts.js.map +1 -1
- package/mcp-server/server.mjs +70 -4
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from'./../../ext-esm/style-inject/dist/style-inject.es.js';var t={spacing:"8",capped:"CommentCard_capped__izWBZ",bodySurface:"CommentCard_bodySurface__scobR",editHeader:"CommentCard_editHeader__8aUBt",scrollBody:"CommentCard_scrollBody__CIun9",footer:"CommentCard_footer__z3-CY",repliesSection:"CommentCard_repliesSection__iE7QO",compactBody:"CommentCard_compactBody__zM10O",compactTop:"CommentCard_compactTop__LpiQi",compactTime:"CommentCard_compactTime__JzVQR",compactFooter:"CommentCard_compactFooter__rgB4D",header:"CommentCard_header__T1SH8",headerText:"CommentCard_headerText__DRsQG",nameRow:"CommentCard_nameRow__Or1c0",timestamp:"CommentCard_timestamp__EbJCO",subtitle:"CommentCard_subtitle__d-XRe",avatar:"CommentCard_avatar__NA2ZA",name:"CommentCard_name__9-e7A",chip:"CommentCard_chip__4NUrf",chipAccented:"CommentCard_chipAccented__Xl8ek",chipDot:"CommentCard_chipDot__P-usA",text:"CommentCard_text__eAIZM",attachment:"CommentCard_attachment__KktIn",infoButton:"CommentCard_infoButton__gqcvK",
|
|
1
|
+
import e from'./../../ext-esm/style-inject/dist/style-inject.es.js';var t={spacing:"8",capped:"CommentCard_capped__izWBZ",bodySurface:"CommentCard_bodySurface__scobR",editHeader:"CommentCard_editHeader__8aUBt",scrollBody:"CommentCard_scrollBody__CIun9",footer:"CommentCard_footer__z3-CY",repliesSection:"CommentCard_repliesSection__iE7QO",compactBody:"CommentCard_compactBody__zM10O",compactTop:"CommentCard_compactTop__LpiQi",compactTime:"CommentCard_compactTime__JzVQR",compactFooter:"CommentCard_compactFooter__rgB4D",header:"CommentCard_header__T1SH8",headerText:"CommentCard_headerText__DRsQG",nameRow:"CommentCard_nameRow__Or1c0",timestamp:"CommentCard_timestamp__EbJCO",subtitle:"CommentCard_subtitle__d-XRe",avatar:"CommentCard_avatar__NA2ZA",name:"CommentCard_name__9-e7A",chip:"CommentCard_chip__4NUrf",chipAccented:"CommentCard_chipAccented__Xl8ek",chipDot:"CommentCard_chipDot__P-usA",text:"CommentCard_text__eAIZM",attachment:"CommentCard_attachment__KktIn",infoButton:"CommentCard_infoButton__gqcvK",contextLine:"CommentCard_contextLine__Jyoui",contextItem:"CommentCard_contextItem__2Xmql",actionsRow:"CommentCard_actionsRow__1Ftxn",actions:"CommentCard_actions__mUmsV",trailingActions:"CommentCard_trailingActions__uGt-3",action:"CommentCard_action__ZfyBP",count:"CommentCard_count__stfpY",liked:"CommentCard_liked__zsBqe",replies:"CommentCard_replies__nRRYo",reply:"CommentCard_reply__7-U7Q",replyHeader:"CommentCard_replyHeader__sWnLA",replyNameRow:"CommentCard_replyNameRow__bs7h2",replyName:"CommentCard_replyName__C8tst",replyTimestamp:"CommentCard_replyTimestamp__YzuW1",replyText:"CommentCard_replyText__8JPKK"};e(".CommentCard_capped__izWBZ{flex-direction:column}.CommentCard_bodySurface__scobR,.CommentCard_capped__izWBZ{overflow-clip-margin:12px;display:flex;overflow:hidden;overflow:clip}.CommentCard_bodySurface__scobR{flex:1 1 auto;flex-direction:column;gap:8px;min-height:0;padding:8px 12px}.CommentCard_editHeader__8aUBt{padding:8px 12px 0}.CommentCard_scrollBody__CIun9{display:flex;flex:1 1 auto;flex-direction:column;gap:8px;margin:0 -24px;min-height:0;overflow-x:hidden;overflow-y:auto;padding:0 24px}.CommentCard_footer__z3-CY{border-top:1px solid var(--palette-background-b-4);display:flex;flex-direction:column;flex-shrink:0;padding:4px 12px 8px}.CommentCard_repliesSection__iE7QO{padding:8px 12px 12px}.CommentCard_compactBody__zM10O{display:flex;flex:1 1 auto;flex-direction:column;gap:8px;min-height:0;overflow:hidden;padding:8px 12px}.CommentCard_compactTop__LpiQi{align-items:center;display:flex;flex-shrink:0;gap:8px}.CommentCard_compactTime__JzVQR{color:var(--palette-primary-text-7);font-size:12px;line-height:16px;margin-left:auto;white-space:nowrap}.CommentCard_compactFooter__rgB4D{border-top:1px solid var(--palette-background-b-4);flex-shrink:0;padding:4px 12px 8px}.CommentCard_header__T1SH8{align-items:center;display:flex;flex-shrink:0;gap:8px}.CommentCard_headerText__DRsQG{display:flex;flex:1 0 0;flex-direction:column;min-width:0;word-break:break-word}.CommentCard_nameRow__Or1c0{align-items:center;display:flex;gap:8px;width:100%}.CommentCard_nameRow__Or1c0 .CommentCard_timestamp__EbJCO{margin-left:auto}.CommentCard_subtitle__d-XRe{color:var(--palette-primary-main);font-size:12px;line-height:16px}.CommentCard_avatar__NA2ZA{flex-shrink:0}.CommentCard_name__9-e7A{color:var(--palette-primary-text-1);flex:0 1 auto;font-size:14px;line-height:20px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.CommentCard_timestamp__EbJCO{color:var(--palette-primary-text-7);flex-shrink:0;font-size:12px;line-height:16px;white-space:nowrap}.CommentCard_chip__4NUrf{align-items:center;background:rgb(from var(--palette-primary-text-1) r g b/.04);border-radius:8px;box-sizing:border-box;color:var(--palette-primary-text-1);cursor:pointer;display:flex;float:right;font-size:12px;gap:4px;height:24px;line-height:16px;margin:4px 0 0 8px;padding:6px;white-space:nowrap}.CommentCard_chipAccented__Xl8ek{background:linear-gradient(94deg,rgb(from var(--chip-color) r g b/.16) 1%,transparent 35%),rgb(from var(--palette-primary-text-1) r g b/.04);border:.5px solid rgb(from var(--chip-color) r g b/.5)}.CommentCard_chipDot__P-usA{background:var(--chip-color);border-radius:50%;flex-shrink:0;height:6px;width:6px}.CommentCard_text__eAIZM{color:var(--palette-primary-text-1);font-size:12px;line-height:16px;white-space:pre-wrap;word-break:break-word}.CommentCard_text__eAIZM a,.CommentCard_text__eAIZM button{font:inherit;padding:0;vertical-align:baseline}.CommentCard_attachment__KktIn{--attachment-arrow-outset:12px;display:flex;flex-direction:column;gap:8px}.CommentCard_infoButton__gqcvK{align-items:center;color:var(--palette-primary-text-6);cursor:default;display:inline-flex}.CommentCard_infoButton__gqcvK:hover{color:var(--palette-primary-text-1)}.CommentCard_contextLine__Jyoui{align-items:center;color:var(--palette-primary-text-7);column-gap:16px;display:flex;flex-wrap:wrap;font-size:12px;line-height:16px;row-gap:4px}.CommentCard_contextItem__2Xmql{white-space:nowrap}.CommentCard_actionsRow__1Ftxn{align-items:center;display:flex;justify-content:space-between;width:100%}.CommentCard_actions__mUmsV{align-items:center;display:flex;gap:8px}.CommentCard_trailingActions__uGt-3{align-items:center;display:flex;gap:4px}.CommentCard_action__ZfyBP{align-items:center;display:flex;gap:2px}.CommentCard_count__stfpY{color:var(--palette-primary-text-6);font-size:12px;line-height:16px}.CommentCard_liked__zsBqe svg{color:var(--palette-primary-main)}.CommentCard_replies__nRRYo{display:flex;flex-direction:column;gap:8px}.CommentCard_reply__7-U7Q{display:flex;flex-direction:column;gap:4px}.CommentCard_replyHeader__sWnLA{align-items:center;display:flex;gap:8px}.CommentCard_replyNameRow__bs7h2{align-items:center;display:flex;flex:1 0 0;gap:12px;min-width:0}.CommentCard_replyName__C8tst{color:var(--palette-primary-text-1);font-size:14px;line-height:20px;white-space:nowrap}.CommentCard_replyTimestamp__YzuW1{color:var(--palette-primary-text-7);flex:1 0 0;font-size:12px;line-height:16px;min-width:0}.CommentCard_replyText__8JPKK{color:var(--palette-primary-text-1);font-size:12px;line-height:16px;padding-left:40px;white-space:pre-wrap;word-break:break-word}.CommentCard_replyText__8JPKK a,.CommentCard_replyText__8JPKK button{font:inherit;padding:0;vertical-align:baseline}");export{t as default};
|
|
2
2
|
//# sourceMappingURL=CommentCard.scss.js.map
|
|
@@ -53,6 +53,9 @@ export type CommentCardProps = {
|
|
|
53
53
|
attachmentSlot?: ReactNode;
|
|
54
54
|
chip?: ReactNode;
|
|
55
55
|
chipColor?: string;
|
|
56
|
+
/** The chip curve's value at the comment, shown in the chip tooltip title. */
|
|
57
|
+
chipValue?: ReactNode;
|
|
58
|
+
chipUnit?: ReactNode;
|
|
56
59
|
onLike?: () => void;
|
|
57
60
|
onReplyToggle?: () => void;
|
|
58
61
|
onForward?: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommentCard.types.d.ts","sourceRoot":"","sources":["../../../src/components/CommentCard/CommentCard.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAElC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,2CAA2C;IAC3C,UAAU,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACrC,oEAAoE;IACpE,WAAW,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACtC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC1D,2FAA2F;IAC3F,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC1D,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"CommentCard.types.d.ts","sourceRoot":"","sources":["../../../src/components/CommentCard/CommentCard.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAElC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,2CAA2C;IAC3C,UAAU,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACrC,oEAAoE;IACpE,WAAW,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACtC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC1D,2FAA2F;IAC3F,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC1D,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IAGrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAE9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAE1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ReactElement, ReactNode } from 'react';
|
|
2
|
+
import { TooltipProps } from '../Tooltip/Tooltip';
|
|
3
|
+
export type CurveTooltipRow = {
|
|
4
|
+
label: string;
|
|
5
|
+
value: ReactNode;
|
|
6
|
+
unit?: ReactNode;
|
|
7
|
+
};
|
|
8
|
+
export type CurveTooltipData = {
|
|
9
|
+
title?: ReactNode;
|
|
10
|
+
value?: ReactNode;
|
|
11
|
+
unit?: ReactNode;
|
|
12
|
+
color?: string;
|
|
13
|
+
rows: CurveTooltipRow[];
|
|
14
|
+
};
|
|
15
|
+
type Props = {
|
|
16
|
+
data: CurveTooltipData;
|
|
17
|
+
children: ReactElement;
|
|
18
|
+
open?: boolean;
|
|
19
|
+
isFullScreen?: boolean;
|
|
20
|
+
placement?: TooltipProps['placement'];
|
|
21
|
+
};
|
|
22
|
+
export declare const CurveTooltip: ({ data, children, open, isFullScreen, placement }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=CurveTooltip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CurveTooltip.d.ts","sourceRoot":"","sources":["../../../src/components/CurveTooltip/CurveTooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGhD,OAAO,EAAW,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI3D,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,EAAE,CAAC;CACzB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;CACvC,CAAC;AAUF,eAAO,MAAM,YAAY,sDAA+D,KAAK,4CA+C5F,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Text as e}from"../../componentsV2/Text/Text.js";import{Tooltip as l}from"../Tooltip/Tooltip.js";import o from"./CurveTooltip.scss.js";import{jsx as t,jsxs as r,Fragment as i}from"react/jsx-runtime";var n={popperOptions:{modifiers:{preventOverflow:{enabled:!0,boundariesElement:"viewport"}}}},s={popper:o.popper,tooltip:o.tooltip},p=function(p){var a=p.data,c=p.children,u=p.open,d=p.isFullScreen,m=p.placement,v=void 0===m?"top":m;return null!=a.title||a.rows.length?t(l,{open:u,isFullScreen:d,placement:v,PopperProps:n,classes:s,title:r("div",{className:o.content,"data-testid":"curveTooltip",children:[null!=a.title&&r(e,{size:12,tagName:"div",className:o.title,children:[t("span",{className:o.titleBar,style:{backgroundColor:a.color}}),r("span",{children:[a.title,null!=a.value&&r(i,{children:[": ",a.value]})]}),null!=a.unit&&t(e,{size:12,color:"T6",children:a.unit})]}),a.rows.map((function(l){return r("div",{className:o.row,children:[t(e,{size:14,color:"T6",children:l.label}),t(e,{size:14,color:"T1",children:l.value}),null!=l.unit&&t(e,{size:12,color:"T6",className:o.rowUnit,children:l.unit})]},l.label)}))]}),children:c}):c};export{p as CurveTooltip};
|
|
2
|
+
//# sourceMappingURL=CurveTooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CurveTooltip.js","sources":["../../../src/components/CurveTooltip/CurveTooltip.tsx"],"sourcesContent":["import { ReactElement, ReactNode } from 'react';\n\nimport { Text } from '../../componentsV2/Text';\nimport { Tooltip, TooltipProps } from '../Tooltip/Tooltip';\n\nimport styles from './CurveTooltip.scss';\n\nexport type CurveTooltipRow = {\n label: string;\n value: ReactNode;\n unit?: ReactNode;\n};\n\nexport type CurveTooltipData = {\n title?: ReactNode;\n value?: ReactNode;\n unit?: ReactNode;\n color?: string;\n rows: CurveTooltipRow[];\n};\n\ntype Props = {\n data: CurveTooltipData;\n children: ReactElement;\n open?: boolean;\n isFullScreen?: boolean;\n placement?: TooltipProps['placement'];\n};\n\nconst POPPER_PROPS = {\n popperOptions: {\n modifiers: { preventOverflow: { enabled: true, boundariesElement: 'viewport' } },\n },\n};\n\nconst TOOLTIP_CLASSES = { popper: styles.popper, tooltip: styles.tooltip };\n\nexport const CurveTooltip = ({ data, children, open, isFullScreen, placement = 'top' }: Props) => {\n if (data.title == null && !data.rows.length) return children;\n\n return (\n <Tooltip\n open={open}\n isFullScreen={isFullScreen}\n placement={placement}\n PopperProps={POPPER_PROPS}\n classes={TOOLTIP_CLASSES}\n title={\n <div className={styles.content} data-testid=\"curveTooltip\">\n {data.title != null && (\n <Text size={12} tagName=\"div\" className={styles.title}>\n <span className={styles.titleBar} style={{ backgroundColor: data.color }} />\n <span>\n {data.title}\n {data.value != null && <>: {data.value}</>}\n </span>\n {data.unit != null && (\n <Text size={12} color=\"T6\">\n {data.unit}\n </Text>\n )}\n </Text>\n )}\n {data.rows.map(row => (\n <div key={row.label} className={styles.row}>\n <Text size={14} color=\"T6\">\n {row.label}\n </Text>\n <Text size={14} color=\"T1\">\n {row.value}\n </Text>\n {row.unit != null && (\n <Text size={12} color=\"T6\" className={styles.rowUnit}>\n {row.unit}\n </Text>\n )}\n </div>\n ))}\n </div>\n }\n >\n {children}\n </Tooltip>\n );\n};\n"],"names":["POPPER_PROPS","popperOptions","modifiers","preventOverflow","enabled","boundariesElement","TOOLTIP_CLASSES","popper","styles","tooltip","CurveTooltip","_ref","data","children","open","isFullScreen","_ref$placement","placement","title","rows","length","_jsx","Tooltip","PopperProps","classes","_jsxs","className","content","Text","size","tagName","titleBar","style","backgroundColor","color","value","_Fragment","unit","map","row","label","rowUnit"],"mappings":"6MA6BA,IAAMA,EAAe,CACnBC,cAAe,CACbC,UAAW,CAAEC,gBAAiB,CAAEC,SAAS,EAAMC,kBAAmB,eAIhEC,EAAkB,CAAEC,OAAQC,EAAOD,OAAQE,QAASD,EAAOC,SAEpDC,EAAe,SAAsEC,GAAA,IAAnEC,IAAAA,KAAMC,IAAAA,SAAUC,IAAAA,KAAMC,IAAAA,aAAYC,EAAAL,EAAEM,UAAAA,aAAY,MAAKD,EAClF,OAAkB,MAAdJ,EAAKM,OAAkBN,EAAKO,KAAKC,OAGnCC,EAACC,EAAO,CACNR,KAAMA,EACNC,aAAcA,EACdE,UAAWA,EACXM,YAAavB,EACbwB,QAASlB,EACTY,MACEO,EAAA,MAAA,CAAKC,UAAWlB,EAAOmB,QAAS,cAAY,eAAcd,SAAA,CACzC,MAAdD,EAAKM,OACJO,EAACG,EAAI,CAACC,KAAM,GAAIC,QAAQ,MAAMJ,UAAWlB,EAAOU,MAAML,SACpD,CAAAQ,EAAA,OAAA,CAAMK,UAAWlB,EAAOuB,SAAUC,MAAO,CAAEC,gBAAiBrB,EAAKsB,SACjET,EAAA,OAAA,CAAAZ,SACGD,CAAAA,EAAKM,MACS,MAAdN,EAAKuB,OAAiBV,EAAAW,EAAA,CAAAvB,SAAKD,CAAAA,KAAAA,EAAKuB,YAErB,MAAbvB,EAAKyB,MACJhB,EAACO,EAAI,CAACC,KAAM,GAAIK,MAAM,KAAIrB,SACvBD,EAAKyB,UAKbzB,EAAKO,KAAKmB,KAAI,SAAAC,GAAG,OAChBd,EAAA,MAAA,CAAqBC,UAAWlB,EAAO+B,IAAI1B,SAAA,CACzCQ,EAACO,EAAI,CAACC,KAAM,GAAIK,MAAM,KAAIrB,SACvB0B,EAAIC,QAEPnB,EAACO,EAAI,CAACC,KAAM,GAAIK,MAAM,KAAIrB,SACvB0B,EAAIJ,QAEM,MAAZI,EAAIF,MACHhB,EAACO,EAAI,CAACC,KAAM,GAAIK,MAAM,KAAKR,UAAWlB,EAAOiC,QAAQ5B,SAClD0B,EAAIF,SATDE,EAAIC,MAYR,OAGX3B,SAEAA,IA3C+CA,CA8CtD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import o from'./../../ext-esm/style-inject/dist/style-inject.es.js';var t={spacing:"8",popper:"CurveTooltip_popper__inKjq",tooltip:"CurveTooltip_tooltip__8f67C",content:"CurveTooltip_content__OY7AI",title:"CurveTooltip_title__dzymJ",titleBar:"CurveTooltip_titleBar__XcI5e",row:"CurveTooltip_row__2zHX2",rowUnit:"CurveTooltip_rowUnit__MCGr4"};o(".CurveTooltip_popper__inKjq .MuiTooltip-tooltip.CurveTooltip_tooltip__8f67C{background:rgb(from var(--palette-background-b-9) r g b/.9);max-width:none}.CurveTooltip_popper__inKjq .MuiTooltip-tooltip.CurveTooltip_tooltip__8f67C.MuiTooltip-tooltipPlacementBottom{margin-top:4px}.CurveTooltip_popper__inKjq .MuiTooltip-tooltip.CurveTooltip_tooltip__8f67C.MuiTooltip-tooltipPlacementTop{margin-bottom:4px}.CurveTooltip_content__OY7AI{display:flex;flex-direction:column;gap:4px;padding:4px 0;white-space:nowrap}.CurveTooltip_title__dzymJ{align-items:center;display:flex;gap:4px;margin-bottom:4px}.CurveTooltip_titleBar__XcI5e{background:var(--palette-primary-text-6);border-radius:1px;flex-shrink:0;height:14px;width:2px}.CurveTooltip_row__2zHX2{align-items:baseline;display:flex;gap:4px}.CurveTooltip_row__2zHX2 .CurveTooltip_rowUnit__MCGr4{line-height:18px}");export{t as default};
|
|
2
|
+
//# sourceMappingURL=CurveTooltip.scss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,aAAa,sDAAyD;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CurveTooltip/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
@@ -7,6 +7,7 @@ declare global {
|
|
|
7
7
|
interface Window {
|
|
8
8
|
xprops?: Record<string, any>;
|
|
9
9
|
xpropsOnProps?: (props: any) => void;
|
|
10
|
+
xpropsOnUnmount?: () => void;
|
|
10
11
|
}
|
|
11
12
|
}
|
|
12
13
|
export declare function IsolatedPage({ ...restProps }: IsolatedPageProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IsolatedPage.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/IsolatedPage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IsolatedPage.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/IsolatedPage.tsx"],"names":[],"mappings":"AAgEA,eAAO,MAAM,YAAY,QAAS,OAAO,KAAG,OAU3C,CAAC;AAQF,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAO5D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;QACrC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;KAC9B;CACF;AAED,wBAAgB,YAAY,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,iBAAiB,2CAmF/D"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import r from"@babel/runtime/helpers/slicedToArray";import e from"@babel/runtime/helpers/extends";import t from"@babel/runtime/helpers/defineProperty";import{useRef as
|
|
1
|
+
import r from"@babel/runtime/helpers/slicedToArray";import e from"@babel/runtime/helpers/extends";import t from"@babel/runtime/helpers/defineProperty";import{useRef as n,useState as o,useCallback as a,useEffect as i,useLayoutEffect as c}from"react";import{isEqual as p}from"lodash";import l from"../../LoadingIndicator/LoadingIndicator.js";import s from"./IsolatedPage.module.css.js";import{jsxs as u,jsx as f}from"react/jsx-runtime";var d;function m(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,n)}return t}function v(r){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?m(Object(n),!0).forEach((function(e){t(r,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):m(Object(n)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(n,e))}))}return r}var O=/(^|[\^~>=\s])18\./,b=function(r){var e,t,n=null==r?void 0:r.package;if(!n)return!0;var o=null===(e=n.package_json)||void 0===e||null===(t=e.dependencies)||void 0===t?void 0:t.react;return!("string"==typeof o&&O.test(o))},y="data-corva-app-iframe",g=(t(d={},"data-corva-app-iframe",!0),t(d,"data-testid","isolatedAppContainer"),d);function P(t){var d,m,O=e({},t),y=n(null),P=n(null),j=o(!0),h=r(j,2),w=h[0],x=h[1],_=a((function(){x(!1)}),[]),I=function(r,e){if(r){var t=!r.xprops,n=!function(r,e){if(r===e)return!0;if(!r)return!1;var t,n,o=Object.keys(r),a=Object.keys(e);if(o.length!==a.length)return!1;for(var i=0,c=a;i<c.length;i++){var l=c[i];if(!Object.prototype.hasOwnProperty.call(r,l))return!1;if(!((t=r[l])===(n=e[l])||"function"==typeof t&&"function"==typeof n||p(t,n)))return!1}return!0}(P.current||{},e);if(r.xprops=v({},e),P.current=e,(t||n)&&r.xpropsOnProps)try{r.xpropsOnProps(e)}catch(r){console.debug("[IsolatedPage] xpropsOnProps was not set yet:",r)}}};return i((function(){try{var r,e=null===(r=y.current)||void 0===r?void 0:r.contentWindow;I(e,O)}catch(r){console.error("[IsolatedPage] Error accessing iframe contentWindow:",r)}})),c((function(){return function(){try{var r,e,t=null===(r=y.current)||void 0===r?void 0:r.contentWindow;null==t||null===(e=t.xpropsOnUnmount)||void 0===e||e.call(t),t&&t.xprops&&delete t.xprops}catch(r){console.error("[IsolatedPage] Error cleaning up xprops:",r)}P.current=null,y.current=null}}),[]),u("div",{className:s.container,children:[w&&f(l,{}),f("iframe",v({ref:y,src:(d=O.app,m=window.__DC_REACT17_ISOLATED_PAGE_PATH__,m&&b(d)?m:"/DevCenterIsolatedAppPage.html"),onLoad:_,className:s.iframe},g))]})}export{y as APP_IFRAME_ATTRIBUTE,P as IsolatedPage,b as isReact17App};
|
|
2
2
|
//# sourceMappingURL=IsolatedPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IsolatedPage.js","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/IsolatedPage.tsx"],"sourcesContent":["// Ultra-minimal, same-origin isolation helper. Used to isolate DC apps from the parent page.\n//\n// Usage:\n// <IsolatedPage currentUser={user} onSettingsChange={fn} isFeatEnabled={false} />\n//\n// Inside isolated page:\n// window.xpropsOnProps = (props) => { /* handle updates */ };\n// window.xprops.onSettingsChange(payload);\n//\n// Notes:\n// - Path is hardcoded to `/DevCenterIsolatedAppPage.html`.\n// - Client sets `window.xpropsOnProps` function directly (separate from xprops data).\n// - `IsolatedPage` calls `window.xpropsOnProps` when props change (if it exists).\n// - On unmount: xprops deleted, iframe set to about:blank.\n// - Uses a callback-identity-aware deep equality check (see `areXPropsEqual` below) to avoid\n// unnecessary `xpropsOnProps` fires.\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { isEqual } from 'lodash';\nimport LoadingIndicator from '~/components/LoadingIndicator';\nimport styles from './IsolatedPage.module.css';\n\n// Callbacks arrive with a new identity every parent render, so comparing them would fire\n// `xpropsOnProps` into the iframe on every benign re-render. They are safe to treat as equal\n// because the iframe always reads the latest function from `window.xprops`, which `publishProps`\n// replaces unconditionally and `useXProps` dereferences at call time.\nconst isXPropEqual = (a: unknown, b: unknown): boolean => {\n if (a === b) return true;\n if (typeof a === 'function' && typeof b === 'function') return true;\n return isEqual(a, b);\n};\n\nconst areXPropsEqual = (\n prev: Record<string, unknown> | null,\n next: Record<string, unknown>\n): boolean => {\n if (prev === next) return true;\n if (!prev) return false;\n const prevKeys = Object.keys(prev);\n const nextKeys = Object.keys(next);\n if (prevKeys.length !== nextKeys.length) return false;\n for (const key of nextKeys) {\n if (!Object.prototype.hasOwnProperty.call(prev, key)) return false;\n if (!isXPropEqual(prev[key], next[key])) return false;\n }\n return true;\n};\n\nconst ISOLATED_PAGE_PATH = '/DevCenterIsolatedAppPage.html';\n\n// [REACT-18-MIGRATION-TAG] Per-app React version (PLT-3099): under a React-18 host an isolated app\n// must run in a React-17 iframe realm unless it is known to be React-18-ready. Legacy builds carry\n// no `package.package_json.dependencies.react` at all (the field predates the migration and is\n// absent even in the packages API), so React-17-ness cannot be positively detected — everything\n// before the migration is React 17. Therefore treat \"does not explicitly declare React 18\" as\n// React 17 and route it to `/r17/`; only an explicit React-18 declaration (present on new builds,\n// filled in by the host's package_json enrichment) keeps the app on the default React-18 iframe.\n// The host opts in by setting `window.__DC_REACT17_ISOLATED_PAGE_PATH__` to a SAME-ORIGIN path that\n// serves a React-17 build of the iframe entry (same-origin is required — the xprops bridge below\n// uses direct `contentWindow.xprops`, which the browser blocks cross-origin). Remove once all apps\n// are on React 18.\nconst REACT_18_DECLARATION_REGEX = /(^|[\\^~>=\\s])18\\./;\n\nexport const isReact17App = (app: unknown): boolean => {\n const pkg = (app as { package?: { package_json?: { dependencies?: Record<string, string> } } })\n ?.package;\n // No package at all = a legacy build with no React-18 declaration → route to /r17/. A React-18\n // app always carries a package_json declaring react 18 (host package_json enrichment), so a\n // missing package can never be a detectable React-18 app; default unknown/legacy to React 17.\n if (!pkg) return true;\n\n const declared = pkg.package_json?.dependencies?.react;\n return !(typeof declared === 'string' && REACT_18_DECLARATION_REGEX.test(declared));\n};\n\nconst getIsolatedPagePath = (app: unknown): string => {\n const react17Path = (window as any).__DC_REACT17_ISOLATED_PAGE_PATH__;\n if (react17Path && isReact17App(app)) return react17Path;\n return ISOLATED_PAGE_PATH;\n};\n\nexport const APP_IFRAME_ATTRIBUTE = 'data-corva-app-iframe';\n\nconst IFRAME_ATTRIBUTES = {\n [APP_IFRAME_ATTRIBUTE]: true,\n 'data-testid': 'isolatedAppContainer',\n} as Record<string, boolean | string>;\n\nexport type IsolatedPageProps = {\n [key: string]: any; // forwarded as xprops\n};\n\ndeclare global {\n interface Window {\n xprops?: Record<string, any>;\n xpropsOnProps?: (props: any) => void;\n }\n}\n\nexport function IsolatedPage({ ...restProps }: IsolatedPageProps) {\n const iframeRef = useRef<HTMLIFrameElement | null>(null);\n const lastPropsSnapshotRef = useRef<Record<string, any> | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n const handleIframeLoad = useCallback(() => {\n setIsLoading(false);\n }, []);\n\n /**\n * Inject or update props into iframe window.xprops.\n * Calls window.xpropsOnProps callback only if props changed (deep check).\n */\n const publishProps = (\n targetWindow: (Window & { xprops?: any; xpropsOnProps?: (props: any) => void }) | null,\n newProps: Record<string, any>\n ) => {\n if (!targetWindow) return;\n\n const isInitialSet = !targetWindow.xprops;\n const previousSnapshot = lastPropsSnapshotRef.current || {};\n const propsChanged = !areXPropsEqual(previousSnapshot, newProps);\n\n // Unconditional, and outside the fire check below: suppressing the iframe re-render must not\n // leave stale callbacks on the object the DC app dereferences on every user action.\n targetWindow.xprops = { ...newProps };\n lastPropsSnapshotRef.current = newProps;\n\n // Call xpropsOnProps callback if it exists (on initial set or when props changed)\n if ((isInitialSet || propsChanged) && targetWindow.xpropsOnProps) {\n try {\n targetWindow.xpropsOnProps(newProps);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.debug('[IsolatedPage] xpropsOnProps was not set yet:', error);\n }\n }\n };\n\n // Try to set/update xprops whenever props change (including initial mount)\n useEffect(() => {\n try {\n const win = iframeRef.current?.contentWindow as\n | (Window & { xprops?: any; xpropsOnProps?: (props: any) => void })\n | null;\n publishProps(win, restProps);\n } catch (error) {\n // contentWindow might not be accessible yet, will retry on next prop change\n console.error('[IsolatedPage] Error accessing iframe contentWindow:', error);\n }\n });\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n try {\n const win = iframeRef.current?.contentWindow as (Window & { xprops?: any }) | null;\n if (win && win.xprops) delete (win as any).xprops;\n } catch (error) {\n console.error('[IsolatedPage] Error cleaning up xprops:', error);\n }\n lastPropsSnapshotRef.current = null;\n const iframeElement = iframeRef.current;\n if (iframeElement) {\n try {\n iframeElement.src = 'about:blank';\n } catch (error) {\n console.error('[IsolatedPage] Error setting iframe src to about:blank:', error);\n }\n }\n iframeRef.current = null;\n };\n }, []);\n\n return (\n <div className={styles.container}>\n {isLoading && <LoadingIndicator />}\n <iframe\n ref={iframeRef}\n src={getIsolatedPagePath(restProps.app)}\n onLoad={handleIframeLoad}\n className={styles.iframe}\n {...IFRAME_ATTRIBUTES}\n />\n </div>\n );\n}\n"],"names":["REACT_18_DECLARATION_REGEX","isReact17App","app","_pkg$package_json","_pkg$package_json$dep","pkg","package","declared","package_json","dependencies","react","test","APP_IFRAME_ATTRIBUTE","IFRAME_ATTRIBUTES","_defineProperty","_IFRAME_ATTRIBUTES","IsolatedPage","_ref","react17Path","restProps","_extends","iframeRef","useRef","lastPropsSnapshotRef","useState","_useState2","_slicedToArray","_useState","isLoading","setIsLoading","handleIframeLoad","useCallback","publishProps","targetWindow","newProps","isInitialSet","xprops","propsChanged","prev","next","a","b","prevKeys","Object","keys","nextKeys","length","_i","_nextKeys","key","prototype","hasOwnProperty","call","isEqual","areXPropsEqual","current","xpropsOnProps","error","console","debug","useEffect","_iframeRef$current","win","contentWindow","_iframeRef$current2","iframeElement","src","_jsxs","className","styles","container","children","_jsx","LoadingIndicator","_objectSpread","ref","window","__DC_REACT17_ISOLATED_PAGE_PATH__","onLoad","iframe"],"mappings":"k+BA0BA,IAmCMA,EAA6B,oBAEtBC,EAAe,SAACC,GAA0B,IAAAC,EAAAC,EAC/CC,EAAOH,aAAAA,EAAAA,EACTI,QAIJ,IAAKD,EAAK,OAAO,EAEjB,IAAME,UAAWF,EAAAA,EAAIG,2BAAJ,UAAAL,EAAkBM,oBAAlB,IAAAL,SAAAA,EAAgCM,MACjD,QAA6B,iBAAbH,GAAyBP,EAA2BW,KAAKJ,GAC3E,EAQaK,EAAuB,wBAE9BC,UAF8B,yBAGV,GACxBC,EAAAC,EAAA,cAAe,wBACoBA,GAa9B,SAASC,EAAkDC,GAAA,IAxBrCf,EACrBgB,EAuB0BC,EAASC,EAAA,CAAA,EAAAH,GACnCI,EAAYC,EAAiC,MAC7CC,EAAuBD,EAAmC,MAC9BE,EAAAA,GAAS,GAAKC,EAAAC,EAAAC,EAAA,GAAzCC,EAASH,EAAA,GAAEI,EAAYJ,EAAA,GAExBK,EAAmBC,GAAY,WACnCF,GAAa,EACd,GAAE,IAMGG,EAAe,SACnBC,EACAC,GAEA,GAAKD,EAAL,CAEA,IAAME,GAAgBF,EAAaG,OAE7BC,GAxFa,SACrBC,EACAC,GAEA,GAAID,IAASC,EAAM,OAAO,EAC1B,IAAKD,EAAM,OAAO,EAClB,IAZoBE,EAAYC,EAY1BC,EAAWC,OAAOC,KAAKN,GACvBO,EAAWF,OAAOC,KAAKL,GAC7B,GAAIG,EAASI,SAAWD,EAASC,OAAQ,OAAO,EAChD,IAAA,IAAAC,EAAA,EAAAC,EAAkBH,EAAUE,EAAAC,EAAAF,OAAAC,IAAA,CAAvB,IAAME,EAAGD,EAAAD,GACZ,IAAKJ,OAAOO,UAAUC,eAAeC,KAAKd,EAAMW,GAAM,OAAO,EAC7D,MAjBkBT,EAiBAF,EAAKW,OAjBOR,EAiBDF,EAAKU,KAfnB,mBAANT,GAAiC,mBAANC,GAC/BY,EAAQb,EAAGC,IAcyB,OAAO,CAClD,CACA,OAAO,CACT,CA0E0Ba,CADG/B,EAAqBgC,SAAW,GACFrB,GAQvD,GAJAD,EAAaG,OAAcF,EAAAA,CAAAA,EAAAA,GAC3BX,EAAqBgC,QAAUrB,GAG1BC,GAAgBE,IAAiBJ,EAAauB,cACjD,IACEvB,EAAauB,cAActB,EAI7B,CAHE,MAAOuB,GAEPC,QAAQC,MAAM,gDAAiDF,EACjE,CAlBiB,GAyDrB,OAlCAG,GAAU,WACR,IAAI,IAAAC,EACIC,EAAuB,QAAjBzC,EAAAA,EAAUkC,eAAO,IAAAM,OAAA,EAAjBA,EAAmBE,cAG/B/B,EAAa8B,EAAK3C,EAIpB,CAHE,MAAOsC,GAEPC,QAAQD,MAAM,uDAAwDA,EACxE,CACF,IAGAG,GAAU,WACR,OAAO,WACL,IAAI,IAAAI,EACIF,EAAuB,QAAjBzC,EAAAA,EAAUkC,eAAO,IAAAS,OAAA,EAAjBA,EAAmBD,cAC3BD,GAAOA,EAAI1B,eAAgB0B,EAAY1B,MAG7C,CAFE,MAAOqB,GACPC,QAAQD,MAAM,2CAA4CA,EAC5D,CACAlC,EAAqBgC,QAAU,KAC/B,IAAMU,EAAgB5C,EAAUkC,QAChC,GAAIU,EACF,IACEA,EAAcC,IAAM,aAGtB,CAFE,MAAOT,GACPC,QAAQD,MAAM,0DAA2DA,EAC3E,CAEFpC,EAAUkC,QAAU,KAEvB,GAAE,IAGDY,EAAA,MAAA,CAAKC,UAAWC,EAAOC,UAAUC,SAAA,CAC9B3C,GAAa4C,EAACC,MACfD,EAAA,SAAAE,EAAA,CACEC,IAAKtD,EACL6C,KAvGqBhE,EAuGIiB,EAAUjB,IAtGnCgB,EAAe0D,OAAeC,kCAChC3D,GAAejB,EAAaC,GAAagB,EA7BpB,kCAmInB4D,OAAQhD,EACRsC,UAAWC,EAAOU,QACdlE,MAIZ"}
|
|
1
|
+
{"version":3,"file":"IsolatedPage.js","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/IsolatedPage.tsx"],"sourcesContent":["// Ultra-minimal, same-origin isolation helper. Used to isolate DC apps from the parent page.\n//\n// Usage:\n// <IsolatedPage currentUser={user} onSettingsChange={fn} isFeatEnabled={false} />\n//\n// Inside isolated page:\n// window.xpropsOnProps = (props) => { /* handle updates */ };\n// window.xprops.onSettingsChange(payload);\n//\n// Notes:\n// - Path is hardcoded to `/DevCenterIsolatedAppPage.html`.\n// - Client sets `window.xpropsOnProps` function directly (separate from xprops data).\n// - `IsolatedPage` calls `window.xpropsOnProps` when props change (if it exists).\n// - Client sets `window.xpropsOnUnmount` to unmount its React root; `IsolatedPage` calls it\n// while the iframe is still in the document, then deletes xprops.\n// - Uses a callback-identity-aware deep equality check (see `areXPropsEqual` below) to avoid\n// unnecessary `xpropsOnProps` fires.\n\nimport { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { isEqual } from 'lodash';\nimport LoadingIndicator from '~/components/LoadingIndicator';\nimport styles from './IsolatedPage.module.css';\n\n// Callbacks arrive with a new identity every parent render, so comparing them would fire\n// `xpropsOnProps` into the iframe on every benign re-render. They are safe to treat as equal\n// because the iframe always reads the latest function from `window.xprops`, which `publishProps`\n// replaces unconditionally and `useXProps` dereferences at call time.\nconst isXPropEqual = (a: unknown, b: unknown): boolean => {\n if (a === b) return true;\n if (typeof a === 'function' && typeof b === 'function') return true;\n return isEqual(a, b);\n};\n\nconst areXPropsEqual = (\n prev: Record<string, unknown> | null,\n next: Record<string, unknown>\n): boolean => {\n if (prev === next) return true;\n if (!prev) return false;\n const prevKeys = Object.keys(prev);\n const nextKeys = Object.keys(next);\n if (prevKeys.length !== nextKeys.length) return false;\n for (const key of nextKeys) {\n if (!Object.prototype.hasOwnProperty.call(prev, key)) return false;\n if (!isXPropEqual(prev[key], next[key])) return false;\n }\n return true;\n};\n\nconst ISOLATED_PAGE_PATH = '/DevCenterIsolatedAppPage.html';\n\n// [REACT-18-MIGRATION-TAG] Per-app React version (PLT-3099): under a React-18 host an isolated app\n// must run in a React-17 iframe realm unless it is known to be React-18-ready. Legacy builds carry\n// no `package.package_json.dependencies.react` at all (the field predates the migration and is\n// absent even in the packages API), so React-17-ness cannot be positively detected — everything\n// before the migration is React 17. Therefore treat \"does not explicitly declare React 18\" as\n// React 17 and route it to `/r17/`; only an explicit React-18 declaration (present on new builds,\n// filled in by the host's package_json enrichment) keeps the app on the default React-18 iframe.\n// The host opts in by setting `window.__DC_REACT17_ISOLATED_PAGE_PATH__` to a SAME-ORIGIN path that\n// serves a React-17 build of the iframe entry (same-origin is required — the xprops bridge below\n// uses direct `contentWindow.xprops`, which the browser blocks cross-origin). Remove once all apps\n// are on React 18.\nconst REACT_18_DECLARATION_REGEX = /(^|[\\^~>=\\s])18\\./;\n\nexport const isReact17App = (app: unknown): boolean => {\n const pkg = (app as { package?: { package_json?: { dependencies?: Record<string, string> } } })\n ?.package;\n // No package at all = a legacy build with no React-18 declaration → route to /r17/. A React-18\n // app always carries a package_json declaring react 18 (host package_json enrichment), so a\n // missing package can never be a detectable React-18 app; default unknown/legacy to React 17.\n if (!pkg) return true;\n\n const declared = pkg.package_json?.dependencies?.react;\n return !(typeof declared === 'string' && REACT_18_DECLARATION_REGEX.test(declared));\n};\n\nconst getIsolatedPagePath = (app: unknown): string => {\n const react17Path = (window as any).__DC_REACT17_ISOLATED_PAGE_PATH__;\n if (react17Path && isReact17App(app)) return react17Path;\n return ISOLATED_PAGE_PATH;\n};\n\nexport const APP_IFRAME_ATTRIBUTE = 'data-corva-app-iframe';\n\nconst IFRAME_ATTRIBUTES = {\n [APP_IFRAME_ATTRIBUTE]: true,\n 'data-testid': 'isolatedAppContainer',\n} as Record<string, boolean | string>;\n\nexport type IsolatedPageProps = {\n [key: string]: any; // forwarded as xprops\n};\n\ndeclare global {\n interface Window {\n xprops?: Record<string, any>;\n xpropsOnProps?: (props: any) => void;\n xpropsOnUnmount?: () => void;\n }\n}\n\nexport function IsolatedPage({ ...restProps }: IsolatedPageProps) {\n const iframeRef = useRef<HTMLIFrameElement | null>(null);\n const lastPropsSnapshotRef = useRef<Record<string, any> | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n const handleIframeLoad = useCallback(() => {\n setIsLoading(false);\n }, []);\n\n /**\n * Inject or update props into iframe window.xprops.\n * Calls window.xpropsOnProps callback only if props changed (deep check).\n */\n const publishProps = (\n targetWindow: (Window & { xprops?: any; xpropsOnProps?: (props: any) => void }) | null,\n newProps: Record<string, any>\n ) => {\n if (!targetWindow) return;\n\n const isInitialSet = !targetWindow.xprops;\n const previousSnapshot = lastPropsSnapshotRef.current || {};\n const propsChanged = !areXPropsEqual(previousSnapshot, newProps);\n\n // Unconditional, and outside the fire check below: suppressing the iframe re-render must not\n // leave stale callbacks on the object the DC app dereferences on every user action.\n targetWindow.xprops = { ...newProps };\n lastPropsSnapshotRef.current = newProps;\n\n // Call xpropsOnProps callback if it exists (on initial set or when props changed)\n if ((isInitialSet || propsChanged) && targetWindow.xpropsOnProps) {\n try {\n targetWindow.xpropsOnProps(newProps);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.debug('[IsolatedPage] xpropsOnProps was not set yet:', error);\n }\n }\n };\n\n // Try to set/update xprops whenever props change (including initial mount)\n useEffect(() => {\n try {\n const win = iframeRef.current?.contentWindow as\n | (Window & { xprops?: any; xpropsOnProps?: (props: any) => void })\n | null;\n publishProps(win, restProps);\n } catch (error) {\n // contentWindow might not be accessible yet, will retry on next prop change\n console.error('[IsolatedPage] Error accessing iframe contentWindow:', error);\n }\n });\n\n // Cleanup on unmount. A layout effect: React detaches the iframe ref before passive cleanups\n // run, and the app's own unmount must happen while the iframe is still in the document — the\n // listeners an app attached to window.top otherwise outlive the iframe and keep its realm alive.\n useLayoutEffect(() => {\n return () => {\n try {\n const win = iframeRef.current?.contentWindow as\n | (Window & { xprops?: any; xpropsOnUnmount?: () => void })\n | null;\n win?.xpropsOnUnmount?.();\n if (win && win.xprops) delete (win as any).xprops;\n } catch (error) {\n console.error('[IsolatedPage] Error cleaning up xprops:', error);\n }\n lastPropsSnapshotRef.current = null;\n iframeRef.current = null;\n };\n }, []);\n\n return (\n <div className={styles.container}>\n {isLoading && <LoadingIndicator />}\n <iframe\n ref={iframeRef}\n src={getIsolatedPagePath(restProps.app)}\n onLoad={handleIframeLoad}\n className={styles.iframe}\n {...IFRAME_ATTRIBUTES}\n />\n </div>\n );\n}\n"],"names":["REACT_18_DECLARATION_REGEX","isReact17App","app","_pkg$package_json","_pkg$package_json$dep","pkg","package","declared","package_json","dependencies","react","test","APP_IFRAME_ATTRIBUTE","IFRAME_ATTRIBUTES","_defineProperty","_IFRAME_ATTRIBUTES","IsolatedPage","_ref","react17Path","restProps","_extends","iframeRef","useRef","lastPropsSnapshotRef","useState","_useState2","_slicedToArray","_useState","isLoading","setIsLoading","handleIframeLoad","useCallback","publishProps","targetWindow","newProps","isInitialSet","xprops","propsChanged","prev","next","a","b","prevKeys","Object","keys","nextKeys","length","_i","_nextKeys","key","prototype","hasOwnProperty","call","isEqual","areXPropsEqual","current","xpropsOnProps","error","console","debug","useEffect","_iframeRef$current","win","contentWindow","useLayoutEffect","_iframeRef$current2","_win$xpropsOnUnmount","xpropsOnUnmount","_jsxs","className","styles","container","children","_jsx","LoadingIndicator","_objectSpread","ref","src","window","__DC_REACT17_ISOLATED_PAGE_PATH__","onLoad","iframe"],"mappings":"u/BA2BA,IAmCMA,EAA6B,oBAEtBC,EAAe,SAACC,GAA0B,IAAAC,EAAAC,EAC/CC,EAAOH,aAAAA,EAAAA,EACTI,QAIJ,IAAKD,EAAK,OAAO,EAEjB,IAAME,UAAWF,EAAAA,EAAIG,2BAAJ,UAAAL,EAAkBM,oBAAlB,IAAAL,SAAAA,EAAgCM,MACjD,QAA6B,iBAAbH,GAAyBP,EAA2BW,KAAKJ,GAC3E,EAQaK,EAAuB,wBAE9BC,UAF8B,yBAGV,GACxBC,EAAAC,EAAA,cAAe,wBACoBA,GAc9B,SAASC,EAAkDC,GAAA,IAzBrCf,EACrBgB,EAwB0BC,EAASC,EAAA,CAAA,EAAAH,GACnCI,EAAYC,EAAiC,MAC7CC,EAAuBD,EAAmC,MAC9BE,EAAAA,GAAS,GAAKC,EAAAC,EAAAC,EAAA,GAAzCC,EAASH,EAAA,GAAEI,EAAYJ,EAAA,GAExBK,EAAmBC,GAAY,WACnCF,GAAa,EACd,GAAE,IAMGG,EAAe,SACnBC,EACAC,GAEA,GAAKD,EAAL,CAEA,IAAME,GAAgBF,EAAaG,OAE7BC,GAzFa,SACrBC,EACAC,GAEA,GAAID,IAASC,EAAM,OAAO,EAC1B,IAAKD,EAAM,OAAO,EAClB,IAZoBE,EAAYC,EAY1BC,EAAWC,OAAOC,KAAKN,GACvBO,EAAWF,OAAOC,KAAKL,GAC7B,GAAIG,EAASI,SAAWD,EAASC,OAAQ,OAAO,EAChD,IAAA,IAAAC,EAAA,EAAAC,EAAkBH,EAAUE,EAAAC,EAAAF,OAAAC,IAAA,CAAvB,IAAME,EAAGD,EAAAD,GACZ,IAAKJ,OAAOO,UAAUC,eAAeC,KAAKd,EAAMW,GAAM,OAAO,EAC7D,MAjBkBT,EAiBAF,EAAKW,OAjBOR,EAiBDF,EAAKU,KAfnB,mBAANT,GAAiC,mBAANC,GAC/BY,EAAQb,EAAGC,IAcyB,OAAO,CAClD,CACA,OAAO,CACT,CA2E0Ba,CADG/B,EAAqBgC,SAAW,GACFrB,GAQvD,GAJAD,EAAaG,OAAcF,EAAAA,CAAAA,EAAAA,GAC3BX,EAAqBgC,QAAUrB,GAG1BC,GAAgBE,IAAiBJ,EAAauB,cACjD,IACEvB,EAAauB,cAActB,EAI7B,CAHE,MAAOuB,GAEPC,QAAQC,MAAM,gDAAiDF,EACjE,CAlBiB,GAsDrB,OA/BAG,GAAU,WACR,IAAI,IAAAC,EACIC,EAAuB,QAAjBzC,EAAAA,EAAUkC,eAAO,IAAAM,OAAA,EAAjBA,EAAmBE,cAG/B/B,EAAa8B,EAAK3C,EAIpB,CAHE,MAAOsC,GAEPC,QAAQD,MAAM,uDAAwDA,EACxE,CACF,IAKAO,GAAgB,WACd,OAAO,WACL,IAAI,IAAAC,EAAAC,EACIJ,EAAuB,QAAjBzC,EAAAA,EAAUkC,eAAO,IAAAU,OAAA,EAAjBA,EAAmBF,cAG/BD,SAAoB,QAApBA,EAAAA,EAAKK,uBAAe,IAAAD,GAApBA,EAAAJ,KAAAA,GACIA,GAAOA,EAAI1B,eAAgB0B,EAAY1B,MAG7C,CAFE,MAAOqB,GACPC,QAAQD,MAAM,2CAA4CA,EAC5D,CACAlC,EAAqBgC,QAAU,KAC/BlC,EAAUkC,QAAU,KAEvB,GAAE,IAGDa,EAAA,MAAA,CAAKC,UAAWC,EAAOC,UAAUC,SAAA,CAC9B5C,GAAa6C,EAACC,MACfD,EAAA,SAAAE,EAAA,CACEC,IAAKvD,EACLwD,KArGqB3E,EAqGIiB,EAAUjB,IApGnCgB,EAAe4D,OAAeC,kCAChC7D,GAAejB,EAAaC,GAAagB,EA7BpB,kCAiInB8D,OAAQlD,EACRuC,UAAWC,EAAOW,QACdpE,MAIZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NewCommentCursor.d.ts","sourceRoot":"","sources":["../../../src/components/NewCommentCursor/NewCommentCursor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NewCommentCursor.d.ts","sourceRoot":"","sources":["../../../src/components/NewCommentCursor/NewCommentCursor.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEjE,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAE3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAQF,eAAO,MAAM,gBAAgB,kHA0C5B,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{forwardRef as e}from"react";import
|
|
1
|
+
import{forwardRef as e}from"react";import o from"classnames";import t from"./NewCommentCursor.scss.js";import{CurveTooltip as r}from"../CurveTooltip/CurveTooltip.js";import{jsx as i,jsxs as l}from"react/jsx-runtime";var d=e((function(e,d){var n=e.size,s=void 0===n?40:n,a=e.onClick,c=e.tooltip,m=e.className,C=e.testId,p=i("div",{ref:d,"data-testid":C,className:o(t.root,m),style:{width:s,height:s},onClick:a,children:l("svg",{width:.48839026568430455*s,height:.48839026568430455*s,viewBox:"0 0 8.75 8.75",fill:"none","aria-hidden":!0,children:[i("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M0 4.375C0 4.02982 0.279822 3.75 0.625 3.75H8.125C8.47018 3.75 8.75 4.02982 8.75 4.375C8.75 4.72018 8.47018 5 8.125 5H0.625C0.279822 5 0 4.72018 0 4.375Z",fill:"currentColor"}),i("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.375 0C4.72018 0 5 0.279822 5 0.625V8.125C5 8.47018 4.72018 8.75 4.375 8.75C4.02982 8.75 3.75 8.47018 3.75 8.125V0.625C3.75 0.279822 4.02982 0 4.375 0Z",fill:"currentColor"})]})});return c?i(r,{data:c,open:!0,isFullScreen:!1,placement:"bottom-start",children:p}):p}));export{d as NewCommentCursor};
|
|
2
2
|
//# sourceMappingURL=NewCommentCursor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NewCommentCursor.js","sources":["../../../src/components/NewCommentCursor/NewCommentCursor.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport classNames from 'classnames';\n\nimport styles from './NewCommentCursor.scss';\n\nexport type NewCommentCursorProps = {\n size?: number;\n onClick?: () => void;\n\n className?: string;\n testId?: string;\n};\n\n// Figma's \"Vector\" plus glyph is sized relative to the pin (\"Union\", 17.916 units),\n// not the full 24px canvas the pin sits in (node 3119:21596, \"add-message-custom-fill\").\n// Our CSS-drawn pin fills the whole container, so the glyph scales off `size` directly\n// using that plus/pin ratio. Paths/viewBox below are exact Figma coordinates.\nconst GLYPH_RATIO = 8.75 / 17.916;\n\nexport const NewCommentCursor = forwardRef<HTMLDivElement, NewCommentCursorProps>(\n ({ size = 40, onClick, className, testId }, ref) => (\n
|
|
1
|
+
{"version":3,"file":"NewCommentCursor.js","sources":["../../../src/components/NewCommentCursor/NewCommentCursor.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport classNames from 'classnames';\n\nimport styles from './NewCommentCursor.scss';\nimport { CurveTooltip, CurveTooltipData } from '../CurveTooltip';\n\nexport type NewCommentCursorProps = {\n size?: number;\n onClick?: () => void;\n tooltip?: CurveTooltipData;\n\n className?: string;\n testId?: string;\n};\n\n// Figma's \"Vector\" plus glyph is sized relative to the pin (\"Union\", 17.916 units),\n// not the full 24px canvas the pin sits in (node 3119:21596, \"add-message-custom-fill\").\n// Our CSS-drawn pin fills the whole container, so the glyph scales off `size` directly\n// using that plus/pin ratio. Paths/viewBox below are exact Figma coordinates.\nconst GLYPH_RATIO = 8.75 / 17.916;\n\nexport const NewCommentCursor = forwardRef<HTMLDivElement, NewCommentCursorProps>(\n ({ size = 40, onClick, tooltip, className, testId }, ref) => {\n const cursor = (\n <div\n ref={ref}\n data-testid={testId}\n className={classNames(styles.root, className)}\n style={{ width: size, height: size }}\n onClick={onClick}\n >\n <svg\n width={size * GLYPH_RATIO}\n height={size * GLYPH_RATIO}\n viewBox=\"0 0 8.75 8.75\"\n fill=\"none\"\n aria-hidden\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0 4.375C0 4.02982 0.279822 3.75 0.625 3.75H8.125C8.47018 3.75 8.75 4.02982 8.75 4.375C8.75 4.72018 8.47018 5 8.125 5H0.625C0.279822 5 0 4.72018 0 4.375Z\"\n fill=\"currentColor\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M4.375 0C4.72018 0 5 0.279822 5 0.625V8.125C5 8.47018 4.72018 8.75 4.375 8.75C4.02982 8.75 3.75 8.47018 3.75 8.125V0.625C3.75 0.279822 4.02982 0 4.375 0Z\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n );\n\n // isFullScreen: the DC variant resizes the app iframe on open, making a cursor-following tooltip loop.\n return tooltip ? (\n <CurveTooltip data={tooltip} open isFullScreen={false} placement=\"bottom-start\">\n {cursor}\n </CurveTooltip>\n ) : (\n cursor\n );\n }\n);\n"],"names":["NewCommentCursor","forwardRef","_ref","ref","_ref$size","size","onClick","tooltip","className","testId","cursor","_jsx","classNames","styles","root","style","width","height","children","_jsxs","viewBox","fill","fillRule","clipRule","d","CurveTooltip","data","open","isFullScreen","placement"],"mappings":"wNAmBA,IAEaA,EAAmBC,GAC9B,SAAAC,EAAqDC,GAAQ,IAAAC,EAAAF,EAA1DG,KAAAA,aAAO,GAAED,EAAEE,IAAAA,QAASC,IAAAA,QAASC,IAAAA,UAAWC,IAAAA,OACnCC,EACJC,EAAA,MAAA,CACER,IAAKA,EACL,cAAaM,EACbD,UAAWI,EAAWC,EAAOC,KAAMN,GACnCO,MAAO,CAAEC,MAAOX,EAAMY,OAAQZ,GAC9BC,QAASA,EAAQY,SAEjBC,EAAA,MAAA,CACEH,MAbU,mBAaHX,EACPY,OAdU,mBAcFZ,EACRe,QAAQ,gBACRC,KAAK,OACL,eAAW,EAAAH,SAEX,CAAAP,EAAA,OAAA,CACEW,SAAS,UACTC,SAAS,UACTC,EAAE,4JACFH,KAAK,iBAEPV,EAAA,OAAA,CACEW,SAAS,UACTC,SAAS,UACTC,EAAE,4JACFH,KAAK,sBAOb,OAAOd,EACLI,EAACc,EAAY,CAACC,KAAMnB,EAASoB,MAAI,EAACC,cAAc,EAAOC,UAAU,eAAcX,SAC5ER,IAGHA,CAEJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewCommentCursor.test.d.ts","sourceRoot":"","sources":["../../../../src/components/NewCommentCursor/__tests__/NewCommentCursor.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highcharts.d.ts","sourceRoot":"","sources":["../../../src/config/highcharts/highcharts.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"highcharts.d.ts","sourceRoot":"","sources":["../../../src/config/highcharts/highcharts.js"],"names":[],"mappings":"AAiDA,wBAAsB,cAAc,CAAC,EAAE,OAAgC,EAAE;;CAAK,iBA0F7E"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import e from"@babel/runtime/helpers/asyncToGenerator";import t from"@babel/runtime/helpers/slicedToArray";import r from"@babel/runtime/helpers/typeof";import o from"@babel/runtime/regenerator";import{HIGHCHARTS_V8_VERSION as n,HIGHCHARTS_V10_VERSION as a}from"./constants.js";import i from"./highcharts-contour.js";import{getHighchartsV10 as s}from"./getHighchartsV10.js";import c from"dompurify";var l=function e(o){return"string"==typeof o?c.sanitize(o):("object"===r(o)&&null!==o&&Object.entries(o).forEach((function(n){var a=t(n,2),i=a[0],s=a[1];"string"==typeof s?o[i]=c.sanitize(o[i]):Array.isArray(s)?s.forEach((function(t,r){o[i][r]=e(t)})):"object"===r(s)&&(o[i]=e(s))})),o)},h=function(){var e,t=document.createElement("canvas").getContext("webgl"),r=null==t?void 0:t.createShader(t.VERTEX_SHADER);if(!r)return!1;t.shaderSource(r,"void main(){gl_Position=vec4(0.0,0.0,0.0,1.0);}"),t.compileShader(r);var o=!!t.getShaderParameter(r,t.COMPILE_STATUS);return t.deleteShader(r),null===(e=t.getExtension("WEBGL_lose_context"))||void 0===e||e.loseContext(),o};function d(){return u.apply(this,arguments)}function u(){return u=e(o.mark((function e(){var t,r,c,d,u,p,m,f,g,b,v,A,S,y,w,x,E,T=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=T.length>0&&void 0!==T[0]?T[0]:{},r=t.version,[n,a].includes(c=void 0===r?a:r)){e.next=3;break}throw new Error("Invalid highcharts version: ".concat(c));case 3:if(c!==n){e.next=9;break}return e.next=6,import("./getHighchartsV8.js");case 6:e.t0=e.sent.getHighchartsV8,e.next=10;break;case 9:e.t0=s;case 10:d=e.t0,u=d(),p=u.Highcharts,m=u.highchartsMore,f=u.HighchartsMulticolorSeries,g=u.addSolidGauge,b=u.addHeatmap,v=u.addBoost,A=u.addExporting,S=u.addXrange,y=u.addDumbbell,w=u.addPatternFill,x=u.addAnnotations,window.Highcharts=p,p.AST&&(p.AST.bypassHTMLFiltering=!0,p.AST.allowedAttributes.push("viewBox"),p.AST.allowedAttributes.push("fill-rule"),p.AST.allowedAttributes.push("clip-rule")),f(p),m(p),g(p),b(p),v(p),A(p),S(p),y(p),w(p),i(p),x(p),E=p.chart,p.chart=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length,o=new Array(r>2?r-2:0),n=2;n<r;n++)o[n-2]=arguments[n];return E.apply(void 0,[e,l(t)].concat(o))},p.setOptions({boost:{enabled:h()},plotOptions:{series:{states:{inactive:{enabled:!1}}}}});case 28:case"end":return e.stop()}}),e)}))),u.apply(this,arguments)}export{d as initHighcharts};
|
|
2
2
|
//# sourceMappingURL=highcharts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highcharts.js","sources":["../../../src/config/highcharts/highcharts.js"],"sourcesContent":["/* eslint-disable */\n// TODO: all the plugins should be checked, legacy code\n\n// [HIGHCHARTS-10-MIGRATION-TAG]: Find and delete/clean all places like this once the migration ends\nimport { HIGHCHARTS_V10_VERSION, HIGHCHARTS_V8_VERSION } from './constants';\n\nimport addContour from './highcharts-contour';\nimport { getHighchartsV10 } from './getHighchartsV10';\n\nimport DOMPurify from 'dompurify';\n\nconst stripHTMLRecurse = o => {\n if (typeof o === 'string') {\n return DOMPurify.sanitize(o);\n }\n\n if (typeof o === 'object' && o !== null)\n Object.entries(o).forEach(([key, value]) => {\n if (typeof value === 'string') {\n o[key] = DOMPurify.sanitize(o[key]);\n } else if (Array.isArray(value)) {\n value.forEach((item, i) => {\n o[key][i] = stripHTMLRecurse(item);\n });\n } else if (typeof value === 'object') {\n o[key] = stripHTMLRecurse(value);\n }\n });\n\n return o;\n};\n\nexport async function initHighcharts({ version = HIGHCHARTS_V10_VERSION } = {}) {\n if (![HIGHCHARTS_V8_VERSION, HIGHCHARTS_V10_VERSION].includes(version)) {\n throw new Error(`Invalid highcharts version: ${version}`);\n }\n\n const highchartsGetter =\n version === HIGHCHARTS_V8_VERSION\n ? (await import('./getHighchartsV8')).getHighchartsV8\n : getHighchartsV10;\n\n const {\n Highcharts,\n highchartsMore,\n HighchartsMulticolorSeries,\n addSolidGauge,\n addHeatmap,\n addBoost,\n addExporting,\n addXrange,\n addDumbbell,\n addPatternFill,\n addAnnotations,\n } = highchartsGetter();\n\n /**\n * NOTE: Highchart has a bug for pie chart in v8.1.2\n * issue link: https://github.com/highcharts/highcharts/issues/13710\n * workaround:\n * import Highcharts from 'highcharts';\n * window.Highcharts = Highcharts;\n */\n window.Highcharts = Highcharts;\n\n // NOTE: Temporary disable HTML filtering for duration of migration to v10, as this is the main breaking change in v10, should be removed after migration\n if (Highcharts.AST) {\n Highcharts.AST.bypassHTMLFiltering = true;\n\n // Adding needed custom attributes for some SVG icons\n Highcharts.AST.allowedAttributes.push('viewBox');\n Highcharts.AST.allowedAttributes.push('fill-rule');\n Highcharts.AST.allowedAttributes.push('clip-rule');\n }\n\n HighchartsMulticolorSeries(Highcharts);\n // NOTE: Highcharts patching. It should be done in one place before any chart in rendered\n // in order to avoid conflicts\n highchartsMore(Highcharts);\n addSolidGauge(Highcharts); // https://www.highcharts.com/docs/chart-and-series-types/angular-gauges\n addHeatmap(Highcharts); // https://www.highcharts.com/docs/chart-and-series-types/heatmap\n addBoost(Highcharts); // https://www.highcharts.com/docs/advanced-chart-features/boost-module\n addExporting(Highcharts); // https://www.highcharts.com/docs/export-module/export-module-overview\n addXrange(Highcharts); // https://www.highcharts.com/docs/advanced-chart-features/boost-module\n addDumbbell(Highcharts);\n addPatternFill(Highcharts);\n addContour(Highcharts);\n addAnnotations(Highcharts);\n\n // fix security issue for Highcharts 8\n // https://github.com/highcharts/highcharts/security/advisories/GHSA-8j65-4pcq-xq95\n const originalChartFn = Highcharts.chart;\n Highcharts.chart = function (container, options = {}, ...restParams) {\n return originalChartFn(container, stripHTMLRecurse(options), ...restParams);\n };\n\n /**\n * Adjust default highcharts effects globally for better use in our apps\n *\n * 1. Stop animation for inactive series\n * ref: https://api.highcharts.com/highcharts/plotOptions.series.states.inactive.enabled\n *\n */\n Highcharts.setOptions({\n plotOptions: {\n series: {\n states: {\n inactive: {\n enabled: false,\n },\n },\n },\n },\n });\n}\n"],"names":["stripHTMLRecurse","o","DOMPurify","sanitize","_typeof","Object","entries","forEach","_ref","_ref2","_slicedToArray","key","value","Array","isArray","item","i","initHighcharts","_initHighcharts","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref3","_ref3$version","version","highchartsGetter","_highchartsGetter","Highcharts","highchartsMore","HighchartsMulticolorSeries","addSolidGauge","addHeatmap","addBoost","addExporting","addXrange","addDumbbell","addPatternFill","addAnnotations","originalChartFn","_args","wrap","_context","prev","next","length","undefined","HIGHCHARTS_V8_VERSION","HIGHCHARTS_V10_VERSION","includes","Error","import","t0","sent","getHighchartsV8","getHighchartsV10","window","AST","bypassHTMLFiltering","allowedAttributes","push","addContour","chart","container","options","_len","restParams","_key","setOptions","plotOptions","series","states","inactive","
|
|
1
|
+
{"version":3,"file":"highcharts.js","sources":["../../../src/config/highcharts/highcharts.js"],"sourcesContent":["/* eslint-disable */\n// TODO: all the plugins should be checked, legacy code\n\n// [HIGHCHARTS-10-MIGRATION-TAG]: Find and delete/clean all places like this once the migration ends\nimport { HIGHCHARTS_V10_VERSION, HIGHCHARTS_V8_VERSION } from './constants';\n\nimport addContour from './highcharts-contour';\nimport { getHighchartsV10 } from './getHighchartsV10';\n\nimport DOMPurify from 'dompurify';\n\nconst stripHTMLRecurse = o => {\n if (typeof o === 'string') {\n return DOMPurify.sanitize(o);\n }\n\n if (typeof o === 'object' && o !== null)\n Object.entries(o).forEach(([key, value]) => {\n if (typeof value === 'string') {\n o[key] = DOMPurify.sanitize(o[key]);\n } else if (Array.isArray(value)) {\n value.forEach((item, i) => {\n o[key][i] = stripHTMLRecurse(item);\n });\n } else if (typeof value === 'object') {\n o[key] = stripHTMLRecurse(value);\n }\n });\n\n return o;\n};\n\n// Highcharts' own hasWebGLSupport() only proves a context can be created, which the\n// drivers that fail here can do. Compiling one shader is what separates them.\nconst isBoostSupported = () => {\n const gl = document.createElement('canvas').getContext('webgl');\n const shader = gl?.createShader(gl.VERTEX_SHADER);\n if (!shader) return false;\n\n gl.shaderSource(shader, 'void main(){gl_Position=vec4(0.0,0.0,0.0,1.0);}');\n gl.compileShader(shader);\n const isCompiled = !!gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\n gl.deleteShader(shader);\n gl.getExtension('WEBGL_lose_context')?.loseContext();\n\n return isCompiled;\n};\n\nexport async function initHighcharts({ version = HIGHCHARTS_V10_VERSION } = {}) {\n if (![HIGHCHARTS_V8_VERSION, HIGHCHARTS_V10_VERSION].includes(version)) {\n throw new Error(`Invalid highcharts version: ${version}`);\n }\n\n const highchartsGetter =\n version === HIGHCHARTS_V8_VERSION\n ? (await import('./getHighchartsV8')).getHighchartsV8\n : getHighchartsV10;\n\n const {\n Highcharts,\n highchartsMore,\n HighchartsMulticolorSeries,\n addSolidGauge,\n addHeatmap,\n addBoost,\n addExporting,\n addXrange,\n addDumbbell,\n addPatternFill,\n addAnnotations,\n } = highchartsGetter();\n\n /**\n * NOTE: Highchart has a bug for pie chart in v8.1.2\n * issue link: https://github.com/highcharts/highcharts/issues/13710\n * workaround:\n * import Highcharts from 'highcharts';\n * window.Highcharts = Highcharts;\n */\n window.Highcharts = Highcharts;\n\n // NOTE: Temporary disable HTML filtering for duration of migration to v10, as this is the main breaking change in v10, should be removed after migration\n if (Highcharts.AST) {\n Highcharts.AST.bypassHTMLFiltering = true;\n\n // Adding needed custom attributes for some SVG icons\n Highcharts.AST.allowedAttributes.push('viewBox');\n Highcharts.AST.allowedAttributes.push('fill-rule');\n Highcharts.AST.allowedAttributes.push('clip-rule');\n }\n\n HighchartsMulticolorSeries(Highcharts);\n // NOTE: Highcharts patching. It should be done in one place before any chart in rendered\n // in order to avoid conflicts\n highchartsMore(Highcharts);\n addSolidGauge(Highcharts); // https://www.highcharts.com/docs/chart-and-series-types/angular-gauges\n addHeatmap(Highcharts); // https://www.highcharts.com/docs/chart-and-series-types/heatmap\n addBoost(Highcharts); // https://www.highcharts.com/docs/advanced-chart-features/boost-module\n addExporting(Highcharts); // https://www.highcharts.com/docs/export-module/export-module-overview\n addXrange(Highcharts); // https://www.highcharts.com/docs/advanced-chart-features/boost-module\n addDumbbell(Highcharts);\n addPatternFill(Highcharts);\n addContour(Highcharts);\n addAnnotations(Highcharts);\n\n // fix security issue for Highcharts 8\n // https://github.com/highcharts/highcharts/security/advisories/GHSA-8j65-4pcq-xq95\n const originalChartFn = Highcharts.chart;\n Highcharts.chart = function (container, options = {}, ...restParams) {\n return originalChartFn(container, stripHTMLRecurse(options), ...restParams);\n };\n\n /**\n * Adjust default highcharts effects globally for better use in our apps\n *\n * 1. Stop animation for inactive series\n * ref: https://api.highcharts.com/highcharts/plotOptions.series.states.inactive.enabled\n *\n * 2. Keep boost off where its shaders will not compile. boost.enabled defaults to\n * true once addBoost has run, and on such drivers boost carries on with a null\n * program and throws out of getAttribLocation mid-render, taking the chart with\n * it. Charts keep GPU acceleration everywhere the driver works.\n *\n */\n Highcharts.setOptions({\n boost: {\n enabled: isBoostSupported(),\n },\n plotOptions: {\n series: {\n states: {\n inactive: {\n enabled: false,\n },\n },\n },\n },\n });\n}\n"],"names":["stripHTMLRecurse","o","DOMPurify","sanitize","_typeof","Object","entries","forEach","_ref","_ref2","_slicedToArray","key","value","Array","isArray","item","i","isBoostSupported","_gl$getExtension","gl","document","createElement","getContext","shader","createShader","VERTEX_SHADER","shaderSource","compileShader","isCompiled","getShaderParameter","COMPILE_STATUS","deleteShader","getExtension","loseContext","initHighcharts","_initHighcharts","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref3","_ref3$version","version","highchartsGetter","_highchartsGetter","Highcharts","highchartsMore","HighchartsMulticolorSeries","addSolidGauge","addHeatmap","addBoost","addExporting","addXrange","addDumbbell","addPatternFill","addAnnotations","originalChartFn","_args","wrap","_context","prev","next","length","undefined","HIGHCHARTS_V8_VERSION","HIGHCHARTS_V10_VERSION","includes","Error","import","t0","sent","getHighchartsV8","getHighchartsV10","window","AST","bypassHTMLFiltering","allowedAttributes","push","addContour","chart","container","options","_len","restParams","_key","setOptions","boost","enabled","plotOptions","series","states","inactive","stop"],"mappings":"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"}
|