@astryxdesign/lab 0.7.5-canary.d76a228 → 0.7.5-canary.dbcfc30
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/dist/Chat/ChatUnreadDivider.js +1 -1
- package/dist/CircularProgress/CircularProgress.js +3 -3
- package/dist/DiffViewer/DiffViewer.d.ts +15 -4
- package/dist/DiffViewer/DiffViewer.d.ts.map +1 -1
- package/dist/DiffViewer/DiffViewer.js +31 -6
- package/dist/ListInput/ListInput.d.ts.map +1 -1
- package/dist/ListInput/ListInput.js +19 -0
- package/dist/LogStream/LogStream.d.ts.map +1 -1
- package/dist/LogStream/LogStream.js +2 -2
- package/dist/SVGIcon/SVGIcon.js +3 -3
- package/dist/Stat/Stat.js +2 -2
- package/dist/TransferList/TransferList.d.ts.map +1 -1
- package/dist/TransferList/TransferList.js +20 -0
- package/dist/lab.css +10 -9
- package/dist/reorderStyles.d.ts +2 -2
- package/dist/reorderStyles.d.ts.map +1 -1
- package/dist/reorderStyles.js +2 -2
- package/package.json +7 -7
- package/src/Chat/ChatUnreadDivider.tsx +1 -1
- package/src/Chat/__tests__/ChatTypingIndicator.a11y.chromium.spec.ts +1 -0
- package/src/CircularProgress/CircularProgress.tsx +3 -3
- package/src/CircularProgress/__tests__/CircularProgress.a11y.chromium.spec.ts +1 -0
- package/src/Comments/Comments.test.tsx +10 -4
- package/src/DiffViewer/DiffViewer.doc.mjs +8 -2
- package/src/DiffViewer/DiffViewer.test.tsx +71 -0
- package/src/DiffViewer/DiffViewer.tsx +52 -9
- package/src/InfoTip/InfoTip.test.tsx +9 -4
- package/src/ListInput/ListInput.test.tsx +43 -3
- package/src/ListInput/ListInput.tsx +23 -0
- package/src/LogStream/LogStream.doc.mjs +1 -1
- package/src/LogStream/LogStream.tsx +3 -5
- package/src/MobileTokenizer/MobileTokenizer.test.tsx +12 -3
- package/src/SVGIcon/SVGIcon.tsx +3 -3
- package/src/Stat/Stat.tsx +2 -2
- package/src/TransferList/TransferList.composition.test.tsx +4 -4
- package/src/TransferList/TransferList.test.tsx +36 -0
- package/src/TransferList/TransferList.tsx +24 -0
- package/src/TransferList/TransferListSelector.test.tsx +4 -4
- package/src/__tests__/ReorderGripPinchZoom.a11y.chromium.spec.ts +178 -0
- package/src/reorderStyles.ts +7 -2
|
@@ -106,15 +106,15 @@ const variantStyles = {
|
|
|
106
106
|
$$css: true
|
|
107
107
|
},
|
|
108
108
|
success: {
|
|
109
|
-
kjVXCG: "
|
|
109
|
+
kjVXCG: "x88o7k4",
|
|
110
110
|
$$css: true
|
|
111
111
|
},
|
|
112
112
|
warning: {
|
|
113
|
-
kjVXCG: "
|
|
113
|
+
kjVXCG: "x16d96h5",
|
|
114
114
|
$$css: true
|
|
115
115
|
},
|
|
116
116
|
error: {
|
|
117
|
-
kjVXCG: "
|
|
117
|
+
kjVXCG: "xqb94c9",
|
|
118
118
|
$$css: true
|
|
119
119
|
},
|
|
120
120
|
neutral: {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type MouseEvent, type ReactNode, type Ref } from 'react';
|
|
2
2
|
import type { BaseProps } from '@astryxdesign/core';
|
|
3
|
+
import { type CodeLanguage } from '@astryxdesign/core/CodeBlock';
|
|
3
4
|
import { type SyntaxThemeDefinition } from '@astryxdesign/core/theme/syntax';
|
|
4
5
|
import type { DiffViewerFile, DiffViewerLineRef } from './diffTypes.js';
|
|
5
6
|
/** How hunks are laid out: one column, or old and new side by side. */
|
|
@@ -34,10 +35,20 @@ export interface DiffViewerProps extends BaseProps<HTMLDivElement> {
|
|
|
34
35
|
*/
|
|
35
36
|
viewMode?: DiffViewerViewMode;
|
|
36
37
|
/**
|
|
37
|
-
* Syntax-highlighting language
|
|
38
|
-
*
|
|
38
|
+
* Syntax-highlighting language: a built-in identifier such as `'rust'`, or
|
|
39
|
+
* a language value — a module imported on its own, such as `graphql` from
|
|
40
|
+
* `@astryxdesign/core/CodeBlock/languages/graphql`, or one made with
|
|
41
|
+
* `createCodeLanguage`. Defaults to one inferred from the file's name or
|
|
42
|
+
* extension among the built-ins and `codeLanguages`; an unmatched file
|
|
43
|
+
* renders as plain text.
|
|
39
44
|
*/
|
|
40
|
-
language?: string;
|
|
45
|
+
language?: string | CodeLanguage;
|
|
46
|
+
/**
|
|
47
|
+
* Language values the file's name or extension may infer, such as
|
|
48
|
+
* `[graphql, dockerfile]`; a later entry wins. Pass the same list to every
|
|
49
|
+
* DiffViewer on a review page.
|
|
50
|
+
*/
|
|
51
|
+
codeLanguages?: ReadonlyArray<CodeLanguage>;
|
|
41
52
|
/**
|
|
42
53
|
* Show the old and new line-number gutters.
|
|
43
54
|
* @default true
|
|
@@ -125,7 +136,7 @@ export interface DiffViewerProps extends BaseProps<HTMLDivElement> {
|
|
|
125
136
|
* <DiffViewer file={file} viewMode="split" />
|
|
126
137
|
* ```
|
|
127
138
|
*/
|
|
128
|
-
export declare function DiffViewer({ ref, file, viewMode, language: languageProp, hasLineNumbers, isWrapped, changeIndicator, inlineHighlight, hasChangeBackground, isCollapsible, isCollapsed: isCollapsedProp, defaultIsCollapsed, onCollapsedChange, headerEnd, renderLineAnnotation, onLineNumberClick, maxHeight, syntaxTheme, xstyle, className, style, ...props }: DiffViewerProps): import("react").JSX.Element;
|
|
139
|
+
export declare function DiffViewer({ ref, file, viewMode, language: languageProp, codeLanguages, hasLineNumbers, isWrapped, changeIndicator, inlineHighlight, hasChangeBackground, isCollapsible, isCollapsed: isCollapsedProp, defaultIsCollapsed, onCollapsedChange, headerEnd, renderLineAnnotation, onLineNumberClick, maxHeight, syntaxTheme, xstyle, className, style, ...props }: DiffViewerProps): import("react").JSX.Element;
|
|
129
140
|
export declare namespace DiffViewer {
|
|
130
141
|
var displayName: string;
|
|
131
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiffViewer.d.ts","sourceRoot":"","sources":["../../src/DiffViewer/DiffViewer.tsx"],"names":[],"mappings":"AAqCA,OAAO,EAQL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,GAAG,EAET,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"DiffViewer.d.ts","sourceRoot":"","sources":["../../src/DiffViewer/DiffViewer.tsx"],"names":[],"mappings":"AAqCA,OAAO,EAQL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,GAAG,EAET,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAGL,KAAK,YAAY,EAGlB,MAAM,8BAA8B,CAAC;AAOtC,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,iCAAiC,CAAC;AAqBzC,OAAO,KAAK,EACV,cAAc,EAGd,iBAAiB,EAElB,MAAM,aAAa,CAAC;AAGrB,uEAAuE;AACvE,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpE;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjE,MAAM,WAAW,eAAgB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChE,yCAAyC;IACzC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1B;;;OAGG;IACH,IAAI,EAAE,cAAc,CAAC;IACrB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IACjC;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAC5C;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C;;;;;OAKG;IACH,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,SAAS,CAAC;IAC7D;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,CAClB,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KACjC,IAAI,CAAC;IACV,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC;AAi2BD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,EACzB,GAAG,EACH,IAAI,EACJ,QAAoB,EACpB,QAAQ,EAAE,YAAY,EACtB,aAAa,EACb,cAAqB,EACrB,SAAiB,EACjB,eAA2B,EAC3B,eAAwB,EACxB,mBAA0B,EAC1B,aAAoB,EACpB,WAAW,EAAE,eAAe,EAC5B,kBAA0B,EAC1B,iBAAiB,EACjB,SAAS,EACT,oBAAoB,EACpB,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,eAAe,+BAopBjB;yBA5qBe,UAAU"}
|
|
@@ -92,18 +92,42 @@ const EXTENSION_LANGUAGES = {
|
|
|
92
92
|
yaml: 'yaml',
|
|
93
93
|
yml: 'yaml',
|
|
94
94
|
md: 'markdown',
|
|
95
|
-
markdown: 'markdown'
|
|
95
|
+
markdown: 'markdown',
|
|
96
|
+
c: 'c',
|
|
97
|
+
h: 'c',
|
|
98
|
+
cpp: 'cpp',
|
|
99
|
+
cc: 'cpp',
|
|
100
|
+
cxx: 'cpp',
|
|
101
|
+
hpp: 'cpp',
|
|
102
|
+
hh: 'cpp',
|
|
103
|
+
sql: 'sql',
|
|
104
|
+
rs: 'rust',
|
|
105
|
+
kt: 'kotlin',
|
|
106
|
+
kts: 'kotlin',
|
|
107
|
+
swift: 'swift',
|
|
108
|
+
go: 'go'
|
|
96
109
|
};
|
|
97
|
-
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* The language a file's name or extension infers: a listed value first (a
|
|
113
|
+
* later entry wins), then a built-in, else plain text (CodeBlock FR13).
|
|
114
|
+
*/
|
|
115
|
+
function inferLanguage(path, codeLanguages) {
|
|
98
116
|
if (path == null) {
|
|
99
117
|
return 'plaintext';
|
|
100
118
|
}
|
|
101
119
|
const base = path.slice(path.lastIndexOf('/') + 1);
|
|
102
120
|
const dot = base.lastIndexOf('.');
|
|
103
|
-
|
|
104
|
-
|
|
121
|
+
const extension = dot > 0 ? base.slice(dot + 1).toLowerCase() : null;
|
|
122
|
+
if (codeLanguages != null) {
|
|
123
|
+
for (let i = codeLanguages.length - 1; i >= 0; i--) {
|
|
124
|
+
const language = codeLanguages[i];
|
|
125
|
+
if (language.fileNames.includes(base) || extension != null && language.fileExtensions.includes(extension)) {
|
|
126
|
+
return language;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
105
129
|
}
|
|
106
|
-
return EXTENSION_LANGUAGES[
|
|
130
|
+
return extension == null ? 'plaintext' : EXTENSION_LANGUAGES[extension] ?? 'plaintext';
|
|
107
131
|
}
|
|
108
132
|
|
|
109
133
|
// ---------------------------------------------------------------------------
|
|
@@ -698,6 +722,7 @@ export function DiffViewer({
|
|
|
698
722
|
file,
|
|
699
723
|
viewMode = 'unified',
|
|
700
724
|
language: languageProp,
|
|
725
|
+
codeLanguages,
|
|
701
726
|
hasLineNumbers = true,
|
|
702
727
|
isWrapped = false,
|
|
703
728
|
changeIndicator = 'classic',
|
|
@@ -723,7 +748,7 @@ export function DiffViewer({
|
|
|
723
748
|
ensureHighlightStyles();
|
|
724
749
|
}, []);
|
|
725
750
|
const path = file.newPath ?? file.oldPath;
|
|
726
|
-
const language = languageProp ?? inferLanguage(path);
|
|
751
|
+
const language = languageProp ?? inferLanguage(path, codeLanguages);
|
|
727
752
|
const displayPath = file.status === 'renamed' && file.oldPath != null && file.newPath != null ? t('@astryx.diffViewer.renamedPath', {
|
|
728
753
|
oldPath: file.oldPath,
|
|
729
754
|
newPath: file.newPath
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListInput.d.ts","sourceRoot":"","sources":["../../src/ListInput/ListInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAOL,KAAK,GAAG,EACR,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAQ,KAAK,WAAW,EAAC,MAAM,0BAA0B,CAAC;AAYjE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,0BAA0B,CAAC;AAiB1D,MAAM,MAAM,eAAe,CAAC,CAAC,IACzB;IAAC,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GACrC;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;IACR,YAAY,EAAE,CAAC,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GACxC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAAC;AAEnE,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,sBAAsB;IACtB,IAAI,EAAE,CAAC,CAAC;IACR,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC,CAAE,SAAQ,qBAAqB,CAAC,CAAC,CAAC;IACzE,uDAAuD;IACvD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gFAAgF;IAChF,aAAa,EAAE,SAAS,CAAC;IACzB,uDAAuD;IACvD,UAAU,EAAE,OAAO,CAAC;IACpB,6DAA6D;IAC7D,SAAS,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,iDAAiD;IACjD,WAAW,EAAE,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;CAChE;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,CAAE,SAAQ,IAAI,CAC7C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,gDAAgD;IAChD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,gFAAgF;IAChF,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC/D,kEAAkE;IAClE,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC;IAC7B,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC,CAAC;IACpB,6CAA6C;IAC7C,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IACpE,gEAAgE;IAChE,cAAc,CAAC,EAAE,CACf,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,KACV,WAAW,GAAG,SAAS,CAAC;IAC7B,0EAA0E;IAC1E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA6dD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAC3B,KAAK,EACL,WAAW,EACX,KAAK,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,OAAO,EACP,QAAiB,EACjB,MAAM,EACN,aAAa,EACb,cAAc,EACd,aAAqB,EACrB,UAAkB,EAClB,SAAiB,EACjB,QAAQ,EACR,aAAqB,EACrB,UAAkB,EAClB,UAAkB,EAClB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"ListInput.d.ts","sourceRoot":"","sources":["../../src/ListInput/ListInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -476,6 +476,25 @@ export function ListInput({
|
|
|
476
476
|
announce(t('@astryx.listInput.announceReorderCancelled'));
|
|
477
477
|
}
|
|
478
478
|
}, [isDisabled, isLoading, announce, t]);
|
|
479
|
+
|
|
480
|
+
// A second pointer that lands anywhere during a pointer reorder (the second
|
|
481
|
+
// finger of a pinch) cancels the reorder. A pinch whose first finger slid
|
|
482
|
+
// first zooms without a pointercancel, so the drag would otherwise commit on
|
|
483
|
+
// release and drop the row at the end of the list.
|
|
484
|
+
useEffect(() => {
|
|
485
|
+
if (!isPointerReorderActive) {
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
const onPointerDown = event => {
|
|
489
|
+
const activeState = reorderStateRef.current;
|
|
490
|
+
if (activeState?.mode === 'pointer' && activeState.pointerId !== event.pointerId) {
|
|
491
|
+
setReorderState(null);
|
|
492
|
+
announce(t('@astryx.listInput.announceReorderCancelled'));
|
|
493
|
+
}
|
|
494
|
+
};
|
|
495
|
+
document.addEventListener('pointerdown', onPointerDown, true);
|
|
496
|
+
return () => document.removeEventListener('pointerdown', onPointerDown, true);
|
|
497
|
+
}, [isPointerReorderActive, announce, t]);
|
|
479
498
|
useEffect(() => {
|
|
480
499
|
const activeAnimations = activeMutationAnimationsRef.current;
|
|
481
500
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogStream.d.ts","sourceRoot":"","sources":["../../src/LogStream/LogStream.tsx"],"names":[],"mappings":"AAyBA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAkBlD,iCAAiC;AACjC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjE,0EAA0E;AAC1E,MAAM,WAAW,QAAQ;IACvB,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,IAAI,CAC1C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,6DAA6D;IAC7D,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,SAAS,CAAC;CAC9C;
|
|
1
|
+
{"version":3,"file":"LogStream.d.ts","sourceRoot":"","sources":["../../src/LogStream/LogStream.tsx"],"names":[],"mappings":"AAyBA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAkBlD,iCAAiC;AACjC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjE,0EAA0E;AAC1E,MAAM,WAAW,QAAQ;IACvB,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,IAAI,CAC1C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,6DAA6D;IAC7D,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,SAAS,CAAC;CAC9C;AAsOD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,OAAmB,EACnB,WAAW,EACX,cAAc,EACd,SAAS,EACT,aAAoB,EACpB,KAAoB,EACpB,WAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,cAAc,+BAqNhB;yBAnOe,SAAS"}
|
|
@@ -164,11 +164,11 @@ const styles = {
|
|
|
164
164
|
$$css: true
|
|
165
165
|
},
|
|
166
166
|
levelWarn: {
|
|
167
|
-
kMwMTN: "
|
|
167
|
+
kMwMTN: "x10h9ou4",
|
|
168
168
|
$$css: true
|
|
169
169
|
},
|
|
170
170
|
levelError: {
|
|
171
|
-
kMwMTN: "
|
|
171
|
+
kMwMTN: "x1wj83wy",
|
|
172
172
|
$$css: true
|
|
173
173
|
},
|
|
174
174
|
levelInfoTerminal: {
|
package/dist/SVGIcon/SVGIcon.js
CHANGED
|
@@ -75,15 +75,15 @@ const colorStyles = {
|
|
|
75
75
|
$$css: true
|
|
76
76
|
},
|
|
77
77
|
positive: {
|
|
78
|
-
kMwMTN: "
|
|
78
|
+
kMwMTN: "x1vau044",
|
|
79
79
|
$$css: true
|
|
80
80
|
},
|
|
81
81
|
negative: {
|
|
82
|
-
kMwMTN: "
|
|
82
|
+
kMwMTN: "xskb5cx",
|
|
83
83
|
$$css: true
|
|
84
84
|
},
|
|
85
85
|
warning: {
|
|
86
|
-
kMwMTN: "
|
|
86
|
+
kMwMTN: "x4z9hng",
|
|
87
87
|
$$css: true
|
|
88
88
|
},
|
|
89
89
|
inherit: {
|
package/dist/Stat/Stat.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransferList.d.ts","sourceRoot":"","sources":["../../src/TransferList/TransferList.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TransferList.d.ts","sourceRoot":"","sources":["../../src/TransferList/TransferList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -655,6 +655,26 @@ export function TransferList({
|
|
|
655
655
|
event.currentTarget.releasePointerCapture?.(event.pointerId);
|
|
656
656
|
}
|
|
657
657
|
}, [finishReorder]);
|
|
658
|
+
|
|
659
|
+
// A second pointer that lands anywhere during a pointer reorder (the second
|
|
660
|
+
// finger of a pinch) cancels the reorder. A pinch whose first finger slid
|
|
661
|
+
// first zooms without a pointercancel, so the drag would otherwise commit on
|
|
662
|
+
// release and drop the row at the end of the list.
|
|
663
|
+
const isPointerReorderActive = previewCloneValue != null;
|
|
664
|
+
useEffect(() => {
|
|
665
|
+
if (!isPointerReorderActive) {
|
|
666
|
+
return;
|
|
667
|
+
}
|
|
668
|
+
const onPointerDown = event => {
|
|
669
|
+
const session = reorderSessionRef.current;
|
|
670
|
+
if (session?.mode === 'pointer' && session.pointerId !== event.pointerId) {
|
|
671
|
+
suppressClickRef.current = false;
|
|
672
|
+
finishReorder(true);
|
|
673
|
+
}
|
|
674
|
+
};
|
|
675
|
+
document.addEventListener('pointerdown', onPointerDown, true);
|
|
676
|
+
return () => document.removeEventListener('pointerdown', onPointerDown, true);
|
|
677
|
+
}, [isPointerReorderActive, finishReorder]);
|
|
658
678
|
const handleSearch = useCallback(nextQuery => {
|
|
659
679
|
setQuery(nextQuery);
|
|
660
680
|
const normalized = nextQuery.trim().toLowerCase();
|
package/dist/lab.css
CHANGED
|
@@ -337,16 +337,15 @@
|
|
|
337
337
|
.x1s4jh2n:not(#\#):not(#\#):not(#\#){color:color-mix(in srgb,var(--color-text-teal) 52%,var(--color-text-secondary))}
|
|
338
338
|
.x1wzna5w:not(#\#):not(#\#):not(#\#){color:color-mix(in srgb,var(--color-text-yellow) 52%,var(--color-text-secondary))}
|
|
339
339
|
.x1heor9g:not(#\#):not(#\#):not(#\#){color:inherit}
|
|
340
|
-
.xuj0v0c:not(#\#):not(#\#):not(#\#){color:light-dark(color-mix(in srgb,var(--color-warning) 58%,black),var(--color-warning))}
|
|
341
|
-
.x1lenag:not(#\#):not(#\#):not(#\#){color:light-dark(var(--color-error),color-mix(in srgb,var(--color-error) 82%,white))}
|
|
342
340
|
.x19co3pv:not(#\#):not(#\#):not(#\#){color:transparent}
|
|
343
341
|
.xqwr325:not(#\#):not(#\#):not(#\#){color:var(--color-accent)}
|
|
344
|
-
.xjt36v0:not(#\#):not(#\#):not(#\#){color:var(--color-error)}
|
|
345
342
|
.xqa6c3m:not(#\#):not(#\#):not(#\#){color:var(--color-icon-disabled)}
|
|
343
|
+
.xskb5cx:not(#\#):not(#\#):not(#\#){color:var(--color-icon-error)}
|
|
346
344
|
.xtbr613:not(#\#):not(#\#):not(#\#){color:var(--color-icon-primary)}
|
|
347
345
|
.xv9yike:not(#\#):not(#\#):not(#\#){color:var(--color-icon-secondary)}
|
|
346
|
+
.x1vau044:not(#\#):not(#\#):not(#\#){color:var(--color-icon-success)}
|
|
347
|
+
.x4z9hng:not(#\#):not(#\#):not(#\#){color:var(--color-icon-warning)}
|
|
348
348
|
.x17wrial:not(#\#):not(#\#):not(#\#){color:var(--color-on-accent)}
|
|
349
|
-
.xtjic6:not(#\#):not(#\#):not(#\#){color:var(--color-success)}
|
|
350
349
|
.x1wxerb0:not(#\#):not(#\#):not(#\#){color:var(--color-syntax-added-marker)}
|
|
351
350
|
.xt5rlkq:not(#\#):not(#\#):not(#\#){color:var(--color-syntax-punctuation)}
|
|
352
351
|
.x103bwea:not(#\#):not(#\#):not(#\#){color:var(--color-syntax-removed-marker)}
|
|
@@ -355,6 +354,7 @@
|
|
|
355
354
|
.x1vvqiwl:not(#\#):not(#\#):not(#\#){color:var(--color-text-blue)}
|
|
356
355
|
.x1txnczv:not(#\#):not(#\#):not(#\#){color:var(--color-text-cyan)}
|
|
357
356
|
.xnbbluu:not(#\#):not(#\#):not(#\#){color:var(--color-text-disabled)}
|
|
357
|
+
.x1wj83wy:not(#\#):not(#\#):not(#\#){color:var(--color-text-error)}
|
|
358
358
|
.xru1t7f:not(#\#):not(#\#):not(#\#){color:var(--color-text-gray)}
|
|
359
359
|
.xltfdvo:not(#\#):not(#\#):not(#\#){color:var(--color-text-green)}
|
|
360
360
|
.xm47u9q:not(#\#):not(#\#):not(#\#){color:var(--color-text-orange)}
|
|
@@ -363,9 +363,10 @@
|
|
|
363
363
|
.x1m9wyeb:not(#\#):not(#\#):not(#\#){color:var(--color-text-purple)}
|
|
364
364
|
.x1joocv1:not(#\#):not(#\#):not(#\#){color:var(--color-text-red)}
|
|
365
365
|
.xv1l7n4:not(#\#):not(#\#):not(#\#){color:var(--color-text-secondary)}
|
|
366
|
+
.x1caiuuo:not(#\#):not(#\#):not(#\#){color:var(--color-text-success)}
|
|
366
367
|
.x9x0lbs:not(#\#):not(#\#):not(#\#){color:var(--color-text-teal)}
|
|
368
|
+
.x10h9ou4:not(#\#):not(#\#):not(#\#){color:var(--color-text-warning)}
|
|
367
369
|
.xdhq94a:not(#\#):not(#\#):not(#\#){color:var(--color-text-yellow)}
|
|
368
|
-
.xs3pv69:not(#\#):not(#\#):not(#\#){color:var(--color-warning)}
|
|
369
370
|
.x1kihgfc:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-0-5)}
|
|
370
371
|
.x1lfs0n9:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-1)}
|
|
371
372
|
.xak3so:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-2)}
|
|
@@ -528,13 +529,13 @@
|
|
|
528
529
|
.ximx5ud:not(#\#):not(#\#):not(#\#){stroke:var(--color-accent-muted)}
|
|
529
530
|
.xjsr54c:not(#\#):not(#\#):not(#\#){stroke:var(--color-accent)}
|
|
530
531
|
.xjswp7v:not(#\#):not(#\#):not(#\#){stroke:var(--color-error-muted)}
|
|
531
|
-
.x1vco6zm:not(#\#):not(#\#):not(#\#){stroke:var(--color-error)}
|
|
532
532
|
.x1uro670:not(#\#):not(#\#):not(#\#){stroke:var(--color-success-muted)}
|
|
533
|
-
.x8y33gb:not(#\#):not(#\#):not(#\#){stroke:var(--color-success)}
|
|
534
533
|
.xuxf9kk:not(#\#):not(#\#):not(#\#){stroke:var(--color-text-disabled)}
|
|
534
|
+
.xqb94c9:not(#\#):not(#\#):not(#\#){stroke:var(--color-text-error)}
|
|
535
|
+
.x88o7k4:not(#\#):not(#\#):not(#\#){stroke:var(--color-text-success)}
|
|
536
|
+
.x16d96h5:not(#\#):not(#\#):not(#\#){stroke:var(--color-text-warning)}
|
|
535
537
|
.xpi25hw:not(#\#):not(#\#):not(#\#){stroke:var(--color-track)}
|
|
536
538
|
.x1wjzxuj:not(#\#):not(#\#):not(#\#){stroke:var(--color-warning-muted)}
|
|
537
|
-
.x9ezeq1:not(#\#):not(#\#):not(#\#){stroke:var(--color-warning)}
|
|
538
539
|
.xeq4nuv:not(#\#):not(#\#):not(#\#){tab-size:2}
|
|
539
540
|
.x140o2bo:not(#\#):not(#\#):not(#\#){table-layout:fixed}
|
|
540
541
|
.x2b8uid:not(#\#):not(#\#):not(#\#){text-align:center}
|
|
@@ -544,7 +545,7 @@
|
|
|
544
545
|
.xkrqix3:not(#\#):not(#\#):not(#\#){text-decoration-line:none}
|
|
545
546
|
.xlyipyv:not(#\#):not(#\#):not(#\#){text-overflow:ellipsis}
|
|
546
547
|
.xtvhhri:not(#\#):not(#\#):not(#\#){text-transform:uppercase}
|
|
547
|
-
.
|
|
548
|
+
.x1j4r261:not(#\#):not(#\#):not(#\#){touch-action:pinch-zoom}
|
|
548
549
|
.x1bd091l:not(#\#):not(#\#):not(#\#){transform-origin:left bottom}
|
|
549
550
|
.x9tu13d:not(#\#):not(#\#):not(#\#){transform:rotate(-90deg)}
|
|
550
551
|
.x19jd1h0:not(#\#):not(#\#):not(#\#){transform:rotate(180deg)}
|
package/dist/reorderStyles.d.ts
CHANGED
|
@@ -59,11 +59,11 @@ export declare const reorderStyles: Readonly<{
|
|
|
59
59
|
}>;
|
|
60
60
|
readonly handle: Readonly<{
|
|
61
61
|
readonly cursor: stylex.StyleXClassNameFor<"cursor", "default" | "grab">;
|
|
62
|
-
readonly touchAction: stylex.StyleXClassNameFor<"touchAction", "
|
|
62
|
+
readonly touchAction: stylex.StyleXClassNameFor<"touchAction", "pinch-zoom">;
|
|
63
63
|
}>;
|
|
64
64
|
readonly handleActive: Readonly<{
|
|
65
65
|
readonly cursor: stylex.StyleXClassNameFor<"cursor", "default" | "grabbing">;
|
|
66
|
-
readonly touchAction: stylex.StyleXClassNameFor<"touchAction", "
|
|
66
|
+
readonly touchAction: stylex.StyleXClassNameFor<"touchAction", "pinch-zoom">;
|
|
67
67
|
}>;
|
|
68
68
|
}>;
|
|
69
69
|
//# sourceMappingURL=reorderStyles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorderStyles.d.ts","sourceRoot":"","sources":["../src/reorderStyles.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAoB3C;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"reorderStyles.d.ts","sourceRoot":"","sources":["../src/reorderStyles.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAoB3C;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqDxB,CAAC"}
|
package/dist/reorderStyles.js
CHANGED
|
@@ -71,12 +71,12 @@ export const reorderStyles = {
|
|
|
71
71
|
},
|
|
72
72
|
handle: {
|
|
73
73
|
kkrTdU: "x1jm3nie x16khyan",
|
|
74
|
-
kFalU9: "
|
|
74
|
+
kFalU9: "x1j4r261",
|
|
75
75
|
$$css: true
|
|
76
76
|
},
|
|
77
77
|
handleActive: {
|
|
78
78
|
kkrTdU: "xi9pz9s x16khyan",
|
|
79
|
-
kFalU9: "
|
|
79
|
+
kFalU9: "x1j4r261",
|
|
80
80
|
$$css: true
|
|
81
81
|
}
|
|
82
82
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astryxdesign/lab",
|
|
3
|
-
"version": "0.7.5-canary.
|
|
3
|
+
"version": "0.7.5-canary.dbcfc30",
|
|
4
4
|
"description": "Experimental Astryx components — published to npm only under the @canary dist-tag for early testing; never released as a stable (latest) version.",
|
|
5
5
|
"author": "Meta Open Source",
|
|
6
6
|
"license": "MIT",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"@stylexjs/stylex": ">=0.10.0",
|
|
52
|
-
"@astryxdesign/core": "0.7.5-canary.
|
|
52
|
+
"@astryxdesign/core": "0.7.5-canary.dbcfc30",
|
|
53
53
|
"react": ">=19.0.0",
|
|
54
54
|
"react-dom": ">=19.0.0"
|
|
55
55
|
},
|
|
@@ -59,8 +59,8 @@
|
|
|
59
59
|
"d3-shape": "^3.2.0"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
-
"@astryxdesign/a11y-spec": "0.7.5-canary.
|
|
63
|
-
"@astryxdesign/cli": "0.7.5-canary.
|
|
62
|
+
"@astryxdesign/a11y-spec": "0.7.5-canary.dbcfc30",
|
|
63
|
+
"@astryxdesign/cli": "0.7.5-canary.dbcfc30",
|
|
64
64
|
"@babel/cli": "^7.29.7",
|
|
65
65
|
"@babel/core": "^7.29.7",
|
|
66
66
|
"@babel/preset-react": "^7.29.7",
|
|
@@ -74,14 +74,14 @@
|
|
|
74
74
|
},
|
|
75
75
|
"scripts": {
|
|
76
76
|
"build": "node ../../scripts/clean-dist.mjs && pnpm build:esm && tsc --project tsconfig.build.json && node ../../scripts/add-declaration-extensions.mjs && pnpm build:css && node ../../scripts/check-no-dev-jsx.mjs && node ../../scripts/check-fully-specified.mjs",
|
|
77
|
-
"build:esm": "babel src --out-dir dist --extensions .ts,.tsx --out-file-extension .js --ignore \"**/*.test.ts,**/*.test.tsx,**/__tests__/**,**/*.perf.test.*,**/*.doc.mjs,**/*.d.ts,**/*.css,**/*.css.d.ts\" --config-file ./babel.config.
|
|
77
|
+
"build:esm": "babel src --out-dir dist --extensions .ts,.tsx --out-file-extension .js --ignore \"**/*.test.ts,**/*.test.tsx,**/__tests__/**,**/*.perf.test.*,**/*.doc.mjs,**/*.d.ts,**/*.css,**/*.css.d.ts\" --config-file ./babel.config.cjs",
|
|
78
78
|
"build:css": "node ../../scripts/build-css.mjs --package lab",
|
|
79
|
-
"dev": "babel src --watch --out-dir dist --extensions .ts,.tsx --out-file-extension .js --ignore \"**/*.test.*,**/*.doc.mjs,**/*.d.ts,**/*.css*\" --config-file ./babel.config.
|
|
79
|
+
"dev": "babel src --watch --out-dir dist --extensions .ts,.tsx --out-file-extension .js --ignore \"**/*.test.*,**/*.doc.mjs,**/*.d.ts,**/*.css*\" --config-file ./babel.config.cjs",
|
|
80
80
|
"test": "vitest run --root ../..",
|
|
81
81
|
"test:watch": "vitest --root ../..",
|
|
82
82
|
"lint": "eslint src",
|
|
83
83
|
"typecheck:docs": "tsc --project tsconfig.docs.json",
|
|
84
|
-
"typecheck": "tsc --project tsconfig.json --noEmit",
|
|
84
|
+
"typecheck": "tsc --project tsconfig.json --noEmit && pnpm typecheck:docs",
|
|
85
85
|
"generate:emoji-data": "node scripts/generate-emoji-data.mjs"
|
|
86
86
|
}
|
|
87
87
|
}
|
|
@@ -63,7 +63,7 @@ const styles = stylex.create({
|
|
|
63
63
|
fontFamily: typographyVars['--font-family-body'],
|
|
64
64
|
fontSize: typeScaleVars['--text-supporting-size'],
|
|
65
65
|
fontWeight: fontWeightVars['--font-weight-bold'],
|
|
66
|
-
color: colorVars['--color-error'],
|
|
66
|
+
color: colorVars['--color-text-error'],
|
|
67
67
|
lineHeight: typeScaleVars['--text-supporting-leading'],
|
|
68
68
|
},
|
|
69
69
|
});
|
|
@@ -260,13 +260,13 @@ const variantStyles = stylex.create({
|
|
|
260
260
|
stroke: colorVars['--color-accent'],
|
|
261
261
|
},
|
|
262
262
|
success: {
|
|
263
|
-
stroke: colorVars['--color-success'],
|
|
263
|
+
stroke: colorVars['--color-text-success'],
|
|
264
264
|
},
|
|
265
265
|
warning: {
|
|
266
|
-
stroke: colorVars['--color-warning'],
|
|
266
|
+
stroke: colorVars['--color-text-warning'],
|
|
267
267
|
},
|
|
268
268
|
error: {
|
|
269
|
-
stroke: colorVars['--color-error'],
|
|
269
|
+
stroke: colorVars['--color-text-error'],
|
|
270
270
|
},
|
|
271
271
|
neutral: {
|
|
272
272
|
stroke: colorVars['--color-text-disabled'],
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
// @pr-a11y scope ^(internal/a11y-spec/src/patterns/progressbar\.|packages/core/src/ProgressBar/|packages/lab/src/CircularProgress/|apps/storybook/stories/ProgressbarA11y)
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* @file CircularProgress.a11y.chromium.spec.ts
|
|
@@ -82,6 +82,12 @@ import type {
|
|
|
82
82
|
CommentUser,
|
|
83
83
|
} from './types';
|
|
84
84
|
|
|
85
|
+
// The page's shared live regions are not the component's error Banner.
|
|
86
|
+
const errorBanner = () =>
|
|
87
|
+
screen
|
|
88
|
+
.queryAllByRole('alert')
|
|
89
|
+
.find(element => !element.hasAttribute('data-astryx-live-region'));
|
|
90
|
+
|
|
85
91
|
const VIEWER: CommentUser = {id: 'avery', name: 'Avery Kim'};
|
|
86
92
|
const OTHER: CommentUser = {id: 'maya', name: 'Maya Chen'};
|
|
87
93
|
const AGENT: CommentUser = {
|
|
@@ -900,12 +906,12 @@ describe('Comments threads', () => {
|
|
|
900
906
|
}),
|
|
901
907
|
);
|
|
902
908
|
await flush();
|
|
903
|
-
const banner =
|
|
909
|
+
const banner = errorBanner()!;
|
|
904
910
|
expect(banner.textContent).toContain("Your reaction couldn't be saved.");
|
|
905
911
|
await click(within(banner).getByRole('button', {name: 'Retry'}));
|
|
906
912
|
await flush();
|
|
907
913
|
expect(onReact).toHaveBeenCalledTimes(2);
|
|
908
|
-
expect(
|
|
914
|
+
expect(errorBanner()).toBeUndefined();
|
|
909
915
|
});
|
|
910
916
|
|
|
911
917
|
it('copies a link to the comment', async () => {
|
|
@@ -999,7 +1005,7 @@ describe('Comments threads', () => {
|
|
|
999
1005
|
/>
|
|
1000
1006
|
</Sized>,
|
|
1001
1007
|
);
|
|
1002
|
-
const banner =
|
|
1008
|
+
const banner = errorBanner()!;
|
|
1003
1009
|
expect(banner.textContent).toContain("Couldn't post this comment.");
|
|
1004
1010
|
await click(within(banner).getByRole('button', {name: 'Retry'}));
|
|
1005
1011
|
await flush();
|
|
@@ -1022,7 +1028,7 @@ describe('Comments threads', () => {
|
|
|
1022
1028
|
);
|
|
1023
1029
|
await click(screen.getByRole('button', {name: 'Load earlier comments'}));
|
|
1024
1030
|
await flush();
|
|
1025
|
-
const banner =
|
|
1031
|
+
const banner = errorBanner()!;
|
|
1026
1032
|
expect(banner.textContent).toContain("Earlier comments couldn't load");
|
|
1027
1033
|
await click(within(banner).getByRole('button', {name: 'Retry'}));
|
|
1028
1034
|
await flush();
|
|
@@ -112,9 +112,15 @@ export const docs = {
|
|
|
112
112
|
},
|
|
113
113
|
{
|
|
114
114
|
name: 'language',
|
|
115
|
-
type: 'string',
|
|
115
|
+
type: 'string | CodeLanguage',
|
|
116
116
|
description:
|
|
117
|
-
'Syntax-highlighting language. Defaults to one inferred from the file extension;
|
|
117
|
+
'Syntax-highlighting language: a built-in identifier, or a CodeBlock language value imported on its own (e.g. graphql from @astryxdesign/core/CodeBlock/languages/graphql) or made with createCodeLanguage. Defaults to one inferred from the file name or extension among the built-ins and codeLanguages; an unmatched file renders as plain text.',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: 'codeLanguages',
|
|
121
|
+
type: 'ReadonlyArray<CodeLanguage>',
|
|
122
|
+
description:
|
|
123
|
+
'Language values the file name or extension may infer, such as [graphql, dockerfile]; a later entry wins. Pass the same list to every DiffViewer on a review page.',
|
|
118
124
|
},
|
|
119
125
|
{
|
|
120
126
|
name: 'hasLineNumbers',
|
|
@@ -7,6 +7,10 @@ import {createRef} from 'react';
|
|
|
7
7
|
import {DiffViewer} from './DiffViewer';
|
|
8
8
|
import {parseUnifiedDiff} from './parseUnifiedDiff';
|
|
9
9
|
import type {DiffViewerLineRef} from './diffTypes';
|
|
10
|
+
import {createDiffFile} from './createDiffFile';
|
|
11
|
+
import {dockerfile} from '@astryxdesign/core/CodeBlock/languages/dockerfile';
|
|
12
|
+
import {graphql} from '@astryxdesign/core/CodeBlock/languages/graphql';
|
|
13
|
+
import {createCodeLanguage} from '@astryxdesign/core/CodeBlock';
|
|
10
14
|
|
|
11
15
|
const PATCH = `diff --git a/src/greet.ts b/src/greet.ts
|
|
12
16
|
--- a/src/greet.ts
|
|
@@ -72,6 +76,73 @@ describe('DiffViewer', () => {
|
|
|
72
76
|
expect(container.querySelector('.astryx-token-keyword')).not.toBeNull();
|
|
73
77
|
});
|
|
74
78
|
|
|
79
|
+
describe('language values (CodeBlock FR13)', () => {
|
|
80
|
+
const keywords = (root: ParentNode) =>
|
|
81
|
+
Array.from(root.querySelectorAll('.astryx-token-keyword')).map(
|
|
82
|
+
node => node.textContent,
|
|
83
|
+
);
|
|
84
|
+
const schema = createDiffFile({
|
|
85
|
+
oldValue: 'type User {}\n',
|
|
86
|
+
newValue: 'type User { name: String }\n',
|
|
87
|
+
newPath: 'api/schema.graphql',
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it('takes a language value as language', () => {
|
|
91
|
+
const plain = render(<DiffViewer file={schema} language="graphql" />);
|
|
92
|
+
expect(keywords(plain.container)).toEqual([]);
|
|
93
|
+
const {container} = render(
|
|
94
|
+
<DiffViewer file={schema} language={graphql} />,
|
|
95
|
+
);
|
|
96
|
+
expect(keywords(container)).toContain('type');
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it('infers a listed value from the file extension or name', () => {
|
|
100
|
+
const unlisted = render(<DiffViewer file={schema} />);
|
|
101
|
+
expect(keywords(unlisted.container)).toEqual([]);
|
|
102
|
+
const listed = render(
|
|
103
|
+
<DiffViewer file={schema} codeLanguages={[dockerfile, graphql]} />,
|
|
104
|
+
);
|
|
105
|
+
expect(keywords(listed.container)).toContain('type');
|
|
106
|
+
const docker = createDiffFile({
|
|
107
|
+
oldValue: 'FROM node:20\n',
|
|
108
|
+
newValue: 'FROM node:22\n',
|
|
109
|
+
newPath: 'Dockerfile',
|
|
110
|
+
});
|
|
111
|
+
const byName = render(
|
|
112
|
+
<DiffViewer file={docker} codeLanguages={[graphql, dockerfile]} />,
|
|
113
|
+
);
|
|
114
|
+
expect(keywords(byName.container)).toContain('FROM');
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
it('infers a custom language from its extension', () => {
|
|
118
|
+
const zig = createCodeLanguage({
|
|
119
|
+
name: 'zig',
|
|
120
|
+
identifiers: ['zig'],
|
|
121
|
+
fileExtensions: ['zig'],
|
|
122
|
+
tokenize: () => [{type: 'keyword', start: 0, end: 3}],
|
|
123
|
+
});
|
|
124
|
+
const file = createDiffFile({
|
|
125
|
+
oldValue: 'pub a\n',
|
|
126
|
+
newValue: 'pub b\n',
|
|
127
|
+
newPath: 'src/main.zig',
|
|
128
|
+
});
|
|
129
|
+
const {container} = render(
|
|
130
|
+
<DiffViewer file={file} codeLanguages={[zig]} />,
|
|
131
|
+
);
|
|
132
|
+
expect(keywords(container)).toContain('pub');
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
it('infers the newer built-ins from their extensions', () => {
|
|
136
|
+
const rust = createDiffFile({
|
|
137
|
+
oldValue: 'fn a() {}\n',
|
|
138
|
+
newValue: 'fn b() {}\n',
|
|
139
|
+
newPath: 'src/lib.rs',
|
|
140
|
+
});
|
|
141
|
+
const {container} = render(<DiffViewer file={rust} />);
|
|
142
|
+
expect(keywords(container)).toContain('fn');
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
|
|
75
146
|
it('marks changed lines for assistive technology', () => {
|
|
76
147
|
const {container} = render(<DiffViewer file={FILE} />);
|
|
77
148
|
const addedCells = container.querySelectorAll('td[data-diff="added"]');
|