@canonical/react-ds-app-launchpad 0.9.0-experimental.14 → 0.9.0-experimental.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.
@@ -1,20 +1,20 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Fragment, useCallback, useEffect, useMemo, useRef } from "react";
2
+ import { Fragment, forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, } from "react";
3
3
  import { useGitDiffViewer } from "../../hooks/index.js";
4
4
  import { DiffLine } from "./common/index.js";
5
5
  import "./styles.css";
6
6
  // TODO: decide where to put this once we provide an external syntax highlighter option
7
7
  import hljs from "highlight.js";
8
8
  import "./HighlighTheme.css";
9
+ import updateTableWidth from "./utils/updateTableWidth.js";
9
10
  const componentCssClassName = "ds code-diff-viewer";
10
- const tableWidthCSSVar = "--table-width";
11
11
  /**
12
12
  * Displays a diff in a table format with line numbers and syntax highlighting.
13
13
  * With option to add comments to specific lines and interactive gutter for adding comments.
14
14
  *
15
15
  * @returns {React.ReactElement} - Rendered CodeDiffViewer
16
16
  */
17
- const CodeDiffViewer = ({ id, AddComment, className, style, }) => {
17
+ const CodeDiffViewer = ({ id, AddComment, className, style, disableWidthCalculation = false, }, ref) => {
18
18
  const { isCollapsed, diff, addCommentEnabled, setAddCommentEnabled, addCommentOpenLocations, toggleAddCommentLocation, lineDecorations, } = useGitDiffViewer();
19
19
  const tableRef = useRef(null);
20
20
  // TODO: temporary syntax highlighting
@@ -51,6 +51,7 @@ const CodeDiffViewer = ({ id, AddComment, className, style, }) => {
51
51
  });
52
52
  });
53
53
  }, [diff, highlight]);
54
+ useImperativeHandle(ref, () => tableRef.current);
54
55
  /**
55
56
  * Observe the table for size changes and update the CSS variable
56
57
  */
