@pie-element/math-inline 8.4.7-next.7 → 8.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/module/print.js CHANGED
@@ -1,5 +1,5 @@
1
- import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@3.3.5/module/index.js";
2
- import {_dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_math_input, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@5.10.5/module/index.js";
1
+ import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@3.4.0/module/index.js";
2
+ import {_dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_math_input, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@5.11.0/module/index.js";
3
3
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
4
4
  function getDefaultExportFromCjs(x) {
5
5
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
@@ -11579,7 +11579,7 @@ function generateAdditionalKeys(keyData = []) {
11579
11579
  function isChildOfCurrentPieElement(child, parent) {
11580
11580
  let node = child;
11581
11581
  while (node !== null) {
11582
- if (node === parent) {
11582
+ if (parent && node === parent) {
11583
11583
  return true;
11584
11584
  }
11585
11585
  node = node.parentNode;
@@ -11611,6 +11611,19 @@ function prepareForStatic(model, state) {
11611
11611
  }).replace(NEWLINE_LATEX, '\\embed{newLine}[]');
11612
11612
  }
11613
11613
  }
11614
+ function parseAnswers(session, model) {
11615
+ const answers = {};
11616
+ if (model.config && model.config.expression) {
11617
+ let answerBlocks = 1;
11618
+ (model.config.expression || '').replace(REGEX, () => {
11619
+ answers[`r${answerBlocks}`] = {
11620
+ value: session && session.answers && session.answers[`r${answerBlocks}`] && session.answers[`r${answerBlocks}`].value || ''
11621
+ };
11622
+ answerBlocks += 1;
11623
+ });
11624
+ }
11625
+ return answers;
11626
+ }
11614
11627
  class Main extends React$1.Component {
11615
11628
  static __initStatic() {
11616
11629
  this.propTypes = {
@@ -11638,16 +11651,8 @@ class Main extends React$1.Component {
11638
11651
  Main.prototype.__init14.call(this);
11639
11652
  Main.prototype.__init15.call(this);
11640
11653
  Main.prototype.__init16.call(this);
11641
- const answers = {};
11642
- if (props.model.config && props.model.config.expression) {
11643
- let answerBlocks = 1;
11644
- (props.model.config.expression || '').replace(REGEX, () => {
11645
- answers[`r${answerBlocks}`] = {
11646
- value: props.session && props.session.answers && props.session.answers[`r${answerBlocks}`] && props.session.answers[`r${answerBlocks}`].value || ''
11647
- };
11648
- answerBlocks += 1;
11649
- });
11650
- }
11654
+ const {model, session} = props;
11655
+ const answers = parseAnswers(session, model);
11651
11656
  this.state = {
11652
11657
  session: {
11653
11658
  ...props.session,
@@ -11706,12 +11711,22 @@ class Main extends React$1.Component {
11706
11711
  }
11707
11712
  countResponseOccurrences(expression) {
11708
11713
  const pattern = /\{\{response\}\}/g;
11709
- const matches = _optionalChain([expression, 'optionalAccess', _5 => _5.match, 'call', _6 => _6(pattern)]);
11714
+ const matches = _optionalChain([expression, 'optionalAccess', _10 => _10.match, 'call', _11 => _11(pattern)]);
11710
11715
  return matches ? matches.length : 0;
11711
11716
  }
11712
11717
  UNSAFE_componentWillReceiveProps(nextProps) {
11713
11718
  const {config} = this.props.model;
11714
11719
  const {config: nextConfig = {}} = nextProps.model || ({});
11720
+ const {session} = this.props;
11721
+ const {session: nextSession = {}} = nextProps || ({});
11722
+ if (session && nextSession && !isEqual(session.answers, nextSession.answers)) {
11723
+ this.setState({
11724
+ session: {
11725
+ ...nextSession,
11726
+ answers: parseAnswers(nextSession, this.props.model)
11727
+ }
11728
+ });
11729
+ }
11715
11730
  if (config.note && config.language && config.language !== nextConfig.language && config.note === translator.t('mathInline.primaryCorrectWithAlternates', {
11716
11731
  lng: config.language
11717
11732
  })) {
@@ -11764,8 +11779,8 @@ class Main extends React$1.Component {
11764
11779
  }
11765
11780
  componentDidUpdate(prevProps, prevState) {
11766
11781
  this.handleAnswerBlockDomUpdate();
11767
- const prevResponseType = _optionalChain([prevProps, 'access', _7 => _7.model, 'optionalAccess', _8 => _8.config, 'optionalAccess', _9 => _9.responseType]);
11768
- const currentResponseType = _optionalChain([this, 'access', _10 => _10.props, 'access', _11 => _11.model, 'optionalAccess', _12 => _12.config, 'optionalAccess', _13 => _13.responseType]);
11782
+ const prevResponseType = _optionalChain([prevProps, 'access', _12 => _12.model, 'optionalAccess', _13 => _13.config, 'optionalAccess', _14 => _14.responseType]);
11783
+ const currentResponseType = _optionalChain([this, 'access', _15 => _15.props, 'access', _16 => _16.model, 'optionalAccess', _17 => _17.config, 'optionalAccess', _18 => _18.responseType]);
11769
11784
  if (prevResponseType !== currentResponseType) {
11770
11785
  this.updateAria();
11771
11786
  }
@@ -11811,22 +11826,21 @@ class Main extends React$1.Component {
11811
11826
  }
11812
11827
  __init4() {
11813
11828
  this.handleKeyDown = (event, id) => {
11814
- const {config} = this.props.model;
11815
- const myElement = document.getElementById(config.id);
11816
- let isTrigerredFromActualPieElement = true;
11817
- isTrigerredFromActualPieElement = isChildOfCurrentPieElement(event.target, myElement);
11818
- const isAnswerInputFocused = document.activeElement.getAttribute('aria-label') === 'Enter answer.';
11819
- const isClickOrTouchEvent = event.type === 'click' || event.type === 'touchstart';
11820
- if (isAnswerInputFocused && (event.key === 'ArrowDown' || isClickOrTouchEvent)) {
11829
+ const isTrigerredFromActualPieElement = isChildOfCurrentPieElement(event.target, this.root);
11830
+ const isAnswerInputFocused = this.mqStatic && _optionalChain([this, 'access', _19 => _19.mqStatic, 'access', _20 => _20.inputRef, 'optionalAccess', _21 => _21.current, 'access', _22 => _22.contains, 'call', _23 => _23(document.activeElement)]);
11831
+ const {key, type} = event;
11832
+ const isClickOrTouchEvent = type === 'click' || type === 'touchstart';
11833
+ if (isAnswerInputFocused && (key === 'ArrowDown' || isClickOrTouchEvent)) {
11821
11834
  if (this.state.activeAnswerBlock !== id && isTrigerredFromActualPieElement) {
11822
11835
  this.cleanupKeyDownListener();
11823
11836
  this.setState({
11824
11837
  activeAnswerBlock: id
11838
+ }, () => {
11839
+ this.onSubFieldFocus(id);
11840
+ if (key === 'ArrowDown') {
11841
+ this.focusFirstKeypadElement();
11842
+ }
11825
11843
  });
11826
- this.onSubFieldFocus(id);
11827
- }
11828
- if (event.key === 'ArrowDown') {
11829
- this.focusFirstKeypadElement();
11830
11844
  }
11831
11845
  } else if (event.key === 'Escape') {
11832
11846
  this.setState({
@@ -11986,7 +12000,7 @@ class Main extends React$1.Component {
11986
12000
  }
11987
12001
  function getDeepChildDataKeypad(element, depth = 0) {
11988
12002
  if (!element || depth >= 4) return null;
11989
- const child = _optionalChain([element, 'optionalAccess', _14 => _14.children, 'optionalAccess', _15 => _15[0]]);
12003
+ const child = _optionalChain([element, 'optionalAccess', _24 => _24.children, 'optionalAccess', _25 => _25[0]]);
11990
12004
  if (!child) return null;
11991
12005
  if (child.attributes && child.attributes['data-keypad']) {
11992
12006
  return child;
@@ -11995,7 +12009,7 @@ class Main extends React$1.Component {
11995
12009
  }
11996
12010
  const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);
11997
12011
  const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;
11998
- if (!relatedTarget || !currentTarget || !_optionalChain([childWithDataKeypad, 'optionalAccess', _16 => _16.attributes, 'access', _17 => _17['data-keypad']])) {
12012
+ if (!relatedTarget || !currentTarget || !_optionalChain([childWithDataKeypad, 'optionalAccess', _26 => _26.attributes, 'access', _27 => _27['data-keypad']])) {
11999
12013
  if (!isKeypadOpen) {
12000
12014
  this.setState({
12001
12015
  activeAnswerBlock: ''
@@ -12037,7 +12051,7 @@ class Main extends React$1.Component {
12037
12051
  __self: this,
12038
12052
  __source: {
12039
12053
  fileName: _jsxFileName,
12040
- lineNumber: 604
12054
+ lineNumber: 616
12041
12055
  }
12042
12056
  }, React$1.createElement(mq.Static, {
12043
12057
  className: classes.static,
@@ -12051,7 +12065,7 @@ class Main extends React$1.Component {
12051
12065
  __self: this,
12052
12066
  __source: {
12053
12067
  fileName: _jsxFileName,
12054
- lineNumber: 605
12068
+ lineNumber: 617
12055
12069
  }
12056
12070
  }));
12057
12071
  const midContent = React$1.createElement('div', {
@@ -12059,14 +12073,14 @@ class Main extends React$1.Component {
12059
12073
  __self: this,
12060
12074
  __source: {
12061
12075
  fileName: _jsxFileName,
12062
- lineNumber: 619
12076
+ lineNumber: 631
12063
12077
  }
12064
12078
  }, mode === 'gather' && React$1.createElement('h2', {
12065
12079
  className: classes.srOnly,
12066
12080
  __self: this,
12067
12081
  __source: {
12068
12082
  fileName: _jsxFileName,
12069
- lineNumber: 620
12083
+ lineNumber: 632
12070
12084
  }
12071
12085
  }, "Math Equation Response Question"), viewMode && teacherInstructions && hasText(teacherInstructions) && (!animationsDisabled ? React$1.createElement(Collapsible, {
12072
12086
  className: classes.collapsible,
@@ -12077,7 +12091,7 @@ class Main extends React$1.Component {
12077
12091
  __self: this,
12078
12092
  __source: {
12079
12093
  fileName: _jsxFileName,
12080
- lineNumber: 626
12094
+ lineNumber: 638
12081
12095
  }
12082
12096
  }, React$1.createElement('div', {
12083
12097
  dangerouslySetInnerHTML: {
@@ -12086,7 +12100,7 @@ class Main extends React$1.Component {
12086
12100
  __self: this,
12087
12101
  __source: {
12088
12102
  fileName: _jsxFileName,
12089
- lineNumber: 630
12103
+ lineNumber: 642
12090
12104
  }
12091
12105
  })) : React$1.createElement('div', {
12092
12106
  dangerouslySetInnerHTML: {
@@ -12095,28 +12109,28 @@ class Main extends React$1.Component {
12095
12109
  __self: this,
12096
12110
  __source: {
12097
12111
  fileName: _jsxFileName,
12098
- lineNumber: 633
12112
+ lineNumber: 645
12099
12113
  }
12100
12114
  })), prompt && React$1.createElement('div', {
12101
12115
  className: classes.promptContainer,
12102
12116
  __self: this,
12103
12117
  __source: {
12104
12118
  fileName: _jsxFileName,
12105
- lineNumber: 637
12119
+ lineNumber: 649
12106
12120
  }
12107
12121
  }, React$1.createElement(PreviewPrompt, {
12108
12122
  prompt: prompt,
12109
12123
  __self: this,
12110
12124
  __source: {
12111
12125
  fileName: _jsxFileName,
12112
- lineNumber: 638
12126
+ lineNumber: 650
12113
12127
  }
12114
12128
  })), studentPrintMode ? printView : React$1.createElement(Readable, {
12115
12129
  false: true,
12116
12130
  __self: this,
12117
12131
  __source: {
12118
12132
  fileName: _jsxFileName,
12119
- lineNumber: 645
12133
+ lineNumber: 657
12120
12134
  }
12121
12135
  }, React$1.createElement('div', {
12122
12136
  className: classes.inputAndKeypadContainer,
@@ -12124,7 +12138,7 @@ class Main extends React$1.Component {
12124
12138
  __self: this,
12125
12139
  __source: {
12126
12140
  fileName: _jsxFileName,
12127
- lineNumber: 646
12141
+ lineNumber: 658
12128
12142
  }
12129
12143
  }, responseType === ResponseTypes.simple && React$1.createElement(SimpleQuestionBlock, {
12130
12144
  onSimpleResponseChange: this.onSimpleResponseChange,
@@ -12137,7 +12151,7 @@ class Main extends React$1.Component {
12137
12151
  __self: this,
12138
12152
  __source: {
12139
12153
  fileName: _jsxFileName,
12140
- lineNumber: 648
12154
+ lineNumber: 660
12141
12155
  }
12142
12156
  }), responseType === ResponseTypes.advanced && React$1.createElement('div', {
12143
12157
  ref: tooltipContainerRef,
@@ -12151,7 +12165,7 @@ class Main extends React$1.Component {
12151
12165
  __self: this,
12152
12166
  __source: {
12153
12167
  fileName: _jsxFileName,
12154
- lineNumber: 660
12168
+ lineNumber: 672
12155
12169
  }
12156
12170
  }, React$1.createElement(Tooltip, {
12157
12171
  ref: ref => this.setTooltipRef(ref),
@@ -12163,7 +12177,7 @@ class Main extends React$1.Component {
12163
12177
  popper: classes.keypadTooltipPopper
12164
12178
  },
12165
12179
  PopperProps: {
12166
- container: _optionalChain([tooltipContainerRef, 'optionalAccess', _18 => _18.current]) || undefined,
12180
+ container: _optionalChain([tooltipContainerRef, 'optionalAccess', _28 => _28.current]) || undefined,
12167
12181
  placement: 'bottom-start',
12168
12182
  modifiers: {
12169
12183
  preventOverflow: {
@@ -12185,7 +12199,7 @@ class Main extends React$1.Component {
12185
12199
  __self: this,
12186
12200
  __source: {
12187
12201
  fileName: _jsxFileName,
12188
- lineNumber: 695
12202
+ lineNumber: 707
12189
12203
  }
12190
12204
  }, React$1.createElement(HorizontalKeypad, {
12191
12205
  additionalKeys: additionalKeys,
@@ -12194,13 +12208,13 @@ class Main extends React$1.Component {
12194
12208
  __self: this,
12195
12209
  __source: {
12196
12210
  fileName: _jsxFileName,
12197
- lineNumber: 704
12211
+ lineNumber: 716
12198
12212
  }
12199
12213
  })) || null),
12200
12214
  __self: this,
12201
12215
  __source: {
12202
12216
  fileName: _jsxFileName,
12203
- lineNumber: 670
12217
+ lineNumber: 682
12204
12218
  }
12205
12219
  }, React$1.createElement(mq.Static, {
12206
12220
  className: classes.static,
@@ -12214,7 +12228,7 @@ class Main extends React$1.Component {
12214
12228
  __self: this,
12215
12229
  __source: {
12216
12230
  fileName: _jsxFileName,
12217
- lineNumber: 714
12231
+ lineNumber: 726
12218
12232
  }
12219
12233
  }))))), viewMode && displayNote && React$1.createElement('div', {
12220
12234
  className: classes.note,
@@ -12224,7 +12238,7 @@ class Main extends React$1.Component {
12224
12238
  __self: this,
12225
12239
  __source: {
12226
12240
  fileName: _jsxFileName,
12227
- lineNumber: 732
12241
+ lineNumber: 744
12228
12242
  }
12229
12243
  }), viewMode && rationale && hasText(rationale) && (!animationsDisabled ? React$1.createElement(Collapsible, {
12230
12244
  labels: {
@@ -12234,7 +12248,7 @@ class Main extends React$1.Component {
12234
12248
  __self: this,
12235
12249
  __source: {
12236
12250
  fileName: _jsxFileName,
12237
- lineNumber: 739
12251
+ lineNumber: 751
12238
12252
  }
12239
12253
  }, React$1.createElement('div', {
12240
12254
  dangerouslySetInnerHTML: {
@@ -12243,7 +12257,7 @@ class Main extends React$1.Component {
12243
12257
  __self: this,
12244
12258
  __source: {
12245
12259
  fileName: _jsxFileName,
12246
- lineNumber: 740
12260
+ lineNumber: 752
12247
12261
  }
12248
12262
  })) : React$1.createElement('div', {
12249
12263
  dangerouslySetInnerHTML: {
@@ -12252,17 +12266,16 @@ class Main extends React$1.Component {
12252
12266
  __self: this,
12253
12267
  __source: {
12254
12268
  fileName: _jsxFileName,
12255
- lineNumber: 743
12269
+ lineNumber: 755
12256
12270
  }
12257
12271
  })));
12258
12272
  if (tooltipModeEnabled && (showCorrectAnswerToggle || teacherInstructions && hasText(teacherInstructions) || rationale && hasText(rationale) || feedback)) {
12259
12273
  return React$1.createElement(UiLayout, {
12260
12274
  extraCSSRules: extraCSSRules,
12261
- id: id,
12262
12275
  __self: this,
12263
12276
  __source: {
12264
12277
  fileName: _jsxFileName,
12265
- lineNumber: 756
12278
+ lineNumber: 768
12266
12279
  }
12267
12280
  }, React$1.createElement(Tooltip, {
12268
12281
  interactive: true,
@@ -12275,14 +12288,14 @@ class Main extends React$1.Component {
12275
12288
  __self: this,
12276
12289
  __source: {
12277
12290
  fileName: _jsxFileName,
12278
- lineNumber: 765
12291
+ lineNumber: 777
12279
12292
  }
12280
12293
  }, React$1.createElement('div', {
12281
12294
  className: classes.main,
12282
12295
  __self: this,
12283
12296
  __source: {
12284
12297
  fileName: _jsxFileName,
12285
- lineNumber: 766
12298
+ lineNumber: 778
12286
12299
  }
12287
12300
  }, showCorrectAnswerToggle && React$1.createElement(CorrectAnswerToggle, {
12288
12301
  language: language,
@@ -12293,7 +12306,7 @@ class Main extends React$1.Component {
12293
12306
  __self: this,
12294
12307
  __source: {
12295
12308
  fileName: _jsxFileName,
12296
- lineNumber: 768
12309
+ lineNumber: 780
12297
12310
  }
12298
12311
  })), teacherInstructions && hasText(teacherInstructions) && React$1.createElement(Collapsible, {
12299
12312
  className: classes.collapsible,
@@ -12305,14 +12318,14 @@ class Main extends React$1.Component {
12305
12318
  __self: this,
12306
12319
  __source: {
12307
12320
  fileName: _jsxFileName,
12308
- lineNumber: 779
12321
+ lineNumber: 791
12309
12322
  }
12310
12323
  }, React$1.createElement(PreviewPrompt, {
12311
12324
  prompt: teacherInstructions,
12312
12325
  __self: this,
12313
12326
  __source: {
12314
12327
  fileName: _jsxFileName,
12315
- lineNumber: 787
12328
+ lineNumber: 799
12316
12329
  }
12317
12330
  })), displayNote && hasText(note) && React$1.createElement(Collapsible, {
12318
12331
  className: classes.collapsible,
@@ -12328,14 +12341,14 @@ class Main extends React$1.Component {
12328
12341
  __self: this,
12329
12342
  __source: {
12330
12343
  fileName: _jsxFileName,
12331
- lineNumber: 791
12344
+ lineNumber: 803
12332
12345
  }
12333
12346
  }, React$1.createElement(PreviewPrompt, {
12334
12347
  prompt: note,
12335
12348
  __self: this,
12336
12349
  __source: {
12337
12350
  fileName: _jsxFileName,
12338
- lineNumber: 799
12351
+ lineNumber: 811
12339
12352
  }
12340
12353
  })), rationale && hasText(rationale) && React$1.createElement(Collapsible, {
12341
12354
  className: classes.collapsible,
@@ -12347,14 +12360,14 @@ class Main extends React$1.Component {
12347
12360
  __self: this,
12348
12361
  __source: {
12349
12362
  fileName: _jsxFileName,
12350
- lineNumber: 804
12363
+ lineNumber: 816
12351
12364
  }
12352
12365
  }, React$1.createElement(PreviewPrompt, {
12353
12366
  prompt: rationale,
12354
12367
  __self: this,
12355
12368
  __source: {
12356
12369
  fileName: _jsxFileName,
12357
- lineNumber: 812
12370
+ lineNumber: 824
12358
12371
  }
12359
12372
  })), feedback && React$1.createElement(Feedback, {
12360
12373
  correctness: correctness.correctness,
@@ -12362,13 +12375,13 @@ class Main extends React$1.Component {
12362
12375
  __self: this,
12363
12376
  __source: {
12364
12377
  fileName: _jsxFileName,
12365
- lineNumber: 816
12378
+ lineNumber: 828
12366
12379
  }
12367
12380
  })),
12368
12381
  __self: this,
12369
12382
  __source: {
12370
12383
  fileName: _jsxFileName,
12371
- lineNumber: 757
12384
+ lineNumber: 769
12372
12385
  }
12373
12386
  }, React$1.createElement('div', {
12374
12387
  className: classes.mainContainer,
@@ -12376,7 +12389,7 @@ class Main extends React$1.Component {
12376
12389
  __self: this,
12377
12390
  __source: {
12378
12391
  fileName: _jsxFileName,
12379
- lineNumber: 820
12392
+ lineNumber: 832
12380
12393
  }
12381
12394
  }, midContent)));
12382
12395
  }
@@ -12391,7 +12404,7 @@ class Main extends React$1.Component {
12391
12404
  __self: this,
12392
12405
  __source: {
12393
12406
  fileName: _jsxFileName,
12394
- lineNumber: 829
12407
+ lineNumber: 841
12395
12408
  }
12396
12409
  }, midContent);
12397
12410
  }
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "8.4.7-next.7+fa996579e",
7
+ "version": "8.4.7",
8
8
  "main": "lib/index.js",
9
9
  "description": "",
10
10
  "scripts": {
@@ -14,7 +14,7 @@
14
14
  "@material-ui/core": "^3.9.2",
15
15
  "@pie-framework/mathquill": "^1.1.3",
16
16
  "@pie-framework/pie-player-events": "^0.1.0",
17
- "@pie-lib/pie-toolbox": "2.10.0",
17
+ "@pie-lib/pie-toolbox": "2.10.1",
18
18
  "classnames": "^2.2.5",
19
19
  "debug": "^4.1.1",
20
20
  "lodash": "^4.17.10",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "author": "",
26
26
  "license": "ISC",
27
- "gitHead": "fa996579e3be43d638e8d2a434ba6a40c8052cf5",
27
+ "gitHead": "451b0779d505a4f14d70141cd4df7e8f25df67d6",
28
28
  "module": "src/index.js",
29
29
  "exports": {
30
30
  ".": "./src/index.js",