react-cheminfo 0.29.0 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +42 -2
  2. package/lib/chrome/ui/AccountButton.d.ts +76 -0
  3. package/lib/chrome/ui/AccountButton.d.ts.map +1 -0
  4. package/lib/chrome/ui/AccountButton.js +66 -0
  5. package/lib/chrome/ui/AccountButton.js.map +1 -0
  6. package/lib/chrome/ui/index.d.ts +2 -0
  7. package/lib/chrome/ui/index.d.ts.map +1 -1
  8. package/lib/chrome/ui/index.js +1 -0
  9. package/lib/chrome/ui/index.js.map +1 -1
  10. package/lib/clipboard/ui/ClickToCopy.d.ts +6 -0
  11. package/lib/clipboard/ui/ClickToCopy.d.ts.map +1 -1
  12. package/lib/clipboard/ui/ClickToCopy.js +3 -3
  13. package/lib/clipboard/ui/ClickToCopy.js.map +1 -1
  14. package/lib/i18n/core/chromeCatalog.d.ts +1 -1
  15. package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
  16. package/lib/locales/de.json +3 -0
  17. package/lib/locales/en.json +3 -0
  18. package/lib/locales/es.json +3 -0
  19. package/lib/locales/fr.json +3 -0
  20. package/lib/structure/core/conformerBoltzmann.d.ts +56 -0
  21. package/lib/structure/core/conformerBoltzmann.d.ts.map +1 -0
  22. package/lib/structure/core/conformerBoltzmann.js +96 -0
  23. package/lib/structure/core/conformerBoltzmann.js.map +1 -0
  24. package/lib/structure/core/conformerEnergy.d.ts +69 -0
  25. package/lib/structure/core/conformerEnergy.d.ts.map +1 -0
  26. package/lib/structure/core/conformerEnergy.js +47 -0
  27. package/lib/structure/core/conformerEnergy.js.map +1 -0
  28. package/lib/structure/core/index.d.ts +3 -0
  29. package/lib/structure/core/index.d.ts.map +1 -1
  30. package/lib/structure/core/index.js +2 -0
  31. package/lib/structure/core/index.js.map +1 -1
  32. package/lib/structure/ui/ConformerTable.d.ts +73 -0
  33. package/lib/structure/ui/ConformerTable.d.ts.map +1 -0
  34. package/lib/structure/ui/ConformerTable.js +259 -0
  35. package/lib/structure/ui/ConformerTable.js.map +1 -0
  36. package/lib/structure/ui/conformerColumns.d.ts +30 -0
  37. package/lib/structure/ui/conformerColumns.d.ts.map +1 -0
  38. package/lib/structure/ui/conformerColumns.js +37 -0
  39. package/lib/structure/ui/conformerColumns.js.map +1 -0
  40. package/lib/ui.d.ts +4 -0
  41. package/lib/ui.d.ts.map +1 -1
  42. package/lib/ui.js +2 -0
  43. package/lib/ui.js.map +1 -1
  44. package/package.json +1 -1
  45. package/src/chrome/ui/AccountButton.tsx +185 -0
  46. package/src/chrome/ui/index.ts +2 -0
  47. package/src/clipboard/ui/ClickToCopy.tsx +9 -1
  48. package/src/locales/de.json +3 -0
  49. package/src/locales/en.json +3 -0
  50. package/src/locales/es.json +3 -0
  51. package/src/locales/fr.json +3 -0
  52. package/src/structure/core/conformerBoltzmann.ts +102 -0
  53. package/src/structure/core/conformerEnergy.ts +97 -0
  54. package/src/structure/core/index.ts +15 -0
  55. package/src/structure/ui/ConformerTable.tsx +429 -0
  56. package/src/structure/ui/conformerColumns.ts +55 -0
  57. package/src/ui.ts +12 -0
  58. package/styles/chrome.css +55 -0
package/README.md CHANGED
@@ -88,7 +88,7 @@ through a wildcard subpath exactly as `react-science` serves its own.
88
88
  | Area | `…/core` | `…/ui` |
89
89
  | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
90
90
  | **Site identity** | `siteById`, `findSiteByHost`, `siteTokensCss` | `SiteMark`, `Wordmark`, `SiteTheme`, `SiteTile`, `EcosystemButton`, `EcosystemLinks` |
91
- | **Chrome** | — | `SiteHeader`, `SiteFooter`, `NavLink`, `NavMenuButton`, `MenuButton`, `useCompactHeader` |
91
+ | **Chrome** | — | `SiteHeader`, `SiteFooter`, `NavLink`, `NavMenuButton`, `MenuButton`, `AccountButton`, `useCompactHeader` |
92
92
  | **Languages** | `LANGUAGES`, `DEFAULT_LANGUAGE`, `LANGUAGE_LABELS`, `isLanguage`, `MessageCatalog`, `CHROME_CATALOG`, `setMessageSession`, `loadCatalogs`, `LANGUAGE_PARAM`, `withLanguageParam` | `useT`, `useChromeT`, `useLanguage`, `LanguageSelect`, `SiteLanguage` |
93
93
  | **Citation** | `formatCitation`, `formatCitations`, `citationSegments`, `downloadCitation`, `citedReferences`, `doiUrl` | `CiteButton`, `CitationMenu`, `CitationPreview` |
94
94
  | **Share & embed** | `parseShareConfig`, `applyShareConfig`, `buildShareUrl`, `buildEmbedCode`, `isHidden`, `visibleShareParts`, `applySharePreset`, `findSharePreset`, the param codecs, `syncPreferencesWithUrl`, `applyPreferencesFromSearch`, `writePreferencesToSearch` | `ShareDialog`, `ShareButton`, `HiddenPartsProvider`, `PagePart`, `useIsHidden` |
@@ -239,6 +239,40 @@ import { EcosystemButton } from 'react-cheminfo/ui';
239
239
  - A tile **lights up in the colour of the site it opens**, so running the
240
240
  pointer down the grid is what makes the pairs of colours read.
241
241
 
242
+ ### `AccountButton`
243
+
244
+ The utility that says who a site is answering to: an invitation when nobody is
245
+ signed in, and the account's own mark when somebody is.
246
+
247
+ ```tsx
248
+ import { AccountButton } from 'react-cheminfo/ui';
249
+
250
+ <AccountButton
251
+ identity={
252
+ user === null ? null : { name: user.displayName, detail: user.email }
253
+ }
254
+ loading={loading}
255
+ signInHref="/login"
256
+ onSignIn={() => navigate({ kind: 'login' })}
257
+ onSignOut={() => void signOut()}
258
+ signInLabel="Teacher sign in"
259
+ />;
260
+ ```
261
+
262
+ - **The two states are told apart by whether an identity is on screen**, never
263
+ by the direction of an arrow. Blueprint's `log-in` and `log-out` are the same
264
+ arrow either side of the same door; at 14 px among four other monochrome
265
+ glyphs, a site drawing one reports a signed-out visitor as signed in. So the
266
+ invitation is the words _Sign in_ — it carries no glyph, which is what keeps
267
+ the bar from reducing it to a mark — and being signed in is the person's own
268
+ initials.
269
+ - `loading` draws **neither** state, at the width the mark will take. A bar that
270
+ offers to sign in and then turns into a name has told the visitor something
271
+ false, and that is the state they act on first.
272
+ - `items` are the account's own pages, listed in the menu above Sign out.
273
+ - `signInHref` keeps the invitation a real link, so a middle click opens a tab;
274
+ a site with no page for it passes `onSignIn` alone and opens a dialog.
275
+
242
276
  ### `AtomicOrbitalViewer`
243
277
 
244
278
  One hydrogen-like atomic orbital, screened by Slater's rules, sampled in the