@@ -58,21 +59,20 @@ const CodeDiffViewer = ({ id, AddComment, className, style, }) => {
58
59
  // SSR check
59
60
  if (typeof ResizeObserver === "undefined")
60
61
  return;
62
+ if (disableWidthCalculation)
63
+ return;
61
64
  if (!tableRef.current)
62
65
  return;
63
66
  const resizeObserver = new ResizeObserver(() => {
64
67
  if (!tableRef.current)
65
68
  return;
66
- const tableWidth = tableRef.current?.clientWidth ?? 0;
67
- tableRef.current.style.cssText = `${tableWidthCSSVar}: ${tableWidth}px`;
69
+ updateTableWidth(tableRef.current);
68
70
  });
69
- // Observe the table for size changes
70
71
  resizeObserver.observe(tableRef.current);
71
- // Cleanup on unmount
72
72
  return () => {
73
73
  resizeObserver.disconnect();
74
74
  };
75
- }, []);
75
+ }, [disableWidthCalculation]);
76
76
  useEffect(() => {
77
77
  if (AddComment && !addCommentEnabled) {
78
78
  setAddCommentEnabled(true);
@@ -83,36 +83,36 @@ const CodeDiffViewer = ({ id, AddComment, className, style, }) => {
83
83
  }, [AddComment, addCommentEnabled, setAddCommentEnabled]);
84
84
  return (_jsx("div", { id: id, style: style, className: [componentCssClassName, className, isCollapsed && "collapsed"]
85
85
  .filter(Boolean)
86
- .join(" "), children: diff.hunks.map((hunk, hunkIndex) => {
87
- // We'll track the counters for old and new lines
88
- // as we iterate through each hunk.
89
- let oldLineCounter = hunk.oldStart;
90
- let newLineCounter = hunk.newStart;
91
- return (_jsx("div", { className: "diff-hunk", children: _jsx("table", { className: "diff-table", ref: tableRef, tabIndex: -1, children: _jsxs("tbody", { children: [_jsx(DiffLine, { type: "hunk", hunkHeader: hunk.header }), hunk.lines.map((line, lineIndex) => {
92
- let lineNum1 = null;
93
- let lineNum2 = null;
94
- if (line.type === "remove") {
95
- // Only the old line number advances
96
- lineNum1 = oldLineCounter++;
97
- }
98
- else if (line.type === "add") {
99
- // Only the new line number advances
100
- lineNum2 = newLineCounter++;
101
- }
102
- else {
103
- // context line => both lines advance
104
- lineNum1 = oldLineCounter++;
105
- lineNum2 = newLineCounter++;
106
- }
107
- const lineNumber = lineNum2 || lineNum1 || 0;
108
- // For rendering, if lineNum1 or lineNum2 is null,
109
- // you can display e.g. '+' or '-' or an empty cell.
110
- return (_jsxs(Fragment, { children: [_jsx(DiffLine, { lineNum1: lineNum1, lineNum2: lineNum2, content: highlightedLines[hunkIndex][lineIndex], type: line.type }), lineNum2 && lineDecorations?.[lineNum2] && (_jsx("tr", { className: "line-decoration", children: _jsx("td", { className: "container", children: lineDecorations[lineNum2] }) })), lineNum2 &&
111
- AddComment &&
112
- addCommentOpenLocations.has(lineNum2) && (_jsx("tr", { className: "line-decoration", children: _jsx("td", { className: "container", children: _jsx(AddComment, { lineNumber: lineNumber, onClose: () => toggleAddCommentLocation(lineNumber) }) }) }))] }, `${diff.oldPath}-${hunkIndex}-${lineIndex}`));
113
- })] }) }) }, `${diff.oldPath}-${hunkIndex}`));
114
- }) }));
86
+ .join(" "), children: _jsx("div", { className: "diff-hunk", children: _jsx("table", { className: "diff-table", ref: tableRef, tabIndex: -1, children: _jsx("tbody", { children: diff.hunks.map((hunk, hunkIndex) => {
87
+ // We'll track the counters for old and new lines
88
+ // as we iterate through each hunk.
89
+ let oldLineCounter = hunk.oldStart;
90
+ let newLineCounter = hunk.newStart;
91
+ return (_jsxs(Fragment, { children: [_jsx(DiffLine, { type: "hunk", hunkHeader: hunk.header }), hunk.lines.map((line, lineIndex) => {
92
+ let lineNum1 = null;
93
+ let lineNum2 = null;
94
+ if (line.type === "remove") {
95
+ // Only the old line number advances
96
+ lineNum1 = oldLineCounter++;
97
+ }
98
+ else if (line.type === "add") {
99
+ // Only the new line number advances
100
+ lineNum2 = newLineCounter++;
101
+ }
102
+ else {
103
+ // context line => both lines advance
104
+ lineNum1 = oldLineCounter++;
105
+ lineNum2 = newLineCounter++;
106
+ }
107
+ const lineNumber = lineNum2 || lineNum1 || 0;
108
+ // For rendering, if lineNum1 or lineNum2 is null,
109
+ // you can display e.g. '+' or '-' or an empty cell.
110
+ return (_jsxs(Fragment, { children: [_jsx(DiffLine, { lineNum1: lineNum1, lineNum2: lineNum2, content: highlightedLines[hunkIndex][lineIndex], type: line.type }), lineNum2 && lineDecorations?.[lineNum2] && (_jsx("tr", { className: "line-decoration", children: _jsx("td", { className: "container", children: lineDecorations[lineNum2] }) })), lineNum2 &&
111
+ AddComment &&
112
+ addCommentOpenLocations.has(lineNum2) && (_jsx("tr", { className: "line-decoration", children: _jsx("td", { className: "container", children: _jsx(AddComment, { lineNumber: lineNumber, onClose: () => toggleAddCommentLocation(lineNumber) }) }) }))] }, `${diff.oldPath}-${hunkIndex}-${lineIndex}`));
113
+ })] }, `${diff.oldPath}-${hunkIndex}`));
114
+ }) }) }) }) }));
115
115
  };
116
116
  CodeDiffViewer.displayName = "GitDiffViewer.CodeDiff";
