@khanacademy/keypad-context 2.0.0 → 3.0.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.
@@ -0,0 +1,48 @@
1
+ import * as React from 'react';
2
+ import { useState, useMemo } from 'react';
3
+
4
+ /**
5
+ * KeypadContext provides a way to the Keypad and Perseus Renderers to
6
+ * communicate.
7
+ *
8
+ * The StatefulKeypadContextProvider wraps the application
9
+ * while KeypadContext.Consumer wraps things that need this state:
10
+ * - mobile keypad usages
11
+ * - Perseus Renderers (Server/Item/Article)
12
+ */
13
+ // @ts-expect-error - TS2322 - Type 'Context<{ setKeypadElement: (keypadElement: HTMLElement | null | undefined) => void; keypadElement: null; setRenderer: (renderer: RendererInterface | null | undefined) => void; renderer: null; setScrollableElement: (scrollableElement: HTMLElement | ... 1 more ... | undefined) => void; scrollableElement: null; }>' is not assignable to type 'Context<KeypadContext>'.
14
+ const KeypadContext = /*#__PURE__*/React.createContext({
15
+ setKeypadActive: keypadActive => {},
16
+ keypadActive: false,
17
+ setKeypadElement: keypadElement => {},
18
+ keypadElement: null,
19
+ setRenderer: renderer => {},
20
+ renderer: null,
21
+ setScrollableElement: scrollableElement => {},
22
+ scrollableElement: null
23
+ });
24
+ function StatefulKeypadContextProvider(props) {
25
+ // whether or not to display the keypad
26
+ const [keypadActive, setKeypadActive] = useState(false);
27
+ // used to communicate between the keypad and the Renderer
28
+ const [keypadElement, setKeypadElement] = useState();
29
+ // this is a KeypadContextRendererInterface from Perseus
30
+ const [renderer, setRenderer] = useState();
31
+ const [scrollableElement, setScrollableElement] = useState();
32
+ const memoizedValue = useMemo(() => ({
33
+ keypadActive,
34
+ setKeypadActive,
35
+ keypadElement,
36
+ setKeypadElement,
37
+ renderer,
38
+ setRenderer,
39
+ scrollableElement,
40
+ setScrollableElement
41
+ }), [keypadActive, setKeypadActive, keypadElement, setKeypadElement, renderer, setRenderer, scrollableElement, setScrollableElement]);
42
+ return /*#__PURE__*/React.createElement(KeypadContext.Provider, {
43
+ value: memoizedValue
44
+ }, props.children);
45
+ }
46
+
47
+ export { KeypadContext, StatefulKeypadContextProvider };
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/keypad-context.tsx"],"sourcesContent":["/**\n * KeypadContext provides a way to the Keypad and Perseus Renderers to\n * communicate.\n *\n * The StatefulKeypadContextProvider wraps the application\n * while KeypadContext.Consumer wraps things that need this state:\n * - mobile keypad usages\n * - Perseus Renderers (Server/Item/Article)\n */\nimport * as React from \"react\";\nimport {useState, useMemo} from \"react\";\n\nimport type {KeypadContextType} from \"./types\";\nimport type {KeypadContextRendererInterface} from \"@khanacademy/perseus-core\";\n\n// @ts-expect-error - TS2322 - Type 'Context<{ setKeypadElement: (keypadElement: HTMLElement | null | undefined) => void; keypadElement: null; setRenderer: (renderer: RendererInterface | null | undefined) => void; renderer: null; setScrollableElement: (scrollableElement: HTMLElement | ... 1 more ... | undefined) => void; scrollableElement: null; }>' is not assignable to type 'Context<KeypadContext>'.\nexport const KeypadContext: React.Context<KeypadContextType> =\n React.createContext({\n setKeypadActive: (keypadActive) => {},\n keypadActive: false,\n setKeypadElement: (keypadElement) => {},\n keypadElement: null,\n setRenderer: (renderer) => {},\n renderer: null,\n setScrollableElement: (scrollableElement) => {},\n scrollableElement: null,\n });\n\ntype Props = React.PropsWithChildren<unknown>;\n\nexport function StatefulKeypadContextProvider(props: Props) {\n // whether or not to display the keypad\n const [keypadActive, setKeypadActive] = useState<boolean>(false);\n // used to communicate between the keypad and the Renderer\n const [keypadElement, setKeypadElement] = useState<any>();\n // this is a KeypadContextRendererInterface from Perseus\n const [renderer, setRenderer] =\n useState<KeypadContextRendererInterface | null>();\n const [scrollableElement, setScrollableElement] =\n useState<HTMLElement | null>();\n\n const memoizedValue = useMemo(\n () => ({\n keypadActive,\n setKeypadActive,\n keypadElement,\n setKeypadElement,\n renderer,\n setRenderer,\n scrollableElement,\n setScrollableElement,\n }),\n [\n keypadActive,\n setKeypadActive,\n keypadElement,\n setKeypadElement,\n renderer,\n setRenderer,\n scrollableElement,\n setScrollableElement,\n ],\n );\n\n return (\n <KeypadContext.Provider value={memoizedValue}>\n {props.children}\n </KeypadContext.Provider>\n );\n}\n"],"names":["KeypadContext","React","createContext","setKeypadActive","keypadActive","setKeypadElement","keypadElement","setRenderer","renderer","setScrollableElement","scrollableElement","StatefulKeypadContextProvider","props","useState","memoizedValue","useMemo","createElement","Provider","value","children"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;MACaA,aAA+C,gBACxDC,KAAK,CAACC,aAAa,CAAC;AAChBC,EAAAA,eAAe,EAAGC,YAAY,IAAK,EAAE;AACrCA,EAAAA,YAAY,EAAE,KAAK;AACnBC,EAAAA,gBAAgB,EAAGC,aAAa,IAAK,EAAE;AACvCA,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,WAAW,EAAGC,QAAQ,IAAK,EAAE;AAC7BA,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,oBAAoB,EAAGC,iBAAiB,IAAK,EAAE;AAC/CA,EAAAA,iBAAiB,EAAE;AACvB,CAAC;AAIE,SAASC,6BAA6BA,CAACC,KAAY,EAAE;AACxD;EACA,MAAM,CAACR,YAAY,EAAED,eAAe,CAAC,GAAGU,QAAQ,CAAU,KAAK,CAAC;AAChE;EACA,MAAM,CAACP,aAAa,EAAED,gBAAgB,CAAC,GAAGQ,QAAQ,EAAO;AACzD;EACA,MAAM,CAACL,QAAQ,EAAED,WAAW,CAAC,GACzBM,QAAQ,EAAyC;EACrD,MAAM,CAACH,iBAAiB,EAAED,oBAAoB,CAAC,GAC3CI,QAAQ,EAAsB;AAElC,EAAA,MAAMC,aAAa,GAAGC,OAAO,CACzB,OAAO;IACHX,YAAY;IACZD,eAAe;IACfG,aAAa;IACbD,gBAAgB;IAChBG,QAAQ;IACRD,WAAW;IACXG,iBAAiB;AACjBD,IAAAA;AACJ,GAAC,CAAC,EACF,CACIL,YAAY,EACZD,eAAe,EACfG,aAAa,EACbD,gBAAgB,EAChBG,QAAQ,EACRD,WAAW,EACXG,iBAAiB,EACjBD,oBAAoB,CAE5B,CAAC;AAED,EAAA,oBACIR,KAAA,CAAAe,aAAA,CAAChB,aAAa,CAACiB,QAAQ,EAAA;AAACC,IAAAA,KAAK,EAAEJ;GAC1BF,EAAAA,KAAK,CAACO,QACa,CAAC;AAEjC;;;;"}
package/dist/index.js CHANGED
@@ -1,7 +1,40 @@
1
- import * as React from 'react';
2
- import { useState, useMemo } from 'react';
1
+ 'use strict';
3
2
 
4
- const KeypadContext = React.createContext({
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+
7
+ function _interopNamespaceCompat(e) {
8
+ if (e && typeof e === 'object' && 'default' in e) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n.default = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ var React__namespace = /*#__PURE__*/_interopNamespaceCompat(React);
26
+
27
+ /**
28
+ * KeypadContext provides a way to the Keypad and Perseus Renderers to
29
+ * communicate.
30
+ *
31
+ * The StatefulKeypadContextProvider wraps the application
32
+ * while KeypadContext.Consumer wraps things that need this state:
33
+ * - mobile keypad usages
34
+ * - Perseus Renderers (Server/Item/Article)
35
+ */
36
+ // @ts-expect-error - TS2322 - Type 'Context<{ setKeypadElement: (keypadElement: HTMLElement | null | undefined) => void; keypadElement: null; setRenderer: (renderer: RendererInterface | null | undefined) => void; renderer: null; setScrollableElement: (scrollableElement: HTMLElement | ... 1 more ... | undefined) => void; scrollableElement: null; }>' is not assignable to type 'Context<KeypadContext>'.
37
+ const KeypadContext = /*#__PURE__*/React__namespace.createContext({
5
38
  setKeypadActive: keypadActive => {},
6
39
  keypadActive: false,
7
40
  setKeypadElement: keypadElement => {},
@@ -12,11 +45,14 @@ const KeypadContext = React.createContext({
12
45
  scrollableElement: null
13
46
  });
14
47
  function StatefulKeypadContextProvider(props) {
15
- const [keypadActive, setKeypadActive] = useState(false);
16
- const [keypadElement, setKeypadElement] = useState();
17
- const [renderer, setRenderer] = useState();
18
- const [scrollableElement, setScrollableElement] = useState();
19
- const memoizedValue = useMemo(() => ({
48
+ // whether or not to display the keypad
49
+ const [keypadActive, setKeypadActive] = React.useState(false);
50
+ // used to communicate between the keypad and the Renderer
51
+ const [keypadElement, setKeypadElement] = React.useState();
52
+ // this is a KeypadContextRendererInterface from Perseus
53
+ const [renderer, setRenderer] = React.useState();
54
+ const [scrollableElement, setScrollableElement] = React.useState();
55
+ const memoizedValue = React.useMemo(() => ({
20
56
  keypadActive,
21
57
  setKeypadActive,
22
58
  keypadElement,
@@ -26,10 +62,11 @@ function StatefulKeypadContextProvider(props) {
26
62
  scrollableElement,
27
63
  setScrollableElement
28
64
  }), [keypadActive, setKeypadActive, keypadElement, setKeypadElement, renderer, setRenderer, scrollableElement, setScrollableElement]);
29
- return React.createElement(KeypadContext.Provider, {
65
+ return /*#__PURE__*/React__namespace.createElement(KeypadContext.Provider, {
30
66
  value: memoizedValue
31
67
  }, props.children);
32
68
  }
33
69
 
34
- export { KeypadContext, StatefulKeypadContextProvider };
70
+ exports.KeypadContext = KeypadContext;
71
+ exports.StatefulKeypadContextProvider = StatefulKeypadContextProvider;
35
72
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/keypad-context.tsx"],"sourcesContent":["/**\n * KeypadContext provides a way to the Keypad and Perseus Renderers to\n * communicate.\n *\n * The StatefulKeypadContextProvider wraps the application\n * while KeypadContext.Consumer wraps things that need this state:\n * - mobile keypad usages\n * - Perseus Renderers (Server/Item/Article)\n */\nimport * as React from \"react\";\nimport {useState, useMemo} from \"react\";\n\nimport type {KeypadContextType} from \"./types\";\nimport type {KeypadContextRendererInterface} from \"@khanacademy/perseus-core\";\n\n// @ts-expect-error - TS2322 - Type 'Context<{ setKeypadElement: (keypadElement: HTMLElement | null | undefined) => void; keypadElement: null; setRenderer: (renderer: RendererInterface | null | undefined) => void; renderer: null; setScrollableElement: (scrollableElement: HTMLElement | ... 1 more ... | undefined) => void; scrollableElement: null; }>' is not assignable to type 'Context<KeypadContext>'.\nexport const KeypadContext: React.Context<KeypadContextType> =\n React.createContext({\n setKeypadActive: (keypadActive) => {},\n keypadActive: false,\n setKeypadElement: (keypadElement) => {},\n keypadElement: null,\n setRenderer: (renderer) => {},\n renderer: null,\n setScrollableElement: (scrollableElement) => {},\n scrollableElement: null,\n });\n\ntype Props = React.PropsWithChildren<unknown>;\n\nexport function StatefulKeypadContextProvider(props: Props) {\n // whether or not to display the keypad\n const [keypadActive, setKeypadActive] = useState<boolean>(false);\n // used to communicate between the keypad and the Renderer\n const [keypadElement, setKeypadElement] = useState<any>();\n // this is a KeypadContextRendererInterface from Perseus\n const [renderer, setRenderer] =\n useState<KeypadContextRendererInterface | null>();\n const [scrollableElement, setScrollableElement] =\n useState<HTMLElement | null>();\n\n const memoizedValue = useMemo(\n () => ({\n keypadActive,\n setKeypadActive,\n keypadElement,\n setKeypadElement,\n renderer,\n setRenderer,\n scrollableElement,\n setScrollableElement,\n }),\n [\n keypadActive,\n setKeypadActive,\n keypadElement,\n setKeypadElement,\n renderer,\n setRenderer,\n scrollableElement,\n setScrollableElement,\n ],\n );\n\n return (\n <KeypadContext.Provider value={memoizedValue}>\n {props.children}\n </KeypadContext.Provider>\n );\n}\n"],"names":["KeypadContext","React","createContext","setKeypadActive","keypadActive","setKeypadElement","keypadElement","setRenderer","renderer","setScrollableElement","scrollableElement","StatefulKeypadContextProvider","props","useState","memoizedValue","useMemo","createElement","Provider","value","children"],"mappings":";;;MAgBaA,aAA+C,GACxDC,KAAK,CAACC,aAAa,CAAC;AAChBC,EAAAA,eAAe,EAAGC,YAAY,IAAK,EAAE;AACrCA,EAAAA,YAAY,EAAE,KAAK;AACnBC,EAAAA,gBAAgB,EAAGC,aAAa,IAAK,EAAE;AACvCA,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,WAAW,EAAGC,QAAQ,IAAK,EAAE;AAC7BA,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,oBAAoB,EAAGC,iBAAiB,IAAK,EAAE;AAC/CA,EAAAA,iBAAiB,EAAE;AACvB,CAAC;AAIE,SAASC,6BAA6BA,CAACC,KAAY,EAAE;EAExD,MAAM,CAACR,YAAY,EAAED,eAAe,CAAC,GAAGU,QAAQ,CAAU,KAAK,CAAC;EAEhE,MAAM,CAACP,aAAa,EAAED,gBAAgB,CAAC,GAAGQ,QAAQ,EAAO;EAEzD,MAAM,CAACL,QAAQ,EAAED,WAAW,CAAC,GACzBM,QAAQ,EAAyC;EACrD,MAAM,CAACH,iBAAiB,EAAED,oBAAoB,CAAC,GAC3CI,QAAQ,EAAsB;AAElC,EAAA,MAAMC,aAAa,GAAGC,OAAO,CACzB,OAAO;IACHX,YAAY;IACZD,eAAe;IACfG,aAAa;IACbD,gBAAgB;IAChBG,QAAQ;IACRD,WAAW;IACXG,iBAAiB;AACjBD,IAAAA;AACJ,GAAC,CAAC,EACF,CACIL,YAAY,EACZD,eAAe,EACfG,aAAa,EACbD,gBAAgB,EAChBG,QAAQ,EACRD,WAAW,EACXG,iBAAiB,EACjBD,oBAAoB,CAE5B,CAAC;AAED,EAAA,OACIR,KAAA,CAAAe,aAAA,CAAChB,aAAa,CAACiB,QAAQ,EAAA;AAACC,IAAAA,KAAK,EAAEJ;GAC1BF,EAAAA,KAAK,CAACO,QACa,CAAC;AAEjC;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/keypad-context.tsx"],"sourcesContent":["/**\n * KeypadContext provides a way to the Keypad and Perseus Renderers to\n * communicate.\n *\n * The StatefulKeypadContextProvider wraps the application\n * while KeypadContext.Consumer wraps things that need this state:\n * - mobile keypad usages\n * - Perseus Renderers (Server/Item/Article)\n */\nimport * as React from \"react\";\nimport {useState, useMemo} from \"react\";\n\nimport type {KeypadContextType} from \"./types\";\nimport type {KeypadContextRendererInterface} from \"@khanacademy/perseus-core\";\n\n// @ts-expect-error - TS2322 - Type 'Context<{ setKeypadElement: (keypadElement: HTMLElement | null | undefined) => void; keypadElement: null; setRenderer: (renderer: RendererInterface | null | undefined) => void; renderer: null; setScrollableElement: (scrollableElement: HTMLElement | ... 1 more ... | undefined) => void; scrollableElement: null; }>' is not assignable to type 'Context<KeypadContext>'.\nexport const KeypadContext: React.Context<KeypadContextType> =\n React.createContext({\n setKeypadActive: (keypadActive) => {},\n keypadActive: false,\n setKeypadElement: (keypadElement) => {},\n keypadElement: null,\n setRenderer: (renderer) => {},\n renderer: null,\n setScrollableElement: (scrollableElement) => {},\n scrollableElement: null,\n });\n\ntype Props = React.PropsWithChildren<unknown>;\n\nexport function StatefulKeypadContextProvider(props: Props) {\n // whether or not to display the keypad\n const [keypadActive, setKeypadActive] = useState<boolean>(false);\n // used to communicate between the keypad and the Renderer\n const [keypadElement, setKeypadElement] = useState<any>();\n // this is a KeypadContextRendererInterface from Perseus\n const [renderer, setRenderer] =\n useState<KeypadContextRendererInterface | null>();\n const [scrollableElement, setScrollableElement] =\n useState<HTMLElement | null>();\n\n const memoizedValue = useMemo(\n () => ({\n keypadActive,\n setKeypadActive,\n keypadElement,\n setKeypadElement,\n renderer,\n setRenderer,\n scrollableElement,\n setScrollableElement,\n }),\n [\n keypadActive,\n setKeypadActive,\n keypadElement,\n setKeypadElement,\n renderer,\n setRenderer,\n scrollableElement,\n setScrollableElement,\n ],\n );\n\n return (\n <KeypadContext.Provider value={memoizedValue}>\n {props.children}\n </KeypadContext.Provider>\n );\n}\n"],"names":["KeypadContext","React","createContext","setKeypadActive","keypadActive","setKeypadElement","keypadElement","setRenderer","renderer","setScrollableElement","scrollableElement","StatefulKeypadContextProvider","props","useState","memoizedValue","useMemo","createElement","Provider","value","children"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;MACaA,aAA+C,gBACxDC,gBAAK,CAACC,aAAa,CAAC;AAChBC,EAAAA,eAAe,EAAGC,YAAY,IAAK,EAAE;AACrCA,EAAAA,YAAY,EAAE,KAAK;AACnBC,EAAAA,gBAAgB,EAAGC,aAAa,IAAK,EAAE;AACvCA,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,WAAW,EAAGC,QAAQ,IAAK,EAAE;AAC7BA,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,oBAAoB,EAAGC,iBAAiB,IAAK,EAAE;AAC/CA,EAAAA,iBAAiB,EAAE;AACvB,CAAC;AAIE,SAASC,6BAA6BA,CAACC,KAAY,EAAE;AACxD;EACA,MAAM,CAACR,YAAY,EAAED,eAAe,CAAC,GAAGU,cAAQ,CAAU,KAAK,CAAC;AAChE;EACA,MAAM,CAACP,aAAa,EAAED,gBAAgB,CAAC,GAAGQ,cAAQ,EAAO;AACzD;EACA,MAAM,CAACL,QAAQ,EAAED,WAAW,CAAC,GACzBM,cAAQ,EAAyC;EACrD,MAAM,CAACH,iBAAiB,EAAED,oBAAoB,CAAC,GAC3CI,cAAQ,EAAsB;AAElC,EAAA,MAAMC,aAAa,GAAGC,aAAO,CACzB,OAAO;IACHX,YAAY;IACZD,eAAe;IACfG,aAAa;IACbD,gBAAgB;IAChBG,QAAQ;IACRD,WAAW;IACXG,iBAAiB;AACjBD,IAAAA;AACJ,GAAC,CAAC,EACF,CACIL,YAAY,EACZD,eAAe,EACfG,aAAa,EACbD,gBAAgB,EAChBG,QAAQ,EACRD,WAAW,EACXG,iBAAiB,EACjBD,oBAAoB,CAE5B,CAAC;AAED,EAAA,oBACIR,gBAAA,CAAAe,aAAA,CAAChB,aAAa,CAACiB,QAAQ,EAAA;AAACC,IAAAA,KAAK,EAAEJ;GAC1BF,EAAAA,KAAK,CAACO,QACa,CAAC;AAEjC;;;;;"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Perseus keypad context",
4
4
  "author": "Khan Academy",
5
5
  "license": "MIT",
6
- "version": "2.0.0",
6
+ "version": "3.0.0",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
@@ -15,22 +15,15 @@
15
15
  "bugs": {
16
16
  "url": "https://github.com/Khan/perseus/issues"
17
17
  },
18
- "engines": {
19
- "node": ">=18"
20
- },
21
- "exports": {
22
- ".": {
23
- "source": "./src/index.ts",
24
- "types": "./dist/index.d.ts",
25
- "default": "./dist/index.js"
26
- }
27
- },
18
+ "module": "dist/es/index.js",
19
+ "main": "dist/index.js",
20
+ "source": "src/index.ts",
28
21
  "files": [
29
22
  "dist"
30
23
  ],
31
24
  "dependencies": {
32
- "@khanacademy/perseus-core": "6.0.0",
33
- "@khanacademy/perseus-utils": "1.0.0"
25
+ "@khanacademy/perseus-core": "7.0.0",
26
+ "@khanacademy/perseus-utils": "2.0.0"
34
27
  },
35
28
  "devDependencies": {
36
29
  "react": "^18.2.0",