@@ -675,11 +709,17 @@ export const SITE_CATALOG = new MessageCatalog({
675
709
  directory: 'src/locales',
676
710
  source: en,
677
711
  translations: {
678
- fr: () => import('../locales/fr.json', { with: { type: 'json' } }),
712
+ fr: () => import('../locales/fr.json'),
679
713
  },
680
714
  });
681
715
  ```
682
716
 
717
+ The lazy imports carry **no** `with { type: 'json' }`: a bundler turns a JSON
718
+ file into a JavaScript module, and the attribute makes the browser refuse the
719
+ chunk it is served for being `text/javascript`. The English import is static, so
720
+ the bundler resolves it before a browser ever sees it and may keep the
721
+ attribute.
722
+
683
723
  `const t = useT(SITE_CATALOG)` then reads it in the language of the page, typed
684
724
  by the English keys; `t.or(key, fallback)` is for a key built from the data,
685
725
  which the catalog may not have caught up with. Only the plain `{name}` argument
@@ -0,0 +1,76 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { NavItem } from './navItem.ts';
3
+ /** Who the site is answering to. */
4
+ export interface AccountIdentity {
5
+ /** What the person is called on screen. */
6
+ name: string;
7
+ /**
8
+ * What tells the account apart under that name — the address it is held at,
9
+ * the handle it was opened with.
10
+ * @default undefined
11
+ */
12
+ detail?: string;
13
+ /**
14
+ * The letters the mark is drawn with.
15
+ * @default the first letter of each of the first two words of `name`
16
+ */
17
+ initials?: string;
18
+ }
19
+ export interface AccountButtonProps {
20
+ /** Who is signed in, or `null` when nobody is. */
21
+ identity: AccountIdentity | null;
22
+ /**
23
+ * Whether the site has not heard back yet. Neither state is drawn until it
24
+ * has: a bar that offers to sign in and then turns into a name has told the
25
+ * visitor something false, and it is the state they act on first.
26
+ * @default false
27
+ */
28
+ loading?: boolean;
29
+ /**
30
+ * The address signing in happens at, for a site with a page of its own for
31
+ * it. Writing it keeps the entry a real link, so a middle click opens a tab.
32
+ * @default undefined
33
+ */
34
+ signInHref?: string;
35
+ /**
36
+ * What the site does when the invitation is picked — route to that page, or
37
+ * open a credentials dialog for a site that has no page.
38
+ * @default undefined
39
+ */
40
+ onSignIn?: () => void;
41
+ /**
42
+ * What the site does when Sign out is picked.
43
+ * @default undefined
44
+ */
45
+ onSignOut?: () => void;
46
+ /**
47
+ * What the invitation reads, for a site whose accounts are for one kind of
48
+ * person — "Teacher sign in". Two words: it is written out in the bar rather
49
+ * than folded into a glyph.
50
+ * @default the chrome's own word for it, in the language of the page
51
+ */
52
+ signInLabel?: string;
53
+ /**
54
+ * The account's own pages, listed above Sign out — a profile, a settings
55
+ * page.
56
+ * @default undefined
57
+ */
58
+ items?: readonly NavItem[];
59
+ }
60
+ /**
61
+ * The one utility of the bar that says who the site is answering to: an
62
+ * invitation when nobody is signed in, and the account's mark when somebody is.
63
+ *
64
+ * The two states are told apart by whether an identity is on screen, never by
65
+ * the direction of an arrow. Blueprint's `log-in` and `log-out` are the same
66
+ * arrow either side of the same door, and at 14 px among four other monochrome
67
+ * glyphs nobody reads which side it is on — a site drawing one reports the
68
+ * visitor as signed in while they are signed out. So the invitation is the
69
+ * words `Sign in`, which no mark can be mistaken for, and being signed in is
70
+ * the person's own initials.
71
+ * @param props - Who is signed in, what signing in and out do, and the pages
72
+ * the account's menu lists.
73
+ * @returns The entry, or nothing while the site is still asking.
74
+ */
75
+ export declare function AccountButton(props: AccountButtonProps): ReactElement | null;
76
+ //# sourceMappingURL=AccountButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountButton.d.ts","sourceRoot":"","sources":["../../../src/chrome/ui/AccountButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAK1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC5B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CAgF5E"}
@@ -0,0 +1,66 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Menu, MenuDivider, MenuItem, PopoverNext } from '@blueprintjs/core';
3
+ import { useChromeT } from "../../i18n/ui/useT.js";
4
+ import { NavLink } from "./NavLink.js";
5
+ import { isModifiedClick } from "./navItem.js";
6
+ /**
7
+ * The one utility of the bar that says who the site is answering to: an
8
+ * invitation when nobody is signed in, and the account's mark when somebody is.
9
+ *
10
+ * The two states are told apart by whether an identity is on screen, never by
11
+ * the direction of an arrow. Blueprint's `log-in` and `log-out` are the same
12
+ * arrow either side of the same door, and at 14 px among four other monochrome
13
+ * glyphs nobody reads which side it is on — a site drawing one reports the
14
+ * visitor as signed in while they are signed out. So the invitation is the
15
+ * words `Sign in`, which no mark can be mistaken for, and being signed in is
16
+ * the person's own initials.
17
+ * @param props - Who is signed in, what signing in and out do, and the pages
18
+ * the account's menu lists.
19
+ * @returns The entry, or nothing while the site is still asking.
20
+ */
21
+ export function AccountButton(props) {
22
+ const { identity, loading = false, signInHref, onSignIn, onSignOut, signInLabel, items = [], } = props;
23
+ const t = useChromeT();
24
+ if (loading) {
25
+ // The width of the mark, so the bar does not jump when the answer lands.
26
+ return _jsx("span", { className: "account-button__pending", "aria-hidden": "true" });
27
+ }
28
+ if (identity === null) {
29
+ return (_jsx(NavLink, { className: "account-button account-button--out", item: {
30
+ id: 'account',
31
+ label: signInLabel ?? t('account.signIn'),
32
+ href: signInHref,
33
+ onSelect: onSignIn,
34
+ } }));
35
+ }
36
+ const { name, detail, initials = initialsOf(name) } = identity;
37
+ return (_jsx(PopoverNext, { placement: "bottom-end", content: _jsxs(Menu, { className: "nav-menu account-menu", children: [_jsxs("li", { className: "account-menu__identity", children: [_jsx("span", { className: "account-menu__name", children: name }), detail === undefined ? null : (_jsx("span", { className: "account-menu__detail", children: detail }))] }), _jsx(MenuDivider, {}), items.map((item) => (_jsx(MenuItem, { icon: item.icon, text: item.label, href: item.href, target: item.external ? '_blank' : undefined, onClick: (event) => {
38
+ if (item.onSelect === undefined || isModifiedClick(event)) {
39
+ return;
40
+ }
41
+ event.preventDefault();
42
+ item.onSelect();
43
+ } }, item.id))), items.length === 0 ? null : _jsx(MenuDivider, {}), _jsx(MenuItem, { icon: "log-out", text: t('account.signOut'), onClick: onSignOut })] }), children: _jsx("button", { type: "button", className: "nav-link nav-link--icon account-button account-button--in", title: t('account.signedInAs', { name }), "aria-label": t('account.signedInAs', { name }), children: _jsx("span", { className: "account-mark", children: initials }) }) }));
44
+ }
45
+ /**
46
+ * The letters a name is marked with: the first of each of its first two words,
47
+ * or the first two letters of a name written as one word.
48
+ * @param name - What the person is called.
49
+ * @returns One or two letters, in capitals.
50
+ */
51
+ function initialsOf(name) {
52
+ const [first, second] = name.split(/\s+/).filter((word) => word !== '');
53
+ if (first === undefined)
54
+ return '?';
55
+ if (second === undefined)
56
+ return firstWordInitials(first);
57
+ return `${first.charAt(0)}${second.charAt(0)}`.toUpperCase();
58
+ }
59
+ // A single word is usually a handle or an address, where the two letters say
60
+ // more than one does — but never the part after the `@`, which every account
61
+ // on the same domain would share.
62
+ function firstWordInitials(word) {
63
+ const [local = ''] = word.split('@');
64
+ return (local === '' ? word : local).slice(0, 2).toUpperCase();
65
+ }
66
+ //# sourceMappingURL=AccountButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountButton.js","sourceRoot":"","sources":["../../../src/chrome/ui/AccountButton.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ export type { AccountButtonProps, AccountIdentity } from './AccountButton.tsx';
2
+ export { AccountButton } from './AccountButton.tsx';
1
3
  export type { HeaderToggleOption, HeaderToggleProps } from './HeaderToggle.tsx';
2
4
  export { HeaderToggle } from './HeaderToggle.tsx';
3
5
  export type { NavItem } from './navItem.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chrome/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chrome/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,3 +1,4 @@
1
+ export { AccountButton } from "./AccountButton.js";
1
2
  export { HeaderToggle } from "./HeaderToggle.js";
2
3
  // A site drawing its own link needs the same reading of a click the shared nav
3
4
  // items use: a middle click or a modified one belongs to the browser.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chrome/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAElD,+EAA+E;AAC/E,sEAAsE;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAe,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chrome/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAElD,+EAA+E;AAC/E,sEAAsE;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAe,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -53,6 +53,12 @@ export interface ClickToCopyProps {
53
53
  * @default undefined
54
54
  */
55
55
  style?: CSSProperties;
56
+ /**
57
+ * `data-testid` the element carries, so an end-to-end suite can select the
58
+ * value without depending on the text inside it.
59
+ * @default undefined
60
+ */
61
+ testId?: string;
56
62
  }
57
63
  /**
58
64
  * A value that is copied by clicking it.
@@ -1 +1 @@
1
- {"version":3,"file":"ClickToCopy.d.ts","sourceRoot":"","sources":["../../../src/clipboard/ui/ClickToCopy.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EAGb,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAKpE,oFAAoF;AACpF,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;AAEvE,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,KAAK,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,CAAC,CAAC;IACnD,iEAAiE;IACjE,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACxB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAYD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAyEjE"}
1
+ {"version":3,"file":"ClickToCopy.d.ts","sourceRoot":"","sources":["../../../src/clipboard/ui/ClickToCopy.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EAGb,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAKpE,oFAAoF;AACpF,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;AAEvE,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,KAAK,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,CAAC,CAAC;IACnD,iEAAiE;IACjE,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACxB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAYD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CA2EjE"}
@@ -24,11 +24,11 @@ const NESTED_CONTROL = 'a[href], button, input, select, textarea, summary, label
24
24
  * @returns The copyable value.
25
25
  */
26
26
  export function ClickToCopy(props) {
27
- const { value, children, label, title, as: Element = 'span', focusable = true, disabled = false, className, style, } = props;
27
+ const { value, children, label, title, as: Element = 'span', focusable = true, disabled = false, className, style, testId, } = props;
28
28
  const t = useChromeT();
29
29
  const { copied, failed, copy } = useCopyToClipboard();
30
30
  if (disabled) {
31
- return (_jsx(Element, { className: className, style: style, children: children }));
31
+ return (_jsx(Element, { className: className, style: style, "data-testid": testId, children: children }));
32
32
  }
33
33
  function activate(event) {
34
34
  if (isOnNestedControl(event))
@@ -37,7 +37,7 @@ export function ClickToCopy(props) {
37
37
  void copy(typeof value === 'function' ? () => writeToClipboard(value()) : value);
38
38
  }
39
39
  const outcome = copied ? 'copied' : failed ? 'failed' : undefined;
40
- return (_jsxs(Element, { className: joinClassNames('click-to-copy', INLINE.has(Element) ? 'click-to-copy--inline' : 'click-to-copy--block', className), style: style, role: focusable && !CELLS.has(Element) ? 'button' : undefined, tabIndex: focusable ? 0 : undefined, title: title ?? copyTitle(value, label, t), "data-copy": outcome, onClick: activate, onKeyDown: onActivateKey(activate), children: [children, focusable ? (_jsx(Icon, { className: "click-to-copy__icon", icon: outcome === 'copied'
40
+ return (_jsxs(Element, { className: joinClassNames('click-to-copy', INLINE.has(Element) ? 'click-to-copy--inline' : 'click-to-copy--block', className), style: style, "data-testid": testId, role: focusable && !CELLS.has(Element) ? 'button' : undefined, tabIndex: focusable ? 0 : undefined, title: title ?? copyTitle(value, label, t), "data-copy": outcome, onClick: activate, onKeyDown: onActivateKey(activate), children: [children, focusable ? (_jsx(Icon, { className: "click-to-copy__icon", icon: outcome === 'copied'
41
41
  ? 'tick'
42
42
  : outcome === 'failed'
43
43
  ? 'cross'
@@ -1 +1 @@
1
- {"version":3,"file":"ClickToCopy.js","sourceRoot":"","sources":["../../../src/clipboard/ui/ClickToCopy.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClickToCopy.js","sourceRoot":"","sources":["../../../src/clipboard/ui/ClickToCopy.tsx"],"names":[],"mappings":"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"}
@@ -17,5 +17,5 @@ export type ChromeKey = keyof typeof en;
17
17
  * missing message falls back to; the other three arrive as a chunk of their
18
18
  * own, so a site read only in English downloads none of them.
19
19
  */
20
- export declare const CHROME_CATALOG: MessageCatalog<"language.label" | "chrome.pages" | "ecosystem.tools" | "ecosystem.menuHeading" | "ecosystem.otherTools" | "ecosystem.youAreHere" | "ecosystem.group.basics.label" | "ecosystem.group.basics.blurb" | "ecosystem.group.practice.label" | "ecosystem.group.practice.blurb" | "ecosystem.group.structures.label" | "ecosystem.group.structures.blurb" | "ecosystem.group.spectra.label" | "ecosystem.group.spectra.blurb" | "ecosystem.group.research.label" | "ecosystem.group.research.blurb" | "ecosystem.group.computing.label" | "ecosystem.group.computing.blurb" | "site.learn.tagline" | "site.inchi.tagline" | "site.vcl.tagline" | "site.smiles.tagline" | "site.openbabel.tagline" | "site.chemcalc.tagline" | "site.dbe.tagline" | "site.nmrium.tagline" | "site.metabo.tagline" | "site.derepflow.tagline" | "site.surge.tagline" | "site.tex.tagline" | "site.lcao.tagline" | "site.regexp.tagline" | "site.pdb.tagline" | "site.elucidation.tagline" | "site.equilibrium.tagline" | "site.polycarp.tagline" | "site.3d.tagline" | "site.periodic-table.tagline" | "site.database.tagline" | "site.symmetry.tagline" | "site.osiris.tagline" | "site.atoms.tagline" | "site.moles.tagline" | "site.inorganic.tagline" | "share.button" | "share.buttonTitle" | "share.dialogTitle" | "share.lead" | "share.layout" | "share.embed" | "share.embedHint" | "share.showOnPage" | "share.custom" | "share.link" | "share.copyLink" | "share.openInNewTab" | "share.iframe" | "share.copyIframe" | "share.done" | "cite.button" | "cite.copyReferenceAs" | "cite.pleaseCiteBoth" | "cite.pleaseCiteEvery" | "cite.copyBothAs" | "cite.copyEveryAs" | "cite.importIntoManager" | "cite.openArticle" | "cite.copyThisAs" | "cite.importThis" | "cite.copied" | "cite.copyFailed" | "cite.format.doi" | "cite.download.ris" | "cite.download.bibtex" | "clipboard.copied" | "clipboard.failed" | "clipboard.copy" | "clipboard.copyThe" | "clipboard.copyValue" | "clipboard.copyToClipboard" | "about.providedBy" | "about.whatYouCanDo" | "about.builtOn" | "about.howToCite" | "about.licenceAndSource" | "about.licence" | "about.foundAProblem" | "about.reportIt" | "about.citeWork" | "about.built" | "about.builtFromCommit" | "about.nameList" | "credits.openbabel.description" | "credits.openchemlib.description" | "credits.openchemlib-utils.description" | "credits.osiris-property-explorer.description" | "credits.react-ocl.description" | "credits.react-mf.description" | "credits.mass-tools.description" | "credits.chem-equilibrium.description" | "credits.ml-matrix.description" | "credits.ml-xsadd.description" | "credits.cif-to-json.description" | "credits.ml-spectra-processing.description" | "credits.occ.description" | "credits.xtb-wasm.description" | "credits.molstar.description" | "credits.blueprint.description" | "credits.react-science.description" | "credits.react-cheminfo.description" | "credits.cheminfo-font.description" | "credits.nivo.description" | "credits.mathjax.description" | "credits.lexical.description" | "credits.katex.description" | "credits.dnd-kit.description" | "credits.react-roi.description" | "credits.file-collection.description" | "credits.zip-js.description" | "credits.preact-signals.description" | "credits.fastify.description" | "credits.sqlite.description" | "credits.sqlite-wasm.description" | "credits.pouchdb.description" | "credits.chemexper.description" | "credits.react.description" | "credits.vite.description" | "help.label" | "help.learnMore" | "help.on" | "confirm.delete" | "confirm.cancel" | "error.title" | "error.tryAgain" | "error.noMessage" | "capsule.filter" | "color.scales" | "color.done" | "color.custom" | "color.customEllipsis" | "color.inUse" | "color.colourScale" | "color.legendLabel" | "color.scaleBeingEdited" | "color.anchorColour" | "color.anchorPosition" | "color.removeAnchor" | "color.addColour" | "color.path" | "color.interpolation.rgb" | "color.interpolation.hsv" | "color.interpolation.hsv-long" | "color.kind.sequential" | "color.kind.diverging" | "color.kind.cyclic" | "color.scale.viridis.label" | "color.scale.viridis.description" | "color.scale.plasma.label" | "color.scale.plasma.description" | "color.scale.magma.label" | "color.scale.magma.description" | "color.scale.inferno.label" | "color.scale.inferno.description" | "color.scale.cividis.label" | "color.scale.cividis.description" | "color.scale.turbo.label" | "color.scale.turbo.description" | "color.scale.greys.label" | "color.scale.greys.description" | "color.scale.cool-warm.label" | "color.scale.cool-warm.description" | "color.scale.blue-red.label" | "color.scale.blue-red.description" | "color.scale.rainbow.label" | "color.scale.rainbow.description" | "download.save" | "download.saveFigure" | "download.saveThisFigure" | "download.format" | "download.formatHelp" | "download.resolution" | "download.resolutionHelp" | "download.resolutionExample" | "download.noFigure" | "download.hintRasterSvg" | "download.hintSvg" | "download.hintPng" | "pedagogy.check" | "pedagogy.revealHint" | "pedagogy.revealHintCount" | "pedagogy.revealHintLadder" | "pedagogy.hideSolution" | "pedagogy.revealSolution" | "pedagogy.reset" | "pedagogy.hints" | "pedagogy.solvedCount" | "pedagogy.clearAll" | "pedagogy.keepAnswers" | "pedagogy.clearEverything" | "pedagogy.clearWarning" | "pedagogy.filterTerms" | "pedagogy.noTermDefined" | "pedagogy.noTermMatches" | "pedagogy.example" | "pedagogy.input" | "pedagogy.previous" | "pedagogy.next" | "pedagogy.stepOf" | "slides.exit" | "slides.previousSlide" | "slides.nextSlide" | "slides.toggleFullscreen" | "slides.backToSlides" | "slides.backToSlide" | "slides.noAddress" | "slides.liveDemos" | "slides.noTalkYet" | "overlay.options" | "overlay.whatAmILookingAt" | "overlay.reset" | "overlay.hoverAName" | "overlay.dismiss" | "delimited.copyTable" | "delimited.close" | "delimited.separator" | "delimited.save" | "delimited.copy" | "delimited.tableAsText" | "chart.measurement" | "chart.measurements" | "delimited.descriptionOne" | "delimited.descriptionMany" | "structure.guide.atom.title" | "structure.guide.atom.element" | "structure.guide.atom.group" | "structure.guide.atom.applyOrForget" | "structure.guide.atom.chain" | "structure.guide.atom.charge" | "structure.guide.atom.radical" | "structure.guide.atom.spin" | "structure.guide.atom.attachment" | "structure.guide.atom.query" | "structure.guide.atom.halogen" | "structure.guide.atom.delete" | "structure.guide.atom.note" | "structure.guide.bond.title" | "structure.guide.bond.order" | "structure.guide.bond.zeroOrder" | "structure.guide.bond.stereo" | "structure.guide.bond.unknownGeometry" | "structure.guide.bond.threeRing" | "structure.guide.bond.ring" | "structure.guide.bond.benzene" | "structure.guide.bond.query" | "structure.guide.bond.delete" | "structure.guide.anywhere.title" | "structure.guide.anywhere.undo" | "structure.guide.anywhere.copy" | "structure.guide.anywhere.paste" | "structure.guide.anywhere.deleteSelection" | "structure.guide.anywhere.flip" | "structure.guide.anywhere.help" | "structure.guide.anywhere.note" | "structure.guide.selecting.title" | "structure.guide.selecting.lasso" | "structure.guide.selecting.rectangle" | "structure.guide.selecting.add" | "structure.guide.selecting.move" | "structure.guide.selecting.duplicate" | "structure.guide.selecting.queryFeatures" | "structure.guide.selecting.note" | "structure.guide.stereochemistry.title" | "structure.guide.stereochemistry.note" | "structure.input.type" | "structure.input.or" | "structure.input.drag" | "structure.input.plusDrag" | "structure.input.dragSelection" | "structure.input.plusDragSelection" | "structure.input.doubleClick" | "structure.docs.toolsAndKeys" | "structure.docs.atomProperties" | "structure.docs.stereochemistry" | "structure.help.hoverToolbar" | "structure.help.learnMore" | "structure.mouseAndKeyboard" | "structure.tool.clear.name" | "structure.tool.clear.description" | "structure.tool.cleanUp.name" | "structure.tool.cleanUp.description" | "structure.tool.select.name" | "structure.tool.select.description" | "structure.tool.unknownConfiguration.name" | "structure.tool.unknownConfiguration.description" | "structure.tool.delete.name" | "structure.tool.delete.description" | "structure.tool.singleBond.name" | "structure.tool.singleBond.description" | "structure.tool.upBond.name" | "structure.tool.upBond.description" | "structure.tool.positiveCharge.name" | "structure.tool.positiveCharge.description" | "structure.tool.undo.name" | "structure.tool.undo.description" | "structure.tool.zoomAndRotate.name" | "structure.tool.zoomAndRotate.description" | "structure.tool.atomMapping.name" | "structure.tool.atomMapping.description" | "structure.tool.enhancedStereo.name" | "structure.tool.enhancedStereo.description" | "structure.tool.text.name" | "structure.tool.text.description" | "structure.tool.chain.name" | "structure.tool.chain.description" | "structure.tool.downBond.name" | "structure.tool.downBond.description" | "structure.tool.negativeCharge.name" | "structure.tool.negativeCharge.description" | "structure.tool.anyAtom.name" | "structure.tool.anyAtom.description" | "structure.tool.ring3.name" | "structure.tool.ring3.description" | "structure.tool.ring5.name" | "structure.tool.ring5.description" | "structure.tool.ring7.name" | "structure.tool.ring7.description" | "structure.tool.ring4.name" | "structure.tool.ring4.description" | "structure.tool.ring6.name" | "structure.tool.ring6.description" | "structure.tool.benzene.name" | "structure.tool.benzene.description" | "structure.tool.carbon.name" | "structure.tool.carbon.description" | "structure.tool.nitrogen.name" | "structure.tool.nitrogen.description" | "structure.tool.oxygen.name" | "structure.tool.oxygen.description" | "structure.tool.fluorine.name" | "structure.tool.fluorine.description" | "structure.tool.bromine.name" | "structure.tool.bromine.description" | "structure.tool.hydrogen.name" | "structure.tool.hydrogen.description" | "structure.tool.silicon.name" | "structure.tool.silicon.description" | "structure.tool.phosphorus.name" | "structure.tool.phosphorus.description" | "structure.tool.sulfur.name" | "structure.tool.sulfur.description" | "structure.tool.chlorine.name" | "structure.tool.chlorine.description" | "structure.tool.iodine.name" | "structure.tool.iodine.description" | "structure.tool.reactionOnly" | "structure.tool.unavailable" | "structure.loadingEditor" | "periodic.table" | "periodic.group" | "periodic.period" | "periodic.cellLabel" | "periodic.category.alkali-metal" | "periodic.category.alkaline-earth-metal" | "periodic.category.transition-metal" | "periodic.category.post-transition-metal" | "periodic.category.metalloid" | "periodic.category.nonmetal" | "periodic.category.halogen" | "periodic.category.noble-gas" | "periodic.category.lanthanoid" | "periodic.category.actinoid" | "molecule3d.view" | "molecule3d.resetView" | "molecule3d.spin" | "molecule3d.surface" | "molecule3d.molecularSurface" | "molecule3d.displayOptions" | "molecule3d.exportImage" | "molecule3d.measure" | "molecule3d.clearMeasurements" | "molecule3d.measurement.distance" | "molecule3d.measurement.angle" | "molecule3d.measurement.dihedral" | "molecule3d.measurementTooltip" | "molecule3d.representation.ball-and-stick" | "molecule3d.representation.spacefill" | "molecule3d.representation.stick" | "molecule3d.size" | "molecule3d.surfaceOpacity" | "molecule3d.solventProbe" | "molecule3d.solventProbeHelp" | "molecule3d.surfaceColour" | "molecule3d.colour" | "molecule3d.coloring.uniform" | "molecule3d.coloring.element" | "molecule3d.coloring.polarity" | "molecule3d.neutral" | "molecule3d.tpsaHelp" | "molecule3d.loadingViewer" | "molecule3d.couldNotDraw" | "molecule3d.gesture.rotate" | "molecule3d.gesture.rollDrag" | "molecule3d.gesture.rollKeys" | "molecule3d.gesture.moveDrag" | "molecule3d.gesture.moveCtrl" | "molecule3d.gesture.zoom" | "molecule3d.gesture.clip" | "molecule3d.gesture.centreAtom" | "molecule3d.gesture.centreMolecule" | "molecule3d.input.drag" | "molecule3d.input.plus" | "molecule3d.input.plusDrag" | "molecule3d.input.plusScroll" | "molecule3d.input.or" | "molecule3d.input.rightDrag" | "molecule3d.input.scroll" | "molecule3d.input.clickAtom" | "molecule3d.input.clickBackground" | "molecule3d.helpNote" | "orbital.couldNotDraw" | "orbital.sampling" | "orbital.showAxes" | "orbital.axesTitle" | "orbital.axesBody" | "orbital.axesExample" | "orbital.resetTitle" | "orbital.resetBody" | "viewer.capability.noWindow" | "viewer.capability.noContext" | "viewer.capability.noFloatTextures" | "viewer.capability.ready" | "conformers.strategy.adaptive-random" | "conformers.strategy.likely-random" | "conformers.strategy.pure-random" | "conformers.strategy.likely-systematic" | "conformers.strategyDetail.adaptive-random" | "conformers.strategyDetail.likely-random" | "conformers.strategyDetail.pure-random" | "conformers.strategyDetail.likely-systematic" | "conformers.minimisation.none">;
20
+ export declare const CHROME_CATALOG: MessageCatalog<"language.label" | "chrome.pages" | "account.signIn" | "account.signOut" | "account.signedInAs" | "ecosystem.tools" | "ecosystem.menuHeading" | "ecosystem.otherTools" | "ecosystem.youAreHere" | "ecosystem.group.basics.label" | "ecosystem.group.basics.blurb" | "ecosystem.group.practice.label" | "ecosystem.group.practice.blurb" | "ecosystem.group.structures.label" | "ecosystem.group.structures.blurb" | "ecosystem.group.spectra.label" | "ecosystem.group.spectra.blurb" | "ecosystem.group.research.label" | "ecosystem.group.research.blurb" | "ecosystem.group.computing.label" | "ecosystem.group.computing.blurb" | "site.learn.tagline" | "site.inchi.tagline" | "site.vcl.tagline" | "site.smiles.tagline" | "site.openbabel.tagline" | "site.chemcalc.tagline" | "site.dbe.tagline" | "site.nmrium.tagline" | "site.metabo.tagline" | "site.derepflow.tagline" | "site.surge.tagline" | "site.tex.tagline" | "site.lcao.tagline" | "site.regexp.tagline" | "site.pdb.tagline" | "site.elucidation.tagline" | "site.equilibrium.tagline" | "site.polycarp.tagline" | "site.3d.tagline" | "site.periodic-table.tagline" | "site.database.tagline" | "site.symmetry.tagline" | "site.osiris.tagline" | "site.atoms.tagline" | "site.moles.tagline" | "site.inorganic.tagline" | "share.button" | "share.buttonTitle" | "share.dialogTitle" | "share.lead" | "share.layout" | "share.embed" | "share.embedHint" | "share.showOnPage" | "share.custom" | "share.link" | "share.copyLink" | "share.openInNewTab" | "share.iframe" | "share.copyIframe" | "share.done" | "cite.button" | "cite.copyReferenceAs" | "cite.pleaseCiteBoth" | "cite.pleaseCiteEvery" | "cite.copyBothAs" | "cite.copyEveryAs" | "cite.importIntoManager" | "cite.openArticle" | "cite.copyThisAs" | "cite.importThis" | "cite.copied" | "cite.copyFailed" | "cite.format.doi" | "cite.download.ris" | "cite.download.bibtex" | "clipboard.copied" | "clipboard.failed" | "clipboard.copy" | "clipboard.copyThe" | "clipboard.copyValue" | "clipboard.copyToClipboard" | "about.providedBy" | "about.whatYouCanDo" | "about.builtOn" | "about.howToCite" | "about.licenceAndSource" | "about.licence" | "about.foundAProblem" | "about.reportIt" | "about.citeWork" | "about.built" | "about.builtFromCommit" | "about.nameList" | "credits.openbabel.description" | "credits.openchemlib.description" | "credits.openchemlib-utils.description" | "credits.osiris-property-explorer.description" | "credits.react-ocl.description" | "credits.react-mf.description" | "credits.mass-tools.description" | "credits.chem-equilibrium.description" | "credits.ml-matrix.description" | "credits.ml-xsadd.description" | "credits.cif-to-json.description" | "credits.ml-spectra-processing.description" | "credits.occ.description" | "credits.xtb-wasm.description" | "credits.molstar.description" | "credits.blueprint.description" | "credits.react-science.description" | "credits.react-cheminfo.description" | "credits.cheminfo-font.description" | "credits.nivo.description" | "credits.mathjax.description" | "credits.lexical.description" | "credits.katex.description" | "credits.dnd-kit.description" | "credits.react-roi.description" | "credits.file-collection.description" | "credits.zip-js.description" | "credits.preact-signals.description" | "credits.fastify.description" | "credits.sqlite.description" | "credits.sqlite-wasm.description" | "credits.pouchdb.description" | "credits.chemexper.description" | "credits.react.description" | "credits.vite.description" | "help.label" | "help.learnMore" | "help.on" | "confirm.delete" | "confirm.cancel" | "error.title" | "error.tryAgain" | "error.noMessage" | "capsule.filter" | "color.scales" | "color.done" | "color.custom" | "color.customEllipsis" | "color.inUse" | "color.colourScale" | "color.legendLabel" | "color.scaleBeingEdited" | "color.anchorColour" | "color.anchorPosition" | "color.removeAnchor" | "color.addColour" | "color.path" | "color.interpolation.rgb" | "color.interpolation.hsv" | "color.interpolation.hsv-long" | "color.kind.sequential" | "color.kind.diverging" | "color.kind.cyclic" | "color.scale.viridis.label" | "color.scale.viridis.description" | "color.scale.plasma.label" | "color.scale.plasma.description" | "color.scale.magma.label" | "color.scale.magma.description" | "color.scale.inferno.label" | "color.scale.inferno.description" | "color.scale.cividis.label" | "color.scale.cividis.description" | "color.scale.turbo.label" | "color.scale.turbo.description" | "color.scale.greys.label" | "color.scale.greys.description" | "color.scale.cool-warm.label" | "color.scale.cool-warm.description" | "color.scale.blue-red.label" | "color.scale.blue-red.description" | "color.scale.rainbow.label" | "color.scale.rainbow.description" | "download.save" | "download.saveFigure" | "download.saveThisFigure" | "download.format" | "download.formatHelp" | "download.resolution" | "download.resolutionHelp" | "download.resolutionExample" | "download.noFigure" | "download.hintRasterSvg" | "download.hintSvg" | "download.hintPng" | "pedagogy.check" | "pedagogy.revealHint" | "pedagogy.revealHintCount" | "pedagogy.revealHintLadder" | "pedagogy.hideSolution" | "pedagogy.revealSolution" | "pedagogy.reset" | "pedagogy.hints" | "pedagogy.solvedCount" | "pedagogy.clearAll" | "pedagogy.keepAnswers" | "pedagogy.clearEverything" | "pedagogy.clearWarning" | "pedagogy.filterTerms" | "pedagogy.noTermDefined" | "pedagogy.noTermMatches" | "pedagogy.example" | "pedagogy.input" | "pedagogy.previous" | "pedagogy.next" | "pedagogy.stepOf" | "slides.exit" | "slides.previousSlide" | "slides.nextSlide" | "slides.toggleFullscreen" | "slides.backToSlides" | "slides.backToSlide" | "slides.noAddress" | "slides.liveDemos" | "slides.noTalkYet" | "overlay.options" | "overlay.whatAmILookingAt" | "overlay.reset" | "overlay.hoverAName" | "overlay.dismiss" | "delimited.copyTable" | "delimited.close" | "delimited.separator" | "delimited.save" | "delimited.copy" | "delimited.tableAsText" | "chart.measurement" | "chart.measurements" | "delimited.descriptionOne" | "delimited.descriptionMany" | "structure.guide.atom.title" | "structure.guide.atom.element" | "structure.guide.atom.group" | "structure.guide.atom.applyOrForget" | "structure.guide.atom.chain" | "structure.guide.atom.charge" | "structure.guide.atom.radical" | "structure.guide.atom.spin" | "structure.guide.atom.attachment" | "structure.guide.atom.query" | "structure.guide.atom.halogen" | "structure.guide.atom.delete" | "structure.guide.atom.note" | "structure.guide.bond.title" | "structure.guide.bond.order" | "structure.guide.bond.zeroOrder" | "structure.guide.bond.stereo" | "structure.guide.bond.unknownGeometry" | "structure.guide.bond.threeRing" | "structure.guide.bond.ring" | "structure.guide.bond.benzene" | "structure.guide.bond.query" | "structure.guide.bond.delete" | "structure.guide.anywhere.title" | "structure.guide.anywhere.undo" | "structure.guide.anywhere.copy" | "structure.guide.anywhere.paste" | "structure.guide.anywhere.deleteSelection" | "structure.guide.anywhere.flip" | "structure.guide.anywhere.help" | "structure.guide.anywhere.note" | "structure.guide.selecting.title" | "structure.guide.selecting.lasso" | "structure.guide.selecting.rectangle" | "structure.guide.selecting.add" | "structure.guide.selecting.move" | "structure.guide.selecting.duplicate" | "structure.guide.selecting.queryFeatures" | "structure.guide.selecting.note" | "structure.guide.stereochemistry.title" | "structure.guide.stereochemistry.note" | "structure.input.type" | "structure.input.or" | "structure.input.drag" | "structure.input.plusDrag" | "structure.input.dragSelection" | "structure.input.plusDragSelection" | "structure.input.doubleClick" | "structure.docs.toolsAndKeys" | "structure.docs.atomProperties" | "structure.docs.stereochemistry" | "structure.help.hoverToolbar" | "structure.help.learnMore" | "structure.mouseAndKeyboard" | "structure.tool.clear.name" | "structure.tool.clear.description" | "structure.tool.cleanUp.name" | "structure.tool.cleanUp.description" | "structure.tool.select.name" | "structure.tool.select.description" | "structure.tool.unknownConfiguration.name" | "structure.tool.unknownConfiguration.description" | "structure.tool.delete.name" | "structure.tool.delete.description" | "structure.tool.singleBond.name" | "structure.tool.singleBond.description" | "structure.tool.upBond.name" | "structure.tool.upBond.description" | "structure.tool.positiveCharge.name" | "structure.tool.positiveCharge.description" | "structure.tool.undo.name" | "structure.tool.undo.description" | "structure.tool.zoomAndRotate.name" | "structure.tool.zoomAndRotate.description" | "structure.tool.atomMapping.name" | "structure.tool.atomMapping.description" | "structure.tool.enhancedStereo.name" | "structure.tool.enhancedStereo.description" | "structure.tool.text.name" | "structure.tool.text.description" | "structure.tool.chain.name" | "structure.tool.chain.description" | "structure.tool.downBond.name" | "structure.tool.downBond.description" | "structure.tool.negativeCharge.name" | "structure.tool.negativeCharge.description" | "structure.tool.anyAtom.name" | "structure.tool.anyAtom.description" | "structure.tool.ring3.name" | "structure.tool.ring3.description" | "structure.tool.ring5.name" | "structure.tool.ring5.description" | "structure.tool.ring7.name" | "structure.tool.ring7.description" | "structure.tool.ring4.name" | "structure.tool.ring4.description" | "structure.tool.ring6.name" | "structure.tool.ring6.description" | "structure.tool.benzene.name" | "structure.tool.benzene.description" | "structure.tool.carbon.name" | "structure.tool.carbon.description" | "structure.tool.nitrogen.name" | "structure.tool.nitrogen.description" | "structure.tool.oxygen.name" | "structure.tool.oxygen.description" | "structure.tool.fluorine.name" | "structure.tool.fluorine.description" | "structure.tool.bromine.name" | "structure.tool.bromine.description" | "structure.tool.hydrogen.name" | "structure.tool.hydrogen.description" | "structure.tool.silicon.name" | "structure.tool.silicon.description" | "structure.tool.phosphorus.name" | "structure.tool.phosphorus.description" | "structure.tool.sulfur.name" | "structure.tool.sulfur.description" | "structure.tool.chlorine.name" | "structure.tool.chlorine.description" | "structure.tool.iodine.name" | "structure.tool.iodine.description" | "structure.tool.reactionOnly" | "structure.tool.unavailable" | "structure.loadingEditor" | "periodic.table" | "periodic.group" | "periodic.period" | "periodic.cellLabel" | "periodic.category.alkali-metal" | "periodic.category.alkaline-earth-metal" | "periodic.category.transition-metal" | "periodic.category.post-transition-metal" | "periodic.category.metalloid" | "periodic.category.nonmetal" | "periodic.category.halogen" | "periodic.category.noble-gas" | "periodic.category.lanthanoid" | "periodic.category.actinoid" | "molecule3d.view" | "molecule3d.resetView" | "molecule3d.spin" | "molecule3d.surface" | "molecule3d.molecularSurface" | "molecule3d.displayOptions" | "molecule3d.exportImage" | "molecule3d.measure" | "molecule3d.clearMeasurements" | "molecule3d.measurement.distance" | "molecule3d.measurement.angle" | "molecule3d.measurement.dihedral" | "molecule3d.measurementTooltip" | "molecule3d.representation.ball-and-stick" | "molecule3d.representation.spacefill" | "molecule3d.representation.stick" | "molecule3d.size" | "molecule3d.surfaceOpacity" | "molecule3d.solventProbe" | "molecule3d.solventProbeHelp" | "molecule3d.surfaceColour" | "molecule3d.colour" | "molecule3d.coloring.uniform" | "molecule3d.coloring.element" | "molecule3d.coloring.polarity" | "molecule3d.neutral" | "molecule3d.tpsaHelp" | "molecule3d.loadingViewer" | "molecule3d.couldNotDraw" | "molecule3d.gesture.rotate" | "molecule3d.gesture.rollDrag" | "molecule3d.gesture.rollKeys" | "molecule3d.gesture.moveDrag" | "molecule3d.gesture.moveCtrl" | "molecule3d.gesture.zoom" | "molecule3d.gesture.clip" | "molecule3d.gesture.centreAtom" | "molecule3d.gesture.centreMolecule" | "molecule3d.input.drag" | "molecule3d.input.plus" | "molecule3d.input.plusDrag" | "molecule3d.input.plusScroll" | "molecule3d.input.or" | "molecule3d.input.rightDrag" | "molecule3d.input.scroll" | "molecule3d.input.clickAtom" | "molecule3d.input.clickBackground" | "molecule3d.helpNote" | "orbital.couldNotDraw" | "orbital.sampling" | "orbital.showAxes" | "orbital.axesTitle" | "orbital.axesBody" | "orbital.axesExample" | "orbital.resetTitle" | "orbital.resetBody" | "viewer.capability.noWindow" | "viewer.capability.noContext" | "viewer.capability.noFloatTextures" | "viewer.capability.ready" | "conformers.strategy.adaptive-random" | "conformers.strategy.likely-random" | "conformers.strategy.pure-random" | "conformers.strategy.likely-systematic" | "conformers.strategyDetail.adaptive-random" | "conformers.strategyDetail.likely-random" | "conformers.strategyDetail.pure-random" | "conformers.strategyDetail.likely-systematic" | "conformers.minimisation.none">;
21
21
  //# sourceMappingURL=chromeCatalog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chromeCatalog.d.ts","sourceRoot":"","sources":["../../../src/i18n/core/chromeCatalog.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,uBAAuB,CAAuB;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD,qCAAqC;AACrC,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,cAAc,mmZAUzB,CAAC"}
1
+ {"version":3,"file":"chromeCatalog.d.ts","sourceRoot":"","sources":["../../../src/i18n/core/chromeCatalog.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,uBAAuB,CAAuB;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD,qCAAqC;AACrC,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,cAAc,iqZAUzB,CAAC"}
@@ -1,6 +1,9 @@
1
1
  {
2
2
  "language.label": "Sprache",
3
3
  "chrome.pages": "Seiten",
4
+ "account.signIn": "Anmelden",
5
+ "account.signOut": "Abmelden",
6
+ "account.signedInAs": "Angemeldet als {name}",
4
7
  "ecosystem.tools": "Werkzeuge",
5
8
  "ecosystem.menuHeading": "Unsere Werkzeuge, alle im Browser",
6
9
  "ecosystem.otherTools": "Unsere weiteren Werkzeuge",
@@ -1,6 +1,9 @@
1
1
  {
2
2
  "language.label": "Language",
3
3
  "chrome.pages": "Pages",
4
+ "account.signIn": "Sign in",
5
+ "account.signOut": "Sign out",
6
+ "account.signedInAs": "Signed in as {name}",
4
7
  "ecosystem.tools": "Tools",
5
8
  "ecosystem.menuHeading": "Our tools, all in the browser",
6
9
  "ecosystem.otherTools": "Our other tools",
@@ -1,6 +1,9 @@
1
1
  {
2
2
  "language.label": "Idioma",
3
3
  "chrome.pages": "Páginas",
4
+ "account.signIn": "Iniciar sesión",
5
+ "account.signOut": "Cerrar sesión",
6
+ "account.signedInAs": "Sesión iniciada como {name}",
4
7
  "ecosystem.tools": "Herramientas",
5
8
  "ecosystem.menuHeading": "Nuestras herramientas, todas en el navegador",
6
9
  "ecosystem.otherTools": "Nuestras otras herramientas",
@@ -1,6 +1,9 @@
1
1
  {
2
2
  "language.label": "Langue",
3
3
  "chrome.pages": "Pages",
4
+ "account.signIn": "Se connecter",
5
+ "account.signOut": "Se déconnecter",
6
+ "account.signedInAs": "Connecté comme {name}",
4
7
  "ecosystem.tools": "Outils",
5
8
  "ecosystem.menuHeading": "Nos outils, tous dans le navigateur",
6
9
  "ecosystem.otherTools": "Nos autres outils",
@@ -0,0 +1,56 @@
1
+ /**
2
+ * How a set of conformers divides itself between its minima at a temperature.
3
+ *
4
+ * Each conformer in the list is one minimum of the surface, so the share of
5
+ * molecules sitting in it is its Boltzmann factor over the sum of them all.
6
+ * Mirror-image conformers are separate entries and therefore counted twice,
7
+ * which is right: they are two distinct microstates, and that is what makes
8
+ * butane two-thirds gauche at room temperature rather than one-half.
9
+ *
10
+ * What this is not: a free energy. The weights come from a single energy per
11
+ * conformer, with no vibrational entropy, no zero-point energy and no solvent,
12
+ * so a share is the shape of the answer rather than the answer. It is also only
13
+ * as good as the energies handed to it — see {@link boltzmannConfidence}, which
14
+ * is what a table showing these shares says out loud.
15
+ */
16
+ /** Room temperature, in kelvin, and what a share is quoted at unless asked otherwise. */
17
+ export declare const ROOM_TEMPERATURE = 300;
18
+ /**
19
+ * The gas constant in kcal/(mol·K), matching MMFF94's own energy unit.
20
+ *
21
+ * At {@link ROOM_TEMPERATURE} this makes RT 0.596 kcal/mol, so a conformer one
22
+ * kcal/mol up is populated about a fifth as much as the lowest.
23
+ */
24
+ export declare const GAS_CONSTANT = 0.001987204259;
25
+ /**
26
+ * The share of molecules in each conformer at thermal equilibrium.
27
+ *
28
+ * The energies are taken relative to whichever is lowest, so they may be
29
+ * absolute or already relative. A conformer whose energy is unknown takes no
30
+ * share and is left out of the sum: it cannot be placed on the surface, and
31
+ * spreading the remainder over the others is a smaller lie than inventing a
32
+ * weight for it.
33
+ * @param energies - One energy per conformer in kcal/mol, `null` where unknown.
34
+ * @param temperature - Temperature in kelvin.
35
+ * @default ROOM_TEMPERATURE
36
+ * @returns One share per conformer, from 0 to 1 and summing to 1 over the ones
37
+ * that have an energy; `null` wherever the energy was `null`.
38
+ */
39
+ export declare function boltzmannShares(energies: ReadonlyArray<number | null>, temperature?: number): Array<number | null>;
40
+ /**
41
+ * The factor a share is uncertain by, given how well the energies behind it are
42
+ * known.
43
+ *
44
+ * A population is exponential in the energy gap, so an error in a relative
45
+ * energy is an error in a share by `exp(error / RT)` — and RT is 0.596 kcal/mol
46
+ * at {@link ROOM_TEMPERATURE}. A force field that ranks conformers to within
47
+ * about 1.5 kcal/mol therefore places a population to within a factor of
48
+ * roughly twelve, which is why a share read off one is a shape and not a
49
+ * number.
50
+ * @param energyError - The typical error of a relative energy, kcal/mol.
51
+ * @param temperature - Temperature in kelvin.
52
+ * @default ROOM_TEMPERATURE
53
+ * @returns The multiplicative factor, at least 1.
54
+ */
55
+ export declare function boltzmannConfidence(energyError: number, temperature?: number): number;
56
+ //# sourceMappingURL=conformerBoltzmann.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformerBoltzmann.d.ts","sourceRoot":"","sources":["../../../src/structure/core/conformerBoltzmann.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,yFAAyF;AACzF,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,YAAY,iBAAoB,CAAC;AAE9C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,EACtC,WAAW,GAAE,MAAyB,GACrC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAiCtB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAyB,GACrC,MAAM,CAIR"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * How a set of conformers divides itself between its minima at a temperature.
3
+ *
4
+ * Each conformer in the list is one minimum of the surface, so the share of
5
+ * molecules sitting in it is its Boltzmann factor over the sum of them all.
6
+ * Mirror-image conformers are separate entries and therefore counted twice,
7
+ * which is right: they are two distinct microstates, and that is what makes
8
+ * butane two-thirds gauche at room temperature rather than one-half.
9
+ *
10
+ * What this is not: a free energy. The weights come from a single energy per
11
+ * conformer, with no vibrational entropy, no zero-point energy and no solvent,
12
+ * so a share is the shape of the answer rather than the answer. It is also only
13
+ * as good as the energies handed to it — see {@link boltzmannConfidence}, which
14
+ * is what a table showing these shares says out loud.
15
+ */
16
+ /** Room temperature, in kelvin, and what a share is quoted at unless asked otherwise. */
17
+ export const ROOM_TEMPERATURE = 300;
18
+ /**
19
+ * The gas constant in kcal/(mol·K), matching MMFF94's own energy unit.
20
+ *
21
+ * At {@link ROOM_TEMPERATURE} this makes RT 0.596 kcal/mol, so a conformer one
22
+ * kcal/mol up is populated about a fifth as much as the lowest.
23
+ */
24
+ export const GAS_CONSTANT = 0.001_987_204_259;
25
+ /**
26
+ * The share of molecules in each conformer at thermal equilibrium.
27
+ *
28
+ * The energies are taken relative to whichever is lowest, so they may be
29
+ * absolute or already relative. A conformer whose energy is unknown takes no
30
+ * share and is left out of the sum: it cannot be placed on the surface, and
31
+ * spreading the remainder over the others is a smaller lie than inventing a
32
+ * weight for it.
33
+ * @param energies - One energy per conformer in kcal/mol, `null` where unknown.
34
+ * @param temperature - Temperature in kelvin.
35
+ * @default ROOM_TEMPERATURE
36
+ * @returns One share per conformer, from 0 to 1 and summing to 1 over the ones
37
+ * that have an energy; `null` wherever the energy was `null`.
38
+ */
39
+ export function boltzmannShares(energies, temperature = ROOM_TEMPERATURE) {
40
+ const shares = new Array(energies.length).fill(null);
41
+ if (energies.length === 0)
42
+ return shares;
43
+ let lowest = Number.POSITIVE_INFINITY;
44
+ for (const energy of energies) {
45
+ if (energy !== null && Number.isFinite(energy) && energy < lowest) {
46
+ lowest = energy;
47
+ }
48
+ }
49
+ if (lowest === Number.POSITIVE_INFINITY)
50
+ return shares;
51
+ // Measured from the lowest, so every exponent is at most zero and the sum
52
+ // cannot overflow however far apart the energies are.
53
+ const rt = GAS_CONSTANT * temperature;
54
+ if (!(rt > 0))
55
+ return shares;
56
+ const factors = new Array(energies.length).fill(null);
57
+ let total = 0;
58
+ for (let index = 0; index < energies.length; index++) {
59
+ const energy = energies[index] ?? null;
60
+ if (energy === null || !Number.isFinite(energy))
61
+ continue;
62
+ const factor = Math.exp(-(energy - lowest) / rt);
63
+ factors[index] = factor;
64
+ total += factor;
65
+ }
66
+ if (total === 0)
67
+ return shares;
68
+ for (let index = 0; index < factors.length; index++) {
69
+ const factor = factors[index] ?? null;
70
+ if (factor !== null)
71
+ shares[index] = factor / total;
72
+ }
73
+ return shares;
74
+ }
75
+ /**
76
+ * The factor a share is uncertain by, given how well the energies behind it are
77
+ * known.
78
+ *
79
+ * A population is exponential in the energy gap, so an error in a relative
80
+ * energy is an error in a share by `exp(error / RT)` — and RT is 0.596 kcal/mol
81
+ * at {@link ROOM_TEMPERATURE}. A force field that ranks conformers to within
82
+ * about 1.5 kcal/mol therefore places a population to within a factor of
83
+ * roughly twelve, which is why a share read off one is a shape and not a
84
+ * number.
85
+ * @param energyError - The typical error of a relative energy, kcal/mol.
86
+ * @param temperature - Temperature in kelvin.
87
+ * @default ROOM_TEMPERATURE
88
+ * @returns The multiplicative factor, at least 1.
89
+ */
90
+ export function boltzmannConfidence(energyError, temperature = ROOM_TEMPERATURE) {
91
+ const rt = GAS_CONSTANT * temperature;
92
+ if (!(rt > 0) || !Number.isFinite(energyError) || energyError <= 0)
93
+ return 1;
94
+ return Math.exp(energyError / rt);
95
+ }
96
+ //# sourceMappingURL=conformerBoltzmann.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformerBoltzmann.js","sourceRoot":"","sources":["../../../src/structure/core/conformerBoltzmann.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,yFAAyF;AACzF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAE9C;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAsC,EACtC,cAAsB,gBAAgB;IAEtC,MAAM,MAAM,GAAyB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEzC,IAAI,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACtC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC;YAClE,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;IACH,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,CAAC,iBAAiB;QAAE,OAAO,MAAM,CAAC;IAEvD,0EAA0E;IAC1E,sDAAsD;IACtD,MAAM,EAAE,GAAG,YAAY,GAAG,WAAW,CAAC;IACtC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAE7B,MAAM,OAAO,GAAyB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;QACvC,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAS;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;QACxB,KAAK,IAAI,MAAM,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAE/B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;QACtC,IAAI,MAAM,KAAK,IAAI;YAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC;IACtD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAmB,EACnB,cAAsB,gBAAgB;IAEtC,MAAM,EAAE,GAAG,YAAY,GAAG,WAAW,CAAC;IACtC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;AACpC,CAAC"}