117
- export default CodeDiffViewer;
117
+ export default forwardRef(CodeDiffViewer);
118
118
  //# sourceMappingURL=CodeDiffViewer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodeDiffViewer.js","sourceRoot":"","sources":["../../../../../../src/ui/GitDiffViewer/common/CodeDiffViewer/CodeDiffViewer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CodeDiffViewer.js","sourceRoot":"","sources":["../../../../../../src/ui/GitDiffViewer/common/CodeDiffViewer/CodeDiffViewer.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,OAAO,EACP,MAAM,GACP,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,cAAc,CAAC;AACtB,uFAAuF;AACvF,OAAO,IAAI,MAAM,cAAc,CAAC;AAChC,OAAO,qBAAqB,CAAC;AAE7B,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAE3D,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,cAAc,GAAG,CACrB,EACE,EAAE,EACF,UAAU,EACV,SAAS,EACT,KAAK,EACL,uBAAuB,GAAG,KAAK,GACX,EACtB,GAAgC,EACL,EAAE;IAC7B,MAAM,EACJ,WAAW,EACX,IAAI,EACJ,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,GAChB,GAAG,gBAAgB,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEhD,sCAAsC;IACtC,2CAA2C;IAC3C,6DAA6D;IAC7D,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,MAAM,SAAS,GAAG,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACjD,MAAM,OAAO,GAA8B;YACzC,EAAE,EAAE,YAAY;YAChB,GAAG,EAAE,YAAY;YACjB,EAAE,EAAE,YAAY;YAChB,GAAG,EAAE,YAAY;YACjB,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK;YACX,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,MAAM;YACZ,8BAA8B;SAC/B,CAAC;QACF,OAAO,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,WAAW,CAAC;IACjD,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpB,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,IAAY,EAAE,EAAE;QACf,IAAI,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC;IAC/D,CAAC,EACD,CAAC,gBAAgB,CAAC,CACnB,CAAC;IAEF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QAErB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC7B,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAEtB,mBAAmB,CACjB,GAAG,EACH,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CACvB,CAAC;IAEF;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE;QACb,YAAY;QACZ,IAAI,OAAO,cAAc,KAAK,WAAW;YAAE,OAAO;QAClD,IAAI,uBAAuB;YAAE,OAAO;QACpC,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAO;QAE9B,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE;YAC7C,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,OAAO;YAC9B,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEzC,OAAO,GAAG,EAAE;YACV,cAAc,CAAC,UAAU,EAAE,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAE9B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,CAAC,UAAU,IAAI,iBAAiB,EAAE,CAAC;YAC5C,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAE1D,OAAO,CACL,cACE,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,CAAC,qBAAqB,EAAE,SAAS,EAAE,WAAW,IAAI,WAAW,CAAC;aACtE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,YAEZ,cAAK,SAAS,EAAC,WAAW,YACxB,gBAAO,SAAS,EAAC,YAAY,EAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,YACvD,0BACG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;wBAClC,iDAAiD;wBACjD,mCAAmC;wBACnC,IAAI,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;wBACnC,IAAI,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;wBAEnC,OAAO,CACL,MAAC,QAAQ,eAEP,KAAC,QAAQ,IAAC,IAAI,EAAC,MAAM,EAAC,UAAU,EAAE,IAAI,CAAC,MAAM,GAAI,EAEhD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;oCAClC,IAAI,QAAQ,GAAkB,IAAI,CAAC;oCACnC,IAAI,QAAQ,GAAkB,IAAI,CAAC;oCAEnC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wCAC3B,oCAAoC;wCACpC,QAAQ,GAAG,cAAc,EAAE,CAAC;oCAC9B,CAAC;yCAAM,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;wCAC/B,oCAAoC;wCACpC,QAAQ,GAAG,cAAc,EAAE,CAAC;oCAC9B,CAAC;yCAAM,CAAC;wCACN,qCAAqC;wCACrC,QAAQ,GAAG,cAAc,EAAE,CAAC;wCAC5B,QAAQ,GAAG,cAAc,EAAE,CAAC;oCAC9B,CAAC;oCAED,MAAM,UAAU,GAAG,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC;oCAE7C,kDAAkD;oCAClD,oDAAoD;oCACpD,OAAO,CACL,MAAC,QAAQ,eAIP,KAAC,QAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAC/C,IAAI,EAAE,IAAI,CAAC,IAAI,GACf,EAED,QAAQ,IAAI,eAAe,EAAE,CAAC,QAAQ,CAAC,IAAI,CAC1C,aAAI,SAAS,EAAC,iBAAiB,YAC7B,aAAI,SAAS,EAAC,WAAW,YACtB,eAAe,CAAC,QAAQ,CAAC,GACvB,GACF,CACN,EAGA,QAAQ;gDACP,UAAU;gDACV,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CACvC,aAAI,SAAS,EAAC,iBAAiB,YAC7B,aAAI,SAAS,EAAC,WAAW,YACvB,KAAC,UAAU,IACT,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,GAAG,EAAE,CACZ,wBAAwB,CAAC,UAAU,CAAC,GAEtC,GACC,GACF,CACN,KAhCE,GAAG,IAAI,CAAC,OAAO,IAAI,SAAS,IAAI,SAAS,EAAE,CAiCvC,CACZ,CAAC;gCACJ,CAAC,CAAC,KA7DW,GAAG,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE,CA8DlC,CACZ,CAAC;oBACJ,CAAC,CAAC,GACI,GACF,GACJ,GACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,cAAc,CAAC,WAAW,GAAG,wBAAwB,CAAC;AAEtD,eAAe,UAAU,CAAC,cAAc,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const tableWidthCSSVar = "--table-width";
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../src/ui/GitDiffViewer/common/CodeDiffViewer/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { tableWidthCSSVar } from "../constants.js";
2
+ export const updateTableWidth = (table) => {
3
+ table.style.cssText = `${tableWidthCSSVar}: ${table.clientWidth}px`;
4
+ };
5
+ export default updateTableWidth;
6
+ //# sourceMappingURL=updateTableWidth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateTableWidth.js","sourceRoot":"","sources":["../../../../../../../src/ui/GitDiffViewer/common/CodeDiffViewer/utils/updateTableWidth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAuB,EAAE,EAAE;IAC1D,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,gBAAgB,KAAK,KAAK,CAAC,WAAW,IAAI,CAAC;AACtE,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1,16 +1,7 @@
1
1
  import type React from "react";
