react-iframe-bridge 2.0.2 → 2.1.1

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.
@@ -17,6 +17,10 @@ export interface HomeProps {
17
17
  * Default path the iframe should load, if no path is found in local storage
18
18
  */
19
19
  defaultPath?: string;
20
+ /**
21
+ * List of possible page paths. Used for autocomplete in the path input.
22
+ */
23
+ pages?: string[];
20
24
  /**
21
25
  * Opt out of selecting a sample / selecting no sample before loading the iframe.
22
26
  * The sample selection UI will be hidden and the iframe will automatically load without a selected sample.
@@ -1 +1 @@
1
- {"version":3,"file":"home.d.ts","sourceRoot":"","sources":["../../../src/components/home/home.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,2CAWpC"}
1
+ {"version":3,"file":"home.d.ts","sourceRoot":"","sources":["../../../src/components/home/home.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,2CAgBpC"}
@@ -6,31 +6,32 @@ import HomeIframe from './home_iframe.js';
6
6
  import HomeNoSample from './home_no_sample.js';
7
7
  import HomeSamples from './home_samples.js';
8
8
  export function Home(props) {
9
- const { baseUrl, noSampleSelection, rocUrl, database, defaultPath } = props;
10
- return (_jsx(HomeContextProvider, { rocUrl: rocUrl, database: database, defaultPath: defaultPath, children: _jsx(HomeInternal, { noSampleSelection: noSampleSelection, baseUrl: baseUrl }) }));
9
+ const { baseUrl, noSampleSelection, rocUrl, database, defaultPath, pages } = props;
10
+ return (_jsx(HomeContextProvider, { rocUrl: rocUrl, database: database, defaultPath: defaultPath, children: _jsx(HomeInternal, { noSampleSelection: noSampleSelection, baseUrl: baseUrl, pages: pages }) }));
11
11
  }
12
12
  function HomeInternal(props) {
13
+ const { noSampleSelection, baseUrl, pages } = props;
13
14
  const homeDispatch = useHomeDispatchContext();
14
15
  useEffect(() => {
15
- if (props.noSampleSelection) {
16
+ if (noSampleSelection) {
16
17
  homeDispatch({
17
18
  type: 'OPEN_NO_SAMPLE',
18
19
  });
19
20
  }
20
- }, [props.noSampleSelection, homeDispatch]);
21
+ }, [noSampleSelection, homeDispatch]);
21
22
  return (_jsxs("div", { style: {
22
23
  display: 'flex',
23
24
  flexDirection: 'column',
24
25
  width: '100vw',
25
26
  height: '100vh',
26
- }, children: [_jsx(HomeHeader, {}), _jsxs("div", { style: {
27
+ }, children: [_jsx(HomeHeader, { pages: pages }), _jsxs("div", { style: {
27
28
  marginTop: '0.5rem',
28
29
  display: 'flex',
29
30
  minHeight: 0,
30
31
  flex: 1,
31
32
  flexDirection: 'row',
32
33
  borderTop: '1px solid #d1d5dc',
33
- }, children: [!props.noSampleSelection && (_jsxs("div", { style: {
34
+ }, children: [!noSampleSelection && (_jsxs("div", { style: {
34
35
  display: 'flex',
35
36
  width: '12rem',
36
37
  flexDirection: 'column',
@@ -39,6 +40,6 @@ function HomeInternal(props) {
39
40
  borderRight: '1px solid #d1d5dc',
40
41
  paddingInline: '0.5rem',
41
42
  paddingTop: '1rem',
42
- }, children: [_jsx(HomeNoSample, {}), _jsx(HomeSamples, {})] })), _jsx(HomeIframe, { baseUrl: props.baseUrl })] })] }));
43
+ }, children: [_jsx(HomeNoSample, {}), _jsx(HomeSamples, {})] })), _jsx(HomeIframe, { baseUrl: baseUrl })] })] }));
43
44
  }
44
45
  //# sourceMappingURL=home.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"home.js","sourceRoot":"","sources":["../../../src/components/home/home.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,WAAW,MAAM,mBAAmB,CAAC;AA4B5C,MAAM,UAAU,IAAI,CAAC,KAAgB;IACnC,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC5E,OAAO,CACL,KAAC,mBAAmB,IAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,YAExB,KAAC,YAAY,IAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,GAAI,GACpD,CACvB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAuD;IAC3E,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAC9C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,YAAY,CAAC;gBACX,IAAI,EAAE,gBAAgB;aACvB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5C,OAAO,CACL,eACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,OAAO;SAChB,aAED,KAAC,UAAU,KAAG,EACd,eACE,KAAK,EAAE;oBACL,SAAS,EAAE,QAAQ;oBACnB,OAAO,EAAE,MAAM;oBACf,SAAS,EAAE,CAAC;oBACZ,IAAI,EAAE,CAAC;oBACP,aAAa,EAAE,KAAK;oBACpB,SAAS,EAAE,mBAAmB;iBAC/B,aAEA,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAC3B,eACE,KAAK,EAAE;4BACL,OAAO,EAAE,MAAM;4BACf,KAAK,EAAE,OAAO;4BACd,aAAa,EAAE,QAAQ;4BACvB,GAAG,EAAE,SAAS;4BACd,QAAQ,EAAE,MAAM;4BAChB,WAAW,EAAE,mBAAmB;4BAChC,aAAa,EAAE,QAAQ;4BACvB,UAAU,EAAE,MAAM;yBACnB,aAED,KAAC,YAAY,KAAG,EAChB,KAAC,WAAW,KAAG,IACX,CACP,EACD,KAAC,UAAU,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,IAClC,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"home.js","sourceRoot":"","sources":["../../../src/components/home/home.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAgC5C,MAAM,UAAU,IAAI,CAAC,KAAgB;IACnC,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,GACxE,KAAK,CAAC;IACR,OAAO,CACL,KAAC,mBAAmB,IAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,YAExB,KAAC,YAAY,IACX,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,GACZ,GACkB,CACvB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,KAAiE;IAEjE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACpD,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAC9C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,iBAAiB,EAAE,CAAC;YACtB,YAAY,CAAC;gBACX,IAAI,EAAE,gBAAgB;aACvB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC;IACtC,OAAO,CACL,eACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,OAAO;SAChB,aAED,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,GAAI,EAC5B,eACE,KAAK,EAAE;oBACL,SAAS,EAAE,QAAQ;oBACnB,OAAO,EAAE,MAAM;oBACf,SAAS,EAAE,CAAC;oBACZ,IAAI,EAAE,CAAC;oBACP,aAAa,EAAE,KAAK;oBACpB,SAAS,EAAE,mBAAmB;iBAC/B,aAEA,CAAC,iBAAiB,IAAI,CACrB,eACE,KAAK,EAAE;4BACL,OAAO,EAAE,MAAM;4BACf,KAAK,EAAE,OAAO;4BACd,aAAa,EAAE,QAAQ;4BACvB,GAAG,EAAE,SAAS;4BACd,QAAQ,EAAE,MAAM;4BAChB,WAAW,EAAE,mBAAmB;4BAChC,aAAa,EAAE,QAAQ;4BACvB,UAAU,EAAE,MAAM;yBACnB,aAED,KAAC,YAAY,KAAG,EAChB,KAAC,WAAW,KAAG,IACX,CACP,EACD,KAAC,UAAU,IAAC,OAAO,EAAE,OAAO,GAAI,IAC5B,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,2 +1,6 @@
1
- export default function HomeHeader(): import("react/jsx-runtime").JSX.Element;
1
+ interface HomeHeaderProps {
2
+ pages?: string[];
3
+ }
4
+ export default function HomeHeader(props: HomeHeaderProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
2
6
  //# sourceMappingURL=home_header.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"home_header.d.ts","sourceRoot":"","sources":["../../../src/components/home/home_header.tsx"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,UAAU,4CAwBjC"}
1
+ {"version":3,"file":"home_header.d.ts","sourceRoot":"","sources":["../../../src/components/home/home_header.tsx"],"names":[],"mappings":"AAMA,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,eAAe,2CAgCxD"}
@@ -1,9 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useId } from 'react';
2
3
  import Input from '../input.js';
3
4
  import { useHomeContext, useHomeDispatchContext } from './home_context.js';
4
- export default function HomeHeader() {
5
+ export default function HomeHeader(props) {
6
+ const { pages = [] } = props;
5
7
  const { rocUrl, database, iframePath } = useHomeContext();
6
8
  const dispatch = useHomeDispatchContext();
9
+ const pageListId = useId();
7
10
  return (_jsxs("header", { style: {
8
11
  display: 'flex',
9
12
  flexDirection: 'row',
@@ -11,6 +14,6 @@ export default function HomeHeader() {
11
14
  padding: '0.5rem',
12
15
  }, children: [_jsx(Input, { name: "rocUrl", style: { flex: 1 }, value: rocUrl, readOnly: true }), _jsx(Input, { name: "database", value: database, readOnly: true }), _jsx(Input, { name: "iframe-page", value: iframePath, style: { flex: 1 }, onChange: (event) => {
13
16
  dispatch({ type: 'SET_IFRAME_PAGE', payload: event.target.value });
14
- } })] }));
17
+ }, list: pageListId }), _jsx("datalist", { id: pageListId, children: pages.map((page) => (_jsx("option", { value: page }, page))) })] }));
15
18
  }
16
19
  //# sourceMappingURL=home_header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"home_header.js","sourceRoot":"","sources":["../../../src/components/home/home_header.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3E,MAAM,CAAC,OAAO,UAAU,UAAU;IAChC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,CAAC;IAC1D,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;IAC1C,OAAO,CACL,kBACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,KAAK;YACpB,GAAG,EAAE,MAAM;YACX,OAAO,EAAE,QAAQ;SAClB,aAED,KAAC,KAAK,IAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAG,EACnE,KAAC,KAAK,IAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,SAAG,EACnD,KAAC,KAAK,IACJ,IAAI,EAAC,aAAa,EAClB,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBACrE,CAAC,GACD,IACK,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"home_header.js","sourceRoot":"","sources":["../../../src/components/home/home_header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAM3E,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAsB;IACvD,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,CAAC;IAC1D,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,KAAK,EAAE,CAAC;IAC3B,OAAO,CACL,kBACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,KAAK;YACpB,GAAG,EAAE,MAAM;YACX,OAAO,EAAE,QAAQ;SAClB,aAED,KAAC,KAAK,IAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAG,EACnE,KAAC,KAAK,IAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,SAAG,EACnD,KAAC,KAAK,IACJ,IAAI,EAAC,aAAa,EAClB,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBACrE,CAAC,EACD,IAAI,EAAE,UAAU,GAChB,EACF,mBAAU,EAAE,EAAE,UAAU,YACrB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,iBAAmB,KAAK,EAAE,IAAI,IAAjB,IAAI,CAAiB,CACnC,CAAC,GACO,IACJ,CACV,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"home_samples.js","sourceRoot":"","sources":["../../../src/components/home/home_samples.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,OAAO,OAAO,MAAM,eAAe,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAE9C,MAAM,CAAC,OAAO,UAAU,WAAW;IACjC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,CAAW,YAAY,CAAC,CAAC;IACvE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,yDAAiC,KAAK,EAAE,OAAO,IAAO,CAAC;IAChE,CAAC;IACD,OAAO,CACL,8BACE,aACE,KAAK,EAAE;oBACL,YAAY,EAAE,MAAM;oBACpB,SAAS,EAAE,QAAQ;oBACnB,QAAQ,EAAE,UAAU;oBACpB,UAAU,EAAE,MAAM;iBACnB,2BAGE,EACL,cAAK,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,YACpB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAC,OAAO,KAAG,CAAC,CAAC,CAAC,KAAC,SAAS,IAAC,OAAO,EAAE,MAAM,GAAI,GAC9D,IACL,CACJ,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAmD;IACpE,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;IAC1C,SAAS,YAAY,CAAC,EAAU;QAC9B,QAAQ,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,YACpE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC7B,KAAC,YAAY,IAEX,QAAQ,EAAE,MAAM,CAAC,EAAE,KAAK,cAAc,EACtC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,EAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,IAHjC,MAAM,CAAC,EAAE,CAId,CACH,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,OAAO;IACd,OAAO,CACL,cACE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,YAEvE,KAAC,OAAO,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAI,GACnE,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"home_samples.js","sourceRoot":"","sources":["../../../src/components/home/home_samples.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,OAAO,OAAO,MAAM,eAAe,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAE9C,MAAM,CAAC,OAAO,UAAU,WAAW;IACjC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,CAAiB,YAAY,CAAC,CAAC;IAC7E,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,yDAAiC,KAAK,EAAE,OAAO,IAAO,CAAC;IAChE,CAAC;IACD,OAAO,CACL,8BACE,aACE,KAAK,EAAE;oBACL,YAAY,EAAE,MAAM;oBACpB,SAAS,EAAE,QAAQ;oBACnB,QAAQ,EAAE,UAAU;oBACpB,UAAU,EAAE,MAAM;iBACnB,2BAGE,EACL,cAAK,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,YACpB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAC,OAAO,KAAG,CAAC,CAAC,CAAC,KAAC,SAAS,IAAC,OAAO,EAAE,MAAM,GAAI,GAC9D,IACL,CACJ,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAyD;IAC1E,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;IAC1C,SAAS,YAAY,CAAC,EAAU;QAC9B,QAAQ,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,YACpE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC7B,KAAC,YAAY,IAEX,QAAQ,EAAE,MAAM,CAAC,EAAE,KAAK,cAAc,EACtC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,EAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,IAHjC,MAAM,CAAC,EAAE,CAId,CACH,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,OAAO;IACd,OAAO,CACL,cACE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,YAEvE,KAAC,OAAO,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAI,GACnE,CACP,CAAC;AACJ,CAAC"}
@@ -5,6 +5,7 @@ interface InputProps {
5
5
  value: string;
6
6
  readOnly?: boolean;
7
7
  onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
8
+ list?: string;
8
9
  }
9
10
  export default function Input(props: InputProps): import("react/jsx-runtime").JSX.Element;
10
11
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAExD,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CAC3D;AAED,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,KAAK,EAAE,UAAU,2CAoB9C"}
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAExD,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,KAAK,EAAE,UAAU,2CAkB9C"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  export default function Input(props) {
3
- return (_jsx("input", { name: props.name, type: "text", style: {
3
+ const { style, ...otherProps } = props;
4
+ return (_jsx("input", { type: "text", style: {
4
5
  appearance: 'none',
5
6
  border: '1px solid #4a5565',
6
7
  backgroundColor: 'white',
@@ -8,7 +9,7 @@ export default function Input(props) {
8
9
  paddingBlock: '0.5rem',
9
10
  fontSize: '1rem',
10
11
  lineHeight: 1,
11
- ...props.style,
12
- }, value: props.value, readOnly: props.readOnly, onChange: props.onChange }));
12
+ ...style,
13
+ }, ...otherProps }));
13
14
  }
14
15
  //# sourceMappingURL=input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":";AAUA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,KAAiB;IAC7C,OAAO,CACL,gBACE,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,IAAI,EAAC,MAAM,EACX,KAAK,EAAE;YACL,UAAU,EAAE,MAAM;YAClB,MAAM,EAAE,mBAAmB;YAC3B,eAAe,EAAE,OAAO;YACxB,aAAa,EAAE,SAAS;YACxB,YAAY,EAAE,QAAQ;YACtB,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,CAAC;YACb,GAAG,KAAK,CAAC,KAAK;SACf,EACD,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,GACxB,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":";AAWA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,KAAiB;IAC7C,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACvC,OAAO,CACL,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE;YACL,UAAU,EAAE,MAAM;YAClB,MAAM,EAAE,mBAAmB;YAC3B,eAAe,EAAE,OAAO;YACxB,aAAa,EAAE,SAAS;YACxB,YAAY,EAAE,QAAQ;YACtB,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,CAAC;YACb,GAAG,KAAK;SACT,KACG,UAAU,GACd,CACH,CAAC;AACJ,CAAC"}
package/lib/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { Home } from './components/home/home.js';
2
2
  export { RocProvider, useRoc } from './contexts/roc.js';
3
3
  export { IframeBridgeProvider, useIframeBridgeContext, useIframeBridgeSample, } from './contexts/iframe_bridge.js';
4
+ export * from './types/db.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,cAAc,eAAe,CAAC"}
package/lib/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { Home } from './components/home/home.js';
2
2
  export { RocProvider, useRoc } from './contexts/roc.js';
3
3
  export { IframeBridgeProvider, useIframeBridgeContext, useIframeBridgeSample, } from './contexts/iframe_bridge.js';
4
+ export * from './types/db.js';
4
5
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,cAAc,eAAe,CAAC"}
package/lib/types/db.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export interface TocEntry {
1
+ export interface SampleTocEntry {
2
2
  mf: string;
3
3
  mw: number;
4
4
  keyword: string[];
@@ -79,5 +79,6 @@ export interface SampleEntrySpectraNmr {
79
79
  jcamp: {
80
80
  filename: string;
81
81
  };
82
+ nmrium: any;
82
83
  }
83
84
  //# sourceMappingURL=db.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/types/db.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAChC,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE;YACH,KAAK,EAAE,MAAM,CAAC;YACd,WAAW,EAAE,MAAM,CAAC;YACpB,KAAK,EAAE,MAAM,EAAE,CAAC;SACjB,CAAC;KACH,CAAC;IACF,UAAU,EAAE;QACV,GAAG,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE;QACP,GAAG,EAAE,qBAAqB,EAAE,CAAC;KAC9B,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/types/db.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAChC,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE;YACH,KAAK,EAAE,MAAM,CAAC;YACd,WAAW,EAAE,MAAM,CAAC;YACpB,KAAK,EAAE,MAAM,EAAE,CAAC;SACjB,CAAC;KACH,CAAC;IACF,UAAU,EAAE;QACV,GAAG,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE;QACP,GAAG,EAAE,qBAAqB,EAAE,CAAC;KAC9B,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,EAAE,GAAG,CAAC;CACb"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-iframe-bridge",
3
- "version": "2.0.2",
3
+ "version": "2.1.1",
4
4
  "description": "React hooks and components to work with iframe-bridge.",
5
5
  "type": "module",
6
6
  "exports": "./lib/index.js",
@@ -25,6 +25,10 @@ export interface HomeProps {
25
25
  * Default path the iframe should load, if no path is found in local storage
26
26
  */
27
27
  defaultPath?: string;
28
+ /**
29
+ * List of possible page paths. Used for autocomplete in the path input.
30
+ */
31
+ pages?: string[];
28
32
  /**
29
33
  * Opt out of selecting a sample / selecting no sample before loading the iframe.
30
34
  * The sample selection UI will be hidden and the iframe will automatically load without a selected sample.
@@ -33,27 +37,35 @@ export interface HomeProps {
33
37
  }
34
38
 
35
39
  export function Home(props: HomeProps) {
36
- const { baseUrl, noSampleSelection, rocUrl, database, defaultPath } = props;
40
+ const { baseUrl, noSampleSelection, rocUrl, database, defaultPath, pages } =
41
+ props;
37
42
  return (
38
43
  <HomeContextProvider
39
44
  rocUrl={rocUrl}
40
45
  database={database}
41
46
  defaultPath={defaultPath}
42
47
  >
43
- <HomeInternal noSampleSelection={noSampleSelection} baseUrl={baseUrl} />
48
+ <HomeInternal
49
+ noSampleSelection={noSampleSelection}
50
+ baseUrl={baseUrl}
51
+ pages={pages}
52
+ />
44
53
  </HomeContextProvider>
45
54
  );
46
55
  }
47
56
 
48
- function HomeInternal(props: Pick<HomeProps, 'baseUrl' | 'noSampleSelection'>) {
57
+ function HomeInternal(
58
+ props: Pick<HomeProps, 'baseUrl' | 'noSampleSelection' | 'pages'>,
59
+ ) {
60
+ const { noSampleSelection, baseUrl, pages } = props;
49
61
  const homeDispatch = useHomeDispatchContext();
50
62
  useEffect(() => {
51
- if (props.noSampleSelection) {
63
+ if (noSampleSelection) {
52
64
  homeDispatch({
53
65
  type: 'OPEN_NO_SAMPLE',
54
66
  });
55
67
  }
56
- }, [props.noSampleSelection, homeDispatch]);
68
+ }, [noSampleSelection, homeDispatch]);
57
69
  return (
58
70
  <div
59
71
  style={{
@@ -63,7 +75,7 @@ function HomeInternal(props: Pick<HomeProps, 'baseUrl' | 'noSampleSelection'>) {
63
75
  height: '100vh',
64
76
  }}
65
77
  >
66
- <HomeHeader />
78
+ <HomeHeader pages={pages} />
67
79
  <div
68
80
  style={{
69
81
  marginTop: '0.5rem',
@@ -74,7 +86,7 @@ function HomeInternal(props: Pick<HomeProps, 'baseUrl' | 'noSampleSelection'>) {
74
86
  borderTop: '1px solid #d1d5dc',
75
87
  }}
76
88
  >
77
- {!props.noSampleSelection && (
89
+ {!noSampleSelection && (
78
90
  <div
79
91
  style={{
80
92
  display: 'flex',
@@ -91,7 +103,7 @@ function HomeInternal(props: Pick<HomeProps, 'baseUrl' | 'noSampleSelection'>) {
91
103
  <HomeSamples />
92
104
  </div>
93
105
  )}
94
- <HomeIframe baseUrl={props.baseUrl} />
106
+ <HomeIframe baseUrl={baseUrl} />
95
107
  </div>
96
108
  </div>
97
109
  );
@@ -1,10 +1,18 @@
1
+ import { useId } from 'react';
2
+
1
3
  import Input from '../input.js';
2
4
 
3
5
  import { useHomeContext, useHomeDispatchContext } from './home_context.js';
4
6
 
5
- export default function HomeHeader() {
7
+ interface HomeHeaderProps {
8
+ pages?: string[];
9
+ }
10
+
11
+ export default function HomeHeader(props: HomeHeaderProps) {
12
+ const { pages = [] } = props;
6
13
  const { rocUrl, database, iframePath } = useHomeContext();
7
14
  const dispatch = useHomeDispatchContext();
15
+ const pageListId = useId();
8
16
  return (
9
17
  <header
10
18
  style={{
@@ -23,7 +31,13 @@ export default function HomeHeader() {
23
31
  onChange={(event) => {
24
32
  dispatch({ type: 'SET_IFRAME_PAGE', payload: event.target.value });
25
33
  }}
34
+ list={pageListId}
26
35
  />
36
+ <datalist id={pageListId}>
37
+ {pages.map((page) => (
38
+ <option key={page} value={page} />
39
+ ))}
40
+ </datalist>
27
41
  </header>
28
42
  );
29
43
  }
@@ -1,13 +1,13 @@
1
1
  import type { RocQueryResult } from '../../hooks/use_roc_query.js';
2
2
  import { useRocQuery } from '../../hooks/use_roc_query.js';
3
- import type { TocEntry } from '../../types/db.js';
3
+ import type { SampleTocEntry } from '../../types/db.js';
4
4
  import Spinner from '../spinner.js';
5
5
 
6
6
  import { useHomeContext, useHomeDispatchContext } from './home_context.js';
7
7
  import HomeSelector from './home_selector.js';
8
8
 
9
9
  export default function HomeSamples() {
10
- const { loading, error, result } = useRocQuery<TocEntry>('sample_toc');
10
+ const { loading, error, result } = useRocQuery<SampleTocEntry>('sample_toc');
11
11
  if (error) {
12
12
  return <div>Failed to load sample ToC: {error?.message}</div>;
13
13
  }
@@ -30,7 +30,7 @@ export default function HomeSamples() {
30
30
  );
31
31
  }
32
32
 
33
- function SampleToc(props: { samples: Array<RocQueryResult<TocEntry>> }) {
33
+ function SampleToc(props: { samples: Array<RocQueryResult<SampleTocEntry>> }) {
34
34
  const { selectedSample } = useHomeContext();
35
35
  const dispatch = useHomeDispatchContext();
36
36
  function selectSample(id: string) {
@@ -6,12 +6,13 @@ interface InputProps {
6
6
  value: string;
7
7
  readOnly?: boolean;
8
8
  onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
9
+ list?: string;
9
10
  }
10
11
 
11
12
  export default function Input(props: InputProps) {
13
+ const { style, ...otherProps } = props;
12
14
  return (
13
15
  <input
14
- name={props.name}
15
16
  type="text"
16
17
  style={{
17
18
  appearance: 'none',
@@ -21,11 +22,9 @@ export default function Input(props: InputProps) {
21
22
  paddingBlock: '0.5rem',
22
23
  fontSize: '1rem',
23
24
  lineHeight: 1,
24
- ...props.style,
25
+ ...style,
25
26
  }}
26
- value={props.value}
27
- readOnly={props.readOnly}
28
- onChange={props.onChange}
27
+ {...otherProps}
29
28
  />
30
29
  );
31
30
  }
package/src/index.ts CHANGED
@@ -5,3 +5,4 @@ export {
5
5
  useIframeBridgeContext,
6
6
  useIframeBridgeSample,
7
7
  } from './contexts/iframe_bridge.js';
8
+ export * from './types/db.js';
package/src/types/db.ts CHANGED
@@ -1,4 +1,4 @@
1
- export interface TocEntry {
1
+ export interface SampleTocEntry {
2
2
  mf: string;
3
3
  mw: number;
4
4
  keyword: string[];
@@ -78,4 +78,5 @@ export interface SampleEntrySpectraNmr {
78
78
  jcamp: {
79
79
  filename: string;
80
80
  };
81
+ nmrium: any;
81
82
  }