2
2
  import "./styles.css";
3
- import type { CodeDiffViewerProps } from "./types.js";
4
3
  import "./HighlighTheme.css";
5
- /**
6
- * Displays a diff in a table format with line numbers and syntax highlighting.
7
- * With option to add comments to specific lines and interactive gutter for adding comments.
8
- *
9
- * @returns {React.ReactElement} - Rendered CodeDiffViewer
10
- */
11
- declare const CodeDiffViewer: {
12
- ({ id, AddComment, className, style, }: CodeDiffViewerProps): React.ReactElement | null;
13
- displayName: string;
14
- };
15
- export default CodeDiffViewer;
4
+ import type { CodeDiffViewerProps } from "./types.js";
5
+ declare const _default: React.ForwardRefExoticComponent<CodeDiffViewerProps & React.RefAttributes<HTMLTableElement>>;
6
+ export default _default;
16
7
  //# sourceMappingURL=CodeDiffViewer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodeDiffViewer.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/GitDiffViewer/common/CodeDiffViewer/CodeDiffViewer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,qBAAqB,CAAC;AAM7B;;;;;GAKG;AACH,QAAA,MAAM,cAAc;4CAKjB,mBAAmB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI;;CAuKjD,CAAC;AAIF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"CodeDiffViewer.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/GitDiffViewer/common/CodeDiffViewer/CodeDiffViewer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,cAAc,CAAC;AAGtB,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;;AAsMtD,wBAA0C"}
@@ -0,0 +1,2 @@
1
+ export declare const tableWidthCSSVar = "--table-width";
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/GitDiffViewer/common/CodeDiffViewer/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,kBAAkB,CAAC"}
@@ -14,5 +14,14 @@ export type CodeDiffViewerProps = {
14
14
  AddComment?: CodeDiffViewerAddComment;
15
15
  /** Inline styles */
16
16
  style?: React.CSSProperties;
17
+ /**
18
+ * Disable width calculation for the table (default: false).
19
+ * This is useful when there is multiple instances of this component on the same page.
20
+ * To avoid doing the same width calculation for each instance separately.
21
+ *
22
+ * Instead, ref the table element and set the width on the parent element.
23
+ * To update the table width, call the `utils/updateTableWidth` function.
24
+ */
25
+ disableWidthCalculation?: boolean;
17
26
  };
18
27
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/GitDiffViewer/common/CodeDiffViewer/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,KAAK,KAAK,CAAC,SAAS,CAAC;AAEtB,MAAM,MAAM,mBAAmB,GAAG;IAChC,iDAAiD;IACjD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/GitDiffViewer/common/CodeDiffViewer/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,KAAK,KAAK,CAAC,SAAS,CAAC;AAEtB,MAAM,MAAM,mBAAmB,GAAG;IAChC,iDAAiD;IACjD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAE5B;;;;;;;OAOG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const updateTableWidth: (table: HTMLTableElement) => void;
2
+ export default updateTableWidth;
3
+ //# sourceMappingURL=updateTableWidth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateTableWidth.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/GitDiffViewer/common/CodeDiffViewer/utils/updateTableWidth.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,GAAI,OAAO,gBAAgB,SAEvD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -71,7 +71,7 @@ export type DiffFile = {
71
71
  };
72
72
  export type GitDiffViewerComponent = ((props: ProviderOptions) => React.ReactElement) & {
73
73
  FileHeader: (props: FileHeaderProps) => React.ReactElement | null;
74
- CodeDiffViewer: (props: CodeDiffViewerProps) => React.ReactElement | null;
74
+ CodeDiffViewer: React.ForwardRefExoticComponent<CodeDiffViewerProps & React.RefAttributes<HTMLTableElement>>;
75
75
  };
76
76
  export {};
77
77
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ui/GitDiffViewer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,gBAAgB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;OAKG;IACH,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;CACtD,CAAC;AAEF,KAAK,kBAAkB,GAAG,qBAAqB,GAC7C,WAAW,GACX,eAAe,GACf,SAAS,CAAC,cAAc,CAAC,CAAC;AAE5B,KAAK,qBAAqB,GAAG;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,uBAAuB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,wBAAwB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,qBAAqB,CAAC;AAExE,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,GAAG,kBAAkB,CAAC;AAEvB,MAAM,MAAM,IAAI,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QACL,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;QACnC,OAAO,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,eAAe,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CACpC,KAAK,EAAE,eAAe,KACnB,KAAK,CAAC,YAAY,CAAC,GAAG;IACzB,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IAClE,cAAc,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;CAC3E,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ui/GitDiffViewer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,gBAAgB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;OAKG;IACH,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;CACtD,CAAC;AAEF,KAAK,kBAAkB,GAAG,qBAAqB,GAC7C,WAAW,GACX,eAAe,GACf,SAAS,CAAC,cAAc,CAAC,CAAC;AAE5B,KAAK,qBAAqB,GAAG;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,uBAAuB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,wBAAwB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,qBAAqB,CAAC;AAExE,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,GAAG,kBAAkB,CAAC;AAEvB,MAAM,MAAM,IAAI,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QACL,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;QACnC,OAAO,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,eAAe,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CACpC,KAAK,EAAE,eAAe,KACnB,KAAK,CAAC,YAAY,CAAC,GAAG;IACzB,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IAClE,cAAc,EAAE,KAAK,CAAC,yBAAyB,CAC7C,mBAAmB,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAC5D,CAAC;CACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canonical/react-ds-app-launchpad",
3
- "version": "0.9.0-experimental.14",
3
+ "version": "0.9.0-experimental.15",
4
4
  "type": "module",
5
5
  "module": "dist/esm/index.js",
6
6
  "types": "dist/types/index.d.ts",
@@ -73,5 +73,5 @@
73
73
  "vite-tsconfig-paths": "^5.1.4",
74
74
  "vitest": "^3.0.9"
75
75
  },
76
- "gitHead": "cfee7df155bf923b05562013a7e61f3b92c2eccb"
76
+ "gitHead": "29995fa79e2db8cf4e30994e0ba513570827f87f"
77
77
  }