@doenet/doenetml 0.7.25-dev.501 → 0.7.25-dev.502

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 (110) hide show
  1. package/{AnswerResponseButton-B471DC6T.js → AnswerResponseButton-B_ZC1Y01.js} +2 -2
  2. package/{Description-De3tljH5.js → Description-Dj-ECZjP.js} +1 -1
  3. package/{DynamicMath-P1EXfZRd.js → DynamicMath-DuoxJaWi.js} +1 -1
  4. package/{EditorViewer-B4aRPPBj.js → EditorViewer-CKXOu6Xc.js} +7 -7
  5. package/{GraphFrame-D5XwMxHM.js → GraphFrame-79HPv5L3.js} +2 -2
  6. package/{JSXGraphRenderer-B-qmNm-A.js → JSXGraphRenderer-DdCJegGp.js} +1 -1
  7. package/{NonInlineMediaWrapper-DPOhYN1-.js → NonInlineMediaWrapper-DAkW_b4E.js} +1 -1
  8. package/{_error-DWYMk89W.js → _error-BclY3ngh.js} +2 -2
  9. package/{alert-C-kdd8q3.js → alert-2Xk5neD0.js} +3 -3
  10. package/{angle-BUwOkbH7.js → angle-CUCVkMcN.js} +7 -7
  11. package/{answer-CjEHZ7vz.js → answer-CMUef9w7.js} +6 -6
  12. package/{asList-CpoOpDhk.js → asList-DXkE3xLE.js} +2 -2
  13. package/{blockQuote-C0bAkw0Y.js → blockQuote-Duo8vLOf.js} +3 -3
  14. package/{boolean-BRAsN_-7.js → boolean-CDNMO1uW.js} +2 -2
  15. package/{booleanInput-BFCPSOJO.js → booleanInput-C4HFcqv5.js} +7 -7
  16. package/{br-DF56DQ5D.js → br-C8MGfnqd.js} +2 -2
  17. package/{button-HsmTfzCc.js → button-D3pRJ_HO.js} +5 -5
  18. package/{c-DKD8KDiK.js → c-w0qvT9qk.js} +3 -3
  19. package/{cell-69PLdapF.js → cell-dY3QtnCO.js} +3 -3
  20. package/{choiceInput-18RdaMiV.js → choiceInput-BQtLfRX9.js} +4 -4
  21. package/{circle-CFXLIXe1.js → circle-BfFAvdYO.js} +6 -6
  22. package/{cobwebPolyline-AWa786rT.js → cobwebPolyline-5gHGqAOD.js} +4 -4
  23. package/{codeEditor-Dl1J_se_.js → codeEditor-78DVFjR7.js} +2 -2
  24. package/{composites-cMVInlMW.js → composites-COtPaDZx.js} +1 -1
  25. package/{containerBlock-VzTtEvKf.js → containerBlock-Dm7FQjGS.js} +4 -4
  26. package/{containerInline-CKrsbcLV.js → containerInline-BFO1_deC.js} +4 -4
  27. package/{curve-DrljXCRT.js → curve-CKIWo65Q.js} +4 -4
  28. package/{doenetml-BXk3oBEG.js → doenetml-B-hFBPam.js} +3 -3
  29. package/doenetml-external-worker.js +2 -2
  30. package/doenetml-inline-worker.js +3 -3
  31. package/doenetml-worker/index.esm.js +1 -1
  32. package/doenetml-worker/index.js +1 -1
  33. package/{ellipsis-QlX8EDgQ.js → ellipsis-BVtp0eKb.js} +2 -2
  34. package/{em-PmrtIhi7.js → em-B6va28eT.js} +3 -3
  35. package/{embed-1oMWmt-a.js → embed-BNvkvRTY.js} +2 -2
  36. package/{feedback-J8JLAEsc.js → feedback-BUcDYUyP.js} +4 -4
  37. package/{figure-DKWSKrTM.js → figure-BsSvvPVY.js} +3 -3
  38. package/{fillPatterns-5Irm-8O7.js → fillPatterns-B-BuGztY.js} +1 -1
  39. package/{footnote-BbhVyN8m.js → footnote-DpHXME5P.js} +3 -3
  40. package/{fractionInput-Bu8BWjTW.js → fractionInput-DYVMgOMq.js} +4 -4
  41. package/{graph-kCkyudeq.js → graph-0JgcnyaW.js} +6 -6
  42. package/{hint-Cod0wkR8.js → hint-BJZen3wn.js} +4 -4
  43. package/{hovercard-store-Dp6cc8Fu.js → hovercard-store-BqNx5MV1.js} +1 -1
  44. package/{hr-DUiq28Mt.js → hr-DaBzyJUF.js} +2 -2
  45. package/{image-Dadz2DH-.js → image-CTOkySqm.js} +7 -7
  46. package/{index-DqNOn6FU.js → index-Chl4fz4U.js} +1 -1
  47. package/{index-uG1NdMr8.js → index-DqOu4bgv.js} +1 -1
  48. package/{index.es-CTjK5H8L.js → index.es-Biii6O-8.js} +1 -1
  49. package/index.js +1 -1
  50. package/{label-D0EYUXoi.js → label-CCl0YwAa.js} +7 -7
  51. package/{labelWithLatex-Gs038_AX.js → labelWithLatex-xSDzh5pN.js} +2 -2
  52. package/{legend-JfC1VwD2.js → legend-mrmKsWU_.js} +4 -4
  53. package/{line-ZyQTvuHO.js → line-MqwE7aKG.js} +7 -7
  54. package/{lineFamilyDragHandlers-Bh7SXsUN.js → lineFamilyDragHandlers-DwHZ5FrD.js} +1 -1
  55. package/{lineSegment-BS2LUeHw.js → lineSegment-CFysMbo_.js} +5 -5
  56. package/{list-DXBToBIP.js → list-BuoQAoYf.js} +4 -4
  57. package/{lq-Bq9Jvw0S.js → lq-C9PoD83z.js} +2 -2
  58. package/{lsq-DFw9qmCd.js → lsq-Cm6B86u9.js} +2 -2
  59. package/{markupRenderer-DcvuJAI6.js → markupRenderer-BZb_J_zQ.js} +1 -1
  60. package/{math-G5D_sAgT.js → math-Bk7Qya6w.js} +7 -7
  61. package/{mathInput-Cpn_14oY.js → mathInput-IeoH85cz.js} +7 -7
  62. package/{matrixInput-k1OP-n6Q.js → matrixInput-BnjgmtbV.js} +5 -5
  63. package/{mdash-Dv8k_CrW.js → mdash-D2bAMAkW.js} +2 -2
  64. package/{nbsp-BTWMeY3Q.js → nbsp-BxOUpDtf.js} +2 -2
  65. package/{ndash-CfBAZNx0.js → ndash-DyVqJ6Xx.js} +2 -2
  66. package/{number-CALNLcFU.js → number-P1wQOpaY.js} +7 -7
  67. package/{orbitalDiagram-BmrpK5lV.js → orbitalDiagram-DuYjR-BY.js} +2 -2
  68. package/{orbitalDiagramInput-BEWXwoiH.js → orbitalDiagramInput-D7DvUvEu.js} +3 -3
  69. package/{p-BC9zvEB0.js → p-CT6Aen7t.js} +4 -4
  70. package/package.json +1 -1
  71. package/{paginatorControls-CoB4dbbh.js → paginatorControls-k8Sx6SrC.js} +3 -3
  72. package/{pegboard-B_mZOE46.js → pegboard-DR-1Issq.js} +4 -4
  73. package/{point-CF5Cqnsh.js → point-CAyPFQgd.js} +7 -7
  74. package/{polygon-DnqgLoQ6.js → polygon-BLQ10wo5.js} +6 -6
  75. package/{polyline-Dd1jiEXj.js → polyline-B1v1vd9j.js} +5 -5
  76. package/{pre-Dvgh7lVr.js → pre-uocJdHPc.js} +3 -3
  77. package/{prefigure-VG4XZ7z3.js → prefigure-DidJQxtQ.js} +1 -1
  78. package/{pretzel-8NZxYDeM.js → pretzel-Bk_dhupR.js} +4 -4
  79. package/{q-Bq_h6rNm.js → q-T8q6HdDu.js} +3 -3
  80. package/{ray-BqmubAvt.js → ray-DGnWwft7.js} +5 -5
  81. package/{ref-F8YtBg9Z.js → ref-CLVM_Hl7.js} +2 -2
  82. package/{regionBetweenCurveXAxis-BtLs8RzJ.js → regionBetweenCurveXAxis-C3L9QrWT.js} +5 -5
  83. package/{regionBetweenCurves-BHjGpFk9.js → regionBetweenCurves-BNPPUOf4.js} +5 -5
  84. package/{row-DV9iHCFq.js → row-BvEnMG5C.js} +2 -2
  85. package/{rq-ByaSRWlT.js → rq-BRtRX7qR.js} +2 -2
  86. package/{rsq-C22rhqzR.js → rsq-Bnb7k89S.js} +2 -2
  87. package/{section-CF4lpxRi.js → section-Da5s5aeW.js} +5 -5
  88. package/{sha256-DT5xJ2Hv-CuHM4sm5.js → sha256-DT5xJ2Hv-pnlvlmad.js} +1 -1
  89. package/{sideBySide-By9KCFLx.js → sideBySide-BURTV01c.js} +2 -2
  90. package/{slider-DI-971Tt.js → slider-CTFHsXcS.js} +4 -4
  91. package/{slopeField-BBda0HJu.js → slopeField-B0YVHyQF.js} +2 -2
  92. package/{solution-DIcdcr9o.js → solution-D40DN3tM.js} +4 -4
  93. package/{spreadsheet-DEXqOMQC.js → spreadsheet-BOuzi2z1.js} +2 -2
  94. package/{sq-ZXY5-Rc2.js → sq-CRMkSnZ_.js} +3 -3
  95. package/{subsetOfRealsInput-cODevorG.js → subsetOfRealsInput-B2D3AU__.js} +3 -3
  96. package/{summaryStatistics-BlgAx0it.js → summaryStatistics-Dbc9wuat.js} +2 -2
  97. package/{table-rT3DzOlN.js → table-BH0XbrQI.js} +2 -2
  98. package/{tabular-q7ZQ-d6V.js → tabular-gVhT1fL1.js} +2 -2
  99. package/{tag-Crsdbwhf.js → tag-BzCnmdsz.js} +2 -2
  100. package/{text-CutE7vd6.js → text-lnALUrl9.js} +6 -6
  101. package/{textInput-CYBNql-g.js → textInput-DJ1xFVsg.js} +6 -6
  102. package/{tooltip-provider-BnrQA9hJ.js → tooltip-provider-C-RnZKeM.js} +2 -2
  103. package/{useAnchoredGraphDragHandler-v6_M9k89.js → useAnchoredGraphDragHandler-5jJzp9af.js} +1 -1
  104. package/useDoenetRenderer-D-Tqn2RL.js +114 -0
  105. package/{useFieldCurve-DeA5hdTS.js → useFieldCurve-zqcMTb1s.js} +2 -2
  106. package/{useSubmitActionWithDelay-BOnqcrH_.js → useSubmitActionWithDelay-DB0sMN8r.js} +2 -2
  107. package/{vector-_0jpaHrr.js → vector-D94KVbB9.js} +7 -7
  108. package/{vectorField-CmKXyP5l.js → vectorField-2pcGpHZU.js} +2 -2
  109. package/{video-Bzf05vnB.js → video-DcBgpoy3.js} +4 -4
  110. package/useDoenetRenderer-BKVxe0Wi.js +0 -114
@@ -2605,5 +2605,5 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
2605
2605
  `};return lineEndings.LINE_ENDINGS=Br,lineEndings}var generator={},util={},capitalize={},hasRequiredCapitalize;function requireCapitalize(){return hasRequiredCapitalize||(hasRequiredCapitalize=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Br.default=void 0;var ae=function(Hr){var Li=Hr.trim();return Li.charAt(0).toUpperCase()+Li.slice(1)},Me=ae;Br.default=Me})(capitalize)),capitalize}var isNode={exports:{}},hasRequiredIsNode;function requireIsNode(){return hasRequiredIsNode||(hasRequiredIsNode=1,(function(Br,ae){Object.defineProperty(ae,"__esModule",{value:!0}),ae.default=void 0;var Me=function(){return!!Br.exports},Or=Me;ae.default=Or})(isNode,isNode.exports)),isNode.exports}var isReactNative={},hasRequiredIsReactNative;function requireIsReactNative(){return hasRequiredIsReactNative||(hasRequiredIsReactNative=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Br.default=void 0;var ae=function(){var Hr=!1;try{Hr=navigator.product==="ReactNative"}catch{Hr=!1}return Hr},Me=ae;Br.default=Me})(isReactNative)),isReactNative}var isWindows={},platforms={},hasRequiredPlatforms;function requirePlatforms(){if(hasRequiredPlatforms)return platforms;hasRequiredPlatforms=1,Object.defineProperty(platforms,"__esModule",{value:!0}),platforms.SUPPORTED_PLATFORMS=void 0;var Br={DARWIN:"darwin",LINUX:"linux",WIN32:"win32"};return platforms.SUPPORTED_PLATFORMS=Br,platforms}var hasRequiredIsWindows;function requireIsWindows(){return hasRequiredIsWindows||(hasRequiredIsWindows=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Br.default=void 0;var ae=requirePlatforms(),Me=function(){var Li=!1;try{Li=process.platform===ae.SUPPORTED_PLATFORMS.WIN32}catch{Li=!1}return Li},Or=Me;Br.default=Or})(isWindows)),isWindows}var makeArrayOfLength={},hasRequiredMakeArrayOfLength;function requireMakeArrayOfLength(){return hasRequiredMakeArrayOfLength||(hasRequiredMakeArrayOfLength=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Br.default=void 0;var ae=function(){var Hr=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return Array.apply(null,Array(Hr)).map(function(Li,ts){return ts})},Me=ae;Br.default=Me})(makeArrayOfLength)),makeArrayOfLength}var makeArrayOfStrings={},hasRequiredMakeArrayOfStrings;function requireMakeArrayOfStrings(){return hasRequiredMakeArrayOfStrings||(hasRequiredMakeArrayOfStrings=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Br.default=void 0;var ae=Me(requireMakeArrayOfLength());function Me(Li){return Li&&Li.__esModule?Li:{default:Li}}var Or=function(ts,rs){var ns=(0,ae.default)(ts);return ns.map(function(){return rs()})},Hr=Or;Br.default=Hr})(makeArrayOfStrings)),makeArrayOfStrings}var hasRequiredUtil;function requireUtil(){return hasRequiredUtil||(hasRequiredUtil=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Object.defineProperty(Br,"capitalize",{enumerable:!0,get:function(){return ae.default}}),Object.defineProperty(Br,"isNode",{enumerable:!0,get:function(){return Me.default}}),Object.defineProperty(Br,"isReactNative",{enumerable:!0,get:function(){return Or.default}}),Object.defineProperty(Br,"isWindows",{enumerable:!0,get:function(){return Hr.default}}),Object.defineProperty(Br,"makeArrayOfLength",{enumerable:!0,get:function(){return Li.default}}),Object.defineProperty(Br,"makeArrayOfStrings",{enumerable:!0,get:function(){return ts.default}});var ae=rs(requireCapitalize()),Me=rs(requireIsNode()),Or=rs(requireIsReactNative()),Hr=rs(requireIsWindows()),Li=rs(requireMakeArrayOfLength()),ts=rs(requireMakeArrayOfStrings());function rs(ns){return ns&&ns.__esModule?ns:{default:ns}}})(util)),util}var hasRequiredGenerator;function requireGenerator(){return hasRequiredGenerator||(hasRequiredGenerator=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Br.default=void 0;var ae=requireWords(),Me=requireUtil();function Or(is,as){if(!(is instanceof as))throw new TypeError("Cannot call a class as a function")}function Hr(is,as){for(var os=0;os<as.length;os++){var ss=as[os];ss.enumerable=ss.enumerable||!1,ss.configurable=!0,"value"in ss&&(ss.writable=!0),Object.defineProperty(is,ss.key,ss)}}function Li(is,as,os){return as&&Hr(is.prototype,as),Object.defineProperty(is,"prototype",{writable:!1}),is}function ts(is,as,os){return as in is?Object.defineProperty(is,as,{value:os,enumerable:!0,configurable:!0,writable:!0}):is[as]=os,is}var rs=(function(){function is(){var as=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},os=as.sentencesPerParagraph,ss=os===void 0?{max:7,min:3}:os,ls=as.wordsPerSentence,us=ls===void 0?{max:15,min:5}:ls,cs=as.random;as.seed;var ds=as.words,ps=ds===void 0?ae.WORDS:ds;if(Or(this,is),ts(this,"sentencesPerParagraph",void 0),ts(this,"wordsPerSentence",void 0),ts(this,"random",void 0),ts(this,"words",void 0),ss.min>ss.max)throw new Error("Minimum number of sentences per paragraph (".concat(ss.min,") cannot exceed maximum (").concat(ss.max,")."));if(us.min>us.max)throw new Error("Minimum number of words per sentence (".concat(us.min,") cannot exceed maximum (").concat(us.max,")."));this.sentencesPerParagraph=ss,this.words=ps,this.wordsPerSentence=us,this.random=cs||Math.random}return Li(is,[{key:"generateRandomInteger",value:function(os,ss){return Math.floor(this.random()*(ss-os+1)+os)}},{key:"generateRandomWords",value:function(os){var ss=this,ls=this.wordsPerSentence,us=ls.min,cs=ls.max,ds=os||this.generateRandomInteger(us,cs);return(0,Me.makeArrayOfLength)(ds).reduce(function(ps,ms){return"".concat(ss.pluckRandomWord()," ").concat(ps)},"").trim()}},{key:"generateRandomSentence",value:function(os){return"".concat((0,Me.capitalize)(this.generateRandomWords(os)),".")}},{key:"generateRandomParagraph",value:function(os){var ss=this,ls=this.sentencesPerParagraph,us=ls.min,cs=ls.max,ds=os||this.generateRandomInteger(us,cs);return(0,Me.makeArrayOfLength)(ds).reduce(function(ps,ms){return"".concat(ss.generateRandomSentence()," ").concat(ps)},"").trim()}},{key:"pluckRandomWord",value:function(){var os=0,ss=this.words.length-1,ls=this.generateRandomInteger(os,ss);return this.words[ls]}}]),is})(),ns=rs;Br.default=ns})(generator)),generator}var hasRequiredLoremIpsum;function requireLoremIpsum(){return hasRequiredLoremIpsum||(hasRequiredLoremIpsum=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Br.default=void 0;var ae=requireFormats(),Me=requireLineEndings(),Or=Li(requireGenerator()),Hr=requireUtil();function Li(ss){return ss&&ss.__esModule?ss:{default:ss}}function ts(ss,ls){if(!(ss instanceof ls))throw new TypeError("Cannot call a class as a function")}function rs(ss,ls){for(var us=0;us<ls.length;us++){var cs=ls[us];cs.enumerable=cs.enumerable||!1,cs.configurable=!0,"value"in cs&&(cs.writable=!0),Object.defineProperty(ss,cs.key,cs)}}function ns(ss,ls,us){return ls&&rs(ss.prototype,ls),Object.defineProperty(ss,"prototype",{writable:!1}),ss}function is(ss,ls,us){return ls in ss?Object.defineProperty(ss,ls,{value:us,enumerable:!0,configurable:!0,writable:!0}):ss[ls]=us,ss}var as=(function(){function ss(){var ls=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},us=arguments.length>1&&arguments[1]!==void 0?arguments[1]:ae.FORMAT_PLAIN,cs=arguments.length>2?arguments[2]:void 0;if(ts(this,ss),this.format=us,this.suffix=cs,is(this,"generator",void 0),ae.FORMATS.indexOf(us.toLowerCase())===-1)throw new Error("".concat(us," is an invalid format. Please use ").concat(ae.FORMATS.join(" or "),"."));this.generator=new Or.default(ls)}return ns(ss,[{key:"getLineEnding",value:function(){return this.suffix?this.suffix:!(0,Hr.isReactNative)()&&(0,Hr.isNode)()&&(0,Hr.isWindows)()?Me.LINE_ENDINGS.WIN32:Me.LINE_ENDINGS.POSIX}},{key:"formatString",value:function(us){return this.format===ae.FORMAT_HTML?"<p>".concat(us,"</p>"):us}},{key:"formatStrings",value:function(us){var cs=this;return us.map(function(ds){return cs.formatString(ds)})}},{key:"generateWords",value:function(us){return this.formatString(this.generator.generateRandomWords(us))}},{key:"generateSentences",value:function(us){return this.formatString(this.generator.generateRandomParagraph(us))}},{key:"generateParagraphs",value:function(us){var cs=this.generator.generateRandomParagraph.bind(this.generator);return this.formatStrings((0,Hr.makeArrayOfStrings)(us,cs)).join(this.getLineEnding())}}]),ss})(),os=as;Br.default=os})(LoremIpsum)),LoremIpsum}var hasRequiredDist;function requireDist(){return hasRequiredDist||(hasRequiredDist=1,(function(Br){Object.defineProperty(Br,"__esModule",{value:!0}),Object.defineProperty(Br,"LoremIpsum",{enumerable:!0,get:function(){return Hr.default}}),Br.loremIpsum=void 0;var ae=requireFormats(),Me=requireUnits(),Or=requireWords(),Hr=Li(requireLoremIpsum());function Li(rs){return rs&&rs.__esModule?rs:{default:rs}}var ts=function(){var ns=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},is=ns.count,as=is===void 0?1:is,os=ns.format,ss=os===void 0?ae.FORMAT_PLAIN:os,ls=ns.paragraphLowerBound,us=ls===void 0?3:ls,cs=ns.paragraphUpperBound,ds=cs===void 0?7:cs,ps=ns.random,ms=ns.sentenceLowerBound,fs=ms===void 0?5:ms,hs=ns.sentenceUpperBound,ys=hs===void 0?15:hs,gs=ns.units,xs=gs===void 0?Me.UNIT_SENTENCES:gs,bs=ns.words,vs=bs===void 0?Or.WORDS:bs,Cs=ns.suffix,Ts=Cs===void 0?"":Cs,As={random:ps,sentencesPerParagraph:{max:ds,min:us},words:vs,wordsPerSentence:{max:ys,min:fs}},Ns=new Hr.default(As,ss,Ts);switch(xs){case Me.UNIT_PARAGRAPHS:case Me.UNIT_PARAGRAPH:return Ns.generateParagraphs(as);case Me.UNIT_SENTENCES:case Me.UNIT_SENTENCE:return Ns.generateSentences(as);case Me.UNIT_WORDS:case Me.UNIT_WORD:return Ns.generateWords(as);default:return""}};Br.loremIpsum=ts})(dist)),dist}var distExports=requireDist();class Lorem extends CompositeComponent{static componentType="lorem";static componentDocs={summary:"Generates lorem ipsum placeholder text"};static allowInSchemaAsComponent=["text","p"];static createsVariants=!0;static stateVariableToEvaluateAfterReplacements="readyToExpandWhenResolved";static createAttributesObject(){let ae=super.createAttributesObject();return ae.minSentencesPerParagraph={description:"Minimum number of sentences per generated paragraph.",createComponentOfType:"number",createStateVariable:"minSentencesPerParagraph",defaultValue:4,public:!0},ae.maxSentencesPerParagraph={description:"Maximum number of sentences per generated paragraph.",createComponentOfType:"number",createStateVariable:"maxSentencesPerParagraph",defaultValue:8,public:!0},ae.minWordsPerSentence={description:"Minimum number of words per generated sentence.",createComponentOfType:"number",createStateVariable:"minWordsPerSentence",defaultValue:4,public:!0},ae.maxWordsPerSentence={description:"Maximum number of words per generated sentence.",createComponentOfType:"number",createStateVariable:"maxWordsPerSentence",defaultValue:8,public:!0},ae.generateWords={createComponentOfType:"number",createStateVariable:"generateWords",defaultValue:null,description:"Number of words of lorem-ipsum to generate."},ae.generateSentences={createComponentOfType:"number",createStateVariable:"generateSentences",defaultValue:null,description:"Number of sentences of lorem-ipsum to generate."},ae.generateParagraphs={createComponentOfType:"number",createStateVariable:"generateParagraphs",defaultValue:null,description:"Number of paragraphs of lorem-ipsum to generate."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.readyToExpandWhenResolved={returnDependencies:()=>({minSentencesPerParagraph:{dependencyType:"stateVariable",variableName:"minSentencesPerParagraph"},maxSentencesPerParagraph:{dependencyType:"stateVariable",variableName:"maxSentencesPerParagraph"},minWordsPerSentence:{dependencyType:"stateVariable",variableName:"minWordsPerSentence"},maxWordsPerSentence:{dependencyType:"stateVariable",variableName:"maxWordsPerSentence"},generateWords:{dependencyType:"stateVariable",variableName:"generateWords"},generateSentences:{dependencyType:"stateVariable",variableName:"generateSentences"},generateParagraphs:{dependencyType:"stateVariable",variableName:"generateParagraphs"}}),markStale:()=>({updateReplacements:!0}),definition(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae.isVariantComponent={returnDependencies:()=>({}),definition:()=>({setValue:{isVariantComponent:!0}})},ae.generatedVariantInfo={returnDependencies:({sharedParameters:Me,componentInfoObjects:Or})=>({variantSeed:{dependencyType:"value",value:Me.variantSeed}}),definition({dependencyValues:Me,componentIdx:Or}){return{setValue:{generatedVariantInfo:{seed:Me.variantSeed,meta:{createdBy:Or}}}}}},ae}static async createSerializedReplacements({component:ae,workspace:Me,nComponents:Or}){Me.replacementsCreated===void 0&&(Me.replacementsCreated=0);const Hr={prefix:`${ae.stateId}|`,num:Me.replacementsCreated};let Li=[];const ts=new distExports.LoremIpsum({sentencesPerParagraph:{max:await ae.stateValues.maxSentencesPerParagraph,min:await ae.stateValues.minSentencesPerParagraph},wordsPerSentence:{max:await ae.stateValues.maxWordsPerSentence,min:await ae.stateValues.minWordsPerSentence},random:ae.sharedParameters.variantRng});let rs=[];if(await ae.stateValues.generateParagraphs!==null){let ns=await ae.stateValues.generateParagraphs;Number.isInteger(ns)&&ns>0&&(rs=ts.generateParagraphs(ns).split(`
2606
2606
  `).map(as=>({type:"serialized",componentType:"p",componentIdx:Or++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[as]})))}else if(await ae.stateValues.generateSentences!==null){let ns=await ae.stateValues.generateSentences;if(Number.isInteger(ns)&&ns>0){let is=ts.generateSentences(ns).split(". ");for(let as of is.slice(0,is.length-1))rs.push({type:"serialized",componentType:"text",componentIdx:Or++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[as+"."]}),rs.push(" ");rs.push({type:"serialized",componentType:"text",componentIdx:Or++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[is[is.length-1]]})}}else if(await ae.stateValues.generateWords!==null){let ns=await ae.stateValues.generateWords;if(Number.isInteger(ns)&&ns>0){let is=ts.generateWords(ns).split(" ").map(as=>({type:"serialized",componentType:"text",componentIdx:Or++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[as]}));rs.push(is[0]);for(let as of is.slice(1))rs.push(" "),rs.push(as)}}return Me.replacementsCreated=Hr.num,{replacements:rs,diagnostics:Li,nComponents:Or}}static async calculateReplacementChanges({component:ae,componentInfoObjects:Me,nComponents:Or,workspace:Hr}){let Li=[],ts=await this.createSerializedReplacements({component:ae,componentInfoObjects:Me,nComponents:Or,workspace:Hr});return Li.push(...ts.diagnostics),Or=ts.nComponents,{replacementChanges:[{changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:0,numberReplacementsToReplace:ae.replacements.length,serializedReplacements:ts.replacements}],diagnostics:Li,nComponents:Or}}static setUpVariant({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or}){setUpVariantSeedAndRng({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or})}}function returnStandardTriggeringAttributes(Br){return{triggerWhen:{createComponentOfType:"boolean",createStateVariable:"triggerWhen",defaultValue:!1,triggerActionOnChange:Br,groupName:"triggering",description:"Boolean expression that fires the action whenever it transitions to true."},triggerWith:{createReferences:!0,groupName:"triggering",description:"References to components whose value changes should fire this action."},triggerWhenObjectsClicked:{createReferences:!0,groupName:"triggering",description:"References to components whose click events should fire this action."},triggerWhenObjectsFocused:{createReferences:!0,groupName:"triggering",description:"References to components whose focus events should fire this action."}}}function addStandardTriggeringStateVariableDefinitions(Br,ae){Br.insideTriggerSet={returnDependencies:()=>({parentTriggerSet:{dependencyType:"parentStateVariable",parentComponentType:"triggerSet",variableName:"updateValueAndActionsToTrigger"}}),definition({dependencyValues:Hr}){return{setValue:{insideTriggerSet:Hr.parentTriggerSet!==null}}}},Br.triggerWith={returnDependencies:()=>({triggerWith:{dependencyType:"attributeRefResolutions",attributeName:"triggerWith"},triggerWhenObjectsClicked:{dependencyType:"attributeRefResolutions",attributeName:"triggerWhenObjectsClicked"},triggerWhenObjectsFocused:{dependencyType:"attributeRefResolutions",attributeName:"triggerWhenObjectsFocused"},triggerWhen:{dependencyType:"attributeComponent",attributeName:"triggerWhen"},insideTriggerSet:{dependencyType:"stateVariable",variableName:"insideTriggerSet"}}),definition({dependencyValues:Hr}){if(Hr.triggerWhen||Hr.insideTriggerSet)return{setValue:{triggerWith:null}};{let Li=[];if(Hr.triggerWith!==null)for(let ts of Hr.triggerWith)ts.unresolvedPath===null&&Li.push({target:ts.componentIdx});if(Hr.triggerWhenObjectsClicked!==null)for(let ts of Hr.triggerWhenObjectsClicked)ts.unresolvedPath===null&&Li.push({target:ts.componentIdx,triggeringAction:"click"});if(Hr.triggerWhenObjectsFocused!==null)for(let ts of Hr.triggerWhenObjectsFocused)ts.unresolvedPath===null&&Li.push({target:ts.componentIdx,triggeringAction:"focus"});return Li.length===0&&(Li=null),{setValue:{triggerWith:Li}}}}},Br.triggerWithTargetIds={chainActionOnActionOfStateVariableTargets:{triggeredAction:ae},returnDependencies:()=>({triggerWith:{dependencyType:"stateVariable",variableName:"triggerWith"}}),definition({dependencyValues:Hr}){let Li=[];if(Hr.triggerWith)for(let ts of Hr.triggerWith){let rs=ts.target;ts.triggeringAction&&(rs+="|"+ts.triggeringAction),Li.includes(rs)||Li.push(rs)}return{setValue:{triggerWithTargetIds:Li}}},markStale(){return{updateActionChaining:!0}}};let Me=Br.hidden.returnDependencies,Or=Br.hidden.definition;Br.hidden.returnDependencies=function(Hr){let Li=Me(Hr);return Li.triggerWhen={dependencyType:"attributeComponent",attributeName:"triggerWhen"},Li.triggerWith={dependencyType:"stateVariable",variableName:"triggerWith"},Li.insideTriggerSet={dependencyType:"stateVariable",variableName:"insideTriggerSet"},Li},Br.hidden.definition=function(Hr){return Hr.dependencyValues.triggerWhen||Hr.dependencyValues.triggerWith||Hr.dependencyValues.insideTriggerSet?{setValue:{hidden:!0}}:Or(Hr)}}class UpdateValue extends InlineComponent{constructor(ae){super(ae),Object.assign(this.actions,{updateValue:this.updateValue.bind(this),updateValueIfTriggerNewlyTrue:this.updateValueIfTriggerNewlyTrue.bind(this),moveButton:this.moveButton.bind(this)})}static componentType="updateValue";static componentDocs={summary:"Updates one or more state variables on a target component"};static rendererType="button";static createAttributesObject(){let ae=super.createAttributesObject();ae.target={createReferences:!0,description:"Reference to the state variable that will be updated."},ae.type={createPrimitiveOfType:"string",createStateVariable:"type",defaultPrimitiveValue:"math",toLowerCase:!0,validValues:[{value:"math",description:"Treat the new value as a math expression."},{value:"number",description:"Treat the new value as a number."},{value:"boolean",description:"Treat the new value as a boolean."},{value:"text",description:"Treat the new value as text."}],description:"Component type used to interpret the new value."},ae.newValue={createComponentOfType:"_componentWithSelectableType",description:"New value to assign to the target."},ae.draggable={description:"Whether the update button can be dragged on a graph.",createComponentOfType:"boolean",createStateVariable:"draggable",defaultValue:!0,public:!0,forRenderer:!0},Object.assign(ae,returnAnchorAttributes()),Object.assign(ae,returnLabelAttributes());let Me=returnStandardTriggeringAttributes("updateValueIfTriggerNewlyTrue");return Object.assign(ae,Me),ae.simplify={description:"Level of simplification applied to the new value.",createComponentOfType:"text",createStateVariable:"simplify",defaultValue:"none",public:!0,toLowerCase:!0,valueForTrue:"full",valueForFalse:"none",validValues:[{value:"none",description:"No simplification is applied."},{value:"full",description:"Fully simplify the new value."},{value:"numbers",description:"Simplify numeric subexpressions only, leaving symbolic structure intact."},{value:"numbersPreserveOrder",description:"Like `numbers`, but does not reorder commutative operands."},{value:"normalizeOrder",description:"Reorder commutative operands into a canonical form without simplifying values."}]},ae}static returnChildGroups(){return[{group:"labels",componentTypes:["label"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions(),Me=returnSelectedStyleStateVariableDefinition();Object.assign(ae,Me),addStandardTriggeringStateVariableDefinitions(ae,"updateValue");let Or=returnLabelStateVariableDefinitions();Object.assign(ae,Or);let Hr=returnAnchorStateVariableDefinition();return Object.assign(ae,Hr),ae.clickAction={forRenderer:!0,returnDependencies:()=>({}),definition:()=>({setValue:{clickAction:"updateValue"}})},ae.targetComponentIdx={additionalStateVariablesDefined:["unresolvedPath"],returnDependencies:()=>({target:{dependencyType:"attributeRefResolutions",attributeName:"target"}}),definition({dependencyValues:Li}){if(Li.target?.length===1){const ts=Li.target[0];return{setValue:{targetComponentIdx:ts.componentIdx,unresolvedPath:ts.unresolvedPath}}}else return{setValue:{targetComponentIdx:null,unresolvedPath:null}}}},ae.targetComponent={stateVariablesDeterminingDependencies:["targetComponentIdx"],returnDependencies({stateValues:Li}){return Li.targetComponentIdx!=null?{targetComponent:{dependencyType:"componentIdentity",componentIdx:Li.targetComponentIdx}}:{}},definition:function({dependencyValues:Li}){let ts=null;return Li.targetComponent&&(ts=Li.targetComponent),{setValue:{targetComponent:ts}}}},ae.targetIdentities={stateVariablesDeterminingDependencies:["targetComponent"],returnDependencies:function({stateValues:Li,componentInfoObjects:ts}){let rs={};return Li.targetComponent!==null&&(ts.isCompositeComponent({componentType:Li.targetComponent.componentType,includeNonStandard:!1})?rs.targets={dependencyType:"replacement",compositeIdx:Li.targetComponent.componentIdx,recursive:!0}:rs.targets={dependencyType:"stateVariable",variableName:"targetComponent"}),rs},definition({dependencyValues:Li}){let ts=null;Li.targets&&(ts=Li.targets,Array.isArray(ts)||(ts=[ts]));let rs=[];return(ts===null||ts.length===0)&&rs.push(codedDiagnostic({type:"warning",code:"doenet-w0043",args:{source:"updateValue"}})),{setValue:{targetIdentities:ts},sendDiagnostics:rs}}},ae.targets={stateVariablesDeterminingDependencies:["targetIdentities","unresolvedPath"],returnDependencies:function({stateValues:Li}){let ts={targetIdentities:{dependencyType:"stateVariable",variableName:"targetIdentities"},unresolvedPath:{dependencyType:"stateVariable",variableName:"unresolvedPath"}};if(Li.targetIdentities!==null)for(let[rs,ns]of Li.targetIdentities.entries()){let is;if(Li.unresolvedPath){let as=Li.propIndex;as&&(as=[...as]),is={dependencyType:"stateVariableFromUnresolvedPath",componentIdx:ns.componentIdx,unresolvedPath:Li.unresolvedPath,returnAsComponentObject:!0,variablesOptional:!0,caseInsensitiveVariableMatch:!0,publicStateVariablesOnly:!0,useMappedVariableNames:!0}}else is={dependencyType:"stateVariable",componentIdx:ns.componentIdx,variableName:"value",returnAsComponentObject:!0,variablesOptional:!0};ts["target"+rs]=is}return ts},definition({dependencyValues:Li}){let ts=null,rs=[];if(Li.targetIdentities!==null){ts=[];for(let ns in Li.targetIdentities){let is=Li["target"+ns];if(is==null){rs.push(codedDiagnostic({type:"warning",code:"doenet-w0043",args:{source:"updateValue"}}));continue}if(ts.push(is),Object.keys(is.stateValues)[0]===void 0)if(Li.unresolvedPath){let as=Li.unresolvedPath[0].name;if(Li.unresolvedPath[0].index.length>0)for(const os of Li.unresolvedPath[0].index)as+="[idx]";rs.push(codedDiagnostic({type:"warning",code:"doenet-w0044",args:{source:"updateValue",property:as,component:is.componentType}}))}else rs.push(codedDiagnostic({type:"warning",code:"doenet-w0044",args:{source:"updateValue",property:"value",component:is.componentType}}))}}return{setValue:{targets:ts},sendDiagnostics:rs}}},ae.newValue={returnDependencies:()=>({newValueAttr:{dependencyType:"attributeComponent",attributeName:"newValue",variableNames:["value"]},type:{dependencyType:"stateVariable",variableName:"type"},simplify:{dependencyType:"stateVariable",variableName:"simplify"}}),definition:function({dependencyValues:Li}){if(Li.newValueAttr===null)return{setValue:{newValue:null}};let ts=Li.newValueAttr.stateValues.value;return Li.type==="math"&&(ts=normalizeMathExpression({value:ts,simplify:Li.simplify})),{setValue:{newValue:ts}}}},ae}async updateValue({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){let Hr=await this.stateValues.targets,Li=await this.stateValues.newValue;if(Hr===null||Li===null)return;let ts=[];for(let rs of Hr){let ns=Object.keys(rs.stateValues)[0];ns!==void 0&&ts.push({updateType:"updateValue",componentIdx:rs.componentIdx,stateVariable:ns,value:Li})}return await this.coreFunctions.performUpdate({updateInstructions:ts,actionId:ae,sourceInformation:Me,skipRendererUpdate:!0,event:{verb:"selected",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{response:Li,responseText:Li.toString()}}}),await this.coreFunctions.triggerChainedActions({componentIdx:this.componentIdx,actionId:ae,sourceInformation:Me,skipRendererUpdate:Or})}async updateValueIfTriggerNewlyTrue({stateValues:ae,previousValues:Me,actionId:Or}){if(await ae.triggerWhen&&Me.triggerWhen===!1&&!await this.stateValues.insideTriggerSet)return await this.updateValue({actionId:Or,skipRendererUpdate:!0})}async moveButton({x:ae,y:Me,z:Or,transient:Hr,actionId:Li,sourceInformation:ts={},skipRendererUpdate:rs=!1}){return await moveGraphicalObjectWithAnchorAction({x:ae,y:Me,z:Or,transient:Hr,actionId:Li,sourceInformation:ts,skipRendererUpdate:rs,componentIdx:this.componentIdx,componentType:this.componentType,coreFunctions:this.coreFunctions})}}class CallAction extends InlineComponent{constructor(ae){super(ae),Object.assign(this.actions,{callAction:this.callAction.bind(this),callActionIfTriggerNewlyTrue:this.callActionIfTriggerNewlyTrue.bind(this),moveButton:this.moveButton.bind(this)})}static componentType="callAction";static componentDocs={summary:"Triggers an action when clicked or in response to a specified user interaction"};static rendererType="button";static additionalSchemaChildren=["_base"];static keepChildrenSerialized({serializedComponent:ae,componentInfoObjects:Me}){if(ae.children===void 0)return[];{let Or=[];for(let[Hr,Li]of ae.children.entries())Me.componentIsSpecifiedType(Li,"label")||Or.push(Hr);return Or}}static createAttributesObject(){let ae=super.createAttributesObject();ae.target={createReferences:!0,description:"Reference to the component whose action will be invoked."},ae.actionName={createComponentOfType:"text",createStateVariable:"actionName",defaultValue:null,public:!0,description:"Name of the action to invoke on the target component."},ae.draggable={createComponentOfType:"boolean",createStateVariable:"draggable",defaultValue:!0,public:!0,forRenderer:!0,description:"Whether the action button can be dragged on a graph."},Object.assign(ae,returnLabelAttributes()),Object.assign(ae,returnAnchorAttributes());let Me=returnStandardTriggeringAttributes("callActionIfTriggerNewlyTrue");return Object.assign(ae,Me),ae.numbers={createComponentOfType:"numberList",description:"Numeric arguments passed to the invoked action."},ae.number={createComponentOfType:"number",description:"Numeric argument passed to the invoked action."},ae}static returnChildGroups(){return[{group:"labels",componentTypes:["label"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions(),Me=returnSelectedStyleStateVariableDefinition();Object.assign(ae,Me),addStandardTriggeringStateVariableDefinitions(ae,"callAction");let Or=returnLabelStateVariableDefinitions();Object.assign(ae,Or);let Hr=returnAnchorStateVariableDefinition();return Object.assign(ae,Hr),ae.clickAction={forRenderer:!0,returnDependencies:()=>({}),definition:()=>({setValue:{clickAction:"callAction"}})},ae.targetComponentIdx={additionalStateVariablesDefined:["unresolvedPath","targetOriginalPath"],returnDependencies:()=>({target:{dependencyType:"attributeRefResolutions",attributeName:"target"}}),definition({dependencyValues:Li}){if(Li.target?.length===1){const ts=Li.target[0];if(ts.unresolvedPath==null)return{setValue:{targetComponentIdx:ts.componentIdx,unresolvedPath:ts.unresolvedPath,targetOriginalPath:ts.originalPath}}}return{setValue:{targetComponentIdx:null,unresolvedPath:null,targetOriginalPath:null}}}},ae}async callAction({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){let Hr=await this.stateValues.targetComponentIdx,Li=await this.stateValues.actionName;if(Hr!=null&&Li!=null){let ts={sourceInformation:Me,skipRendererUpdate:!0};this.serializedChildren.length>0&&(ts.serializedComponents=deepClone(this.serializedChildren)),this.attributes.number&&(ts.number=await this.attributes.number.component.stateValues.value),this.attributes.numbers&&(ts.numbers=await this.attributes.numbers.component.stateValues.numbers),ae&&(ts.actionId=ae),(await this.coreFunctions.performAction({componentIdx:Hr,actionName:Li,args:ts,event:{verb:"selected",object:{componentIdx:this.componentIdx,componentType:this.componentType}},caseInsensitiveMatch:!0}))?.actionUnavailable&&await this.warnActionUnavailable(Li),await this.coreFunctions.triggerChainedActions({componentIdx:this.componentIdx,actionId:ae,sourceInformation:Me,skipRendererUpdate:Or})}}async warnActionUnavailable(ae){const Me=this.coreFunctions.doenetMLStringForReference(await this.stateValues.targetOriginalPath);Me&&this.coreFunctions.addDiagnostic(codedDiagnostic({type:"warning",code:"doenet-w0102",args:{action:ae,reference:`$${Me}`},position:this.position,sourceDoc:this.sourceDoc}))}async callActionIfTriggerNewlyTrue({stateValues:ae,previousValues:Me,actionId:Or}){if(ae.triggerWhen&&Me.triggerWhen===!1&&!await this.stateValues.insideTriggerSet)return await this.callAction({actionId:Or})}async moveButton({x:ae,y:Me,z:Or,transient:Hr,actionId:Li,sourceInformation:ts={},skipRendererUpdate:rs=!1}){return await moveGraphicalObjectWithAnchorAction({x:ae,y:Me,z:Or,transient:Hr,actionId:Li,sourceInformation:ts,skipRendererUpdate:rs,componentIdx:this.componentIdx,componentType:this.componentType,coreFunctions:this.coreFunctions})}}class triggerSet extends InlineComponent{constructor(ae){super(ae),Object.assign(this.actions,{triggerActions:this.triggerActions.bind(this),triggerActionsIfTriggerNewlyTrue:this.triggerActionsIfTriggerNewlyTrue.bind(this),moveButton:this.moveButton.bind(this)})}static componentType="triggerSet";static componentDocs={summary:"Groups a set of `<updateValue>` or `<callAction>` components which share a single trigger condition"};static rendererType="button";static createAttributesObject(){let ae=super.createAttributesObject();ae.draggable={description:"Whether the trigger set's button can be dragged on a graph.",createComponentOfType:"boolean",createStateVariable:"draggable",defaultValue:!0,public:!0,forRenderer:!0},Object.assign(ae,returnAnchorAttributes()),Object.assign(ae,returnLabelAttributes());let Me=returnStandardTriggeringAttributes("triggerActionsIfTriggerNewlyTrue");return Object.assign(ae,Me),ae}static returnChildGroups(){return[{group:"updateValuesCallActions",componentTypes:["updateValue","callAction"]},{group:"labels",componentTypes:["label"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions(),Me=returnSelectedStyleStateVariableDefinition();Object.assign(ae,Me),addStandardTriggeringStateVariableDefinitions(ae,"triggerActions");let Or=returnLabelStateVariableDefinitions();Object.assign(ae,Or);let Hr=returnAnchorStateVariableDefinition();return Object.assign(ae,Hr),ae.clickAction={forRenderer:!0,returnDependencies:()=>({}),definition:()=>({setValue:{clickAction:"triggerActions"}})},ae.updateValueAndActionsToTrigger={returnDependencies:()=>({updateValueAndCallActionChildren:{dependencyType:"child",childGroups:["updateValuesCallActions"]}}),definition({dependencyValues:Li}){return{setValue:{updateValueAndActionsToTrigger:Li.updateValueAndCallActionChildren}}}},ae}async triggerActions({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){for(let Hr of await this.stateValues.updateValueAndActionsToTrigger)this.componentInfoObjects.isInheritedComponentType({inheritedComponentType:Hr.componentType,baseComponentType:"updateValue"})?await this.coreFunctions.performAction({componentIdx:Hr.componentIdx,actionName:"updateValue",args:{actionId:ae,sourceInformation:Me,skipRendererUpdate:!0}}):this.componentInfoObjects.isInheritedComponentType({inheritedComponentType:Hr.componentType,baseComponentType:"callAction"})&&await this.coreFunctions.performAction({componentIdx:Hr.componentIdx,actionName:"callAction",args:{actionId:ae,sourceInformation:Me,skipRendererUpdate:!0}});return await this.coreFunctions.triggerChainedActions({componentIdx:this.componentIdx,actionId:ae,sourceInformation:Me,skipRendererUpdate:Or})}async triggerActionsIfTriggerNewlyTrue({stateValues:ae,previousValues:Me,actionId:Or}){if(ae.triggerWhen&&Me.triggerWhen===!1)return await this.triggerActions({actionId:Or,skipRendererUpdate:!0})}async moveButton({x:ae,y:Me,z:Or,transient:Hr,actionId:Li,sourceInformation:ts={},skipRendererUpdate:rs=!1}){return await moveGraphicalObjectWithAnchorAction({x:ae,y:Me,z:Or,transient:Hr,actionId:Li,sourceInformation:ts,skipRendererUpdate:rs,componentIdx:this.componentIdx,componentType:this.componentType,coreFunctions:this.coreFunctions})}}class FunctionIterates extends InlineComponent{static componentType="functionIterates";static componentDocs={summary:"List of values produced by iterating a function"};static rendererType=void 0;static variableForIndexAsProp="iterates";static createAttributesObject(){let ae=super.createAttributesObject();return ae.numIterates={description:"Number of iterations to compute.",createComponentOfType:"integer",createStateVariable:"numIterates",defaultValue:0,public:!0},ae.forceSymbolic={description:"Whether to force symbolic evaluation.",createComponentOfType:"boolean",createStateVariable:"forceSymbolic",defaultValue:!1,public:!0},ae.forceNumeric={description:"Whether to force numeric evaluation.",createComponentOfType:"boolean",createStateVariable:"forceNumeric",defaultValue:!1,public:!0},ae.initialValue={createComponentOfType:"math",createStateVariable:"initialValue",defaultValue:Context.fromAst("_"),description:"Starting value passed to the function on the first iteration."},ae.function={createComponentOfType:"function",description:"The function to iterate."},Object.assign(ae,returnNumberDisplayAttributes()),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.numDimensions={description:"Number of dimensions of each iterate.",public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({functionAttr:{dependencyType:"attributeComponent",attributeName:"function",variableNames:["numInputs","numOutputs"]}}),definition({dependencyValues:Me}){if(Me.functionAttr)if(Me.functionAttr.stateValues.numInputs!==Me.functionAttr.stateValues.numOutputs){let Or=Me.functionAttr.stateValues.numInputs,Hr=Me.functionAttr.stateValues.numOutputs,Li=codedDiagnostic({type:"warning",code:"doenet-w0056",args:{inputs:Or,outputs:Hr},position:Me.functionAttr.position||void 0});return{setValue:{numDimensions:0},sendDiagnostics:[Li]}}else return{setValue:{numDimensions:Me.functionAttr.stateValues.numInputs}};else return{setValue:{numDimensions:0}}}},ae.allIterates={description:"All computed iterates of the function.",public:!0,shadowingInstructions:{createComponentOfType:"mathList",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({functionAttr:{dependencyType:"attributeComponent",attributeName:"function",variableNames:["symbolicfs","numericalfs","symbolic"]},forceSymbolic:{dependencyType:"stateVariable",variableName:"forceSymbolic"},forceNumeric:{dependencyType:"stateVariable",variableName:"forceNumeric"},numDimensions:{dependencyType:"stateVariable",variableName:"numDimensions"},initialValue:{dependencyType:"stateVariable",variableName:"initialValue"},numIterates:{dependencyType:"stateVariable",variableName:"numIterates"}}),definition({dependencyValues:Me}){let Or=[],Hr=Me.functionAttr,Li=Me.initialValue,ts=!Me.forceNumeric&&(Hr.stateValues.symbolic||Me.forceSymbolic),rs=Me.numIterates;if(!Hr||Me.numDimensions===0||!(Me.numDimensions===1||Array.isArray(Li.tree)&&vectorOperators.includes(Li.tree[0])&&Li.tree.length===Me.numDimensions+1))return Or=Array(rs).fill(Context.fromAst("_")),{setValue:{allIterates:Or}};if(ts)if(Me.numDimensions===1){let ns=Hr.stateValues.symbolicfs[0],is=Li;for(let as=0;as<rs;as++)is=ns(is),Or.push(is)}else{let ns=Hr.stateValues.symbolicfs,is=Li.tree.slice(1).map(as=>Context.fromAst(as));for(let as=0;as<rs;as++){let os=[];for(let ss=0;ss<Me.numDimensions;ss++)os.push(ns[ss](...is).tree);Or.push(Context.fromAst(["vector",...os])),is=os.map(ss=>Context.fromAst(ss))}}else if(Me.numDimensions===1){let ns=Hr.stateValues.numericalfs[0],is=Li.evaluate_to_constant();if(Number.isNaN(is))Or=Array(rs).fill(Context.fromAst("_"));else for(let as=0;as<rs;as++)is=ns(is),Or.push(Context.fromAst(is))}else{let ns=Hr.stateValues.numericalfs,is=Li.tree.slice(1).map(as=>Context.fromAst(as).evaluate_to_constant());for(let as=0;as<rs;as++){let os=[];for(let ss=0;ss<Me.numDimensions;ss++)os.push(ns[ss](...is));Or.push(Context.fromAst(["vector",...os])),is=os}}return{setValue:{allIterates:Or}}}},ae.allIteratesWithInitial={description:"All iterates including the initial value.",public:!0,shadowingInstructions:{createComponentOfType:"mathList",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({initialValue:{dependencyType:"stateVariable",variableName:"initialValue"},allIterates:{dependencyType:"stateVariable",variableName:"allIterates"}}),definition({dependencyValues:Me}){return{setValue:{allIteratesWithInitial:[Me.initialValue,...Me.allIterates]}}}},ae.iterates={description:"The list of iterate values.",isArray:!0,public:!0,shadowingInstructions:{createComponentOfType:"math",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},entryPrefixes:["iterate"],returnArraySizeDependencies:()=>({numIterates:{dependencyType:"stateVariable",variableName:"numIterates"}}),returnArraySize({dependencyValues:Me}){return[Me.numIterates]},returnArrayDependenciesByKey(){return{globalDependencies:{allIterates:{dependencyType:"stateVariable",variableName:"allIterates"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arraySize:Or}){let Hr={};for(let Li=0;Li<Or[0];Li++)Hr[Li]=Me.allIterates[Li];return{setValue:{iterates:Hr}}}},ae.finalIterate={description:"The last iterate value.",public:!0,shadowingInstructions:{createComponentOfType:"math",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},stateVariablesDeterminingDependencies:["numIterates"],returnDependencies({stateValues:Me}){return!Number.isFinite(Me.numIterates)||Me.numIterates<0?{}:Me.numIterates>0?{finalIterate:{dependencyType:"stateVariable",variableName:`iterate${Me.numIterates}`}}:{finalIterate:{dependencyType:"stateVariable",variableName:"initialValue"}}},definition({dependencyValues:Me}){return{setValue:{finalIterate:Me.finalIterate}}}},ae}}class Module extends Group{static componentType="module";static componentDocs={summary:"A reusable group with parameterized attributes; can be copied elsewhere with new parameter values"};static acceptAnyAttribute=!0;static createAttributesObject(){let ae=super.createAttributesObject();return delete ae.styleNumber,ae}}class ModuleAttributes extends CompositeComponent{static componentType="moduleAttributes";static componentDocs={summary:"Declares attributes accepted by an enclosing `<module>`"};static keepChildrenSerialized({serializedComponent:ae}){return ae.children===void 0?[]:Object.keys(ae.children)}static additionalSchemaChildren=["_base"];static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.moduleIdx={returnDependencies:()=>({sourceCompositeIdentity:{dependencyType:"sourceCompositeIdentity"}}),definition({dependencyValues:Me}){let Or=null;return Me.sourceCompositeIdentity&&Me.sourceCompositeIdentity.componentType==="module"&&(Or=Me.sourceCompositeIdentity.componentIdx),{setValue:{moduleIdx:Or}}}},ae.serializedChildren={returnDependencies:()=>({serializedChildren:{dependencyType:"serializedChildren",doNotProxy:!0}}),definition:function({dependencyValues:Me}){return{setValue:{serializedChildren:Me.serializedChildren}}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({componentIdentity:{dependencyType:"stateVariable",variableName:"moduleIdx"}}),definition(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae}static async createSerializedReplacements({component:ae,components:Me,componentInfoObjects:Or,nComponents:Hr,workspace:Li}){Li.replacementsCreated===void 0&&(Li.replacementsCreated=0);const ts={prefix:`${ae.stateId}|`,num:Li.replacementsCreated},rs=[],ns=await ae.stateValues.moduleIdx;if(ns===null)return{replacements:[],diagnostics:rs,nComponents:Hr};const is=Me[ns],as={};for(let cs in is.attributes)as[cs.toLowerCase()]=cs;const os=Object.keys(is.constructor.createAttributesObject()).map(cs=>cs.toLowerCase());os.push("name");const ss=[],ls=deepClone(await ae.state.serializedChildren.value);for(const cs of ls){const ds=cs.attributes.name?.primitive?.value;if(!ds){ss.push(cs),rs.push(codedDiagnostic({type:"warning",code:"doenet-w0074",args:{component:cs.componentType},position:cs.position}));continue}let ps=as[ds.toLowerCase()],ms=is.attributes[ps];if(ms===void 0){ss.push(cs);continue}if(os.includes(ps)){rs.push(codedDiagnostic({type:"warning",code:"doenet-w0075",args:{component:cs.componentType,name:ds},position:cs.position})),ss.push(cs);continue}if(ms.type!=="unresolved")throw Error("A module attribute that isn't an existing attribute must be unresolved!");const fs=expandUnflattenedToSerializedComponents({serializedComponents:ms.children,componentInfoObjects:Or,nComponents:Hr,stateIdInfo:ts});rs.push(...fs.diagnostics),Hr=fs.nComponents,cs.children=fs.components;const hs=applySugar({serializedComponents:[cs],componentInfoObjects:Or,nComponents:Hr,stateIdInfo:ts});rs.push(...hs.diagnostics),Hr=hs.nComponents,ss.push(hs.components[0])}const us={type:"serialized",componentType:"setup",componentIdx:Hr++,stateId:`${ts.prefix}${ts.num++}`,children:ss,attributes:{},doenetAttributes:{},state:{}};return Li.replacementsCreated=ts.num,{replacements:[us],diagnostics:rs,nComponents:Hr}}}class Footnote extends InlineComponent{static componentType="footnote";static renderChildren=!0;static componentDocs={summary:"Inline footnote whose body is shown on demand and is auto-numbered in the document"};static includeBlankStringChildren=!0;static returnChildGroups(){return[{group:"inlines",componentTypes:["_inline"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.text={description:"The footnote's body as plain text.",public:!0,shadowingInstructions:{createComponentOfType:"text"},forRenderer:!0,returnDependencies:()=>({inlineChildren:{dependencyType:"child",childGroups:["inlines"],variableNames:["text","hidden"],variablesOptional:!0}}),definition:function({dependencyValues:Me}){return{setValue:{text:textFromChildren(Me.inlineChildren)}}}},ae.footnoteTag={description:"The auto-generated marker (number) used to reference this footnote.",public:!0,shadowingInstructions:{createComponentOfType:"text"},forRenderer:!0,mustEvaluate:!0,returnDependencies:()=>({footnoteCounter:{dependencyType:"counter",counterName:"footnote"}}),definition({dependencyValues:Me}){return{setValue:{footnoteTag:String(Me.footnoteCounter)}}}},ae}}class Caption extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="caption";static rendererType="containerInline";static canDisplayChildErrors=!0;static componentDocs={summary:"A caption attached to a figure or table"};static renderChildren=!0;static includeBlankStringChildren=!0;static returnChildGroups(){return[{group:"inlinesBlocks",componentTypes:["_inline","_block"]},{group:"errors",componentTypes:["_error"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.text={description:"The caption rendered as a plain text string.",public:!0,shadowingInstructions:{createComponentOfType:"text"},returnDependencies:()=>({inlineChildren:{dependencyType:"child",childGroups:["inlinesBlocks"],variableNames:["text","hidden"],variablesOptional:!0}}),definition:function({dependencyValues:Me}){return{setValue:{text:textFromChildren(Me.inlineChildren)}}}},ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}class Endpoint extends Point{static componentType="endpoint";static rendererType="point";static componentDocs={summary:"A point that marks the endpoint of an interval, rendered open or closed"};static createAttributesObject(){let ae=super.createAttributesObject();return ae.markerStyle={...ae.markerStyle,validValues:markerStyleValuesWithFillVariants},delete ae.markerFilled,ae.open={createComponentOfType:"boolean",createStateVariable:"open",defaultValue:!1,public:!0,forRenderer:!0,description:"Whether the endpoint is open (excluded) rather than closed (included)."},ae.switchable={createComponentOfType:"boolean",createStateVariable:"switchable",defaultValue:!1,public:!0,forRenderer:!0,description:"Whether the user can toggle the endpoint between open and closed by clicking it."},ae}async switchPoint({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){if(await this.stateValues.switchable)return await this.coreFunctions.performUpdate({updateInstructions:[{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"open",value:!await this.stateValues.open}],actionId:ae,sourceInformation:Me,skipRendererUpdate:Or,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{open:!await this.stateValues.open}}})}}class Sort extends CompositeComponent{static componentType="sort";static componentDocs={summary:"Sorts a list according to a comparison function"};static takesIndex=!0;static allowInSchemaAsComponent=["_inline","_block","_graphical"];static stateVariableToEvaluateAfterReplacements="readyToExpandWhenResolved";static createAttributesObject(){let ae=super.createAttributesObject();return ae.sortVectorsBy={description:"Whether to sort vectors by component or by magnitude.",createComponentOfType:"text",createStateVariable:"sortVectorsBy",defaultValue:"displacement",public:!0,toLowerCase:!0,validValues:[{value:"displacement",description:"Sort vectors by their displacement components."},{value:"tail",description:"Sort vectors by the position of their tail point."}]},ae.sortByComponent={description:"Index of the component to sort by (when sorting vectors).",createComponentOfType:"integer",createStateVariable:"sortByComponent",defaultValue:"1",public:!0},ae.sortByProp={createPrimitiveOfType:"string",description:'Name of a property to sort by (e.g. "x" for sorting points by x-coordinate).'},ae.type={createPrimitiveOfType:"string",description:"Component type to sort children as."},ae.asList={createPrimitiveOfType:"boolean",createStateVariable:"asList",defaultValue:!0,description:"Whether to render the items separated by commas (true) or with no separator (false)."},ae}static returnSugarInstructions(){let ae=super.returnSugarInstructions();function Me({matchedChildren:Or,componentAttributes:Hr,componentInfoObjects:Li,nComponents:ts}){const rs=[];if(!Or.every(os=>typeof os=="string"||os.extending&&"Ref"in os.extending))return{success:!1};let ns;if(Hr.type?.value)ns=Hr.type.value;else return Or.some(os=>typeof os=="string")&&rs.push(codedDiagnostic({type:"warning",code:"doenet-w0013",args:{component:"sort"}})),{success:!1,diagnostics:rs};["math","text","number","boolean"].includes(ns)||(console.warn(`Invalid type ${ns}`),rs.push(codedDiagnostic({type:"warning",code:"doenet-w0014",args:{type:ns,component:"sort"}})),ns="math");let as=returnGroupIntoComponentTypeSeparatedBySpacesOutsideParens({componentType:ns,forceComponentType:!0})({matchedChildren:Or,componentInfoObjects:Li,nComponents:ts});return as.success?{success:!0,newChildren:as.newChildren,nComponents:as.nComponents,diagnostics:rs}:{success:!1}}return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.propName={returnDependencies:()=>({propName:{dependencyType:"attributePrimitive",attributeName:"sortByProp"}}),definition:function({dependencyValues:Me}){return{setValue:{propName:Me.propName}}}},ae.componentIndicesForValues={returnDependencies:()=>({children:{dependencyType:"child",childGroups:["anything"],variableNames:["componentIndicesInList"],variablesOptional:!0}}),definition({dependencyValues:Me}){let Or=[];const Hr=[];for(let Li of Me.children){if(typeof Li=="string"){Hr.push(codedDiagnostic({type:"warning",code:"doenet-w0015",args:{value:Li,component:"sort"}}));continue}Li.stateValues.componentIndicesInList?Or.push(...Li.stateValues.componentIndicesInList):Or.push(Li.componentIdx)}return{setValue:{componentIndicesForValues:Or},sendDiagnostics:Hr}}},ae.sortedValues={stateVariablesDeterminingDependencies:["componentIndicesForValues","sortByComponent","propName"],returnDependencies({stateValues:Me}){let Or={sortVectorsBy:{dependencyType:"stateVariable",variableName:"sortVectorsBy"},sortByComponent:{dependencyType:"stateVariable",variableName:"sortByComponent"},propName:{dependencyType:"stateVariable",variableName:"propName"}};if(Me.propName)for(let[Hr,Li]of Me.componentIndicesForValues.entries())Or[`component${Hr}`]={dependencyType:"stateVariable",componentIdx:Li,variableName:Me.propName,variablesOptional:!0,caseInsensitiveVariableMatch:!0,publicStateVariablesOnly:!0,returnAsComponentObject:!0};else for(let[Hr,Li]of Me.componentIndicesForValues.entries())Or[`component${Hr}`]={dependencyType:"multipleStateVariables",componentIdx:Li,variableNames:["value",`x${Me.sortByComponent}`,`tailX${Me.sortByComponent}`],variablesOptional:!0};return Or},definition({dependencyValues:Me,componentInfoObjects:Or}){let Hr=[],Li=!0;for(let ts in Me){if(ts.substring(0,9)!=="component")continue;let rs=Me[ts];if(Me.propName){let ns=Object.values(rs.stateValues)[0];Hr.push({componentIdx:rs.componentIdx,numericalValue:Number(ns),textValue:String(ns)}),Number.isFinite(ns)||(Li=!1)}else if(Or.isInheritedComponentType({inheritedComponentType:rs.componentType,baseComponentType:"number"}))Hr.push({componentIdx:rs.componentIdx,numericalValue:rs.stateValues.value,textValue:String(rs.stateValues.value)});else if(Or.isInheritedComponentType({inheritedComponentType:rs.componentType,baseComponentType:"text"})){let ns=NaN,is=rs.stateValues.value;Hr.push({componentIdx:rs.componentIdx,numericalValue:ns,textValue:is}),Li=!1}else if(Or.isInheritedComponentType({inheritedComponentType:rs.componentType,baseComponentType:"math"})){let ns=rs.stateValues.value.evaluate_to_constant();Number.isNaN(ns)&&(Li=!1),Hr.push({componentIdx:rs.componentIdx,numericalValue:ns,textValue:rs.stateValues.value.toString()})}else if(Or.isInheritedComponentType({inheritedComponentType:rs.componentType,baseComponentType:"point"})){let ns=rs.stateValues[`x${Me.sortByComponent}`],is=NaN,as="";ns&&(is=ns.evaluate_to_constant(),Number.isNaN(is)&&(Li=!1),as=ns.toString()),Hr.push({componentIdx:rs.componentIdx,numericalValue:is,textValue:as})}else if(Or.isInheritedComponentType({inheritedComponentType:rs.componentType,baseComponentType:"vector"})){let ns=NaN,is="",as=rs.stateValues[`x${Me.sortByComponent}`];Me.sortVectorsBy==="displacement"?as=rs.stateValues[`x${Me.sortByComponent}`]:as=rs.stateValues[`tailX${Me.sortByComponent}`],as&&(ns=as.evaluate_to_constant(),Number.isNaN(ns)&&(Li=!1),is=as.toString()),Hr.push({componentIdx:rs.componentIdx,numericalValue:ns,textValue:is})}}return Li?Hr.sort((ts,rs)=>ts.numericalValue-rs.numericalValue):Hr.sort((ts,rs)=>ts.textValue>rs.textValue?1:ts.textValue<rs.textValue?-1:0),{setValue:{sortedValues:Hr}}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({sortedValues:{dependencyType:"stateVariable",variableName:"sortedValues"}}),markStale:()=>({updateReplacements:!0}),definition:function(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae}static async createSerializedReplacements({component:ae,components:Me,componentInfoObjects:Or,workspace:Hr,nComponents:Li}){let ts=[],rs=[],ns=[];for(let is of await ae.stateValues.sortedValues){let as;if(is.listInd===void 0?as=Me[is.componentIdx]:as=Me[is.componentIdx].activeChildren[is.listInd],as){ns.push(as.componentIdx);const os=await as.serialize(),ss=createNewComponentIndices([os],Li);Li=ss.nComponents,rs.push(ss.components[0])}}return rs=postProcessCopy({serializedComponents:rs,componentIdx:ae.componentIdx,addShadowDependencies:!0,markAsPrimaryShadow:!0}),Hr.componentsCopied=ns,{replacements:rs,diagnostics:ts,nComponents:Li}}static async calculateReplacementChanges({component:ae,components:Me,componentInfoObjects:Or,workspace:Hr,nComponents:Li}){let ts=[],rs=[];for(let os of await ae.stateValues.sortedValues){let ss;os.listInd===void 0?ss=Me[os.componentIdx]:ss=Me[os.componentIdx].activeChildren[os.listInd],ss&&rs.push(ss.componentIdx)}if(rs.length==Hr.componentsCopied.length&&Hr.componentsCopied.every((os,ss)=>os===rs[ss]))return{replacementChanges:[],diagnostics:ts,nComponents:Li};let ns=await this.createSerializedReplacements({component:ae,components:Me,componentInfoObjects:Or,workspace:Hr,nComponents:Li}),is=ns.replacements;return ts.push(...ns.diagnostics),Li=ns.nComponents,{replacementChanges:[{changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:0,numberReplacementsToReplace:ae.replacements.length,serializedReplacements:is}],diagnostics:ts,nComponents:Li}}}class Shuffle extends CompositeComponent{static componentType="shuffle";static componentDocs={summary:"Randomly shuffles its children"};static takesIndex=!0;static allowInSchemaAsComponent=["_inline","_block","_graphical"];static createsVariants=!0;static stateVariableToEvaluateAfterReplacements="readyToExpandWhenResolved";static createAttributesObject(){let ae=super.createAttributesObject();return ae.type={createPrimitiveOfType:"string",description:"Component type to shuffle children as."},ae.asList={createPrimitiveOfType:"boolean",createStateVariable:"asList",defaultValue:!0,description:"Whether to render the items separated by commas (true) or with no separator (false)."},ae}static returnSugarInstructions(){let ae=super.returnSugarInstructions();function Me({matchedChildren:Or,componentAttributes:Hr,componentInfoObjects:Li,nComponents:ts}){const rs=[];if(!Or.every(os=>typeof os=="string"||os.extending&&"Ref"in os.extending))return{success:!1};let ns;if(Hr.type?.value)ns=Hr.type.value;else return Or.some(os=>typeof os=="string")&&rs.push(codedDiagnostic({type:"warning",code:"doenet-w0013",args:{component:"shuffle"}})),{success:!1,diagnostics:rs};["math","text","number","boolean"].includes(ns)||(console.warn(`Invalid type ${ns}`),rs.push(codedDiagnostic({type:"warning",code:"doenet-w0014",args:{type:ns,component:"shuffle"}})),ns="math");let as=returnGroupIntoComponentTypeSeparatedBySpacesOutsideParens({componentType:ns,forceComponentType:!0})({matchedChildren:Or,componentInfoObjects:Li,nComponents:ts});return as.success?{success:!0,newChildren:as.newChildren,nComponents:as.nComponents,diagnostics:rs}:{success:!1}}return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.originalComponentIndices={additionalStateVariablesDefined:["numComponents"],returnDependencies:()=>({children:{dependencyType:"child",childGroups:["anything"],variableNames:["componentIndicesInList"],variablesOptional:!0}}),definition({dependencyValues:Me}){let Or=[];const Hr=[];for(let Li of Me.children)typeof Li=="string"&&Hr.push(codedDiagnostic({type:"warning",code:"doenet-w0015",args:{value:Li,component:"shuffle"}})),Li.stateValues?.componentIndicesInList?Or.push(...Li.stateValues.componentIndicesInList):Or.push(Li.componentIdx);return{setValue:{originalComponentIndices:Or,numComponents:Or.length},sendDiagnostics:Hr}}},ae.componentOrder={returnDependencies({sharedParameters:Me}){return{variantSeed:{dependencyType:"value",value:Me.variantSeed},rngClass:{dependencyType:"value",value:Me.rngClass,doNotProxy:!0},numComponents:{dependencyType:"stateVariable",variableName:"numComponents"},variants:{dependencyType:"variants"}}},definition({dependencyValues:Me}){let Or=[],Hr=Me.numComponents,Li=Me.variants?.desiredVariant?.indices;if(Li!==void 0)if(Li.length!==Hr)Or.push(codedDiagnostic({type:"info",code:"doenet-i0006"}));else{if(Li=Li.map(Number),!Li.every(Number.isInteger))throw Error("All indices specified for shuffle must be integers");if(!Li.every(ns=>ns>=1&&ns<=Hr))Or.push(codedDiagnostic({type:"info",code:"doenet-i0007",args:{component:"shuffle"}}));else return{setValue:{componentOrder:Li.filter(ns=>ns!==void 0)}}}let ts=Me.rngClass(Me.variantSeed+"co"),rs=[...Array(Hr).keys()].map(ns=>ns+1);for(let ns=Hr-1;ns>0;ns--){const is=ts(),as=Math.floor(is*(ns+1));[rs[ns],rs[as]]=[rs[as],rs[ns]]}return{setValue:{componentOrder:rs},sendDiagnostics:Or}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({sortedValues:{dependencyType:"stateVariable",variableName:"componentOrder"}}),markStale:()=>({updateReplacements:!0}),definition:function(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae.generatedVariantInfo={additionalStateVariablesDefined:["isVariantComponent"],returnDependencies:({componentInfoObjects:Me,sharedParameters:Or})=>({variantSeed:{dependencyType:"value",value:Or.variantSeed},componentOrder:{dependencyType:"stateVariable",variableName:"componentOrder"},variantDescendants:{dependencyType:"descendant",componentTypes:Object.keys(Me.componentTypesCreatingVariants),variableNames:["isVariantComponent","generatedVariantInfo"],useReplacementsForComposites:!0,recurseToMatchedChildren:!1,variablesOptional:!0,includeNonActiveChildren:!0,ignoreReplacementsOfEncounteredComposites:!0}}),definition({dependencyValues:Me,componentIdx:Or}){let Hr={seed:Me.variantSeed,meta:{createdBy:Or},indices:Me.componentOrder},Li=Hr.subvariants=[];for(let ts of Me.variantDescendants)ts.stateValues.isVariantComponent?Li.push(ts.stateValues.generatedVariantInfo):ts.stateValues.generatedVariantInfo&&Li.push(...ts.stateValues.generatedVariantInfo.subvariants);return{setValue:{generatedVariantInfo:Hr,isVariantComponent:!0}}}},ae}static setUpVariant({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or}){setUpVariantSeedAndRng({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or})}static async createSerializedReplacements({component:ae,components:Me,componentInfoObjects:Or,workspace:Hr,nComponents:Li}){let ts=[],rs=[],ns=[],is=await ae.stateValues.originalComponentIndices;for(let as of await ae.stateValues.componentOrder){let os=Me[is[as-1]];if(os){ns.push(os.componentIdx);const ss=await os.serialize(),ls=createNewComponentIndices([ss],Li);Li=ls.nComponents,rs.push(...ls.components)}}return rs=postProcessCopy({serializedComponents:rs,componentIdx:ae.componentIdx,addShadowDependencies:!0,markAsPrimaryShadow:!0}),Hr.componentsCopied=ns,{replacements:rs,diagnostics:ts,nComponents:Li}}static async calculateReplacementChanges({component:ae,components:Me,componentInfoObjects:Or,workspace:Hr,nComponents:Li}){let ts=[],rs=[],ns=await ae.stateValues.originalComponentIndices;for(let ss of await ae.stateValues.componentOrder){let ls=Me[ns[ss-1]];ls&&rs.push(ls.componentIdx)}if(rs.length==Hr.componentsCopied.length&&Hr.componentsCopied.every((ss,ls)=>ss===rs[ls]))return{replacementChanges:[],diagnostics:ts,nComponents:Li};let is=await this.createSerializedReplacements({component:ae,components:Me,componentInfoObjects:Or,workspace:Hr,nComponents:Li}),as=is.replacements;return ts.push(...is.diagnostics),Li=is.nComponents,{replacementChanges:[{changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:0,numberReplacementsToReplace:ae.replacements.length,serializedReplacements:as}],diagnostics:ts,nComponents:Li}}static determineNumberOfUniqueVariants({serializedComponent:ae,componentInfoObjects:Me,infoDiagnostics:Or}){let Hr=0;for(let ns of ae.children)if(Me.isInheritedComponentType({inheritedComponentType:ns.componentType,baseComponentType:"_composite"}))if(ns.attributes.createComponentOfType?.primitive)if(ns.attributes.numComponents?.primitive!==void 0){let is=Number(ns.attributes.numComponents?.primitive.value);if(Number.isInteger(is)&&is>=0)Hr+=is;else return{success:!1}}else Hr++;else return{success:!1};else Hr++;let Li=1;for(let ns=2;ns<=Hr;ns++)Li*=ns;let ts=super.determineNumberOfUniqueVariants({serializedComponent:ae,componentInfoObjects:Me,infoDiagnostics:Or});if(!ts.success)return{success:!1};let rs=ts.numVariants*Li;return rs>0?(ae.variants.numVariants=rs,ae.variants.uniqueVariantData={numVariantsByDescendant:ae.variants.uniqueVariantData.numVariantsByDescendant,numberOfPermutations:Li,numComponents:Hr},{success:!0,numVariants:rs}):{success:!1}}static getUniqueVariant({serializedComponent:ae,variantIndex:Me,componentInfoObjects:Or}){let Hr=ae.variants?.numVariants;if(Hr===void 0)return{success:!1};if(!Number.isInteger(Me)||Me<1||Me>Hr)return{success:!1};let Li=ae.variants.uniqueVariantData.numVariantsByDescendant,ts=ae.variants.descendantVariantComponents,rs=ae.variants.uniqueVariantData.numberOfPermutations,ns=ae.variants.uniqueVariantData.numComponents,is=[...Li];is.push(rs);let as=enumerateCombinations({numberOfOptionsByIndex:is,maxNumber:Me})[Me-1].map(ms=>ms+1),os=as.pop(),ss=as,ls=[...Array(ns).keys()].map(ms=>ms+1),us=enumeratePermutations({values:ls,maxNumber:os})[os-1],cs=!1,ds=[];for(let ms=0;ms<Li.length;ms++)if(Li[ms]>1){let fs=ts[ms],ys=Or.allComponentClasses[fs.componentType].getUniqueVariant({serializedComponent:fs,variantIndex:ss[ms],componentInfoObjects:Or});if(!ys.success)return{success:!1};ds.push(ys.desiredVariant),cs=!0}else ds.push({});let ps={indices:us};return cs&&(ps.subvariants=ds),{success:!0,desiredVariant:ps}}}class SolveEquations extends InlineComponent{static componentType="solveEquations";static componentDocs={summary:"Numerically solves a system of equations"};static rendererType=void 0;static variableForIndexAsProp="solutions";static createAttributesObject(){let ae=super.createAttributesObject();return ae.variables={createComponentOfType:"_variableNameList",description:"Names of the variables to solve for."},ae.numDiscretizationPoints={description:"Number of points used when searching for solutions numerically.",createComponentOfType:"number",createStateVariable:"numDiscretizationPoints",defaultValue:100,public:!0},ae.minVar={createComponentOfType:"number",createStateVariable:"minVar",defaultValue:null,description:"Lower bound of the variable's search range."},ae.maxVar={createComponentOfType:"number",createStateVariable:"maxVar",defaultValue:null,description:"Upper bound of the variable's search range."},ae}static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){return Or.every(ts=>typeof ts=="string"||ts.extending&&"Ref"in ts.extending)?Or.length===1&&typeof Or[0]!="string"?{success:!1}:{success:!0,newChildren:[{type:"serialized",componentType:"math",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}],nComponents:Hr}:{success:!1}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"maths",componentTypes:["math"]},{group:"strings",componentTypes:["string"]}]}static returnStateVariableDefinitions(ae){let Me=super.returnStateVariableDefinitions(ae);return Me.variables={description:"The variables of the equations.",isArray:!0,public:!0,shadowingInstructions:{createComponentOfType:"_variableName"},entryPrefixes:["variable"],returnArraySizeDependencies:()=>({}),returnArraySize({dependencyValues:Or}){return[1]},returnArrayDependenciesByKey({arrayKeys:Or}){return{globalDependencies:{variablesAttr:{dependencyType:"attributeComponent",attributeName:"variables",variableNames:["variables"]}}}},arrayDefinitionByKey({globalDependencyValues:Or,arraySize:Hr,arrayKeys:Li,usedDefault:ts}){let rs=[];return Or.variablesAttr!==null&&(rs=Or.variablesAttr.stateValues.variables),{setValue:{variables:returnNVariables(Hr[0],rs)}}}},Me.variable={isAlias:!0,targetVariableName:"variable1",description:"The first variable being solved for."},Me.allSolutions={returnDependencies:()=>({mathChild:{dependencyType:"child",childGroups:["maths"],variableNames:["value"]},variables:{dependencyType:"stateVariable",variableName:"variables"},minVar:{dependencyType:"stateVariable",variableName:"minVar"},maxVar:{dependencyType:"stateVariable",variableName:"maxVar"},numDiscretizationPoints:{dependencyType:"stateVariable",variableName:"numDiscretizationPoints"}}),definition({dependencyValues:Or}){if(Or.mathChild.length===0)return{setValue:{allSolutions:[]}};let Hr=Or.mathChild[0].stateValues.value;if(!(Array.isArray(Hr.tree)&&Hr.tree.length===3&&Hr.tree[0]==="="))return{setValue:{allSolutions:[]}};let Li=Or.minVar,ts=Or.maxVar,rs=[],ns=Or.variables[0].subscripts_to_strings().tree,is=Context.fromAst(["+",Hr.tree[1],["-",Hr.tree[2]]]).subscripts_to_strings(),as;try{as=is.f()}catch{let bs=[codedDiagnostic({type:"warning",code:"doenet-w0057",args:{equation:Hr.toString()}})];return{setValue:{allSolutions:[]},sendDiagnostics:bs}}let os=xs=>as({[ns]:xs}),ss=xs=>normalizeMathExpression({value:is.substitute({[ns]:xs}).strings_to_subscripts(),simplify:!0,expand:!0}).evaluate_to_constant(),ls=function(xs){try{return os(xs)}catch{return NaN}},us=function(xs){try{return os(xs)}catch{let vs=ss(xs);return vs!==null?vs:NaN}};if(Number.isFinite(Li)||(Li=-10),Number.isFinite(ts)||(ts=10),Li>ts)return{setValue:{allSolutions:[]}};let cs=[Li,ts],ds=[Li];for(let xs=0;xs<cs.length-1;xs++){let bs=cs[xs],vs=cs[xs+1],Cs=Or.numDiscretizationPoints,Ts=(vs-bs)/Cs;for(let As=1;As<Cs;As++)ds.push(bs+As*Ts);ds.push(vs)}let ps=2*ds[0]-ds[1],ms=2*ds[ds.length-1]-ds[ds.length-2];ds=[ps,...ds,ms];let fs=ds.map(us),hs=ds[0],ys=fs[0];for(let xs=0;xs<ds.length;xs++){let bs=ds[xs],vs=fs[xs];if(!Number.isFinite(vs)||!Number.isFinite(ys)){let Cs,Ts;if(Number.isFinite(vs)?(Cs=bs,Ts=hs):Number.isFinite(ys)&&(Cs=hs,Ts=bs),Cs!==void 0){for(;;){let As=(Cs+Ts)/2;if(As===Cs||As===Ts)break;Number.isFinite(ls(As))?Cs=As:Ts=As}[bs,hs].includes(Cs)||(ds.splice(xs,0,Cs),fs.splice(xs,0,ls(Cs)))}}hs=bs,ys=vs}rs=[],hs=ds[0],ys=fs[0],ys===0&&rs.push(hs);for(let xs=1;xs<ds.length;xs++){let bs=ds[xs],vs=fs[xs];if(vs===0){let Cs=!1;if(xs<ds.length-1){let Ts=ds[xs+1],As=fs[xs+1],Ns=hs,ws=ys;if(ys*As>0){for(let Es=0;Es<10;Es++)if(hs=.1*hs+.9*bs,Ts=.1*Ts+.9*bs,ys=ls(hs),As=ls(Ts),ys*As<0){ys*ws<0?(rs.push(ae.fzero(ls,[Ns,hs])),rs.push(bs)):(rs.includes(bs)||rs.push(bs),bs=Ts,vs=As),Cs=!0;break}}}!Cs&&!rs.includes(bs)&&rs.push(bs)}else if(vs*ys<0)rs.push(ae.fzero(ls,[hs,bs]));else if(ys!==0&&xs<ds.length-1){let Cs=ds[xs+1],Ts=fs[xs+1];if((ys-vs)*(Ts-vs)>0&&(vs>0&&ys>vs||vs<0&&ys<vs)){let As;ys>vs?As=ls:As=ws=>-ls(ws);let Ns=ae.fminbr(As,[hs,Cs],void 0,1e-10);if(Ns.success){let ws=Ns.x,Es=ls(ws);Es*ys<0?(rs.push(ae.fzero(ls,[hs,ws])),bs=ws,vs=Es):Es===0&&rs.push(ws)}}}hs=bs,ys=vs}return rs=rs.filter(xs=>xs>=Li&&xs<=ts),{setValue:{allSolutions:rs.map(xs=>Context.fromAst(xs))}}}},Me.numSolutions={description:"The number of numerical solutions found.",public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({allSolutions:{dependencyType:"stateVariable",variableName:"allSolutions"}}),definition({dependencyValues:Or}){return{setValue:{numSolutions:Or.allSolutions.length}}}},Me.solutions={description:"The numerical solutions of the equations.",public:!0,shadowingInstructions:{createComponentOfType:"math"},isArray:!0,entryPrefixes:["solution"],returnArraySizeDependencies:()=>({numSolutions:{dependencyType:"stateVariable",variableName:"numSolutions"}}),returnArraySize({dependencyValues:Or}){return[Or.numSolutions]},returnArrayDependenciesByKey(){return{globalDependencies:{allSolutions:{dependencyType:"stateVariable",variableName:"allSolutions"}}}},arrayDefinitionByKey({globalDependencyValues:Or}){let Hr={};for(let Li=0;Li<Or.__array_size[0];Li++)Hr[Li]=Or.allSolutions[Li];return{setValue:{solutions:Hr}}}},Me}}class PostponeRenderContainer extends Group{static componentType="_postponeRenderContainer";static componentDocs={summary:"Internal container that postpones rendering of its children."};static inSchemaOnlyInheritAs=[];static allowInSchemaAsComponent=void 0;static renderedDefault=!1;static createAttributesObject(){let ae=super.createAttributesObject();return delete ae.rendered,ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.rendered={returnDependencies:()=>({parentRendered:{dependencyType:"parentStateVariable",variableName:"rendered"}}),markStale:()=>({updateReplacements:!0}),definition({dependencyValues:Me}){return{setValue:{rendered:!!Me.parentRendered}}}},ae}static async calculateReplacementChanges({component:ae,componentInfoObjects:Me,nComponents:Or,workspace:Hr}){let Li=[];if(await ae.stateValues.rendered&&ae.replacements.length===0){let ts=await this.createSerializedReplacements({component:ae,componentInfoObjects:Me,nComponents:Or,workspace:Hr}),rs=ts.replacements;return Li.push(...ts.diagnostics),Or=ts.nComponents,rs.length>0?{replacementChanges:[{changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:0,numberReplacementsToReplace:0,serializedReplacements:rs}],diagnostics:Li,nComponents:Or}:{replacementChanges:[],diagnostics:Li,nComponents:Or}}else return{replacementChanges:[],diagnostics:Li,nComponents:Or}}}class SubsetOfReals extends MathComponent{static componentType="subsetOfReals";static componentDocs={summary:"A subset of the real numbers, defined by intervals and points"};static rendererType="math";static primaryStateVariableForDefinition="subsetValue";static stateVariableToBeShadowed="subsetValue";static createAttributesObject(){let ae=super.createAttributesObject();return ae.createIntervals.defaultValue=!0,ae.variable={createComponentOfType:"_variableName",createStateVariable:"variable",defaultValue:Context.fromAst("x"),description:"Name of the variable used when expressing the subset."},ae.displayMode={description:"How the subset is displayed.",createComponentOfType:"text",createStateVariable:"displayMode",defaultValue:"intervals",public:!0,toLowerCase:!0,validValues:[{value:"intervals",description:"Display the subset using interval notation (e.g., `(0, 1]`)."},{value:"inequalities",description:"Display the subset using inequalities (e.g., `0 < x ≤ 1`)."}]},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();renameStateVariable({stateVariableDefinitions:ae,oldName:"unnormalizedValue",newName:"unnormalizedValuePreliminary"}),ae.value.shadowingInstructions.createComponentOfType="math",ae.haveSingleSubsetChild={returnDependencies:()=>({mathChildren:{dependencyType:"child",childGroups:["maths"]}}),definition({dependencyValues:Or,componentInfoObjects:Hr}){return{setValue:{haveSingleSubsetChild:Or.mathChildren.length===1&&Or.mathChildren.filter(ts=>Hr.isInheritedComponentType({inheritedComponentType:ts.componentType,baseComponentType:"subsetOfReals"})).length===1}}}},ae.subsetValue={stateVariablesDeterminingDependencies:["haveSingleSubsetChild"],returnDependencies({stateValues:Or}){let Hr={haveSingleSubsetChild:{dependencyType:"stateVariable",variableName:"haveSingleSubsetChild"}};return Or.haveSingleSubsetChild?Hr.subsetChild={dependencyType:"child",childGroups:["maths"],variableNames:["subsetValue"]}:(Hr.unnormalizedValuePreliminary={dependencyType:"stateVariable",variableName:"unnormalizedValuePreliminary"},Hr.variable={dependencyType:"stateVariable",variableName:"variable"}),Hr},definition({dependencyValues:Or}){let Hr;return Or.haveSingleSubsetChild?Hr=Or.subsetChild[0].stateValues.subsetValue:Hr=buildSubsetFromMathExpression(Or.unnormalizedValuePreliminary,Or.variable),{setValue:{subsetValue:Hr}}},async inverseDefinition({desiredStateVariableValues:Or,dependencyValues:Hr,stateValues:Li}){return Hr.haveSingleSubsetChild?{success:!0,instructions:[{setDependency:"subsetChild",desiredValue:Or.subsetValue,childIndex:0,variableIndex:0}]}:{success:!0,instructions:[{setDependency:"unnormalizedValuePreliminary",desiredValue:mathExpressionFromSubsetValue({subsetValue:Or.subsetValue,variable:Hr.variable,displayMode:await Li.displayMode})}]}}},ae.unnormalizedValue={returnDependencies:()=>({subsetValue:{dependencyType:"stateVariable",variableName:"subsetValue"},displayMode:{dependencyType:"stateVariable",variableName:"displayMode"},variable:{dependencyType:"stateVariable",variableName:"variable"}}),definition({dependencyValues:Or}){return{setValue:{unnormalizedValue:mathExpressionFromSubsetValue(Or)}}},inverseDefinition({desiredStateVariableValues:Or,dependencyValues:Hr}){return{success:!0,instructions:[{setDependency:"subsetValue",desiredValue:buildSubsetFromMathExpression(Or.unnormalizedValue,Hr.variable)}]}}};const Me=returnPointsIntervalsFromSubsetStateVariableDefinitions();return Object.assign(ae,Me),ae}}function returnPointsIntervalsFromSubsetStateVariableDefinitions(){let Br={};return Br.pointsFromSubset={additionalStateVariablesDefined:["intervalsFromSubset"],returnDependencies:()=>({subsetValue:{dependencyType:"stateVariable",variableName:"subsetValue"}}),definition({dependencyValues:ae}){let{points:Me,intervals:Or}=determinePointAndIntervalsFromSubset(ae.subsetValue);return{setValue:{pointsFromSubset:Me,intervalsFromSubset:Or}}}},Br.points={additionalStateVariablesDefined:[{variableName:"pointsClosed",public:!0,isArray:!0,shadowingInstructions:{createComponentOfType:"boolean"},description:"Whether each boundary point of the subset is a closed (included) endpoint."}],description:"The boundary points that delimit the subset.",public:!0,isArray:!0,shadowingInstructions:{createComponentOfType:"math"},isArray:!0,entryPrefixes:["point"],returnArraySizeDependencies:()=>({pointsFromSubset:{dependencyType:"stateVariable",variableName:"pointsFromSubset"}}),returnArraySize({dependencyValues:ae}){return[ae.pointsFromSubset.length]},returnArrayDependenciesByKey(){return{globalDependencies:{pointsFromSubset:{dependencyType:"stateVariable",variableName:"pointsFromSubset"}}}},arrayDefinitionByKey({globalDependencyValues:ae,arrayKeys:Me}){let Or={},Hr={};for(let Li of Me){let ts=ae.pointsFromSubset[Li];Or[Li]=Context.fromAst(ts.value),Hr[Li]=ts.inSubset}return{setValue:{points:Or,pointsClosed:Hr}}}},Br.allIntervals={additionalStateVariablesDefined:["allIsolatedPoints"],returnDependencies:()=>({subsetValue:{dependencyType:"stateVariable",variableName:"subsetValue"}}),definition({dependencyValues:ae}){let Me=[],Or=[],Hr=mergeIntervals(ae.subsetValue);for(let Li of Hr)Li.type==="closedInterval"?Me.push(Context.fromAst(["interval",["tuple",Li.left,Li.right],["tuple",!0,!0]])):Li.type==="openClosedInterval"?Me.push(Context.fromAst(["interval",["tuple",Li.left,Li.right],["tuple",!1,!0]])):Li.type==="closedOpenInterval"?Me.push(Context.fromAst(["interval",["tuple",Li.left,Li.right],["tuple",!0,!1]])):Li.type==="openInterval"?Me.push(Context.fromAst(["interval",["tuple",Li.left,Li.right],["tuple",!1,!1]])):Li.type==="realLine"?Me.push(Context.fromAst(["interval",["tuple",-1/0,1/0],["tuple",!1,!1]])):Li.type==="singleton"&&Or.push(Li.element);return{setValue:{allIntervals:Me,allIsolatedPoints:Or}}}},Br.intervals={description:"The intervals (non-degenerate components) of the subset.",public:!0,isArray:!0,shadowingInstructions:{createComponentOfType:"math"},isArray:!0,entryPrefixes:["interval"],returnArraySizeDependencies:()=>({allIntervals:{dependencyType:"stateVariable",variableName:"allIntervals"}}),returnArraySize({dependencyValues:ae}){return[ae.allIntervals.length]},returnArrayDependenciesByKey(){return{globalDependencies:{allIntervals:{dependencyType:"stateVariable",variableName:"allIntervals"}}}},arrayDefinitionByKey({globalDependencyValues:ae}){return{setValue:{intervals:ae.allIntervals}}}},Br.isolatedPoints={description:"The isolated (non-interval) points of the subset.",public:!0,isArray:!0,shadowingInstructions:{createComponentOfType:"math"},isArray:!0,entryPrefixes:["isolatedPoint"],returnArraySizeDependencies:()=>({allIsolatedPoints:{dependencyType:"stateVariable",variableName:"allIsolatedPoints"}}),returnArraySize({dependencyValues:ae}){return[ae.allIsolatedPoints.length]},returnArrayDependenciesByKey(){return{globalDependencies:{allIsolatedPoints:{dependencyType:"stateVariable",variableName:"allIsolatedPoints"}}}},arrayDefinitionByKey({globalDependencyValues:ae}){return{setValue:{isolatedPoints:ae.allIsolatedPoints}}}},Br}function determinePointAndIntervalsFromSubset(Br){function ae(Li,ts){let rs=[],ns=[];if(Li.points&&(rs=Li.points),Li.intervals&&(ns=Li.intervals),ts.points){let is=rs.map(as=>as.value);for(let as of ts.points){let os=is.indexOf(as.value);os===-1?rs.push(as):rs[os].inSubset||=as.inSubset}}return ts.intervals&&ns.push(...ts.intervals),{points:rs,intervals:ns}}function Me(Li){if(Li===null||Li.isEmpty())return{};if(Li.type==="union"){let ts=[],rs=[];for(let ns of Li.subsets){let is=Me(ns);({points:ts,intervals:rs}=ae({points:ts,intervals:rs},is))}return{points:ts,intervals:rs}}else{if(Li.type==="realLine")return{intervals:[[-1/0,1/0]]};if(Li.type==="singleton")return{points:[{value:Li.element,inSubset:!0}]};if(Li.type==="openInterval"){let ts=[[Li.left,Li.right]],rs=[];return Number.isFinite(Li.left)&&rs.push({value:Li.left,inSubset:!1}),Number.isFinite(Li.right)&&rs.push({value:Li.right,inSubset:!1}),{intervals:ts,points:rs}}}return{}}let{points:Or,intervals:Hr}=Me(Br);return Or||=[],Hr||=[],Or.sort((Li,ts)=>Li.value-ts.value),Hr.sort((Li,ts)=>Li[0]-ts[0]),{points:Or,intervals:Hr}}class SubsetOfRealsInput extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{addPoint:this.addPoint.bind(this),deletePoint:this.deletePoint.bind(this),movePoint:this.movePoint.bind(this),togglePoint:this.togglePoint.bind(this),toggleInterval:this.toggleInterval.bind(this),clear:this.clear.bind(this),setToR:this.setToR.bind(this),recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="subsetOfRealsInput";static componentDocs={summary:"An interactive number-line widget for entering a subset of real numbers (block-level; does not inherit from Input)"};static variableForImplicitProp="subsetValue";static createAttributesObject(){let ae=super.createAttributesObject();return ae.xMin={description:"Left endpoint of the visible number line.",createComponentOfType:"number",createStateVariable:"xMin",defaultValue:-10,public:!0,forRenderer:!0,excludeFromSchema:!0},ae.xMax={description:"Right endpoint of the visible number line.",createComponentOfType:"number",createStateVariable:"xMax",defaultValue:10,public:!0,forRenderer:!0,excludeFromSchema:!0},ae.width={description:"Display width of the input.",createComponentOfType:"componentSize",createStateVariable:"width",defaultValue:800,public:!0,forRenderer:!0,excludeFromSchema:!0},ae.height={description:"Display height of the input.",createComponentOfType:"componentSize",createStateVariable:"height",defaultValue:300,public:!0,forRenderer:!0,excludeFromSchema:!0},ae.xlabel={description:"Label rendered for the x axis.",createComponentOfType:"text",createStateVariable:"xlabel",defaultValue:"",public:!0,forRenderer:!0,excludeFromSchema:!0},ae.dx={description:"Tick spacing along the number line.",createComponentOfType:"number",createStateVariable:"dx",defaultValue:.5,public:!0,excludeFromSchema:!0},ae.variable={description:"Variable name displayed on the number line.",createComponentOfType:"_variableName",createStateVariable:"variable",defaultValue:Context.fromAst("x"),public:!0},ae.format={description:"Input format used for parsing entered subsets.",createComponentOfType:"text",createStateVariable:"format",defaultValue:"text",public:!0,toLowerCase:!0,validValues:[{value:"text",description:"Parse entered subsets as plain-text notation."},{value:"latex",description:"Parse entered subsets as LaTeX notation."}]},ae.prefill={description:"Initial subset displayed in the input.",createComponentOfType:"text",createStateVariable:"prefill",defaultValue:"",public:!0},ae.bindValueTo={createComponentOfType:"subsetOfReals",description:"Two-way binding target for the input's value."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();ae.subsetValue={description:"The current subset of the reals entered by the user.",public:!0,shadowingInstructions:{createComponentOfType:"subsetOfReals",addAttributeComponentsShadowingStateVariables:{variable:{stateVariableToShadow:"variable"}}},hasEssential:!0,returnDependencies:()=>({bindValueTo:{dependencyType:"attributeComponent",attributeName:"bindValueTo",variableNames:["subsetValue"]},prefill:{dependencyType:"stateVariable",variableName:"prefill"},variable:{dependencyType:"stateVariable",variableName:"variable"},format:{dependencyType:"stateVariable",variableName:"format"}}),definition:function({dependencyValues:Or}){return Or.bindValueTo?{setValue:{subsetValue:Or.bindValueTo.stateValues.subsetValue}}:{useEssentialOrDefaultValue:{subsetValue:{get defaultValue(){return parseValueIntoSubset({inputString:Or.prefill,format:Or.format,variable:Or.variable})}}}}},inverseDefinition({desiredStateVariableValues:Or,dependencyValues:Hr}){return Hr.bindValueTo?{success:!0,instructions:[{setDependency:"bindValueTo",desiredValue:Or.subsetValue,variableIndex:0}]}:{success:!0,instructions:[{setEssentialValue:"subsetValue",value:Or.subsetValue}]}}},ae.additionalPoints={defaultValue:[],hasEssential:!0,returnDependencies:()=>({}),definition(){return{useEssentialOrDefaultValue:{additionalPoints:!0}}},inverseDefinition({desiredStateVariableValues:Or}){return Or.additionalPoints.every(Number.isFinite)?{success:!0,instructions:[{setEssentialValue:"additionalPoints",value:[...Or.additionalPoints].sort((Hr,Li)=>Hr-Li)}]}:{success:!1}}},ae.pointsDisplayed={additionalStateVariablesDefined:[{variableName:"intervalsDisplayed",forRenderer:!0}],forRenderer:!0,returnDependencies:()=>({pointsFromSubset:{dependencyType:"stateVariable",variableName:"pointsFromSubset"},intervalsFromSubset:{dependencyType:"stateVariable",variableName:"intervalsFromSubset"},additionalPoints:{dependencyType:"stateVariable",variableName:"additionalPoints"}}),definition({dependencyValues:Or}){let Hr=[...Or.pointsFromSubset],Li=[...Or.intervalsFromSubset],ts=[...Or.additionalPoints].sort((us,cs)=>us-cs),rs=[],ns=[],is=0,as=1/0,os=0;ts.length>0&&(as=ts[0]);let ss=Li[0],ls=-1/0;Hr.push({value:1/0,inSubset:!1});for(let us of Hr){let cs=!1;for(ss&&ss[0]<us.value&&(cs=!0);as<us.value;)as!==ls&&(rs.push({value:as,inSubset:cs,isAdditional:!0,additionalPointInd:os}),ns.push({left:ls,right:as,inSubset:cs}),ls=as),os++,as=ts[os],as===void 0&&(as=1/0);rs.push(us),ns.push({left:ls,right:us.value,inSubset:cs}),ls=us.value,cs&&(is++,ss=Li[is])}return rs=rs.slice(0,rs.length-1),{setValue:{pointsDisplayed:rs,intervalsDisplayed:ns}}}};const Me=returnPointsIntervalsFromSubsetStateVariableDefinitions();return Object.assign(ae,Me),ae}async addPoint({value:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){let Li=await this.stateValues.dx,ts=Math.round(Math.max(await this.stateValues.xMin,Math.min(await this.stateValues.xMax,ae))/Li)*Li,rs=[...await this.stateValues.pointsFromSubset],ns=[...await this.stateValues.intervalsFromSubset],is=[...await this.stateValues.additionalPoints];if(!is.includes(ts)&&!rs.map(os=>os.value).includes(ts)){let os=!1;for(let ss of ns)if(ss[0]<ts&&ss[1]>ts){os=!0;break}if(os)return is.push(ts),await this.coreFunctions.performUpdate({updateInstructions:[{componentIdx:this.componentIdx,updateType:"updateValue",stateVariable:"additionalPoints",value:is}],actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{addedPoint:ts,intervalsFromSubset:ns,pointsFromSubset:rs,additionalPoints:is}}});{rs.push({value:ts,inSubset:!0});let ss=await this.createUpdateInstructions({intervalsFromSubset:ns,pointsFromSubset:rs,modifiedAdditionalPoints:!1,additionalPoints:is});return await this.coreFunctions.performUpdate({updateInstructions:ss,actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{addedPoint:ts,intervalsFromSubset:ns,pointsFromSubset:rs,additionalPoints:is}}})}}}async deletePoint({pointInd:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){let Li=await this.stateValues.pointsDisplayed[ae],ts=[...await this.stateValues.additionalPoints],rs=[...await this.stateValues.pointsFromSubset],ns=[...await this.stateValues.intervalsFromSubset];if(Li.isAdditional)return ts.splice(Li.additionalPointInd,1),await this.coreFunctions.performUpdate({updateInstructions:[{componentIdx:this.componentIdx,updateType:"updateValue",stateVariable:"additionalPoints",value:ts}],actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{deletedPoint:Li.value,intervalsFromSubset:ns,pointsFromSubset:rs,additionalPoints:ts}}});{let is=!1,as=rs.map(us=>us.value).indexOf(Li.value),os=ns.map(us=>us[1]).indexOf(Li.value),ss=ns.map(us=>us[0]).indexOf(Li.value);if(os!==-1)if(ss!==-1)ns[os]=[ns[os][0],ns[ss][1]],ns.splice(ss,1),rs.splice(as,1);else{let us=(await this.stateValues.pointsDisplayed)[ae-1];us&&us.isAdditional?(ns[os]=[ns[os][0],us.value],ts.splice(us.additionalPointInd,1),is=!0,rs.splice(as,1,us)):(ns.splice(os,1),rs.splice(as,1),us&&!us.inSubset&&ns.map(ds=>ds[1]).indexOf(us.value)===-1&&(ts.push(us.value),is=!0))}else if(ss!==-1){let us=(await this.stateValues.pointsDisplayed)[ae+1];us&&us.isAdditional?(ns[ss]=[us.value,ns[ss][1]],ts.splice(us.additionalPointInd,1),is=!0,rs.splice(as,1,us)):(ns.splice(ss,1),rs.splice(as,1),us&&!us.inSubset&&ns.map(ds=>ds[0]).indexOf(us.value)===-1&&(ts.push(us.value),is=!0))}else rs.splice(as,1);let ls=await this.createUpdateInstructions({intervalsFromSubset:ns,pointsFromSubset:rs,modifiedAdditionalPoints:is,additionalPoints:ts});return await this.coreFunctions.performUpdate({updateInstructions:ls,actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{deletedPoint:Li.value,intervalsFromSubset:ns,pointsFromSubset:rs,additionalPoints:ts}}})}}async createUpdateInstructions({intervalsFromSubset:ae,pointsFromSubset:Me,modifiedAdditionalPoints:Or,additionalPoints:Hr}){let Li=await this.stateValues.dx,ts=as=>Math.round(as/Li)*Li,rs=[];for(let as of ae)rs.push(subsetOfReals.OpenInterval(ts(as[0]),ts(as[1])));for(let as of Me)as.inSubset&&rs.push(subsetOfReals.Singleton(ts(as.value)));let ns;rs.length===0?ns=subsetOfReals.EmptySet():rs.length===1?ns=rs[0]:ns=subsetOfReals.Union(rs);let is=[{componentIdx:this.componentIdx,updateType:"updateValue",stateVariable:"subsetValue",value:ns}];return Or&&is.push({componentIdx:this.componentIdx,updateType:"updateValue",stateVariable:"additionalPoints",value:Hr.map(ts)}),is}async movePoint({pointInd:ae,value:Me,transient:Or,actionId:Hr,sourceInformation:Li={},skipRendererUpdate:ts=!1}){let rs=await this.stateValues.dx,ns=Math.round(Math.max(await this.stateValues.xMin,Math.min(await this.stateValues.xMax,Me))/rs)*rs,is=await this.stateValues.pointsDisplayed,as=is[ae],os=is[ae-1];os&&(ns=Math.max(ns,os.value+rs));let ss=is[ae+1];ss&&(ns=Math.min(ns,ss.value-rs));let ls=[...await this.stateValues.additionalPoints],us=[...await this.stateValues.pointsFromSubset],cs=[...await this.stateValues.intervalsFromSubset];if(as.isAdditional)return ls[as.additionalPointInd]=ns,Or?await this.coreFunctions.performUpdate({updateInstructions:[{componentIdx:this.componentIdx,updateType:"updateValue",stateVariable:"additionalPoints",value:ls}],transient:!0,actionId:Hr,sourceInformation:Li,skipRendererUpdate:ts}):await this.coreFunctions.performUpdate({updateInstructions:[{componentIdx:this.componentIdx,updateType:"updateValue",stateVariable:"additionalPoints",value:ls}],actionId:Hr,sourceInformation:Li,skipRendererUpdate:ts,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{movedPoint:ns,intervalsFromSubset:cs,pointsFromSubset:us,additionalPoints:ls}}});{let ds=us.map(hs=>hs.value).indexOf(as.value),ps=cs.map(hs=>hs[1]).indexOf(as.value),ms=cs.map(hs=>hs[0]).indexOf(as.value);us[ds]={value:ns,inSubset:us[ds].inSubset},ps!==-1&&(cs[ps]=[cs[ps][0],ns]),ms!==-1&&(cs[ms]=[ns,cs[ms][1]]);let fs=await this.createUpdateInstructions({intervalsFromSubset:cs,pointsFromSubset:us,modifiedAdditionalPoints:!1});return Or?await this.coreFunctions.performUpdate({updateInstructions:fs,transient:!0,actionId:Hr,sourceInformation:Li,skipRendererUpdate:ts}):await this.coreFunctions.performUpdate({updateInstructions:fs,actionId:Hr,sourceInformation:Li,skipRendererUpdate:ts,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{movedPoint:ns,intervalsFromSubset:cs,pointsFromSubset:us,additionalPoints:ls}}})}}async togglePoint({pointInd:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){let Li=(await this.stateValues.pointsDisplayed)[ae],ts=[...await this.stateValues.pointsFromSubset],rs=[...await this.stateValues.intervalsFromSubset],ns=[...await this.stateValues.additionalPoints],is=!1;if(Li.isAdditional)if(ns.splice(Li.additionalPointInd,1),is=!0,Li.inSubset){for(let[os,ss]of rs.entries())if(ss[0]<Li.value&&ss[1]>Li.value){let ls=[[ss[0],Li.value],[Li.value,ss[1]]];rs.splice(os,1,...ls);break}}else ts.push({value:Li.value,inSubset:!0});else{let os=ts.map(us=>us.value).indexOf(Li.value),ss=rs.map(us=>us[1]).indexOf(Li.value),ls=rs.map(us=>us[0]).indexOf(Li.value);ss!==-1?ls!==-1?(rs[ss]=[rs[ss][0],rs[ls][1]],rs.splice(ls,1),ts.splice(os,1),ns.push(Li.value),is=!0):ts[os]={value:Li.value,inSubset:!Li.inSubset}:ls!==-1?ts[os]={value:Li.value,inSubset:!Li.inSubset}:(ts.splice(os,1),ns.push(Li.value),is=!0)}let as=await this.createUpdateInstructions({intervalsFromSubset:rs,pointsFromSubset:ts,modifiedAdditionalPoints:is,additionalPoints:ns});return await this.coreFunctions.performUpdate({updateInstructions:as,actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{toggledPoint:Li.value,intervalsFromSubset:rs,pointsFromSubset:ts,additionalPoints:ns}}})}async toggleInterval({intervalInd:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){let Li=(await this.stateValues.intervalsDisplayed)[ae],ts=await this.stateValues.pointsDisplayed,rs=ts[ae-1],ns=ts[ae],is=[...await this.stateValues.pointsFromSubset],as=[...await this.stateValues.intervalsFromSubset],os=[...await this.stateValues.additionalPoints],ss=!1;if(Li.inSubset){let us,cs;for(let[ds,ps]of as.entries())if(ps[0]<=Li.left&&ps[1]>=Li.right){cs=ps,us=ds;break}if(Li.left===cs[0])if(Li.right===cs[1]){if(as.splice(us,1),rs&&!rs.inSubset&&as.map(ps=>ps[1]).indexOf(rs.value)===-1){let ps=is.map(ms=>ms.value).indexOf(rs.value);is.splice(ps,1),os.push(rs.value),ss=!0}if(ns&&!ns.inSubset&&as.map(ps=>ps[0]).indexOf(ns.value)===-1){let ps=is.map(ms=>ms.value).indexOf(ns.value);is.splice(ps,1),os.push(ns.value),ss=!0}}else{if(as[us]=[Li.right,cs[1]],rs&&!rs.inSubset&&as.map(ps=>ps[1]).indexOf(rs.value)===-1){let ps=is.map(ms=>ms.value).indexOf(rs.value);is.splice(ps,1),os.push(rs.value),ss=!0}is.push({value:ns.value,inSubset:!0}),os.splice(ns.additionalPointInd,1),ss=!0}else if(Li.right===cs[1]){if(as[us]=[cs[0],Li.left],ns&&!ns.inSubset&&as.map(ps=>ps[0]).indexOf(ns.value)===-1){let ps=is.map(ms=>ms.value).indexOf(ns.value);is.splice(ps,1),os.push(ns.value),ss=!0}is.push({value:rs.value,inSubset:!0}),os.splice(rs.additionalPointInd,1),ss=!0}else{let ds=[[cs[0],Li.left],[Li.right,cs[1]]];as.splice(us,1,...ds),is.push({value:rs.value,inSubset:!0}),is.push({value:ns.value,inSubset:!0}),os.splice(ns.additionalPointInd,1),os.splice(rs.additionalPointInd,1),ss=!0}}else{let us=as.map(ds=>ds[1]).indexOf(Li.left),cs=as.map(ds=>ds[0]).indexOf(Li.right);if(us===-1)cs===-1?(as.push([Li.left,Li.right]),ns&&ns.isAdditional&&(os.splice(ns.additionalPointInd,1),ss=!0),rs&&rs.isAdditional&&(os.splice(rs.additionalPointInd,1),ss=!0)):(ns.inSubset?(as[cs]=[Li.left,as[cs][1]],os.push(ns.value),ss=!0):as.push([Li.left,Li.right]),rs&&rs.isAdditional&&(os.splice(rs.additionalPointInd,1),ss=!0));else if(cs===-1)rs.inSubset?(as[us]=[as[us][0],Li.right],os.push(rs.value),ss=!0):as.push([Li.left,Li.right]),ns&&ns.isAdditional&&(os.splice(ns.additionalPointInd,1),ss=!0);else if(rs.inSubset)if(ns.inSubset){let ds=[as[us][0],as[cs][1]];as.splice(us,2,ds),os.push(rs.value),os.push(ns.value),ss=!0}else as[us]=[as[us][0],Li.right],os.push(rs.value),ss=!0;else ns.inSubset?(as[cs]=[Li.left,as[cs][1]],os.push(ns.value),ss=!0):as.push([Li.left,Li.right])}let ls=await this.createUpdateInstructions({intervalsFromSubset:as,pointsFromSubset:is,modifiedAdditionalPoints:ss,additionalPoints:os});return await this.coreFunctions.performUpdate({updateInstructions:ls,actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{toggledInterval:[Li.left,Li.right],intervalsFromSubset:as,pointsFromSubset:is,additionalPoints:os}}})}async clear({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){let Hr=await this.createUpdateInstructions({intervalsFromSubset:[],pointsFromSubset:[],modifiedAdditionalPoints:!0,additionalPoints:[]});return await this.coreFunctions.performUpdate({updateInstructions:Hr,actionId:ae,sourceInformation:Me,skipRendererUpdate:Or,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{cleared:!0,intervalsFromSubset:[],pointsFromSubset:[],additionalPoints:[]}}})}async setToR({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){let Hr=await this.createUpdateInstructions({intervalsFromSubset:[[-1/0,1/0]],pointsFromSubset:[],modifiedAdditionalPoints:!0,additionalPoints:[]});return await this.coreFunctions.performUpdate({updateInstructions:Hr,actionId:ae,sourceInformation:Me,skipRendererUpdate:Or,event:{verb:"interacted",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{setToR:!0,intervalsFromSubset:[[-1/0,1/0]],pointsFromSubset:[],additionalPoints:[]}}})}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}function parseValueIntoSubset({inputString:Br,format:ae,variable:Me}){if(!Br)return subsetOfReals.EmptySet();let Or;if(ae==="latex")try{Or=Context.fromLatex(Br)}catch{return subsetOfReals.EmptySet()}else if(ae==="text")try{Or=Context.fromText(Br)}catch{return subsetOfReals.EmptySet()}return buildSubsetFromMathExpression(Or,Me)}class Split extends CompositeComponent{static componentType="split";static componentDocs={summary:"Splits a string or list into pieces"};static allowInSchemaAsComponent=["_inline","_block","_graphical"];static stateVariableToEvaluateAfterReplacements="readyToExpandWhenResolved";static createAttributesObject(){let ae=super.createAttributesObject();return ae.type={createPrimitiveOfType:"string",createStateVariable:"type",defaultPrimitiveValue:"text",toLowerCase:!0,validValues:[{value:"text",description:"Split text values."}],description:"Type of value being split."},ae.splitBy={createComponentOfType:"text",createStateVariable:"splitBy",defaultValue:"letter",toLowerCase:!0,validValues:[{value:"letter",description:"Split into individual characters."},{value:"word",description:"Split into whitespace-separated words."},{value:"comma",description:"Split on comma boundaries."}],description:"How to break the input string into pieces."},ae.asList={createPrimitiveOfType:"boolean",createStateVariable:"asList",defaultValue:!0,description:"Whether to render the items separated by commas (true) or with no separator (false)."},ae}static returnSugarInstructions(){let ae=[];function Me({matchedChildren:Or,componentAttributes:Hr,nComponents:Li,stateIdInfo:ts}){let rs=Hr.type?.value;return["text"].includes(rs)||(rs="text"),{success:!0,newChildren:[{type:"serialized",componentType:rs,componentIdx:Li++,stateId:ts?`${ts.prefix}${ts.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}],nComponents:Li}}return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.originalValue={returnDependencies:()=>({child:{dependencyType:"child",childGroups:["anything"],variableNames:["value"]}}),definition({dependencyValues:Me}){return Me.child.length>0?{setValue:{originalValue:Me.child[0].stateValues.value}}:{setValue:{originalValue:null}}},inverseDefinition({desiredStateVariableValues:Me,dependencyValues:Or}){return Or.child.length>0?{success:!0,instructions:[{setDependency:"child",desiredValue:Me.originalValue,childIndex:0,variableIndex:0}]}:{success:!1}}},ae.allSplitValues={returnDependencies:()=>({type:{dependencyType:"stateVariable",variableName:"type"},originalValue:{dependencyType:"stateVariable",variableName:"originalValue"},splitBy:{dependencyType:"stateVariable",variableName:"splitBy"}}),definition({dependencyValues:Me}){if(Me.originalValue===null)return{setValue:{allSplitValues:[]}};let Or=[];return Me.splitBy==="letter"?Or=[...Me.originalValue]:Me.splitBy==="word"?Or=Me.originalValue.split(/\s+/):Me.splitBy==="comma"?Or=Me.originalValue.split(/\s*,\s*/):Or=[Me.originalValue],{setValue:{allSplitValues:Or}}}},ae.numValues={returnDependencies:()=>({allSplitValues:{dependencyType:"stateVariable",variableName:"allSplitValues"}}),definition({dependencyValues:Me}){return{setValue:{numValues:Me.allSplitValues.length}}}},ae.values={isArray:!0,entryPrefixes:["value"],returnArraySizeDependencies:()=>({numValues:{dependencyType:"stateVariable",variableName:"numValues"}}),returnArraySize({dependencyValues:Me}){return[Me.numValues]},returnArrayDependenciesByKey(){return{globalDependencies:{allSplitValues:{dependencyType:"stateVariable",variableName:"allSplitValues"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arrayKeys:Or}){let Hr={};for(let Li of Or)Hr[Li]=Me.allSplitValues[Li];return{setValue:{values:Hr}}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({values:{dependencyType:"stateVariable",variableName:"values"}}),markStale:()=>({updateReplacements:!0}),definition:function(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae}static async createSerializedReplacements({component:ae,nComponents:Me,workspace:Or}){Or.replacementsCreated===void 0&&(Or.replacementsCreated=0);const Hr={prefix:`${ae.stateId}|`,num:Or.replacementsCreated},Li=[],ts=await ae.stateValues.values,rs=ts.map((ns,is)=>({type:"serialized",componentType:"text",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},children:[],state:{value:ns},downstreamDependencies:{[ae.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:ae.componentIdx,propVariable:`value${is+1}`}]}}));return Or.values=[...ts],Or.replacementsCreated=Hr.num,{replacements:rs,diagnostics:Li,nComponents:Me}}static async calculateReplacementChanges({component:ae,components:Me,workspace:Or,nComponents:Hr}){let Li=[];const ts=await ae.stateValues.values;if(ts.length===Or.values.length&&Or.values.every((as,os)=>as===ts[os]))return{replacementChanges:[],diagnostics:Li,nComponents:Hr};let rs=await this.createSerializedReplacements({component:ae,components:Me,workspace:Or,nComponents:Hr}),ns=rs.replacements;return Li.push(...rs.diagnostics),Hr=rs.nComponents,{replacementChanges:[{changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:0,numberReplacementsToReplace:ae.replacements.length,serializedReplacements:ns}],diagnostics:Li,nComponents:Hr}}}const{matrix,transpose,multiply,lusolve,subset,index}=Context.math;class BestFitLine extends Line{static componentType="bestFitLine";static componentDocs={summary:"The best-fit line for a set of points"};static rendererType="line";static createAttributesObject(){let ae=super.createAttributesObject();return delete ae.draggable,delete ae.equation,delete ae.through,delete ae.slope,ae.data={createComponentOfType:"pointList",description:"The data points to fit a line to."},ae}static additionalSchemaChildren=[];static returnSugarInstructions(){return[]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.draggable={description:"Whether the line can be dragged (always false for a best-fit line).",shadowingInstructions:{createComponentOfType:"boolean"},public:!0,forRenderer:!0,returnDependencies:()=>({}),definition:()=>({setValue:{draggable:!1}})},ae.numDimensions={description:"Number of dimensions of the line (always 2 for a best-fit line).",public:!0,shadowingInstructions:{createComponentOfType:"number"},returnDependencies:()=>({}),definition:()=>({setValue:{numDimensions:2}})},delete ae.numPointsPrescribed,delete ae.basedOnSlope,delete ae.basedOnParallel,delete ae.basedOnPerpendicular,delete ae.distForSecondPt,delete ae.essentialPoint1x,delete ae.essentialPoint1y,delete ae.equationIdentity,delete ae.equation.stateVariablesDeterminingDependencies,ae.equation.returnDependencies=()=>({data:{dependencyType:"attributeComponent",attributeName:"data",variableNames:["points","numDimensions"]},variables:{dependencyType:"stateVariable",variableName:"variables"}}),ae.equation.definition=function({dependencyValues:Me}){if(!Me.data||Me.data.stateValues.numDimensions<2||Me.data.stateValues.points.length<1){let cs=Context.fromAst("_");return{setValue:{equation:cs,coeff0:cs,coeffvar1:cs,coeffvar2:cs}}}let Or=[],Hr=[];for(let cs of Me.data.stateValues.points){let ds=cs.slice(0,2).map(ps=>ps&&ps.evaluate_to_constant());ds.every(Number.isFinite)&&(Or.push([1,ds[0]]),Hr.push([ds[1]]))}if(Or.length===0){let cs=Context.fromAst("_");return{setValue:{equation:cs,coeff0:cs,coeffvar1:cs,coeffvar2:cs}}}Or=matrix(Or),Hr=matrix(Hr);let Li=transpose(Or),ts=multiply(Li,Hr),rs=multiply(Li,Or),ns=lusolve(rs,ts),is=Context.fromAst(subset(ns,index(0,0))),as=Context.fromAst(subset(ns,index(1,0))),os=Context.fromAst(-1),ss=Me.variables,ls=Context.fromAst(["+",["*","a","x"],"c"]).substitute({a:as,c:is,x:ss[0]}).simplify();return{setValue:{equation:Context.fromAst(["=",ss[1].tree,"r"]).substitute({r:ls}),coeff0:is,coeffvar1:as,coeffvar2:os}}},delete ae.equation.inverseDefinition,delete ae.points.stateVariablesDeterminingDependencies,ae.points.returnArrayDependenciesByKey=function(){return{globalDependencies:{coeff0:{dependencyType:"stateVariable",variableName:"coeff0"},coeffvar1:{dependencyType:"stateVariable",variableName:"coeffvar1"},coeffvar2:{dependencyType:"stateVariable",variableName:"coeffvar2"},variables:{dependencyType:"stateVariable",variableName:"variables"},lastPointsFromInverting:{dependencyType:"stateVariable",variableName:"lastPointsFromInverting"}}}},ae.data={description:"The data points used to compute the best-fit line.",public:!0,isLocation:!0,shadowingInstructions:{createComponentOfType:"math",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing(),returnWrappingComponents(Me){return Me==="datumX"?[]:[["point",{componentType:"mathList",isAttributeNamed:"xs"}]]}},isArray:!0,numDimensions:2,entryPrefixes:["datumX","datum"],returnEntryDimensions:Me=>Me==="datum"?1:0,getArrayKeysFromVarName({arrayEntryPrefix:Me,varEnding:Or,arraySize:Hr}){if(Me==="datumX"){let Li=Or.split("_").map(ts=>Number(ts)-1);return Li.length===2&&Li.every((ts,rs)=>Number.isInteger(ts)&&ts>=0)?Hr?Li.every((ts,rs)=>ts<Hr[rs])?[String(Li)]:[]:[String(Li)]:[]}else{let Li=Number(Or)-1;return Number.isInteger(Li)&&Li>=0?Hr?Li<Hr[0]?Array.from(Array(Hr[1]),(ts,rs)=>Li+","+rs):[]:[Li+",0"]:[]}},arrayVarNameFromPropIndex(Me,Or){if(Or==="data")return Me.length===1?"datum"+Me[0]:`datumX${Me[0]}_${Me[1]}`;if(Or.slice(0,5)==="datum"){let Hr=Number(Or.slice(5));if(Number.isInteger(Hr)&&Hr>0)return`datumX${Hr}_${Me[0]}`}return null},returnArraySizeDependencies:()=>({data:{dependencyType:"attributeComponent",attributeName:"data",variableNames:["numPoints","numDimensions"]}}),returnArraySize({dependencyValues:Me}){let Or=Me.data;return Or?[Or.stateValues.numPoints,Or.stateValues.numDimensions]:[0,0]},returnArrayDependenciesByKey(){return{globalDependencies:{data:{dependencyType:"attributeComponent",attributeName:"data",variableNames:["points"]}}}},arrayDefinitionByKey({globalDependencyValues:Me}){let Or=Me.data.stateValues.points,Hr={};for(let Li in Or){let ts=Or[Li];for(let rs in Or)Hr[`${Li},${rs}`]=ts[rs]}return{setValue:{data:Hr}}}},ae}}class RegionBetweenCurveXAxis extends GraphicalComponent{static componentType="regionBetweenCurveXAxis";static styleOverrideCategories=["fill"];static componentDocs={summary:"A region bounded between a curve and the x-axis"};static createAttributesObject(){let ae=super.createAttributesObject();return ae.boundaryValues={description:"Boundary values defining the region's left/right edges.",createComponentOfType:"numberList",createStateVariable:"boundaryValues",defaultValue:[0,1],forRenderer:!0,public:!0},ae.function={createComponentOfType:"function",description:"The function whose graph bounds the region."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnGraphicalStyleDescriptionDefinitions({kind:"region",noun:"region"})),ae.function={additionalStateVariablesDefined:[{variableName:"haveFunction",forRenderer:!0},{variableName:"fDefinition",forRenderer:!0}],returnDependencies:()=>({functionAttr:{dependencyType:"attributeComponent",attributeName:"function",variableNames:["numericalfs","numInputs","numOutputs","fDefinition"]}}),definition({dependencyValues:Me}){return Me.functionAttr===null||Me.functionAttr.stateValues.numInputs!==1||Me.functionAttr.stateValues.numOutputs!==1?{setValue:{function:()=>NaN,haveFunction:!1,fDefinition:{}}}:{setValue:{function:Me.functionAttr.stateValues.numericalfs[0],haveFunction:!0,fDefinition:Me.functionAttr.stateValues.fDefinition}}}},ae.nearestPoint={returnDependencies:()=>({function:{dependencyType:"stateVariable",variableName:"function"},boundaryValues:{dependencyType:"stateVariable",variableName:"boundaryValues"},haveFunction:{dependencyType:"stateVariable",variableName:"haveFunction"}}),definition({dependencyValues:Me}){if(!Me.haveFunction)return{setValue:{nearestPoint:()=>({})}};const Or=Math.min(Me.boundaryValues[0],Me.boundaryValues[1]),Hr=Math.max(Me.boundaryValues[0],Me.boundaryValues[1]),Li=Me.function;return{setValue:{nearestPoint:function({variables:rs}){let ns=rs.x1.evaluate_to_constant(),is=rs.x2.evaluate_to_constant();ns=Math.max(Or,Math.min(Hr,ns));let[as,os]=[0,Li(ns)].sort((ss,ls)=>ss-ls);return is=Math.max(as,Math.min(os,is)),{x1:ns,x2:is}}}}}},ae}}class RegionBetweenCurves extends GraphicalComponent{static componentType="regionBetweenCurves";static styleOverrideCategories=["fill"];static componentDocs={summary:"A region bounded between two curves"};static createAttributesObject(){let ae=super.createAttributesObject();return ae.boundaryValues={description:"Boundary values defining the region's edges.",createComponentOfType:"numberList",createStateVariable:"boundaryValues",defaultValue:[0,1],forRenderer:!0,public:!0},ae.flipFunctions={description:"Whether to swap the role of x and y for the input functions.",createComponentOfType:"boolean",createStateVariable:"flipFunctions",defaultValue:!1,public:!0,forRenderer:!0},ae}static returnChildGroups(){let ae=super.returnChildGroups();return ae.push({group:"functions",componentTypes:["function"]}),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnGraphicalStyleDescriptionDefinitions({kind:"region",noun:"region"})),ae.functions={additionalStateVariablesDefined:[{variableName:"haveFunctions",forRenderer:!0},{variableName:"fDefinitions",forRenderer:!0}],returnDependencies:()=>({functions:{dependencyType:"child",childGroups:["functions"],variableNames:["numericalfs","numInputs","numOutputs","fDefinition"]}}),definition({dependencyValues:Me}){return Me.functions.length<2||Me.functions[0].stateValues.numInputs!==1||Me.functions[0].stateValues.numOutputs!==1||Me.functions[1].stateValues.numInputs!==1||Me.functions[1].stateValues.numOutputs!==1?{setValue:{functions:[()=>NaN,()=>NaN],haveFunctions:!1,fDefinitions:[{},{}]}}:{setValue:{functions:[Me.functions[0].stateValues.numericalfs[0],Me.functions[1].stateValues.numericalfs[0]],haveFunctions:!0,fDefinitions:[Me.functions[0].stateValues.fDefinition,Me.functions[1].stateValues.fDefinition]}}}},ae.nearestPoint={returnDependencies:()=>({functions:{dependencyType:"stateVariable",variableName:"functions"},boundaryValues:{dependencyType:"stateVariable",variableName:"boundaryValues"},flipFunctions:{dependencyType:"stateVariable",variableName:"flipFunctions"},haveFunctions:{dependencyType:"stateVariable",variableName:"haveFunctions"}}),definition({dependencyValues:Me}){if(!Me.haveFunctions)return{setValue:{nearestPoint:()=>({})}};const Or=Math.min(Me.boundaryValues[0],Me.boundaryValues[1]),Hr=Math.max(Me.boundaryValues[0],Me.boundaryValues[1]),Li=Me.functions[0],ts=Me.functions[1];return{setValue:{nearestPoint:function({variables:ns}){let is=ns.x1.evaluate_to_constant(),as=ns.x2.evaluate_to_constant();Me.flipFunctions&&([is,as]=[as,is]),is=Math.max(Or,Math.min(Hr,is));let[os,ss]=[Li(is),ts(is)].sort((ls,us)=>ls-us);return as=Math.max(os,Math.min(ss,as)),Me.flipFunctions&&([is,as]=[as,is]),{x1:is,x2:as}}}}}},ae}}function returnFieldFunctionChildGroup(){return{group:"functions",componentTypes:["function"]}}function returnFieldVariablesAttribute(){return{variables:{createComponentOfType:"_variableNameList",description:'Names of the variables a bare expression is read as a function of. Defaults to "x y". Ignored when the function is given as a <function> child, which names its own variables.'}}}function returnFieldLatticeAttributes({markNoun:Br,markLengthDefault:ae,markLengthDescription:Me}){return{dx:{createComponentOfType:"number",createStateVariable:"dx",defaultValue:1,public:!0,forRenderer:!0,description:`Horizontal spacing between ${Br}.`},dy:{createComponentOfType:"number",createStateVariable:"dy",defaultValue:1,public:!0,forRenderer:!0,description:`Vertical spacing between ${Br}.`},xoffset:{createComponentOfType:"number",createStateVariable:"xoffset",defaultValue:0,public:!0,forRenderer:!0,description:"Horizontal offset of the lattice origin."},yoffset:{createComponentOfType:"number",createStateVariable:"yoffset",defaultValue:0,public:!0,forRenderer:!0,description:"Vertical offset of the lattice origin."},markLength:{createComponentOfType:"number",createStateVariable:"markLength",defaultValue:ae,public:!0,forRenderer:!0,description:Me},maxMarks:{createComponentOfType:"number",createStateVariable:"maxMarks",defaultValue:2500,public:!0,forRenderer:!0,description:`Upper bound on how many ${Br} are drawn. Zooming out past this coarsens the lattice rather than drawing an unbounded number of ${Br}.`}}}function returnFieldFunctionStateVariableDefinitions({numOutputs:Br}){const ae=Br===1,Me=ae?"slopeField":"vectorField",Or=ae?"vectorField":"slopeField",Hr=ae?2:1;return{haveFunction:{forRenderer:!0,additionalStateVariablesDefined:[{variableName:"fDefinitions",forRenderer:!0}],returnDependencies:()=>({functionChildren:{dependencyType:"child",childGroups:["functions"],variableNames:["numOutputs","fDefinitions"]}}),definition({dependencyValues:Li}){const ts=Li.functionChildren[0]??null;if(ts===null||ts.stateValues.numOutputs!==Br){const rs=[];if(ts!==null){const ns=ts.stateValues.numOutputs;rs.push(codedDiagnostic({type:"warning",code:"doenet-w0122",args:{component:Me,expected:Br,found:ns,alternative:ns===Hr?Or:"none"},position:ts.position||void 0}))}return{setValue:{haveFunction:!1,fDefinitions:Array.from({length:Br},()=>({}))},sendDiagnostics:rs}}return{setValue:{haveFunction:!0,fDefinitions:ts.stateValues.fDefinitions}}}}}}class SlopeField extends GraphicalComponent{static componentType="slopeField";static styleOverrideCategories=["line"];static includeLabels=!1;static componentDocs={summary:"A slope field for a differential equation y' = f(x,y), drawn as tick marks on a lattice"};static additionalSchemaChildren=["math","number","string"];static returnChildGroups(){let ae=super.returnChildGroups();return ae.push(returnFieldFunctionChildGroup()),ae}static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnFieldVariablesAttribute(),returnFieldLatticeAttributes({markNoun:"marks",markLengthDefault:20,markLengthDescription:"Length of each mark, in pixels. Marks keep this length whatever the axis scaling, so slopes are drawn at their true visual angle."})),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnGraphicalStyleDescriptionDefinitions({kind:"line",noun:"slope-field"}),returnFieldFunctionStateVariableDefinitions({numOutputs:1})),ae}}class VectorField extends GraphicalComponent{static componentType="vectorField";static styleOverrideCategories=["line"];static includeLabels=!1;static componentDocs={summary:"A vector field drawn as arrows on a lattice, from a function with two outputs"};static additionalSchemaChildren=["math","number","string"];static returnChildGroups(){let ae=super.returnChildGroups();return ae.push(returnFieldFunctionChildGroup()),ae}static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnFieldVariablesAttribute(),returnFieldLatticeAttributes({markNoun:"arrows",markLengthDefault:24,markLengthDescription:"Length in pixels of the longest arrow, or of every arrow when normalize is set. Arrows keep this length whatever the axis scaling."})),ae.normalize={createComponentOfType:"boolean",createStateVariable:"normalize",defaultValue:!1,public:!0,forRenderer:!0,description:"Draw every arrow the same length, showing direction only rather than magnitude."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnGraphicalStyleDescriptionDefinitions({kind:"line",noun:"vector-field"}),returnFieldFunctionStateVariableDefinitions({numOutputs:2})),ae}}class RegionHalfPlane extends GraphicalComponent{static componentType="regionHalfPlane";static componentDocs={summary:"A half-plane region bounded by a line"};static rendererType=void 0;static createAttributesObject(){let ae=super.createAttributesObject();return ae.horizontal={description:"Whether the half-plane extends horizontally, bounded by the vertical line x = boundaryValue. If false, the half-plane extends vertically, bounded by the horizontal line y = boundaryValue.",createComponentOfType:"boolean",createStateVariable:"horizontal",defaultValue:!0,public:!0},ae.boundaryValue={description:"Position of the bounding line: x = boundaryValue when horizontal is true, y = boundaryValue when horizontal is false.",createComponentOfType:"number",createStateVariable:"boundaryValue",defaultValue:0,public:!0},ae.greaterThan={description:"Whether the region is the side where the inequality is greater than the boundary.",createComponentOfType:"boolean",createStateVariable:"greaterThan",defaultValue:!0,public:!0},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.nearestPoint={returnDependencies:()=>({horizontal:{dependencyType:"stateVariable",variableName:"horizontal"},boundaryValue:{dependencyType:"stateVariable",variableName:"boundaryValue"},greaterThan:{dependencyType:"stateVariable",variableName:"greaterThan"}}),definition({dependencyValues:Me}){let Or=Me.boundaryValue;return{setValue:{nearestPoint:function({variables:Hr,scales:Li}){if(!Number.isFinite(Or))return{};if(Me.horizontal)if(Me.greaterThan)if(Hr.x1<Or){let ts=Object.assign({},Hr);return ts.x1=Or,ts}else return{};else if(Hr.x1>Or){let ts=Object.assign({},Hr);return ts.x1=Or,ts}else return{};else if(Me.greaterThan)if(Hr.x2<Or){let ts=Object.assign({},Hr);return ts.x2=Or,ts}else return{};else if(Hr.x2>Or){let ts=Object.assign({},Hr);return ts.x2=Or,ts}else return{}}}}}},ae}}class CodeEditor extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{updateImmediateValue:inputUpdateImmediateValue.bind(this),updateValue:inputUpdateValue.bind(this),recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="codeEditor";static componentDocs={summary:"An interactive DoenetML code editor"};static variableForImplicitProp="value";static renderChildren=!0;static ignoreVariantsFromChildren=!0;static processWhenJustUpdatedForNewComponent=!0;static ignoreErrorsFromChildren=!0;static get stateVariablesShadowedForReference(){return["value"]}static createAttributesObject(){let ae=super.createAttributesObject();return ae.prefill={description:"Initial code shown in the editor before the user types.",createComponentOfType:"text",createStateVariable:"prefill",defaultValue:"",public:!0},ae.bindValueTo={createComponentOfType:"text",description:"Two-way binding target for the input's value."},ae.width={description:'Editor width (e.g. "100%" or "600px").',createComponentOfType:"componentSize",createStateVariable:"width",defaultValue:{size:"100",isAbsolute:!1},forRenderer:!0,public:!0},ae.height={description:'Editor height (e.g. "500px").',createComponentOfType:"componentSize",createStateVariable:"height",defaultValue:{size:400,isAbsolute:!0},forRenderer:!0,public:!0},ae.viewerRatio={createComponentOfType:"number",description:"Fraction of the editor area allotted to the live viewer."},ae.showResults={description:"Whether to render the results panel alongside the editor.",createComponentOfType:"boolean",createStateVariable:"showResults",defaultValue:!1,forRenderer:!0,public:!0},ae.showFormatter={description:"Whether to show a code formatter button.",createComponentOfType:"boolean",createStateVariable:"showFormatter",defaultValue:!1,forRenderer:!0,public:!0},ae.resultsLocation={description:"Position of the results panel relative to the editor.",createComponentOfType:"text",createStateVariable:"resultsLocation",defaultValue:"bottom",forRenderer:!0,public:!0,toLowerCase:!0,validValues:[{value:"bottom",description:"Place the results panel below the editor."},{value:"start",description:"Place the results panel before the editor: to its left in a left-to-right document, to its right in a right-to-left one."},{value:"end",description:"Place the results panel after the editor: to its right in a left-to-right document, to its left in a right-to-left one."}]},ae.readOnly={description:"Whether the editor is read-only.",createComponentOfType:"boolean",createStateVariable:"readOnly",defaultValue:!1,forRenderer:!0,public:!0},ae.initialOpenTab={description:"Which diagnostics/responses tab to open initially.",createComponentOfType:"text",createStateVariable:"initialOpenTab",defaultValue:"first",forRenderer:!0,public:!0,toLowerCase:!0,validValues:[{value:"none",description:"Panel starts closed."},{value:"first",description:"Open the first available tab."},{value:"errors",description:"Open the errors tab."},{value:"warnings",description:"Open the warnings tab."},{value:"info",description:"Open the info tab."},{value:"accessibility",description:"Open the accessibility tab."},{value:"responses",description:"Open the responses tab."},{value:"help",description:"Open the help tab."}]},ae.renderedName={createPrimitiveOfType:"string",description:"Name to assign to the dynamically-rendered DoenetML output."},ae.staticName={createPrimitiveOfType:"string",description:"Name to assign to the static DoenetML source."},ae}static keepChildrenSerialized({serializedComponent:ae}){return ae.children===void 0?[]:Object.keys(ae.children)}static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnInputValueChangedStateVariableDefinitions({valueChangedDescription:"Whether the value has been changed from its initial state.",immediateValueChangedDescription:"Whether the value, including in-progress edits, has been changed from its initial state."})),ae.prefillFromChildren={returnDependencies:()=>({childrenDoenetML:{dependencyType:"doenetML",displayOnlyChildren:!0}}),definition({dependencyValues:Me}){let Or=Me.childrenDoenetML;return Or&&(Or+=`
2607
2607
  `),{setValue:{prefillFromChildren:Or}}}},ae.value={description:"The code value of the input.",public:!0,shadowingInstructions:{createComponentOfType:"text"},hasEssential:!0,forRenderer:!0,returnDependencies:()=>({bindValueTo:{dependencyType:"attributeComponent",attributeName:"bindValueTo",variableNames:["value"]},prefill:{dependencyType:"stateVariable",variableName:"prefill"},prefillFromChildren:{dependencyType:"stateVariable",variableName:"prefillFromChildren"},valueChanged:{dependencyType:"stateVariable",variableName:"valueChanged",onlyToSetInInverseDefinition:!0},immediateValueChanged:{dependencyType:"stateVariable",variableName:"immediateValueChanged",onlyToSetInInverseDefinition:!0}}),definition:function({dependencyValues:Me,usedDefault:Or}){return Me.bindValueTo?{setValue:{value:Me.bindValueTo.stateValues.value}}:{useEssentialOrDefaultValue:{value:{variablesToCheck:"value",get defaultValue(){return Or.prefill?Me.prefillFromChildren:Me.prefill}}}}},inverseDefinition:function({desiredStateVariableValues:Me,dependencyValues:Or}){let Hr=[{setDependency:"valueChanged",desiredValue:!0},{setDependency:"immediateValueChanged",desiredValue:!0}];return Or.bindValueTo?Hr.push({setDependency:"bindValueTo",desiredValue:Me.value,variableIndex:0}):Hr.push({setEssentialValue:"value",value:Me.value}),{success:!0,instructions:Hr}}},Object.assign(ae,returnImmediateValueStateVariableDefinition({description:"The code value reflecting the user's in-progress edits.",createComponentOfType:"text"})),ae.text={description:"The current code as a plain text string.",public:!0,shadowingInstructions:{createComponentOfType:"text"},returnDependencies:()=>({value:{dependencyType:"stateVariable",variableName:"value"}}),definition:function({dependencyValues:Me}){return{setValue:{text:Me.value}}}},ae.componentType={returnDependencies:()=>({}),definition:()=>({setValue:{componentType:"text"}})},ae.allChildren={returnDependencies:()=>({allChildren:{dependencyType:"child",childGroups:["anything"]}}),definition({dependencyValues:Me}){return{setValue:{allChildren:Me.allChildren}}}},ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}class HasSameFactoring extends BooleanComponent{static componentType="hasSameFactoring";static componentDocs={summary:"Boolean condition that tests for equivalent factoring"};static rendererType="boolean";static createAttributesObject(){let ae=super.createAttributesObject();return ae.variable={createComponentOfType:"_variableName",createStateVariable:"variable",defaultValue:Context.fromAst("x"),description:"Variable used when comparing factored expressions."},ae.restrictDivision={createComponentOfType:"boolean",createStateVariable:"restrictDivision",defaultValue:!1,description:"Whether to disallow dividing through to match factored forms."},ae.monomialFactorMustMatch={createComponentOfType:"boolean",createStateVariable:"monomialFactorMustMatch",defaultValue:!1,description:"Whether monomial factors must match exactly (implies restrictDivision)."},ae.allowOnlySignDifferences={createComponentOfType:"boolean",createStateVariable:"allowOnlySignDifferences",defaultValue:!1,description:"Whether to count factorizations as equivalent when they differ only by sign."},ae}static returnChildGroups(){return[{group:"maths",componentTypes:["math"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return delete ae.parsedExpression,delete ae.mathChildrenByCode,ae.value={public:!0,description:"Whether the input math expressions share the same factoring.",shadowingInstructions:{createComponentOfType:"boolean"},forRenderer:!0,returnDependencies:()=>({mathChildren:{dependencyType:"child",childGroups:["maths"],variableNames:["value"]},allowedErrorInNumbers:{dependencyType:"stateVariable",variableName:"allowedErrorInNumbers"},includeErrorInNumberExponents:{dependencyType:"stateVariable",variableName:"includeErrorInNumberExponents"},allowedErrorIsAbsolute:{dependencyType:"stateVariable",variableName:"allowedErrorIsAbsolute"},numSignErrorsMatched:{dependencyType:"stateVariable",variableName:"numSignErrorsMatched"},variable:{dependencyType:"stateVariable",variableName:"variable"},restrictDivision:{dependencyType:"stateVariable",variableName:"restrictDivision"},monomialFactorMustMatch:{dependencyType:"stateVariable",variableName:"monomialFactorMustMatch"},allowOnlySignDifferences:{dependencyType:"stateVariable",variableName:"allowOnlySignDifferences"}}),definition:function({dependencyValues:Me}){if(Me.mathChildren.length!==2)return{setValue:{value:!1}};let Or=Me.mathChildren[0].stateValues.value,Hr=Me.mathChildren[1].stateValues.value;if(checkEquality({object1:Or,object2:Hr,isUnordered:!1,partialMatches:!1,symbolicEquality:!1,allowedErrorInNumbers:Me.allowedErrorInNumbers,includeErrorInNumberExponents:Me.includeErrorInNumberExponents,allowedErrorIsAbsolute:Me.allowedErrorIsAbsolute,numSignErrorsMatched:Me.numSignErrorsMatched}).fraction_equal!==1)return{setValue:{value:!1}};if(Array.isArray(Or.tree)&&Or.tree[0]==="-"&&(Or=Context.fromAst(Or.tree[1])),Array.isArray(Hr.tree)&&Hr.tree[0]==="-"&&(Hr=Context.fromAst(Hr.tree[1])),!Me.restrictDivision&&!Me.monomialFactorMustMatch&&!Me.allowOnlySignDifferences&&(Array.isArray(Or.tree)&&Or.tree[0]==="/"&&Context.fromAst(Or.tree[2]).variables().length===0&&(Or=Context.fromAst(Or.tree[1]),Array.isArray(Or.tree)&&Or.tree[0]==="-"&&(Or=Context.fromAst(Or.tree[1]))),Array.isArray(Hr.tree)&&Hr.tree[0]==="/"&&Context.fromAst(Hr.tree[2]).variables().length===0&&(Hr=Context.fromAst(Hr.tree[1]),Array.isArray(Hr.tree)&&Hr.tree[0]==="-"&&(Hr=Context.fromAst(Hr.tree[1])))),Or=Context.fromAst(expandPositiveIntegerPowers(Or.tree)),Hr=Context.fromAst(expandPositiveIntegerPowers(Hr.tree)),Array.isArray(Or.tree)&&Or.tree[0]==="*"){if(!(Array.isArray(Hr.tree)&&Hr.tree[0]==="*"))return{setValue:{value:!1}}}else return Array.isArray(Hr.tree)&&Hr.tree[0]==="*"?{setValue:{value:!1}}:{setValue:{value:!0}};if(Me.monomialFactorMustMatch||Me.allowOnlySignDifferences){let us=findMonomialFromFactors(Or.tree.slice(1)),cs=findMonomialFromFactors(Hr.tree.slice(1));if(!us.equals(cs)){let ds=Context.fromAst(["-",cs.tree]);if(!us.equals(ds))return{setValue:{value:!1}}}}if(Me.allowOnlySignDifferences){let us=normalizeFactorSigns(Or),cs=normalizeFactorSigns(Hr);return{setValue:{value:us.equalsViaSyntax(cs,{allowed_error_in_numbers:Me.allowedErrorInNumbers,include_error_in_number_exponents:Me.includeErrorInNumberExponents,allowed_error_is_absolute:Me.allowedErrorIsAbsolute})}}}let ts=Or.tree.slice(1).filter(us=>Context.fromAst(us).variables().length>0),rs=Hr.tree.slice(1).filter(us=>Context.fromAst(us).variables().length>0);if(ts.length!==rs.length)return{setValue:{value:!1}};let ns=0,is=0,as=0,os=0,ss=Me.variable.subscripts_to_strings().tree;for(let us of ts){let cs=Context.fromAst(us).subscripts_to_strings().derivative(ss).derivative(ss).simplify();if(cs.tree===0)is++;else if(cs.variables().length===0)ns++;else return{setValue:{value:!1}}}for(let us of rs){let cs=Context.fromAst(us).subscripts_to_strings().derivative(ss).derivative(ss).simplify();if(cs.tree===0)os++;else if(cs.variables().length===0)as++;else return{setValue:{value:!1}}}return{setValue:{value:is===os&&ns===as}}}},ae}}function expandPositiveIntegerPowers(Br){if(!Array.isArray(Br))return Br;if(Br[0]==="^"){let ae=Br[1],Me=Br[2];Number.isInteger(Me)&&Me>0&&(Br=["*",...Array(Me).fill(ae)])}if(Br[0]==="*"){let ae=Br;Br=["*"];for(let Me of ae.slice(1))if(Array.isArray(Me)&&Me[0]==="^"){let Or=Me[1],Hr=Me[2];Number.isInteger(Hr)&&Hr>0?Br.push(...Array(Hr).fill(Or)):Br.push(Me)}else Br.push(Me)}return Br}function findMonomialFromFactors(Br){let ae=[],Me=!1;for(let Hr of Br)if(typeof Hr=="string"||Context.fromAst(Hr).variables().length===0){if(!Me){if(ae.length>0)return Context.fromAst("_");Me=!0}ae.push(Hr)}else Me=!1;let Or;return ae.length===0?Or=1:ae.length===1?Or=ae[0]:Or=["*",...ae],Context.fromAst(Or)}function normalizeFactorSigns(Br){let ae=Br.simplify().tree;if(ae[0]==="-"&&(ae=ae[1]),ae[0]!=="*")return Context.fromAst(ae).simplify();let Me=["*"];for(let Or of ae.slice(1))if(typeof Or=="number")Or<0?Me.push(-Or):Me.push(Or);else if(!Array.isArray(Or))Me.push(Or);else if(Or[0]==="-")Me.push(Or[1]);else if(Or[0]==="+"){let Hr=!1,Li=Or[1];if(typeof Li=="number")Li<0&&(Hr=!0);else if(Array.isArray(Li)){if(Li[0]==="-")Hr=!0;else if(Li[0]==="*"){let ts=Li[1];typeof ts=="number"?ts<0&&(Hr=!0):Array.isArray(ts)&&ts[0]==="-"&&(Hr=!0)}}Hr?Me.push(Context.fromAst(["-",Or]).simplify().tree):Me.push(Or)}else Me.push(Or);return Context.fromAst(Me).simplify()}class DataFrame extends BaseComponent{static componentType="dataFrame";static excludeFromSchema=!0;static componentDocs={summary:"A 2D table of typed data values."};static rendererType=void 0;static createAttributesObject(){let ae=super.createAttributesObject();return ae.source={description:"URL or identifier of the data source.",createComponentOfType:"text",createStateVariable:"source",required:!0,public:!0,forRenderer:!0},ae.hasHeader={description:"Whether the first row of data contains column headers.",createComponentOfType:"boolean",createStateVariable:"hasHeader",defaultValue:!0,public:!0},ae.columnTypes={createComponentOfType:"textList",createStateVariable:"columnTypesPrelim",defaultValue:[],description:"Override the inferred type of each column."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.cid={forRenderer:!0,returnDependencies:()=>({source:{dependencyType:"stateVariable",variableName:"source"}}),definition:function({dependencyValues:Me}){if(!Me.source||Me.source.substring(0,7).toLowerCase()!=="doenet:")return{setValue:{cid:null}};let Or=null,Hr=Me.source.match(/[:&]cid=([^&]+)/i);return Hr&&(Or=Hr[1]),{setValue:{cid:Or}}}},ae.dataFrame={stateVariablesDeterminingDependencies:["cid","source"],additionalStateVariablesDefined:[{variableName:"numRows",public:!0,description:"The number of rows in the data frame.",shadowingInstructions:{createComponentOfType:"integer"}},{variableName:"numColumns",public:!0,description:"The number of columns in the data frame.",shadowingInstructions:{createComponentOfType:"integer"}},{variableName:"columnTypes",public:!0,description:"The data type of each column in the data frame.",shadowingInstructions:{createComponentOfType:"textList"}},{variableName:"columnNames",public:!0,description:"The name of each column in the data frame.",shadowingInstructions:{createComponentOfType:"textList"}}],returnDependencies:({stateValues:Me})=>({fileContents:{dependencyType:"file",cid:Me.cid,uri:Me.source,fileType:"csv"},hasHeader:{dependencyType:"stateVariable",variableName:"hasHeader"},columnTypesPrelim:{dependencyType:"stateVariable",variableName:"columnTypesPrelim"}}),definition:function({dependencyValues:Me,componentIdx:Or}){let Hr=[],Li=[],ts=Me.fileContents.trim().split(`
2608
- `).map(ss=>ss.trim().split(",").map(ls=>ls.trim())),rs=ts[0]?.length,ns=!1;for(let ss of ts.slice(1))if(ss.length!==rs){ns=!0;break}if(ns){let ss=codedDiagnostic({type:"warning",code:"doenet-w0066",args:{componentIdx:String(Or)}});return{setValue:{dataFrame:null,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:Li},sendDiagnostics:[ss]}}let is={},as=[];if(Me.hasHeader?(is.columnNames=ts[0].map(ss=>(['"',"'"].includes(ss[0])&&ss[ss.length-1]===ss[0]&&(ss=ss.substring(1,ss.length-1)),ss)),as=ts.slice(1)):(is.columnNames=[...Array(rs).keys()].map(ss=>`col${ss+1}`),as=ts),[...new Set(is.columnNames)].length<is.columnNames){let ss=codedDiagnostic({type:"warning",code:"doenet-w0067",args:{componentIdx:String(Or)}});return{setValue:{dataFrame:null,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:Li},sendDiagnostics:[ss]}}if(is.columnNames.includes("")){let ss=codedDiagnostic({type:"warning",code:"doenet-w0068",args:{componentIdx:String(Or)}});return{setValue:{dataFrame:null,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:Li},sendDiagnostics:[ss]}}let os=as.length;is.shape=[os,rs];for(let ss=0;ss<rs;ss++){let ls=Me.columnTypesPrelim[ss]?.toLowerCase();if(["number","string"].includes(ls)||(ls="auto"),ls==="auto"){let us=!1;for(let cs=0;cs<os;cs++){let ds=as[cs][ss];if(ds!==""){let ps=Number(ds);if(!Number.isFinite(ps)){us=!0;break}}}us?ls="string":ls="number"}if(ls==="number")for(let us=0;us<os;us++)as[us][ss]===""?as[us][ss]=null:as[us][ss]=Number(as[us][ss]);else for(let us=0;us<os;us++){let cs=as[us][ss];['"',"'"].includes(cs[0])&&cs[cs.length-1]===cs[0]&&(cs=cs.substring(1,cs.length-1)),as[us][ss]=cs}Hr.push(ls)}return is.data=as,is.columnTypes=Hr,{setValue:{dataFrame:is,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:is.columnNames}}}},ae.means={description:"Mean of each numeric column in the data frame.",public:!0,shadowingInstructions:{createComponentOfType:"number"},isArray:!0,entryPrefixes:["mean"],returnArraySizeDependencies:()=>({numColumns:{dependencyType:"stateVariable",variableName:"numColumns"}}),returnArraySize({dependencyValues:Me}){return[Me.numColumns]},returnArrayDependenciesByKey(){return{globalDependencies:{dataFrame:{dependencyType:"stateVariable",variableName:"dataFrame"},numColumns:{dependencyType:"stateVariable",variableName:"numColumns"},numRows:{dependencyType:"stateVariable",variableName:"numRows"},columnTypes:{dependencyType:"stateVariable",variableName:"columnTypes"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arrayKeys:Or}){let Hr={};for(let Li of Or){let ts=0,rs=0;if(Me.columnTypes[Li]==="number"){for(let ns=0;ns<Me.numRows;ns++){let is=Me.dataFrame.data[ns][Li];is!==null&&(ts+=is,rs++)}ts/=rs}else ts=NaN;Hr[Li]=ts}return{setValue:{means:Hr}}}},ae}}const{mean,std,variance,median,quantileSeq}=Context.math,STATISTIC_VALUES=[{value:"mean",description:"The arithmetic mean."},{value:"stdev",description:"The standard deviation."},{value:"variance",description:"The variance."},{value:"stderr",description:"The standard error."},{value:"count",description:"The number of non-missing values."},{value:"minimum",description:"The smallest value."},{value:"quartile1",description:"The first quartile."},{value:"median",description:"The median."},{value:"quartile3",description:"The third quartile."},{value:"maximum",description:"The largest value."},{value:"range",description:"The maximum minus the minimum."},{value:"sum",description:"The sum of the values."}],DEFAULT_STATISTICS=["mean","stdev","count","minimum","quartile1","median","quartile3","maximum"];class SummaryStatistics extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="summaryStatistics";static excludeFromSchema=!0;static componentDocs={summary:"Summary statistics (mean, median, etc.) for a list of numbers."};static createAttributesObject(){let ae=super.createAttributesObject();return ae.source={createTargetComponentNames:!0,description:"Reference to the data frame to summarize."},ae.column={createComponentOfType:"text",createStateVariable:"desiredColumn",defaultValue:null,description:"Name of the column from the source data frame to summarize."},ae.statisticsToDisplay={createComponentOfType:"textList",createStateVariable:"statisticsToDisplayPrelim",defaultValue:["default"],toLowerCase:!0,validValues:[{value:"default",description:`The default selection: ${DEFAULT_STATISTICS.join(", ")}.`},{value:"all",description:"Every statistic listed here."},...STATISTIC_VALUES],description:'Which summary statistics to display (or "default" / "all").'},ae.byCategoryColumn={description:"Column used to group data when computing per-category statistics.",createComponentOfType:"text",createStateVariable:"byCategoryColumn",defaultValue:null,public:!0},Object.assign(ae,returnNumberDisplayAttributes()),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.statisticsToDisplay={description:"Which summary statistics to display.",public:!0,shadowingInstructions:{createComponentOfType:"textList"},returnDependencies:()=>({statisticsToDisplayPrelim:{dependencyType:"stateVariable",variableName:"statisticsToDisplayPrelim"}}),definition:function({dependencyValues:Me}){const Or=STATISTIC_VALUES.map(ts=>ts.value);let Hr=[],Li=Me.statisticsToDisplayPrelim;if(Li.includes("default"))Hr=[...DEFAULT_STATISTICS];else if(Li.includes("all"))Hr=[...Or];else for(let ts of Or)Li.includes(ts)&&Hr.push(ts);return{setValue:{statisticsToDisplay:Hr}}}},ae.sourceName={returnDependencies:()=>({source:{dependencyType:"attributeTargetComponentNames",attributeName:"source"}}),definition({dependencyValues:Me}){let Or;return Me.source?.length===1?Or=Me.source[0].absoluteName:Or=null,{setValue:{sourceName:Or}}}},ae.dataColumn={description:"The numeric column being summarized.",stateVariablesDeterminingDependencies:["sourceName"],additionalStateVariablesDefined:[{variableName:"columnName",public:!0,shadowingInstructions:{createComponentOfType:"text"},forRenderer:!0,description:"The name of the data column being summarized."}],returnDependencies({stateValues:Me}){return{dataFrame:{dependencyType:"stateVariable",componentIdx:Me.sourceName,variableName:"dataFrame",variableOptional:!0},desiredColumn:{dependencyType:"stateVariable",variableName:"desiredColumn"}}},definition({dependencyValues:Me}){let Or=null,Hr=null;if(Me.dataFrame){let Li=Me.dataFrame,ts=Li.columnNames.indexOf(Me.desiredColumn);if(ts!==-1){Hr=Me.desiredColumn,Or=[];for(let rs of Li.data)rs[ts]!==null&&Or.push(rs[ts])}}return{setValue:{dataColumn:Or,columnName:Hr}}}},ae.count={description:"The number of values in the data column.",public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=Me.dataColumn.length),{setValue:{count:Or}}}},ae.sum={description:"The sum of the values.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=Me.dataColumn.reduce((Hr,Li)=>Hr+Li)),{setValue:{sum:Or}}}},ae.mean={description:"The arithmetic mean of the values.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn!==null&&(Or=mean(Me.dataColumn)),{setValue:{mean:Or}}}},ae.stdev={description:"The sample standard deviation.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=std(Me.dataColumn)),{setValue:{stdev:Or}}}},ae.variance={description:"The sample variance.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=variance(Me.dataColumn)),{setValue:{variance:Or}}}},ae.stderr={description:"The standard error of the mean.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({stdev:{dependencyType:"stateVariable",variableName:"stdev"},count:{dependencyType:"stateVariable",variableName:"count"}}),definition({dependencyValues:Me}){let Or=null;return Me.stdev!==null&&(Or=Me.stdev/Math.sqrt(Me.count)),{setValue:{stderr:Or}}}},ae.minimum={description:"The minimum value.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=Math.min(...Me.dataColumn)),{setValue:{minimum:Or}}}},ae.maximum={description:"The maximum value.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=Math.max(...Me.dataColumn)),{setValue:{maximum:Or}}}},ae.median={description:"The median value.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=median(Me.dataColumn)),{setValue:{median:Or}}}},ae.quartile1={description:"The first quartile (25th percentile).",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=quantileSeq(Me.dataColumn,.25)),{setValue:{quartile1:Or}}}},ae.quartile3={description:"The third quartile (75th percentile).",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=quantileSeq(Me.dataColumn,.75)),{setValue:{quartile3:Or}}}},ae.range={description:"The range (maximum − minimum).",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({minimum:{dependencyType:"stateVariable",variableName:"minimum"},maximum:{dependencyType:"stateVariable",variableName:"maximum"}}),definition({dependencyValues:Me}){let Or=null;return Me.minimum!==null&&(Or=Me.maximum-Me.minimum),{setValue:{range:Or}}}},ae.summaryStatistics={forRenderer:!0,stateVariablesDeterminingDependencies:["statisticsToDisplay"],returnDependencies({stateValues:Me}){let Or={displayDigits:{dependencyType:"stateVariable",variableName:"displayDigits"},displayDecimals:{dependencyType:"stateVariable",variableName:"displayDecimals"},displaySmallAsZero:{dependencyType:"stateVariable",variableName:"displaySmallAsZero"}};return Me.statisticsToDisplay.includes("mean")&&(Or.mean={dependencyType:"stateVariable",variableName:"mean"}),Me.statisticsToDisplay.includes("stdev")&&(Or.stdev={dependencyType:"stateVariable",variableName:"stdev"}),Me.statisticsToDisplay.includes("variance")&&(Or.variance={dependencyType:"stateVariable",variableName:"variance"}),Me.statisticsToDisplay.includes("stderr")&&(Or.stderr={dependencyType:"stateVariable",variableName:"stderr"}),Me.statisticsToDisplay.includes("count")&&(Or.count={dependencyType:"stateVariable",variableName:"count"}),Me.statisticsToDisplay.includes("minimum")&&(Or.minimum={dependencyType:"stateVariable",variableName:"minimum"}),Me.statisticsToDisplay.includes("quartile1")&&(Or.quartile1={dependencyType:"stateVariable",variableName:"quartile1"}),Me.statisticsToDisplay.includes("median")&&(Or.median={dependencyType:"stateVariable",variableName:"median"}),Me.statisticsToDisplay.includes("quartile3")&&(Or.quartile3={dependencyType:"stateVariable",variableName:"quartile3"}),Me.statisticsToDisplay.includes("maximum")&&(Or.maximum={dependencyType:"stateVariable",variableName:"maximum"}),Me.statisticsToDisplay.includes("range")&&(Or.range={dependencyType:"stateVariable",variableName:"range"}),Me.statisticsToDisplay.includes("sum")&&(Or.sum={dependencyType:"stateVariable",variableName:"sum"}),Or},definition({dependencyValues:Me}){let Or={};return Me.mean!==void 0&&(Or.mean=roundForDisplay({value:Me.mean,dependencyValues:Me})),Me.stdev!==void 0&&(Or.stdev=roundForDisplay({value:Me.stdev,dependencyValues:Me})),Me.variance!==void 0&&(Or.variance=roundForDisplay({value:Me.variance,dependencyValues:Me})),Me.stderr!==void 0&&(Or.stderr=roundForDisplay({value:Me.stderr,dependencyValues:Me})),Me.count!==void 0&&(Or.count=roundForDisplay({value:Me.count,dependencyValues:Me})),Me.minimum!==void 0&&(Or.minimum=roundForDisplay({value:Me.minimum,dependencyValues:Me})),Me.quartile1!==void 0&&(Or.quartile1=roundForDisplay({value:Me.quartile1,dependencyValues:Me})),Me.median!==void 0&&(Or.median=roundForDisplay({value:Me.median,dependencyValues:Me})),Me.quartile3!==void 0&&(Or.quartile3=roundForDisplay({value:Me.quartile3,dependencyValues:Me})),Me.maximum!==void 0&&(Or.maximum=roundForDisplay({value:Me.maximum,dependencyValues:Me})),Me.range!==void 0&&(Or.range=roundForDisplay({value:Me.range,dependencyValues:Me})),Me.sum!==void 0&&(Or.sum=roundForDisplay({value:Me.sum,dependencyValues:Me})),{setValue:{summaryStatistics:Or}}}},ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}class Legend extends GraphicalComponent{static componentType="legend";static componentDocs={summary:"A legend describing the contents of a graph"};static createAttributesObject(){let ae=super.createAttributesObject();return ae.position={description:"Position of the legend on the graph.",createComponentOfType:"text",createStateVariable:"position",defaultValue:"upperRight",public:!0,forRenderer:!0,toLowerCase:!0,validValues:[{value:"upperRight",description:"Place the legend in the upper-right corner."},{value:"upperLeft",description:"Place the legend in the upper-left corner."},{value:"lowerRight",description:"Place the legend in the lower-right corner."},{value:"lowerLeft",description:"Place the legend in the lower-left corner."}]},ae.displayClosedSwatches={description:"Whether to render closed/filled swatches in the legend.",createComponentOfType:"boolean",createStateVariable:"displayClosedSwatches",defaultValue:!1,public:!0},ae}static returnChildGroups(){return[{group:"labels",componentTypes:["label"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.graphicalElementNames={returnDependencies:()=>({graphAncestor:{dependencyType:"ancestor",componentType:"graph",variableNames:["graphicalDescendants"]}}),definition({dependencyValues:Me}){return Me.graphAncestor?{setValue:{graphicalElementNames:Me.graphAncestor.stateValues.graphicalDescendants.map(Or=>Or.componentIdx)}}:{setValue:{graphicalElementNames:null}}}},ae.legendElements={forRenderer:!0,stateVariablesDeterminingDependencies:["graphicalElementNames"],returnDependencies:({stateValues:Me})=>{let Or={labelChildren:{dependencyType:"child",childGroups:["labels"],variableNames:["value","hasLatex","forObjectComponentIdx"]},displayClosedSwatches:{dependencyType:"stateVariable",variableName:"displayClosedSwatches"}};if(Me.graphicalElementNames){Or.numGraphicalElements={dependencyType:"value",value:Me.graphicalElementNames.length};for(let[Hr,Li]of Me.graphicalElementNames.entries())Or[`graphicalElement${Hr}`]={dependencyType:"multipleStateVariables",componentIdx:Li,variableNames:["selectedStyle","styleNumber","filled"],variablesOptional:!0},Or[`graphicalElement${Hr}AdapterSource`]={dependencyType:"adapterSource",componentIdx:Li},Or[`graphicalElement${Hr}ShadowSource`]={dependencyType:"shadowSource",componentIdx:Li}}return Or},definition({dependencyValues:Me,componentInfoObjects:Or}){let Hr=[];if(Me.numGraphicalElements>0){let Li=[],ts=[],rs=[],ns=[];for(let ss=0;ss<Me.numGraphicalElements;ss++){let ls=Me[`graphicalElement${ss}`],us=Me[`graphicalElement${ss}AdapterSource`];us&&(ls={...ls},ls.componentIdx=us.componentIdx);let cs=Me[`graphicalElement${ss}ShadowSource`];if(cs){const ds=JSON.parse(JSON.stringify(ls));ds.componentIdx=cs.componentIdx,ns.push(ds)}ns.push(ls)}let is=ns.map(ss=>ss.componentIdx),as=[],os={};for(let ss of Me.labelChildren){let ls={value:ss.stateValues.value,hasLatex:ss.stateValues.hasLatex};if(ss.stateValues.forObjectComponentIdx){os[ss.stateValues.forObjectComponentIdx]=ls;let us=is.indexOf(ss.stateValues.forObjectComponentIdx);if(us!==-1){let cs=ns[us];Or.isInheritedComponentType({inheritedComponentType:cs.componentType,baseComponentType:"point"})?Li.push(cs.stateValues.styleNumber):Me.displayClosedSwatches&&Or.allComponentClasses[cs.componentType].representsClosedPath?ts.push(cs.stateValues.styleNumber):cs.componentType!=="legend"&&rs.push(cs.stateValues.styleNumber)}}as.push({labelInfo:ls,forObject:ss.stateValues.forObjectComponentIdx})}for(let ss of as){let ls;if(ss.forObject){let us=is.indexOf(ss.forObject);us!==-1&&(ls=ns[us],ns.splice(us,1),is.splice(us,1))}else for(let us=0;us<ns.length;us++){let cs=ns[us];if(!(cs.componentIdx in os)){if(Or.isInheritedComponentType({inheritedComponentType:cs.componentType,baseComponentType:"point"})){if(!Li.includes(cs.stateValues.styleNumber)){ls=cs;break}}else if(Me.displayClosedSwatches&&Or.allComponentClasses[cs.componentType].representsClosedPath){if(!ts.includes(cs.stateValues.styleNumber)){ls=cs;break}}else if(cs.componentType!=="legend"&&!rs.includes(cs.stateValues.styleNumber)){ls=cs;break}}}if(ls){let us=ls.stateValues.selectedStyle,cs=ls.stateValues.styleNumber;Or.isInheritedComponentType({inheritedComponentType:ls.componentType,baseComponentType:"point"})?(Li.push(cs),Hr.push({swatchType:"marker",markerStyle:us.markerStyle,markerColor:us.markerColor,markerSize:us.markerSize,lineOpacity:us.lineOpacity,label:ss.labelInfo})):Me.displayClosedSwatches&&Or.allComponentClasses[ls.componentType].representsClosedPath?(ts.push(cs),Hr.push({swatchType:"rectangle",lineStyle:us.lineStyle,lineColor:us.lineColor,lineWidth:us.lineWidth,lineOpacity:us.lineOpacity,fillColor:us.fillColor,filled:ls.stateValues.filled,fillOpacity:us.fillOpacity,label:ss.labelInfo})):(rs.push(cs),Hr.push({swatchType:"line",lineStyle:us.lineStyle,lineColor:us.lineColor,lineWidth:us.lineWidth,lineOpacity:us.lineOpacity,label:ss.labelInfo}))}}}return{setValue:{legendElements:Hr}}}},ae.graphLimits={forRenderer:!0,returnDependencies:()=>({graphAncestor:{dependencyType:"ancestor",componentType:"graph",variableNames:["xMin","xMax","yMin","yMax"]}}),definition({dependencyValues:Me}){return Me.graphAncestor?{setValue:{graphLimits:Me.graphAncestor.stateValues}}:{setValue:{graphLimits:null}}}},ae}}const BLANK="_";function parameterKey(Br){if(isValidVariable({tree:Br}))return typeof Br=="string"?"s"+Br:"t"+JSON.stringify(Br)}function replacePlaceholders(Br,ae){let Me=ae(Br);return Me!==void 0?Me:Array.isArray(Br)?[Br[0],...Br.slice(1).map(Or=>replacePlaceholders(Or,ae))]:Br}class MatchesPattern extends BooleanComponent{static componentType="matchesPattern";static componentDocs={summary:"Boolean condition that tests whether input matches a math pattern"};static rendererType="boolean";static createAttributesObject(){let ae=super.createAttributesObject();return ae.pattern={createComponentOfType:"math",description:"Math expression pattern to match against.",highlighted:!0},ae.parameters={createComponentOfType:"_variableNameList",description:"Variables in the pattern that act as placeholders. Repeating one in the pattern requires the same subexpression at each occurrence. When specified, blanks in the pattern are matched literally.",highlighted:!0},ae.allowImplicitIdentities={description:"Whether to allow implicit identity transformations when matching.",createComponentOfType:"boolean",createStateVariable:"allowImplicitIdentities",defaultValue:!1,public:!0,highlighted:!0},ae.allowPermutations={description:"Whether to allow permutations of operands when matching.",createComponentOfType:"boolean",createStateVariable:"allowPermutations",defaultValue:!0,public:!0,highlighted:!0},ae.requireNumericMatches={description:"Whether numeric placeholders must match numbers.",createComponentOfType:"boolean",createStateVariable:"requireNumericMatches",defaultValue:!1,public:!0,highlighted:!0},ae.requireVariableMatches={description:"Whether variable placeholders must match variables.",createComponentOfType:"boolean",createStateVariable:"requireVariableMatches",defaultValue:!1,public:!0,highlighted:!0},ae.excludeMatches={description:"Patterns whose matches are excluded.",createComponentOfType:"mathList",createStateVariable:"excludeMatches",defaultValue:[],public:!0,highlighted:!0},ae.matchExpressionWithBlanks={description:"Whether to allow expressions with blanks to match.",createComponentOfType:"boolean",createStateVariable:"matchExpressionWithBlanks",defaultValue:!1,public:!0,highlighted:!0},ae}static additionalSchemaChildren=["string"];static returnSugarInstructions(){let ae=[],Me=function({matchedChildren:Or,componentInfoObjects:Hr,nComponents:Li,stateIdInfo:ts}){return Or.length===0||Or.length===1&&Hr.componentIsSpecifiedType(Or[0],"math")?{success:!1}:{success:!0,newChildren:[{type:"serialized",componentType:"math",componentIdx:Li++,stateId:ts?`${ts.prefix}${ts.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}],nComponents:Li}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"maths",componentTypes:["math"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return delete ae.parsedExpression,delete ae.mathChildrenByCode,ae.pattern={additionalStateVariablesDefined:["patternVariables"],returnDependencies:()=>({patternAttr:{dependencyType:"attributeComponent",attributeName:"pattern",variableNames:["value"]},parametersAttr:{dependencyType:"attributeComponent",attributeName:"parameters",variableNames:["variables"]}}),definition({dependencyValues:Me}){let Or=[];if(!Me.patternAttr)return{setValue:{pattern:BLANK,patternVariables:Or}};let Hr=Me.patternAttr.stateValues.value,Li=Hr.variables(),ts=703;function rs(){let cs=numberToLetters(ts);for(ts++;Li.includes(cs);)cs=numberToLetters(ts),ts++;return cs}if(!Me.parametersAttr)return{setValue:{pattern:replacePlaceholders(Hr.tree,ds=>{if(ds!==BLANK)return;let ps=rs();return Or.push(ps),ps}),patternVariables:Or}};let ns=Me.parametersAttr.position||void 0,is=[],as=new Map,os=new Map;for(let cs of Me.parametersAttr.stateValues.variables){let ds=parameterKey(cs.tree);if(ds===void 0||as.has(ds))continue;let ps=rs();as.set(ds,ps),os.set(ps,cs.toString()),Or.push(ps)}let ss=new Set,ls=replacePlaceholders(Hr.tree,cs=>{let ds=as.get(parameterKey(cs));return ds!==void 0&&ss.add(ds),ds}),us=[...os].filter(([cs])=>!ss.has(cs)).map(([cs,ds])=>ds);return us.length>0&&is.push(codedDiagnostic({type:"warning",code:"doenet-w0117",args:{parameters:us},position:ns})),{setValue:{pattern:ls,patternVariables:Or},sendDiagnostics:is}}},ae.value={description:"Whether the input matches the pattern.",additionalStateVariablesDefined:[{variableName:"allPatternMatches"}],public:!0,highlighted:!0,shadowingInstructions:{createComponentOfType:"boolean"},forRenderer:!0,returnDependencies:()=>({pattern:{dependencyType:"stateVariable",variableName:"pattern"},patternVariables:{dependencyType:"stateVariable",variableName:"patternVariables"},mathChildren:{dependencyType:"child",childGroups:["maths"],variableNames:["value"]},allowImplicitIdentities:{dependencyType:"stateVariable",variableName:"allowImplicitIdentities"},allowPermutations:{dependencyType:"stateVariable",variableName:"allowPermutations"},requireNumericMatches:{dependencyType:"stateVariable",variableName:"requireNumericMatches"},requireVariableMatches:{dependencyType:"stateVariable",variableName:"requireVariableMatches"},excludeMatches:{dependencyType:"stateVariable",variableName:"excludeMatches"},matchExpressionWithBlanks:{dependencyType:"stateVariable",variableName:"matchExpressionWithBlanks"}}),definition:function({dependencyValues:Me}){if(Me.mathChildren.length===0)return{setValue:{value:!1,allPatternMatches:[]}};let Or=Me.mathChildren[0].stateValues.value;if(Or.variables().includes(BLANK)&&!Me.matchExpressionWithBlanks)return{setValue:{value:!1,allPatternMatches:[]}};let Hr={};if(Me.requireNumericMatches){let is=as=>!Number.isNaN(Context.fromAst(as).evaluate_to_constant());Me.patternVariables.forEach(as=>Hr[as]=is)}else if(Me.requireVariableMatches){let is=as=>typeof as=="string";Me.patternVariables.forEach(as=>Hr[as]=is)}else Me.patternVariables.forEach(is=>Hr[is]=!0);let Li={variables:Hr,allow_permutations:Me.allowPermutations};Me.allowImplicitIdentities&&(Li.allow_implicit_identities=Me.patternVariables);let ts=Or.match(Me.pattern,Li),rs=!1,ns=[];return ts&&(Object.values(ts).map(is=>Context.fromAst(is)).some(is=>Me.excludeMatches.some(as=>is.variables().some(os=>as.equalsViaSyntax(Context.fromAst(os)))))||(rs=!0,ns=Me.patternVariables.map(is=>Context.fromAst(ts[is]??BLANK)))),{setValue:{value:rs,allPatternMatches:ns}}}},ae.numMatches={description:"The number of matches found.",public:!0,highlighted:!0,shadowingInstructions:{createComponentOfType:"number"},returnDependencies:()=>({allPatternMatches:{dependencyType:"stateVariable",variableName:"allPatternMatches"}}),definition({dependencyValues:Me}){return{setValue:{numMatches:Me.allPatternMatches.length},checkForActualChange:{numMatches:!0}}}},ae.patternMatches={description:"The list of matched sub-expressions.",public:!0,highlighted:!0,shadowingInstructions:{createComponentOfType:"math"},isArray:!0,numDimensions:1,entryPrefixes:["patternMatch"],returnArraySizeDependencies:()=>({numMatches:{dependencyType:"stateVariable",variableName:"numMatches"}}),returnArraySize({dependencyValues:Me}){return[Me.numMatches]},returnArrayDependenciesByKey(){return{globalDependencies:{allPatternMatches:{dependencyType:"stateVariable",variableName:"allPatternMatches"}}}},arrayDefinitionByKey({globalDependencyValues:Me}){let Or={};for(let Hr=0;Hr<Me.__array_size[0];Hr++)Or[Hr]=Me.allPatternMatches[Hr];return{setValue:{patternMatches:Or}}}},ae}}class Matrix extends MathComponent{static componentType="matrix";static componentDocs={summary:"A matrix of math values",childAliases:{row:"matrixRow",column:"matrixColumn"}};static rendererType="math";static additionalSchemaChildren=["row","column"];static returnChildGroups(){return[{group:"rows",componentTypes:["matrixRow"]},{group:"columns",componentTypes:["matrixColumn"]},{group:"maths",componentTypes:["math"],excludeFromSchema:!0}]}static createAttributesObject(){let ae=super.createAttributesObject();return ae.defaultEntry={createComponentOfType:"math",createStateVariable:"defaultEntry",defaultValue:Context.fromAst(0),description:"Value used for entries that aren't explicitly specified."},ae.numRows={createComponentOfType:"integer",description:"Number of rows in the matrix."},ae.numColumns={createComponentOfType:"integer",description:"Number of columns in the matrix."},ae}static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,componentInfoObjects:Hr,nComponents:Li,stateIdInfo:ts}){if(Or.length===0)return{success:!1};let rs=[],ns=!1;for(let is of Or)typeof is!="string"&&(is.doenetAttributes||(is.doenetAttributes={}),is.componentType==="column"?(is.doenetAttributes.createNameFromComponentType="column",is.componentType="matrixColumn",ns=!0):is.componentType==="row"?(is.doenetAttributes.createNameFromComponentType="row",is.componentType="matrixRow",ns=!0):is.attributes?.createComponentOfType?.primitive.value==="column"?(is.doenetAttributes.createNameFromComponentType="column",is.attributes.createComponentOfType.primitive.value="matrixColumn",ns=!0):is.attributes?.createComponentOfType?.primitive.value==="row"&&(is.doenetAttributes.createNameFromComponentType="row",is.attributes.createComponentOfType.primitive.value="matrixRow",ns=!0),rs.push(is));return ns||(Or.length>1||!Hr.componentIsSpecifiedType(Or[0],"math"))&&(rs=[{type:"serialized",componentType:"math",componentIdx:Li++,stateId:ts?`${ts.prefix}${ts.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}]),{success:!0,newChildren:rs,nComponents:Li}};return ae.push({replacementFunction:Me}),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return delete ae.codePre,delete ae.mathChildrenFunctionSymbols,delete ae.expressionWithCodes,delete ae.mathChildrenWithCanBeModified,delete ae.codesAdjacentToStrings,delete ae.canBeModified,delete ae.mathChildrenByVectorComponent,Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.unordered={description:"Whether matrix entries should be treated as unordered.",public:!0,shadowingInstructions:{createComponentOfType:"boolean"},returnDependencies:()=>({}),definition(){return{setValue:{unordered:!1}}}},ae.matrixSizePre={returnDependencies:()=>({rowChildren:{dependencyType:"child",childGroups:["rows"],variableNames:["numComponents"]},colChildren:{dependencyType:"child",childGroups:["columns"],variableNames:["numComponents"]},mathChildren:{dependencyType:"child",childGroups:["maths"],variableNames:["matrixSize"]},numRowsAttr:{dependencyType:"attributeComponent",attributeName:"numRows",variableNames:["value"]},numColumnsAttr:{dependencyType:"attributeComponent",attributeName:"numColumns",variableNames:["value"]}}),definition({dependencyValues:Me}){let Or=null,Hr=null;return Me.numRowsAttr&&(Or=Me.numRowsAttr.stateValues.value,Number.isFinite(Or)&&Or>0||(Or=null)),Me.numColumnsAttr&&(Hr=Me.numColumnsAttr.stateValues.value,Number.isFinite(Hr)&&Hr>0||(Hr=null)),Me.rowChildren.length>0?(Or===null&&(Or=Me.rowChildren.length),Hr===null&&(Hr=Math.max(1,...Me.rowChildren.map(Li=>Li.stateValues.numComponents)))):Me.colChildren.length>0?(Hr===null&&(Hr=Me.colChildren.length),Or===null&&(Or=Math.max(1,...Me.colChildren.map(Li=>Li.stateValues.numComponents)))):Me.mathChildren.length===1?(Or===null&&(Or=Me.mathChildren[0].stateValues.matrixSize[0]),Hr===null&&(Hr=Me.mathChildren[0].stateValues.matrixSize[1])):Or===null?Hr===null?(Or=0,Hr=0):Or=1:Hr===null&&(Hr=1),{setValue:{matrixSizePre:[Or,Hr]}}}},ae.matrixPre={isArray:!0,numDimensions:2,hasEssential:!0,returnArraySizeDependencies:()=>({matrixSizePre:{dependencyType:"stateVariable",variableName:"matrixSizePre"}}),returnArraySize({dependencyValues:Me}){return Me.matrixSizePre},returnArrayDependenciesByKey:({arrayKeys:Me})=>{let Or={defaultEntry:{dependencyType:"stateVariable",variableName:"defaultEntry"},rowChildIdentities:{dependencyType:"child",childGroups:["rows"]},colChildIdentities:{dependencyType:"child",childGroups:["columns"]}},Hr={};for(let Li of Me){let[ts,rs]=Li.split(",");Hr[Li]={rowChild:{dependencyType:"child",childGroups:["rows"],childIndices:[ts],variableNames:["math"+(Number(rs)+1)]},colChild:{dependencyType:"child",childGroups:["columns"],childIndices:[rs],variableNames:["math"+(Number(ts)+1)]},mathChild:{dependencyType:"child",childGroups:["maths"],childIndices:[0],variableNames:["matrixEntry"+(Number(ts)+1)+"_"+(Number(rs)+1)]}}}return{globalDependencies:Or,dependenciesByKey:Hr}},arrayDefinitionByKey({globalDependencyValues:Me,dependencyValuesByKey:Or,arrayKeys:Hr,arraySize:Li}){let ts={},rs={},ns=Me.rowChildIdentities.length>0,is=Me.colChildIdentities.length>0;for(let as of Hr){let[os,ss]=as.split(","),ls;ns?ls=Or[as].rowChild[0]?.stateValues["math"+(Number(ss)+1)]:is?ls=Or[as].colChild[0]?.stateValues["math"+(Number(os)+1)]:ls=Or[as].mathChild[0]?.stateValues["matrixEntry"+(Number(os)+1)+"_"+(Number(ss)+1)],ls===void 0?rs[as]={defaultValue:Me.defaultEntry}:ts[as]=ls}return{setValue:{matrixPre:ts},useEssentialOrDefaultValue:{matrixPre:rs}}},async inverseArrayDefinitionByKey({desiredStateVariableValues:Me,globalDependencyValues:Or,dependencyValuesByKey:Hr,dependencyNamesByKey:Li}){let ts=[],rs={},ns=Or.rowChildIdentities.length>0,is=Or.colChildIdentities.length>0;for(let as in Me.matrixPre){let[os,ss]=as.split(",");ns?Hr[as].rowChild[0]?.stateValues["math"+(Number(ss)+1)]===void 0?rs[as]=Me.matrixPre[as]:ts.push({setDependency:Li[as].rowChild,desiredValue:Me.matrixPre[as],childIndex:0,variableIndex:0}):is?Hr[as].colChild[0]?.stateValues["math"+(Number(os)+1)]===void 0?rs[as]=Me.matrixPre[as]:ts.push({setDependency:Li[as].colChild,desiredValue:Me.matrixPre[as],childIndex:0,variableIndex:0}):Hr[as].mathChild[0]?.stateValues["matrixEntry"+(Number(os)+1)+"_"+(Number(ss)+1)]===void 0?rs[as]=Me.matrixPre[as]:ts.push({setDependency:Li[as].mathChild,desiredValue:Me.matrixPre[as],childIndex:0,variableIndex:0})}return Object.keys(rs).length>0&&ts.push({setEssentialValue:"matrixPre",value:rs}),{success:!0,instructions:ts}}},ae.unnormalizedValue={returnDependencies:()=>({matrixPre:{dependencyType:"stateVariable",variableName:"matrixPre"},matrixSizePre:{dependencyType:"stateVariable",variableName:"matrixSizePre"}}),hasEssential:!0,defaultValue:Context.fromAst(["matrix",["tuple",0,0],["tuple"]]),definition({dependencyValues:Me}){let Or=["tuple"];for(let Li=0;Li<Me.matrixSizePre[0];Li++)Or.push(["tuple",...Me.matrixPre[Li].map(ts=>ts.tree)]);return{setValue:{unnormalizedValue:Context.fromAst(["matrix",["tuple",...Me.matrixSizePre],Or])}}},inverseDefinition({dependencyValues:Me,desiredStateVariableValues:Or}){let Hr=Or.unnormalizedValue.tree;if(!(Array.isArray(Hr)&&Hr[0]==="matrix"&&Hr[1]?.[1]===Me.matrixSizePre[0]&&Hr[1]?.[2]===Me.matrixSizePre[1]))return{success:!1};let Li={};for(let ts=0;ts<Me.matrixSizePre[0];ts++)for(let rs=0;rs<Me.matrixSizePre[1];rs++)Li[`${ts},${rs}`]=Context.fromAst(Hr[2][ts+1][rs+1]);return{success:!0,instructions:[{setDependency:"matrixPre",desiredValue:Li}]}}},ae.canBeModified={returnDependencies:()=>({modifyIndirectly:{dependencyType:"stateVariable",variableName:"modifyIndirectly"},fixed:{dependencyType:"stateVariable",variableName:"fixed"}}),definition({dependencyValues:Me}){return{setValue:{canBeModified:Me.modifyIndirectly&&!Me.fixed}}}},ae}}const{eigs,square,abs,divide}=Context.math;class EigenDecomposition extends BaseComponent{static componentType="eigenDecomposition";static rendererType=void 0;static componentDocs={summary:"Computes the eigenvalues and eigenvectors of a square matrix"};static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnNumberDisplayAttributes()),ae}static returnChildGroups(){return[{group:"maths",componentTypes:["math"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.decomposition={description:"The eigendecomposition of the matrix as a list of eigenvalue/eigenvector pairs.",additionalStateVariablesDefined:[{variableName:"numEigenvectors",description:"The number of eigenvectors found in the decomposition.",public:!0,shadowingInstructions:{createComponentOfType:"integer"}}],returnDependencies:()=>({mathChild:{dependencyType:"child",childGroups:["maths"],variableNames:["value"]}}),definition({dependencyValues:Me}){if(Me.mathChild.length===0)return{setValue:{decomposition:null,numEigenvectors:0}};let Or=Me.mathChild[0].stateValues.value.tree;if(!Array.isArray(Or)||Or[0]!=="matrix")return{setValue:{decomposition:null,numEigenvectors:0}};let Hr=Or[1][1],Li=Or[1][2];if(!(Number.isInteger(Hr)&&Li===Hr))return{setValue:{decomposition:null,numEigenvectors:0}};let ts=[];for(let ns=0;ns<Hr;ns++){let is=[],as=Or[2][ns+1]||[];for(let os=0;os<Li;os++){let ss=as[os+1];if(ss==null)return{setValue:{decomposition:null,numEigenvectors:0}};if(typeof ss=="number"||typeof ss?.re=="number"&&typeof ss?.im=="number")is.push(ss);else try{ss=Context.fromAst(ss).evaluate_to_constant(),typeof ss=="number"||typeof ss?.re=="number"&&typeof ss?.im=="number"?is.push(ss):is.push(NaN)}catch{is.push(NaN)}}ts.push(is)}let rs;try{rs=eigs(ts)}catch(ns){console.error("Could nt calculate eigenvalues of matrix",ns);let is=codedDiagnostic({type:"warning",code:"doenet-w0059"});return{setValue:{decomposition:null,numEigenvectors:0},sendDiagnostics:[is]}}return{setValue:{decomposition:rs,numEigenvectors:rs.eigenvectors.length}}}},ae.eigenvalues={description:"The eigenvalues of the matrix.",isArray:!0,public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},entryPrefixes:["eigenvalue"],returnArraySizeDependencies:()=>({decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}),returnArraySize({dependencyValues:Me}){let Or;return Me.decomposition?Or=Me.decomposition.values.length:Or=0,[Or]},returnArrayDependenciesByKey(){return{globalDependencies:{decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arraySize:Or}){let Hr=[];for(let Li=0;Li<Or[0];Li++)Hr.push(Me.decomposition.values[Li]);return{setValue:{eigenvalues:Hr}}}},ae.eigenvectors={description:"The eigenvectors of the matrix, as a 2D array (one column per eigenvalue).",isArray:!0,public:!0,numDimensions:2,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing(),returnWrappingComponents(Me){return Me==="eigenvectorX"?[]:[["vector",{componentType:"mathList",isAttributeNamed:"xs"}]]}},getArrayKeysFromVarName({arrayEntryPrefix:Me,varEnding:Or,arraySize:Hr}){if(Me==="eigenvectorX"){let Li=Or.split("_").map(ts=>Number(ts)-1);return Li.length===2&&Li.every((ts,rs)=>Number.isInteger(ts)&&ts>=0)?Hr?Li.every((ts,rs)=>ts<Hr[rs])?[String(Li)]:[]:[String(Li)]:[]}else{let Li=Number(Or)-1;return Number.isInteger(Li)&&Li>=0?Hr?Li<Hr[0]?Array.from(Array(Hr[1]),(ts,rs)=>Li+","+rs):[]:[Li+",0"]:[]}},arrayVarNameFromPropIndex(Me,Or){if(Or==="eigenvectors")return Me.length===1?"eigenvector"+Me[0]:`eigenvectorX${Me[0]}_${Me[1]}`;if(Or.slice(0,11)==="eigenvector"){let Hr=Number(Or.slice(11));if(Number.isInteger(Hr)&&Hr>0)return`eigenvectorX${Hr}_${Me[0]}`}return null},indexAliases:[[],["x","y","z"]],entryPrefixes:["eigenvectorX","eigenvector"],returnEntryDimensions:Me=>Me==="eigenvector"?1:0,returnArraySizeDependencies:()=>({decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}),returnArraySize({dependencyValues:Me}){let Or,Hr;return Me.decomposition?(Or=Me.decomposition.eigenvectors.length,Hr=Me.decomposition.eigenvectors[0].vector.length):(Or=0,Hr=0),[Or,Hr]},returnArrayDependenciesByKey(){return{globalDependencies:{decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arraySize:Or}){let Hr={};for(let Li=0;Li<Or[0];Li++){let ts=[],rs=0;for(let ns=0;ns<Or[1];ns++){let is=Me.decomposition.eigenvectors[Li].vector[ns];ts.push(is),rs+=square(abs(is))}rs=Math.sqrt(rs),ts=ts.map(ns=>divide(ns,rs));for(let ns=0;ns<Or[1];ns++)Hr[`${Li},${ns}`]=ts[ns]}return{setValue:{eigenvectors:Hr}}}},ae}}class Latex extends Text{static componentType="latex";static componentDocs={summary:"A snippet of LaTeX that can be rendered as math"};static rendererType="text";static createAttributesObject(){let ae=super.createAttributesObject();return ae.isLatex.defaultValue=!0,ae}static returnChildGroups(){let ae=super.returnChildGroups();return ae[0].componentTypes.push("math","m","md"),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.value.returnDependencies=()=>({mathTextLikeChildren:{dependencyType:"child",childGroups:["textLike"],variableNames:["text","latex"],variablesOptional:!0}}),ae.value.definition=function({dependencyValues:Me}){if(Me.mathTextLikeChildren.length===0)return{useEssentialOrDefaultValue:{value:!0}};let Or=[];for(let Li of Me.mathTextLikeChildren)if(typeof Li=="string"){let ts=Li.trim();ts&&Or.push(ts)}else if(Li.stateValues.latex!==void 0){let ts=Li.stateValues.latex.trim();ts&&Or.push(ts)}else{let ts=Li.stateValues.text.trim();ts&&Or.push(ts)}return{setValue:{value:Or.join(" ")}}},ae.value.inverseDefinition=function({desiredStateVariableValues:Me,dependencyValues:Or}){let Hr=Or.mathTextLikeChildren.length;return Hr>1?{success:!1}:Hr===1?{success:!0,instructions:[{setDependency:"textLikeChildren",desiredValue:Me.value,childIndex:0,variableIndex:Or.textLikeChildren[0].stateValues?.latex===void 0?0:1}]}:{success:!0,instructions:[{setEssentialValue:"value",value:Me.value===null?"":String(Me.value)}]}},ae.latex={isAlias:!0,targetVariableName:"value",description:"The LaTeX content as a string."},ae}}class BlockQuote extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="blockQuote";static rendererType="blockQuote";static renderChildren=!0;static canDisplayChildErrors=!0;static includeBlankStringChildren=!0;static componentDocs={summary:"A block-level quotation"};static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnPassThroughListItemChildStateVariableDefinitions()),ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}class Description extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="description";static componentDocs={summary:"Extra information about an enclosing component, shown to all users in a popup or disclosure"};static rendererType="containerBlock";static renderChildren=!0;static canDisplayChildErrors=!0;static includeBlankStringChildren=!0;static inSchemaOnlyInheritAs=[];static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnPassThroughListItemChildStateVariableDefinitions()),ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}const{mod:mod$1}=Context.math;function findAttractedSegmentPointsSub({point1:Br,point2:ae,scales:Me,threshold2:Or,numericalNearestPointFunction:Hr,numericalNearestPointAsLineFunction:Li,verifyNotOneSided:ts=!0}){let rs=1e-6,ns=rs**2,is=Li(Br,Me);if(!is)return{success:!1};let as=is.reduce((ss,ls,us)=>ss+Math.pow(ls-Br[us],2),0);if(as>=Or)return{success:!1};let os=Li(ae,Me);if(!os)return{success:!1};if(as=os.reduce((ss,ls,us)=>ss+Math.pow(ls-ae[us],2),0),as>=Or)return{success:!1};if(ts){let ss=Hr(Br,Me),ls=ss&&ss.every((ds,ps)=>Math.abs(ds-is[ps])<rs),us=Hr(ae,Me),cs=us&&us.every((ds,ps)=>Math.abs(ds-os[ps])<rs);if(!(ls||cs)&&(as=ss.reduce((ds,ps,ms)=>ds+Math.pow(ps-us[ms],2),0),as<ns))return{success:!1}}return{success:!0,nearestPoint1:is,nearestPoint2:os}}function findAttractedSegmentPoints({point1:Br,point2:ae,allowRotation:Me,scales:Or,threshold2:Hr,numericalNearestPointFunction:Li,numericalNearestPointAsLineFunction:ts}){let rs=findAttractedSegmentPointsSub({point1:Br,point2:ae,scales:Or,threshold2:Hr,numericalNearestPointFunction:Li,numericalNearestPointAsLineFunction:ts,verifyNotOneSided:!0});if(!rs.success)return{success:!1};let ns=1e-6,is=ns**2,{nearestPoint1:as,nearestPoint2:os}=rs;if(!Me){let bs=[ae[0]-Br[0],ae[1]-Br[1]],vs=[os[0]-as[0],os[1]-as[1]],Cs=Math.atan2(vs[1],vs[0])-Math.atan2(bs[1],bs[0]);if(Cs=mod$1(Cs+Math.PI,2*Math.PI)-Math.PI,Math.abs(Cs)>ns)return{success:!1}}let ss=Br.reduce((bs,vs,Cs)=>bs+Math.pow(vs-ae[Cs],2),0),ls=as.reduce((bs,vs,Cs)=>bs+Math.pow(vs-os[Cs],2),0);if(Math.abs(ss-ls)<is){let bs=as.reduce((vs,Cs,Ts)=>vs+Math.pow(Cs-Br[Ts],2),0)+os.reduce((vs,Cs,Ts)=>vs+Math.pow(Cs-ae[Ts],2),0);return bs<Hr?{success:!0,distance2:bs,segment:[as,os]}:{success:!1}}if(ls>ss)return{success:!1};let us=Math.sqrt(ss/ls),cs=Math.sqrt(Br.reduce((bs,vs,Cs)=>bs+Math.pow(vs-as[Cs],2),0)),ds=Math.sqrt(ae.reduce((bs,vs,Cs)=>bs+Math.pow(vs-os[Cs],2),0)),ps=cs/(cs+ds),ms=1-ps,fs=(us-1)*ps+1,hs=(us-1)*ms+1,ys=os.map((bs,vs)=>bs+(as[vs]-bs)*fs),gs=as.map((bs,vs)=>bs+(os[vs]-bs)*hs);if(rs=findAttractedSegmentPointsSub({point1:ys,point2:gs,scales:Or,threshold2:is,numericalNearestPointFunction:Li,numericalNearestPointAsLineFunction:ts,verifyNotOneSided:!1}),!rs.success)return{success:!1};let xs=ys.reduce((bs,vs,Cs)=>bs+Math.pow(vs-Br[Cs],2),0)+gs.reduce((bs,vs,Cs)=>bs+Math.pow(vs-ae[Cs],2),0);return xs<Hr?{success:!0,distance2:xs,segment:[ys,gs]}:{success:!1}}function attractSegment({segment:Br,allowRotation:ae,scales:Me,threshold2:Or,numericalNearestPointFunctions:Hr,numericalNearestPointAsLineFunctions:Li}){let ts=Br[0],rs=Br[1];if(ts.length!=rs.length)return{};let ns,is=1/0,as=ae?Or*1e3:Or;for(let[os,ss]of Hr.entries()){let ls=Li[os],us=findAttractedSegmentPoints({point1:ts,point2:rs,allowRotation:ae,scales:Me,threshold2:as,numericalNearestPointFunction:ss,numericalNearestPointAsLineFunction:ls});us.success&&us.distance2<is&&(is=us.distance2,ns=us.segment)}return is<Or?{constrained:!0,segment:ns}:is<as?{constrained:!1,distance2:is,segment:ns}:{}}function nearestPointForSegment({point:Br,segment:ae,scales:Me}){let Or=ae[0][0],Hr=ae[0][1],Li=ae[1][0],ts=ae[1][1],rs=Number.isFinite(Or)&&Number.isFinite(Hr)&&Number.isFinite(Li)&&Number.isFinite(ts);if(ae[0].length!==2||!rs||Li===Or&&ts===Hr)return null;let ns=Me[0],is=Me[1],as=(Li-Or)/ns,os=(ts-Hr)/is,ss=as*as+os*os,ls=((Br[0]-Or)/ns*as+(Br[1]-Hr)/is*os)/ss;return ls<=0?[Or,Hr]:ls>=1?[Li,ts]:[Or+ls*as*ns,Hr+ls*os*is]}function nearestPointForSegmentAsLine({point:Br,segment:ae,scales:Me}){let Or=ae[0][0],Hr=ae[0][1],Li=ae[1][0],ts=ae[1][1],rs=Number.isFinite(Or)&&Number.isFinite(Hr)&&Number.isFinite(Li)&&Number.isFinite(ts);if(ae[0].length!==2||!rs||Li===Or&&ts===Hr)return null;let ns=Me[0],is=Me[1],as=(Li-Or)/ns,os=(ts-Hr)/is,ss=as*as+os*os,ls=((Br[0]-Or)/ns*as+(Br[1]-Hr)/is*os)/ss;return[Or+ls*as*ns,Hr+ls*os*is]}const{mod}=Context.math;class StickyGroup extends GraphicalComponent{static componentType="stickyGroup";constructor(ae){super(ae),Object.assign(this.actions,{addChildren:this.addChildren.bind(this),deleteChildren:this.deleteChildren.bind(this)})}static componentDocs={summary:"Constrains group members to attract to each other when nearby"};static rendererType="containerInline";static renderChildren=!0;static createAttributesObject(){let ae=super.createAttributesObject();return ae.relativeToGraphScales={description:"Whether the snapping threshold is interpreted relative to graph scales.",createComponentOfType:"boolean",createStateVariable:"relativeToGraphScales",defaultValue:!1,public:!0},ae.threshold={createComponentOfType:"number",description:"Distance threshold within which group members snap together."},ae.angleThreshold={description:"Angular distance within which group members snap together.",createComponentOfType:"number",createStateVariable:"angleThreshold",defaultValue:Math.PI*.03,public:!0},ae}static returnChildGroups(){let ae=super.returnChildGroups();return ae.push({group:"graphical",componentTypes:["_graphical"]}),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions(),Me=returnConstraintGraphInfoDefinitions();return Object.assign(ae,Me),ae.numObjects={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"]}}),definition({dependencyValues:Or}){return{setValue:{numObjects:Or.graphicalChildren.length}}}},ae.numObjects={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"]}}),definition({dependencyValues:Or}){return{setValue:{numObjects:Or.graphicalChildren.length}}}},ae.pointsByObject={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"],variableNames:["numericalVertices","numericalXs","numericalEndpoints"],variablesOptional:!0}}),definition({dependencyValues:Or}){let Hr=[];for(let Li of Or.graphicalChildren)Li.stateValues.numericalVertices?Hr.push(Li.stateValues.numericalVertices):Li.stateValues.numericalXs?Hr.push([Li.stateValues.numericalXs]):Li.stateValues.numericalEndpoints?Hr.push(Li.stateValues.numericalEndpoints):Hr.push([]);return{setValue:{pointsByObject:Hr}}}},ae.getPointsForObject={returnDependencies:()=>({pointsByObject:{dependencyType:"stateVariable",variableName:"pointsByObject"}}),definition({dependencyValues:Or}){return{setValue:{getPointsForObject:function(Li){return Or.pointsByObject.filter((ts,rs)=>rs!==Li).reduce((ts,rs)=>(ts.push(...rs),ts),[])}}}}},ae.segmentsByObject={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"],variableNames:["numericalVertices","closed","numericalEndpoints"],variablesOptional:!0}}),definition({dependencyValues:Or}){let Hr=[];for(let Li of Or.graphicalChildren)if(Li.stateValues.numericalVertices){let ts=Li.stateValues.numericalVertices,rs=ts.length,ns=[];for(let is=1;is<rs;is++)ns.push([ts[is-1],ts[is]]);Li.stateValues.closed&&ns.push([ts[rs-1],ts[0]]),Hr.push(ns)}else if(Li.stateValues.numericalEndpoints){let ts=Li.stateValues.numericalEndpoints,rs=ts.length,ns=[];for(let is=1;is<rs;is++)ns.push([ts[is-1],ts[is]]);Hr.push(ns)}else Hr.push([]);return{setValue:{segmentsByObject:Hr}}}},ae.getSegmentsForObject={returnDependencies:()=>({segmentsByObject:{dependencyType:"stateVariable",variableName:"segmentsByObject"}}),definition({dependencyValues:Or}){return{setValue:{getSegmentsForObject:function(Li){return Or.segmentsByObject.filter((ts,rs)=>rs!==Li).reduce((ts,rs)=>(ts.push(...rs),ts),[])}}}}},ae.threshold={description:"Distance within which group members attract each other.",public:!0,shadowingInstructions:{createComponentOfType:"number"},hasEssential:!0,returnDependencies:()=>({thresholdAttr:{dependencyType:"attributeComponent",attributeName:"threshold",variableNames:["value"]},graphXmin:{dependencyType:"stateVariable",variableName:"graphXmin"},relativeToGraphScales:{dependencyType:"stateVariable",variableName:"relativeToGraphScales"}}),definition({dependencyValues:Or}){return Or.thresholdAttr?{setValue:{threshold:Or.thresholdAttr.stateValues.value}}:{useEssentialOrDefaultValue:{threshold:{get defaultValue(){return Or.relativeToGraphScales&&Or.graphXmin!==null?.02:.5}}}}},inverseDefinition({desiredStateVariableValues:Or,dependencyValues:Hr}){return Hr.thresholdAttr?{success:!0,instructions:[{setDependency:"thresholdAttr",desiredValue:Or.threshold}]}:{success:!0,instructions:[{setEssentialValue:"threshold",value:Or.threshold}]}}},ae.verticesConstraintFunction={returnDependencies:()=>({getPointsForObject:{dependencyType:"stateVariable",variableName:"getPointsForObject"},getSegmentsForObject:{dependencyType:"stateVariable",variableName:"getSegmentsForObject"},threshold:{dependencyType:"stateVariable",variableName:"threshold"},angleThreshold:{dependencyType:"stateVariable",variableName:"angleThreshold"},relativeToGraphScales:{dependencyType:"stateVariable",variableName:"relativeToGraphScales"},scales:{dependencyType:"stateVariable",variableName:"scales"}}),definition({dependencyValues:Or}){let Hr;Or.relativeToGraphScales?Hr=Or.scales||[1,1,1]:Hr=[1,1,1];let Li=Or.angleThreshold,ts=function({numericalUnconstrainedEdges:os,allowRotation:ss,enforceRigid:ls,shrinkThreshold:us,rotationPoint:cs},{objectInd:ds}){let ps=Or.getSegmentsForObject(ds),ms=[],fs=[],hs=!1,ys={distance2:1/0},gs=Or.threshold;us&&(gs*=.2);let xs=gs*gs;for(let[bs,vs]of os.entries()){let Cs=[],Ts=[];for(let Ns of ps)Cs.push((ws,Es)=>nearestPointForSegment({point:ws,segment:Ns,scales:Es})),Ts.push((ws,Es)=>nearestPointForSegmentAsLine({point:ws,segment:Ns,scales:Es}));let As=attractSegment({segment:vs,allowRotation:ss,scales:Hr,threshold2:xs,numericalNearestPointFunctions:Cs,numericalNearestPointAsLineFunctions:Ts});As.constrained?(ms.push(As.segment),fs.push(!0),hs=!0):(ms.push(vs),fs.push(!1),!hs&&As.distance2<ys.distance2&&(ys=As,ys.edgeInd=bs))}if(ss&&ls&&!hs&&ys.distance2<1/0){let bs=ys.edgeInd,vs=rotateIfClose({attractedEdgeInd:bs,attractingSegment:ys.segment,angleThreshold:Li,rotationPoint:cs,numericalUnconstrainedEdges:os});vs&&(ms[bs]=vs,fs[bs]=!0,hs=!0)}if(ss&&ls&&!hs){let bs=[0,Math.PI/2],vs=rotateToAttractAngles({numericalUnconstrainedEdges:os,anglesToAttract:bs,angleThreshold:Li,rotationPoint:cs});if(vs){let Cs=vs.rotatedEdgeInd;ms[Cs]=vs.rotatedEdge,fs[Cs]=!0,hs=!0}}return{numericalConstrainedEdges:ms,constraintUsedForEdge:fs}},rs=function({numericalUnconstrainedVertices:os,closed:ss,shrinkThreshold:ls,onlyMoveVertexInd:us=null},{objectInd:cs}){let ds=Or.getPointsForObject(cs),ps=Or.getSegmentsForObject(cs),ms=[],fs=[],hs=Or.threshold;ls&&(hs*=.2);let ys=hs*hs;for(let[vs,Cs]of os.entries()){if(us!==null&&vs!==us){ms.push(Cs),fs.push(!1);continue}let Ts=1/0,As={};for(let Es of ds){if(Cs.length!==Es.length)continue;let Ss=Cs.reduce((Ds,Is,Vs)=>Ds+Math.pow((Is-Es[Vs])/Hr[Vs],2),0);Ss<Ts&&(As=Es,Ts=Ss)}let Ns=!1,ws;if(Ts<ys)Ns=!0,ws=As;else{Ts=1/0,As={};for(let Es of ps){let Ss=nearestPointForSegment({point:Cs,segment:Es,scales:Hr});if(Ss){let Ds=Cs.reduce((Is,Vs,ks)=>Is+Math.pow((Vs-Ss[ks])/Hr[ks],2),0);Ds<Ts&&(As=Ss,Ts=Ds)}}Ts<ys?(Ns=!0,ws=As):ws=Cs}ms.push(ws),fs.push(Ns)}let gs=os.length,xs=ss?gs:gs-1,bs=[];for(let vs=0;vs<xs;vs++){let Cs=(vs+1)%gs;if(!(us!==null&&!(us===vs||us===Cs))&&!(fs[vs]||fs[Cs])){let Ts=os[vs],As=os[Cs],Ns,ws=1/0;for(let Es of ds){let Ss=nearestPointForSegment({point:Es,segment:[Ts,As],scales:Hr});if(Ss){let Ds=Ss.reduce((Is,Vs,ks)=>Is+Math.pow(Vs-Es[ks],2),0);if(Ds<ws)if(us===null){let Is=Ts.map((ks,Gs)=>ks+Es[Gs]-Ss[Gs]),Vs=As.map((ks,Gs)=>ks+Es[Gs]-Ss[Gs]);Ns=[Is,Vs],ws=Ds}else{let Is;us===vs?Is=As:Is=Ts;let Vs=[Es[0]-Is[0],Es[1]-Is[1]],ks=Math.sqrt(Math.pow(Vs[0],2)+Math.pow(Vs[1],2)),Os=Math.sqrt(Math.pow(Ts[0]-As[0],2)+Math.pow(Ts[1]-As[1],2))/ks;if(Os<1)continue;let $s=Is.map((Rs,zs)=>Rs+Vs[zs]*Os),qs;us===vs?(qs=[$s,As],Ds=Math.pow(Ts[0]-$s[0],2)+Math.pow(Ts[1]-$s[1],2)):(qs=[Ts,$s],Ds=Math.pow(As[0]-$s[0],2)+Math.pow(As[1]-$s[1],2)),Ds<ws&&(ws=Ds,Ns=qs)}}}ws<ys&&bs.push({vertexInd1:vs,vertexInd2:Cs,distance2:ws,movedSegment:Ns})}}bs.sort((vs,Cs)=>vs.distance2-Cs.distance2);for(let{vertexInd1:vs,vertexInd2:Cs,movedSegment:Ts}of bs)fs[vs]||fs[Cs]||(fs[vs]=!0,fs[Cs]=!0,ms[vs]=Ts[0],ms[Cs]=Ts[1]);return{numericalConstrainedVertices:ms,constraintUsedForVertex:fs}},ns=returnVertexConstraintFunctionFromEdges(ts),is=returnVertexConstraintFunction(rs);return{setValue:{verticesConstraintFunction:function({unconstrainedVertices:os,closed:ss,enforceRigid:ls,allowRotation:us,rotationPoint:cs,shrinkThreshold:ds,vertexIndMoved:ps},{objectInd:ms}){let fs=ns({unconstrainedVertices:os,closed:ss,enforceRigid:ls,allowRotation:us,rotationPoint:cs,shrinkThreshold:ds,vertexIndMoved:ps},{objectInd:ms});return fs=is({unconstrainedVertices:fs,closed:ss,enforceRigid:ls,shrinkThreshold:ds,vertexIndMoved:ps},{objectInd:ms}),fs}}}}},ae.pointConstraintFunction={returnDependencies:()=>({getPointsForObject:{dependencyType:"stateVariable",variableName:"getPointsForObject"},getSegmentsForObject:{dependencyType:"stateVariable",variableName:"getSegmentsForObject"},threshold:{dependencyType:"stateVariable",variableName:"threshold"},relativeToGraphScales:{dependencyType:"stateVariable",variableName:"relativeToGraphScales"},scales:{dependencyType:"stateVariable",variableName:"scales"}}),definition({dependencyValues:Or}){let Hr;return Or.relativeToGraphScales?Hr=Or.scales||[1,1,1]:Hr=[1,1,1],{setValue:{pointConstraintFunction:function(ts,rs){let ns=ts.map(ls=>findFiniteNumericalValue(ls)),is=Or.getPointsForObject(rs),as=Or.getSegmentsForObject(rs),os=1/0,ss={};for(let ls of is){if(ns.length!==ls.length)continue;let us=ns.reduce((cs,ds,ps)=>cs+Math.pow((ds-ls[ps])/Hr[ps],2),0);us<os&&(ss=ls,os=us)}if(os<Or.threshold*Or.threshold)return ss.map(ls=>Context.fromAst(ls));os=1/0,ss={};for(let ls of as){let us=nearestPointForSegment({point:ns,segment:ls,scales:Hr});if(us){let cs=ns.reduce((ds,ps,ms)=>ds+Math.pow((ps-us[ms])/Hr[ms],2),0);cs<os&&(ss=us,os=cs)}}return os<Or.threshold*Or.threshold?ss.map(ls=>Context.fromAst(ls)):ts}}}}},ae}async addChildren(ae){return await addChildrenToDynamicChild(this,ae)}async deleteChildren(ae){return await deleteChildrenFromDynamicChild(this,ae)}}function rotateToAttractAngles({numericalUnconstrainedEdges:Br,anglesToAttract:ae,angleThreshold:Me,rotationPoint:Or}){let Hr=1/0,Li;for(let[os,ss]of Br.entries()){let ls=Math.atan((ss[1][1]-ss[0][1])/(ss[1][0]-ss[0][0]));for(let us of ae){let cs=mod(us-ls+Math.PI/2,Math.PI)-Math.PI/2;Math.abs(cs)<Math.abs(Hr)&&(Hr=cs,Li=os)}}if(!(Math.abs(Hr)<Me))return null;let[ts,rs]=Or,ns=Math.cos(Hr),is=Math.sin(Hr),as=Br[Li].map(os=>{let ss=os[0]-ts,ls=os[1]-rs;return[ss*ns-ls*is+ts,ss*is+ls*ns+rs]});return{rotatedEdgeInd:Li,rotatedEdge:as}}function rotateIfClose({attractedEdgeInd:Br,attractingSegment:ae,angleThreshold:Me,rotationPoint:Or,numericalUnconstrainedEdges:Hr}){let Li=Math.atan((ae[1][1]-ae[0][1])/(ae[1][0]-ae[0][0])),ts=Hr[Br],rs=Math.atan((ts[1][1]-ts[0][1])/(ts[1][0]-ts[0][0])),ns=mod(Li-rs+Math.PI/2,Math.PI)-Math.PI/2;if(!(Math.abs(ns)<Me))return null;let[is,as]=Or,os=Math.cos(ns),ss=Math.sin(ns);return Hr[Br].map(us=>{let cs=us[0]-is,ds=us[1]-as;return[cs*os-ds*ss+is,cs*ss+ds*os+as]})}class BlockScoredComponent extends BlockComponent{static componentType="_blockScoredComponent";static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnStandardAnswerAttributes()),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return renameStateVariable({stateVariableDefinitions:ae,oldName:"disabled",newName:"disabledOriginal"}),Object.assign(ae,returnStandardAnswerStateVariableDefinition()),ae}}function parseIntegerResponse(Br){const ae=Br.trim();if(ae==="")return null;const Me=Number(ae);return Number.isInteger(Me)?Me:null}function isDistractorResponse(Br){return Br.trim().toLowerCase()==="x"}function calculateResponseOffset({numericResponse:Br,effectiveProblemNum:ae,numEffectiveProblems:Me}){return(Br-ae+Me)%Me}function calculatePretzelCredit({problemOrder:Br,currentResponses:ae,distractors:Me,mode:Or}){const Hr=new Set(Me),Li=Br.length,ts=Li-Hr.size;if(ts===0)return ae.every(isDistractorResponse)?1:0;const rs=Array(Li).fill(null);let ns=0;for(let ls=0;ls<Li;ls++)Hr.has(ls)||(rs[ls]=ns,ns++);const is=[],as=Or==="circuit"?ts===1?0:1:null;for(let ls=0;ls<Li;ls++){const us=Br[ls],cs=ae[ls]??"";if(Hr.has(us)){if(!isDistractorResponse(cs))return 0;continue}const ds=parseIntegerResponse(cs);if(ds===null)return 0;const ps=rs[us],ms=calculateResponseOffset({numericResponse:ds,effectiveProblemNum:ps,numEffectiveProblems:ts});if(Or==="circuit"){if(ms!==as)return 0;continue}is.push(ms)}if(Or==="circuit")return 1;const os=is[0];return is.every(ls=>ls===os)?1:0}class Pretzel extends BlockScoredComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this),submitAnswer:this.submitAnswer.bind(this)})}static componentType="pretzel";static componentDocs={summary:"A response-matching component where students enter a sequence to match statements and answers"};static renderChildren=!0;static additionalSchemaChildren=["problem"];static additionalSchemaChildrenDoNotInherit=!0;static createAttributesObject(){const ae=super.createAttributesObject();return ae.maxNumColumns={description:"Maximum number of columns when arranging child problems.",createComponentOfType:"integer",createStateVariable:"maxNumColumns",defaultValue:2,public:!0,forRenderer:!0,clamp:[1,4]},ae.mode={description:"Arrangement mode for the child problems.",createPrimitiveOfType:"string",createStateVariable:"mode",defaultValue:"pretzel",public:!0,forRenderer:!0,toLowerCase:!0,validValues:[{value:"pretzel",description:"Interleaved arrangement where each problem's answer feeds the next and one can start with any problem."},{value:"circuit",description:"A variant of the pretzel where one must start with the first problem."}]},ae}static returnChildGroups(){return[{group:"problems",componentTypes:["statement"],excludeFromSchema:!0},{group:"textInputs",componentTypes:["textInput"],excludeFromSchema:!0},{group:"givenAnswers",componentTypes:["span"],excludeFromSchema:!0}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.textInputs={returnDependencies:()=>({textInputs:{dependencyType:"child",childGroups:["textInputs"]}}),definition:function({dependencyValues:Me}){return{setValue:{textInputs:Me.textInputs}}}},ae.problemOrder={stateVariablesDeterminingDependencies:["textInputs"],additionalStateVariablesDefined:["distractors"],returnDependencies({stateValues:Me}){return Me.textInputs.length>0?{problemOrder:{dependencyType:"sourceCompositeStateVariable",replacementIdx:Me.textInputs[0].componentIdx,variableName:"problemOrder"},distractors:{dependencyType:"sourceCompositeStateVariable",replacementIdx:Me.textInputs[0].componentIdx,variableName:"distractors"}}:{}},definition:function({dependencyValues:Me}){return{setValue:{problemOrder:Me.problemOrder??[],distractors:Me.distractors??[]}}}},ae.numProblems={description:"The number of child problems.",public:!0,forRenderer:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({problemChildren:{dependencyType:"child",childGroups:["problems"]}}),definition({dependencyValues:Me}){return{setValue:{numProblems:Me.problemChildren.length}}}},ae.currentResponses={description:"The current responses across all child problems.",public:!0,shadowingInstructions:{createComponentOfType:"text"},isArray:!0,entryPrefixes:["currentResponse"],returnArraySizeDependencies:()=>({numProblems:{dependencyType:"stateVariable",variableName:"numProblems"}}),returnArraySize({dependencyValues:Me}){return[Me.numProblems]},returnArrayDependenciesByKey({arrayKeys:Me}){const Or={};for(const Hr of Me)Or[Hr]={textInput:{dependencyType:"child",childGroups:["textInputs"],childIndices:[Hr],variableNames:["value"]}};return{dependenciesByKey:Or}},arrayDefinitionByKey({dependencyValuesByKey:Me}){const Or={};for(const Hr in Me)Or[Hr]=Me[Hr].textInput[0].stateValues.value;return{setValue:{currentResponses:Or}}}},ae.creditAchievedIfSubmit={returnDependencies:()=>({problemOrder:{dependencyType:"stateVariable",variableName:"problemOrder"},currentResponses:{dependencyType:"stateVariable",variableName:"currentResponses"},distractors:{dependencyType:"stateVariable",variableName:"distractors"},mode:{dependencyType:"stateVariable",variableName:"mode"}}),definition({dependencyValues:Me}){const Or=Me.problemOrder.map(Hr=>Hr-1);return{setValue:{creditAchievedIfSubmit:calculatePretzelCredit({problemOrder:Or,currentResponses:Me.currentResponses,distractors:Me.distractors,mode:Me.mode})}}}},ae.numSubmittedResponses={description:"The number of responses submitted.",public:!0,shadowingInstructions:{createComponentOfType:"number"},hasEssential:!0,defaultValue:0,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{numSubmittedResponses:!0}}),inverseDefinition({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setEssentialValue:"numSubmittedResponses",value:Me.numSubmittedResponses}]}}},ae.submittedResponses={description:"The most recently submitted responses.",public:!0,shadowingInstructions:{createComponentOfType:"text"},isArray:!0,allowExtraArrayKeysInInverse:!0,entryPrefixes:["submittedResponse"],defaultValueByArrayKey:()=>"_",hasEssential:!0,inverseShadowToSetEntireArray:!0,doNotCombineInverseArrayInstructions:!0,returnArraySizeDependencies:()=>({numSubmittedResponses:{dependencyType:"stateVariable",variableName:"numSubmittedResponses"}}),returnArraySize({dependencyValues:Me}){return[Me.numSubmittedResponses]},returnArrayDependenciesByKey(){return{globalDependencies:{numSubmittedResponses:{dependencyType:"stateVariable",variableName:"numSubmittedResponses"}}}},arrayDefinitionByKey({globalDependencyValues:Me}){let Or=[];Me.submittedResponsesComponentType&&Or.push(...Me.submittedResponsesComponentType.slice(0,Me.numSubmittedResponses));let Hr={};for(let Li=0;Li<Me.numSubmittedResponses;Li++)Hr[Li]=!0;return{useEssentialOrDefaultValue:{submittedResponses:Hr}}},inverseArrayDefinitionByKey:function({desiredStateVariableValues:Me,initialChange:Or}){return Or?{success:!0,instructions:[{setDependency:"numSubmittedResponses",desiredValue:Me.submittedResponses.length},{setEssentialValue:"submittedResponses",value:[...Me.submittedResponses]}]}:{success:!1}}},ae.showCheckWork={forRenderer:!0,returnDependencies:()=>({suppressCheckWork:{dependencyType:"stateVariable",variableName:"suppressCheckWork"}}),definition({dependencyValues:Me}){return{setValue:{showCheckWork:!Me.suppressCheckWork}}}},ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}async submitAnswer({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){if(await this.stateValues.numAttemptsLeft<1||await this.stateValues.disabled)return;const ts=await this.stateValues.handGraded?0:await this.stateValues.creditAchievedIfSubmit;let rs=[{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"creditAchieved",value:ts},{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"responseHasBeenSubmitted",value:!0}],ns=await this.stateValues.currentResponses;rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"submittedResponses",value:ns}),rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"justSubmitted",value:!0}),rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"creditAchievedDependenciesAtSubmit",value:await this.stateValues.creditAchievedDependencies}),rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"numSubmissions",value:await this.stateValues.numSubmissions+1}),ts<1&&rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"numIncorrectSubmissions",value:await this.stateValues.numIncorrectSubmissions+1});const is=[];for(const as of ns)if(as.toString)try{is.push(as.toString())}catch{is.push("_")}else is.push(as);return rs.push({updateType:"recordItemSubmission",componentNumber:await this.stateValues.inComponentNumber,submittedComponent:this.componentIdx,response:ns,responseText:is,creditAchieved:ts}),await this.coreFunctions.performUpdate({updateInstructions:rs,actionId:ae,sourceInformation:Me,skipRendererUpdate:!0,event:{verb:"submitted",object:{componentIdx:this.componentIdx,componentType:this.componentType,answerNumber:this.answerNumber,rootName:this.rootName},result:{response:ns,responseText:is,componentTypes:Array(ns.length).fill("text"),creditAchieved:ts}}}),await this.coreFunctions.triggerChainedActions({componentIdx:this.componentIdx,actionId:ae,sourceInformation:Me,skipRendererUpdate:Or})}}function getCorrespondingAnswerIdx({problemIdx:Br,numProblems:ae,distractorSet:Me}){if(Me.has(Br))return Br;let Or=(Br-1+ae)%ae,Hr=0;for(;Me.has(Or)&&Hr<ae;)Or=(Or-1+ae)%ae,Hr++;return Or}function normalizePretzelMode(Br){return Br?.toLowerCase()==="circuit"?"circuit":"pretzel"}function getProblemIndicesToPermute({numProblems:Br,mode:ae}){const Me=ae==="circuit"?2:1;return[...Array(Math.max(Br-Me+1,0)).keys()].map(Or=>Or+Me)}function buildProblemOrderFromPermutedIndices({permutedIndices:Br,numProblems:ae,mode:Me}){return Me==="circuit"?ae===0?[]:[1,...Br]:Br}function determineNumberOfPermutations({numProblems:Br,mode:ae}){const Me=getProblemIndicesToPermute({numProblems:Br,mode:ae}).length;let Or=1;for(let Hr=2;Hr<=Me;Hr++)Or*=Hr;return Or}function shuffleProblemOrder({numProblems:Br,variantRng:ae,mode:Me}){const Or=getProblemIndicesToPermute({numProblems:Br,mode:Me});for(let Hr=Or.length-1;Hr>0;Hr--){const Li=ae(),ts=Math.floor(Li*(Hr+1));[Or[Hr],Or[ts]]=[Or[ts],Or[Hr]]}return buildProblemOrderFromPermutedIndices({permutedIndices:Or,numProblems:Br,mode:Me})}class PretzelArranger extends CompositeComponent{static componentType="_pretzelArranger";static componentDocs={summary:"Internal arranger that lays out subset visualizations within <pretzel>."};static createsVariants=!0;static serializeReplacementsForChildren=!0;static replacementsAlreadyInResolver=!0;static useSerializedChildrenComponentIndices=!0;static createAttributesObject(){const ae=super.createAttributesObject();return ae.mode={createPrimitiveOfType:"string",createStateVariable:"mode",defaultValue:"pretzel",toLowerCase:!0,validValues:[{value:"pretzel",description:"Interleaved arrangement where each problem's answer feeds the next and one can start with any problem."},{value:"circuit",description:"A variant of the pretzel where one must start with the first problem."}]},ae}static keepChildrenSerialized({serializedComponent:ae}){return ae.children===void 0?[]:Object.keys(ae.children)}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.serializedProblemChildren={returnDependencies:()=>({serializedChildren:{dependencyType:"serializedChildren",doNotProxy:!0}}),definition:function({dependencyValues:Me}){return{setValue:{serializedProblemChildren:Me.serializedChildren.filter(Or=>Or.componentType==="problem")}}}},ae.numProblems={description:"The number of problems arranged.",public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({serializedProblemChildren:{dependencyType:"stateVariable",variableName:"serializedProblemChildren"}}),definition({dependencyValues:Me}){return{setValue:{numProblems:Me.serializedProblemChildren.length}}}},ae.problemOrder={forRenderer:!0,shadowVariable:!0,returnDependencies:({sharedParameters:Me})=>({mode:{dependencyType:"stateVariable",variableName:"mode"},numProblems:{dependencyType:"stateVariable",variableName:"numProblems"},variantSeed:{dependencyType:"value",value:Me.variantSeed},rngClass:{dependencyType:"value",value:Me.rngClass,doNotProxy:!0},variants:{dependencyType:"variants"}}),definition:function({dependencyValues:Me}){let Or=Me.numProblems,Hr=[],Li;const ts=Me.mode;let rs=Me.variants?.desiredVariant?.indices;if(rs!==void 0)if(rs.length!==Or)Hr.push(codedDiagnostic({type:"info",code:"doenet-i0005"}));else{if(rs=rs.map(Number),!rs.every(Number.isInteger))throw Error("All indices specified for pretzel must be integers");if(!rs.every(is=>is>=1&&is<=Or))Hr.push(codedDiagnostic({type:"info",code:"doenet-i0007",args:{component:"pretzel"}}));else if(new Set(rs).size!==Or)Hr.push(codedDiagnostic({type:"info",code:"doenet-i0008"}));else if(ts==="circuit"&&Or>0&&rs[0]!==1)Hr.push(codedDiagnostic({type:"info",code:"doenet-i0009"}));else return{setValue:{problemOrder:rs}}}let ns=Me.rngClass(Me.variantSeed+"co");return Li=shuffleProblemOrder({numProblems:Or,variantRng:ns,mode:ts}),{setValue:{problemOrder:Li},sendDiagnostics:Hr}}},ae.generatedVariantInfo={additionalStateVariablesDefined:["isVariantComponent"],returnDependencies:({componentInfoObjects:Me,sharedParameters:Or})=>({variantSeed:{dependencyType:"value",value:Or.variantSeed},problemOrder:{dependencyType:"stateVariable",variableName:"problemOrder"},variantDescendants:{dependencyType:"descendant",componentTypes:Object.keys(Me.componentTypesCreatingVariants),variableNames:["isVariantComponent","generatedVariantInfo"],useReplacementsForComposites:!0,recurseToMatchedChildren:!1,variablesOptional:!0,includeNonActiveChildren:!0,ignoreReplacementsOfEncounteredComposites:!0}}),definition({dependencyValues:Me,componentIdx:Or}){let Hr={seed:Me.variantSeed,meta:{createdBy:Or},indices:Me.problemOrder},Li=Hr.subvariants=[];for(let ts of Me.variantDescendants)ts.stateValues.isVariantComponent?Li.push(ts.stateValues.generatedVariantInfo):ts.stateValues.generatedVariantInfo&&Li.push(...ts.stateValues.generatedVariantInfo.subvariants);return{setValue:{generatedVariantInfo:Hr,isVariantComponent:!0}}}},ae.statements={additionalStateVariablesDefined:["givenAnswers","validProblems","distractors"],returnDependencies:()=>({serializedProblemChildren:{dependencyType:"stateVariable",variableName:"serializedProblemChildren"},mode:{dependencyType:"stateVariable",variableName:"mode"}}),definition({dependencyValues:Me}){const Or=[],Hr=[],Li=[];let ts=!0;const rs=[];for(const[ns,is]of Me.serializedProblemChildren.entries()){let as=null,os=null;for(const ss of is.children)if(ss.componentType==="statement")as=ss;else if(ss.componentType==="givenAnswer"){const ls=ss.children.find(us=>us.componentType==="_postponeRenderContainer");ls&&(os={...ls,componentType:"span",attributes:{...ls.attributes},children:(ls.children??[]).filter(us=>us.componentType!=="label"&&us.componentType!=="shortDescription")},os.componentIdx=ss.componentIdx,ss.attributes.name&&(os.attributes.name=ss.attributes.name))}(as===null||os===null)&&(ts=!1),Or.push(as),Hr.push(os),is.attributes.isDistractor?.primitive.value&&Li.push(ns)}return ts||rs.push(codedDiagnostic({type:"warning",code:"doenet-w0076"})),Me.mode==="circuit"&&Li.includes(0)&&rs.push(codedDiagnostic({type:"error",code:"doenet-e0001"})),{setValue:{statements:Or,givenAnswers:Hr,validProblems:ts,distractors:Li},sendDiagnostics:rs}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({problemOrder:{dependencyType:"stateVariable",variableName:"problemOrder"},statements:{dependencyType:"stateVariable",variableName:"statements"},givenAnswers:{dependencyType:"stateVariable",variableName:"givenAnswers"}}),definition:function(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae}static async createSerializedReplacements({component:ae,nComponents:Me,workspace:Or}){Or.replacementsCreated===void 0&&(Or.replacementsCreated=0);const Hr={prefix:`${ae.stateId}|`,num:Or.replacementsCreated},Li=[];let ts=[];const rs=await ae.stateValues.numProblems,ns=await ae.stateValues.problemOrder,is=await ae.stateValues.statements,as=await ae.stateValues.givenAnswers,os=await ae.stateValues.distractors,ss=await ae.stateValues.mode,ls=new Set(os);for(let us=0;us<rs;us++){const cs=ns[us]-1,ds=is[cs],ps=getCorrespondingAnswerIdx({problemIdx:cs,numProblems:rs,distractorSet:ls}),ms=as[ps];ms===null?ts.push({type:"serialized",componentType:"span",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[]}):ts.push(ms),ts.push({type:"serialized",componentType:"textInput",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{width:{type:"component",name:"width",component:{type:"serialized",componentType:"componentSize",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,state:{componentSize:{size:15,isAbsolute:!0}},children:[],attributes:{},doenetAttributes:{}}}},doenetAttributes:{},state:ss==="circuit"&&us===0?{value:"1",disabledPreliminary:!0}:{},children:[{type:"serialized",componentType:"shortDescription",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,state:{},children:[{type:"serialized",componentType:"text",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,state:{value:"Enter number in sequence for this answer or X if it is a distractor"},children:[],attributes:{},doenetAttributes:{}}],attributes:{},doenetAttributes:{}}]}),ds===null?ts.push({type:"serialized",componentType:"statement",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[]}):ts.push(ds)}return Or.replacementsCreated=Hr.num,{replacements:ts,diagnostics:Li,nComponents:Me}}static setUpVariant({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or}){setUpVariantSeedAndRng({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or})}static determineNumberOfUniqueVariants({serializedComponent:ae,componentInfoObjects:Me,infoDiagnostics:Or}){let Hr=0;const Li=normalizePretzelMode(ae.attributes.mode?.primitive?.value);for(let is of ae.children)if(is.componentType==="problem")Hr++;else if(Me.isInheritedComponentType({inheritedComponentType:is.componentType,baseComponentType:"_composite"})&&is.attributes.createComponentOfType?.primitive.value==="problem")if(is.attributes.numProblems?.primitive!==void 0){let as=Number(is.attributes.numProblems?.primitive.value);if(Number.isInteger(as)&&as>=0)Hr+=as;else return{success:!1}}else Hr++;else return{success:!1};let ts=determineNumberOfPermutations({numProblems:Hr,mode:Li}),rs=super.determineNumberOfUniqueVariants({serializedComponent:ae,componentInfoObjects:Me,infoDiagnostics:Or});if(!rs.success)return{success:!1};let ns=rs.numVariants*ts;return ae.variants.numVariants=ns,ae.variants.uniqueVariantData={numVariantsByDescendant:ae.variants.uniqueVariantData.numVariantsByDescendant,numberOfPermutations:ts,numProblems:Hr,mode:Li},{success:!0,numVariants:ns}}static getUniqueVariant({serializedComponent:ae,variantIndex:Me,componentInfoObjects:Or}){let Hr=ae.variants?.numVariants;if(Hr===void 0)return{success:!1};if(!Number.isInteger(Me)||Me<1||Me>Hr)return{success:!1};let Li=ae.variants.uniqueVariantData.numVariantsByDescendant,ts=ae.variants.descendantVariantComponents,rs=ae.variants.uniqueVariantData.numberOfPermutations,ns=ae.variants.uniqueVariantData.numProblems;const is=normalizePretzelMode(ae.variants.uniqueVariantData.mode);let as=[...Li];as.push(rs);let os=enumerateCombinations({numberOfOptionsByIndex:as,maxNumber:Me})[Me-1].map(fs=>fs+1),ss=os.pop(),ls=os;const us=getProblemIndicesToPermute({numProblems:ns,mode:is}),cs=buildProblemOrderFromPermutedIndices({permutedIndices:enumeratePermutations({values:us,maxNumber:ss})[ss-1],numProblems:ns,mode:is});let ds=!1,ps=[];for(let fs=0;fs<Li.length;fs++)if(Li[fs]>1){let hs=ts[fs],gs=Or.allComponentClasses[hs.componentType].getUniqueVariant({serializedComponent:hs,variantIndex:ls[fs],componentInfoObjects:Or});if(!gs.success)return{success:!1};ps.push(gs.desiredVariant),ds=!0}else ps.push({});let ms={indices:cs};return ds&&(ms.subvariants=ps),{success:!0,desiredVariant:ms}}}class Cascade extends SectioningComponent{static componentType="cascade";static componentDocs={summary:"Sectional component that reveals its children step-by-step"};static rendererType="section";static includeBlankStringChildren=!1;static createAttributesObject(){let ae=super.createAttributesObject();return ae.hideFutureSections={createComponentOfType:"boolean",createStateVariable:"hideFutureSections",defaultValue:!1,public:!0,description:"Whether to hide later cascade sections until previous ones are completed."},ae.noAutoTitle.defaultValue=!0,ae.asList.createStateVariable="asListPreliminary",ae.asList.public=!1,ae.revealAll={createComponentOfType:"boolean",createStateVariable:"revealAllPreliminary",defaultValue:!1,description:"Whether all cascade entries should be revealed regardless of progress."},ae.boxAll={createComponentOfType:"boolean",createStateVariable:"boxAll",defaultValue:!1,description:"Whether to draw boxes around all cascade entries regardless of progress."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.isListItem={forRenderer:!0,returnDependencies:()=>({}),definition:()=>({setValue:{isListItem:!1}})},ae.asList={description:"Whether to render this section's children as a list.",public:!0,forRenderer:!0,shadowingInstructions:{createComponentOfType:"boolean"},returnDependencies:()=>({asListPreliminary:{dependencyType:"stateVariable",variableName:"asListPreliminary"},parentAsList:{dependencyType:"parentStateVariable",variableName:"asList"}}),definition({dependencyValues:Me,usedDefault:Or}){let Hr=Me.parentAsList;return Or.asListPreliminary||(Hr=Me.asListPreliminary),{setValue:{asList:!!Hr}}}},ae.childrenAggregateScores={returnDependencies:()=>({}),definition:()=>({setValue:{childrenAggregateScores:!0}})},ae.childCreditAchieved={returnDependencies:()=>({children:{dependencyType:"child",childGroups:["anything"],variableNames:["creditAchieved"],variablesOptional:!0}}),definition({dependencyValues:Me}){return{setValue:{childCreditAchieved:Me.children.map(Hr=>Hr.stateValues?.creditAchieved??null)}}}},ae.numCompleted={description:"The number of cascade sections currently completed.",public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({childCreditAchieved:{dependencyType:"stateVariable",variableName:"childCreditAchieved"}}),definition({dependencyValues:Me}){let Or=0;for(const Hr of Me.childCreditAchieved)if(Hr===1||Hr===null)Or++;else break;return{setValue:{numCompleted:Or}}}},ae.revealAll={returnDependencies:()=>({cascadeAncestor:{dependencyType:"ancestor",componentType:"cascade",variableNames:["revealAll"]},revealAllPreliminary:{dependencyType:"stateVariable",variableName:"revealAllPreliminary"}}),definition({dependencyValues:Me,usedDefault:Or}){let Hr=!1;return Or.revealAllPreliminary?Me.cascadeAncestor?Hr=Me.cascadeAncestor.stateValues.revealAll:Me.revealAllPreliminary:Hr=Me.revealAllPreliminary,{setValue:{revealAll:Hr}}}},ae.childrenToHide={additionalStateVariablesDefined:["childrenToHideChildren","sectionToShowCascadeMessage"],returnDependencies:()=>({hideFutureSections:{dependencyType:"stateVariable",variableName:"hideFutureSections"},numCompleted:{dependencyType:"stateVariable",variableName:"numCompleted"},children:{dependencyType:"child",childGroups:["anything"],variableNames:["hasCascadeMessageToShow"],variablesOptional:!0},childrenWithCascadeMessages:{dependencyType:"child",childGroups:["anything","cascadeMessages"]},revealAll:{dependencyType:"stateVariable",variableName:"revealAll"},hideChildren:{dependencyType:"stateVariable",variableName:"hideChildren"},showCascadeMessage:{dependencyType:"stateVariable",variableName:"showCascadeMessage"}}),definition({dependencyValues:Me,componentInfoObjects:Or}){const Hr=Me.childrenWithCascadeMessages.filter(as=>as.componentType==="cascadeMessage").map(as=>as.componentIdx);if(Me.revealAll)return{setValue:{childrenToHide:Hr,childrenToHideChildren:[],sectionToShowCascadeMessage:null}};const Li=[],ts=[];for(const[as,os]of Me.children.entries())as<=Me.numCompleted?Me.hideChildren&&Li.push(os.componentIdx):!Me.hideChildren&&!Me.hideFutureSections&&Or.isInheritedComponentType({inheritedComponentType:os.componentType,baseComponentType:"_sectioningComponent"})?ts.push(os.componentIdx):Li.push(os.componentIdx);const rs=Me.children[Me.numCompleted+1],ns=rs&&ts.includes(rs.componentIdx)&&rs.stateValues?.hasCascadeMessageToShow?rs.componentIdx:null,is=ns===null&&(!Me.hideChildren||Me.showCascadeMessage)?nextOwnCascadeMessage(Me):null;return Li.push(...Hr.filter(as=>as!==is)),{setValue:{childrenToHide:Li,childrenToHideChildren:ts,sectionToShowCascadeMessage:ns}}}},ae.hasCascadeMessageToShow={returnDependencies:()=>({numCompleted:{dependencyType:"stateVariable",variableName:"numCompleted"},children:{dependencyType:"child",childGroups:["anything"]},childrenWithCascadeMessages:{dependencyType:"child",childGroups:["anything","cascadeMessages"]},revealAll:{dependencyType:"stateVariable",variableName:"revealAll"}}),definition({dependencyValues:Me}){return{setValue:{hasCascadeMessageToShow:nextOwnCascadeMessage(Me)!==null}}}},ae}}function nextOwnCascadeMessage(Br){if(Br.revealAll||Br.numCompleted>Br.children.length-2)return null;const ae=Br.children[Br.numCompleted].componentIdx,Me=Br.childrenWithCascadeMessages.findIndex(Or=>Or.componentIdx===ae);return Br.childrenWithCascadeMessages.slice(Me+1).find(Or=>Or.componentType==="cascadeMessage")?.componentIdx??null}class DynamicChildren extends CompositeComponent{constructor(ae){super(ae),Object.assign(this.actions,{addChildren:this.addChildren.bind(this),deleteChildren:this.deleteChildren.bind(this)})}static componentType="_dynamicChildren";static componentDocs={summary:"Internal container for dynamically-generated children."};static treatAsComponentForRecursiveReplacements=!0;static stateVariableToEvaluateAfterReplacements="readyToExpandWhenResolved";static createAttributesObject(){let ae=super.createAttributesObject();return ae.deferUntilParentRendered={createComponentOfType:"boolean",createStateVariable:"deferUntilParentRendered",defaultValue:!1,description:"Whether to wait until the parent is rendered before creating dynamic children."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.dynamicChildren={hasEssential:!0,defaultValue:[],returnDependencies:()=>({}),definition:function(){return{useEssentialOrDefaultValue:{dynamicChildren:!0}}},inverseDefinition({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setEssentialValue:"dynamicChildren",value:Me.dynamicChildren}]}}},ae.createReplacements={stateVariablesDeterminingDependencies:["deferUntilParentRendered"],returnDependencies:({stateValues:Me})=>{const Or={deferUntilParentRendered:{dependencyType:"stateVariable",variableName:"deferUntilParentRendered"}};return Me.deferUntilParentRendered&&(Or.parentRendered={dependencyType:"parentStateVariable",variableName:"rendered"}),Or},definition({dependencyValues:Me}){return{setValue:{createReplacements:!Me.deferUntilParentRendered||Me.parentRendered!==!1}}},markStale(){return{updateReplacements:!0}}},ae.nGroups={returnDependencies:()=>({dynamicChildren:{dependencyType:"stateVariable",variableName:"dynamicChildren"}}),definition({dependencyValues:Me}){return{setValue:{nGroups:Me.dynamicChildren.length}}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({dynamicChildren:{dependencyType:"stateVariable",variableName:"dynamicChildren"},createReplacements:{dependencyType:"stateVariable",variableName:"createReplacements"}}),definition:function(){return{setValue:{readyToExpandWhenResolved:!0}}},markStale(){return{updateReplacements:!0}}},ae}async addChildren({serializedComponents:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){if(ae&&ae.length>0){const Li=[...await this.stateValues.dynamicChildren];return Li.push({type:"serialized",componentType:"group",componentIdx:0,attributes:{},doenetAttributes:{},state:{},children:deepClone(ae)}),await this.coreFunctions.performUpdate({updateInstructions:[{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"dynamicChildren",value:Li}],actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr})}else return}async deleteChildren({number:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){const Li=await this.stateValues.nGroups;let ts=Math.min(ae,Li);if(ts>0){const rs=(await this.stateValues.dynamicChildren).slice(0,Li-ts);return await this.coreFunctions.performUpdate({updateInstructions:[{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"dynamicChildren",value:rs}],actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr})}else return}static async createSerializedReplacements({component:ae,nComponents:Me,workspace:Or}){let Hr=[];Or.replacementsCreated===void 0&&(Or.replacementsCreated=0),Or.replacementsCreatedThroughGroup=[];let Li=[];if(!await ae.stateValues.createReplacements)return Or.nGroups=0,{replacements:Li,diagnostics:Hr,nComponents:Me};const ts=await ae.stateValues.nGroups;for(let rs=0;rs<ts;rs++){let ns=await this.replacementForGroup({component:ae,groupNum:rs,nComponents:Me,workspace:Or}),is=ns.replacements;Me=ns.nComponents,Li.push(...is)}return Or.nGroups=ts,{replacements:Li,diagnostics:Hr,nComponents:Me}}static async replacementForGroup({component:ae,groupNum:Me,nComponents:Or,workspace:Hr}){let Li=[deepClone((await ae.stateValues.dynamicChildren)[Me])];const ts={prefix:`${ae.stateId}|`,num:Hr.replacementsCreated},rs=createNewComponentIndices(Li,Or,ts);return Li=rs.components,Or=rs.nComponents,Hr.replacementsCreated=ts.num,Hr.replacementsCreatedThroughGroup=[...Hr.replacementsCreatedThroughGroup,Hr.replacementsCreated],{replacements:Li,nComponents:Or}}static async calculateReplacementChanges({component:ae,nComponents:Me,workspace:Or}){const Li=await ae.stateValues.createReplacements?await ae.stateValues.nGroups:0;if(Li===Or.nGroups)return{replacementChanges:[],nComponents:Me};if(Li<Or.nGroups){const ns=[{changeType:"delete",changeTopLevelReplacements:!0,firstReplacementInd:Li,numberReplacementsToDelete:Or.nGroups-Li}];return Or.nGroups=Li,Or.replacementsCreated=Or.replacementsCreatedThroughGroup[Li-1]||0,Or.replacementsCreatedThroughGroup=Or.replacementsCreatedThroughGroup.slice(0,Li),{replacementChanges:ns,nComponents:Me}}let ts=[];for(let ns=Or.nGroups;ns<Li;ns++){let is=await this.replacementForGroup({component:ae,groupNum:ns,nComponents:Me,workspace:Or}),as=is.replacements;Me=is.nComponents,ts.push(...as)}let rs={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:Or.nGroups,numberReplacementsToReplace:0,serializedReplacements:ts,replacementsToWithhold:0};return Or.nGroups=Li,{replacementChanges:[rs],nComponents:Me}}}class ShortDescription extends TextOrInline{static componentType="shortDescription";static componentDocs={summary:"A short accessibility description (e.g. for a `<graph>`) read by screen readers"};static rendererType=void 0;static inSchemaOnlyInheritAs=[];static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.inlineChildren={returnDependencies:()=>({inlineChildren:{dependencyType:"child",childGroups:["inlines"],variableNames:["text","hidden"],variablesOptional:!0}}),definition:({dependencyValues:Me})=>({setValue:{inlineChildren:Me.inlineChildren}})},ae.value={description:"The short description text.",public:!0,shadowingInstructions:{createComponentOfType:this.componentType},stateVariablesDeterminingDependencies:["inlineChildren"],returnDependencies:({stateValues:Me})=>{const Or={inlineChildren:{dependencyType:"stateVariable",variableName:"inlineChildren"}};for(const[Hr,Li]of Me.inlineChildren.entries())typeof Li=="object"&&(Or[`adapterSource${Hr}`]={dependencyType:"adapterSource",componentIdx:Li.componentIdx});return Or},definition({dependencyValues:Me,componentInfoObjects:Or}){const Hr=textFromChildren(Me.inlineChildren);let Li;for(let rs=0;rs<Me.inlineChildren.length;rs++){const ns=Me.inlineChildren[rs];if(typeof ns!="object")continue;const is=Me[`adapterSource${rs}`]?.componentType??ns.componentType;if(Or.isInheritedComponentType({inheritedComponentType:is,baseComponentType:"math"})||Or.isInheritedComponentType({inheritedComponentType:is,baseComponentType:"m"})){Li=is;break}}const ts=[];return Li&&ts.push(codedDiagnostic({type:"accessibility",level:2,code:"doenet-a0005",args:{component:Li}})),{setValue:{value:Hr},sendDiagnostics:ts}}},ae}}const unitConversions={"":1,px:1,pixel:1,pixels:1,"%":1,em:100,in:96,inch:96,inches:96,pt:1.333333333333,mm:3.7795296,millimeter:3.7795296,millimeters:3.7795296,cm:37.795296,centimeter:37.795296,centimeters:37.795296};class ComponentSize extends InlineComponent{static componentType="componentSize";static rendererType="text";static excludeFromSchema=!0;static primaryStateVariableForDefinition="componentSize";static stateVariableToBeShadowed="componentSize";static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){let ts=Or[Or.length-1];if(typeof ts=="string"){let rs=/([a-zA-z]+|%)$/,ns=ts.trim(),is=ns.match(rs);if(is){let as=is[1];if(as in unitConversions){let os=ns.slice(0,is.index),ss=Or.slice(0,Or.length-1);return os.length>0&&ss.push(os),{success:!0,newChildren:[{type:"serialized",componentType:"number",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:ss,attributes:{},doenetAttributes:{},state:{}},as],nComponents:Hr}}}}return{success:!0,newChildren:[{componentType:"number",children:Or}]}};return ae.push({childrenRegex:/..+/,replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"strings",componentTypes:["string"]},{group:"numbers",componentTypes:["number"]},{group:"componentSizes",componentTypes:["componentSize"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions(),Me=returnSelectedStyleStateVariableDefinition();Object.assign(ae,Me);let Or=returnTextStyleDescriptionDefinitions();return Object.assign(ae,Or),ae.componentSize={description:"The size value with its associated unit (absolute pixels or relative percent).",public:!0,shadowingInstructions:{createComponentOfType:"componentSize"},hasEssential:!0,returnDependencies:()=>({componentSizeChild:{dependencyType:"child",childGroups:["componentSizes"],variableNames:["componentSize"]},numberChild:{dependencyType:"child",childGroups:["numbers"],variableNames:["value"]},stringChild:{dependencyType:"child",childGroups:["strings"],variableNames:["value"]},parentDefaultAbsoluteSize:{dependencyType:"parentStateVariable",variableName:"defaultAbsoluteSize"}}),definition({dependencyValues:Hr}){let Li=Hr.parentDefaultAbsoluteSize===void 0?!1:Hr.parentDefaultAbsoluteSize;if(Hr.stringChild.length===0)return Hr.numberChild.length===0?Hr.componentSizeChild.length===0?{useEssentialOrDefaultValue:{componentSize:{defaultValue:{size:100,isAbsolute:Li}}}}:{setValue:{componentSize:Hr.componentSizeChild[0].stateValues.componentSize}}:{setValue:{componentSize:{size:Hr.numberChild[0].stateValues.value,isAbsolute:!0}}};{let ts,rs;if(Hr.numberChild.length>0)ts=Hr.numberChild[0].stateValues.value,rs=Hr.stringChild[0].trim();else{let os=Hr.stringChild[0].trim().match(/^(-?[\d.]+)\s*(.*)$/);if(os===null)return{setValue:{componentSize:null}};ts=os[1],rs=os[2].trim()}if(ts=Number(ts),!Number.isFinite(ts))return{setValue:{componentSize:null}};let ns=!(rs==="%"||rs==="em"),is=unitConversions[rs];return is===void 0&&(is=1),{setValue:{componentSize:{size:is*ts,isAbsolute:ns}}}}},inverseDefinition({desiredStateVariableValues:Hr,dependencyValues:Li}){if(Li.stringChild.length===0)return Li.numberChild.length===0?Li.componentSizeChild.length===0?{success:!0,instructions:[{setEssentialValue:"componentSize",value:Hr.componentSize}]}:{success:!0,instructions:[{setDependency:"componentSizeChild",desiredValue:Hr.componentSize,childIndex:0,variableIndex:0}]}:Hr.componentSize.isAbsolute?{success:!0,instructions:[{setDependency:"numberChild",desiredValue:Hr.componentSize.size,childIndex:0,variableIndex:0}]}:{success:!1};if(Li.numberChild.length>0){let ts=Li.stringChild[0].trim(),rs=!(ts==="%"||ts==="em");if(Hr.componentSize.isAbsolute!==rs)return{success:!1};let ns=unitConversions[ts];return ns===void 0&&(ns=1),{success:!0,instructions:[{setDependency:"numberChild",desiredValue:Hr.componentSize.size/ns,childIndex:0,variableIndex:0}]}}else{let ts=Hr.componentSize.size;return Hr.componentSize.isAbsolute?ts+="px":ts+="%",{success:!0,instructions:[{setDependency:"stringChild",desiredValue:ts,childIndex:0,variableIndex:0}]}}}},ae.number={description:"The numeric portion of the size.",public:!0,shadowingInstructions:{createComponentOfType:"number"},returnDependencies:()=>({componentSize:{dependencyType:"stateVariable",variableName:"componentSize"}}),definition({dependencyValues:Hr}){let Li=null;return Hr.componentSize&&(Li=Hr.componentSize.size),{setValue:{number:Li}}},inverseDefinition({desiredStateVariableValues:Hr,dependencyValues:Li}){return Li.componentSize?{success:!0,instructions:[{setDependency:"componentSize",desiredValue:{size:Hr.number,isAbsolute:Li.componentSize.isAbsolute}}]}:{success:!1}}},ae.math=mathStateVariableFromNumberStateVariable({numberVariableName:"number",mathVariableName:"math",isPublic:!0}),ae.math.description="The size as a math expression.",ae.isAbsolute={description:"Whether the size uses absolute units (pixels) rather than relative units (percent).",public:!0,shadowingInstructions:{createComponentOfType:"boolean"},returnDependencies:()=>({componentSize:{dependencyType:"stateVariable",variableName:"componentSize"}}),definition({dependencyValues:Hr}){let Li=null;return Hr.componentSize&&(Li=Hr.componentSize.isAbsolute),{setValue:{isAbsolute:Li}}}},ae.text={forRenderer:!0,returnDependencies:()=>({componentSize:{dependencyType:"stateVariable",variableName:"componentSize"}}),definition({dependencyValues:Hr}){let Li="";return Hr.componentSize&&(Li=Hr.componentSize.size,Hr.componentSize.isAbsolute?Li+="px":Li+="%"),{setValue:{text:Li}}}},ae}static adapters=["number","math"]}class ComponentSizeList extends BaseComponent{static componentType="_componentSizeList";static rendererType="asList";static renderChildren=!0;static stateVariableToBeShadowed="componentSizes";static additionalSchemaChildren=["string","number"];static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){let ts=[],rs=[],ns=function(){rs.length>0&&(ts.push({type:"serialized",componentType:"componentSize",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:rs,attributes:{},doenetAttributes:{},state:{}}),rs=[])};for(let is of Or)if(typeof is=="string"){let as=is.split(/\s+/);as[0].length===0&&(ns(),as=as.slice(1));for(let[os,ss]of as.entries())ss.length>0?(rs.push(ss),os<as.length-1&&ns()):ns()}else rs.push(is);return ns(),{success:!0,newChildren:ts,nComponents:Hr}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"componentSizes",componentTypes:["componentSize"]},{group:"componentSizeLists",componentTypes:["_componentSizeList"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.overrideChildHide={returnDependencies:()=>({}),definition:()=>({setValue:{overrideChildHide:!0}})},ae.numComponents={description:"The number of size values in the list.",public:!0,shadowingInstructions:{createComponentOfType:"number"},additionalStateVariablesDefined:["childIndexByArrayKey"],returnDependencies(){return{componentSizeListChildren:{dependencyType:"child",childGroups:["componentSizeLists"],variableNames:["numComponents"]},componentSizeAndComponentSizeListChildren:{dependencyType:"child",childGroups:["componentSizes","componentSizeLists"],skipComponentIndices:!0}}},definition:function({dependencyValues:Me,componentInfoObjects:Or}){let Hr=0,Li=[],ts=0;for(let[rs,ns]of Me.componentSizeAndComponentSizeListChildren.entries())if(Or.isInheritedComponentType({inheritedComponentType:ns.componentType,baseComponentType:"_componentSizeList"})){let is=Me.componentSizeListChildren[ts];ts++;for(let as=0;as<is.stateValues.numComponents;as++)Li[Hr+as]=[rs,as];Hr+=is.stateValues.numComponents}else Li[Hr]=[rs,0],Hr+=1;return{setValue:{numComponents:Hr,childIndexByArrayKey:Li},checkForActualChange:{numComponents:!0}}}},ae.componentSizes={description:"The list of component sizes.",public:!0,shadowingInstructions:{createComponentOfType:"componentSize"},isArray:!0,entryPrefixes:["componentSize"],stateVariablesDeterminingDependencies:["childIndexByArrayKey"],returnArraySizeDependencies:()=>({numComponents:{dependencyType:"stateVariable",variableName:"numComponents"}}),returnArraySize({dependencyValues:Me}){return[Me.numComponents]},returnArrayDependenciesByKey({arrayKeys:Me,stateValues:Or}){let Hr={},Li={childIndexByArrayKey:{dependencyType:"stateVariable",variableName:"childIndexByArrayKey"}};for(let ts of Me){let rs=[],ns="1";Or.childIndexByArrayKey[ts]&&(rs=[Or.childIndexByArrayKey[ts][0]],ns=Or.childIndexByArrayKey[ts][1]+1),Hr[ts]={componentSizeAndComponentSizeListChildren:{dependencyType:"child",childGroups:["componentSizes","componentSizeLists"],variableNames:["componentSize","componentSize"+ns],variablesOptional:!0,childIndices:rs}}}return{globalDependencies:Li,dependenciesByKey:Hr}},arrayDefinitionByKey({globalDependencyValues:Me,dependencyValuesByKey:Or,arrayKeys:Hr,componentInfoObjects:Li}){let ts={};for(let rs of Hr){let ns=Or[rs].componentSizeAndComponentSizeListChildren[0];if(ns)if(Li.isInheritedComponentType({inheritedComponentType:ns.componentType,baseComponentType:"_componentSizeList"})){let is=Me.childIndexByArrayKey[rs][1]+1;ts[rs]=ns.stateValues["componentSize"+is]}else ts[rs]=ns.stateValues.componentSize}return{setValue:{componentSizes:ts}}},inverseArrayDefinitionByKey({desiredStateVariableValues:Me,globalDependencyValues:Or,dependencyValuesByKey:Hr,dependencyNamesByKey:Li,arraySize:ts,componentInfoObjects:rs}){let ns=[];for(let is in Me.componentSizes){if(!Hr[is])continue;let as=Hr[is].componentSizeAndComponentSizeListChildren[0];as&&(rs.isInheritedComponentType({inheritedComponentType:as.componentType,baseComponentType:"_componentSizeList"})?ns.push({setDependency:Li[is].componentSizeAndComponentSizeListChildren,desiredValue:Me.componentSizes[is],childIndex:0,variableIndex:1}):ns.push({setDependency:Li[is].componentSizeAndComponentSizeListChildren,desiredValue:Me.componentSizes[is],childIndex:0,variableIndex:0}))}return{success:!0,instructions:ns}}},ae.numValues={isAlias:!0,targetVariableName:"numComponents",description:"The number of component sizes in the list."},ae.values={isAlias:!0,targetVariableName:"componentSizes",description:"The list's component sizes."},ae}}const ComponentSize$1=Object.freeze(Object.defineProperty({__proto__:null,ComponentSize,ComponentSizeList},Symbol.toStringTag,{value:"Module"}));class Copy extends CompositeComponent{static componentType="_copy";static excludeFromSchema=!0;static acceptAnyAttribute=!0;static includeBlankStringChildren=!0;static stateVariableToEvaluateAfterReplacements="needsReplacementsUpdatedWhenStale";static createAttributesObject(){let ae=super.createAttributesObject();return delete ae.disabled,delete ae.modifyIndirectly,delete ae.fixed,delete ae.styleNumber,delete ae.isResponse,delete ae.isPotentialResponse,delete ae.hide,ae.createComponentOfType={createPrimitiveOfType:"string"},ae.createComponentIdx={createPrimitiveOfType:"integer"},ae.createComponentName={createPrimitiveOfType:"string"},ae.numComponents={createPrimitiveOfType:"number"},ae.copyInChildren={createPrimitiveOfType:"boolean"},ae.uri={createPrimitiveOfType:"string",createStateVariable:"uri",defaultValue:null,public:!0},ae.link={createPrimitiveOfType:"boolean",createStateVariable:"link",defaultValue:!0},ae.removeEmptyArrayEntries={createPrimitiveOfType:"boolean",createStateVariable:"removeEmptyArrayEntries",defaultValue:!1},ae.asList={createPrimitiveOfType:"boolean",createStateVariable:"asListPreliminary",defaultValue:!0,description:"Whether to render the items separated by commas (true) or with no separator (false)."},ae}static keepChildrenSerialized({serializedComponent:ae}){return ae.children===void 0?[]:Object.keys(ae.children)}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.refResolutionIndexDependencies={returnDependencies:()=>({refResolutionIndexDependencies:{dependencyType:"refResolutionIndexDependencies"}}),definition:({dependencyValues:Me})=>({setValue:{refResolutionIndexDependencies:Me.refResolutionIndexDependencies}})},ae.refResolutionIndexDependencyValues={stateVariablesDeterminingDependencies:["refResolutionIndexDependencies"],returnDependencies:({stateValues:Me})=>{const Or={};for(const Hr of Me.refResolutionIndexDependencies)Or[Hr]={dependencyType:"stateVariable",componentIdx:Hr,variableName:"value"};return Or},definition:({dependencyValues:Me})=>({setValue:{refResolutionIndexDependencyValues:Me}})},ae.extendIdx={additionalStateVariablesDefined:["unresolvedPath","originalPath"],stateVariablesDeterminingDependencies:["refResolutionIndexDependencyValues"],returnDependencies:({stateValues:Me})=>({refResolution:{dependencyType:"refResolution",indexDependencyValues:Me.refResolutionIndexDependencyValues}}),definition:({dependencyValues:Me})=>({setValue:{extendIdx:Me.refResolution.extendIdx,unresolvedPath:Me.refResolution.unresolvedPath,originalPath:Me.refResolution.originalPath}})},ae.extendedComponent={shadowVariable:!0,stateVariablesDeterminingDependencies:["extendIdx"],returnDependencies({stateValues:Me}){return Me.extendIdx!==-1?{extendedComponent:{dependencyType:"componentIdentity",componentIdx:Me.extendIdx}}:{}},definition:function({dependencyValues:Me}){let Or=null;return Me.extendedComponent&&(Or=Me.extendedComponent),{setValue:{extendedComponent:Or}}}},ae.targetInactive={stateVariablesDeterminingDependencies:["extendedComponent"],returnDependencies({stateValues:Me}){return Me.extendedComponent?{targetIsInactiveCompositeReplacement:{dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"isInactiveCompositeReplacement"}}:{}},definition:function({dependencyValues:Me}){return{setValue:{targetInactive:!!Me.targetIsInactiveCompositeReplacement}}}},ae.cid={additionalStateVariablesDefined:["doenetId"],returnDependencies:()=>({uri:{dependencyType:"stateVariable",variableName:"uri"}}),definition:function({dependencyValues:Me}){if(!Me.uri||Me.uri.substring(0,7).toLowerCase()!=="doenet:")return{setValue:{cid:null,doenetId:null}};let Or=null,Hr=null,Li=Me.uri.match(/[:&]cid=([^&]+)/i);return Li&&(Or=Li[1]),Li=Me.uri.match(/[:&]doenetid=([^&]+)/i),Li&&(Hr=Li[1]),{setValue:{cid:Or,doenetId:Hr}}}},ae.createComponentOfType={returnDependencies:()=>({typeAttr:{dependencyType:"attributePrimitive",attributeName:"createComponentOfType"}}),definition({dependencyValues:Me}){let Or=null;return Me.typeAttr&&(Or=Me.typeAttr),{setValue:{createComponentOfType:Or}}}},ae.replacementSourceIdentities={stateVariablesDeterminingDependencies:["extendedComponent","unresolvedPath","createComponentOfType"],additionalStateVariablesDefined:["usedReplacements"],returnDependencies:function({stateValues:Me,componentInfoObjects:Or}){let Hr={numComponentsSpecified:{dependencyType:"stateVariable",variableName:"numComponentsSpecified"}},Li=!1;if(Me.extendedComponent!==null){if(Me.extendedComponent.componentType==="_copy"||Or.isCompositeComponent({componentType:Me.extendedComponent.componentType,includeNonStandard:!0})&&Me.extendedComponent.componentType!==Me.createComponentOfType){Li=!0;let ts=Me.unresolvedPath?.[0]?.name;ts===""&&(ts=null),Hr.targets={dependencyType:"replacement",compositeIdx:Me.extendedComponent.componentIdx,recursive:!0,recurseNonStandardComposites:Me.unresolvedPath!=null,includeWithheldReplacements:!0,stopIfHaveProp:ts}}Li||(Hr.targets={dependencyType:"stateVariable",variableName:"extendedComponent"}),Hr.usedReplacements={dependencyType:"value",value:Li}}return Hr},definition({dependencyValues:Me}){let Or=null;if(Me.targets&&(Or=Me.targets,Array.isArray(Or)||(Or=[Or]),Me.numComponentsSpecified===1&&Or.length>1)){const Hr=Or.findIndex(ts=>typeof ts!="string"||ts.trim()!==""),Li=Or.findLastIndex(ts=>typeof ts!="string"||ts.trim()!=="");Hr!==-1&&Li!==-1&&(Or=Or.slice(Hr,Li+1))}return{setValue:{replacementSourceIdentities:Or,usedReplacements:!!Me.usedReplacements}}}},ae.asList={stateVariablesDeterminingDependencies:["usedReplacements","extendedComponent"],returnDependencies({stateValues:Me}){const Or={asListPreliminary:{dependencyType:"stateVariable",variableName:"asListPreliminary"},usedReplacements:{dependencyType:"stateVariable",variableName:"usedReplacements"}};return Me.usedReplacements&&(Or.extendedComponentAsList={dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"asList",variablesOptional:!0}),Or},definition({dependencyValues:Me,usedDefault:Or}){return Or.asListPreliminary&&Me.usedReplacements&&typeof Me.extendedComponentAsList=="boolean"?{setValue:{asList:Me.extendedComponentAsList}}:{setValue:{asList:Me.asListPreliminary}}}},ae.implicitProp={stateVariablesDeterminingDependencies:["replacementSourceIdentities","unresolvedPath"],returnDependencies({stateValues:Me}){let Or={unresolvedPath:{dependencyType:"stateVariable",variableName:"unresolvedPath"},usedReplacements:{dependencyType:"stateVariable",variableName:"usedReplacements"}};return Me.unresolvedPath||(Or.replacementSourceIdentities={dependencyType:"stateVariable",variableName:"replacementSourceIdentities"},Or.typeAttr={dependencyType:"attributePrimitive",attributeName:"createComponentOfType"}),Or},definition({dependencyValues:Me,componentInfoObjects:Or}){if(Me.unresolvedPath||Me.usedReplacements||!(Me.replacementSourceIdentities?.length>0))return{setValue:{implicitProp:null}};let Hr=Me.replacementSourceIdentities[0],Li=Or.allComponentClasses[Hr.componentType]?.variableForImplicitProp;if(!Li)return{setValue:{implicitProp:null}};if(Me.typeAttr){let ts=Or.componentTypeLowerCaseMapping[Me.typeAttr.toLowerCase()];if(ts===Hr.componentType)return{setValue:{implicitProp:null}};let rs=Or.publicStateVariableInfo[Hr.componentType].stateVariableDescriptions[Li];if(rs.createComponentOfType!==void 0&&rs.createComponentOfType!==ts)return{setValue:{implicitProp:null}}}return{setValue:{implicitProp:Li}}}},ae.replacementSources={stateVariablesDeterminingDependencies:["replacementSourceIdentities","unresolvedPath","implicitProp"],additionalStateVariablesDefined:["effectivePropNameBySource"],returnDependencies:function({stateValues:Me}){let Or={replacementSourceIdentities:{dependencyType:"stateVariable",variableName:"replacementSourceIdentities"}};if(Me.replacementSourceIdentities!==null)for(let[Hr,Li]of Me.replacementSourceIdentities.entries()){let ts=Me.unresolvedPath;Me.implicitProp&&(ts=[{name:Me.implicitProp,index:[]}]);let rs;if(ts){if(ts=[...ts],Or["unresolvedPath"+Hr]={dependencyType:"value",value:ts},typeof Li=="string")continue;rs={dependencyType:"stateVariableFromUnresolvedPath",componentIdx:Li.componentIdx,unresolvedPath:ts,returnAsComponentObject:!0,variablesOptional:!0,caseInsensitiveVariableMatch:!0,publicStateVariablesOnly:!0,useMappedVariableNames:!0}}else{if(typeof Li=="string")continue;rs={dependencyType:"componentIdentity",componentIdx:Li.componentIdx}}Or["target"+Hr]=rs}return Or},definition({dependencyValues:Me}){let Or=null,Hr=null;if(Me.replacementSourceIdentities!==null){Or=[],Hr=[];for(let Li in Me.replacementSourceIdentities){let ts=Me["target"+Li];if(ts){Or.push(ts);let rs;ts.stateValues&&(rs=Object.keys(ts.stateValues)[0]),!rs&&Me["unresolvedPath"+Li]&&(rs="__prop_name_not_found"),Hr.push(rs)}else{const rs=Me.replacementSourceIdentities[Li];typeof rs=="string"?Me["unresolvedPath"+Li]?Hr.push("__prop_name_not_found"):(Or.push(rs),Hr.push(void 0)):(Or.push(void 0),Hr.push("__no_target_found"))}}}return{setValue:{replacementSources:Or,effectivePropNameBySource:Hr}}}},ae.numComponentsSpecified={returnDependencies:()=>({numComponentsAttr:{dependencyType:"attributePrimitive",attributeName:"numComponents"},typeAttr:{dependencyType:"attributePrimitive",attributeName:"createComponentOfType"}}),definition({dependencyValues:Me,componentInfoObjects:Or}){let Hr;if(Me.typeAttr){if(!(Or.componentTypeLowerCaseMapping[Me.typeAttr.toLowerCase()]in Or.allComponentClasses))return{setValue:{numComponentsSpecified:null},sendDiagnostics:[codedDiagnostic({type:"warning",code:"doenet-w0065",args:{type:Me.typeAttr}})]};Me.numComponentsAttr!==null?Hr=Me.numComponentsAttr:Hr=1}else{if(Me.numComponentsAttr!==null)throw Error("You must specify createComponentOfType when specifying numComponents for a copy.");Hr=null}return{setValue:{numComponentsSpecified:Hr}}}},ae.unlinkedDescendants={stateVariablesDeterminingDependencies:["extendIdx","link"],returnDependencies({stateValues:Me}){let Or={};return Me.link?Or.targetItself={dependencyType:"componentIdentity",componentIdx:Me.extendIdx}:Or.targetDescendants={dependencyType:"descendant",ancestorIdx:Me.extendIdx,componentTypes:["_composite"]},Or},definition(){return{setValue:{unlinkedDescendants:!0}}}},ae.unlinkedTargetsExpanded={stateVariablesDeterminingDependencies:["extendedComponent","link"],returnDependencies({stateValues:Me,componentInfoObjects:Or}){let Hr={};return!Me.link&&Me.extendedComponent&&Or.isInheritedComponentType({inheritedComponentType:Me.extendedComponent.componentType,baseComponentType:"_composite"})&&(Hr.targetReplacements={dependencyType:"replacement",compositeIdx:Me.extendedComponent.componentIdx,recursive:!0,recurseNonStandardComposites:!0}),Hr},definition(){return{setValue:{unlinkedTargetsExpanded:!0}}}},ae.readyToExpandWhenResolved={stateVariablesDeterminingDependencies:["extendedComponent","unresolvedPath","link"],returnDependencies({stateValues:Me,componentInfoObjects:Or}){let Hr={extendedComponent:{dependencyType:"stateVariable",variableName:"extendedComponent"},needsReplacementsUpdatedWhenStale:{dependencyType:"stateVariable",variableName:"needsReplacementsUpdatedWhenStale"},link:{dependencyType:"stateVariable",variableName:"link"},unlinkedTargetsExpanded:{dependencyType:"stateVariable",variableName:"unlinkedTargetsExpanded"},unlinkedDescendants:{dependencyType:"stateVariable",variableName:"unlinkedDescendants"}};return Me.extendedComponent&&Or.isCompositeComponent({componentType:Me.extendedComponent.componentType,includeNonStandard:!1})&&(Hr.targetReadyToExpandWhenResolved={dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"readyToExpandWhenResolved"}),Me.extendedComponent&&Me.unresolvedPath===null&&(Hr.extendedVariantInfo={dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"generatedVariantInfo",variablesOptional:!0}),Me.link||(Hr.replacementSources={dependencyType:"stateVariable",variableName:"replacementSources"}),Hr},definition(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae.needsReplacementsUpdatedWhenStale={stateVariablesDeterminingDependencies:["extendedComponent","replacementSourceIdentities","effectivePropNameBySource","unresolvedPath","link","removeEmptyArrayEntries"],returnDependencies:function({stateValues:Me,componentInfoObjects:Or}){if(!Me.link)return{};let Hr={extendedComponent:{dependencyType:"stateVariable",variableName:"extendedComponent"},targetInactive:{dependencyType:"stateVariable",variableName:"targetInactive"},replacementSourceIdentities:{dependencyType:"stateVariable",variableName:"replacementSourceIdentities"}};if(Me.effectivePropNameBySource!==null){for(let[Li,ts]of Me.effectivePropNameBySource.entries())if(ts){let rs=Me.replacementSourceIdentities[Li];Hr["sourceArraySize"+Li]={dependencyType:"stateVariableArraySize",componentIdx:rs.componentIdx,variableName:ts,variablesOptional:!0,caseInsensitiveVariableMatch:!0},Hr["sourceComponentType"+Li]={dependencyType:"stateVariableComponentType",componentIdx:rs.componentIdx,variableName:ts,variablesOptional:!0,caseInsensitiveVariableMatch:!0}}}return Me.extendedComponent!==null&&Or.isCompositeComponent({componentType:Me.extendedComponent.componentType,includeNonStandard:!1})&&(Hr.allReplacementIdentities={dependencyType:"replacement",compositeIdx:Me.extendedComponent.componentIdx,recursive:!0,variableNames:["isInactiveCompositeReplacement"]}),Me.removeEmptyArrayEntries&&(Hr.replacementSources={dependencyType:"stateVariable",variableName:"replacementSources"}),Hr},markStale(){return{updateReplacements:!0}},definition:()=>({setValue:{needsReplacementsUpdatedWhenStale:!0}})},ae}static async createSerializedReplacements({component:ae,components:Me,nComponents:Or,workspace:Hr,allDoenetMLs:Li,componentInfoObjects:ts,resolveItem:rs,publicCaseInsensitiveAliasSubstitutions:ns}){Hr.replacementsCreated===void 0&&(Hr.replacementsCreated=0);let is=[];await ae.stateValues.numComponentsSpecified,Hr.numReplacementsBySource=[],Hr.numNonStringReplacementsBySource=[],Hr.propVariablesCopiedBySource=[],Hr.sourceIndices=[];let as=this.createAttributesObject(),os=await ae.stateValues.replacementSourceIdentities;if(!await ae.stateValues.extendedComponent||!os){let ys=[];const gs={prefix:`${ae.stateId}|`,num:Hr.replacementsCreated};if(ae.attributes.copyInChildren?.primitive.value){let bs=ts.componentTypeLowerCaseMapping[ae.attributes.createComponentOfType.primitive.value.toLowerCase()],vs=ts.allComponentClasses[bs];const Cs=convertUnresolvedAttributesForComponentType({attributes:ae.attributes,componentType:bs,componentInfoObjects:ts,compositeAttributesObj:as,nComponents:Or,stateIdInfo:gs}),Ts=Cs.attributes;Or=Cs.nComponents;let As=deepClone(ae.serializedChildren);vs.includeBlankStringChildren||(As=As.filter(ws=>typeof ws!="string"||ws.trim()!==""));let Ns=Ts;ys=[{type:"serialized",componentType:bs,componentIdx:Or++,stateId:`${gs.prefix}${gs.num++}`,attributes:Ns,doenetAttributes:{},state:{},children:As}],Hr.numReplacementsBySource.push(ys.length),Hr.numNonStringReplacementsBySource.push(ys.filter(ws=>typeof ws!="string").length)}let xs=await verifyReplacementsMatchSpecifiedType({component:ae,replacements:ys,workspace:Hr,componentInfoObjects:ts,compositeAttributesObj:as,components:Me,nComponents:Or,stateIdInfo:gs,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...xs.diagnostics),Or=xs.nComponents,addAttributesToSingleReplacement(xs.replacements,ae),Hr.replacementsCreated=gs.num,{replacements:xs.replacements,diagnostics:is,nComponents:Or}}let ss=await rs({componentIdx:ae.componentIdx,type:"determineDependencies",stateVariable:"replacementSources",dependency:"__determine_dependencies",expandComposites:!1});if(!ss.success)throw Error(`Couldn't resolve determineDependencies of replacementSources of ${ae.componentIdx}`);let ls=await ae.stateValues.effectivePropNameBySource;for(let ys in os)if(ls[ys]&&(ss=await rs({componentIdx:ae.componentIdx,type:"recalculateDownstreamComponents",stateVariable:"replacementSources",dependency:"target"+ys,expandComposites:!1}),!ss.success))throw Error(`Couldn't resolve recalculateDownstreamComponents for target${ys} of replacementSources of ${ae.componentIdx}`);let us=[];const cs={prefix:`${ae.stateId}|`,num:Hr.replacementsCreated};let ds=[],ps=[],ms=0,fs=0;for(let ys in os){let gs;if(ae.attributes.createComponentOfType?.primitive){let vs=await ae.stateValues.numComponentsSpecified,Cs=os.length;gs=Math.floor(vs/Cs);let Ts=vs%Cs;ys<Ts&&gs++}let xs=await this.createReplacementForSource({component:ae,sourceNum:ys,components:Me,nComponents:Or,stateIdInfo:cs,allDoenetMLs:Li,numReplacementsSoFar:ms,numNonStringReplacementsSoFar:fs,compositeAttributesObj:as,componentInfoObjects:ts,numComponentsForSource:gs,publicCaseInsensitiveAliasSubstitutions:ns,copyInChildren:Number(ys)===0&&ae.attributes.copyInChildren?.primitive.value});is.push(...xs.diagnostics),Or=xs.nComponents,Hr.propVariablesCopiedBySource[ys]=xs.propVariablesCopiedByReplacement;let bs=xs.serializedReplacements;ds[ys]=bs.length,ps[ys]=bs.filter(vs=>typeof vs!="string").length,ms+=ds[ys],fs+=ps[ys],us.push(...bs)}Hr.numReplacementsBySource=ds,Hr.numNonStringReplacementsBySource=ps,Hr.sourceIndices=os.map(ys=>ys.componentIdx);let hs=await verifyReplacementsMatchSpecifiedType({component:ae,replacements:us,workspace:Hr,componentInfoObjects:ts,compositeAttributesObj:as,components:Me,nComponents:Or,stateIdInfo:cs,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...hs.diagnostics),Or=hs.nComponents,us=hs.replacements,addAttributesToSingleReplacement(us,ae),Hr.replacementsCreated=cs.num,{replacements:us,diagnostics:is,nComponents:Or}}static async createReplacementForSource({component:ae,sourceNum:Me,components:Or,nComponents:Hr,stateIdInfo:Li,allDoenetMLs:ts,numReplacementsSoFar:rs,numNonStringReplacementsSoFar:ns,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss,copyInChildren:ls}){let us=[],cs=(await ae.stateValues.replacementSourceIdentities)[Me];if(typeof cs!="object")return ae.stateValues.effectivePropNameBySource[Me]?{serializedReplacements:[],diagnostics:us,nComponents:Hr}:{serializedReplacements:[cs],diagnostics:us,nComponents:Hr};const ds=Or[cs.componentIdx];if(await ds.stateValues.isInactiveCompositeReplacement)return{serializedReplacements:[],diagnostics:us,nComponents:Hr};let ps=(await ae.stateValues.effectivePropNameBySource)[Me],ms=await ae.stateValues.link;if(!ms||ps&&await ae.stateValues.removeEmptyArrayEntries){const hs=(await ae.stateValues.replacementSources)[Me];hs&&(cs=hs)}if(ps){let hs=await replacementFromProp({component:ae,components:Or,nComponents:Hr,stateIdInfo:Li,replacementSource:cs,propName:ps,allDoenetMLs:ts,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss});us.push(...hs.diagnostics),Hr=hs.nComponents;let ys=hs.serializedReplacements,gs=hs.propVariablesCopiedByReplacement;if(ls&&ae.serializedChildren.length>0)if(ys.length===0){let xs=as.componentTypeLowerCaseMapping[ae.attributes.createComponentOfType.primitive.value.toLowerCase()],bs=as.allComponentClasses[xs];const vs=convertUnresolvedAttributesForComponentType({attributes:ae.attributes,componentType:xs,componentInfoObjects:as,compositeAttributesObj:is,nComponents:Hr,stateIdInfo:Li}),Cs=vs.attributes;Hr=vs.nComponents;let Ts=deepClone(ae.serializedChildren);bs.includeBlankStringChildren||(Ts=Ts.filter(Ns=>typeof Ns!="string"||Ns.trim()!==""));let As=Cs;ys=[{type:"serialized",componentType:xs,componentIdx:Hr++,stateId:`${Li.prefix}${Li.num++}`,attributes:As,doenetAttributes:{},state:{},children:Ts}],gs=[[]]}else ys.length===1&&addChildrenFromComposite({replacements:ys,children:ae.serializedChildren,componentInfoObjects:as});return{serializedReplacements:ys,propVariablesCopiedByReplacement:gs,diagnostics:us,nComponents:Hr}}let fs;try{fs=[await ds.serialize({copyAll:!ms,componentSourceAttributesToIgnore:["labelIsName"],copyVariants:!ms,copyPrimaryEssentialIfShadow:!ms,copyEssentialStateIfShadow:!ms,errorIfEncounterComponent:[ae.componentIdx]})];let hs=createNewComponentIndices(fs,Hr,Li);fs=hs.components,Hr=hs.nComponents}catch(hs){if(hs.message?.startsWith(SERIALIZE_ENCOUNTERED_COMPONENT_PREFIX)){const gs=getSelfReferentialFallbackPropName({componentAncestors:ae.ancestors,componentInfoObjects:as,replacementSourceComponentType:ds.componentType});if(gs)try{let xs=await replacementFromProp({component:ae,components:Or,nComponents:Hr,stateIdInfo:Li,replacementSource:ds,propName:gs,allDoenetMLs:ts,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss});return us.push(...xs.diagnostics),Hr=xs.nComponents,{serializedReplacements:xs.serializedReplacements,propVariablesCopiedByReplacement:xs.propVariablesCopiedByReplacement,diagnostics:us,nComponents:Hr}}catch{}}console.error("we're calling this circular",hs);const ys=codedDiagnostic({type:"error",code:"doenet-e0005",args:{componentType:ae.attributes.createComponentOfType?.primitive?.value??"none"}});return fs=[{type:"serialized",componentType:"_error",componentIdx:Hr++,stateId:`${Li.prefix}${Li.num++}`,state:errorComponentState(ys.message,ys),attributes:{},doenetAttributes:{},children:[]}],us.push(ys),{serializedReplacements:fs,diagnostics:us,nComponents:Hr}}!ms&&fs[0].state&&(delete fs[0].state.fixed,delete fs[0].state.fixedPreliminary,delete fs[0].attributes.fixed),fs=postProcessCopy({serializedComponents:fs,componentIdx:ae.componentIdx,addShadowDependencies:ms,unlinkExternalCopies:!1});for(let hs of fs){if(typeof hs!="object")continue;hs.attributes||(hs.attributes={});const ys=convertUnresolvedAttributesForComponentType({attributes:ae.attributes,componentType:hs.componentType,componentInfoObjects:as,compositeAttributesObj:is,dontSkipAttributes:["asList"],nComponents:Hr,stateIdInfo:Li}),gs=ys.attributes;Hr=ys.nComponents,(gs.displayDigits||gs.displayDecimals)&&(delete hs.attributes.displayDigits,delete hs.attributes.displayDecimals),Object.assign(hs.attributes,gs)}return ls&&fs.length===1&&ae.serializedChildren.length>0&&addChildrenFromComposite({replacements:fs,children:ae.serializedChildren,componentInfoObjects:as}),{serializedReplacements:fs,diagnostics:us,nComponents:Hr}}static async calculateReplacementChanges({component:ae,nComponents:Me,componentChanges:Or,components:Hr,workspace:Li,componentInfoObjects:ts,resolveItem:rs,publicCaseInsensitiveAliasSubstitutions:ns}){let is=[];if(await ae.stateValues.link===!1)return{replacementChanges:[],diagnostics:is,nComponents:Me};let as=this.createAttributesObject(),os=await ae.stateValues.replacementSourceIdentities;if(!await ae.stateValues.extendedComponent||!os){let vs=[];const Cs={prefix:`${ae.stateId}|`,num:Li.replacementsCreated};if(ae.replacements.length>0){let Ns={changeType:"delete",changeTopLevelReplacements:!0,firstReplacementInd:0,numberReplacementsToDelete:ae.replacements.length};vs.push(Ns)}let Ts=Li.sourceIndices.length===0;Li.sourceIndices=[],Li.numReplacementsBySource=[],Li.numNonStringReplacementsBySource=[],Li.propVariablesCopiedBySource=[];let As=await verifyReplacementsMatchSpecifiedType({component:ae,replacementChanges:vs,workspace:Li,componentInfoObjects:ts,compositeAttributesObj:as,components:Hr,nComponents:Me,stateIdInfo:Cs,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...As.diagnostics),Me=As.nComponents,Ts?{replacementChanges:[],diagnostics:is,nComponents:Me}:(addAttributesToSingleReplacementChange(ae,As.replacementChanges),Li.replacementsCreated=Cs.num,{replacementChanges:As.replacementChanges,diagnostics:is,nComponents:Me})}if(await ae.stateValues.targetInactive){let vs=[];const Cs={prefix:`${ae.stateId}|`,num:Li.replacementsCreated};let Ts=ae.replacements.length;if(Ts>0){if(ae.replacementsToWithhold!==Ts){let Ns={changeType:"changeReplacementsToWithhold",replacementsToWithhold:Ts};vs.push(Ns)}let As=await verifyReplacementsMatchSpecifiedType({component:ae,replacementChanges:vs,workspace:Li,componentInfoObjects:ts,compositeAttributesObj:as,components:Hr,nComponents:Me,stateIdInfo:Cs,publicCaseInsensitiveAliasSubstitutions:ns});is.push(...As.diagnostics),Me=As.nComponents,vs=As.replacementChanges}return addAttributesToSingleReplacementChange(ae,vs),Li.replacementsCreated=Cs.num,{replacementChanges:vs,diagnostics:is,nComponents:Me}}let ss=await rs({componentIdx:ae.componentIdx,type:"determineDependencies",stateVariable:"replacementSources",dependency:"__determine_dependencies",expandComposites:!1});if(!ss.success)throw Error(`Couldn't resolve determineDependencies of replacementSources of ${ae.componentIdx}`);let ls=await ae.stateValues.effectivePropNameBySource;for(let vs in os)if(ls[vs]&&(ss=await rs({componentIdx:ae.componentIdx,type:"recalculateDownstreamComponents",stateVariable:"replacementSources",dependency:"target"+vs,expandComposites:!1}),!ss.success))throw Error(`Couldn't resolve recalculateDownstreamComponents for target${vs} of replacementSources of ${ae.componentIdx}`);let us=[];const cs={prefix:`${ae.stateId}|`,num:Li.replacementsCreated};if(ae.replacementsToWithhold>0){let vs={changeType:"changeReplacementsToWithhold",replacementsToWithhold:0};us.push(vs)}let ds=0,ps=0,ms=[],fs=[],hs=[],ys=Math.max(os.length,Li.numReplacementsBySource.length),gs=!1;for(let vs=0;vs<ys;vs++){let Cs;if(ae.attributes.createComponentOfType?.primitive){let Os=await ae.stateValues.numComponentsSpecified,$s=os.length;Cs=Math.floor(Os/$s);let qs=Os%$s;vs<qs&&Cs++}let Ts=os[vs];if(!gs&&await Hr[Ts?.componentIdx]?.stateValues.isInactiveCompositeReplacement){let Os=!0;for(let $s=vs+1;$s<ys;$s++){const qs=os[$s];if(!await Hr[qs?.componentIdx]?.stateValues.isInactiveCompositeReplacement){Os=!1;break}}if(Os){let $s=Li.numReplacementsBySource.slice(vs).reduce((qs,Rs)=>qs+Rs,0);if($s>0){let qs={changeType:"changeReplacementsToWithhold",replacementsToWithhold:$s};us.push(qs)}for(let qs=vs;qs<ys;qs++)ms[qs]=Li.numReplacementsBySource[qs],fs[qs]=Li.numNonStringReplacementsBySource[qs],hs[qs]=Li.propVariablesCopiedBySource[qs];break}else Ts=void 0}if(Ts===void 0){if(Li.numReplacementsBySource[vs]>0&&!gs){let Os=Li.numReplacementsBySource.slice(vs).reduce(($s,qs)=>$s+qs,0);if(Os>0){let $s={changeType:"delete",changeTopLevelReplacements:!0,firstReplacementInd:ds,numberReplacementsToDelete:Os};us.push($s)}gs=!0,Li.numReplacementsBySource.slice(vs).forEach(($s,qs)=>Li.numReplacementsBySource[qs]=0),Li.numNonStringReplacementsBySource.slice(vs).forEach(($s,qs)=>Li.numNonStringReplacementsBySource[qs]=0)}ms[vs]=0,fs[vs]=0,hs.push([]);continue}let As=Li.sourceIndices[vs],Ns=As===void 0||Ts.componentIdx!==As||gs;if(!Ns)for(let Os=0;Os<Li.numReplacementsBySource[vs];Os++){let $s=ae.replacements[ds+Os];if($s){if(!ls[vs]&&$s.shadows?.componentIdx!==os[vs].componentIdx){Ns=!0;break}}else{Ns=!0;break}}if(Ns){let Os=0;vs in Li.numReplacementsBySource&&(Os=Li.numReplacementsBySource[vs]);let $s=Os;gs&&($s=0);let qs=await this.recreateReplacements({component:ae,sourceNum:vs,numReplacementsSoFar:ds,numNonStringReplacementsSoFar:ps,numReplacementsToDelete:$s,components:Hr,nComponents:Me,stateIdInfo:cs,compositeAttributesObj:as,componentInfoObjects:ts,numComponentsForSource:Cs,publicCaseInsensitiveAliasSubstitutions:ns});is.push(...qs.diagnostics),Me=qs.nComponents,ds+=qs.numReplacements,ps+=qs.numNonStringReplacements,ms[vs]=qs.numReplacements,fs[vs]=qs.numNonStringReplacements,hs[vs]=qs.propVariablesCopiedByReplacement;let Rs=qs.replacementInstruction;if(!gs&&qs.numReplacements!==Os){let zs=Li.numReplacementsBySource.slice(vs).reduce((Ws,Ms)=>Ws+Ms,0);Rs.numberReplacementsToReplace=zs,gs=!0,Li.numReplacementsBySource.slice(vs).forEach((Ws,Ms)=>Li.numReplacementsBySource[Ms]=0),Li.numNonStringReplacementsBySource.slice(vs).forEach((Ws,Ms)=>Li.numNonStringReplacementsBySource[Ms]=0)}Rs&&us.push(Rs);continue}if(!ls[vs]&&Li.numReplacementsBySource[vs]>0){ds+=Li.numReplacementsBySource[vs],ps+=Li.numNonStringReplacementsBySource[vs],ms[vs]=Li.numReplacementsBySource[vs],fs[vs]=Li.numNonStringReplacementsBySource[vs];continue}const ws={prefix:`${ae.stateId}|`,num:cs.num};let Es=await this.createReplacementForSource({component:ae,sourceNum:vs,components:Hr,nComponents:Me,stateIdInfo:ws,numReplacementsSoFar:ds,numNonStringReplacementsSoFar:ps,compositeAttributesObj:as,componentInfoObjects:ts,numComponentsForSource:Cs,publicCaseInsensitiveAliasSubstitutions:ns,copyInChildren:Number(vs)===0&&ae.attributes.copyInChildren?.primitive.value});is.push(...Es.diagnostics);const Ss=Es.nComponents;let Ds=Es.propVariablesCopiedByReplacement,Is=Es.serializedReplacements,Vs=Is.length,ks=Li.numReplacementsBySource[vs];if(Vs!==ks){let Os=Li.numReplacementsBySource.slice(vs).reduce((qs,Rs)=>qs+Rs,0),$s={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:ds,numberReplacementsToReplace:Os,serializedReplacements:Is};us.push($s),gs=!0,Me=Ss,cs.num=ws.num,Li.numReplacementsBySource.slice(vs).forEach((qs,Rs)=>Li.numReplacementsBySource[Rs]=0),Li.numNonStringReplacementsBySource.slice(vs).forEach((qs,Rs)=>Li.numNonStringReplacementsBySource[Rs]=0)}else for(let Os=0;Os<Vs;Os++){let $s=Ds[Os].length!==Li.propVariablesCopiedBySource[vs][Os].length,qs=!$s;if($s||(Li.propVariablesCopiedBySource[vs][Os].some((Rs,zs)=>Rs!==Ds[Os][zs])?(qs=!1,$s=!0):ae.replacements[ds+Os].componentType!==Is[Os].componentType&&($s=!0)),Os==0&&$s&&qs&&await ae.stateValues.numComponentsSpecified===1&&Vs===1&&!(ae.replacementsToWithhold>0)&&Li.sourceIndices.length===1&&($s=!1),$s){Me=Ss,cs.num=ws.num;let Rs={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:ds+Os,numberReplacementsToReplace:1,serializedReplacements:[Is[Os]]};us.push(Rs)}Is[Os]}let Gs=Is.filter(Os=>typeof Os!="string").length;ds+=Vs,ps+=Gs,ms[vs]=Vs,fs[vs]=Gs,hs[vs]=Ds}let xs=Li.sourceIndices.length===0;Li.numReplacementsBySource=ms,Li.numNonStringReplacementsBySource=fs,Li.sourceIndices=os.map(vs=>vs.componentIdx),Li.propVariablesCopiedBySource=hs;let bs=await verifyReplacementsMatchSpecifiedType({component:ae,replacementChanges:us,workspace:Li,componentInfoObjects:ts,compositeAttributesObj:as,components:Hr,nComponents:Me,stateIdInfo:cs,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...bs.diagnostics),Me=bs.nComponents,us=bs.replacementChanges,xs&&Li.sourceIndices.length===0?{replacementChanges:[],diagnostics:is,nComponents:Me}:(addAttributesToSingleReplacementChange(ae,us),Li.replacementsCreated=cs.num,{replacementChanges:us,diagnostics:is,nComponents:Me})}static async recreateReplacements({component:ae,sourceNum:Me,numReplacementsSoFar:Or,numNonStringReplacementsSoFar:Hr,numReplacementsToDelete:Li,components:ts,nComponents:rs,stateIdInfo:ns,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss}){let ls=[],us=await this.createReplacementForSource({component:ae,sourceNum:Me,numReplacementsSoFar:Or,numNonStringReplacementsSoFar:Hr,components:ts,nComponents:rs,stateIdInfo:ns,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss,copyInChildren:Number(Me)===0&&ae.attributes.copyInChildren?.primitive.value});ls.push(...us.diagnostics),rs=us.nComponents;let cs=us.propVariablesCopiedByReplacement,ds=us.serializedReplacements;if(ds.length>0||Li>0){let ps={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:Or,numberReplacementsToReplace:Li,serializedReplacements:ds};return{numReplacements:ds.length,numNonStringReplacements:ds.filter(ms=>typeof ms!="string").length,propVariablesCopiedByReplacement:cs,replacementInstruction:ps,diagnostics:ls,nComponents:rs}}else return{numReplacements:0,numNonStringReplacements:0,propVariablesCopiedByReplacement:cs,replacementInstruction:null,diagnostics:ls,nComponents:rs}}}async function replacementFromProp({component:Br,components:ae,nComponents:Me,stateIdInfo:Or,replacementSource:Hr,propName:Li,allDoenetMLs:ts,compositeAttributesObj:rs,componentInfoObjects:ns,numComponentsForSource:is,publicCaseInsensitiveAliasSubstitutions:as}){let os=[],ss=[],ls=[],us=-1,cs,ds;if(Hr&&(cs=ae[Hr.componentIdx],ds=as({stateVariables:[Li],componentClass:cs.constructor})[0]),ds===void 0||ds.slice(0,12)==="__not_public"){if(Li==="__no_target_found"){const hs=await Br.stateValues.unresolvedPath,ys=hs[0].position?.start.offset,gs=hs[hs.length-1].position?.end.offset;let xs="";if(ys!=null&&gs!=null){const bs=hs[0].sourceDoc??0;xs=ts?.[bs]?.substring(ys,gs)}os.push(codedDiagnostic({type:"info",code:"doenet-i0018",args:{property:xs,component:Hr.componentType}}))}else Li!=="__prop_name_not_found"&&os.push(codedDiagnostic({type:"info",code:"doenet-i0018",args:{property:Li,component:Hr.componentType}}));return{serializedReplacements:[],propVariablesCopiedByReplacement:[],diagnostics:os,nComponents:Me}}let ps=cs.state[ds],ms=await ps.value,fs=await Br.stateValues.link;if(ps.isArray||ps.isArrayEntry){let hs,ys,gs,xs;if(ps.isArray?(hs=ps,gs=await ps.arraySize,ys=ps.getAllArrayKeys(gs,!1)):(hs=cs.state[ps.arrayStateVariable],ys=await ps.unflattenedArrayKeys,xs=await ps.arrayKeys),hs.shadowingInstructions?.hasVariableComponentType&&(await Br.stateValues.replacementSources,!hs.shadowingInstructions.createComponentOfType))return{serializedReplacements:[],propVariablesCopiedByReplacement:[],diagnostics:os,nComponents:Me};let bs=ps.wrappingComponents,vs=bs.length,Cs=is;if(ps.isArray)gs.some(Ts=>Ts===0)?Cs=0:Cs=gs.slice(0,gs.length-vs).reduce((Ts,As)=>Ts*As,1);else if(xs.length===0)Cs=0;else if(vs===0)Cs=xs.length;else if(vs>=ps.numDimensions)Cs=1;else if(vs===ps.numDimensions-1)Cs=ys.length;else{let Ts=ps.numDimensions-vs-1;Cs=flattenLevels(ys,Ts).length}if(vs===0){let Ts=flattenDeep(ys);for(let As=0;As<Cs;As++){let Ns=Ts[As];if(await Br.stateValues.removeEmptyArrayEntries){if(!Ns)continue;let Ss=hs.keyToIndex(Ns);Array.isArray(Ss)||(Ss=[Ss]);let Ds=await hs.value;for(let Is of Ss)Ds=Ds[Is];if(Ds==null)continue}us++;let ws=ls[us]=[],Es=hs.shadowingInstructions.createComponentOfType;if(Array.isArray(Es)&&(Es[hs.keyToIndex(Ns)]?Es=Es[hs.keyToIndex(Ns)]:Es=Es[0]),Ns){let Ss=hs.arrayVarNameFromArrayKey(Ns);ws.push(Ss);const Ds=convertUnresolvedAttributesForComponentType({attributes:Br.attributes,componentType:Es,componentInfoObjects:ns,compositeAttributesObj:rs,nComponents:Me,stateIdInfo:Or}),Is=Ds.attributes;Me=Ds.nComponents;let Vs;if(hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){Vs={};for(let Gs in hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let Os=hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables[Gs].stateVariableToShadow,$s=cs.state[Os];$s.isArray&&(Os=$s.arrayVarNameFromArrayKey(Ns)),Vs[Gs]={stateVariableToShadow:Os}}}let ks;if(hs.shadowingInstructions.addStateVariablesShadowingStateVariables){ks={};for(let Gs in hs.shadowingInstructions.addStateVariablesShadowingStateVariables){let Os=hs.shadowingInstructions.addStateVariablesShadowingStateVariables[Gs].stateVariableToShadow,$s=cs.state[Os];$s.isArray&&(Os=$s.arrayVarNameFromArrayKey(Ns)),ks[Gs]={stateVariableToShadow:Os}}}if(fs){let Gs={};if(Vs){let $s=ns.allComponentClasses[Es].createAttributesObject();for(let qs in Vs){let Rs=Vs[qs].stateVariableToShadow,zs=$s[qs]?.createComponentOfType;if(zs){let Ws={type:"serialized",componentType:zs,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:Rs}]}};Gs[qs]={component:Ws}}}}Object.assign(Gs,Is),ss.push({type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:Gs,doenetAttributes:{},children:[],state:{},downstreamDependencies:{[Hr.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:Ss,additionalStateVariableShadowing:ks}]}})}else{let Gs={};if(Vs){let Ms=ns.allComponentClasses[Es].createAttributesObject(),Fs={};for(let Xs in Vs)if(Ms[Xs]?.createComponentOfType){let Qs=Vs[Xs].stateVariableToShadow,Zs=cs.state[Qs],dl=await Zs.value;Zs.isArray&&(dl=dl[Zs.keyToIndex[Ns]]),cs.state[Qs].usedDefault||(Fs[Xs]=dl)}const Us=convertAttributeValuesForComponentType({attributeValues:Fs,componentType:Es,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or}),js=Us.attributes;if(Me=Us.nComponents,ps.shadowingInstructions.attributesToShadow)for(let Xs of ps.shadowingInstructions.attributesToShadow)if(cs.attributes[Xs]?.component){const Qs=await cs.attributes[Xs].component.serialize({copyAll:!0,copyVariants:!0});let Zs=createNewComponentIndices([Qs],Me,Or);Me=Zs.nComponents,js[Xs]={component:Zs.components[0]}}else cs.attributes[Xs]?.primitive!==void 0&&(js[Xs]={primitive:JSON.parse(JSON.stringify(cs.attributes[Xs].primitive))});Object.assign(Gs,js)}Object.assign(Gs,Is);let Os="value",$s=ns.allComponentClasses[Es];$s.primaryEssentialStateVariable?Os=$s.primaryEssentialStateVariable:$s.primaryStateVariableForDefinition&&(Os=$s.primaryStateVariableForDefinition);let qs=hs.keyToIndex(Ns);Array.isArray(qs)||(qs=[qs]);let Rs=await hs.value;for(let Ws of qs)Rs=Rs[Ws];let zs={type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:Gs,doenetAttributes:{},state:{[Os]:Rs},children:[]};ss.push(zs)}}else ss.push({type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},children:[],state:{}})}}else{let Ts=async function(ws,Es,Ss=!1){let Ds=[],Is=[];if(Es>1)for(let ks of ws){let Gs=await Ts(ks,Es-1);Ds.push(...Gs.pieces),Is.push(...Gs.propVariablesCopiedByPiece)}else for(let ks of ws){let Gs=hs.arrayVarNameFromArrayKey(ks),Os=[Gs],$s=hs.shadowingInstructions.createComponentOfType;Array.isArray($s)&&($s=$s[hs.keyToIndex(ks)]);let qs;if(hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){qs={};let zs=hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables;for(let Ws in zs)if(!zs[Ws].addToOuterIfWrappedArray){let Ms=zs[Ws].stateVariableToShadow,Fs=cs.state[Ms];Fs.isArray&&(Ms=Fs.arrayVarNameFromArrayKey(ks)),qs[Ws]={stateVariableToShadow:Ms}}}let Rs;if(hs.shadowingInstructions.addStateVariablesShadowingStateVariables){Rs={};for(let zs in hs.shadowingInstructions.addStateVariablesShadowingStateVariables){let Ws=hs.shadowingInstructions.addStateVariablesShadowingStateVariables[zs].stateVariableToShadow,Ms=cs.state[Ws];Ms.isArray&&(Ws=Ms.arrayVarNameFromArrayKey(ks)),Rs[zs]={stateVariableToShadow:Ws}}}if(fs){let zs={};if(qs){let Ms=ns.allComponentClasses[$s].createAttributesObject();for(let Fs in qs){let Us=qs[Fs].stateVariableToShadow,js=Ms[Fs]?.createComponentOfType;if(js){let Xs={type:"serialized",componentType:js,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:Us}]}};zs[Fs]={component:Xs}}}}Ds.push({type:"serialized",componentType:$s,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:zs,doenetAttributes:{},children:[],state:{},downstreamDependencies:{[Hr.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:Gs,additionalStateVariableShadowing:Rs}]}})}else{let zs={};if(qs){let Qs=ns.allComponentClasses[$s].createAttributesObject(),Zs={};for(let nl in qs)if(Qs[nl]?.createComponentOfType){let yl=qs[nl].stateVariableToShadow,ml=cs.state[yl],Ps=await ml.value;ml.isArray&&(Ps=Ps[ml.keyToIndex[ks]]),cs.state[yl].usedDefault||(Zs[nl]=Ps)}const dl=convertAttributeValuesForComponentType({attributeValues:Zs,componentType:$s,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or}),ll=dl.attributes;if(Me=dl.nComponents,ps.shadowingInstructions.attributesToShadow)for(let nl of ps.shadowingInstructions.attributesToShadow)if(cs.attributes[nl]?.component){let yl=await cs.attributes[nl].component.serialize({copyAll:!0,copyVariants:!0}),ml=createNewComponentIndices([yl],Me,Or);Me=ml.nComponents,ll[nl]={component:ml.components[0]}}else cs.attributes[nl]?.primitive!==void 0&&(ll[nl]={primitive:JSON.parse(JSON.stringify(cs.attributes[nl].primitive))});Object.assign(zs,ll)}let Ws="value",Ms=ns.allComponentClasses[$s];Ms.primaryEssentialStateVariable?Ws=Ms.primaryEssentialStateVariable:Ms.primaryStateVariableForDefinition&&(Ws=Ms.primaryStateVariableForDefinition);let Fs=hs.keyToIndex(ks);Array.isArray(Fs)||(Fs=[Fs]);let Us=await hs.value;for(let Xs of Fs)Us=Us[Xs];let js={type:"serialized",componentType:$s,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:zs,doenetAttributes:{},children:[],state:{[Ws]:Us}};Ds.push(js)}Is.push(Os)}let Vs=bs[Es-1];if(Ds.length>0&&Vs&&Vs.length>0){for(let ks=Vs.length-1;ks>=0;ks--){let Gs=typeof Vs[ks]=="object"?Vs[ks].componentType:Vs[ks],Os=[],$s={};for(let qs of Ds)if(qs.isAttributeNamed){let Rs=qs.isAttributeNamed;delete qs.isAttributeNamed,$s[Rs]={component:qs}}else Os.push(qs);Ds=[{type:"serialized",componentType:Gs,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,children:Os,attributes:$s,doenetAttributes:{},state:{},skipSugar:!0}],typeof Vs[ks]=="object"&&Vs[ks].isAttributeNamed&&(Ds[0].isAttributeNamed=Vs[ks].isAttributeNamed)}Is=[flattenDeep(Is)]}if(Ss&&hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let ks={},Gs=hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables;for(let Os in Gs)if(Gs[Os].addToOuterIfWrappedArray){let $s=Gs[Os].stateVariableToShadow;ks[Os]={stateVariableToShadow:$s}}if(Object.keys(ks).length>0)for(let Os of Ds){let $s=Os.attributes;$s||($s=Os.attributes={});let Rs=ns.allComponentClasses[Os.componentType].createAttributesObject();if(fs)for(let zs in ks){let Ws=ks[zs].stateVariableToShadow,Ms=Rs[zs]?.createComponentOfType;if(Ms){let Fs={type:"serialized",componentType:Ms,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:Ws}]}};$s[zs]={component:Fs}}}else{let zs={};for(let Ws in ks)if(Rs[Ws]?.createComponentOfType){let Ms=ks[Ws].stateVariableToShadow,Us=await cs.state[Ms].value;cs.state[Ms].usedDefault||(zs[Ws]=Us)}if(Object.keys(zs).length>0){const Ws=convertAttributeValuesForComponentType({attributeValues:zs,componentType:Os.componentType,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or});zs=Ws.attributes,Me=Ws.nComponents,Object.assign($s,zs)}}}}return{pieces:Ds,propVariablesCopiedByPiece:Is}},As=await Ts(ys,ps.numDimensions,!0),Ns=As.pieces;ls=As.propVariablesCopiedByPiece;for(let ws of Ns){if(typeof ws!="object")continue;ws.attributes||(ws.attributes={});const Es=convertUnresolvedAttributesForComponentType({attributes:Br.attributes,componentType:ws.componentType,componentInfoObjects:ns,compositeAttributesObj:rs,nComponents:Me,stateIdInfo:Or}),Ss=Es.attributes;Me=Es.nComponents,Object.assign(ws.attributes,Ss),fs&&(ws.downstreamDependencies={[Hr.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:ds,ignorePrimaryStateVariable:!0}]})}if(us+=Ns.length,ss.push(...Ns),Ns.length<Cs)for(let ws=Ns.length;ws<Cs;ws++){us++,ls[us]=[];let Es,Ss=bs[0],Ds;Ss&&Ss.length>0?typeof Ss[0]=="object"?(Es=Ss[0].componentType,Ds=Object.assign({},Ss[0].doenetAttributes)):Es=Ss[0]:(Es=hs.shadowingInstructions.createComponentOfType,Array.isArray(Es)&&(ps.isArrayEntry?Es=Es[hs.keyToIndex(xs[ws])]:Es=Es[ws]));let Is={type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[]};Ds&&(Is.doenetAttributes=Ds),ss.push(Is)}else if(Ns>Cs)throw Error(`Something went wrong when creating replacements for ${Br.componentIdx} as we ended up with too many replacements`)}}else{if(ps.shadowingInstructions?.hasVariableComponentType&&await ps.value,!ps.shadowingInstructions?.createComponentOfType)return{serializedReplacements:[],propVariablesCopiedByReplacement:[],diagnostics:os,nComponents:Me};if(us++,(ls[us]=[]).push(ds),ps.shadowingInstructions.createComponentOfType==="string")ss.push(await ps.value);else{const ys=convertUnresolvedAttributesForComponentType({attributes:Br.attributes,componentType:ps.shadowingInstructions.createComponentOfType,componentInfoObjects:ns,compositeAttributesObj:rs,nComponents:Me,stateIdInfo:Or}),gs=ys.attributes;if(Me=ys.nComponents,fs){let xs={};if(ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let vs=ns.allComponentClasses[ps.shadowingInstructions.createComponentOfType].createAttributesObject();for(let Cs in ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let Ts=ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables[Cs].stateVariableToShadow,As=vs[Cs]?.createComponentOfType;if(As){let Ns={type:"serialized",componentType:As,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:Ts}]}};xs[Cs]={component:Ns}}}}Object.assign(xs,gs),ss.push({type:"serialized",componentType:ps.shadowingInstructions.createComponentOfType,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:xs,doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:ds,additionalStateVariableShadowing:ps.shadowingInstructions.addStateVariablesShadowingStateVariables}]}})}else{let xs={};if(ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let As=ns.allComponentClasses[ps.shadowingInstructions.createComponentOfType].createAttributesObject(),Ns={};for(let Ss in ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables)if(As[Ss]?.createComponentOfType&&Ss!=="fixed"){let Ds=ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables[Ss].stateVariableToShadow,Is=await cs.state[Ds].value;cs.state[Ds].usedDefault||(Ns[Ss]={type:"unresolved",name:Ss,children:[Is.toString()]})}const ws=convertUnresolvedAttributesForComponentType({attributes:Ns,componentType:ps.shadowingInstructions.createComponentOfType,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or}),Es=ws.attributes;if(Me=ws.nComponents,ps.shadowingInstructions.attributesToShadow)for(let Ss of ps.shadowingInstructions.attributesToShadow)if(cs.attributes[Ss]?.component){let Ds=await cs.attributes[Ss].component.serialize({copyAll:!0,copyVariants:!0}),Is=createNewComponentIndices([Ds],Me,Or);Me=Is.nComponents,Es[Ss]={type:"component",name:Ss,component:Is.components[0]}}else cs.attributes[Ss]?.primitive!==void 0&&(Es[Ss]={type:"primitive",name:Ss,primitive:JSON.parse(JSON.stringify(cs.attributes[Ss].primitive))});Object.assign(xs,Es)}Object.assign(xs,gs);let bs="value",vs=ns.allComponentClasses[ps.shadowingInstructions.createComponentOfType];vs.primaryEssentialStateVariable?bs=vs.primaryEssentialStateVariable:vs.primaryStateVariableForDefinition&&(bs=vs.primaryStateVariableForDefinition);let Cs={type:"serialized",componentType:ps.shadowingInstructions.createComponentOfType,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:xs,doenetAttributes:{},children:[],state:{[bs]:ms}};ss.push(Cs)}}}if(await Br.stateValues.implicitProp)for(let hs of ss)hs.doenetAttributes||(hs.doenetAttributes={}),hs.doenetAttributes.fromImplicitProp=!0,hs.downstreamDependencies?.[cs.componentIdx]?.[0]&&(hs.downstreamDependencies[cs.componentIdx][0].fromImplicitProp=!0);return{serializedReplacements:ss,propVariablesCopiedByReplacement:ls,diagnostics:os,nComponents:Me}}function addChildrenFromComposite({replacements:Br,children:ae,componentInfoObjects:Me}){let Or=Br[0];Or.children||(Or.children=[]);let Hr=deepClone(ae);Me.allComponentClasses[Or.componentType].includeBlankStringChildren||(Hr=Hr.filter(ts=>typeof ts!="string"||ts.trim()!=="")),Or.children.push(...Hr)}class SegmentConstraintComponent extends BaseComponent{static componentType="_segmentConstraint";static rendererType=void 0;static inSchemaOnlyInheritAs=["_segmentConstraint"]}class VariableNameList extends MathList{static componentType="_variableNameList";static stateVariableToBeShadowed="variables";static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.variables={description:"The list of variable names.",public:!0,shadowingInstructions:{createComponentOfType:"_variableName"},isArray:!0,entryPrefixes:["var"],additionalStateVariablesDefined:["validVariables"],returnArraySizeDependencies:()=>({numComponents:{dependencyType:"stateVariable",variableName:"numComponents"}}),returnArraySize({dependencyValues:Me}){return[Me.numComponents]},returnArrayDependenciesByKey({arrayKeys:Me}){let Or={};for(let Hr of Me)Or[Hr]={math:{dependencyType:"stateVariable",variableName:"math"+(Number(Hr)+1)}};return{dependenciesByKey:Or}},arrayDefinitionByKey({dependencyValuesByKey:Me,arrayKeys:Or}){let Hr={},Li={},ts=[];for(let rs of Or){let ns=Me[rs].math,is=isValidVariable(ns);is||(ts.push(codedDiagnostic({type:"warning",code:"doenet-w0017",args:{value:ns.toString()}})),is=!1),Hr[rs]=ns,Li[rs]=is}return{setValue:{variables:Hr,validVariables:Li},sendDiagnostics:ts}}},ae}}class Variable extends MathComponent{static componentType="_variableName";static rendererType="math";static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return renameStateVariable({stateVariableDefinitions:ae,oldName:"value",newName:"valuePreValidate"}),ae.valuePreValidate.essentialVarName="value",ae.value={description:"The variable as a math expression.",public:!0,shadowingInstructions:{createComponentOfType:"_variableName"},additionalStateVariablesDefined:["validVariable"],returnDependencies:()=>({valuePreValidate:{dependencyType:"stateVariable",variableName:"valuePreValidate"}}),definition({dependencyValues:Me}){let Or=[],Hr=isValidVariable(Me.valuePreValidate);return Hr||Or.push(codedDiagnostic({type:"warning",code:"doenet-w0017",args:{value:Me.valuePreValidate.toString()}})),{setValue:{value:Me.valuePreValidate,validVariable:Hr},sendDiagnostics:Or}},inverseDefinition({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setDependency:"valuePreValidate",desiredValue:Me.value}]}}},ae}}class ListOfNumberLists extends InlineComponent{static componentType="_listOfNumberLists";static includeBlankStringChildren=!0;static removeBlankStringChildrenPostSugar=!0;static additionalSchemaChildren=["math","string"];static returnSugarInstructions(){let ae=[],Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){let ts=breakEmbeddedStringsIntoParensPieces({componentList:Or,removeParens:!0});return ts.success!==!0?{success:!1}:{success:!0,newChildren:ts.pieces.map(rs=>({type:"serialized",componentType:"numberList",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:rs,attributes:{},doenetAttributes:{},state:{}})),nComponents:Hr}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"lists",componentTypes:["numberList"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return delete ae.value,ae.numLists={returnDependencies:()=>({listChildren:{dependencyType:"child",childGroups:["lists"]}}),definition({dependencyValues:Me}){return{setValue:{numLists:Me.listChildren.length}}}},ae.lists={isArray:!0,entryPrefixes:["list"],returnArraySizeDependencies:()=>({numLists:{dependencyType:"stateVariable",variableName:"numLists"}}),returnArraySize({dependencyValues:Me}){return[Me.numLists]},returnArrayDependenciesByKey({arrayKeys:Me}){let Or={};for(let Hr of Me)Or[Hr]={listChildren:{dependencyType:"child",childGroups:["lists"],variableNames:["values"],childIndices:[Hr]}};return{dependenciesByKey:Or}},arrayDefinitionByKey({dependencyValuesByKey:Me,arrayKeys:Or}){let Hr={};for(let Li of Or)if(Me[Li].listChildren&&Me[Li].listChildren.length===1){let ts=Me[Li].listChildren[0];Hr[Li]=ts.stateValues.values}return{setValue:{lists:Hr}}}},ae}}class DirectionComponent extends BaseComponent{static componentType="_directionComponent";static rendererType=void 0;static primaryStateVariableForDefinition="directionShadow";static additionalSchemaChildren=["math","string"];static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnNumberDisplayAttributes()),ae}static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){return Or.length===0?{success:!1}:Or.length>1||typeof Or[0]=="string"?{success:!0,newChildren:[{type:"serialized",componentType:"math",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}],nComponents:Hr}:{success:!1}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){let ae=super.returnChildGroups();return ae.push({group:"directions",componentTypes:["_directionComponent"]}),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.directionShadow={defaultValue:Context.fromAst(["vector",1,0]),hasEssential:!0,essentialVarName:"direction",set:convertValueToMathExpression,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{directionShadow:!0}}),inverseDefinition:function({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setEssentialValue:"directionShadow",value:convertValueToMathExpression(Me.directionShadow)}]}}},ae.unnormalizedDirection={returnDependencies:()=>({directionChild:{dependencyType:"child",childGroups:["directions"],variableNames:["unnormalizedDirection"]},directionShadow:{dependencyType:"stateVariable",variableName:"directionShadow"}}),definition({dependencyValues:Me}){let Or;return Me.directionChild.length>0?Or=Me.directionChild[0].stateValues.unnormalizedDirection:Or=Me.directionShadow,Or=Or.tuples_to_vectors().expand().simplify(),{setValue:{unnormalizedDirection:Or}}},inverseDefinition({desiredStateVariableValues:Me,dependencyValues:Or}){let Hr;return Or.directionChild.length>0?Hr=[{setDependency:"directionChild",desiredValue:Me.unnormalizedDirection,childIndex:0,variableIndex:0}]:Hr=[{setDependency:"directionShadow",desiredValue:Me.unnormalizedDirection}],{success:!0,instructions:Hr}}},ae.numDimensions={returnDependencies:()=>({unnormalizedDirection:{dependencyType:"stateVariable",variableName:"unnormalizedDirection"}}),definition({dependencyValues:Me}){let Or=Me.unnormalizedDirection.tree,Hr;return Array.isArray(Or)&&vectorOperators.includes(Or[0])?Hr=Or.length-1:Hr=1,{setValue:{numDimensions:Hr}}}},ae.direction={description:"The normalized direction as a unit vector.",public:!0,shadowingInstructions:{createComponentOfType:"math",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing(),returnWrappingComponents(Me){return Me==="x"?[]:[["vector",{componentType:"mathList",isAttributeNamed:"xs"}]]}},isArray:!0,entryPrefixes:["x"],hasEssential:!0,essentialVarName:"direction2",set:convertValueToMathExpression,returnArraySizeDependencies:()=>({numDimensions:{dependencyType:"stateVariable",variableName:"numDimensions"}}),returnArraySize({dependencyValues:Me}){return[Me.numDimensions]},returnArrayDependenciesByKey(){return{globalDependencies:{unnormalizedDirection:{dependencyType:"stateVariable",variableName:"unnormalizedDirection"}}}},arrayDefinitionByKey:function({globalDependencyValues:Me,arraySize:Or}){let Hr={},Li=Me.unnormalizedDirection.tree;if(Array.isArray(Li)&&vectorOperators.includes(Li[0])){let ts=[],rs=Or[0],ns=0,is=!0;for(let as=0;as<rs;as++){let os=Me.unnormalizedDirection.get_component(as).evaluate_to_constant();if(Number.isFinite(os))ts.push(os),ns+=os*os;else{is=!1;break}}if(is){let as=Math.sqrt(ns);for(let os=0;os<rs;os++)Hr[os.toString()]=Context.fromAst(ts[os]/as)}else for(let as=0;as<rs;as++)Hr[as.toString()]=Context.fromAst("_")}else Hr[0]=Context.fromAst(1);return{setValue:{direction:Hr}}},inverseArrayDefinitionByKey({desiredStateVariableValues:Me,globalDependencyValues:Or,arraySize:Hr}){let Li=[];if(Hr[0]>1){let ts=0;for(let ns=0;ns<Hr[0];ns++){let is=Or.unnormalizedDirection.get_component(ns).evaluate_to_constant();ts+=is*is}Number.isFinite(ts)?ts=Math.sqrt(ts):ts=1;let rs=["vector"];for(let ns in Me.direction)rs[Number(ns)+1]=Me.direction[ns].tree*ts;rs.length=Hr[0]+1,Li.push({setDependency:"unnormalizedDirection",desiredValue:Context.fromAst(rs)})}return{success:!0,instructions:Li}}},ae}}class ErrorComponent extends BlockComponent{static componentType="_error";static renderChildren=!0;static createAttributesObject(){let ae=super.createAttributesObject();return ae.message={createComponentOfType:"text",createStateVariable:"message",defaultValue:"",public:!0,forRenderer:!0,description:"The error message describing what went wrong."},ae}static returnChildGroups(){return[{group:"errors",componentTypes:["_error"]},{group:"any",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.hidden={returnDependencies:()=>({}),definition:()=>({setValue:{hidden:!1}})},ae.code={forRenderer:!0,hasEssential:!0,defaultValue:null,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{code:!0}})},ae.args={forRenderer:!0,hasEssential:!0,defaultValue:null,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{args:!0}})},ae.rangeMessage={description:"A message describing where in the source document the error was found.",forRenderer:!0,public:!0,shadowingInstructions:{createComponentOfType:"text"},additionalStateVariablesDefined:[{variableName:"rangeArgs",forRenderer:!0}],returnDependencies:()=>({position:{dependencyType:"position"}}),definition({dependencyValues:Me}){let Or=Me.position;return Or?.start.line===void 0?{setValue:{rangeMessage:"",rangeArgs:null}}:{setValue:{rangeMessage:"Found on "+printDoenetMLrange(Or)+".",rangeArgs:{span:Or.start.line===Or.end.line?"line":"lines",startLine:String(Or.start.line),endLine:String(Or.end.line)}}}}},ae.showMessage={forRenderer:!0,returnDependencies:()=>({childErrors:{dependencyType:"child",childGroups:["errors"],variableNames:["message"]},message:{dependencyType:"stateVariable",variableName:"message"}}),definition({dependencyValues:Me}){return{setValue:{showMessage:!Me.childErrors.some(Hr=>Hr.stateValues.message===Me.message)}}}},ae}}class Comment extends BaseComponent{static componentType="_comment";static rendererType=void 0;static returnChildGroups(){return[{group:"any",componentTypes:["_base"]}]}}const componentTypeArray=[...Object.values(Aliases),...Object.values(MMeMen),...Object.values(MdMdnMrow),...Object.values(BooleanOperators),...Object.values(BooleanOperatorsOfMath),...Object.values(MathOperators),...Object.values(FunctionOperators),...Object.values(TextOperatorsOfMath),...Object.values(Extrema$1),...Object.values(ParagraphMarkup),...Object.values(SingleCharacterComponents),...Object.values(Sectioning),...Object.values(Lists),...Object.values(DynamicalSystems),...Object.values(Chemistry),...Object.values(FeedbackDefinitions$1),...Object.values(StyleDefinitions$1),...Object.values(StylePalette$1),...Object.values(SideBySide$1),...Object.values(ComponentWithSelectableType$1),...Object.values(Indexing),...Object.values(Divisions),...Object.values(Verbatim),...Object.values(Paginator$1),...Object.values(MatrixInput$1),...Object.values(FractionInput$1),...Object.values(Solution$1),Document,Text,TextList$1,TextList2,P$2,BooleanComponent,BooleanList,MathComponent,MathList,TupleList,NumberList,Copy,Collect,Ref,Point,Coords,Line,LineSegment,Ray,Polyline,Polygon,Triangle,Rectangle,RegularPolygon,Circle,Parabola,Curve,BezierControls,ControlVectors,Vector,Angle,Answer,Award,When,MathInput,Textinput,BooleanInput,Choiceinput,Choice,NumberComponent,Integer,Graph$1,Annotations,Annotation,Function$1,PiecewiseFunction,Interval,Option$1,Sequence,Slider,Spreadsheet,DiscreteSimulationResultList,DiscreteSimulationResultPolyline,Cell,Row,Column,CellBlock,Tabular,Table,Figure,Markers,Panel,Repeat,RepeatForSequence,Pegboard,Constraints,ConstrainToGrid,ConstrainToGraph,AttractToGrid,ConstrainTo,AttractTo,ConstraintUnion,AttractToConstraint,ConstrainToInterior,Intersection,ConstrainToAngles,AttractToAngles,ConditionalContent,AsList,VariantControl,TextListFromString,SelectFromSequence,Select,Group,AnimateFromSequence,Evaluate,SelectRandomNumbers,SampleRandomNumbers,SelectPrimeNumbers,SamplePrimeNumbers,Substitute,PeriodicSet,Image,Video,Embed,Hint,IntComma,Pluralize,Feedback,CollaborateGroups,CollaborateGroupSetup,ConsiderAsResponses,Case,Lorem,UpdateValue,CallAction,triggerSet,FunctionIterates,Module,ModuleAttributes,Setup,Footnote,Caption,Endpoint,Sort,Shuffle,SolveEquations,PostponeRenderContainer,SubsetOfRealsInput,SubsetOfReals,Split,BestFitLine,RegionBetweenCurveXAxis,RegionBetweenCurves,SlopeField,VectorField,RegionHalfPlane,CodeEditor,HasSameFactoring,DataFrame,SummaryStatistics,Legend,Label,MatchesPattern,Matrix,EigenDecomposition,Latex,BlockQuote,Description,StickyGroup,Pretzel,PretzelArranger,Cascade,DynamicChildren,ShortDescription,BaseComponent,InlineComponent,BlockComponent,BlockScoredComponent,GraphicalComponent,ConstraintComponent,SegmentConstraintComponent,Input,CompositeComponent,PointList,IntervalList,LineListComponent,VectorListComponent,AngleListComponent,BooleanOperator,BooleanBaseOperatorOfMath,MathOperator,MathOperatorOneInput,FunctionOperator,...Object.values(ComponentSize$1),...Object.values(SectioningComponent$1),InlineRenderInlineChildren,TextOrInline,SingleCharacter,VariableNameList,Variable,ListOfNumberLists,DirectionComponent,ErrorComponent,Comment];function allComponentClasses(){const Br={},ae=new Set;for(let Me of componentTypeArray){let Or=Me.componentType;if(Or===void 0)throw Error("Cannot create component as componentType is undefined for class "+Me);let Hr=Or.toLowerCase();if(ae.has(Hr))throw Error("component type "+Or+" defined in two classes");Br[Or]=Me,ae.add(Hr)}return Br}function componentTypesCreatingVariants(){const Br={},ae=new Set;for(let Me of componentTypeArray)if(Me.createsVariants){let Or=Me.componentType;if(Or===void 0)throw Error("Cannot create component as componentType is undefined for class "+Me);let Hr=Or.toLowerCase();if(ae.has(Hr))throw Error("component type "+Or+" defined in two classes");Br[Or]=Me,ae.add(Hr)}return Br}function createComponentInfoObjects(){const Br=allComponentClasses(),ae=componentTypesCreatingVariants(),Me={};for(const is in Br)Me[is.toLowerCase()]=is;const Or={};for(const is in Br)Object.defineProperty(Or,is,{get:(function(){const as=Br[is].returnStateVariableInfo();return delete Or[is],Or[is]=as}).bind(this),configurable:!0});const Hr={};for(const is in Br)Object.defineProperty(Hr,is,{get:(function(){const as=Br[is].returnStateVariableInfo({onlyPublic:!0});return delete Hr[is],Hr[is]=as}).bind(this),configurable:!0});function Li({inheritedComponentType:is,baseComponentType:as}){if(is===as)return!0;if(is==="string")return as==="_base"||as==="_inline";if(as==="string")return!1;let os=Br[as];return os?os.isPrototypeOf(Br[is]):!1}function ts({componentType:is,includeNonStandard:as=!0}){const os=Br[is];return os?Li({inheritedComponentType:is,baseComponentType:"_composite"})&&(as||!os.treatAsComponentForRecursiveReplacements):!1}const rs=(is,as)=>Li({inheritedComponentType:is,baseComponentType:as});return{allComponentClasses:Br,componentTypesCreatingVariants:ae,componentTypeLowerCaseMapping:Me,isInheritedComponentType:Li,isCompositeComponent:ts,stateVariableInfo:Or,publicStateVariableInfo:Hr,componentIsSpecifiedType:(is,as)=>rs(is.componentType,as)||is.attributes?.createComponentOfType?.primitive!==void 0&&rs(is.attributes?.createComponentOfType?.primitive.value,as)}}async function returnAllPossibleVariants(Br,ae,Me){let Hr=getNumVariants({serializedComponent:Br,componentInfoObjects:ae,infoDiagnostics:Me}).numVariants,Li;return Br.variants?.allPossibleVariants?Li=Br.variants.allPossibleVariants:Li=[...Array(Hr).keys()].map(ts=>indexToLowercaseLetters(ts+1)),Li}function indexToLowercaseLetters(Br){return numberToLetters(Br,!0)}class PublicDoenetMLCore{constructor(){this.core=null,this.initialized=!1,this.doenetML="",this.flags={},this.localeData=DEFAULT_LOCALE_DATA}setSource(ae){this.doenetML=ae}setFlags(ae){this.flags=ae}setLocaleData(ae){this.localeData=ae}async initializeWorker({activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr,normalizedRoot:Li,addNodesToResolver:ts,replaceIndexResolutionsInResolver:rs,deleteNodesFromResolver:ns,resolvePath:is,calculateRootNames:as}){this.addNodesToResolver=ts,this.replaceIndexResolutionsInResolver=rs,this.deleteNodesFromResolver=ns,this.resolvePath=is,this.calculateRootNames=as;let os=createComponentInfoObjects();const{document:ss,nComponents:ls,diagnostics:us,sources:cs}=await normalizedDastToSerializedComponents(Li,os,ts);this.coreBaseArgs={doenetML:this.doenetML,flags:this.flags,localeData:this.localeData,activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr,serializedDocument:ss,nComponentsInit:ls,allDoenetMLs:cs,preliminaryDiagnostics:us,componentInfoObjects:os},this.initialized=!0;let ds=await returnAllPossibleVariants(this.coreBaseArgs.serializedDocument,this.coreBaseArgs.componentInfoObjects,us);const ps=this.coreBaseArgs.serializedDocument.children.reduce((ms,fs)=>(typeof fs=="object"&&(ms[fs.componentType]=(ms[fs.componentType]??0)+1),ms),{});return{allPossibleVariants:ds,baseComponentCounts:ps}}async createCoreGenerateDast(ae,Me,Or,Hr,Li,ts,rs,ns){if(this.initialized&&!this.coreBaseArgs?.serializedDocument)return{success:!1,errMsg:"Cannot create the core a second time from the same worker; the serialized document was released after the first core was created."};let is={...this.coreBaseArgs,...ae,addNodesToResolver:this.addNodesToResolver,replaceIndexResolutionsInResolver:this.replaceIndexResolutionsInResolver,deleteNodesFromResolver:this.deleteNodesFromResolver,resolvePath:this.resolvePath,calculateRootNames:this.calculateRootNames,updateRenderersCallback:Me,reportScoreAndStateCallback:Or,requestAnimationFrame:Hr,cancelAnimationFrame:Li,copyToClipboard:ts,sendEvent:rs,requestSolutionView:ns};if(this.initialized){this.core=new Core(is),this.coreBaseArgs.serializedDocument=void 0;try{return{success:!0,...await this.core.generateDast()}}catch(as){return console.error(as),{success:!1,errMsg:typeof as=="object"&&as&&"message"in as&&typeof as.message=="string"?as.message:""}}}else return{success:!1,coreId:is.coreId,errMsg:"Internal error. Cannot create document. Core not initialized."}}async requestAction(ae){if(!this.core)return{success:!1,errMsg:"Cannot request action before core is created"};try{return await this.core.requestAction(ae)}catch(Me){return console.error(Me),{success:!1,errMsg:typeof Me=="object"&&Me&&"message"in Me&&typeof Me.message=="string"?Me.message:"",actionId:ae.args?.actionId}}}async returnAllStateVariables(ae=!1,Me=!1){if(!this.core?.components)return{};const Or={},Hr=this.core.components;ae&&console.log(Hr);for(let Li in Hr){const ts=Number(Li);let rs=Hr[ts];if(!rs)continue;Or[ts]={componentIdx:ts,componentType:rs.componentType,stateValues:{},activeChildren:[],sharedParameters:null};let ns=Or[ts];for(let is in rs.state){if(["replacements","recursiveReplacements","fullRecursiveReplacements"].includes(is)&&this.core.componentInfoObjects.isCompositeComponent({componentType:rs.componentType})&&!rs.isExpanded)continue;const as=await rs.state[is].value;ns.stateValues[is]=Me?as:removeFunctionsMathExpressionClass(as)}ns.activeChildren=rs.activeChildren.map(is=>is.componentIdx?{componentIdx:is.componentIdx,componentType:is.componentType}:is),rs.replacements&&(ns.replacements=rs.replacements.map(is=>is.componentIdx?{componentIdx:is.componentIdx,componentType:is.componentType}:is),rs.replacementsToWithhold!==void 0&&(ns.replacementsToWithhold=rs.replacementsToWithhold)),rs.replacementOf&&(ns.replacementOf=rs.replacementOf.componentIdx),ns.sharedParameters=Me?rs.sharedParameters:removeFunctionsMathExpressionClass(rs.sharedParameters)}return Or}async terminate(){this.core&&(await this.core.terminate(),this.core=null)}handleVisibilityChange(ae){this.core?.handleVisibilityChange(ae)}navigatingToComponent(ae,Me){this.core&&handleNavigatingToComponent({core:this.core,componentIdx:ae,hash:Me}).catch(reportTimerError(TimerLabels.navigateToComponent))}async submitAllAnswers(){await this.core?.requestAction({componentIdx:this.core.documentIdx,actionName:"submitAllAnswers",args:{}}),await this.core?.saveImmediately()}async saveImmediately(){await this.core?.saveImmediately()}async flushState(){return await this.core?.flushState()??!1}}function processCompositeRanges(Br,ae,Me,Or,Hr){const Li=[],ts=[];let rs=Me-1,ns=rs;for(let is=0;is<ae.length;is++){const as=ae[is],os=as.firstInd,ss=as.lastInd;if(os>rs&&ss<=Or){if(rs+1<os){for(let gs=rs+1;gs<os;gs++)Li.push({kind:"content",value:Br[gs]});if(Hr)for(let gs=rs+1;gs<os;gs++)ts.push(Hr[gs-Me])}const ls=ae.slice(is+1),{items:us,eligible:cs}=processCompositeRanges(Br,ls,os,ss,as.potentialListComponents??null),ds=us.filter(gs=>!isNullContent(gs)),ps=cs.filter((gs,xs)=>!isNullContent(us[xs])),ms=ds.filter(gs=>!isBlankStringContent(gs)),hs=ps.filter((gs,xs)=>!isBlankStringContent(ds[xs])).every(gs=>gs),ys=!!as.asList&&hs&&ms.length>1;ds.length>0&&(Li.push({kind:"group",isAsList:ys,compositeIdx:as.compositeIdx,items:ds}),Hr&&ts.push(hs)),rs=ss,ns=Math.max(os,ss)}}if(rs<Or){for(let is=rs+1;is<=Or;is++)Li.push({kind:"content",value:Br[is]});if(Hr)for(let is=ns+1;is<=Or;is++)ts.push(Hr[is-Me])}return{items:Li,eligible:ts}}function isNullContent(Br){return Br?.kind==="content"&&Br.value===null}function isBlankStringContent(Br){return Br?.kind==="content"&&typeof Br.value=="string"&&Br.value.trim()===""}function isBlankStringChild(Br){return typeof Br=="string"&&Br.trim()===""}function trimAsListBlankChildren(Br){const ae=Br.findIndex(Or=>!isBlankStringChild(Or));if(ae===-1)return{leadingBlankChildren:Br,listChildren:[],trailingBlankChildren:[]};let Me=Br.length-1;for(;Me>ae&&isBlankStringChild(Br[Me]);)Me--;return{leadingBlankChildren:Br.slice(0,ae),listChildren:Br.slice(ae,Me+1).filter(Or=>!isBlankStringChild(Or)),trailingBlankChildren:Br.slice(Me+1)}}function makeWrapperElement(Br,ae,Me){return{type:"element",name:ae,attributes:{},children:Me,data:{id:Br}}}function materializeItems(Br,ae,Me){const Or=[];for(const Hr of Br){if(Hr.kind==="content"){Hr.value!==null&&Or.push(Hr.value);continue}if(Hr.isAsList){const ts=materializeItems(Hr.items,!0,Me),{leadingBlankChildren:rs,listChildren:ns,trailingBlankChildren:is}=trimAsListBlankChildren(ts);ae||Or.push(...rs),Me.push(makeWrapperElement(Hr.compositeIdx,"asList",ns)),Or.push({id:Hr.compositeIdx,annotation:"original"}),ae||Or.push(...is);continue}const Li=materializeItems(Hr.items,!1,Me);Li.length!==0&&(Li.length===1?Or.push(Li[0]):ae?(Me.push(makeWrapperElement(Hr.compositeIdx,"_fragment",Li)),Or.push({id:Hr.compositeIdx,annotation:"original"})):Or.push(...Li))}return Or}function applyCompositeListWrapping(Br,ae){if(!ae||ae.length===0)return{children:Br.filter(Li=>Li!==null),wrapperElements:[]};const{items:Me}=processCompositeRanges(Br,ae,0,Br.length-1,null),Or=[];return{children:materializeItems(Me,!1,Or),wrapperElements:Or}}function propRename(Br,ae){for(const[Me,Or]of Object.entries(ae))Br.hasOwnProperty(Me)&&(Br[Or]=Br[Me],delete Br[Me])}function elementRename(Br,ae){Br.name=ae}function booleanInputJsToRust(Br){Br.immediateValue=Br.value}function pointJsToRust(Br){const ae=Br.numericalXs;Br.x={math_object:ae[0].toString()},ae.length>=2&&(Br.y={math_object:ae[1].toString()}),ae.length>=3&&(Br.z={math_object:ae[2].toString()}),Br.coordsLatex=Br.latex}function refJsToRust(Br,ae){Br.referent=ae[Br.targetRendererId]}function sectionJsToRust(Br,ae){Br.divisionType=ae.name,Br.divisionDepth=Br.level;const Me=Br.titleChildName!=null?Number(Br.titleChildName):void 0,Or=Me!==void 0&&Number.isInteger(Me);if(Br.xrefLabel={label:(Or?Br.titlePrefix:Br.title)??"",global_ident:Br.sectionNumber??"",local_ident:Br.sectionNumber??"",preferred_form:"Global"},Br.codeNumber="",Or){Br.title=Me;const Hr=ae.children.findIndex(Li=>typeof Li!="string"&&Li.id===Me);Hr!==-1&&ae.children.splice(Hr,1)}else Br.title=null}function tableJsToRust(Br,ae){Br.xrefLabel={label:Br.tableName??"",global_ident:Br.tableEnumeration??"",local_ident:Br.tableEnumeration??"",preferred_form:"Global"},Br.codeNumber=Br.tableEnumeration??"",Br.titlePrefix=Br.suppressTableNameInTitle?"":Br.tableNamePrefix??"",Br.divisionType="table",Br.divisionDepth=3;const Me=Br.titleChildName!=null?Number(Br.titleChildName):void 0;if(Me!==void 0&&Number.isInteger(Me)){Br.title=Me;const Hr=ae.children.findIndex(Li=>typeof Li!="string"&&Li.id===Me);Hr!==-1&&ae.children.splice(Hr,1)}else Br.title=null;delete Br.tableEnumeration,delete Br.titleChildName,delete Br.tableName,delete Br.tableNamePrefix}function textJsToRust(Br){Br.value=Br.text}function childInstructionToContent(Br,ae){return typeof Br=="string"?Br:(ae[Br.id]=Br.componentIdx,{id:Br.componentIdx,annotation:"original"})}function applyElementJsToRustFixups(Br,ae){if(!(Br?.type!=="element"||!Br.data.props))switch(Br.name){case"angle":propRename(Br.data.props,{latexForRenderer:"latex"});break;case"cell":propRename(Br.data.props,{inHeader:"header"});break;case"booleanInput":booleanInputJsToRust(Br.data.props);break;case"text":textJsToRust(Br.data.props);break;case"aside":case"article":case"section":sectionJsToRust(Br.data.props,Br),Br.name==="section"&&elementRename(Br,"division");break;case"table":tableJsToRust(Br.data.props,Br);break;case"point":pointJsToRust(Br.data.props);break;case"ref":refJsToRust(Br.data.props,ae);break;case"coords":elementRename(Br,"math");break}}function flatDastFromJS(Br,ae){const Me=ae[0].rendererStatesToUpdate,Or=[],Hr={[Br.id]:Br.componentIdx};Or[Br.componentIdx]={type:"element",name:Br.componentType,attributes:{},children:[],data:{id:Br.componentIdx,action_names:Object.keys(Br.actions)}};for(const ts of Me){let rs=Or[ts.componentIdx];if(rs||(rs=Or[ts.componentIdx]={type:"element",name:"",attributes:{},children:[],data:{id:ts.componentIdx}}),rs.type==="element"&&(rs.data.props=ts.stateValues,ts.childrenInstructions)){const ns=[];for(const os of ts.childrenInstructions){if(os==null){ns.push(null);continue}if(ns.push(childInstructionToContent(os,Hr)),typeof os=="string")continue;const ss=Or[os.componentIdx];ss?ss.type==="element"&&(ss.name=os.componentType,ss.data.id=os.componentIdx,ss.data.action_names=Object.keys(os.actions)):Or[os.componentIdx]={type:"element",name:os.componentType,attributes:{},children:[],data:{id:os.componentIdx,action_names:Object.keys(os.actions)}}}const{children:is,wrapperElements:as}=applyCompositeListWrapping(ns,ts.stateValues?._compositeReplacementActiveRange);rs.children=is;for(const os of as)Or[os.data.id]=os}}for(const ts of Or)applyElementJsToRustFixups(ts,Hr);return{type:"root",children:[{id:Br.componentIdx,annotation:"original"}],elements:Or,warnings:[]}}function collectInstructionMaps(Br,ae={},Me={}){for(const Or of Br)for(const Hr of Or.rendererStatesToUpdate)for(const Li of Hr.childrenInstructions??[])Li!=null&&typeof Li!="string"&&(ae[Li.componentIdx]=Li.componentType,Me[Li.id]=Li.componentIdx);return{componentIdxToName:ae,doenetIdToComponentIdx:Me}}function seedInstructionMaps(Br,ae){const Me={[Br.componentIdx]:Br.componentType},Or={[Br.id]:Br.componentIdx};return collectInstructionMaps(ae,Me,Or),{componentIdxToName:Me,doenetIdToComponentIdx:Or}}function flatDastUpdateFromJS(Br,ae,Me={}){const Or={};function Hr(Li,ts){const rs=Or[Li];rs?(rs.changedState={...rs.changedState,...ts.changedState},ts.newChildren&&(rs.newChildren=ts.newChildren),ts.newFlatDastElement&&(rs.newFlatDastElement=ts.newFlatDastElement)):Or[Li]=ts}for(const Li of Br)for(const ts of Li.rendererStatesToUpdate){const{componentIdx:rs,stateValues:ns,childrenInstructions:is}=ts,as=[];if(is)for(const cs of is){if(cs==null){as.push(null);continue}as.push(childInstructionToContent(cs,Me))}const{children:os,wrapperElements:ss}=applyCompositeListWrapping(as,ns?._compositeReplacementActiveRange),ls={type:"element",name:ae[rs]??"",children:os,data:{id:rs,props:{...ns}}};applyElementJsToRustFixups(ls,Me);const us={changedState:ls.data.props};is&&(us.newChildren=ls.children),Hr(rs,us);for(const cs of ss)Hr(cs.data.id,{newFlatDastElement:cs})}return Or}async function resolvePathImmediatelyToNodeIdx(Br,ae,Me,Or=0){if(!Me.core)return-1;const Hr=Br.match(/^([\w-]+)((\[\d+\])*)/);if(!Hr)throw Error(`Invalid name to resolve: ${Br}`);const Li=[{type:"flatPathPart",name:Hr[1],index:extractIndex(Hr[2])}];let ts=Br.slice(Hr[0].length);for(;ts.length>0;){const rs=ts.match(/^\.([\w-]+)((\[\d+\])*)/);if(!rs)throw Error(`Invalid name to resolve: ${Br}`);Li.push({type:"flatPathPart",name:rs[1],index:extractIndex(rs[2])}),ts=ts.slice(rs[0].length)}try{let rs=ae.resolve_path({path:Li},Or,!1);for(;rs.unresolvedPath!==null;){if(rs.unresolvedPath[0].name!=="")return-1;const ns=Me.core._components[rs.nodeIdx];if(!Me.core.componentInfoObjects.isCompositeComponent({componentType:ns.componentType,includeNonStandard:!0})||ns.isExpanded)return-1;const as=rs.unresolvedPath[0].index;if(as.length===0)throw Error("Something went wrong as we have a ref resolution without a name or an index");if(typeof as[0].value[0]!="string")throw Error("Not implemented: we have not implemented `resolvePathImmediatelyToNodeIdx` for paths that contain references to nodes.");await ns.stateValues.readyToExpandWhenResolved,await expandCompositeComponent({core:Me.core,component:ns}),rs=ae.resolve_path({path:Li},Or,!1)}return rs.nodeIdx}catch(rs){return console.error(rs),-1}}function extractIndex(Br){const ae=[];for(const Me of Br.matchAll(/\[(\d+)\]/g))ae.push({value:[Me[1]]});return ae}const JS_CORE_ACTION_NAME_OVERRIDES={point:{move:"movePoint"},graph:{changeBoundingBox:"changeAxisLimits"}};function translateJsCoreActionName(Br,ae){return Br==null?ae:JS_CORE_ACTION_NAME_OVERRIDES[Br]?.[ae]??ae}const WASM_FILE_NAME="lib_doenetml_worker_bg.wasm";function injectedGlobal(Br){const ae=globalThis[Br];return typeof ae=="string"?ae:void 0}function decodeWasmDataUrl(Br){try{const ae=Br.split(",")[1],Me=atob(ae),Or=new Uint8Array(Me.length);for(let Hr=0;Hr<Me.length;Hr++)Or[Hr]=Me.charCodeAt(Hr);return Or.buffer}catch(ae){return console.warn("Error while decoding the WASM data URL:",ae),null}}function wasmUrlCandidates(){const Br=[];function ae(Hr){Br.includes(Hr)||Br.push(Hr)}const Me=injectedGlobal("__doenetWorkerWasmUrl");Me!==void 0&&ae(Me);const Or=[injectedGlobal("__doenetWorkerScriptUrl"),typeof location<"u"?location.href:void 0];for(const Hr of Or)if(Hr!==void 0)try{ae(new URL(WASM_FILE_NAME,Hr).href)}catch{}return ae(`https://cdn.jsdelivr.net/npm/@doenet/standalone@0.7.25-dev.501/doenetml-worker/${WASM_FILE_NAME}`),Br}async function resolveWasmInput(){const Br=injectedGlobal("__doenetWorkerWasmUrl");if(Br!==void 0&&/^data:.*;base64,/.test(Br)){const Me=decodeWasmDataUrl(Br);if(Me)return Me}let ae;for(const Me of wasmUrlCandidates())if(!Me.startsWith("data:"))try{const Or=await fetch(Me);if(!Or.ok)throw Error(`HTTP ${Or.status} fetching ${Me}`);const Hr=Or.headers.get("Content-Type")??"";if(/^text\/html\b/i.test(Hr))throw Error(`Fetching ${Me} returned ${Hr}, an HTML page rather than WebAssembly`);return Or}catch(Or){ae=Or}throw ae??Error("No URL to load the core WASM from")}if(typeof globalThis<"u"&&!globalThis.document){const Br=new URL(typeof location<"u"?location.href:"http://localhost"),ae=Br.protocol+"//"+Br.host+Br.pathname;globalThis.document={URL:ae,baseURI:ae}}let wasmInitPromise=null;function ensureWasmInitialized(){return wasmInitPromise||(wasmInitPromise=(async()=>{const Br=await resolveWasmInput();return await __wbg_init({module_or_path:Br})})().catch(Br=>{throw wasmInitPromise=null,Br})),wasmInitPromise}class CoreWorker{constructor(){this.wasm_initialized=!1,this.javascript_initialized=!1,this.source_set=!1,this.flags_set=!1,this.core_type="rust",this._javascriptUpdateBuffer=[],this._capturingJavascriptUpdates=!1,this._componentIdxToName={},this._doenetIdToComponentIdx={},this._javascriptInitialRenderDone=!1,this.isProcessingPromise=Promise.resolve(),this._hostedCores=new Map,this._nextHostedCoreId=1,this._isHostedCore=!1}async createCore(ae){const Me=new CoreWorker;Me._isHostedCore=!0,expose(Me,ae);const Or=this._nextHostedCoreId++;return this._hostedCores.set(Or,{core:Me,port:ae}),Or}async destroyCore(ae){const Me=this._hostedCores.get(ae);if(Me){this._hostedCores.delete(ae);try{await Me.core.terminate()}catch(Or){console.error("Error terminating hosted core",Or)}finally{Me.port.close()}}}setCoreType(ae){this.core_type=ae}async setSource(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{this.wasm_initialized||(await ensureWasmInitialized(),this.wasm_initialized=!0),this.doenetCore||(this.doenetCore=PublicDoenetMLCore$1.new()),this.core_type==="javascript"&&(this.javascriptCore||(this.javascriptCore=new PublicDoenetMLCore),this.javascriptCore.setSource(ae.source)),this.doenetCore.set_source(ae.dast,ae.source),this.source_set=!0}catch(Li){throw console.error("Error when setting source",Li),Li}finally{Hr()}}async setFlags(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{this.wasm_initialized||(await ensureWasmInitialized(),this.wasm_initialized=!0),this.doenetCore||(this.doenetCore=PublicDoenetMLCore$1.new()),this.core_type==="javascript"&&(this.javascriptCore||(this.javascriptCore=new PublicDoenetMLCore),this.javascriptCore.setFlags(ae.flags)),this.doenetCore.set_flags(JSON.stringify(ae.flags)),this.flags_set=!0}finally{Hr()}}async setLocaleData(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{this.core_type==="javascript"&&(this.javascriptCore||(this.javascriptCore=new PublicDoenetMLCore),this.javascriptCore.setLocaleData(ae.localeData))}finally{Hr()}}async initializeJavascriptCore({activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr}){const Li=this.isProcessingPromise;let{promise:ts,resolve:rs}=promiseWithResolver();if(this.isProcessingPromise=ts,await Li,!this.source_set||!this.flags_set||!this.javascriptCore||!this.doenetCore)throw Error("Cannot initialize javascript core before setting source and flags");try{let ns=function(){return us.calculate_root_names()},is=function(ds,ps,ms){return us.resolve_path(ds,ps,ms)},as=function(ds,ps){us.add_nodes_to_resolver(ds,ps)},os=function(ds,ps){us.replace_index_resolutions_in_resolver(ds,ps)},ss=function(ds){us.delete_nodes_from_resolver(ds)},ls=this.doenetCore.return_normalized_dast_root();const us=this.doenetCore,cs=await this.javascriptCore.initializeWorker({activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr,normalizedRoot:ls,addNodesToResolver:as,replaceIndexResolutionsInResolver:os,deleteNodesFromResolver:ss,resolvePath:is,calculateRootNames:ns});return this.javascript_initialized=!0,this.doenetCore.release_initialization_data(),cs}catch(ns){throw console.error(ns),ns}finally{rs()}}async generateJavascriptDast(ae,Me,Or,Hr,Li,ts,rs,ns){const is=this.isProcessingPromise;let{promise:as,resolve:os}=promiseWithResolver();if(this.isProcessingPromise=as,await is,!this.javascript_initialized||!this.javascriptCore)throw Error("Cannot return javascript dast before initializing javascript core");try{return await this.javascriptCore?.createCoreGenerateDast(ae,Me,Or,Hr,Li,ts,rs,ns)}catch(ss){throw console.error(ss),ss}finally{os()}}async returnDast(){const ae=this.isProcessingPromise;let{promise:Me,resolve:Or}=promiseWithResolver();if(this.isProcessingPromise=Me,await ae,!this.source_set||!this.flags_set||!this.doenetCore)throw Error("Cannot return dast before setting source and flags");try{return this.core_type==="javascript"?await this.returnFlatDastFromJS():this.doenetCore.return_dast()}catch(Hr){throw console.error(Hr),Hr}finally{Or()}}async returnNormalizedDastRoot(){if(!this.source_set||!this.doenetCore)throw Error("Cannot return normalized dast root before setting source");return this.core_type==="javascript"?{nodes:[]}:this.doenetCore.return_normalized_dast_root()}async returnFlatDastFromJS(){if(!this.javascriptCore||!this.doenetCore)throw Error("Cannot return dast before setting source and flags");let ae=this.doenetCore.return_normalized_dast_root();const Me=this.doenetCore;function Or(){return Me.calculate_root_names()}function Hr(gs,xs,bs){return Me.resolve_path(gs,xs,bs)}function Li(gs,xs){Me.add_nodes_to_resolver(gs,xs)}function ts(gs,xs){Me.replace_index_resolutions_in_resolver(gs,xs)}function rs(gs){Me.delete_nodes_from_resolver(gs)}await this.javascriptCore.initializeWorker({activityId:"a",docId:"a",requestedVariantIndex:1,attemptNumber:1,normalizedRoot:ae,addNodesToResolver:Li,replaceIndexResolutionsInResolver:ts,deleteNodesFromResolver:rs,resolvePath:Hr,calculateRootNames:Or}),this.javascript_initialized=!0,this.doenetCore.release_initialization_data();const ns={coreId:"a",cid:null,initializeCounters:{}};let is=null;this._javascriptUpdateBuffer=[];const as=gs=>{gs.init?is=gs.updateInstructions:this._capturingJavascriptUpdates&&gs.updateInstructions&&this._javascriptUpdateBuffer.push(...gs.updateInstructions)},os=gs=>{},ss=gs=>{},ls=gs=>{},us=gs=>{},cs=gs=>{},ds=gs=>Promise.resolve({allowView:!0}),ps=await this.javascriptCore.createCoreGenerateDast(ns,as,os,ss,ls,us,cs,ds);if(!ps.success)throw console.error(ps.errMsg),Error(ps.errMsg);if(is===null)throw Error("Need to address case where do not get updateRenderersCallback before dast");const ms=ps.coreInfo.documentToRender,{componentIdxToName:fs,doenetIdToComponentIdx:hs}=seedInstructionMaps(ms,is);return this._componentIdxToName=fs,this._doenetIdToComponentIdx=hs,this._javascriptInitialRenderDone=!0,flatDastFromJS(ms,is)}async dispatchActionJavascript(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();if(this.isProcessingPromise=Or,await Me,!this.source_set||!this.flags_set||!this.javascriptCore)throw Error("Cannot handle action before setting source and flags");try{return await this.javascriptCore.requestAction(ae)}catch(Li){throw console.error(Li),Li}finally{Hr()}}async dispatchActionJavascriptFlat(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{if(!this.source_set||!this.flags_set||!this.javascriptCore)throw Error("Cannot handle action before setting source and flags");if(!this._javascriptInitialRenderDone)throw Error("Cannot dispatch a flat action before the initial render (returnDast) has run");this._javascriptUpdateBuffer=[],this._capturingJavascriptUpdates=!0;const Li=ae.componentIdx!=null?this._componentIdxToName[ae.componentIdx]:void 0,ts=translateJsCoreActionName(Li,ae.actionName),rs=await this.javascriptCore.requestAction({...ae,actionName:ts});if(rs&&typeof rs=="object"&&"success"in rs&&rs.success===!1){const is=ts===ae.actionName?`"${ae.actionName}"`:`"${ae.actionName}" (translated to "${ts}")`;throw Error(`Action ${is} failed: ${rs.errMsg??"unknown error"}`)}this._capturingJavascriptUpdates=!1;const ns=this._javascriptUpdateBuffer;return this._javascriptUpdateBuffer=[],collectInstructionMaps(ns,this._componentIdxToName,this._doenetIdToComponentIdx),flatDastUpdateFromJS(ns,this._componentIdxToName,this._doenetIdToComponentIdx)}catch(Li){throw console.error(Li),Li}finally{this._capturingJavascriptUpdates=!1,Hr()}}async resolvePath(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();if(this.isProcessingPromise=Or,await Me,!this.source_set||!this.flags_set||!this.doenetCore)throw Error("Cannot resolve a path before setting source and flags");try{return this.doenetCore.resolve_path(ae.path,ae.origin,ae.skipParentSearch)}finally{Hr()}}async dispatchAction(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();if(this.isProcessingPromise=Or,await Me,!this.source_set||!this.flags_set||!this.doenetCore)throw Error("Cannot handle action before setting source and flags");try{return this.doenetCore.dispatch_action(ae)}catch(Li){throw console.error(Li),Li}finally{Hr()}}async resolvePathJavascript(ae,Me=0){const Or=this.isProcessingPromise;let{promise:Hr,resolve:Li}=promiseWithResolver();if(this.isProcessingPromise=Hr,await Or,!this.source_set||!this.flags_set||!this.doenetCore||!this.javascriptCore)throw Error("Cannot resolve path before setting source and flags");try{return await resolvePathImmediatelyToNodeIdx(ae,this.doenetCore,this.javascriptCore,Me)}catch(ts){throw console.error(ts),ts}finally{Li()}}async terminate(){const ae=this.isProcessingPromise;let{promise:Me,resolve:Or}=promiseWithResolver();if(this.isProcessingPromise=Me,await ae,this.doenetCore?.free(),this.doenetCore=void 0,this.source_set=!1,this.flags_set=!1,this.javascriptCore)try{await this.javascriptCore.terminate()}catch(Hr){throw console.error(Hr),Hr}finally{Or()}else Or();this._isHostedCore||close()}async returnAllStateVariables(ae=!1){return this.javascriptCore?this.javascriptCore.returnAllStateVariables(ae):{}}handleVisibilityChange(ae){this.javascriptCore&&this.javascriptCore.handleVisibilityChange(ae)}async submitAllAnswers(){this.javascriptCore&&this.javascriptCore.submitAllAnswers()}async saveImmediately(){this.javascriptCore&&this.javascriptCore.saveImmediately()}async flushState(){return this.javascriptCore?await this.javascriptCore.flushState():!1}async _getTests(){return this.doenetCore?._get_tests()}async _runTest(ae){return this.doenetCore?._run_test(ae)}}function promiseWithResolver(){let Br,ae;return{promise:new Promise((Or,Hr)=>{Br=Or,ae=Hr}),resolve:Br,reject:ae}}expose(new CoreWorker);function _mergeNamespaces$1(Br,ae){for(var Me=0;Me<ae.length;Me++){const Or=ae[Me];if(typeof Or!="string"&&!Array.isArray(Or)){for(const Hr in Or)if(Hr!=="default"&&!(Hr in Br)){const Li=Object.getOwnPropertyDescriptor(Or,Hr);Li&&Object.defineProperty(Br,Hr,Li.get?Li:{enumerable:!0,get:()=>Or[Hr]})}}}return Object.freeze(Object.defineProperty(Br,Symbol.toStringTag,{value:"Module"}))}var sha256$3={exports:{}},convertHex$1={exports:{}},convertHex=convertHex$1.exports,hasRequiredConvertHex;function requireConvertHex(){return hasRequiredConvertHex||(hasRequiredConvertHex=1,(function(Br){(function(ae){var Me={bytesToHex:function(Li){return Or(Li)},hexToBytes:function(Li){if(Li.length%2===1)throw new Error("hexToBytes can't have a string with an odd number of characters.");return Li.indexOf("0x")===0&&(Li=Li.slice(2)),Li.match(/../g).map(function(ts){return parseInt(ts,16)})}};function Or(Li){return Li.map(function(ts){return Hr(ts.toString(16),2)}).join("")}function Hr(Li,ts){return Li.length>ts?Li:Array(ts-Li.length+1).join("0")+Li}Br.exports?Br.exports=Me:ae.convertHex=Me})(convertHex)})(convertHex$1)),convertHex$1.exports}var convertString$1={exports:{}},convertString=convertString$1.exports,hasRequiredConvertString;function requireConvertString(){return hasRequiredConvertString||(hasRequiredConvertString=1,(function(Br){(function(ae){var Me={bytesToString:function(Or){return Or.map(function(Hr){return String.fromCharCode(Hr)}).join("")},stringToBytes:function(Or){return Or.split("").map(function(Hr){return Hr.charCodeAt(0)})}};Me.UTF8={bytesToString:function(Or){return decodeURIComponent(escape(Me.bytesToString(Or)))},stringToBytes:function(Or){return Me.stringToBytes(unescape(encodeURIComponent(Or)))}},Br.exports?Br.exports=Me:ae.convertString=Me})(convertString)})(convertString$1)),convertString$1.exports}var sha256$2=sha256$3.exports,hasRequiredSha256;function requireSha256(){return hasRequiredSha256||(hasRequiredSha256=1,(function(Br){(function(ae){var Me={};Br.exports?(Me.bytesToHex=requireConvertHex().bytesToHex,Me.convertString=requireConvertString(),Br.exports=ns):(Me.bytesToHex=ae.convertHex.bytesToHex,Me.convertString=ae.convertString,ae.sha256=ns);var Or=[];(function(){function is(ls){for(var us=Math.sqrt(ls),cs=2;cs<=us;cs++)if(!(ls%cs))return!1;return!0}function as(ls){return(ls-(ls|0))*4294967296|0}for(var os=2,ss=0;ss<64;)is(os)&&(Or[ss]=as(Math.pow(os,.3333333333333333)),ss++),os++})();var Hr=function(is){for(var as=[],os=0,ss=0;os<is.length;os++,ss+=8)as[ss>>>5]|=is[os]<<24-ss%32;return as},Li=function(is){for(var as=[],os=0;os<is.length*32;os+=8)as.push(is[os>>>5]>>>24-os%32&255);return as},ts=[],rs=function(is,as,os){for(var ss=is[0],ls=is[1],us=is[2],cs=is[3],ds=is[4],ps=is[5],ms=is[6],fs=is[7],hs=0;hs<64;hs++){if(hs<16)ts[hs]=as[os+hs]|0;else{var ys=ts[hs-15],gs=(ys<<25|ys>>>7)^(ys<<14|ys>>>18)^ys>>>3,xs=ts[hs-2],bs=(xs<<15|xs>>>17)^(xs<<13|xs>>>19)^xs>>>10;ts[hs]=gs+ts[hs-7]+bs+ts[hs-16]}var vs=ds&ps^~ds&ms,Cs=ss&ls^ss&us^ls&us,Ts=(ss<<30|ss>>>2)^(ss<<19|ss>>>13)^(ss<<10|ss>>>22),As=(ds<<26|ds>>>6)^(ds<<21|ds>>>11)^(ds<<7|ds>>>25),Ns=fs+As+vs+Or[hs]+ts[hs],ws=Ts+Cs;fs=ms,ms=ps,ps=ds,ds=cs+Ns|0,cs=us,us=ls,ls=ss,ss=Ns+ws|0}is[0]=is[0]+ss|0,is[1]=is[1]+ls|0,is[2]=is[2]+us|0,is[3]=is[3]+cs|0,is[4]=is[4]+ds|0,is[5]=is[5]+ps|0,is[6]=is[6]+ms|0,is[7]=is[7]+fs|0};function ns(is,as){is.constructor===String&&(is=Me.convertString.UTF8.stringToBytes(is));var os=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],ss=Hr(is),ls=is.length*8;ss[ls>>5]|=128<<24-ls%32,ss[(ls+64>>9<<4)+15]=ls;for(var us=0;us<ss.length;us+=16)rs(os,ss,us);var cs=Li(os);return as&&as.asBytes?cs:as&&as.asString?Me.convertString.bytesToString(cs):Me.bytesToHex(cs)}ns.x2=function(is,as){return ns(ns(is,{asBytes:!0}),as)}})(sha256$2)})(sha256$3)),sha256$3.exports}var sha256Exports=requireSha256();const sha256=getDefaultExportFromCjs$1(sha256Exports),sha256$1=_mergeNamespaces$1({__proto__:null,default:sha256},[sha256Exports]),sha256DT5xJ2HvDQlQsFFB=Object.freeze(Object.defineProperty({__proto__:null,s:sha256$1},Symbol.toStringTag,{value:"Module"}));return exports.CoreWorker=CoreWorker,Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),exports})({});
2608
+ `).map(ss=>ss.trim().split(",").map(ls=>ls.trim())),rs=ts[0]?.length,ns=!1;for(let ss of ts.slice(1))if(ss.length!==rs){ns=!0;break}if(ns){let ss=codedDiagnostic({type:"warning",code:"doenet-w0066",args:{componentIdx:String(Or)}});return{setValue:{dataFrame:null,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:Li},sendDiagnostics:[ss]}}let is={},as=[];if(Me.hasHeader?(is.columnNames=ts[0].map(ss=>(['"',"'"].includes(ss[0])&&ss[ss.length-1]===ss[0]&&(ss=ss.substring(1,ss.length-1)),ss)),as=ts.slice(1)):(is.columnNames=[...Array(rs).keys()].map(ss=>`col${ss+1}`),as=ts),[...new Set(is.columnNames)].length<is.columnNames){let ss=codedDiagnostic({type:"warning",code:"doenet-w0067",args:{componentIdx:String(Or)}});return{setValue:{dataFrame:null,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:Li},sendDiagnostics:[ss]}}if(is.columnNames.includes("")){let ss=codedDiagnostic({type:"warning",code:"doenet-w0068",args:{componentIdx:String(Or)}});return{setValue:{dataFrame:null,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:Li},sendDiagnostics:[ss]}}let os=as.length;is.shape=[os,rs];for(let ss=0;ss<rs;ss++){let ls=Me.columnTypesPrelim[ss]?.toLowerCase();if(["number","string"].includes(ls)||(ls="auto"),ls==="auto"){let us=!1;for(let cs=0;cs<os;cs++){let ds=as[cs][ss];if(ds!==""){let ps=Number(ds);if(!Number.isFinite(ps)){us=!0;break}}}us?ls="string":ls="number"}if(ls==="number")for(let us=0;us<os;us++)as[us][ss]===""?as[us][ss]=null:as[us][ss]=Number(as[us][ss]);else for(let us=0;us<os;us++){let cs=as[us][ss];['"',"'"].includes(cs[0])&&cs[cs.length-1]===cs[0]&&(cs=cs.substring(1,cs.length-1)),as[us][ss]=cs}Hr.push(ls)}return is.data=as,is.columnTypes=Hr,{setValue:{dataFrame:is,numRows:os,numColumns:rs,columnTypes:Hr,columnNames:is.columnNames}}}},ae.means={description:"Mean of each numeric column in the data frame.",public:!0,shadowingInstructions:{createComponentOfType:"number"},isArray:!0,entryPrefixes:["mean"],returnArraySizeDependencies:()=>({numColumns:{dependencyType:"stateVariable",variableName:"numColumns"}}),returnArraySize({dependencyValues:Me}){return[Me.numColumns]},returnArrayDependenciesByKey(){return{globalDependencies:{dataFrame:{dependencyType:"stateVariable",variableName:"dataFrame"},numColumns:{dependencyType:"stateVariable",variableName:"numColumns"},numRows:{dependencyType:"stateVariable",variableName:"numRows"},columnTypes:{dependencyType:"stateVariable",variableName:"columnTypes"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arrayKeys:Or}){let Hr={};for(let Li of Or){let ts=0,rs=0;if(Me.columnTypes[Li]==="number"){for(let ns=0;ns<Me.numRows;ns++){let is=Me.dataFrame.data[ns][Li];is!==null&&(ts+=is,rs++)}ts/=rs}else ts=NaN;Hr[Li]=ts}return{setValue:{means:Hr}}}},ae}}const{mean,std,variance,median,quantileSeq}=Context.math,STATISTIC_VALUES=[{value:"mean",description:"The arithmetic mean."},{value:"stdev",description:"The standard deviation."},{value:"variance",description:"The variance."},{value:"stderr",description:"The standard error."},{value:"count",description:"The number of non-missing values."},{value:"minimum",description:"The smallest value."},{value:"quartile1",description:"The first quartile."},{value:"median",description:"The median."},{value:"quartile3",description:"The third quartile."},{value:"maximum",description:"The largest value."},{value:"range",description:"The maximum minus the minimum."},{value:"sum",description:"The sum of the values."}],DEFAULT_STATISTICS=["mean","stdev","count","minimum","quartile1","median","quartile3","maximum"];class SummaryStatistics extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="summaryStatistics";static excludeFromSchema=!0;static componentDocs={summary:"Summary statistics (mean, median, etc.) for a list of numbers."};static createAttributesObject(){let ae=super.createAttributesObject();return ae.source={createTargetComponentNames:!0,description:"Reference to the data frame to summarize."},ae.column={createComponentOfType:"text",createStateVariable:"desiredColumn",defaultValue:null,description:"Name of the column from the source data frame to summarize."},ae.statisticsToDisplay={createComponentOfType:"textList",createStateVariable:"statisticsToDisplayPrelim",defaultValue:["default"],toLowerCase:!0,validValues:[{value:"default",description:`The default selection: ${DEFAULT_STATISTICS.join(", ")}.`},{value:"all",description:"Every statistic listed here."},...STATISTIC_VALUES],description:'Which summary statistics to display (or "default" / "all").'},ae.byCategoryColumn={description:"Column used to group data when computing per-category statistics.",createComponentOfType:"text",createStateVariable:"byCategoryColumn",defaultValue:null,public:!0},Object.assign(ae,returnNumberDisplayAttributes()),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.statisticsToDisplay={description:"Which summary statistics to display.",public:!0,shadowingInstructions:{createComponentOfType:"textList"},returnDependencies:()=>({statisticsToDisplayPrelim:{dependencyType:"stateVariable",variableName:"statisticsToDisplayPrelim"}}),definition:function({dependencyValues:Me}){const Or=STATISTIC_VALUES.map(ts=>ts.value);let Hr=[],Li=Me.statisticsToDisplayPrelim;if(Li.includes("default"))Hr=[...DEFAULT_STATISTICS];else if(Li.includes("all"))Hr=[...Or];else for(let ts of Or)Li.includes(ts)&&Hr.push(ts);return{setValue:{statisticsToDisplay:Hr}}}},ae.sourceName={returnDependencies:()=>({source:{dependencyType:"attributeTargetComponentNames",attributeName:"source"}}),definition({dependencyValues:Me}){let Or;return Me.source?.length===1?Or=Me.source[0].absoluteName:Or=null,{setValue:{sourceName:Or}}}},ae.dataColumn={description:"The numeric column being summarized.",stateVariablesDeterminingDependencies:["sourceName"],additionalStateVariablesDefined:[{variableName:"columnName",public:!0,shadowingInstructions:{createComponentOfType:"text"},forRenderer:!0,description:"The name of the data column being summarized."}],returnDependencies({stateValues:Me}){return{dataFrame:{dependencyType:"stateVariable",componentIdx:Me.sourceName,variableName:"dataFrame",variableOptional:!0},desiredColumn:{dependencyType:"stateVariable",variableName:"desiredColumn"}}},definition({dependencyValues:Me}){let Or=null,Hr=null;if(Me.dataFrame){let Li=Me.dataFrame,ts=Li.columnNames.indexOf(Me.desiredColumn);if(ts!==-1){Hr=Me.desiredColumn,Or=[];for(let rs of Li.data)rs[ts]!==null&&Or.push(rs[ts])}}return{setValue:{dataColumn:Or,columnName:Hr}}}},ae.count={description:"The number of values in the data column.",public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=Me.dataColumn.length),{setValue:{count:Or}}}},ae.sum={description:"The sum of the values.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=Me.dataColumn.reduce((Hr,Li)=>Hr+Li)),{setValue:{sum:Or}}}},ae.mean={description:"The arithmetic mean of the values.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn!==null&&(Or=mean(Me.dataColumn)),{setValue:{mean:Or}}}},ae.stdev={description:"The sample standard deviation.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=std(Me.dataColumn)),{setValue:{stdev:Or}}}},ae.variance={description:"The sample variance.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=variance(Me.dataColumn)),{setValue:{variance:Or}}}},ae.stderr={description:"The standard error of the mean.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({stdev:{dependencyType:"stateVariable",variableName:"stdev"},count:{dependencyType:"stateVariable",variableName:"count"}}),definition({dependencyValues:Me}){let Or=null;return Me.stdev!==null&&(Or=Me.stdev/Math.sqrt(Me.count)),{setValue:{stderr:Or}}}},ae.minimum={description:"The minimum value.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=Math.min(...Me.dataColumn)),{setValue:{minimum:Or}}}},ae.maximum={description:"The maximum value.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=Math.max(...Me.dataColumn)),{setValue:{maximum:Or}}}},ae.median={description:"The median value.",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=median(Me.dataColumn)),{setValue:{median:Or}}}},ae.quartile1={description:"The first quartile (25th percentile).",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=quantileSeq(Me.dataColumn,.25)),{setValue:{quartile1:Or}}}},ae.quartile3={description:"The third quartile (75th percentile).",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({dataColumn:{dependencyType:"stateVariable",variableName:"dataColumn"}}),definition({dependencyValues:Me}){let Or=null;return Me.dataColumn&&(Or=quantileSeq(Me.dataColumn,.75)),{setValue:{quartile3:Or}}}},ae.range={description:"The range (maximum − minimum).",public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},returnDependencies:()=>({minimum:{dependencyType:"stateVariable",variableName:"minimum"},maximum:{dependencyType:"stateVariable",variableName:"maximum"}}),definition({dependencyValues:Me}){let Or=null;return Me.minimum!==null&&(Or=Me.maximum-Me.minimum),{setValue:{range:Or}}}},ae.summaryStatistics={forRenderer:!0,stateVariablesDeterminingDependencies:["statisticsToDisplay"],returnDependencies({stateValues:Me}){let Or={displayDigits:{dependencyType:"stateVariable",variableName:"displayDigits"},displayDecimals:{dependencyType:"stateVariable",variableName:"displayDecimals"},displaySmallAsZero:{dependencyType:"stateVariable",variableName:"displaySmallAsZero"}};return Me.statisticsToDisplay.includes("mean")&&(Or.mean={dependencyType:"stateVariable",variableName:"mean"}),Me.statisticsToDisplay.includes("stdev")&&(Or.stdev={dependencyType:"stateVariable",variableName:"stdev"}),Me.statisticsToDisplay.includes("variance")&&(Or.variance={dependencyType:"stateVariable",variableName:"variance"}),Me.statisticsToDisplay.includes("stderr")&&(Or.stderr={dependencyType:"stateVariable",variableName:"stderr"}),Me.statisticsToDisplay.includes("count")&&(Or.count={dependencyType:"stateVariable",variableName:"count"}),Me.statisticsToDisplay.includes("minimum")&&(Or.minimum={dependencyType:"stateVariable",variableName:"minimum"}),Me.statisticsToDisplay.includes("quartile1")&&(Or.quartile1={dependencyType:"stateVariable",variableName:"quartile1"}),Me.statisticsToDisplay.includes("median")&&(Or.median={dependencyType:"stateVariable",variableName:"median"}),Me.statisticsToDisplay.includes("quartile3")&&(Or.quartile3={dependencyType:"stateVariable",variableName:"quartile3"}),Me.statisticsToDisplay.includes("maximum")&&(Or.maximum={dependencyType:"stateVariable",variableName:"maximum"}),Me.statisticsToDisplay.includes("range")&&(Or.range={dependencyType:"stateVariable",variableName:"range"}),Me.statisticsToDisplay.includes("sum")&&(Or.sum={dependencyType:"stateVariable",variableName:"sum"}),Or},definition({dependencyValues:Me}){let Or={};return Me.mean!==void 0&&(Or.mean=roundForDisplay({value:Me.mean,dependencyValues:Me})),Me.stdev!==void 0&&(Or.stdev=roundForDisplay({value:Me.stdev,dependencyValues:Me})),Me.variance!==void 0&&(Or.variance=roundForDisplay({value:Me.variance,dependencyValues:Me})),Me.stderr!==void 0&&(Or.stderr=roundForDisplay({value:Me.stderr,dependencyValues:Me})),Me.count!==void 0&&(Or.count=roundForDisplay({value:Me.count,dependencyValues:Me})),Me.minimum!==void 0&&(Or.minimum=roundForDisplay({value:Me.minimum,dependencyValues:Me})),Me.quartile1!==void 0&&(Or.quartile1=roundForDisplay({value:Me.quartile1,dependencyValues:Me})),Me.median!==void 0&&(Or.median=roundForDisplay({value:Me.median,dependencyValues:Me})),Me.quartile3!==void 0&&(Or.quartile3=roundForDisplay({value:Me.quartile3,dependencyValues:Me})),Me.maximum!==void 0&&(Or.maximum=roundForDisplay({value:Me.maximum,dependencyValues:Me})),Me.range!==void 0&&(Or.range=roundForDisplay({value:Me.range,dependencyValues:Me})),Me.sum!==void 0&&(Or.sum=roundForDisplay({value:Me.sum,dependencyValues:Me})),{setValue:{summaryStatistics:Or}}}},ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}class Legend extends GraphicalComponent{static componentType="legend";static componentDocs={summary:"A legend describing the contents of a graph"};static createAttributesObject(){let ae=super.createAttributesObject();return ae.position={description:"Position of the legend on the graph.",createComponentOfType:"text",createStateVariable:"position",defaultValue:"upperRight",public:!0,forRenderer:!0,toLowerCase:!0,validValues:[{value:"upperRight",description:"Place the legend in the upper-right corner."},{value:"upperLeft",description:"Place the legend in the upper-left corner."},{value:"lowerRight",description:"Place the legend in the lower-right corner."},{value:"lowerLeft",description:"Place the legend in the lower-left corner."}]},ae.displayClosedSwatches={description:"Whether to render closed/filled swatches in the legend.",createComponentOfType:"boolean",createStateVariable:"displayClosedSwatches",defaultValue:!1,public:!0},ae}static returnChildGroups(){return[{group:"labels",componentTypes:["label"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.graphicalElementNames={returnDependencies:()=>({graphAncestor:{dependencyType:"ancestor",componentType:"graph",variableNames:["graphicalDescendants"]}}),definition({dependencyValues:Me}){return Me.graphAncestor?{setValue:{graphicalElementNames:Me.graphAncestor.stateValues.graphicalDescendants.map(Or=>Or.componentIdx)}}:{setValue:{graphicalElementNames:null}}}},ae.legendElements={forRenderer:!0,stateVariablesDeterminingDependencies:["graphicalElementNames"],returnDependencies:({stateValues:Me})=>{let Or={labelChildren:{dependencyType:"child",childGroups:["labels"],variableNames:["value","hasLatex","forObjectComponentIdx"]},displayClosedSwatches:{dependencyType:"stateVariable",variableName:"displayClosedSwatches"}};if(Me.graphicalElementNames){Or.numGraphicalElements={dependencyType:"value",value:Me.graphicalElementNames.length};for(let[Hr,Li]of Me.graphicalElementNames.entries())Or[`graphicalElement${Hr}`]={dependencyType:"multipleStateVariables",componentIdx:Li,variableNames:["selectedStyle","styleNumber","filled"],variablesOptional:!0},Or[`graphicalElement${Hr}AdapterSource`]={dependencyType:"adapterSource",componentIdx:Li},Or[`graphicalElement${Hr}ShadowSource`]={dependencyType:"shadowSource",componentIdx:Li}}return Or},definition({dependencyValues:Me,componentInfoObjects:Or}){let Hr=[];if(Me.numGraphicalElements>0){let Li=[],ts=[],rs=[],ns=[];for(let ss=0;ss<Me.numGraphicalElements;ss++){let ls=Me[`graphicalElement${ss}`],us=Me[`graphicalElement${ss}AdapterSource`];us&&(ls={...ls},ls.componentIdx=us.componentIdx);let cs=Me[`graphicalElement${ss}ShadowSource`];if(cs){const ds=JSON.parse(JSON.stringify(ls));ds.componentIdx=cs.componentIdx,ns.push(ds)}ns.push(ls)}let is=ns.map(ss=>ss.componentIdx),as=[],os={};for(let ss of Me.labelChildren){let ls={value:ss.stateValues.value,hasLatex:ss.stateValues.hasLatex};if(ss.stateValues.forObjectComponentIdx){os[ss.stateValues.forObjectComponentIdx]=ls;let us=is.indexOf(ss.stateValues.forObjectComponentIdx);if(us!==-1){let cs=ns[us];Or.isInheritedComponentType({inheritedComponentType:cs.componentType,baseComponentType:"point"})?Li.push(cs.stateValues.styleNumber):Me.displayClosedSwatches&&Or.allComponentClasses[cs.componentType].representsClosedPath?ts.push(cs.stateValues.styleNumber):cs.componentType!=="legend"&&rs.push(cs.stateValues.styleNumber)}}as.push({labelInfo:ls,forObject:ss.stateValues.forObjectComponentIdx})}for(let ss of as){let ls;if(ss.forObject){let us=is.indexOf(ss.forObject);us!==-1&&(ls=ns[us],ns.splice(us,1),is.splice(us,1))}else for(let us=0;us<ns.length;us++){let cs=ns[us];if(!(cs.componentIdx in os)){if(Or.isInheritedComponentType({inheritedComponentType:cs.componentType,baseComponentType:"point"})){if(!Li.includes(cs.stateValues.styleNumber)){ls=cs;break}}else if(Me.displayClosedSwatches&&Or.allComponentClasses[cs.componentType].representsClosedPath){if(!ts.includes(cs.stateValues.styleNumber)){ls=cs;break}}else if(cs.componentType!=="legend"&&!rs.includes(cs.stateValues.styleNumber)){ls=cs;break}}}if(ls){let us=ls.stateValues.selectedStyle,cs=ls.stateValues.styleNumber;Or.isInheritedComponentType({inheritedComponentType:ls.componentType,baseComponentType:"point"})?(Li.push(cs),Hr.push({swatchType:"marker",markerStyle:us.markerStyle,markerColor:us.markerColor,markerSize:us.markerSize,lineOpacity:us.lineOpacity,label:ss.labelInfo})):Me.displayClosedSwatches&&Or.allComponentClasses[ls.componentType].representsClosedPath?(ts.push(cs),Hr.push({swatchType:"rectangle",lineStyle:us.lineStyle,lineColor:us.lineColor,lineWidth:us.lineWidth,lineOpacity:us.lineOpacity,fillColor:us.fillColor,filled:ls.stateValues.filled,fillOpacity:us.fillOpacity,label:ss.labelInfo})):(rs.push(cs),Hr.push({swatchType:"line",lineStyle:us.lineStyle,lineColor:us.lineColor,lineWidth:us.lineWidth,lineOpacity:us.lineOpacity,label:ss.labelInfo}))}}}return{setValue:{legendElements:Hr}}}},ae.graphLimits={forRenderer:!0,returnDependencies:()=>({graphAncestor:{dependencyType:"ancestor",componentType:"graph",variableNames:["xMin","xMax","yMin","yMax"]}}),definition({dependencyValues:Me}){return Me.graphAncestor?{setValue:{graphLimits:Me.graphAncestor.stateValues}}:{setValue:{graphLimits:null}}}},ae}}const BLANK="_";function parameterKey(Br){if(isValidVariable({tree:Br}))return typeof Br=="string"?"s"+Br:"t"+JSON.stringify(Br)}function replacePlaceholders(Br,ae){let Me=ae(Br);return Me!==void 0?Me:Array.isArray(Br)?[Br[0],...Br.slice(1).map(Or=>replacePlaceholders(Or,ae))]:Br}class MatchesPattern extends BooleanComponent{static componentType="matchesPattern";static componentDocs={summary:"Boolean condition that tests whether input matches a math pattern"};static rendererType="boolean";static createAttributesObject(){let ae=super.createAttributesObject();return ae.pattern={createComponentOfType:"math",description:"Math expression pattern to match against.",highlighted:!0},ae.parameters={createComponentOfType:"_variableNameList",description:"Variables in the pattern that act as placeholders. Repeating one in the pattern requires the same subexpression at each occurrence. When specified, blanks in the pattern are matched literally.",highlighted:!0},ae.allowImplicitIdentities={description:"Whether to allow implicit identity transformations when matching.",createComponentOfType:"boolean",createStateVariable:"allowImplicitIdentities",defaultValue:!1,public:!0,highlighted:!0},ae.allowPermutations={description:"Whether to allow permutations of operands when matching.",createComponentOfType:"boolean",createStateVariable:"allowPermutations",defaultValue:!0,public:!0,highlighted:!0},ae.requireNumericMatches={description:"Whether numeric placeholders must match numbers.",createComponentOfType:"boolean",createStateVariable:"requireNumericMatches",defaultValue:!1,public:!0,highlighted:!0},ae.requireVariableMatches={description:"Whether variable placeholders must match variables.",createComponentOfType:"boolean",createStateVariable:"requireVariableMatches",defaultValue:!1,public:!0,highlighted:!0},ae.excludeMatches={description:"Patterns whose matches are excluded.",createComponentOfType:"mathList",createStateVariable:"excludeMatches",defaultValue:[],public:!0,highlighted:!0},ae.matchExpressionWithBlanks={description:"Whether to allow expressions with blanks to match.",createComponentOfType:"boolean",createStateVariable:"matchExpressionWithBlanks",defaultValue:!1,public:!0,highlighted:!0},ae}static additionalSchemaChildren=["string"];static returnSugarInstructions(){let ae=[],Me=function({matchedChildren:Or,componentInfoObjects:Hr,nComponents:Li,stateIdInfo:ts}){return Or.length===0||Or.length===1&&Hr.componentIsSpecifiedType(Or[0],"math")?{success:!1}:{success:!0,newChildren:[{type:"serialized",componentType:"math",componentIdx:Li++,stateId:ts?`${ts.prefix}${ts.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}],nComponents:Li}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"maths",componentTypes:["math"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return delete ae.parsedExpression,delete ae.mathChildrenByCode,ae.pattern={additionalStateVariablesDefined:["patternVariables"],returnDependencies:()=>({patternAttr:{dependencyType:"attributeComponent",attributeName:"pattern",variableNames:["value"]},parametersAttr:{dependencyType:"attributeComponent",attributeName:"parameters",variableNames:["variables"]}}),definition({dependencyValues:Me}){let Or=[];if(!Me.patternAttr)return{setValue:{pattern:BLANK,patternVariables:Or}};let Hr=Me.patternAttr.stateValues.value,Li=Hr.variables(),ts=703;function rs(){let cs=numberToLetters(ts);for(ts++;Li.includes(cs);)cs=numberToLetters(ts),ts++;return cs}if(!Me.parametersAttr)return{setValue:{pattern:replacePlaceholders(Hr.tree,ds=>{if(ds!==BLANK)return;let ps=rs();return Or.push(ps),ps}),patternVariables:Or}};let ns=Me.parametersAttr.position||void 0,is=[],as=new Map,os=new Map;for(let cs of Me.parametersAttr.stateValues.variables){let ds=parameterKey(cs.tree);if(ds===void 0||as.has(ds))continue;let ps=rs();as.set(ds,ps),os.set(ps,cs.toString()),Or.push(ps)}let ss=new Set,ls=replacePlaceholders(Hr.tree,cs=>{let ds=as.get(parameterKey(cs));return ds!==void 0&&ss.add(ds),ds}),us=[...os].filter(([cs])=>!ss.has(cs)).map(([cs,ds])=>ds);return us.length>0&&is.push(codedDiagnostic({type:"warning",code:"doenet-w0117",args:{parameters:us},position:ns})),{setValue:{pattern:ls,patternVariables:Or},sendDiagnostics:is}}},ae.value={description:"Whether the input matches the pattern.",additionalStateVariablesDefined:[{variableName:"allPatternMatches"}],public:!0,highlighted:!0,shadowingInstructions:{createComponentOfType:"boolean"},forRenderer:!0,returnDependencies:()=>({pattern:{dependencyType:"stateVariable",variableName:"pattern"},patternVariables:{dependencyType:"stateVariable",variableName:"patternVariables"},mathChildren:{dependencyType:"child",childGroups:["maths"],variableNames:["value"]},allowImplicitIdentities:{dependencyType:"stateVariable",variableName:"allowImplicitIdentities"},allowPermutations:{dependencyType:"stateVariable",variableName:"allowPermutations"},requireNumericMatches:{dependencyType:"stateVariable",variableName:"requireNumericMatches"},requireVariableMatches:{dependencyType:"stateVariable",variableName:"requireVariableMatches"},excludeMatches:{dependencyType:"stateVariable",variableName:"excludeMatches"},matchExpressionWithBlanks:{dependencyType:"stateVariable",variableName:"matchExpressionWithBlanks"}}),definition:function({dependencyValues:Me}){if(Me.mathChildren.length===0)return{setValue:{value:!1,allPatternMatches:[]}};let Or=Me.mathChildren[0].stateValues.value;if(Or.variables().includes(BLANK)&&!Me.matchExpressionWithBlanks)return{setValue:{value:!1,allPatternMatches:[]}};let Hr={};if(Me.requireNumericMatches){let is=as=>!Number.isNaN(Context.fromAst(as).evaluate_to_constant());Me.patternVariables.forEach(as=>Hr[as]=is)}else if(Me.requireVariableMatches){let is=as=>typeof as=="string";Me.patternVariables.forEach(as=>Hr[as]=is)}else Me.patternVariables.forEach(is=>Hr[is]=!0);let Li={variables:Hr,allow_permutations:Me.allowPermutations};Me.allowImplicitIdentities&&(Li.allow_implicit_identities=Me.patternVariables);let ts=Or.match(Me.pattern,Li),rs=!1,ns=[];return ts&&(Object.values(ts).map(is=>Context.fromAst(is)).some(is=>Me.excludeMatches.some(as=>is.variables().some(os=>as.equalsViaSyntax(Context.fromAst(os)))))||(rs=!0,ns=Me.patternVariables.map(is=>Context.fromAst(ts[is]??BLANK)))),{setValue:{value:rs,allPatternMatches:ns}}}},ae.numMatches={description:"The number of matches found.",public:!0,highlighted:!0,shadowingInstructions:{createComponentOfType:"number"},returnDependencies:()=>({allPatternMatches:{dependencyType:"stateVariable",variableName:"allPatternMatches"}}),definition({dependencyValues:Me}){return{setValue:{numMatches:Me.allPatternMatches.length},checkForActualChange:{numMatches:!0}}}},ae.patternMatches={description:"The list of matched sub-expressions.",public:!0,highlighted:!0,shadowingInstructions:{createComponentOfType:"math"},isArray:!0,numDimensions:1,entryPrefixes:["patternMatch"],returnArraySizeDependencies:()=>({numMatches:{dependencyType:"stateVariable",variableName:"numMatches"}}),returnArraySize({dependencyValues:Me}){return[Me.numMatches]},returnArrayDependenciesByKey(){return{globalDependencies:{allPatternMatches:{dependencyType:"stateVariable",variableName:"allPatternMatches"}}}},arrayDefinitionByKey({globalDependencyValues:Me}){let Or={};for(let Hr=0;Hr<Me.__array_size[0];Hr++)Or[Hr]=Me.allPatternMatches[Hr];return{setValue:{patternMatches:Or}}}},ae}}class Matrix extends MathComponent{static componentType="matrix";static componentDocs={summary:"A matrix of math values",childAliases:{row:"matrixRow",column:"matrixColumn"}};static rendererType="math";static additionalSchemaChildren=["row","column"];static returnChildGroups(){return[{group:"rows",componentTypes:["matrixRow"]},{group:"columns",componentTypes:["matrixColumn"]},{group:"maths",componentTypes:["math"],excludeFromSchema:!0}]}static createAttributesObject(){let ae=super.createAttributesObject();return ae.defaultEntry={createComponentOfType:"math",createStateVariable:"defaultEntry",defaultValue:Context.fromAst(0),description:"Value used for entries that aren't explicitly specified."},ae.numRows={createComponentOfType:"integer",description:"Number of rows in the matrix."},ae.numColumns={createComponentOfType:"integer",description:"Number of columns in the matrix."},ae}static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,componentInfoObjects:Hr,nComponents:Li,stateIdInfo:ts}){if(Or.length===0)return{success:!1};let rs=[],ns=!1;for(let is of Or)typeof is!="string"&&(is.doenetAttributes||(is.doenetAttributes={}),is.componentType==="column"?(is.doenetAttributes.createNameFromComponentType="column",is.componentType="matrixColumn",ns=!0):is.componentType==="row"?(is.doenetAttributes.createNameFromComponentType="row",is.componentType="matrixRow",ns=!0):is.attributes?.createComponentOfType?.primitive.value==="column"?(is.doenetAttributes.createNameFromComponentType="column",is.attributes.createComponentOfType.primitive.value="matrixColumn",ns=!0):is.attributes?.createComponentOfType?.primitive.value==="row"&&(is.doenetAttributes.createNameFromComponentType="row",is.attributes.createComponentOfType.primitive.value="matrixRow",ns=!0),rs.push(is));return ns||(Or.length>1||!Hr.componentIsSpecifiedType(Or[0],"math"))&&(rs=[{type:"serialized",componentType:"math",componentIdx:Li++,stateId:ts?`${ts.prefix}${ts.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}]),{success:!0,newChildren:rs,nComponents:Li}};return ae.push({replacementFunction:Me}),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return delete ae.codePre,delete ae.mathChildrenFunctionSymbols,delete ae.expressionWithCodes,delete ae.mathChildrenWithCanBeModified,delete ae.codesAdjacentToStrings,delete ae.canBeModified,delete ae.mathChildrenByVectorComponent,Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.unordered={description:"Whether matrix entries should be treated as unordered.",public:!0,shadowingInstructions:{createComponentOfType:"boolean"},returnDependencies:()=>({}),definition(){return{setValue:{unordered:!1}}}},ae.matrixSizePre={returnDependencies:()=>({rowChildren:{dependencyType:"child",childGroups:["rows"],variableNames:["numComponents"]},colChildren:{dependencyType:"child",childGroups:["columns"],variableNames:["numComponents"]},mathChildren:{dependencyType:"child",childGroups:["maths"],variableNames:["matrixSize"]},numRowsAttr:{dependencyType:"attributeComponent",attributeName:"numRows",variableNames:["value"]},numColumnsAttr:{dependencyType:"attributeComponent",attributeName:"numColumns",variableNames:["value"]}}),definition({dependencyValues:Me}){let Or=null,Hr=null;return Me.numRowsAttr&&(Or=Me.numRowsAttr.stateValues.value,Number.isFinite(Or)&&Or>0||(Or=null)),Me.numColumnsAttr&&(Hr=Me.numColumnsAttr.stateValues.value,Number.isFinite(Hr)&&Hr>0||(Hr=null)),Me.rowChildren.length>0?(Or===null&&(Or=Me.rowChildren.length),Hr===null&&(Hr=Math.max(1,...Me.rowChildren.map(Li=>Li.stateValues.numComponents)))):Me.colChildren.length>0?(Hr===null&&(Hr=Me.colChildren.length),Or===null&&(Or=Math.max(1,...Me.colChildren.map(Li=>Li.stateValues.numComponents)))):Me.mathChildren.length===1?(Or===null&&(Or=Me.mathChildren[0].stateValues.matrixSize[0]),Hr===null&&(Hr=Me.mathChildren[0].stateValues.matrixSize[1])):Or===null?Hr===null?(Or=0,Hr=0):Or=1:Hr===null&&(Hr=1),{setValue:{matrixSizePre:[Or,Hr]}}}},ae.matrixPre={isArray:!0,numDimensions:2,hasEssential:!0,returnArraySizeDependencies:()=>({matrixSizePre:{dependencyType:"stateVariable",variableName:"matrixSizePre"}}),returnArraySize({dependencyValues:Me}){return Me.matrixSizePre},returnArrayDependenciesByKey:({arrayKeys:Me})=>{let Or={defaultEntry:{dependencyType:"stateVariable",variableName:"defaultEntry"},rowChildIdentities:{dependencyType:"child",childGroups:["rows"]},colChildIdentities:{dependencyType:"child",childGroups:["columns"]}},Hr={};for(let Li of Me){let[ts,rs]=Li.split(",");Hr[Li]={rowChild:{dependencyType:"child",childGroups:["rows"],childIndices:[ts],variableNames:["math"+(Number(rs)+1)]},colChild:{dependencyType:"child",childGroups:["columns"],childIndices:[rs],variableNames:["math"+(Number(ts)+1)]},mathChild:{dependencyType:"child",childGroups:["maths"],childIndices:[0],variableNames:["matrixEntry"+(Number(ts)+1)+"_"+(Number(rs)+1)]}}}return{globalDependencies:Or,dependenciesByKey:Hr}},arrayDefinitionByKey({globalDependencyValues:Me,dependencyValuesByKey:Or,arrayKeys:Hr,arraySize:Li}){let ts={},rs={},ns=Me.rowChildIdentities.length>0,is=Me.colChildIdentities.length>0;for(let as of Hr){let[os,ss]=as.split(","),ls;ns?ls=Or[as].rowChild[0]?.stateValues["math"+(Number(ss)+1)]:is?ls=Or[as].colChild[0]?.stateValues["math"+(Number(os)+1)]:ls=Or[as].mathChild[0]?.stateValues["matrixEntry"+(Number(os)+1)+"_"+(Number(ss)+1)],ls===void 0?rs[as]={defaultValue:Me.defaultEntry}:ts[as]=ls}return{setValue:{matrixPre:ts},useEssentialOrDefaultValue:{matrixPre:rs}}},async inverseArrayDefinitionByKey({desiredStateVariableValues:Me,globalDependencyValues:Or,dependencyValuesByKey:Hr,dependencyNamesByKey:Li}){let ts=[],rs={},ns=Or.rowChildIdentities.length>0,is=Or.colChildIdentities.length>0;for(let as in Me.matrixPre){let[os,ss]=as.split(",");ns?Hr[as].rowChild[0]?.stateValues["math"+(Number(ss)+1)]===void 0?rs[as]=Me.matrixPre[as]:ts.push({setDependency:Li[as].rowChild,desiredValue:Me.matrixPre[as],childIndex:0,variableIndex:0}):is?Hr[as].colChild[0]?.stateValues["math"+(Number(os)+1)]===void 0?rs[as]=Me.matrixPre[as]:ts.push({setDependency:Li[as].colChild,desiredValue:Me.matrixPre[as],childIndex:0,variableIndex:0}):Hr[as].mathChild[0]?.stateValues["matrixEntry"+(Number(os)+1)+"_"+(Number(ss)+1)]===void 0?rs[as]=Me.matrixPre[as]:ts.push({setDependency:Li[as].mathChild,desiredValue:Me.matrixPre[as],childIndex:0,variableIndex:0})}return Object.keys(rs).length>0&&ts.push({setEssentialValue:"matrixPre",value:rs}),{success:!0,instructions:ts}}},ae.unnormalizedValue={returnDependencies:()=>({matrixPre:{dependencyType:"stateVariable",variableName:"matrixPre"},matrixSizePre:{dependencyType:"stateVariable",variableName:"matrixSizePre"}}),hasEssential:!0,defaultValue:Context.fromAst(["matrix",["tuple",0,0],["tuple"]]),definition({dependencyValues:Me}){let Or=["tuple"];for(let Li=0;Li<Me.matrixSizePre[0];Li++)Or.push(["tuple",...Me.matrixPre[Li].map(ts=>ts.tree)]);return{setValue:{unnormalizedValue:Context.fromAst(["matrix",["tuple",...Me.matrixSizePre],Or])}}},inverseDefinition({dependencyValues:Me,desiredStateVariableValues:Or}){let Hr=Or.unnormalizedValue.tree;if(!(Array.isArray(Hr)&&Hr[0]==="matrix"&&Hr[1]?.[1]===Me.matrixSizePre[0]&&Hr[1]?.[2]===Me.matrixSizePre[1]))return{success:!1};let Li={};for(let ts=0;ts<Me.matrixSizePre[0];ts++)for(let rs=0;rs<Me.matrixSizePre[1];rs++)Li[`${ts},${rs}`]=Context.fromAst(Hr[2][ts+1][rs+1]);return{success:!0,instructions:[{setDependency:"matrixPre",desiredValue:Li}]}}},ae.canBeModified={returnDependencies:()=>({modifyIndirectly:{dependencyType:"stateVariable",variableName:"modifyIndirectly"},fixed:{dependencyType:"stateVariable",variableName:"fixed"}}),definition({dependencyValues:Me}){return{setValue:{canBeModified:Me.modifyIndirectly&&!Me.fixed}}}},ae}}const{eigs,square,abs,divide}=Context.math;class EigenDecomposition extends BaseComponent{static componentType="eigenDecomposition";static rendererType=void 0;static componentDocs={summary:"Computes the eigenvalues and eigenvectors of a square matrix"};static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnNumberDisplayAttributes()),ae}static returnChildGroups(){return[{group:"maths",componentTypes:["math"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.decomposition={description:"The eigendecomposition of the matrix as a list of eigenvalue/eigenvector pairs.",additionalStateVariablesDefined:[{variableName:"numEigenvectors",description:"The number of eigenvectors found in the decomposition.",public:!0,shadowingInstructions:{createComponentOfType:"integer"}}],returnDependencies:()=>({mathChild:{dependencyType:"child",childGroups:["maths"],variableNames:["value"]}}),definition({dependencyValues:Me}){if(Me.mathChild.length===0)return{setValue:{decomposition:null,numEigenvectors:0}};let Or=Me.mathChild[0].stateValues.value.tree;if(!Array.isArray(Or)||Or[0]!=="matrix")return{setValue:{decomposition:null,numEigenvectors:0}};let Hr=Or[1][1],Li=Or[1][2];if(!(Number.isInteger(Hr)&&Li===Hr))return{setValue:{decomposition:null,numEigenvectors:0}};let ts=[];for(let ns=0;ns<Hr;ns++){let is=[],as=Or[2][ns+1]||[];for(let os=0;os<Li;os++){let ss=as[os+1];if(ss==null)return{setValue:{decomposition:null,numEigenvectors:0}};if(typeof ss=="number"||typeof ss?.re=="number"&&typeof ss?.im=="number")is.push(ss);else try{ss=Context.fromAst(ss).evaluate_to_constant(),typeof ss=="number"||typeof ss?.re=="number"&&typeof ss?.im=="number"?is.push(ss):is.push(NaN)}catch{is.push(NaN)}}ts.push(is)}let rs;try{rs=eigs(ts)}catch(ns){console.error("Could nt calculate eigenvalues of matrix",ns);let is=codedDiagnostic({type:"warning",code:"doenet-w0059"});return{setValue:{decomposition:null,numEigenvectors:0},sendDiagnostics:[is]}}return{setValue:{decomposition:rs,numEigenvectors:rs.eigenvectors.length}}}},ae.eigenvalues={description:"The eigenvalues of the matrix.",isArray:!0,public:!0,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing()},entryPrefixes:["eigenvalue"],returnArraySizeDependencies:()=>({decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}),returnArraySize({dependencyValues:Me}){let Or;return Me.decomposition?Or=Me.decomposition.values.length:Or=0,[Or]},returnArrayDependenciesByKey(){return{globalDependencies:{decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arraySize:Or}){let Hr=[];for(let Li=0;Li<Or[0];Li++)Hr.push(Me.decomposition.values[Li]);return{setValue:{eigenvalues:Hr}}}},ae.eigenvectors={description:"The eigenvectors of the matrix, as a 2D array (one column per eigenvalue).",isArray:!0,public:!0,numDimensions:2,shadowingInstructions:{createComponentOfType:"number",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing(),returnWrappingComponents(Me){return Me==="eigenvectorX"?[]:[["vector",{componentType:"mathList",isAttributeNamed:"xs"}]]}},getArrayKeysFromVarName({arrayEntryPrefix:Me,varEnding:Or,arraySize:Hr}){if(Me==="eigenvectorX"){let Li=Or.split("_").map(ts=>Number(ts)-1);return Li.length===2&&Li.every((ts,rs)=>Number.isInteger(ts)&&ts>=0)?Hr?Li.every((ts,rs)=>ts<Hr[rs])?[String(Li)]:[]:[String(Li)]:[]}else{let Li=Number(Or)-1;return Number.isInteger(Li)&&Li>=0?Hr?Li<Hr[0]?Array.from(Array(Hr[1]),(ts,rs)=>Li+","+rs):[]:[Li+",0"]:[]}},arrayVarNameFromPropIndex(Me,Or){if(Or==="eigenvectors")return Me.length===1?"eigenvector"+Me[0]:`eigenvectorX${Me[0]}_${Me[1]}`;if(Or.slice(0,11)==="eigenvector"){let Hr=Number(Or.slice(11));if(Number.isInteger(Hr)&&Hr>0)return`eigenvectorX${Hr}_${Me[0]}`}return null},indexAliases:[[],["x","y","z"]],entryPrefixes:["eigenvectorX","eigenvector"],returnEntryDimensions:Me=>Me==="eigenvector"?1:0,returnArraySizeDependencies:()=>({decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}),returnArraySize({dependencyValues:Me}){let Or,Hr;return Me.decomposition?(Or=Me.decomposition.eigenvectors.length,Hr=Me.decomposition.eigenvectors[0].vector.length):(Or=0,Hr=0),[Or,Hr]},returnArrayDependenciesByKey(){return{globalDependencies:{decomposition:{dependencyType:"stateVariable",variableName:"decomposition"}}}},arrayDefinitionByKey({globalDependencyValues:Me,arraySize:Or}){let Hr={};for(let Li=0;Li<Or[0];Li++){let ts=[],rs=0;for(let ns=0;ns<Or[1];ns++){let is=Me.decomposition.eigenvectors[Li].vector[ns];ts.push(is),rs+=square(abs(is))}rs=Math.sqrt(rs),ts=ts.map(ns=>divide(ns,rs));for(let ns=0;ns<Or[1];ns++)Hr[`${Li},${ns}`]=ts[ns]}return{setValue:{eigenvectors:Hr}}}},ae}}class Latex extends Text{static componentType="latex";static componentDocs={summary:"A snippet of LaTeX that can be rendered as math"};static rendererType="text";static createAttributesObject(){let ae=super.createAttributesObject();return ae.isLatex.defaultValue=!0,ae}static returnChildGroups(){let ae=super.returnChildGroups();return ae[0].componentTypes.push("math","m","md"),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.value.returnDependencies=()=>({mathTextLikeChildren:{dependencyType:"child",childGroups:["textLike"],variableNames:["text","latex"],variablesOptional:!0}}),ae.value.definition=function({dependencyValues:Me}){if(Me.mathTextLikeChildren.length===0)return{useEssentialOrDefaultValue:{value:!0}};let Or=[];for(let Li of Me.mathTextLikeChildren)if(typeof Li=="string"){let ts=Li.trim();ts&&Or.push(ts)}else if(Li.stateValues.latex!==void 0){let ts=Li.stateValues.latex.trim();ts&&Or.push(ts)}else{let ts=Li.stateValues.text.trim();ts&&Or.push(ts)}return{setValue:{value:Or.join(" ")}}},ae.value.inverseDefinition=function({desiredStateVariableValues:Me,dependencyValues:Or}){let Hr=Or.mathTextLikeChildren.length;return Hr>1?{success:!1}:Hr===1?{success:!0,instructions:[{setDependency:"textLikeChildren",desiredValue:Me.value,childIndex:0,variableIndex:Or.textLikeChildren[0].stateValues?.latex===void 0?0:1}]}:{success:!0,instructions:[{setEssentialValue:"value",value:Me.value===null?"":String(Me.value)}]}},ae.latex={isAlias:!0,targetVariableName:"value",description:"The LaTeX content as a string."},ae}}class BlockQuote extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="blockQuote";static rendererType="blockQuote";static renderChildren=!0;static canDisplayChildErrors=!0;static includeBlankStringChildren=!0;static componentDocs={summary:"A block-level quotation"};static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnPassThroughListItemChildStateVariableDefinitions()),ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}class Description extends BlockComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this)})}static componentType="description";static componentDocs={summary:"Extra information about an enclosing component, shown to all users in a popup or disclosure"};static rendererType="containerBlock";static renderChildren=!0;static canDisplayChildErrors=!0;static includeBlankStringChildren=!0;static inSchemaOnlyInheritAs=[];static returnChildGroups(){return[{group:"anything",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnPassThroughListItemChildStateVariableDefinitions()),ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}}const{mod:mod$1}=Context.math;function findAttractedSegmentPointsSub({point1:Br,point2:ae,scales:Me,threshold2:Or,numericalNearestPointFunction:Hr,numericalNearestPointAsLineFunction:Li,verifyNotOneSided:ts=!0}){let rs=1e-6,ns=rs**2,is=Li(Br,Me);if(!is)return{success:!1};let as=is.reduce((ss,ls,us)=>ss+Math.pow(ls-Br[us],2),0);if(as>=Or)return{success:!1};let os=Li(ae,Me);if(!os)return{success:!1};if(as=os.reduce((ss,ls,us)=>ss+Math.pow(ls-ae[us],2),0),as>=Or)return{success:!1};if(ts){let ss=Hr(Br,Me),ls=ss&&ss.every((ds,ps)=>Math.abs(ds-is[ps])<rs),us=Hr(ae,Me),cs=us&&us.every((ds,ps)=>Math.abs(ds-os[ps])<rs);if(!(ls||cs)&&(as=ss.reduce((ds,ps,ms)=>ds+Math.pow(ps-us[ms],2),0),as<ns))return{success:!1}}return{success:!0,nearestPoint1:is,nearestPoint2:os}}function findAttractedSegmentPoints({point1:Br,point2:ae,allowRotation:Me,scales:Or,threshold2:Hr,numericalNearestPointFunction:Li,numericalNearestPointAsLineFunction:ts}){let rs=findAttractedSegmentPointsSub({point1:Br,point2:ae,scales:Or,threshold2:Hr,numericalNearestPointFunction:Li,numericalNearestPointAsLineFunction:ts,verifyNotOneSided:!0});if(!rs.success)return{success:!1};let ns=1e-6,is=ns**2,{nearestPoint1:as,nearestPoint2:os}=rs;if(!Me){let bs=[ae[0]-Br[0],ae[1]-Br[1]],vs=[os[0]-as[0],os[1]-as[1]],Cs=Math.atan2(vs[1],vs[0])-Math.atan2(bs[1],bs[0]);if(Cs=mod$1(Cs+Math.PI,2*Math.PI)-Math.PI,Math.abs(Cs)>ns)return{success:!1}}let ss=Br.reduce((bs,vs,Cs)=>bs+Math.pow(vs-ae[Cs],2),0),ls=as.reduce((bs,vs,Cs)=>bs+Math.pow(vs-os[Cs],2),0);if(Math.abs(ss-ls)<is){let bs=as.reduce((vs,Cs,Ts)=>vs+Math.pow(Cs-Br[Ts],2),0)+os.reduce((vs,Cs,Ts)=>vs+Math.pow(Cs-ae[Ts],2),0);return bs<Hr?{success:!0,distance2:bs,segment:[as,os]}:{success:!1}}if(ls>ss)return{success:!1};let us=Math.sqrt(ss/ls),cs=Math.sqrt(Br.reduce((bs,vs,Cs)=>bs+Math.pow(vs-as[Cs],2),0)),ds=Math.sqrt(ae.reduce((bs,vs,Cs)=>bs+Math.pow(vs-os[Cs],2),0)),ps=cs/(cs+ds),ms=1-ps,fs=(us-1)*ps+1,hs=(us-1)*ms+1,ys=os.map((bs,vs)=>bs+(as[vs]-bs)*fs),gs=as.map((bs,vs)=>bs+(os[vs]-bs)*hs);if(rs=findAttractedSegmentPointsSub({point1:ys,point2:gs,scales:Or,threshold2:is,numericalNearestPointFunction:Li,numericalNearestPointAsLineFunction:ts,verifyNotOneSided:!1}),!rs.success)return{success:!1};let xs=ys.reduce((bs,vs,Cs)=>bs+Math.pow(vs-Br[Cs],2),0)+gs.reduce((bs,vs,Cs)=>bs+Math.pow(vs-ae[Cs],2),0);return xs<Hr?{success:!0,distance2:xs,segment:[ys,gs]}:{success:!1}}function attractSegment({segment:Br,allowRotation:ae,scales:Me,threshold2:Or,numericalNearestPointFunctions:Hr,numericalNearestPointAsLineFunctions:Li}){let ts=Br[0],rs=Br[1];if(ts.length!=rs.length)return{};let ns,is=1/0,as=ae?Or*1e3:Or;for(let[os,ss]of Hr.entries()){let ls=Li[os],us=findAttractedSegmentPoints({point1:ts,point2:rs,allowRotation:ae,scales:Me,threshold2:as,numericalNearestPointFunction:ss,numericalNearestPointAsLineFunction:ls});us.success&&us.distance2<is&&(is=us.distance2,ns=us.segment)}return is<Or?{constrained:!0,segment:ns}:is<as?{constrained:!1,distance2:is,segment:ns}:{}}function nearestPointForSegment({point:Br,segment:ae,scales:Me}){let Or=ae[0][0],Hr=ae[0][1],Li=ae[1][0],ts=ae[1][1],rs=Number.isFinite(Or)&&Number.isFinite(Hr)&&Number.isFinite(Li)&&Number.isFinite(ts);if(ae[0].length!==2||!rs||Li===Or&&ts===Hr)return null;let ns=Me[0],is=Me[1],as=(Li-Or)/ns,os=(ts-Hr)/is,ss=as*as+os*os,ls=((Br[0]-Or)/ns*as+(Br[1]-Hr)/is*os)/ss;return ls<=0?[Or,Hr]:ls>=1?[Li,ts]:[Or+ls*as*ns,Hr+ls*os*is]}function nearestPointForSegmentAsLine({point:Br,segment:ae,scales:Me}){let Or=ae[0][0],Hr=ae[0][1],Li=ae[1][0],ts=ae[1][1],rs=Number.isFinite(Or)&&Number.isFinite(Hr)&&Number.isFinite(Li)&&Number.isFinite(ts);if(ae[0].length!==2||!rs||Li===Or&&ts===Hr)return null;let ns=Me[0],is=Me[1],as=(Li-Or)/ns,os=(ts-Hr)/is,ss=as*as+os*os,ls=((Br[0]-Or)/ns*as+(Br[1]-Hr)/is*os)/ss;return[Or+ls*as*ns,Hr+ls*os*is]}const{mod}=Context.math;class StickyGroup extends GraphicalComponent{static componentType="stickyGroup";constructor(ae){super(ae),Object.assign(this.actions,{addChildren:this.addChildren.bind(this),deleteChildren:this.deleteChildren.bind(this)})}static componentDocs={summary:"Constrains group members to attract to each other when nearby"};static rendererType="containerInline";static renderChildren=!0;static createAttributesObject(){let ae=super.createAttributesObject();return ae.relativeToGraphScales={description:"Whether the snapping threshold is interpreted relative to graph scales.",createComponentOfType:"boolean",createStateVariable:"relativeToGraphScales",defaultValue:!1,public:!0},ae.threshold={createComponentOfType:"number",description:"Distance threshold within which group members snap together."},ae.angleThreshold={description:"Angular distance within which group members snap together.",createComponentOfType:"number",createStateVariable:"angleThreshold",defaultValue:Math.PI*.03,public:!0},ae}static returnChildGroups(){let ae=super.returnChildGroups();return ae.push({group:"graphical",componentTypes:["_graphical"]}),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions(),Me=returnConstraintGraphInfoDefinitions();return Object.assign(ae,Me),ae.numObjects={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"]}}),definition({dependencyValues:Or}){return{setValue:{numObjects:Or.graphicalChildren.length}}}},ae.numObjects={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"]}}),definition({dependencyValues:Or}){return{setValue:{numObjects:Or.graphicalChildren.length}}}},ae.pointsByObject={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"],variableNames:["numericalVertices","numericalXs","numericalEndpoints"],variablesOptional:!0}}),definition({dependencyValues:Or}){let Hr=[];for(let Li of Or.graphicalChildren)Li.stateValues.numericalVertices?Hr.push(Li.stateValues.numericalVertices):Li.stateValues.numericalXs?Hr.push([Li.stateValues.numericalXs]):Li.stateValues.numericalEndpoints?Hr.push(Li.stateValues.numericalEndpoints):Hr.push([]);return{setValue:{pointsByObject:Hr}}}},ae.getPointsForObject={returnDependencies:()=>({pointsByObject:{dependencyType:"stateVariable",variableName:"pointsByObject"}}),definition({dependencyValues:Or}){return{setValue:{getPointsForObject:function(Li){return Or.pointsByObject.filter((ts,rs)=>rs!==Li).reduce((ts,rs)=>(ts.push(...rs),ts),[])}}}}},ae.segmentsByObject={returnDependencies:()=>({graphicalChildren:{dependencyType:"child",childGroups:["graphical"],variableNames:["numericalVertices","closed","numericalEndpoints"],variablesOptional:!0}}),definition({dependencyValues:Or}){let Hr=[];for(let Li of Or.graphicalChildren)if(Li.stateValues.numericalVertices){let ts=Li.stateValues.numericalVertices,rs=ts.length,ns=[];for(let is=1;is<rs;is++)ns.push([ts[is-1],ts[is]]);Li.stateValues.closed&&ns.push([ts[rs-1],ts[0]]),Hr.push(ns)}else if(Li.stateValues.numericalEndpoints){let ts=Li.stateValues.numericalEndpoints,rs=ts.length,ns=[];for(let is=1;is<rs;is++)ns.push([ts[is-1],ts[is]]);Hr.push(ns)}else Hr.push([]);return{setValue:{segmentsByObject:Hr}}}},ae.getSegmentsForObject={returnDependencies:()=>({segmentsByObject:{dependencyType:"stateVariable",variableName:"segmentsByObject"}}),definition({dependencyValues:Or}){return{setValue:{getSegmentsForObject:function(Li){return Or.segmentsByObject.filter((ts,rs)=>rs!==Li).reduce((ts,rs)=>(ts.push(...rs),ts),[])}}}}},ae.threshold={description:"Distance within which group members attract each other.",public:!0,shadowingInstructions:{createComponentOfType:"number"},hasEssential:!0,returnDependencies:()=>({thresholdAttr:{dependencyType:"attributeComponent",attributeName:"threshold",variableNames:["value"]},graphXmin:{dependencyType:"stateVariable",variableName:"graphXmin"},relativeToGraphScales:{dependencyType:"stateVariable",variableName:"relativeToGraphScales"}}),definition({dependencyValues:Or}){return Or.thresholdAttr?{setValue:{threshold:Or.thresholdAttr.stateValues.value}}:{useEssentialOrDefaultValue:{threshold:{get defaultValue(){return Or.relativeToGraphScales&&Or.graphXmin!==null?.02:.5}}}}},inverseDefinition({desiredStateVariableValues:Or,dependencyValues:Hr}){return Hr.thresholdAttr?{success:!0,instructions:[{setDependency:"thresholdAttr",desiredValue:Or.threshold}]}:{success:!0,instructions:[{setEssentialValue:"threshold",value:Or.threshold}]}}},ae.verticesConstraintFunction={returnDependencies:()=>({getPointsForObject:{dependencyType:"stateVariable",variableName:"getPointsForObject"},getSegmentsForObject:{dependencyType:"stateVariable",variableName:"getSegmentsForObject"},threshold:{dependencyType:"stateVariable",variableName:"threshold"},angleThreshold:{dependencyType:"stateVariable",variableName:"angleThreshold"},relativeToGraphScales:{dependencyType:"stateVariable",variableName:"relativeToGraphScales"},scales:{dependencyType:"stateVariable",variableName:"scales"}}),definition({dependencyValues:Or}){let Hr;Or.relativeToGraphScales?Hr=Or.scales||[1,1,1]:Hr=[1,1,1];let Li=Or.angleThreshold,ts=function({numericalUnconstrainedEdges:os,allowRotation:ss,enforceRigid:ls,shrinkThreshold:us,rotationPoint:cs},{objectInd:ds}){let ps=Or.getSegmentsForObject(ds),ms=[],fs=[],hs=!1,ys={distance2:1/0},gs=Or.threshold;us&&(gs*=.2);let xs=gs*gs;for(let[bs,vs]of os.entries()){let Cs=[],Ts=[];for(let Ns of ps)Cs.push((ws,Es)=>nearestPointForSegment({point:ws,segment:Ns,scales:Es})),Ts.push((ws,Es)=>nearestPointForSegmentAsLine({point:ws,segment:Ns,scales:Es}));let As=attractSegment({segment:vs,allowRotation:ss,scales:Hr,threshold2:xs,numericalNearestPointFunctions:Cs,numericalNearestPointAsLineFunctions:Ts});As.constrained?(ms.push(As.segment),fs.push(!0),hs=!0):(ms.push(vs),fs.push(!1),!hs&&As.distance2<ys.distance2&&(ys=As,ys.edgeInd=bs))}if(ss&&ls&&!hs&&ys.distance2<1/0){let bs=ys.edgeInd,vs=rotateIfClose({attractedEdgeInd:bs,attractingSegment:ys.segment,angleThreshold:Li,rotationPoint:cs,numericalUnconstrainedEdges:os});vs&&(ms[bs]=vs,fs[bs]=!0,hs=!0)}if(ss&&ls&&!hs){let bs=[0,Math.PI/2],vs=rotateToAttractAngles({numericalUnconstrainedEdges:os,anglesToAttract:bs,angleThreshold:Li,rotationPoint:cs});if(vs){let Cs=vs.rotatedEdgeInd;ms[Cs]=vs.rotatedEdge,fs[Cs]=!0,hs=!0}}return{numericalConstrainedEdges:ms,constraintUsedForEdge:fs}},rs=function({numericalUnconstrainedVertices:os,closed:ss,shrinkThreshold:ls,onlyMoveVertexInd:us=null},{objectInd:cs}){let ds=Or.getPointsForObject(cs),ps=Or.getSegmentsForObject(cs),ms=[],fs=[],hs=Or.threshold;ls&&(hs*=.2);let ys=hs*hs;for(let[vs,Cs]of os.entries()){if(us!==null&&vs!==us){ms.push(Cs),fs.push(!1);continue}let Ts=1/0,As={};for(let Es of ds){if(Cs.length!==Es.length)continue;let Ss=Cs.reduce((Ds,Is,Vs)=>Ds+Math.pow((Is-Es[Vs])/Hr[Vs],2),0);Ss<Ts&&(As=Es,Ts=Ss)}let Ns=!1,ws;if(Ts<ys)Ns=!0,ws=As;else{Ts=1/0,As={};for(let Es of ps){let Ss=nearestPointForSegment({point:Cs,segment:Es,scales:Hr});if(Ss){let Ds=Cs.reduce((Is,Vs,ks)=>Is+Math.pow((Vs-Ss[ks])/Hr[ks],2),0);Ds<Ts&&(As=Ss,Ts=Ds)}}Ts<ys?(Ns=!0,ws=As):ws=Cs}ms.push(ws),fs.push(Ns)}let gs=os.length,xs=ss?gs:gs-1,bs=[];for(let vs=0;vs<xs;vs++){let Cs=(vs+1)%gs;if(!(us!==null&&!(us===vs||us===Cs))&&!(fs[vs]||fs[Cs])){let Ts=os[vs],As=os[Cs],Ns,ws=1/0;for(let Es of ds){let Ss=nearestPointForSegment({point:Es,segment:[Ts,As],scales:Hr});if(Ss){let Ds=Ss.reduce((Is,Vs,ks)=>Is+Math.pow(Vs-Es[ks],2),0);if(Ds<ws)if(us===null){let Is=Ts.map((ks,Gs)=>ks+Es[Gs]-Ss[Gs]),Vs=As.map((ks,Gs)=>ks+Es[Gs]-Ss[Gs]);Ns=[Is,Vs],ws=Ds}else{let Is;us===vs?Is=As:Is=Ts;let Vs=[Es[0]-Is[0],Es[1]-Is[1]],ks=Math.sqrt(Math.pow(Vs[0],2)+Math.pow(Vs[1],2)),Os=Math.sqrt(Math.pow(Ts[0]-As[0],2)+Math.pow(Ts[1]-As[1],2))/ks;if(Os<1)continue;let $s=Is.map((Rs,zs)=>Rs+Vs[zs]*Os),qs;us===vs?(qs=[$s,As],Ds=Math.pow(Ts[0]-$s[0],2)+Math.pow(Ts[1]-$s[1],2)):(qs=[Ts,$s],Ds=Math.pow(As[0]-$s[0],2)+Math.pow(As[1]-$s[1],2)),Ds<ws&&(ws=Ds,Ns=qs)}}}ws<ys&&bs.push({vertexInd1:vs,vertexInd2:Cs,distance2:ws,movedSegment:Ns})}}bs.sort((vs,Cs)=>vs.distance2-Cs.distance2);for(let{vertexInd1:vs,vertexInd2:Cs,movedSegment:Ts}of bs)fs[vs]||fs[Cs]||(fs[vs]=!0,fs[Cs]=!0,ms[vs]=Ts[0],ms[Cs]=Ts[1]);return{numericalConstrainedVertices:ms,constraintUsedForVertex:fs}},ns=returnVertexConstraintFunctionFromEdges(ts),is=returnVertexConstraintFunction(rs);return{setValue:{verticesConstraintFunction:function({unconstrainedVertices:os,closed:ss,enforceRigid:ls,allowRotation:us,rotationPoint:cs,shrinkThreshold:ds,vertexIndMoved:ps},{objectInd:ms}){let fs=ns({unconstrainedVertices:os,closed:ss,enforceRigid:ls,allowRotation:us,rotationPoint:cs,shrinkThreshold:ds,vertexIndMoved:ps},{objectInd:ms});return fs=is({unconstrainedVertices:fs,closed:ss,enforceRigid:ls,shrinkThreshold:ds,vertexIndMoved:ps},{objectInd:ms}),fs}}}}},ae.pointConstraintFunction={returnDependencies:()=>({getPointsForObject:{dependencyType:"stateVariable",variableName:"getPointsForObject"},getSegmentsForObject:{dependencyType:"stateVariable",variableName:"getSegmentsForObject"},threshold:{dependencyType:"stateVariable",variableName:"threshold"},relativeToGraphScales:{dependencyType:"stateVariable",variableName:"relativeToGraphScales"},scales:{dependencyType:"stateVariable",variableName:"scales"}}),definition({dependencyValues:Or}){let Hr;return Or.relativeToGraphScales?Hr=Or.scales||[1,1,1]:Hr=[1,1,1],{setValue:{pointConstraintFunction:function(ts,rs){let ns=ts.map(ls=>findFiniteNumericalValue(ls)),is=Or.getPointsForObject(rs),as=Or.getSegmentsForObject(rs),os=1/0,ss={};for(let ls of is){if(ns.length!==ls.length)continue;let us=ns.reduce((cs,ds,ps)=>cs+Math.pow((ds-ls[ps])/Hr[ps],2),0);us<os&&(ss=ls,os=us)}if(os<Or.threshold*Or.threshold)return ss.map(ls=>Context.fromAst(ls));os=1/0,ss={};for(let ls of as){let us=nearestPointForSegment({point:ns,segment:ls,scales:Hr});if(us){let cs=ns.reduce((ds,ps,ms)=>ds+Math.pow((ps-us[ms])/Hr[ms],2),0);cs<os&&(ss=us,os=cs)}}return os<Or.threshold*Or.threshold?ss.map(ls=>Context.fromAst(ls)):ts}}}}},ae}async addChildren(ae){return await addChildrenToDynamicChild(this,ae)}async deleteChildren(ae){return await deleteChildrenFromDynamicChild(this,ae)}}function rotateToAttractAngles({numericalUnconstrainedEdges:Br,anglesToAttract:ae,angleThreshold:Me,rotationPoint:Or}){let Hr=1/0,Li;for(let[os,ss]of Br.entries()){let ls=Math.atan((ss[1][1]-ss[0][1])/(ss[1][0]-ss[0][0]));for(let us of ae){let cs=mod(us-ls+Math.PI/2,Math.PI)-Math.PI/2;Math.abs(cs)<Math.abs(Hr)&&(Hr=cs,Li=os)}}if(!(Math.abs(Hr)<Me))return null;let[ts,rs]=Or,ns=Math.cos(Hr),is=Math.sin(Hr),as=Br[Li].map(os=>{let ss=os[0]-ts,ls=os[1]-rs;return[ss*ns-ls*is+ts,ss*is+ls*ns+rs]});return{rotatedEdgeInd:Li,rotatedEdge:as}}function rotateIfClose({attractedEdgeInd:Br,attractingSegment:ae,angleThreshold:Me,rotationPoint:Or,numericalUnconstrainedEdges:Hr}){let Li=Math.atan((ae[1][1]-ae[0][1])/(ae[1][0]-ae[0][0])),ts=Hr[Br],rs=Math.atan((ts[1][1]-ts[0][1])/(ts[1][0]-ts[0][0])),ns=mod(Li-rs+Math.PI/2,Math.PI)-Math.PI/2;if(!(Math.abs(ns)<Me))return null;let[is,as]=Or,os=Math.cos(ns),ss=Math.sin(ns);return Hr[Br].map(us=>{let cs=us[0]-is,ds=us[1]-as;return[cs*os-ds*ss+is,cs*ss+ds*os+as]})}class BlockScoredComponent extends BlockComponent{static componentType="_blockScoredComponent";static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnStandardAnswerAttributes()),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return renameStateVariable({stateVariableDefinitions:ae,oldName:"disabled",newName:"disabledOriginal"}),Object.assign(ae,returnStandardAnswerStateVariableDefinition()),ae}}function parseIntegerResponse(Br){const ae=Br.trim();if(ae==="")return null;const Me=Number(ae);return Number.isInteger(Me)?Me:null}function isDistractorResponse(Br){return Br.trim().toLowerCase()==="x"}function calculateResponseOffset({numericResponse:Br,effectiveProblemNum:ae,numEffectiveProblems:Me}){return(Br-ae+Me)%Me}function calculatePretzelCredit({problemOrder:Br,currentResponses:ae,distractors:Me,mode:Or}){const Hr=new Set(Me),Li=Br.length,ts=Li-Hr.size;if(ts===0)return ae.every(isDistractorResponse)?1:0;const rs=Array(Li).fill(null);let ns=0;for(let ls=0;ls<Li;ls++)Hr.has(ls)||(rs[ls]=ns,ns++);const is=[],as=Or==="circuit"?ts===1?0:1:null;for(let ls=0;ls<Li;ls++){const us=Br[ls],cs=ae[ls]??"";if(Hr.has(us)){if(!isDistractorResponse(cs))return 0;continue}const ds=parseIntegerResponse(cs);if(ds===null)return 0;const ps=rs[us],ms=calculateResponseOffset({numericResponse:ds,effectiveProblemNum:ps,numEffectiveProblems:ts});if(Or==="circuit"){if(ms!==as)return 0;continue}is.push(ms)}if(Or==="circuit")return 1;const os=is[0];return is.every(ls=>ls===os)?1:0}class Pretzel extends BlockScoredComponent{constructor(ae){super(ae),Object.assign(this.actions,{recordVisibilityChange:this.recordVisibilityChange.bind(this),submitAnswer:this.submitAnswer.bind(this)})}static componentType="pretzel";static componentDocs={summary:"A response-matching component where students enter a sequence to match statements and answers"};static renderChildren=!0;static additionalSchemaChildren=["problem"];static additionalSchemaChildrenDoNotInherit=!0;static createAttributesObject(){const ae=super.createAttributesObject();return ae.maxNumColumns={description:"Maximum number of columns when arranging child problems.",createComponentOfType:"integer",createStateVariable:"maxNumColumns",defaultValue:2,public:!0,forRenderer:!0,clamp:[1,4]},ae.mode={description:"Arrangement mode for the child problems.",createPrimitiveOfType:"string",createStateVariable:"mode",defaultValue:"pretzel",public:!0,forRenderer:!0,toLowerCase:!0,validValues:[{value:"pretzel",description:"Interleaved arrangement where each problem's answer feeds the next and one can start with any problem."},{value:"circuit",description:"A variant of the pretzel where one must start with the first problem."}]},ae}static returnChildGroups(){return[{group:"problems",componentTypes:["statement"],excludeFromSchema:!0},{group:"textInputs",componentTypes:["textInput"],excludeFromSchema:!0},{group:"givenAnswers",componentTypes:["span"],excludeFromSchema:!0}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.textInputs={returnDependencies:()=>({textInputs:{dependencyType:"child",childGroups:["textInputs"]}}),definition:function({dependencyValues:Me}){return{setValue:{textInputs:Me.textInputs}}}},ae.problemOrder={stateVariablesDeterminingDependencies:["textInputs"],additionalStateVariablesDefined:["distractors"],returnDependencies({stateValues:Me}){return Me.textInputs.length>0?{problemOrder:{dependencyType:"sourceCompositeStateVariable",replacementIdx:Me.textInputs[0].componentIdx,variableName:"problemOrder"},distractors:{dependencyType:"sourceCompositeStateVariable",replacementIdx:Me.textInputs[0].componentIdx,variableName:"distractors"}}:{}},definition:function({dependencyValues:Me}){return{setValue:{problemOrder:Me.problemOrder??[],distractors:Me.distractors??[]}}}},ae.numProblems={description:"The number of child problems.",public:!0,forRenderer:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({problemChildren:{dependencyType:"child",childGroups:["problems"]}}),definition({dependencyValues:Me}){return{setValue:{numProblems:Me.problemChildren.length}}}},ae.currentResponses={description:"The current responses across all child problems.",public:!0,shadowingInstructions:{createComponentOfType:"text"},isArray:!0,entryPrefixes:["currentResponse"],returnArraySizeDependencies:()=>({numProblems:{dependencyType:"stateVariable",variableName:"numProblems"}}),returnArraySize({dependencyValues:Me}){return[Me.numProblems]},returnArrayDependenciesByKey({arrayKeys:Me}){const Or={};for(const Hr of Me)Or[Hr]={textInput:{dependencyType:"child",childGroups:["textInputs"],childIndices:[Hr],variableNames:["value"]}};return{dependenciesByKey:Or}},arrayDefinitionByKey({dependencyValuesByKey:Me}){const Or={};for(const Hr in Me)Or[Hr]=Me[Hr].textInput[0].stateValues.value;return{setValue:{currentResponses:Or}}}},ae.creditAchievedIfSubmit={returnDependencies:()=>({problemOrder:{dependencyType:"stateVariable",variableName:"problemOrder"},currentResponses:{dependencyType:"stateVariable",variableName:"currentResponses"},distractors:{dependencyType:"stateVariable",variableName:"distractors"},mode:{dependencyType:"stateVariable",variableName:"mode"}}),definition({dependencyValues:Me}){const Or=Me.problemOrder.map(Hr=>Hr-1);return{setValue:{creditAchievedIfSubmit:calculatePretzelCredit({problemOrder:Or,currentResponses:Me.currentResponses,distractors:Me.distractors,mode:Me.mode})}}}},ae.numSubmittedResponses={description:"The number of responses submitted.",public:!0,shadowingInstructions:{createComponentOfType:"number"},hasEssential:!0,defaultValue:0,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{numSubmittedResponses:!0}}),inverseDefinition({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setEssentialValue:"numSubmittedResponses",value:Me.numSubmittedResponses}]}}},ae.submittedResponses={description:"The most recently submitted responses.",public:!0,shadowingInstructions:{createComponentOfType:"text"},isArray:!0,allowExtraArrayKeysInInverse:!0,entryPrefixes:["submittedResponse"],defaultValueByArrayKey:()=>"_",hasEssential:!0,inverseShadowToSetEntireArray:!0,doNotCombineInverseArrayInstructions:!0,returnArraySizeDependencies:()=>({numSubmittedResponses:{dependencyType:"stateVariable",variableName:"numSubmittedResponses"}}),returnArraySize({dependencyValues:Me}){return[Me.numSubmittedResponses]},returnArrayDependenciesByKey(){return{globalDependencies:{numSubmittedResponses:{dependencyType:"stateVariable",variableName:"numSubmittedResponses"}}}},arrayDefinitionByKey({globalDependencyValues:Me}){let Or=[];Me.submittedResponsesComponentType&&Or.push(...Me.submittedResponsesComponentType.slice(0,Me.numSubmittedResponses));let Hr={};for(let Li=0;Li<Me.numSubmittedResponses;Li++)Hr[Li]=!0;return{useEssentialOrDefaultValue:{submittedResponses:Hr}}},inverseArrayDefinitionByKey:function({desiredStateVariableValues:Me,initialChange:Or}){return Or?{success:!0,instructions:[{setDependency:"numSubmittedResponses",desiredValue:Me.submittedResponses.length},{setEssentialValue:"submittedResponses",value:[...Me.submittedResponses]}]}:{success:!1}}},ae.showCheckWork={forRenderer:!0,returnDependencies:()=>({suppressCheckWork:{dependencyType:"stateVariable",variableName:"suppressCheckWork"}}),definition({dependencyValues:Me}){return{setValue:{showCheckWork:!Me.suppressCheckWork}}}},ae}recordVisibilityChange({isVisible:ae}){this.coreFunctions.requestRecordEvent({verb:"visibilityChanged",object:{componentIdx:this.componentIdx,componentType:this.componentType},result:{isVisible:ae}})}async submitAnswer({actionId:ae,sourceInformation:Me={},skipRendererUpdate:Or=!1}){if(await this.stateValues.numAttemptsLeft<1||await this.stateValues.disabled)return;const ts=await this.stateValues.handGraded?0:await this.stateValues.creditAchievedIfSubmit;let rs=[{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"creditAchieved",value:ts},{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"responseHasBeenSubmitted",value:!0}],ns=await this.stateValues.currentResponses;rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"submittedResponses",value:ns}),rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"justSubmitted",value:!0}),rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"creditAchievedDependenciesAtSubmit",value:await this.stateValues.creditAchievedDependencies}),rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"numSubmissions",value:await this.stateValues.numSubmissions+1}),ts<1&&rs.push({updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"numIncorrectSubmissions",value:await this.stateValues.numIncorrectSubmissions+1});const is=[];for(const as of ns)if(as.toString)try{is.push(as.toString())}catch{is.push("_")}else is.push(as);return rs.push({updateType:"recordItemSubmission",componentNumber:await this.stateValues.inComponentNumber,submittedComponent:this.componentIdx,response:ns,responseText:is,creditAchieved:ts}),await this.coreFunctions.performUpdate({updateInstructions:rs,actionId:ae,sourceInformation:Me,skipRendererUpdate:!0,event:{verb:"submitted",object:{componentIdx:this.componentIdx,componentType:this.componentType,answerNumber:this.answerNumber,rootName:this.rootName},result:{response:ns,responseText:is,componentTypes:Array(ns.length).fill("text"),creditAchieved:ts}}}),await this.coreFunctions.triggerChainedActions({componentIdx:this.componentIdx,actionId:ae,sourceInformation:Me,skipRendererUpdate:Or})}}function getCorrespondingAnswerIdx({problemIdx:Br,numProblems:ae,distractorSet:Me}){if(Me.has(Br))return Br;let Or=(Br-1+ae)%ae,Hr=0;for(;Me.has(Or)&&Hr<ae;)Or=(Or-1+ae)%ae,Hr++;return Or}function normalizePretzelMode(Br){return Br?.toLowerCase()==="circuit"?"circuit":"pretzel"}function getProblemIndicesToPermute({numProblems:Br,mode:ae}){const Me=ae==="circuit"?2:1;return[...Array(Math.max(Br-Me+1,0)).keys()].map(Or=>Or+Me)}function buildProblemOrderFromPermutedIndices({permutedIndices:Br,numProblems:ae,mode:Me}){return Me==="circuit"?ae===0?[]:[1,...Br]:Br}function determineNumberOfPermutations({numProblems:Br,mode:ae}){const Me=getProblemIndicesToPermute({numProblems:Br,mode:ae}).length;let Or=1;for(let Hr=2;Hr<=Me;Hr++)Or*=Hr;return Or}function shuffleProblemOrder({numProblems:Br,variantRng:ae,mode:Me}){const Or=getProblemIndicesToPermute({numProblems:Br,mode:Me});for(let Hr=Or.length-1;Hr>0;Hr--){const Li=ae(),ts=Math.floor(Li*(Hr+1));[Or[Hr],Or[ts]]=[Or[ts],Or[Hr]]}return buildProblemOrderFromPermutedIndices({permutedIndices:Or,numProblems:Br,mode:Me})}class PretzelArranger extends CompositeComponent{static componentType="_pretzelArranger";static componentDocs={summary:"Internal arranger that lays out subset visualizations within <pretzel>."};static createsVariants=!0;static serializeReplacementsForChildren=!0;static replacementsAlreadyInResolver=!0;static useSerializedChildrenComponentIndices=!0;static createAttributesObject(){const ae=super.createAttributesObject();return ae.mode={createPrimitiveOfType:"string",createStateVariable:"mode",defaultValue:"pretzel",toLowerCase:!0,validValues:[{value:"pretzel",description:"Interleaved arrangement where each problem's answer feeds the next and one can start with any problem."},{value:"circuit",description:"A variant of the pretzel where one must start with the first problem."}]},ae}static keepChildrenSerialized({serializedComponent:ae}){return ae.children===void 0?[]:Object.keys(ae.children)}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.serializedProblemChildren={returnDependencies:()=>({serializedChildren:{dependencyType:"serializedChildren",doNotProxy:!0}}),definition:function({dependencyValues:Me}){return{setValue:{serializedProblemChildren:Me.serializedChildren.filter(Or=>Or.componentType==="problem")}}}},ae.numProblems={description:"The number of problems arranged.",public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({serializedProblemChildren:{dependencyType:"stateVariable",variableName:"serializedProblemChildren"}}),definition({dependencyValues:Me}){return{setValue:{numProblems:Me.serializedProblemChildren.length}}}},ae.problemOrder={forRenderer:!0,shadowVariable:!0,returnDependencies:({sharedParameters:Me})=>({mode:{dependencyType:"stateVariable",variableName:"mode"},numProblems:{dependencyType:"stateVariable",variableName:"numProblems"},variantSeed:{dependencyType:"value",value:Me.variantSeed},rngClass:{dependencyType:"value",value:Me.rngClass,doNotProxy:!0},variants:{dependencyType:"variants"}}),definition:function({dependencyValues:Me}){let Or=Me.numProblems,Hr=[],Li;const ts=Me.mode;let rs=Me.variants?.desiredVariant?.indices;if(rs!==void 0)if(rs.length!==Or)Hr.push(codedDiagnostic({type:"info",code:"doenet-i0005"}));else{if(rs=rs.map(Number),!rs.every(Number.isInteger))throw Error("All indices specified for pretzel must be integers");if(!rs.every(is=>is>=1&&is<=Or))Hr.push(codedDiagnostic({type:"info",code:"doenet-i0007",args:{component:"pretzel"}}));else if(new Set(rs).size!==Or)Hr.push(codedDiagnostic({type:"info",code:"doenet-i0008"}));else if(ts==="circuit"&&Or>0&&rs[0]!==1)Hr.push(codedDiagnostic({type:"info",code:"doenet-i0009"}));else return{setValue:{problemOrder:rs}}}let ns=Me.rngClass(Me.variantSeed+"co");return Li=shuffleProblemOrder({numProblems:Or,variantRng:ns,mode:ts}),{setValue:{problemOrder:Li},sendDiagnostics:Hr}}},ae.generatedVariantInfo={additionalStateVariablesDefined:["isVariantComponent"],returnDependencies:({componentInfoObjects:Me,sharedParameters:Or})=>({variantSeed:{dependencyType:"value",value:Or.variantSeed},problemOrder:{dependencyType:"stateVariable",variableName:"problemOrder"},variantDescendants:{dependencyType:"descendant",componentTypes:Object.keys(Me.componentTypesCreatingVariants),variableNames:["isVariantComponent","generatedVariantInfo"],useReplacementsForComposites:!0,recurseToMatchedChildren:!1,variablesOptional:!0,includeNonActiveChildren:!0,ignoreReplacementsOfEncounteredComposites:!0}}),definition({dependencyValues:Me,componentIdx:Or}){let Hr={seed:Me.variantSeed,meta:{createdBy:Or},indices:Me.problemOrder},Li=Hr.subvariants=[];for(let ts of Me.variantDescendants)ts.stateValues.isVariantComponent?Li.push(ts.stateValues.generatedVariantInfo):ts.stateValues.generatedVariantInfo&&Li.push(...ts.stateValues.generatedVariantInfo.subvariants);return{setValue:{generatedVariantInfo:Hr,isVariantComponent:!0}}}},ae.statements={additionalStateVariablesDefined:["givenAnswers","validProblems","distractors"],returnDependencies:()=>({serializedProblemChildren:{dependencyType:"stateVariable",variableName:"serializedProblemChildren"},mode:{dependencyType:"stateVariable",variableName:"mode"}}),definition({dependencyValues:Me}){const Or=[],Hr=[],Li=[];let ts=!0;const rs=[];for(const[ns,is]of Me.serializedProblemChildren.entries()){let as=null,os=null;for(const ss of is.children)if(ss.componentType==="statement")as=ss;else if(ss.componentType==="givenAnswer"){const ls=ss.children.find(us=>us.componentType==="_postponeRenderContainer");ls&&(os={...ls,componentType:"span",attributes:{...ls.attributes},children:(ls.children??[]).filter(us=>us.componentType!=="label"&&us.componentType!=="shortDescription")},os.componentIdx=ss.componentIdx,ss.attributes.name&&(os.attributes.name=ss.attributes.name))}(as===null||os===null)&&(ts=!1),Or.push(as),Hr.push(os),is.attributes.isDistractor?.primitive.value&&Li.push(ns)}return ts||rs.push(codedDiagnostic({type:"warning",code:"doenet-w0076"})),Me.mode==="circuit"&&Li.includes(0)&&rs.push(codedDiagnostic({type:"error",code:"doenet-e0001"})),{setValue:{statements:Or,givenAnswers:Hr,validProblems:ts,distractors:Li},sendDiagnostics:rs}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({problemOrder:{dependencyType:"stateVariable",variableName:"problemOrder"},statements:{dependencyType:"stateVariable",variableName:"statements"},givenAnswers:{dependencyType:"stateVariable",variableName:"givenAnswers"}}),definition:function(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae}static async createSerializedReplacements({component:ae,nComponents:Me,workspace:Or}){Or.replacementsCreated===void 0&&(Or.replacementsCreated=0);const Hr={prefix:`${ae.stateId}|`,num:Or.replacementsCreated},Li=[];let ts=[];const rs=await ae.stateValues.numProblems,ns=await ae.stateValues.problemOrder,is=await ae.stateValues.statements,as=await ae.stateValues.givenAnswers,os=await ae.stateValues.distractors,ss=await ae.stateValues.mode,ls=new Set(os);for(let us=0;us<rs;us++){const cs=ns[us]-1,ds=is[cs],ps=getCorrespondingAnswerIdx({problemIdx:cs,numProblems:rs,distractorSet:ls}),ms=as[ps];ms===null?ts.push({type:"serialized",componentType:"span",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[]}):ts.push(ms),ts.push({type:"serialized",componentType:"textInput",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{width:{type:"component",name:"width",component:{type:"serialized",componentType:"componentSize",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,state:{componentSize:{size:15,isAbsolute:!0}},children:[],attributes:{},doenetAttributes:{}}}},doenetAttributes:{},state:ss==="circuit"&&us===0?{value:"1",disabledPreliminary:!0}:{},children:[{type:"serialized",componentType:"shortDescription",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,state:{},children:[{type:"serialized",componentType:"text",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,state:{value:"Enter number in sequence for this answer or X if it is a distractor"},children:[],attributes:{},doenetAttributes:{}}],attributes:{},doenetAttributes:{}}]}),ds===null?ts.push({type:"serialized",componentType:"statement",componentIdx:Me++,stateId:`${Hr.prefix}${Hr.num++}`,attributes:{},doenetAttributes:{},state:{},children:[]}):ts.push(ds)}return Or.replacementsCreated=Hr.num,{replacements:ts,diagnostics:Li,nComponents:Me}}static setUpVariant({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or}){setUpVariantSeedAndRng({serializedComponent:ae,sharedParameters:Me,descendantVariantComponents:Or})}static determineNumberOfUniqueVariants({serializedComponent:ae,componentInfoObjects:Me,infoDiagnostics:Or}){let Hr=0;const Li=normalizePretzelMode(ae.attributes.mode?.primitive?.value);for(let is of ae.children)if(is.componentType==="problem")Hr++;else if(Me.isInheritedComponentType({inheritedComponentType:is.componentType,baseComponentType:"_composite"})&&is.attributes.createComponentOfType?.primitive.value==="problem")if(is.attributes.numProblems?.primitive!==void 0){let as=Number(is.attributes.numProblems?.primitive.value);if(Number.isInteger(as)&&as>=0)Hr+=as;else return{success:!1}}else Hr++;else return{success:!1};let ts=determineNumberOfPermutations({numProblems:Hr,mode:Li}),rs=super.determineNumberOfUniqueVariants({serializedComponent:ae,componentInfoObjects:Me,infoDiagnostics:Or});if(!rs.success)return{success:!1};let ns=rs.numVariants*ts;return ae.variants.numVariants=ns,ae.variants.uniqueVariantData={numVariantsByDescendant:ae.variants.uniqueVariantData.numVariantsByDescendant,numberOfPermutations:ts,numProblems:Hr,mode:Li},{success:!0,numVariants:ns}}static getUniqueVariant({serializedComponent:ae,variantIndex:Me,componentInfoObjects:Or}){let Hr=ae.variants?.numVariants;if(Hr===void 0)return{success:!1};if(!Number.isInteger(Me)||Me<1||Me>Hr)return{success:!1};let Li=ae.variants.uniqueVariantData.numVariantsByDescendant,ts=ae.variants.descendantVariantComponents,rs=ae.variants.uniqueVariantData.numberOfPermutations,ns=ae.variants.uniqueVariantData.numProblems;const is=normalizePretzelMode(ae.variants.uniqueVariantData.mode);let as=[...Li];as.push(rs);let os=enumerateCombinations({numberOfOptionsByIndex:as,maxNumber:Me})[Me-1].map(fs=>fs+1),ss=os.pop(),ls=os;const us=getProblemIndicesToPermute({numProblems:ns,mode:is}),cs=buildProblemOrderFromPermutedIndices({permutedIndices:enumeratePermutations({values:us,maxNumber:ss})[ss-1],numProblems:ns,mode:is});let ds=!1,ps=[];for(let fs=0;fs<Li.length;fs++)if(Li[fs]>1){let hs=ts[fs],gs=Or.allComponentClasses[hs.componentType].getUniqueVariant({serializedComponent:hs,variantIndex:ls[fs],componentInfoObjects:Or});if(!gs.success)return{success:!1};ps.push(gs.desiredVariant),ds=!0}else ps.push({});let ms={indices:cs};return ds&&(ms.subvariants=ps),{success:!0,desiredVariant:ms}}}class Cascade extends SectioningComponent{static componentType="cascade";static componentDocs={summary:"Sectional component that reveals its children step-by-step"};static rendererType="section";static includeBlankStringChildren=!1;static createAttributesObject(){let ae=super.createAttributesObject();return ae.hideFutureSections={createComponentOfType:"boolean",createStateVariable:"hideFutureSections",defaultValue:!1,public:!0,description:"Whether to hide later cascade sections until previous ones are completed."},ae.noAutoTitle.defaultValue=!0,ae.asList.createStateVariable="asListPreliminary",ae.asList.public=!1,ae.revealAll={createComponentOfType:"boolean",createStateVariable:"revealAllPreliminary",defaultValue:!1,description:"Whether all cascade entries should be revealed regardless of progress."},ae.boxAll={createComponentOfType:"boolean",createStateVariable:"boxAll",defaultValue:!1,description:"Whether to draw boxes around all cascade entries regardless of progress."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.isListItem={forRenderer:!0,returnDependencies:()=>({}),definition:()=>({setValue:{isListItem:!1}})},ae.asList={description:"Whether to render this section's children as a list.",public:!0,forRenderer:!0,shadowingInstructions:{createComponentOfType:"boolean"},returnDependencies:()=>({asListPreliminary:{dependencyType:"stateVariable",variableName:"asListPreliminary"},parentAsList:{dependencyType:"parentStateVariable",variableName:"asList"}}),definition({dependencyValues:Me,usedDefault:Or}){let Hr=Me.parentAsList;return Or.asListPreliminary||(Hr=Me.asListPreliminary),{setValue:{asList:!!Hr}}}},ae.childrenAggregateScores={returnDependencies:()=>({}),definition:()=>({setValue:{childrenAggregateScores:!0}})},ae.childCreditAchieved={returnDependencies:()=>({children:{dependencyType:"child",childGroups:["anything"],variableNames:["creditAchieved"],variablesOptional:!0}}),definition({dependencyValues:Me}){return{setValue:{childCreditAchieved:Me.children.map(Hr=>Hr.stateValues?.creditAchieved??null)}}}},ae.numCompleted={description:"The number of cascade sections currently completed.",public:!0,shadowingInstructions:{createComponentOfType:"integer"},returnDependencies:()=>({childCreditAchieved:{dependencyType:"stateVariable",variableName:"childCreditAchieved"}}),definition({dependencyValues:Me}){let Or=0;for(const Hr of Me.childCreditAchieved)if(Hr===1||Hr===null)Or++;else break;return{setValue:{numCompleted:Or}}}},ae.revealAll={returnDependencies:()=>({cascadeAncestor:{dependencyType:"ancestor",componentType:"cascade",variableNames:["revealAll"]},revealAllPreliminary:{dependencyType:"stateVariable",variableName:"revealAllPreliminary"}}),definition({dependencyValues:Me,usedDefault:Or}){let Hr=!1;return Or.revealAllPreliminary?Me.cascadeAncestor?Hr=Me.cascadeAncestor.stateValues.revealAll:Me.revealAllPreliminary:Hr=Me.revealAllPreliminary,{setValue:{revealAll:Hr}}}},ae.childrenToHide={additionalStateVariablesDefined:["childrenToHideChildren","sectionToShowCascadeMessage"],returnDependencies:()=>({hideFutureSections:{dependencyType:"stateVariable",variableName:"hideFutureSections"},numCompleted:{dependencyType:"stateVariable",variableName:"numCompleted"},children:{dependencyType:"child",childGroups:["anything"],variableNames:["hasCascadeMessageToShow"],variablesOptional:!0},childrenWithCascadeMessages:{dependencyType:"child",childGroups:["anything","cascadeMessages"]},revealAll:{dependencyType:"stateVariable",variableName:"revealAll"},hideChildren:{dependencyType:"stateVariable",variableName:"hideChildren"},showCascadeMessage:{dependencyType:"stateVariable",variableName:"showCascadeMessage"}}),definition({dependencyValues:Me,componentInfoObjects:Or}){const Hr=Me.childrenWithCascadeMessages.filter(as=>as.componentType==="cascadeMessage").map(as=>as.componentIdx);if(Me.revealAll)return{setValue:{childrenToHide:Hr,childrenToHideChildren:[],sectionToShowCascadeMessage:null}};const Li=[],ts=[];for(const[as,os]of Me.children.entries())as<=Me.numCompleted?Me.hideChildren&&Li.push(os.componentIdx):!Me.hideChildren&&!Me.hideFutureSections&&Or.isInheritedComponentType({inheritedComponentType:os.componentType,baseComponentType:"_sectioningComponent"})?ts.push(os.componentIdx):Li.push(os.componentIdx);const rs=Me.children[Me.numCompleted+1],ns=rs&&ts.includes(rs.componentIdx)&&rs.stateValues?.hasCascadeMessageToShow?rs.componentIdx:null,is=ns===null&&(!Me.hideChildren||Me.showCascadeMessage)?nextOwnCascadeMessage(Me):null;return Li.push(...Hr.filter(as=>as!==is)),{setValue:{childrenToHide:Li,childrenToHideChildren:ts,sectionToShowCascadeMessage:ns}}}},ae.hasCascadeMessageToShow={returnDependencies:()=>({numCompleted:{dependencyType:"stateVariable",variableName:"numCompleted"},children:{dependencyType:"child",childGroups:["anything"]},childrenWithCascadeMessages:{dependencyType:"child",childGroups:["anything","cascadeMessages"]},revealAll:{dependencyType:"stateVariable",variableName:"revealAll"}}),definition({dependencyValues:Me}){return{setValue:{hasCascadeMessageToShow:nextOwnCascadeMessage(Me)!==null}}}},ae}}function nextOwnCascadeMessage(Br){if(Br.revealAll||Br.numCompleted>Br.children.length-2)return null;const ae=Br.children[Br.numCompleted].componentIdx,Me=Br.childrenWithCascadeMessages.findIndex(Or=>Or.componentIdx===ae);return Br.childrenWithCascadeMessages.slice(Me+1).find(Or=>Or.componentType==="cascadeMessage")?.componentIdx??null}class DynamicChildren extends CompositeComponent{constructor(ae){super(ae),Object.assign(this.actions,{addChildren:this.addChildren.bind(this),deleteChildren:this.deleteChildren.bind(this)})}static componentType="_dynamicChildren";static componentDocs={summary:"Internal container for dynamically-generated children."};static treatAsComponentForRecursiveReplacements=!0;static stateVariableToEvaluateAfterReplacements="readyToExpandWhenResolved";static createAttributesObject(){let ae=super.createAttributesObject();return ae.deferUntilParentRendered={createComponentOfType:"boolean",createStateVariable:"deferUntilParentRendered",defaultValue:!1,description:"Whether to wait until the parent is rendered before creating dynamic children."},ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.dynamicChildren={hasEssential:!0,defaultValue:[],returnDependencies:()=>({}),definition:function(){return{useEssentialOrDefaultValue:{dynamicChildren:!0}}},inverseDefinition({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setEssentialValue:"dynamicChildren",value:Me.dynamicChildren}]}}},ae.createReplacements={stateVariablesDeterminingDependencies:["deferUntilParentRendered"],returnDependencies:({stateValues:Me})=>{const Or={deferUntilParentRendered:{dependencyType:"stateVariable",variableName:"deferUntilParentRendered"}};return Me.deferUntilParentRendered&&(Or.parentRendered={dependencyType:"parentStateVariable",variableName:"rendered"}),Or},definition({dependencyValues:Me}){return{setValue:{createReplacements:!Me.deferUntilParentRendered||Me.parentRendered!==!1}}},markStale(){return{updateReplacements:!0}}},ae.nGroups={returnDependencies:()=>({dynamicChildren:{dependencyType:"stateVariable",variableName:"dynamicChildren"}}),definition({dependencyValues:Me}){return{setValue:{nGroups:Me.dynamicChildren.length}}}},ae.readyToExpandWhenResolved={returnDependencies:()=>({dynamicChildren:{dependencyType:"stateVariable",variableName:"dynamicChildren"},createReplacements:{dependencyType:"stateVariable",variableName:"createReplacements"}}),definition:function(){return{setValue:{readyToExpandWhenResolved:!0}}},markStale(){return{updateReplacements:!0}}},ae}async addChildren({serializedComponents:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){if(ae&&ae.length>0){const Li=[...await this.stateValues.dynamicChildren];return Li.push({type:"serialized",componentType:"group",componentIdx:0,attributes:{},doenetAttributes:{},state:{},children:deepClone(ae)}),await this.coreFunctions.performUpdate({updateInstructions:[{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"dynamicChildren",value:Li}],actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr})}else return}async deleteChildren({number:ae,actionId:Me,sourceInformation:Or={},skipRendererUpdate:Hr=!1}){const Li=await this.stateValues.nGroups;let ts=Math.min(ae,Li);if(ts>0){const rs=(await this.stateValues.dynamicChildren).slice(0,Li-ts);return await this.coreFunctions.performUpdate({updateInstructions:[{updateType:"updateValue",componentIdx:this.componentIdx,stateVariable:"dynamicChildren",value:rs}],actionId:Me,sourceInformation:Or,skipRendererUpdate:Hr})}else return}static async createSerializedReplacements({component:ae,nComponents:Me,workspace:Or}){let Hr=[];Or.replacementsCreated===void 0&&(Or.replacementsCreated=0),Or.replacementsCreatedThroughGroup=[];let Li=[];if(!await ae.stateValues.createReplacements)return Or.nGroups=0,{replacements:Li,diagnostics:Hr,nComponents:Me};const ts=await ae.stateValues.nGroups;for(let rs=0;rs<ts;rs++){let ns=await this.replacementForGroup({component:ae,groupNum:rs,nComponents:Me,workspace:Or}),is=ns.replacements;Me=ns.nComponents,Li.push(...is)}return Or.nGroups=ts,{replacements:Li,diagnostics:Hr,nComponents:Me}}static async replacementForGroup({component:ae,groupNum:Me,nComponents:Or,workspace:Hr}){let Li=[deepClone((await ae.stateValues.dynamicChildren)[Me])];const ts={prefix:`${ae.stateId}|`,num:Hr.replacementsCreated},rs=createNewComponentIndices(Li,Or,ts);return Li=rs.components,Or=rs.nComponents,Hr.replacementsCreated=ts.num,Hr.replacementsCreatedThroughGroup=[...Hr.replacementsCreatedThroughGroup,Hr.replacementsCreated],{replacements:Li,nComponents:Or}}static async calculateReplacementChanges({component:ae,nComponents:Me,workspace:Or}){const Li=await ae.stateValues.createReplacements?await ae.stateValues.nGroups:0;if(Li===Or.nGroups)return{replacementChanges:[],nComponents:Me};if(Li<Or.nGroups){const ns=[{changeType:"delete",changeTopLevelReplacements:!0,firstReplacementInd:Li,numberReplacementsToDelete:Or.nGroups-Li}];return Or.nGroups=Li,Or.replacementsCreated=Or.replacementsCreatedThroughGroup[Li-1]||0,Or.replacementsCreatedThroughGroup=Or.replacementsCreatedThroughGroup.slice(0,Li),{replacementChanges:ns,nComponents:Me}}let ts=[];for(let ns=Or.nGroups;ns<Li;ns++){let is=await this.replacementForGroup({component:ae,groupNum:ns,nComponents:Me,workspace:Or}),as=is.replacements;Me=is.nComponents,ts.push(...as)}let rs={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:Or.nGroups,numberReplacementsToReplace:0,serializedReplacements:ts,replacementsToWithhold:0};return Or.nGroups=Li,{replacementChanges:[rs],nComponents:Me}}}class ShortDescription extends TextOrInline{static componentType="shortDescription";static componentDocs={summary:"A short accessibility description (e.g. for a `<graph>`) read by screen readers"};static rendererType=void 0;static inSchemaOnlyInheritAs=[];static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.inlineChildren={returnDependencies:()=>({inlineChildren:{dependencyType:"child",childGroups:["inlines"],variableNames:["text","hidden"],variablesOptional:!0}}),definition:({dependencyValues:Me})=>({setValue:{inlineChildren:Me.inlineChildren}})},ae.value={description:"The short description text.",public:!0,shadowingInstructions:{createComponentOfType:this.componentType},stateVariablesDeterminingDependencies:["inlineChildren"],returnDependencies:({stateValues:Me})=>{const Or={inlineChildren:{dependencyType:"stateVariable",variableName:"inlineChildren"}};for(const[Hr,Li]of Me.inlineChildren.entries())typeof Li=="object"&&(Or[`adapterSource${Hr}`]={dependencyType:"adapterSource",componentIdx:Li.componentIdx});return Or},definition({dependencyValues:Me,componentInfoObjects:Or}){const Hr=textFromChildren(Me.inlineChildren);let Li;for(let rs=0;rs<Me.inlineChildren.length;rs++){const ns=Me.inlineChildren[rs];if(typeof ns!="object")continue;const is=Me[`adapterSource${rs}`]?.componentType??ns.componentType;if(Or.isInheritedComponentType({inheritedComponentType:is,baseComponentType:"math"})||Or.isInheritedComponentType({inheritedComponentType:is,baseComponentType:"m"})){Li=is;break}}const ts=[];return Li&&ts.push(codedDiagnostic({type:"accessibility",level:2,code:"doenet-a0005",args:{component:Li}})),{setValue:{value:Hr},sendDiagnostics:ts}}},ae}}const unitConversions={"":1,px:1,pixel:1,pixels:1,"%":1,em:100,in:96,inch:96,inches:96,pt:1.333333333333,mm:3.7795296,millimeter:3.7795296,millimeters:3.7795296,cm:37.795296,centimeter:37.795296,centimeters:37.795296};class ComponentSize extends InlineComponent{static componentType="componentSize";static rendererType="text";static excludeFromSchema=!0;static primaryStateVariableForDefinition="componentSize";static stateVariableToBeShadowed="componentSize";static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){let ts=Or[Or.length-1];if(typeof ts=="string"){let rs=/([a-zA-z]+|%)$/,ns=ts.trim(),is=ns.match(rs);if(is){let as=is[1];if(as in unitConversions){let os=ns.slice(0,is.index),ss=Or.slice(0,Or.length-1);return os.length>0&&ss.push(os),{success:!0,newChildren:[{type:"serialized",componentType:"number",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:ss,attributes:{},doenetAttributes:{},state:{}},as],nComponents:Hr}}}}return{success:!0,newChildren:[{componentType:"number",children:Or}]}};return ae.push({childrenRegex:/..+/,replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"strings",componentTypes:["string"]},{group:"numbers",componentTypes:["number"]},{group:"componentSizes",componentTypes:["componentSize"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions(),Me=returnSelectedStyleStateVariableDefinition();Object.assign(ae,Me);let Or=returnTextStyleDescriptionDefinitions();return Object.assign(ae,Or),ae.componentSize={description:"The size value with its associated unit (absolute pixels or relative percent).",public:!0,shadowingInstructions:{createComponentOfType:"componentSize"},hasEssential:!0,returnDependencies:()=>({componentSizeChild:{dependencyType:"child",childGroups:["componentSizes"],variableNames:["componentSize"]},numberChild:{dependencyType:"child",childGroups:["numbers"],variableNames:["value"]},stringChild:{dependencyType:"child",childGroups:["strings"],variableNames:["value"]},parentDefaultAbsoluteSize:{dependencyType:"parentStateVariable",variableName:"defaultAbsoluteSize"}}),definition({dependencyValues:Hr}){let Li=Hr.parentDefaultAbsoluteSize===void 0?!1:Hr.parentDefaultAbsoluteSize;if(Hr.stringChild.length===0)return Hr.numberChild.length===0?Hr.componentSizeChild.length===0?{useEssentialOrDefaultValue:{componentSize:{defaultValue:{size:100,isAbsolute:Li}}}}:{setValue:{componentSize:Hr.componentSizeChild[0].stateValues.componentSize}}:{setValue:{componentSize:{size:Hr.numberChild[0].stateValues.value,isAbsolute:!0}}};{let ts,rs;if(Hr.numberChild.length>0)ts=Hr.numberChild[0].stateValues.value,rs=Hr.stringChild[0].trim();else{let os=Hr.stringChild[0].trim().match(/^(-?[\d.]+)\s*(.*)$/);if(os===null)return{setValue:{componentSize:null}};ts=os[1],rs=os[2].trim()}if(ts=Number(ts),!Number.isFinite(ts))return{setValue:{componentSize:null}};let ns=!(rs==="%"||rs==="em"),is=unitConversions[rs];return is===void 0&&(is=1),{setValue:{componentSize:{size:is*ts,isAbsolute:ns}}}}},inverseDefinition({desiredStateVariableValues:Hr,dependencyValues:Li}){if(Li.stringChild.length===0)return Li.numberChild.length===0?Li.componentSizeChild.length===0?{success:!0,instructions:[{setEssentialValue:"componentSize",value:Hr.componentSize}]}:{success:!0,instructions:[{setDependency:"componentSizeChild",desiredValue:Hr.componentSize,childIndex:0,variableIndex:0}]}:Hr.componentSize.isAbsolute?{success:!0,instructions:[{setDependency:"numberChild",desiredValue:Hr.componentSize.size,childIndex:0,variableIndex:0}]}:{success:!1};if(Li.numberChild.length>0){let ts=Li.stringChild[0].trim(),rs=!(ts==="%"||ts==="em");if(Hr.componentSize.isAbsolute!==rs)return{success:!1};let ns=unitConversions[ts];return ns===void 0&&(ns=1),{success:!0,instructions:[{setDependency:"numberChild",desiredValue:Hr.componentSize.size/ns,childIndex:0,variableIndex:0}]}}else{let ts=Hr.componentSize.size;return Hr.componentSize.isAbsolute?ts+="px":ts+="%",{success:!0,instructions:[{setDependency:"stringChild",desiredValue:ts,childIndex:0,variableIndex:0}]}}}},ae.number={description:"The numeric portion of the size.",public:!0,shadowingInstructions:{createComponentOfType:"number"},returnDependencies:()=>({componentSize:{dependencyType:"stateVariable",variableName:"componentSize"}}),definition({dependencyValues:Hr}){let Li=null;return Hr.componentSize&&(Li=Hr.componentSize.size),{setValue:{number:Li}}},inverseDefinition({desiredStateVariableValues:Hr,dependencyValues:Li}){return Li.componentSize?{success:!0,instructions:[{setDependency:"componentSize",desiredValue:{size:Hr.number,isAbsolute:Li.componentSize.isAbsolute}}]}:{success:!1}}},ae.math=mathStateVariableFromNumberStateVariable({numberVariableName:"number",mathVariableName:"math",isPublic:!0}),ae.math.description="The size as a math expression.",ae.isAbsolute={description:"Whether the size uses absolute units (pixels) rather than relative units (percent).",public:!0,shadowingInstructions:{createComponentOfType:"boolean"},returnDependencies:()=>({componentSize:{dependencyType:"stateVariable",variableName:"componentSize"}}),definition({dependencyValues:Hr}){let Li=null;return Hr.componentSize&&(Li=Hr.componentSize.isAbsolute),{setValue:{isAbsolute:Li}}}},ae.text={forRenderer:!0,returnDependencies:()=>({componentSize:{dependencyType:"stateVariable",variableName:"componentSize"}}),definition({dependencyValues:Hr}){let Li="";return Hr.componentSize&&(Li=Hr.componentSize.size,Hr.componentSize.isAbsolute?Li+="px":Li+="%"),{setValue:{text:Li}}}},ae}static adapters=["number","math"]}class ComponentSizeList extends BaseComponent{static componentType="_componentSizeList";static rendererType="asList";static renderChildren=!0;static stateVariableToBeShadowed="componentSizes";static additionalSchemaChildren=["string","number"];static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){let ts=[],rs=[],ns=function(){rs.length>0&&(ts.push({type:"serialized",componentType:"componentSize",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:rs,attributes:{},doenetAttributes:{},state:{}}),rs=[])};for(let is of Or)if(typeof is=="string"){let as=is.split(/\s+/);as[0].length===0&&(ns(),as=as.slice(1));for(let[os,ss]of as.entries())ss.length>0?(rs.push(ss),os<as.length-1&&ns()):ns()}else rs.push(is);return ns(),{success:!0,newChildren:ts,nComponents:Hr}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"componentSizes",componentTypes:["componentSize"]},{group:"componentSizeLists",componentTypes:["_componentSizeList"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.overrideChildHide={returnDependencies:()=>({}),definition:()=>({setValue:{overrideChildHide:!0}})},ae.numComponents={description:"The number of size values in the list.",public:!0,shadowingInstructions:{createComponentOfType:"number"},additionalStateVariablesDefined:["childIndexByArrayKey"],returnDependencies(){return{componentSizeListChildren:{dependencyType:"child",childGroups:["componentSizeLists"],variableNames:["numComponents"]},componentSizeAndComponentSizeListChildren:{dependencyType:"child",childGroups:["componentSizes","componentSizeLists"],skipComponentIndices:!0}}},definition:function({dependencyValues:Me,componentInfoObjects:Or}){let Hr=0,Li=[],ts=0;for(let[rs,ns]of Me.componentSizeAndComponentSizeListChildren.entries())if(Or.isInheritedComponentType({inheritedComponentType:ns.componentType,baseComponentType:"_componentSizeList"})){let is=Me.componentSizeListChildren[ts];ts++;for(let as=0;as<is.stateValues.numComponents;as++)Li[Hr+as]=[rs,as];Hr+=is.stateValues.numComponents}else Li[Hr]=[rs,0],Hr+=1;return{setValue:{numComponents:Hr,childIndexByArrayKey:Li},checkForActualChange:{numComponents:!0}}}},ae.componentSizes={description:"The list of component sizes.",public:!0,shadowingInstructions:{createComponentOfType:"componentSize"},isArray:!0,entryPrefixes:["componentSize"],stateVariablesDeterminingDependencies:["childIndexByArrayKey"],returnArraySizeDependencies:()=>({numComponents:{dependencyType:"stateVariable",variableName:"numComponents"}}),returnArraySize({dependencyValues:Me}){return[Me.numComponents]},returnArrayDependenciesByKey({arrayKeys:Me,stateValues:Or}){let Hr={},Li={childIndexByArrayKey:{dependencyType:"stateVariable",variableName:"childIndexByArrayKey"}};for(let ts of Me){let rs=[],ns="1";Or.childIndexByArrayKey[ts]&&(rs=[Or.childIndexByArrayKey[ts][0]],ns=Or.childIndexByArrayKey[ts][1]+1),Hr[ts]={componentSizeAndComponentSizeListChildren:{dependencyType:"child",childGroups:["componentSizes","componentSizeLists"],variableNames:["componentSize","componentSize"+ns],variablesOptional:!0,childIndices:rs}}}return{globalDependencies:Li,dependenciesByKey:Hr}},arrayDefinitionByKey({globalDependencyValues:Me,dependencyValuesByKey:Or,arrayKeys:Hr,componentInfoObjects:Li}){let ts={};for(let rs of Hr){let ns=Or[rs].componentSizeAndComponentSizeListChildren[0];if(ns)if(Li.isInheritedComponentType({inheritedComponentType:ns.componentType,baseComponentType:"_componentSizeList"})){let is=Me.childIndexByArrayKey[rs][1]+1;ts[rs]=ns.stateValues["componentSize"+is]}else ts[rs]=ns.stateValues.componentSize}return{setValue:{componentSizes:ts}}},inverseArrayDefinitionByKey({desiredStateVariableValues:Me,globalDependencyValues:Or,dependencyValuesByKey:Hr,dependencyNamesByKey:Li,arraySize:ts,componentInfoObjects:rs}){let ns=[];for(let is in Me.componentSizes){if(!Hr[is])continue;let as=Hr[is].componentSizeAndComponentSizeListChildren[0];as&&(rs.isInheritedComponentType({inheritedComponentType:as.componentType,baseComponentType:"_componentSizeList"})?ns.push({setDependency:Li[is].componentSizeAndComponentSizeListChildren,desiredValue:Me.componentSizes[is],childIndex:0,variableIndex:1}):ns.push({setDependency:Li[is].componentSizeAndComponentSizeListChildren,desiredValue:Me.componentSizes[is],childIndex:0,variableIndex:0}))}return{success:!0,instructions:ns}}},ae.numValues={isAlias:!0,targetVariableName:"numComponents",description:"The number of component sizes in the list."},ae.values={isAlias:!0,targetVariableName:"componentSizes",description:"The list's component sizes."},ae}}const ComponentSize$1=Object.freeze(Object.defineProperty({__proto__:null,ComponentSize,ComponentSizeList},Symbol.toStringTag,{value:"Module"}));class Copy extends CompositeComponent{static componentType="_copy";static excludeFromSchema=!0;static acceptAnyAttribute=!0;static includeBlankStringChildren=!0;static stateVariableToEvaluateAfterReplacements="needsReplacementsUpdatedWhenStale";static createAttributesObject(){let ae=super.createAttributesObject();return delete ae.disabled,delete ae.modifyIndirectly,delete ae.fixed,delete ae.styleNumber,delete ae.isResponse,delete ae.isPotentialResponse,delete ae.hide,ae.createComponentOfType={createPrimitiveOfType:"string"},ae.createComponentIdx={createPrimitiveOfType:"integer"},ae.createComponentName={createPrimitiveOfType:"string"},ae.numComponents={createPrimitiveOfType:"number"},ae.copyInChildren={createPrimitiveOfType:"boolean"},ae.uri={createPrimitiveOfType:"string",createStateVariable:"uri",defaultValue:null,public:!0},ae.link={createPrimitiveOfType:"boolean",createStateVariable:"link",defaultValue:!0},ae.removeEmptyArrayEntries={createPrimitiveOfType:"boolean",createStateVariable:"removeEmptyArrayEntries",defaultValue:!1},ae.asList={createPrimitiveOfType:"boolean",createStateVariable:"asListPreliminary",defaultValue:!0,description:"Whether to render the items separated by commas (true) or with no separator (false)."},ae}static keepChildrenSerialized({serializedComponent:ae}){return ae.children===void 0?[]:Object.keys(ae.children)}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.refResolutionIndexDependencies={returnDependencies:()=>({refResolutionIndexDependencies:{dependencyType:"refResolutionIndexDependencies"}}),definition:({dependencyValues:Me})=>({setValue:{refResolutionIndexDependencies:Me.refResolutionIndexDependencies}})},ae.refResolutionIndexDependencyValues={stateVariablesDeterminingDependencies:["refResolutionIndexDependencies"],returnDependencies:({stateValues:Me})=>{const Or={};for(const Hr of Me.refResolutionIndexDependencies)Or[Hr]={dependencyType:"stateVariable",componentIdx:Hr,variableName:"value"};return Or},definition:({dependencyValues:Me})=>({setValue:{refResolutionIndexDependencyValues:Me}})},ae.extendIdx={additionalStateVariablesDefined:["unresolvedPath","originalPath"],stateVariablesDeterminingDependencies:["refResolutionIndexDependencyValues"],returnDependencies:({stateValues:Me})=>({refResolution:{dependencyType:"refResolution",indexDependencyValues:Me.refResolutionIndexDependencyValues}}),definition:({dependencyValues:Me})=>({setValue:{extendIdx:Me.refResolution.extendIdx,unresolvedPath:Me.refResolution.unresolvedPath,originalPath:Me.refResolution.originalPath}})},ae.extendedComponent={shadowVariable:!0,stateVariablesDeterminingDependencies:["extendIdx"],returnDependencies({stateValues:Me}){return Me.extendIdx!==-1?{extendedComponent:{dependencyType:"componentIdentity",componentIdx:Me.extendIdx}}:{}},definition:function({dependencyValues:Me}){let Or=null;return Me.extendedComponent&&(Or=Me.extendedComponent),{setValue:{extendedComponent:Or}}}},ae.targetInactive={stateVariablesDeterminingDependencies:["extendedComponent"],returnDependencies({stateValues:Me}){return Me.extendedComponent?{targetIsInactiveCompositeReplacement:{dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"isInactiveCompositeReplacement"}}:{}},definition:function({dependencyValues:Me}){return{setValue:{targetInactive:!!Me.targetIsInactiveCompositeReplacement}}}},ae.cid={additionalStateVariablesDefined:["doenetId"],returnDependencies:()=>({uri:{dependencyType:"stateVariable",variableName:"uri"}}),definition:function({dependencyValues:Me}){if(!Me.uri||Me.uri.substring(0,7).toLowerCase()!=="doenet:")return{setValue:{cid:null,doenetId:null}};let Or=null,Hr=null,Li=Me.uri.match(/[:&]cid=([^&]+)/i);return Li&&(Or=Li[1]),Li=Me.uri.match(/[:&]doenetid=([^&]+)/i),Li&&(Hr=Li[1]),{setValue:{cid:Or,doenetId:Hr}}}},ae.createComponentOfType={returnDependencies:()=>({typeAttr:{dependencyType:"attributePrimitive",attributeName:"createComponentOfType"}}),definition({dependencyValues:Me}){let Or=null;return Me.typeAttr&&(Or=Me.typeAttr),{setValue:{createComponentOfType:Or}}}},ae.replacementSourceIdentities={stateVariablesDeterminingDependencies:["extendedComponent","unresolvedPath","createComponentOfType"],additionalStateVariablesDefined:["usedReplacements"],returnDependencies:function({stateValues:Me,componentInfoObjects:Or}){let Hr={numComponentsSpecified:{dependencyType:"stateVariable",variableName:"numComponentsSpecified"}},Li=!1;if(Me.extendedComponent!==null){if(Me.extendedComponent.componentType==="_copy"||Or.isCompositeComponent({componentType:Me.extendedComponent.componentType,includeNonStandard:!0})&&Me.extendedComponent.componentType!==Me.createComponentOfType){Li=!0;let ts=Me.unresolvedPath?.[0]?.name;ts===""&&(ts=null),Hr.targets={dependencyType:"replacement",compositeIdx:Me.extendedComponent.componentIdx,recursive:!0,recurseNonStandardComposites:Me.unresolvedPath!=null,includeWithheldReplacements:!0,stopIfHaveProp:ts}}Li||(Hr.targets={dependencyType:"stateVariable",variableName:"extendedComponent"}),Hr.usedReplacements={dependencyType:"value",value:Li}}return Hr},definition({dependencyValues:Me}){let Or=null;if(Me.targets&&(Or=Me.targets,Array.isArray(Or)||(Or=[Or]),Me.numComponentsSpecified===1&&Or.length>1)){const Hr=Or.findIndex(ts=>typeof ts!="string"||ts.trim()!==""),Li=Or.findLastIndex(ts=>typeof ts!="string"||ts.trim()!=="");Hr!==-1&&Li!==-1&&(Or=Or.slice(Hr,Li+1))}return{setValue:{replacementSourceIdentities:Or,usedReplacements:!!Me.usedReplacements}}}},ae.asList={stateVariablesDeterminingDependencies:["usedReplacements","extendedComponent"],returnDependencies({stateValues:Me}){const Or={asListPreliminary:{dependencyType:"stateVariable",variableName:"asListPreliminary"},usedReplacements:{dependencyType:"stateVariable",variableName:"usedReplacements"}};return Me.usedReplacements&&(Or.extendedComponentAsList={dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"asList",variablesOptional:!0}),Or},definition({dependencyValues:Me,usedDefault:Or}){return Or.asListPreliminary&&Me.usedReplacements&&typeof Me.extendedComponentAsList=="boolean"?{setValue:{asList:Me.extendedComponentAsList}}:{setValue:{asList:Me.asListPreliminary}}}},ae.implicitProp={stateVariablesDeterminingDependencies:["replacementSourceIdentities","unresolvedPath"],returnDependencies({stateValues:Me}){let Or={unresolvedPath:{dependencyType:"stateVariable",variableName:"unresolvedPath"},usedReplacements:{dependencyType:"stateVariable",variableName:"usedReplacements"}};return Me.unresolvedPath||(Or.replacementSourceIdentities={dependencyType:"stateVariable",variableName:"replacementSourceIdentities"},Or.typeAttr={dependencyType:"attributePrimitive",attributeName:"createComponentOfType"}),Or},definition({dependencyValues:Me,componentInfoObjects:Or}){if(Me.unresolvedPath||Me.usedReplacements||!(Me.replacementSourceIdentities?.length>0))return{setValue:{implicitProp:null}};let Hr=Me.replacementSourceIdentities[0],Li=Or.allComponentClasses[Hr.componentType]?.variableForImplicitProp;if(!Li)return{setValue:{implicitProp:null}};if(Me.typeAttr){let ts=Or.componentTypeLowerCaseMapping[Me.typeAttr.toLowerCase()];if(ts===Hr.componentType)return{setValue:{implicitProp:null}};let rs=Or.publicStateVariableInfo[Hr.componentType].stateVariableDescriptions[Li];if(rs.createComponentOfType!==void 0&&rs.createComponentOfType!==ts)return{setValue:{implicitProp:null}}}return{setValue:{implicitProp:Li}}}},ae.replacementSources={stateVariablesDeterminingDependencies:["replacementSourceIdentities","unresolvedPath","implicitProp"],additionalStateVariablesDefined:["effectivePropNameBySource"],returnDependencies:function({stateValues:Me}){let Or={replacementSourceIdentities:{dependencyType:"stateVariable",variableName:"replacementSourceIdentities"}};if(Me.replacementSourceIdentities!==null)for(let[Hr,Li]of Me.replacementSourceIdentities.entries()){let ts=Me.unresolvedPath;Me.implicitProp&&(ts=[{name:Me.implicitProp,index:[]}]);let rs;if(ts){if(ts=[...ts],Or["unresolvedPath"+Hr]={dependencyType:"value",value:ts},typeof Li=="string")continue;rs={dependencyType:"stateVariableFromUnresolvedPath",componentIdx:Li.componentIdx,unresolvedPath:ts,returnAsComponentObject:!0,variablesOptional:!0,caseInsensitiveVariableMatch:!0,publicStateVariablesOnly:!0,useMappedVariableNames:!0}}else{if(typeof Li=="string")continue;rs={dependencyType:"componentIdentity",componentIdx:Li.componentIdx}}Or["target"+Hr]=rs}return Or},definition({dependencyValues:Me}){let Or=null,Hr=null;if(Me.replacementSourceIdentities!==null){Or=[],Hr=[];for(let Li in Me.replacementSourceIdentities){let ts=Me["target"+Li];if(ts){Or.push(ts);let rs;ts.stateValues&&(rs=Object.keys(ts.stateValues)[0]),!rs&&Me["unresolvedPath"+Li]&&(rs="__prop_name_not_found"),Hr.push(rs)}else{const rs=Me.replacementSourceIdentities[Li];typeof rs=="string"?Me["unresolvedPath"+Li]?Hr.push("__prop_name_not_found"):(Or.push(rs),Hr.push(void 0)):(Or.push(void 0),Hr.push("__no_target_found"))}}}return{setValue:{replacementSources:Or,effectivePropNameBySource:Hr}}}},ae.numComponentsSpecified={returnDependencies:()=>({numComponentsAttr:{dependencyType:"attributePrimitive",attributeName:"numComponents"},typeAttr:{dependencyType:"attributePrimitive",attributeName:"createComponentOfType"}}),definition({dependencyValues:Me,componentInfoObjects:Or}){let Hr;if(Me.typeAttr){if(!(Or.componentTypeLowerCaseMapping[Me.typeAttr.toLowerCase()]in Or.allComponentClasses))return{setValue:{numComponentsSpecified:null},sendDiagnostics:[codedDiagnostic({type:"warning",code:"doenet-w0065",args:{type:Me.typeAttr}})]};Me.numComponentsAttr!==null?Hr=Me.numComponentsAttr:Hr=1}else{if(Me.numComponentsAttr!==null)throw Error("You must specify createComponentOfType when specifying numComponents for a copy.");Hr=null}return{setValue:{numComponentsSpecified:Hr}}}},ae.unlinkedDescendants={stateVariablesDeterminingDependencies:["extendIdx","link"],returnDependencies({stateValues:Me}){let Or={};return Me.link?Or.targetItself={dependencyType:"componentIdentity",componentIdx:Me.extendIdx}:Or.targetDescendants={dependencyType:"descendant",ancestorIdx:Me.extendIdx,componentTypes:["_composite"]},Or},definition(){return{setValue:{unlinkedDescendants:!0}}}},ae.unlinkedTargetsExpanded={stateVariablesDeterminingDependencies:["extendedComponent","link"],returnDependencies({stateValues:Me,componentInfoObjects:Or}){let Hr={};return!Me.link&&Me.extendedComponent&&Or.isInheritedComponentType({inheritedComponentType:Me.extendedComponent.componentType,baseComponentType:"_composite"})&&(Hr.targetReplacements={dependencyType:"replacement",compositeIdx:Me.extendedComponent.componentIdx,recursive:!0,recurseNonStandardComposites:!0}),Hr},definition(){return{setValue:{unlinkedTargetsExpanded:!0}}}},ae.readyToExpandWhenResolved={stateVariablesDeterminingDependencies:["extendedComponent","unresolvedPath","link"],returnDependencies({stateValues:Me,componentInfoObjects:Or}){let Hr={extendedComponent:{dependencyType:"stateVariable",variableName:"extendedComponent"},needsReplacementsUpdatedWhenStale:{dependencyType:"stateVariable",variableName:"needsReplacementsUpdatedWhenStale"},link:{dependencyType:"stateVariable",variableName:"link"},unlinkedTargetsExpanded:{dependencyType:"stateVariable",variableName:"unlinkedTargetsExpanded"},unlinkedDescendants:{dependencyType:"stateVariable",variableName:"unlinkedDescendants"}};return Me.extendedComponent&&Or.isCompositeComponent({componentType:Me.extendedComponent.componentType,includeNonStandard:!1})&&(Hr.targetReadyToExpandWhenResolved={dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"readyToExpandWhenResolved"}),Me.extendedComponent&&Me.unresolvedPath===null&&(Hr.extendedVariantInfo={dependencyType:"stateVariable",componentIdx:Me.extendedComponent.componentIdx,variableName:"generatedVariantInfo",variablesOptional:!0}),Me.link||(Hr.replacementSources={dependencyType:"stateVariable",variableName:"replacementSources"}),Hr},definition(){return{setValue:{readyToExpandWhenResolved:!0}}}},ae.needsReplacementsUpdatedWhenStale={stateVariablesDeterminingDependencies:["extendedComponent","replacementSourceIdentities","effectivePropNameBySource","unresolvedPath","link","removeEmptyArrayEntries"],returnDependencies:function({stateValues:Me,componentInfoObjects:Or}){if(!Me.link)return{};let Hr={extendedComponent:{dependencyType:"stateVariable",variableName:"extendedComponent"},targetInactive:{dependencyType:"stateVariable",variableName:"targetInactive"},replacementSourceIdentities:{dependencyType:"stateVariable",variableName:"replacementSourceIdentities"}};if(Me.effectivePropNameBySource!==null){for(let[Li,ts]of Me.effectivePropNameBySource.entries())if(ts){let rs=Me.replacementSourceIdentities[Li];Hr["sourceArraySize"+Li]={dependencyType:"stateVariableArraySize",componentIdx:rs.componentIdx,variableName:ts,variablesOptional:!0,caseInsensitiveVariableMatch:!0},Hr["sourceComponentType"+Li]={dependencyType:"stateVariableComponentType",componentIdx:rs.componentIdx,variableName:ts,variablesOptional:!0,caseInsensitiveVariableMatch:!0}}}return Me.extendedComponent!==null&&Or.isCompositeComponent({componentType:Me.extendedComponent.componentType,includeNonStandard:!1})&&(Hr.allReplacementIdentities={dependencyType:"replacement",compositeIdx:Me.extendedComponent.componentIdx,recursive:!0,variableNames:["isInactiveCompositeReplacement"]}),Me.removeEmptyArrayEntries&&(Hr.replacementSources={dependencyType:"stateVariable",variableName:"replacementSources"}),Hr},markStale(){return{updateReplacements:!0}},definition:()=>({setValue:{needsReplacementsUpdatedWhenStale:!0}})},ae}static async createSerializedReplacements({component:ae,components:Me,nComponents:Or,workspace:Hr,allDoenetMLs:Li,componentInfoObjects:ts,resolveItem:rs,publicCaseInsensitiveAliasSubstitutions:ns}){Hr.replacementsCreated===void 0&&(Hr.replacementsCreated=0);let is=[];await ae.stateValues.numComponentsSpecified,Hr.numReplacementsBySource=[],Hr.numNonStringReplacementsBySource=[],Hr.propVariablesCopiedBySource=[],Hr.sourceIndices=[];let as=this.createAttributesObject(),os=await ae.stateValues.replacementSourceIdentities;if(!await ae.stateValues.extendedComponent||!os){let ys=[];const gs={prefix:`${ae.stateId}|`,num:Hr.replacementsCreated};if(ae.attributes.copyInChildren?.primitive.value){let bs=ts.componentTypeLowerCaseMapping[ae.attributes.createComponentOfType.primitive.value.toLowerCase()],vs=ts.allComponentClasses[bs];const Cs=convertUnresolvedAttributesForComponentType({attributes:ae.attributes,componentType:bs,componentInfoObjects:ts,compositeAttributesObj:as,nComponents:Or,stateIdInfo:gs}),Ts=Cs.attributes;Or=Cs.nComponents;let As=deepClone(ae.serializedChildren);vs.includeBlankStringChildren||(As=As.filter(ws=>typeof ws!="string"||ws.trim()!==""));let Ns=Ts;ys=[{type:"serialized",componentType:bs,componentIdx:Or++,stateId:`${gs.prefix}${gs.num++}`,attributes:Ns,doenetAttributes:{},state:{},children:As}],Hr.numReplacementsBySource.push(ys.length),Hr.numNonStringReplacementsBySource.push(ys.filter(ws=>typeof ws!="string").length)}let xs=await verifyReplacementsMatchSpecifiedType({component:ae,replacements:ys,workspace:Hr,componentInfoObjects:ts,compositeAttributesObj:as,components:Me,nComponents:Or,stateIdInfo:gs,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...xs.diagnostics),Or=xs.nComponents,addAttributesToSingleReplacement(xs.replacements,ae),Hr.replacementsCreated=gs.num,{replacements:xs.replacements,diagnostics:is,nComponents:Or}}let ss=await rs({componentIdx:ae.componentIdx,type:"determineDependencies",stateVariable:"replacementSources",dependency:"__determine_dependencies",expandComposites:!1});if(!ss.success)throw Error(`Couldn't resolve determineDependencies of replacementSources of ${ae.componentIdx}`);let ls=await ae.stateValues.effectivePropNameBySource;for(let ys in os)if(ls[ys]&&(ss=await rs({componentIdx:ae.componentIdx,type:"recalculateDownstreamComponents",stateVariable:"replacementSources",dependency:"target"+ys,expandComposites:!1}),!ss.success))throw Error(`Couldn't resolve recalculateDownstreamComponents for target${ys} of replacementSources of ${ae.componentIdx}`);let us=[];const cs={prefix:`${ae.stateId}|`,num:Hr.replacementsCreated};let ds=[],ps=[],ms=0,fs=0;for(let ys in os){let gs;if(ae.attributes.createComponentOfType?.primitive){let vs=await ae.stateValues.numComponentsSpecified,Cs=os.length;gs=Math.floor(vs/Cs);let Ts=vs%Cs;ys<Ts&&gs++}let xs=await this.createReplacementForSource({component:ae,sourceNum:ys,components:Me,nComponents:Or,stateIdInfo:cs,allDoenetMLs:Li,numReplacementsSoFar:ms,numNonStringReplacementsSoFar:fs,compositeAttributesObj:as,componentInfoObjects:ts,numComponentsForSource:gs,publicCaseInsensitiveAliasSubstitutions:ns,copyInChildren:Number(ys)===0&&ae.attributes.copyInChildren?.primitive.value});is.push(...xs.diagnostics),Or=xs.nComponents,Hr.propVariablesCopiedBySource[ys]=xs.propVariablesCopiedByReplacement;let bs=xs.serializedReplacements;ds[ys]=bs.length,ps[ys]=bs.filter(vs=>typeof vs!="string").length,ms+=ds[ys],fs+=ps[ys],us.push(...bs)}Hr.numReplacementsBySource=ds,Hr.numNonStringReplacementsBySource=ps,Hr.sourceIndices=os.map(ys=>ys.componentIdx);let hs=await verifyReplacementsMatchSpecifiedType({component:ae,replacements:us,workspace:Hr,componentInfoObjects:ts,compositeAttributesObj:as,components:Me,nComponents:Or,stateIdInfo:cs,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...hs.diagnostics),Or=hs.nComponents,us=hs.replacements,addAttributesToSingleReplacement(us,ae),Hr.replacementsCreated=cs.num,{replacements:us,diagnostics:is,nComponents:Or}}static async createReplacementForSource({component:ae,sourceNum:Me,components:Or,nComponents:Hr,stateIdInfo:Li,allDoenetMLs:ts,numReplacementsSoFar:rs,numNonStringReplacementsSoFar:ns,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss,copyInChildren:ls}){let us=[],cs=(await ae.stateValues.replacementSourceIdentities)[Me];if(typeof cs!="object")return ae.stateValues.effectivePropNameBySource[Me]?{serializedReplacements:[],diagnostics:us,nComponents:Hr}:{serializedReplacements:[cs],diagnostics:us,nComponents:Hr};const ds=Or[cs.componentIdx];if(await ds.stateValues.isInactiveCompositeReplacement)return{serializedReplacements:[],diagnostics:us,nComponents:Hr};let ps=(await ae.stateValues.effectivePropNameBySource)[Me],ms=await ae.stateValues.link;if(!ms||ps&&await ae.stateValues.removeEmptyArrayEntries){const hs=(await ae.stateValues.replacementSources)[Me];hs&&(cs=hs)}if(ps){let hs=await replacementFromProp({component:ae,components:Or,nComponents:Hr,stateIdInfo:Li,replacementSource:cs,propName:ps,allDoenetMLs:ts,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss});us.push(...hs.diagnostics),Hr=hs.nComponents;let ys=hs.serializedReplacements,gs=hs.propVariablesCopiedByReplacement;if(ls&&ae.serializedChildren.length>0)if(ys.length===0){let xs=as.componentTypeLowerCaseMapping[ae.attributes.createComponentOfType.primitive.value.toLowerCase()],bs=as.allComponentClasses[xs];const vs=convertUnresolvedAttributesForComponentType({attributes:ae.attributes,componentType:xs,componentInfoObjects:as,compositeAttributesObj:is,nComponents:Hr,stateIdInfo:Li}),Cs=vs.attributes;Hr=vs.nComponents;let Ts=deepClone(ae.serializedChildren);bs.includeBlankStringChildren||(Ts=Ts.filter(Ns=>typeof Ns!="string"||Ns.trim()!==""));let As=Cs;ys=[{type:"serialized",componentType:xs,componentIdx:Hr++,stateId:`${Li.prefix}${Li.num++}`,attributes:As,doenetAttributes:{},state:{},children:Ts}],gs=[[]]}else ys.length===1&&addChildrenFromComposite({replacements:ys,children:ae.serializedChildren,componentInfoObjects:as});return{serializedReplacements:ys,propVariablesCopiedByReplacement:gs,diagnostics:us,nComponents:Hr}}let fs;try{fs=[await ds.serialize({copyAll:!ms,componentSourceAttributesToIgnore:["labelIsName"],copyVariants:!ms,copyPrimaryEssentialIfShadow:!ms,copyEssentialStateIfShadow:!ms,errorIfEncounterComponent:[ae.componentIdx]})];let hs=createNewComponentIndices(fs,Hr,Li);fs=hs.components,Hr=hs.nComponents}catch(hs){if(hs.message?.startsWith(SERIALIZE_ENCOUNTERED_COMPONENT_PREFIX)){const gs=getSelfReferentialFallbackPropName({componentAncestors:ae.ancestors,componentInfoObjects:as,replacementSourceComponentType:ds.componentType});if(gs)try{let xs=await replacementFromProp({component:ae,components:Or,nComponents:Hr,stateIdInfo:Li,replacementSource:ds,propName:gs,allDoenetMLs:ts,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss});return us.push(...xs.diagnostics),Hr=xs.nComponents,{serializedReplacements:xs.serializedReplacements,propVariablesCopiedByReplacement:xs.propVariablesCopiedByReplacement,diagnostics:us,nComponents:Hr}}catch{}}console.error("we're calling this circular",hs);const ys=codedDiagnostic({type:"error",code:"doenet-e0005",args:{componentType:ae.attributes.createComponentOfType?.primitive?.value??"none"}});return fs=[{type:"serialized",componentType:"_error",componentIdx:Hr++,stateId:`${Li.prefix}${Li.num++}`,state:errorComponentState(ys.message,ys),attributes:{},doenetAttributes:{},children:[]}],us.push(ys),{serializedReplacements:fs,diagnostics:us,nComponents:Hr}}!ms&&fs[0].state&&(delete fs[0].state.fixed,delete fs[0].state.fixedPreliminary,delete fs[0].attributes.fixed),fs=postProcessCopy({serializedComponents:fs,componentIdx:ae.componentIdx,addShadowDependencies:ms,unlinkExternalCopies:!1});for(let hs of fs){if(typeof hs!="object")continue;hs.attributes||(hs.attributes={});const ys=convertUnresolvedAttributesForComponentType({attributes:ae.attributes,componentType:hs.componentType,componentInfoObjects:as,compositeAttributesObj:is,dontSkipAttributes:["asList"],nComponents:Hr,stateIdInfo:Li}),gs=ys.attributes;Hr=ys.nComponents,(gs.displayDigits||gs.displayDecimals)&&(delete hs.attributes.displayDigits,delete hs.attributes.displayDecimals),Object.assign(hs.attributes,gs)}return ls&&fs.length===1&&ae.serializedChildren.length>0&&addChildrenFromComposite({replacements:fs,children:ae.serializedChildren,componentInfoObjects:as}),{serializedReplacements:fs,diagnostics:us,nComponents:Hr}}static async calculateReplacementChanges({component:ae,nComponents:Me,componentChanges:Or,components:Hr,workspace:Li,componentInfoObjects:ts,resolveItem:rs,publicCaseInsensitiveAliasSubstitutions:ns}){let is=[];if(await ae.stateValues.link===!1)return{replacementChanges:[],diagnostics:is,nComponents:Me};let as=this.createAttributesObject(),os=await ae.stateValues.replacementSourceIdentities;if(!await ae.stateValues.extendedComponent||!os){let vs=[];const Cs={prefix:`${ae.stateId}|`,num:Li.replacementsCreated};if(ae.replacements.length>0){let Ns={changeType:"delete",changeTopLevelReplacements:!0,firstReplacementInd:0,numberReplacementsToDelete:ae.replacements.length};vs.push(Ns)}let Ts=Li.sourceIndices.length===0;Li.sourceIndices=[],Li.numReplacementsBySource=[],Li.numNonStringReplacementsBySource=[],Li.propVariablesCopiedBySource=[];let As=await verifyReplacementsMatchSpecifiedType({component:ae,replacementChanges:vs,workspace:Li,componentInfoObjects:ts,compositeAttributesObj:as,components:Hr,nComponents:Me,stateIdInfo:Cs,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...As.diagnostics),Me=As.nComponents,Ts?{replacementChanges:[],diagnostics:is,nComponents:Me}:(addAttributesToSingleReplacementChange(ae,As.replacementChanges),Li.replacementsCreated=Cs.num,{replacementChanges:As.replacementChanges,diagnostics:is,nComponents:Me})}if(await ae.stateValues.targetInactive){let vs=[];const Cs={prefix:`${ae.stateId}|`,num:Li.replacementsCreated};let Ts=ae.replacements.length;if(Ts>0){if(ae.replacementsToWithhold!==Ts){let Ns={changeType:"changeReplacementsToWithhold",replacementsToWithhold:Ts};vs.push(Ns)}let As=await verifyReplacementsMatchSpecifiedType({component:ae,replacementChanges:vs,workspace:Li,componentInfoObjects:ts,compositeAttributesObj:as,components:Hr,nComponents:Me,stateIdInfo:Cs,publicCaseInsensitiveAliasSubstitutions:ns});is.push(...As.diagnostics),Me=As.nComponents,vs=As.replacementChanges}return addAttributesToSingleReplacementChange(ae,vs),Li.replacementsCreated=Cs.num,{replacementChanges:vs,diagnostics:is,nComponents:Me}}let ss=await rs({componentIdx:ae.componentIdx,type:"determineDependencies",stateVariable:"replacementSources",dependency:"__determine_dependencies",expandComposites:!1});if(!ss.success)throw Error(`Couldn't resolve determineDependencies of replacementSources of ${ae.componentIdx}`);let ls=await ae.stateValues.effectivePropNameBySource;for(let vs in os)if(ls[vs]&&(ss=await rs({componentIdx:ae.componentIdx,type:"recalculateDownstreamComponents",stateVariable:"replacementSources",dependency:"target"+vs,expandComposites:!1}),!ss.success))throw Error(`Couldn't resolve recalculateDownstreamComponents for target${vs} of replacementSources of ${ae.componentIdx}`);let us=[];const cs={prefix:`${ae.stateId}|`,num:Li.replacementsCreated};if(ae.replacementsToWithhold>0){let vs={changeType:"changeReplacementsToWithhold",replacementsToWithhold:0};us.push(vs)}let ds=0,ps=0,ms=[],fs=[],hs=[],ys=Math.max(os.length,Li.numReplacementsBySource.length),gs=!1;for(let vs=0;vs<ys;vs++){let Cs;if(ae.attributes.createComponentOfType?.primitive){let Os=await ae.stateValues.numComponentsSpecified,$s=os.length;Cs=Math.floor(Os/$s);let qs=Os%$s;vs<qs&&Cs++}let Ts=os[vs];if(!gs&&await Hr[Ts?.componentIdx]?.stateValues.isInactiveCompositeReplacement){let Os=!0;for(let $s=vs+1;$s<ys;$s++){const qs=os[$s];if(!await Hr[qs?.componentIdx]?.stateValues.isInactiveCompositeReplacement){Os=!1;break}}if(Os){let $s=Li.numReplacementsBySource.slice(vs).reduce((qs,Rs)=>qs+Rs,0);if($s>0){let qs={changeType:"changeReplacementsToWithhold",replacementsToWithhold:$s};us.push(qs)}for(let qs=vs;qs<ys;qs++)ms[qs]=Li.numReplacementsBySource[qs],fs[qs]=Li.numNonStringReplacementsBySource[qs],hs[qs]=Li.propVariablesCopiedBySource[qs];break}else Ts=void 0}if(Ts===void 0){if(Li.numReplacementsBySource[vs]>0&&!gs){let Os=Li.numReplacementsBySource.slice(vs).reduce(($s,qs)=>$s+qs,0);if(Os>0){let $s={changeType:"delete",changeTopLevelReplacements:!0,firstReplacementInd:ds,numberReplacementsToDelete:Os};us.push($s)}gs=!0,Li.numReplacementsBySource.slice(vs).forEach(($s,qs)=>Li.numReplacementsBySource[qs]=0),Li.numNonStringReplacementsBySource.slice(vs).forEach(($s,qs)=>Li.numNonStringReplacementsBySource[qs]=0)}ms[vs]=0,fs[vs]=0,hs.push([]);continue}let As=Li.sourceIndices[vs],Ns=As===void 0||Ts.componentIdx!==As||gs;if(!Ns)for(let Os=0;Os<Li.numReplacementsBySource[vs];Os++){let $s=ae.replacements[ds+Os];if($s){if(!ls[vs]&&$s.shadows?.componentIdx!==os[vs].componentIdx){Ns=!0;break}}else{Ns=!0;break}}if(Ns){let Os=0;vs in Li.numReplacementsBySource&&(Os=Li.numReplacementsBySource[vs]);let $s=Os;gs&&($s=0);let qs=await this.recreateReplacements({component:ae,sourceNum:vs,numReplacementsSoFar:ds,numNonStringReplacementsSoFar:ps,numReplacementsToDelete:$s,components:Hr,nComponents:Me,stateIdInfo:cs,compositeAttributesObj:as,componentInfoObjects:ts,numComponentsForSource:Cs,publicCaseInsensitiveAliasSubstitutions:ns});is.push(...qs.diagnostics),Me=qs.nComponents,ds+=qs.numReplacements,ps+=qs.numNonStringReplacements,ms[vs]=qs.numReplacements,fs[vs]=qs.numNonStringReplacements,hs[vs]=qs.propVariablesCopiedByReplacement;let Rs=qs.replacementInstruction;if(!gs&&qs.numReplacements!==Os){let zs=Li.numReplacementsBySource.slice(vs).reduce((Ws,Ms)=>Ws+Ms,0);Rs.numberReplacementsToReplace=zs,gs=!0,Li.numReplacementsBySource.slice(vs).forEach((Ws,Ms)=>Li.numReplacementsBySource[Ms]=0),Li.numNonStringReplacementsBySource.slice(vs).forEach((Ws,Ms)=>Li.numNonStringReplacementsBySource[Ms]=0)}Rs&&us.push(Rs);continue}if(!ls[vs]&&Li.numReplacementsBySource[vs]>0){ds+=Li.numReplacementsBySource[vs],ps+=Li.numNonStringReplacementsBySource[vs],ms[vs]=Li.numReplacementsBySource[vs],fs[vs]=Li.numNonStringReplacementsBySource[vs];continue}const ws={prefix:`${ae.stateId}|`,num:cs.num};let Es=await this.createReplacementForSource({component:ae,sourceNum:vs,components:Hr,nComponents:Me,stateIdInfo:ws,numReplacementsSoFar:ds,numNonStringReplacementsSoFar:ps,compositeAttributesObj:as,componentInfoObjects:ts,numComponentsForSource:Cs,publicCaseInsensitiveAliasSubstitutions:ns,copyInChildren:Number(vs)===0&&ae.attributes.copyInChildren?.primitive.value});is.push(...Es.diagnostics);const Ss=Es.nComponents;let Ds=Es.propVariablesCopiedByReplacement,Is=Es.serializedReplacements,Vs=Is.length,ks=Li.numReplacementsBySource[vs];if(Vs!==ks){let Os=Li.numReplacementsBySource.slice(vs).reduce((qs,Rs)=>qs+Rs,0),$s={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:ds,numberReplacementsToReplace:Os,serializedReplacements:Is};us.push($s),gs=!0,Me=Ss,cs.num=ws.num,Li.numReplacementsBySource.slice(vs).forEach((qs,Rs)=>Li.numReplacementsBySource[Rs]=0),Li.numNonStringReplacementsBySource.slice(vs).forEach((qs,Rs)=>Li.numNonStringReplacementsBySource[Rs]=0)}else for(let Os=0;Os<Vs;Os++){let $s=Ds[Os].length!==Li.propVariablesCopiedBySource[vs][Os].length,qs=!$s;if($s||(Li.propVariablesCopiedBySource[vs][Os].some((Rs,zs)=>Rs!==Ds[Os][zs])?(qs=!1,$s=!0):ae.replacements[ds+Os].componentType!==Is[Os].componentType&&($s=!0)),Os==0&&$s&&qs&&await ae.stateValues.numComponentsSpecified===1&&Vs===1&&!(ae.replacementsToWithhold>0)&&Li.sourceIndices.length===1&&($s=!1),$s){Me=Ss,cs.num=ws.num;let Rs={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:ds+Os,numberReplacementsToReplace:1,serializedReplacements:[Is[Os]]};us.push(Rs)}Is[Os]}let Gs=Is.filter(Os=>typeof Os!="string").length;ds+=Vs,ps+=Gs,ms[vs]=Vs,fs[vs]=Gs,hs[vs]=Ds}let xs=Li.sourceIndices.length===0;Li.numReplacementsBySource=ms,Li.numNonStringReplacementsBySource=fs,Li.sourceIndices=os.map(vs=>vs.componentIdx),Li.propVariablesCopiedBySource=hs;let bs=await verifyReplacementsMatchSpecifiedType({component:ae,replacementChanges:us,workspace:Li,componentInfoObjects:ts,compositeAttributesObj:as,components:Hr,nComponents:Me,stateIdInfo:cs,publicCaseInsensitiveAliasSubstitutions:ns});return is.push(...bs.diagnostics),Me=bs.nComponents,us=bs.replacementChanges,xs&&Li.sourceIndices.length===0?{replacementChanges:[],diagnostics:is,nComponents:Me}:(addAttributesToSingleReplacementChange(ae,us),Li.replacementsCreated=cs.num,{replacementChanges:us,diagnostics:is,nComponents:Me})}static async recreateReplacements({component:ae,sourceNum:Me,numReplacementsSoFar:Or,numNonStringReplacementsSoFar:Hr,numReplacementsToDelete:Li,components:ts,nComponents:rs,stateIdInfo:ns,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss}){let ls=[],us=await this.createReplacementForSource({component:ae,sourceNum:Me,numReplacementsSoFar:Or,numNonStringReplacementsSoFar:Hr,components:ts,nComponents:rs,stateIdInfo:ns,compositeAttributesObj:is,componentInfoObjects:as,numComponentsForSource:os,publicCaseInsensitiveAliasSubstitutions:ss,copyInChildren:Number(Me)===0&&ae.attributes.copyInChildren?.primitive.value});ls.push(...us.diagnostics),rs=us.nComponents;let cs=us.propVariablesCopiedByReplacement,ds=us.serializedReplacements;if(ds.length>0||Li>0){let ps={changeType:"add",changeTopLevelReplacements:!0,firstReplacementInd:Or,numberReplacementsToReplace:Li,serializedReplacements:ds};return{numReplacements:ds.length,numNonStringReplacements:ds.filter(ms=>typeof ms!="string").length,propVariablesCopiedByReplacement:cs,replacementInstruction:ps,diagnostics:ls,nComponents:rs}}else return{numReplacements:0,numNonStringReplacements:0,propVariablesCopiedByReplacement:cs,replacementInstruction:null,diagnostics:ls,nComponents:rs}}}async function replacementFromProp({component:Br,components:ae,nComponents:Me,stateIdInfo:Or,replacementSource:Hr,propName:Li,allDoenetMLs:ts,compositeAttributesObj:rs,componentInfoObjects:ns,numComponentsForSource:is,publicCaseInsensitiveAliasSubstitutions:as}){let os=[],ss=[],ls=[],us=-1,cs,ds;if(Hr&&(cs=ae[Hr.componentIdx],ds=as({stateVariables:[Li],componentClass:cs.constructor})[0]),ds===void 0||ds.slice(0,12)==="__not_public"){if(Li==="__no_target_found"){const hs=await Br.stateValues.unresolvedPath,ys=hs[0].position?.start.offset,gs=hs[hs.length-1].position?.end.offset;let xs="";if(ys!=null&&gs!=null){const bs=hs[0].sourceDoc??0;xs=ts?.[bs]?.substring(ys,gs)}os.push(codedDiagnostic({type:"info",code:"doenet-i0018",args:{property:xs,component:Hr.componentType}}))}else Li!=="__prop_name_not_found"&&os.push(codedDiagnostic({type:"info",code:"doenet-i0018",args:{property:Li,component:Hr.componentType}}));return{serializedReplacements:[],propVariablesCopiedByReplacement:[],diagnostics:os,nComponents:Me}}let ps=cs.state[ds],ms=await ps.value,fs=await Br.stateValues.link;if(ps.isArray||ps.isArrayEntry){let hs,ys,gs,xs;if(ps.isArray?(hs=ps,gs=await ps.arraySize,ys=ps.getAllArrayKeys(gs,!1)):(hs=cs.state[ps.arrayStateVariable],ys=await ps.unflattenedArrayKeys,xs=await ps.arrayKeys),hs.shadowingInstructions?.hasVariableComponentType&&(await Br.stateValues.replacementSources,!hs.shadowingInstructions.createComponentOfType))return{serializedReplacements:[],propVariablesCopiedByReplacement:[],diagnostics:os,nComponents:Me};let bs=ps.wrappingComponents,vs=bs.length,Cs=is;if(ps.isArray)gs.some(Ts=>Ts===0)?Cs=0:Cs=gs.slice(0,gs.length-vs).reduce((Ts,As)=>Ts*As,1);else if(xs.length===0)Cs=0;else if(vs===0)Cs=xs.length;else if(vs>=ps.numDimensions)Cs=1;else if(vs===ps.numDimensions-1)Cs=ys.length;else{let Ts=ps.numDimensions-vs-1;Cs=flattenLevels(ys,Ts).length}if(vs===0){let Ts=flattenDeep(ys);for(let As=0;As<Cs;As++){let Ns=Ts[As];if(await Br.stateValues.removeEmptyArrayEntries){if(!Ns)continue;let Ss=hs.keyToIndex(Ns);Array.isArray(Ss)||(Ss=[Ss]);let Ds=await hs.value;for(let Is of Ss)Ds=Ds[Is];if(Ds==null)continue}us++;let ws=ls[us]=[],Es=hs.shadowingInstructions.createComponentOfType;if(Array.isArray(Es)&&(Es[hs.keyToIndex(Ns)]?Es=Es[hs.keyToIndex(Ns)]:Es=Es[0]),Ns){let Ss=hs.arrayVarNameFromArrayKey(Ns);ws.push(Ss);const Ds=convertUnresolvedAttributesForComponentType({attributes:Br.attributes,componentType:Es,componentInfoObjects:ns,compositeAttributesObj:rs,nComponents:Me,stateIdInfo:Or}),Is=Ds.attributes;Me=Ds.nComponents;let Vs;if(hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){Vs={};for(let Gs in hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let Os=hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables[Gs].stateVariableToShadow,$s=cs.state[Os];$s.isArray&&(Os=$s.arrayVarNameFromArrayKey(Ns)),Vs[Gs]={stateVariableToShadow:Os}}}let ks;if(hs.shadowingInstructions.addStateVariablesShadowingStateVariables){ks={};for(let Gs in hs.shadowingInstructions.addStateVariablesShadowingStateVariables){let Os=hs.shadowingInstructions.addStateVariablesShadowingStateVariables[Gs].stateVariableToShadow,$s=cs.state[Os];$s.isArray&&(Os=$s.arrayVarNameFromArrayKey(Ns)),ks[Gs]={stateVariableToShadow:Os}}}if(fs){let Gs={};if(Vs){let $s=ns.allComponentClasses[Es].createAttributesObject();for(let qs in Vs){let Rs=Vs[qs].stateVariableToShadow,zs=$s[qs]?.createComponentOfType;if(zs){let Ws={type:"serialized",componentType:zs,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:Rs}]}};Gs[qs]={component:Ws}}}}Object.assign(Gs,Is),ss.push({type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:Gs,doenetAttributes:{},children:[],state:{},downstreamDependencies:{[Hr.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:Ss,additionalStateVariableShadowing:ks}]}})}else{let Gs={};if(Vs){let Ms=ns.allComponentClasses[Es].createAttributesObject(),Fs={};for(let Xs in Vs)if(Ms[Xs]?.createComponentOfType){let Qs=Vs[Xs].stateVariableToShadow,Zs=cs.state[Qs],dl=await Zs.value;Zs.isArray&&(dl=dl[Zs.keyToIndex[Ns]]),cs.state[Qs].usedDefault||(Fs[Xs]=dl)}const Us=convertAttributeValuesForComponentType({attributeValues:Fs,componentType:Es,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or}),js=Us.attributes;if(Me=Us.nComponents,ps.shadowingInstructions.attributesToShadow)for(let Xs of ps.shadowingInstructions.attributesToShadow)if(cs.attributes[Xs]?.component){const Qs=await cs.attributes[Xs].component.serialize({copyAll:!0,copyVariants:!0});let Zs=createNewComponentIndices([Qs],Me,Or);Me=Zs.nComponents,js[Xs]={component:Zs.components[0]}}else cs.attributes[Xs]?.primitive!==void 0&&(js[Xs]={primitive:JSON.parse(JSON.stringify(cs.attributes[Xs].primitive))});Object.assign(Gs,js)}Object.assign(Gs,Is);let Os="value",$s=ns.allComponentClasses[Es];$s.primaryEssentialStateVariable?Os=$s.primaryEssentialStateVariable:$s.primaryStateVariableForDefinition&&(Os=$s.primaryStateVariableForDefinition);let qs=hs.keyToIndex(Ns);Array.isArray(qs)||(qs=[qs]);let Rs=await hs.value;for(let Ws of qs)Rs=Rs[Ws];let zs={type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:Gs,doenetAttributes:{},state:{[Os]:Rs},children:[]};ss.push(zs)}}else ss.push({type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},children:[],state:{}})}}else{let Ts=async function(ws,Es,Ss=!1){let Ds=[],Is=[];if(Es>1)for(let ks of ws){let Gs=await Ts(ks,Es-1);Ds.push(...Gs.pieces),Is.push(...Gs.propVariablesCopiedByPiece)}else for(let ks of ws){let Gs=hs.arrayVarNameFromArrayKey(ks),Os=[Gs],$s=hs.shadowingInstructions.createComponentOfType;Array.isArray($s)&&($s=$s[hs.keyToIndex(ks)]);let qs;if(hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){qs={};let zs=hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables;for(let Ws in zs)if(!zs[Ws].addToOuterIfWrappedArray){let Ms=zs[Ws].stateVariableToShadow,Fs=cs.state[Ms];Fs.isArray&&(Ms=Fs.arrayVarNameFromArrayKey(ks)),qs[Ws]={stateVariableToShadow:Ms}}}let Rs;if(hs.shadowingInstructions.addStateVariablesShadowingStateVariables){Rs={};for(let zs in hs.shadowingInstructions.addStateVariablesShadowingStateVariables){let Ws=hs.shadowingInstructions.addStateVariablesShadowingStateVariables[zs].stateVariableToShadow,Ms=cs.state[Ws];Ms.isArray&&(Ws=Ms.arrayVarNameFromArrayKey(ks)),Rs[zs]={stateVariableToShadow:Ws}}}if(fs){let zs={};if(qs){let Ms=ns.allComponentClasses[$s].createAttributesObject();for(let Fs in qs){let Us=qs[Fs].stateVariableToShadow,js=Ms[Fs]?.createComponentOfType;if(js){let Xs={type:"serialized",componentType:js,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:Us}]}};zs[Fs]={component:Xs}}}}Ds.push({type:"serialized",componentType:$s,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:zs,doenetAttributes:{},children:[],state:{},downstreamDependencies:{[Hr.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:Gs,additionalStateVariableShadowing:Rs}]}})}else{let zs={};if(qs){let Qs=ns.allComponentClasses[$s].createAttributesObject(),Zs={};for(let nl in qs)if(Qs[nl]?.createComponentOfType){let yl=qs[nl].stateVariableToShadow,ml=cs.state[yl],Ps=await ml.value;ml.isArray&&(Ps=Ps[ml.keyToIndex[ks]]),cs.state[yl].usedDefault||(Zs[nl]=Ps)}const dl=convertAttributeValuesForComponentType({attributeValues:Zs,componentType:$s,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or}),ll=dl.attributes;if(Me=dl.nComponents,ps.shadowingInstructions.attributesToShadow)for(let nl of ps.shadowingInstructions.attributesToShadow)if(cs.attributes[nl]?.component){let yl=await cs.attributes[nl].component.serialize({copyAll:!0,copyVariants:!0}),ml=createNewComponentIndices([yl],Me,Or);Me=ml.nComponents,ll[nl]={component:ml.components[0]}}else cs.attributes[nl]?.primitive!==void 0&&(ll[nl]={primitive:JSON.parse(JSON.stringify(cs.attributes[nl].primitive))});Object.assign(zs,ll)}let Ws="value",Ms=ns.allComponentClasses[$s];Ms.primaryEssentialStateVariable?Ws=Ms.primaryEssentialStateVariable:Ms.primaryStateVariableForDefinition&&(Ws=Ms.primaryStateVariableForDefinition);let Fs=hs.keyToIndex(ks);Array.isArray(Fs)||(Fs=[Fs]);let Us=await hs.value;for(let Xs of Fs)Us=Us[Xs];let js={type:"serialized",componentType:$s,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:zs,doenetAttributes:{},children:[],state:{[Ws]:Us}};Ds.push(js)}Is.push(Os)}let Vs=bs[Es-1];if(Ds.length>0&&Vs&&Vs.length>0){for(let ks=Vs.length-1;ks>=0;ks--){let Gs=typeof Vs[ks]=="object"?Vs[ks].componentType:Vs[ks],Os=[],$s={};for(let qs of Ds)if(qs.isAttributeNamed){let Rs=qs.isAttributeNamed;delete qs.isAttributeNamed,$s[Rs]={component:qs}}else Os.push(qs);Ds=[{type:"serialized",componentType:Gs,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,children:Os,attributes:$s,doenetAttributes:{},state:{},skipSugar:!0}],typeof Vs[ks]=="object"&&Vs[ks].isAttributeNamed&&(Ds[0].isAttributeNamed=Vs[ks].isAttributeNamed)}Is=[flattenDeep(Is)]}if(Ss&&hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let ks={},Gs=hs.shadowingInstructions.addAttributeComponentsShadowingStateVariables;for(let Os in Gs)if(Gs[Os].addToOuterIfWrappedArray){let $s=Gs[Os].stateVariableToShadow;ks[Os]={stateVariableToShadow:$s}}if(Object.keys(ks).length>0)for(let Os of Ds){let $s=Os.attributes;$s||($s=Os.attributes={});let Rs=ns.allComponentClasses[Os.componentType].createAttributesObject();if(fs)for(let zs in ks){let Ws=ks[zs].stateVariableToShadow,Ms=Rs[zs]?.createComponentOfType;if(Ms){let Fs={type:"serialized",componentType:Ms,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:Ws}]}};$s[zs]={component:Fs}}}else{let zs={};for(let Ws in ks)if(Rs[Ws]?.createComponentOfType){let Ms=ks[Ws].stateVariableToShadow,Us=await cs.state[Ms].value;cs.state[Ms].usedDefault||(zs[Ws]=Us)}if(Object.keys(zs).length>0){const Ws=convertAttributeValuesForComponentType({attributeValues:zs,componentType:Os.componentType,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or});zs=Ws.attributes,Me=Ws.nComponents,Object.assign($s,zs)}}}}return{pieces:Ds,propVariablesCopiedByPiece:Is}},As=await Ts(ys,ps.numDimensions,!0),Ns=As.pieces;ls=As.propVariablesCopiedByPiece;for(let ws of Ns){if(typeof ws!="object")continue;ws.attributes||(ws.attributes={});const Es=convertUnresolvedAttributesForComponentType({attributes:Br.attributes,componentType:ws.componentType,componentInfoObjects:ns,compositeAttributesObj:rs,nComponents:Me,stateIdInfo:Or}),Ss=Es.attributes;Me=Es.nComponents,Object.assign(ws.attributes,Ss),fs&&(ws.downstreamDependencies={[Hr.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:ds,ignorePrimaryStateVariable:!0}]})}if(us+=Ns.length,ss.push(...Ns),Ns.length<Cs)for(let ws=Ns.length;ws<Cs;ws++){us++,ls[us]=[];let Es,Ss=bs[0],Ds;Ss&&Ss.length>0?typeof Ss[0]=="object"?(Es=Ss[0].componentType,Ds=Object.assign({},Ss[0].doenetAttributes)):Es=Ss[0]:(Es=hs.shadowingInstructions.createComponentOfType,Array.isArray(Es)&&(ps.isArrayEntry?Es=Es[hs.keyToIndex(xs[ws])]:Es=Es[ws]));let Is={type:"serialized",componentType:Es,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[]};Ds&&(Is.doenetAttributes=Ds),ss.push(Is)}else if(Ns>Cs)throw Error(`Something went wrong when creating replacements for ${Br.componentIdx} as we ended up with too many replacements`)}}else{if(ps.shadowingInstructions?.hasVariableComponentType&&await ps.value,!ps.shadowingInstructions?.createComponentOfType)return{serializedReplacements:[],propVariablesCopiedByReplacement:[],diagnostics:os,nComponents:Me};if(us++,(ls[us]=[]).push(ds),ps.shadowingInstructions.createComponentOfType==="string")ss.push(await ps.value);else{const ys=convertUnresolvedAttributesForComponentType({attributes:Br.attributes,componentType:ps.shadowingInstructions.createComponentOfType,componentInfoObjects:ns,compositeAttributesObj:rs,nComponents:Me,stateIdInfo:Or}),gs=ys.attributes;if(Me=ys.nComponents,fs){let xs={};if(ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let vs=ns.allComponentClasses[ps.shadowingInstructions.createComponentOfType].createAttributesObject();for(let Cs in ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let Ts=ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables[Cs].stateVariableToShadow,As=vs[Cs]?.createComponentOfType;if(As){let Ns={type:"serialized",componentType:As,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:{},doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{compositeIdx:Br.componentIdx,dependencyType:"referenceShadow",propVariable:Ts}]}};xs[Cs]={component:Ns}}}}Object.assign(xs,gs),ss.push({type:"serialized",componentType:ps.shadowingInstructions.createComponentOfType,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:xs,doenetAttributes:{},state:{},children:[],downstreamDependencies:{[cs.componentIdx]:[{dependencyType:"referenceShadow",compositeIdx:Br.componentIdx,propVariable:ds,additionalStateVariableShadowing:ps.shadowingInstructions.addStateVariablesShadowingStateVariables}]}})}else{let xs={};if(ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables){let As=ns.allComponentClasses[ps.shadowingInstructions.createComponentOfType].createAttributesObject(),Ns={};for(let Ss in ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables)if(As[Ss]?.createComponentOfType&&Ss!=="fixed"){let Ds=ps.shadowingInstructions.addAttributeComponentsShadowingStateVariables[Ss].stateVariableToShadow,Is=await cs.state[Ds].value;cs.state[Ds].usedDefault||(Ns[Ss]={type:"unresolved",name:Ss,children:[Is.toString()]})}const ws=convertUnresolvedAttributesForComponentType({attributes:Ns,componentType:ps.shadowingInstructions.createComponentOfType,componentInfoObjects:ns,nComponents:Me,stateIdInfo:Or}),Es=ws.attributes;if(Me=ws.nComponents,ps.shadowingInstructions.attributesToShadow)for(let Ss of ps.shadowingInstructions.attributesToShadow)if(cs.attributes[Ss]?.component){let Ds=await cs.attributes[Ss].component.serialize({copyAll:!0,copyVariants:!0}),Is=createNewComponentIndices([Ds],Me,Or);Me=Is.nComponents,Es[Ss]={type:"component",name:Ss,component:Is.components[0]}}else cs.attributes[Ss]?.primitive!==void 0&&(Es[Ss]={type:"primitive",name:Ss,primitive:JSON.parse(JSON.stringify(cs.attributes[Ss].primitive))});Object.assign(xs,Es)}Object.assign(xs,gs);let bs="value",vs=ns.allComponentClasses[ps.shadowingInstructions.createComponentOfType];vs.primaryEssentialStateVariable?bs=vs.primaryEssentialStateVariable:vs.primaryStateVariableForDefinition&&(bs=vs.primaryStateVariableForDefinition);let Cs={type:"serialized",componentType:ps.shadowingInstructions.createComponentOfType,componentIdx:Me++,stateId:`${Or.prefix}${Or.num++}`,attributes:xs,doenetAttributes:{},children:[],state:{[bs]:ms}};ss.push(Cs)}}}if(await Br.stateValues.implicitProp)for(let hs of ss)hs.doenetAttributes||(hs.doenetAttributes={}),hs.doenetAttributes.fromImplicitProp=!0,hs.downstreamDependencies?.[cs.componentIdx]?.[0]&&(hs.downstreamDependencies[cs.componentIdx][0].fromImplicitProp=!0);return{serializedReplacements:ss,propVariablesCopiedByReplacement:ls,diagnostics:os,nComponents:Me}}function addChildrenFromComposite({replacements:Br,children:ae,componentInfoObjects:Me}){let Or=Br[0];Or.children||(Or.children=[]);let Hr=deepClone(ae);Me.allComponentClasses[Or.componentType].includeBlankStringChildren||(Hr=Hr.filter(ts=>typeof ts!="string"||ts.trim()!=="")),Or.children.push(...Hr)}class SegmentConstraintComponent extends BaseComponent{static componentType="_segmentConstraint";static rendererType=void 0;static inSchemaOnlyInheritAs=["_segmentConstraint"]}class VariableNameList extends MathList{static componentType="_variableNameList";static stateVariableToBeShadowed="variables";static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.variables={description:"The list of variable names.",public:!0,shadowingInstructions:{createComponentOfType:"_variableName"},isArray:!0,entryPrefixes:["var"],additionalStateVariablesDefined:["validVariables"],returnArraySizeDependencies:()=>({numComponents:{dependencyType:"stateVariable",variableName:"numComponents"}}),returnArraySize({dependencyValues:Me}){return[Me.numComponents]},returnArrayDependenciesByKey({arrayKeys:Me}){let Or={};for(let Hr of Me)Or[Hr]={math:{dependencyType:"stateVariable",variableName:"math"+(Number(Hr)+1)}};return{dependenciesByKey:Or}},arrayDefinitionByKey({dependencyValuesByKey:Me,arrayKeys:Or}){let Hr={},Li={},ts=[];for(let rs of Or){let ns=Me[rs].math,is=isValidVariable(ns);is||(ts.push(codedDiagnostic({type:"warning",code:"doenet-w0017",args:{value:ns.toString()}})),is=!1),Hr[rs]=ns,Li[rs]=is}return{setValue:{variables:Hr,validVariables:Li},sendDiagnostics:ts}}},ae}}class Variable extends MathComponent{static componentType="_variableName";static rendererType="math";static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return renameStateVariable({stateVariableDefinitions:ae,oldName:"value",newName:"valuePreValidate"}),ae.valuePreValidate.essentialVarName="value",ae.value={description:"The variable as a math expression.",public:!0,shadowingInstructions:{createComponentOfType:"_variableName"},additionalStateVariablesDefined:["validVariable"],returnDependencies:()=>({valuePreValidate:{dependencyType:"stateVariable",variableName:"valuePreValidate"}}),definition({dependencyValues:Me}){let Or=[],Hr=isValidVariable(Me.valuePreValidate);return Hr||Or.push(codedDiagnostic({type:"warning",code:"doenet-w0017",args:{value:Me.valuePreValidate.toString()}})),{setValue:{value:Me.valuePreValidate,validVariable:Hr},sendDiagnostics:Or}},inverseDefinition({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setDependency:"valuePreValidate",desiredValue:Me.value}]}}},ae}}class ListOfNumberLists extends InlineComponent{static componentType="_listOfNumberLists";static includeBlankStringChildren=!0;static removeBlankStringChildrenPostSugar=!0;static additionalSchemaChildren=["math","string"];static returnSugarInstructions(){let ae=[],Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){let ts=breakEmbeddedStringsIntoParensPieces({componentList:Or,removeParens:!0});return ts.success!==!0?{success:!1}:{success:!0,newChildren:ts.pieces.map(rs=>({type:"serialized",componentType:"numberList",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:rs,attributes:{},doenetAttributes:{},state:{}})),nComponents:Hr}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){return[{group:"lists",componentTypes:["numberList"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return delete ae.value,ae.numLists={returnDependencies:()=>({listChildren:{dependencyType:"child",childGroups:["lists"]}}),definition({dependencyValues:Me}){return{setValue:{numLists:Me.listChildren.length}}}},ae.lists={isArray:!0,entryPrefixes:["list"],returnArraySizeDependencies:()=>({numLists:{dependencyType:"stateVariable",variableName:"numLists"}}),returnArraySize({dependencyValues:Me}){return[Me.numLists]},returnArrayDependenciesByKey({arrayKeys:Me}){let Or={};for(let Hr of Me)Or[Hr]={listChildren:{dependencyType:"child",childGroups:["lists"],variableNames:["values"],childIndices:[Hr]}};return{dependenciesByKey:Or}},arrayDefinitionByKey({dependencyValuesByKey:Me,arrayKeys:Or}){let Hr={};for(let Li of Or)if(Me[Li].listChildren&&Me[Li].listChildren.length===1){let ts=Me[Li].listChildren[0];Hr[Li]=ts.stateValues.values}return{setValue:{lists:Hr}}}},ae}}class DirectionComponent extends BaseComponent{static componentType="_directionComponent";static rendererType=void 0;static primaryStateVariableForDefinition="directionShadow";static additionalSchemaChildren=["math","string"];static createAttributesObject(){let ae=super.createAttributesObject();return Object.assign(ae,returnNumberDisplayAttributes()),ae}static returnSugarInstructions(){let ae=super.returnSugarInstructions(),Me=function({matchedChildren:Or,nComponents:Hr,stateIdInfo:Li}){return Or.length===0?{success:!1}:Or.length>1||typeof Or[0]=="string"?{success:!0,newChildren:[{type:"serialized",componentType:"math",componentIdx:Hr++,stateId:Li?`${Li.prefix}${Li.num++}`:void 0,children:Or,attributes:{},doenetAttributes:{},state:{}}],nComponents:Hr}:{success:!1}};return ae.push({replacementFunction:Me}),ae}static returnChildGroups(){let ae=super.returnChildGroups();return ae.push({group:"directions",componentTypes:["_directionComponent"]}),ae}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return Object.assign(ae,returnNumberDisplayStateVariableDefinitions()),ae.directionShadow={defaultValue:Context.fromAst(["vector",1,0]),hasEssential:!0,essentialVarName:"direction",set:convertValueToMathExpression,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{directionShadow:!0}}),inverseDefinition:function({desiredStateVariableValues:Me}){return{success:!0,instructions:[{setEssentialValue:"directionShadow",value:convertValueToMathExpression(Me.directionShadow)}]}}},ae.unnormalizedDirection={returnDependencies:()=>({directionChild:{dependencyType:"child",childGroups:["directions"],variableNames:["unnormalizedDirection"]},directionShadow:{dependencyType:"stateVariable",variableName:"directionShadow"}}),definition({dependencyValues:Me}){let Or;return Me.directionChild.length>0?Or=Me.directionChild[0].stateValues.unnormalizedDirection:Or=Me.directionShadow,Or=Or.tuples_to_vectors().expand().simplify(),{setValue:{unnormalizedDirection:Or}}},inverseDefinition({desiredStateVariableValues:Me,dependencyValues:Or}){let Hr;return Or.directionChild.length>0?Hr=[{setDependency:"directionChild",desiredValue:Me.unnormalizedDirection,childIndex:0,variableIndex:0}]:Hr=[{setDependency:"directionShadow",desiredValue:Me.unnormalizedDirection}],{success:!0,instructions:Hr}}},ae.numDimensions={returnDependencies:()=>({unnormalizedDirection:{dependencyType:"stateVariable",variableName:"unnormalizedDirection"}}),definition({dependencyValues:Me}){let Or=Me.unnormalizedDirection.tree,Hr;return Array.isArray(Or)&&vectorOperators.includes(Or[0])?Hr=Or.length-1:Hr=1,{setValue:{numDimensions:Hr}}}},ae.direction={description:"The normalized direction as a unit vector.",public:!0,shadowingInstructions:{createComponentOfType:"math",addAttributeComponentsShadowingStateVariables:returnNumberDisplayAttributeComponentShadowing(),returnWrappingComponents(Me){return Me==="x"?[]:[["vector",{componentType:"mathList",isAttributeNamed:"xs"}]]}},isArray:!0,entryPrefixes:["x"],hasEssential:!0,essentialVarName:"direction2",set:convertValueToMathExpression,returnArraySizeDependencies:()=>({numDimensions:{dependencyType:"stateVariable",variableName:"numDimensions"}}),returnArraySize({dependencyValues:Me}){return[Me.numDimensions]},returnArrayDependenciesByKey(){return{globalDependencies:{unnormalizedDirection:{dependencyType:"stateVariable",variableName:"unnormalizedDirection"}}}},arrayDefinitionByKey:function({globalDependencyValues:Me,arraySize:Or}){let Hr={},Li=Me.unnormalizedDirection.tree;if(Array.isArray(Li)&&vectorOperators.includes(Li[0])){let ts=[],rs=Or[0],ns=0,is=!0;for(let as=0;as<rs;as++){let os=Me.unnormalizedDirection.get_component(as).evaluate_to_constant();if(Number.isFinite(os))ts.push(os),ns+=os*os;else{is=!1;break}}if(is){let as=Math.sqrt(ns);for(let os=0;os<rs;os++)Hr[os.toString()]=Context.fromAst(ts[os]/as)}else for(let as=0;as<rs;as++)Hr[as.toString()]=Context.fromAst("_")}else Hr[0]=Context.fromAst(1);return{setValue:{direction:Hr}}},inverseArrayDefinitionByKey({desiredStateVariableValues:Me,globalDependencyValues:Or,arraySize:Hr}){let Li=[];if(Hr[0]>1){let ts=0;for(let ns=0;ns<Hr[0];ns++){let is=Or.unnormalizedDirection.get_component(ns).evaluate_to_constant();ts+=is*is}Number.isFinite(ts)?ts=Math.sqrt(ts):ts=1;let rs=["vector"];for(let ns in Me.direction)rs[Number(ns)+1]=Me.direction[ns].tree*ts;rs.length=Hr[0]+1,Li.push({setDependency:"unnormalizedDirection",desiredValue:Context.fromAst(rs)})}return{success:!0,instructions:Li}}},ae}}class ErrorComponent extends BlockComponent{static componentType="_error";static renderChildren=!0;static createAttributesObject(){let ae=super.createAttributesObject();return ae.message={createComponentOfType:"text",createStateVariable:"message",defaultValue:"",public:!0,forRenderer:!0,description:"The error message describing what went wrong."},ae}static returnChildGroups(){return[{group:"errors",componentTypes:["_error"]},{group:"any",componentTypes:["_base"]}]}static returnStateVariableDefinitions(){let ae=super.returnStateVariableDefinitions();return ae.hidden={returnDependencies:()=>({}),definition:()=>({setValue:{hidden:!1}})},ae.code={forRenderer:!0,hasEssential:!0,defaultValue:null,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{code:!0}})},ae.args={forRenderer:!0,hasEssential:!0,defaultValue:null,returnDependencies:()=>({}),definition:()=>({useEssentialOrDefaultValue:{args:!0}})},ae.rangeMessage={description:"A message describing where in the source document the error was found.",forRenderer:!0,public:!0,shadowingInstructions:{createComponentOfType:"text"},additionalStateVariablesDefined:[{variableName:"rangeArgs",forRenderer:!0}],returnDependencies:()=>({position:{dependencyType:"position"}}),definition({dependencyValues:Me}){let Or=Me.position;return Or?.start.line===void 0?{setValue:{rangeMessage:"",rangeArgs:null}}:{setValue:{rangeMessage:"Found on "+printDoenetMLrange(Or)+".",rangeArgs:{span:Or.start.line===Or.end.line?"line":"lines",startLine:String(Or.start.line),endLine:String(Or.end.line)}}}}},ae.showMessage={forRenderer:!0,returnDependencies:()=>({childErrors:{dependencyType:"child",childGroups:["errors"],variableNames:["message"]},message:{dependencyType:"stateVariable",variableName:"message"}}),definition({dependencyValues:Me}){return{setValue:{showMessage:!Me.childErrors.some(Hr=>Hr.stateValues.message===Me.message)}}}},ae}}class Comment extends BaseComponent{static componentType="_comment";static rendererType=void 0;static returnChildGroups(){return[{group:"any",componentTypes:["_base"]}]}}const componentTypeArray=[...Object.values(Aliases),...Object.values(MMeMen),...Object.values(MdMdnMrow),...Object.values(BooleanOperators),...Object.values(BooleanOperatorsOfMath),...Object.values(MathOperators),...Object.values(FunctionOperators),...Object.values(TextOperatorsOfMath),...Object.values(Extrema$1),...Object.values(ParagraphMarkup),...Object.values(SingleCharacterComponents),...Object.values(Sectioning),...Object.values(Lists),...Object.values(DynamicalSystems),...Object.values(Chemistry),...Object.values(FeedbackDefinitions$1),...Object.values(StyleDefinitions$1),...Object.values(StylePalette$1),...Object.values(SideBySide$1),...Object.values(ComponentWithSelectableType$1),...Object.values(Indexing),...Object.values(Divisions),...Object.values(Verbatim),...Object.values(Paginator$1),...Object.values(MatrixInput$1),...Object.values(FractionInput$1),...Object.values(Solution$1),Document,Text,TextList$1,TextList2,P$2,BooleanComponent,BooleanList,MathComponent,MathList,TupleList,NumberList,Copy,Collect,Ref,Point,Coords,Line,LineSegment,Ray,Polyline,Polygon,Triangle,Rectangle,RegularPolygon,Circle,Parabola,Curve,BezierControls,ControlVectors,Vector,Angle,Answer,Award,When,MathInput,Textinput,BooleanInput,Choiceinput,Choice,NumberComponent,Integer,Graph$1,Annotations,Annotation,Function$1,PiecewiseFunction,Interval,Option$1,Sequence,Slider,Spreadsheet,DiscreteSimulationResultList,DiscreteSimulationResultPolyline,Cell,Row,Column,CellBlock,Tabular,Table,Figure,Markers,Panel,Repeat,RepeatForSequence,Pegboard,Constraints,ConstrainToGrid,ConstrainToGraph,AttractToGrid,ConstrainTo,AttractTo,ConstraintUnion,AttractToConstraint,ConstrainToInterior,Intersection,ConstrainToAngles,AttractToAngles,ConditionalContent,AsList,VariantControl,TextListFromString,SelectFromSequence,Select,Group,AnimateFromSequence,Evaluate,SelectRandomNumbers,SampleRandomNumbers,SelectPrimeNumbers,SamplePrimeNumbers,Substitute,PeriodicSet,Image,Video,Embed,Hint,IntComma,Pluralize,Feedback,CollaborateGroups,CollaborateGroupSetup,ConsiderAsResponses,Case,Lorem,UpdateValue,CallAction,triggerSet,FunctionIterates,Module,ModuleAttributes,Setup,Footnote,Caption,Endpoint,Sort,Shuffle,SolveEquations,PostponeRenderContainer,SubsetOfRealsInput,SubsetOfReals,Split,BestFitLine,RegionBetweenCurveXAxis,RegionBetweenCurves,SlopeField,VectorField,RegionHalfPlane,CodeEditor,HasSameFactoring,DataFrame,SummaryStatistics,Legend,Label,MatchesPattern,Matrix,EigenDecomposition,Latex,BlockQuote,Description,StickyGroup,Pretzel,PretzelArranger,Cascade,DynamicChildren,ShortDescription,BaseComponent,InlineComponent,BlockComponent,BlockScoredComponent,GraphicalComponent,ConstraintComponent,SegmentConstraintComponent,Input,CompositeComponent,PointList,IntervalList,LineListComponent,VectorListComponent,AngleListComponent,BooleanOperator,BooleanBaseOperatorOfMath,MathOperator,MathOperatorOneInput,FunctionOperator,...Object.values(ComponentSize$1),...Object.values(SectioningComponent$1),InlineRenderInlineChildren,TextOrInline,SingleCharacter,VariableNameList,Variable,ListOfNumberLists,DirectionComponent,ErrorComponent,Comment];function allComponentClasses(){const Br={},ae=new Set;for(let Me of componentTypeArray){let Or=Me.componentType;if(Or===void 0)throw Error("Cannot create component as componentType is undefined for class "+Me);let Hr=Or.toLowerCase();if(ae.has(Hr))throw Error("component type "+Or+" defined in two classes");Br[Or]=Me,ae.add(Hr)}return Br}function componentTypesCreatingVariants(){const Br={},ae=new Set;for(let Me of componentTypeArray)if(Me.createsVariants){let Or=Me.componentType;if(Or===void 0)throw Error("Cannot create component as componentType is undefined for class "+Me);let Hr=Or.toLowerCase();if(ae.has(Hr))throw Error("component type "+Or+" defined in two classes");Br[Or]=Me,ae.add(Hr)}return Br}function createComponentInfoObjects(){const Br=allComponentClasses(),ae=componentTypesCreatingVariants(),Me={};for(const is in Br)Me[is.toLowerCase()]=is;const Or={};for(const is in Br)Object.defineProperty(Or,is,{get:(function(){const as=Br[is].returnStateVariableInfo();return delete Or[is],Or[is]=as}).bind(this),configurable:!0});const Hr={};for(const is in Br)Object.defineProperty(Hr,is,{get:(function(){const as=Br[is].returnStateVariableInfo({onlyPublic:!0});return delete Hr[is],Hr[is]=as}).bind(this),configurable:!0});function Li({inheritedComponentType:is,baseComponentType:as}){if(is===as)return!0;if(is==="string")return as==="_base"||as==="_inline";if(as==="string")return!1;let os=Br[as];return os?os.isPrototypeOf(Br[is]):!1}function ts({componentType:is,includeNonStandard:as=!0}){const os=Br[is];return os?Li({inheritedComponentType:is,baseComponentType:"_composite"})&&(as||!os.treatAsComponentForRecursiveReplacements):!1}const rs=(is,as)=>Li({inheritedComponentType:is,baseComponentType:as});return{allComponentClasses:Br,componentTypesCreatingVariants:ae,componentTypeLowerCaseMapping:Me,isInheritedComponentType:Li,isCompositeComponent:ts,stateVariableInfo:Or,publicStateVariableInfo:Hr,componentIsSpecifiedType:(is,as)=>rs(is.componentType,as)||is.attributes?.createComponentOfType?.primitive!==void 0&&rs(is.attributes?.createComponentOfType?.primitive.value,as)}}async function returnAllPossibleVariants(Br,ae,Me){let Hr=getNumVariants({serializedComponent:Br,componentInfoObjects:ae,infoDiagnostics:Me}).numVariants,Li;return Br.variants?.allPossibleVariants?Li=Br.variants.allPossibleVariants:Li=[...Array(Hr).keys()].map(ts=>indexToLowercaseLetters(ts+1)),Li}function indexToLowercaseLetters(Br){return numberToLetters(Br,!0)}class PublicDoenetMLCore{constructor(){this.core=null,this.initialized=!1,this.doenetML="",this.flags={},this.localeData=DEFAULT_LOCALE_DATA}setSource(ae){this.doenetML=ae}setFlags(ae){this.flags=ae}setLocaleData(ae){this.localeData=ae}async initializeWorker({activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr,normalizedRoot:Li,addNodesToResolver:ts,replaceIndexResolutionsInResolver:rs,deleteNodesFromResolver:ns,resolvePath:is,calculateRootNames:as}){this.addNodesToResolver=ts,this.replaceIndexResolutionsInResolver=rs,this.deleteNodesFromResolver=ns,this.resolvePath=is,this.calculateRootNames=as;let os=createComponentInfoObjects();const{document:ss,nComponents:ls,diagnostics:us,sources:cs}=await normalizedDastToSerializedComponents(Li,os,ts);this.coreBaseArgs={doenetML:this.doenetML,flags:this.flags,localeData:this.localeData,activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr,serializedDocument:ss,nComponentsInit:ls,allDoenetMLs:cs,preliminaryDiagnostics:us,componentInfoObjects:os},this.initialized=!0;let ds=await returnAllPossibleVariants(this.coreBaseArgs.serializedDocument,this.coreBaseArgs.componentInfoObjects,us);const ps=this.coreBaseArgs.serializedDocument.children.reduce((ms,fs)=>(typeof fs=="object"&&(ms[fs.componentType]=(ms[fs.componentType]??0)+1),ms),{});return{allPossibleVariants:ds,baseComponentCounts:ps}}async createCoreGenerateDast(ae,Me,Or,Hr,Li,ts,rs,ns){if(this.initialized&&!this.coreBaseArgs?.serializedDocument)return{success:!1,errMsg:"Cannot create the core a second time from the same worker; the serialized document was released after the first core was created."};let is={...this.coreBaseArgs,...ae,addNodesToResolver:this.addNodesToResolver,replaceIndexResolutionsInResolver:this.replaceIndexResolutionsInResolver,deleteNodesFromResolver:this.deleteNodesFromResolver,resolvePath:this.resolvePath,calculateRootNames:this.calculateRootNames,updateRenderersCallback:Me,reportScoreAndStateCallback:Or,requestAnimationFrame:Hr,cancelAnimationFrame:Li,copyToClipboard:ts,sendEvent:rs,requestSolutionView:ns};if(this.initialized){this.core=new Core(is),this.coreBaseArgs.serializedDocument=void 0;try{return{success:!0,...await this.core.generateDast()}}catch(as){return console.error(as),{success:!1,errMsg:typeof as=="object"&&as&&"message"in as&&typeof as.message=="string"?as.message:""}}}else return{success:!1,coreId:is.coreId,errMsg:"Internal error. Cannot create document. Core not initialized."}}async requestAction(ae){if(!this.core)return{success:!1,errMsg:"Cannot request action before core is created"};try{return await this.core.requestAction(ae)}catch(Me){return console.error(Me),{success:!1,errMsg:typeof Me=="object"&&Me&&"message"in Me&&typeof Me.message=="string"?Me.message:"",actionId:ae.args?.actionId}}}async returnAllStateVariables(ae=!1,Me=!1){if(!this.core?.components)return{};const Or={},Hr=this.core.components;ae&&console.log(Hr);for(let Li in Hr){const ts=Number(Li);let rs=Hr[ts];if(!rs)continue;Or[ts]={componentIdx:ts,componentType:rs.componentType,stateValues:{},activeChildren:[],sharedParameters:null};let ns=Or[ts];for(let is in rs.state){if(["replacements","recursiveReplacements","fullRecursiveReplacements"].includes(is)&&this.core.componentInfoObjects.isCompositeComponent({componentType:rs.componentType})&&!rs.isExpanded)continue;const as=await rs.state[is].value;ns.stateValues[is]=Me?as:removeFunctionsMathExpressionClass(as)}ns.activeChildren=rs.activeChildren.map(is=>is.componentIdx?{componentIdx:is.componentIdx,componentType:is.componentType}:is),rs.replacements&&(ns.replacements=rs.replacements.map(is=>is.componentIdx?{componentIdx:is.componentIdx,componentType:is.componentType}:is),rs.replacementsToWithhold!==void 0&&(ns.replacementsToWithhold=rs.replacementsToWithhold)),rs.replacementOf&&(ns.replacementOf=rs.replacementOf.componentIdx),ns.sharedParameters=Me?rs.sharedParameters:removeFunctionsMathExpressionClass(rs.sharedParameters)}return Or}async terminate(){this.core&&(await this.core.terminate(),this.core=null)}handleVisibilityChange(ae){this.core?.handleVisibilityChange(ae)}navigatingToComponent(ae,Me){this.core&&handleNavigatingToComponent({core:this.core,componentIdx:ae,hash:Me}).catch(reportTimerError(TimerLabels.navigateToComponent))}async submitAllAnswers(){await this.core?.requestAction({componentIdx:this.core.documentIdx,actionName:"submitAllAnswers",args:{}}),await this.core?.saveImmediately()}async saveImmediately(){await this.core?.saveImmediately()}async flushState(){return await this.core?.flushState()??!1}}function processCompositeRanges(Br,ae,Me,Or,Hr){const Li=[],ts=[];let rs=Me-1,ns=rs;for(let is=0;is<ae.length;is++){const as=ae[is],os=as.firstInd,ss=as.lastInd;if(os>rs&&ss<=Or){if(rs+1<os){for(let gs=rs+1;gs<os;gs++)Li.push({kind:"content",value:Br[gs]});if(Hr)for(let gs=rs+1;gs<os;gs++)ts.push(Hr[gs-Me])}const ls=ae.slice(is+1),{items:us,eligible:cs}=processCompositeRanges(Br,ls,os,ss,as.potentialListComponents??null),ds=us.filter(gs=>!isNullContent(gs)),ps=cs.filter((gs,xs)=>!isNullContent(us[xs])),ms=ds.filter(gs=>!isBlankStringContent(gs)),hs=ps.filter((gs,xs)=>!isBlankStringContent(ds[xs])).every(gs=>gs),ys=!!as.asList&&hs&&ms.length>1;ds.length>0&&(Li.push({kind:"group",isAsList:ys,compositeIdx:as.compositeIdx,items:ds}),Hr&&ts.push(hs)),rs=ss,ns=Math.max(os,ss)}}if(rs<Or){for(let is=rs+1;is<=Or;is++)Li.push({kind:"content",value:Br[is]});if(Hr)for(let is=ns+1;is<=Or;is++)ts.push(Hr[is-Me])}return{items:Li,eligible:ts}}function isNullContent(Br){return Br?.kind==="content"&&Br.value===null}function isBlankStringContent(Br){return Br?.kind==="content"&&typeof Br.value=="string"&&Br.value.trim()===""}function isBlankStringChild(Br){return typeof Br=="string"&&Br.trim()===""}function trimAsListBlankChildren(Br){const ae=Br.findIndex(Or=>!isBlankStringChild(Or));if(ae===-1)return{leadingBlankChildren:Br,listChildren:[],trailingBlankChildren:[]};let Me=Br.length-1;for(;Me>ae&&isBlankStringChild(Br[Me]);)Me--;return{leadingBlankChildren:Br.slice(0,ae),listChildren:Br.slice(ae,Me+1).filter(Or=>!isBlankStringChild(Or)),trailingBlankChildren:Br.slice(Me+1)}}function makeWrapperElement(Br,ae,Me){return{type:"element",name:ae,attributes:{},children:Me,data:{id:Br}}}function materializeItems(Br,ae,Me){const Or=[];for(const Hr of Br){if(Hr.kind==="content"){Hr.value!==null&&Or.push(Hr.value);continue}if(Hr.isAsList){const ts=materializeItems(Hr.items,!0,Me),{leadingBlankChildren:rs,listChildren:ns,trailingBlankChildren:is}=trimAsListBlankChildren(ts);ae||Or.push(...rs),Me.push(makeWrapperElement(Hr.compositeIdx,"asList",ns)),Or.push({id:Hr.compositeIdx,annotation:"original"}),ae||Or.push(...is);continue}const Li=materializeItems(Hr.items,!1,Me);Li.length!==0&&(Li.length===1?Or.push(Li[0]):ae?(Me.push(makeWrapperElement(Hr.compositeIdx,"_fragment",Li)),Or.push({id:Hr.compositeIdx,annotation:"original"})):Or.push(...Li))}return Or}function applyCompositeListWrapping(Br,ae){if(!ae||ae.length===0)return{children:Br.filter(Li=>Li!==null),wrapperElements:[]};const{items:Me}=processCompositeRanges(Br,ae,0,Br.length-1,null),Or=[];return{children:materializeItems(Me,!1,Or),wrapperElements:Or}}function propRename(Br,ae){for(const[Me,Or]of Object.entries(ae))Br.hasOwnProperty(Me)&&(Br[Or]=Br[Me],delete Br[Me])}function elementRename(Br,ae){Br.name=ae}function booleanInputJsToRust(Br){Br.immediateValue=Br.value}function pointJsToRust(Br){const ae=Br.numericalXs;Br.x={math_object:ae[0].toString()},ae.length>=2&&(Br.y={math_object:ae[1].toString()}),ae.length>=3&&(Br.z={math_object:ae[2].toString()}),Br.coordsLatex=Br.latex}function refJsToRust(Br,ae){Br.referent=ae[Br.targetRendererId]}function sectionJsToRust(Br,ae){Br.divisionType=ae.name,Br.divisionDepth=Br.level;const Me=Br.titleChildName!=null?Number(Br.titleChildName):void 0,Or=Me!==void 0&&Number.isInteger(Me);if(Br.xrefLabel={label:(Or?Br.titlePrefix:Br.title)??"",global_ident:Br.sectionNumber??"",local_ident:Br.sectionNumber??"",preferred_form:"Global"},Br.codeNumber="",Or){Br.title=Me;const Hr=ae.children.findIndex(Li=>typeof Li!="string"&&Li.id===Me);Hr!==-1&&ae.children.splice(Hr,1)}else Br.title=null}function tableJsToRust(Br,ae){Br.xrefLabel={label:Br.tableName??"",global_ident:Br.tableEnumeration??"",local_ident:Br.tableEnumeration??"",preferred_form:"Global"},Br.codeNumber=Br.tableEnumeration??"",Br.titlePrefix=Br.suppressTableNameInTitle?"":Br.tableNamePrefix??"",Br.divisionType="table",Br.divisionDepth=3;const Me=Br.titleChildName!=null?Number(Br.titleChildName):void 0;if(Me!==void 0&&Number.isInteger(Me)){Br.title=Me;const Hr=ae.children.findIndex(Li=>typeof Li!="string"&&Li.id===Me);Hr!==-1&&ae.children.splice(Hr,1)}else Br.title=null;delete Br.tableEnumeration,delete Br.titleChildName,delete Br.tableName,delete Br.tableNamePrefix}function textJsToRust(Br){Br.value=Br.text}function childInstructionToContent(Br,ae){return typeof Br=="string"?Br:(ae[Br.id]=Br.componentIdx,{id:Br.componentIdx,annotation:"original"})}function applyElementJsToRustFixups(Br,ae){if(!(Br?.type!=="element"||!Br.data.props))switch(Br.name){case"angle":propRename(Br.data.props,{latexForRenderer:"latex"});break;case"cell":propRename(Br.data.props,{inHeader:"header"});break;case"booleanInput":booleanInputJsToRust(Br.data.props);break;case"text":textJsToRust(Br.data.props);break;case"aside":case"article":case"section":sectionJsToRust(Br.data.props,Br),Br.name==="section"&&elementRename(Br,"division");break;case"table":tableJsToRust(Br.data.props,Br);break;case"point":pointJsToRust(Br.data.props);break;case"ref":refJsToRust(Br.data.props,ae);break;case"coords":elementRename(Br,"math");break}}function flatDastFromJS(Br,ae){const Me=ae[0].rendererStatesToUpdate,Or=[],Hr={[Br.id]:Br.componentIdx};Or[Br.componentIdx]={type:"element",name:Br.componentType,attributes:{},children:[],data:{id:Br.componentIdx,action_names:Object.keys(Br.actions)}};for(const ts of Me){let rs=Or[ts.componentIdx];if(rs||(rs=Or[ts.componentIdx]={type:"element",name:"",attributes:{},children:[],data:{id:ts.componentIdx}}),rs.type==="element"&&(rs.data.props=ts.stateValues,ts.childrenInstructions)){const ns=[];for(const os of ts.childrenInstructions){if(os==null){ns.push(null);continue}if(ns.push(childInstructionToContent(os,Hr)),typeof os=="string")continue;const ss=Or[os.componentIdx];ss?ss.type==="element"&&(ss.name=os.componentType,ss.data.id=os.componentIdx,ss.data.action_names=Object.keys(os.actions)):Or[os.componentIdx]={type:"element",name:os.componentType,attributes:{},children:[],data:{id:os.componentIdx,action_names:Object.keys(os.actions)}}}const{children:is,wrapperElements:as}=applyCompositeListWrapping(ns,ts.stateValues?._compositeReplacementActiveRange);rs.children=is;for(const os of as)Or[os.data.id]=os}}for(const ts of Or)applyElementJsToRustFixups(ts,Hr);return{type:"root",children:[{id:Br.componentIdx,annotation:"original"}],elements:Or,warnings:[]}}function collectInstructionMaps(Br,ae={},Me={}){for(const Or of Br)for(const Hr of Or.rendererStatesToUpdate)for(const Li of Hr.childrenInstructions??[])Li!=null&&typeof Li!="string"&&(ae[Li.componentIdx]=Li.componentType,Me[Li.id]=Li.componentIdx);return{componentIdxToName:ae,doenetIdToComponentIdx:Me}}function seedInstructionMaps(Br,ae){const Me={[Br.componentIdx]:Br.componentType},Or={[Br.id]:Br.componentIdx};return collectInstructionMaps(ae,Me,Or),{componentIdxToName:Me,doenetIdToComponentIdx:Or}}function flatDastUpdateFromJS(Br,ae,Me={}){const Or={};function Hr(Li,ts){const rs=Or[Li];rs?(rs.changedState={...rs.changedState,...ts.changedState},ts.newChildren&&(rs.newChildren=ts.newChildren),ts.newFlatDastElement&&(rs.newFlatDastElement=ts.newFlatDastElement)):Or[Li]=ts}for(const Li of Br)for(const ts of Li.rendererStatesToUpdate){const{componentIdx:rs,stateValues:ns,childrenInstructions:is}=ts,as=[];if(is)for(const cs of is){if(cs==null){as.push(null);continue}as.push(childInstructionToContent(cs,Me))}const{children:os,wrapperElements:ss}=applyCompositeListWrapping(as,ns?._compositeReplacementActiveRange),ls={type:"element",name:ae[rs]??"",children:os,data:{id:rs,props:{...ns}}};applyElementJsToRustFixups(ls,Me);const us={changedState:ls.data.props};is&&(us.newChildren=ls.children),Hr(rs,us);for(const cs of ss)Hr(cs.data.id,{newFlatDastElement:cs})}return Or}async function resolvePathImmediatelyToNodeIdx(Br,ae,Me,Or=0){if(!Me.core)return-1;const Hr=Br.match(/^([\w-]+)((\[\d+\])*)/);if(!Hr)throw Error(`Invalid name to resolve: ${Br}`);const Li=[{type:"flatPathPart",name:Hr[1],index:extractIndex(Hr[2])}];let ts=Br.slice(Hr[0].length);for(;ts.length>0;){const rs=ts.match(/^\.([\w-]+)((\[\d+\])*)/);if(!rs)throw Error(`Invalid name to resolve: ${Br}`);Li.push({type:"flatPathPart",name:rs[1],index:extractIndex(rs[2])}),ts=ts.slice(rs[0].length)}try{let rs=ae.resolve_path({path:Li},Or,!1);for(;rs.unresolvedPath!==null;){if(rs.unresolvedPath[0].name!=="")return-1;const ns=Me.core._components[rs.nodeIdx];if(!Me.core.componentInfoObjects.isCompositeComponent({componentType:ns.componentType,includeNonStandard:!0})||ns.isExpanded)return-1;const as=rs.unresolvedPath[0].index;if(as.length===0)throw Error("Something went wrong as we have a ref resolution without a name or an index");if(typeof as[0].value[0]!="string")throw Error("Not implemented: we have not implemented `resolvePathImmediatelyToNodeIdx` for paths that contain references to nodes.");await ns.stateValues.readyToExpandWhenResolved,await expandCompositeComponent({core:Me.core,component:ns}),rs=ae.resolve_path({path:Li},Or,!1)}return rs.nodeIdx}catch(rs){return console.error(rs),-1}}function extractIndex(Br){const ae=[];for(const Me of Br.matchAll(/\[(\d+)\]/g))ae.push({value:[Me[1]]});return ae}const JS_CORE_ACTION_NAME_OVERRIDES={point:{move:"movePoint"},graph:{changeBoundingBox:"changeAxisLimits"}};function translateJsCoreActionName(Br,ae){return Br==null?ae:JS_CORE_ACTION_NAME_OVERRIDES[Br]?.[ae]??ae}const WASM_FILE_NAME="lib_doenetml_worker_bg.wasm";function injectedGlobal(Br){const ae=globalThis[Br];return typeof ae=="string"?ae:void 0}function decodeWasmDataUrl(Br){try{const ae=Br.split(",")[1],Me=atob(ae),Or=new Uint8Array(Me.length);for(let Hr=0;Hr<Me.length;Hr++)Or[Hr]=Me.charCodeAt(Hr);return Or.buffer}catch(ae){return console.warn("Error while decoding the WASM data URL:",ae),null}}function wasmUrlCandidates(){const Br=[];function ae(Hr){Br.includes(Hr)||Br.push(Hr)}const Me=injectedGlobal("__doenetWorkerWasmUrl");Me!==void 0&&ae(Me);const Or=[injectedGlobal("__doenetWorkerScriptUrl"),typeof location<"u"?location.href:void 0];for(const Hr of Or)if(Hr!==void 0)try{ae(new URL(WASM_FILE_NAME,Hr).href)}catch{}return ae(`https://cdn.jsdelivr.net/npm/@doenet/standalone@0.7.25-dev.502/doenetml-worker/${WASM_FILE_NAME}`),Br}async function resolveWasmInput(){const Br=injectedGlobal("__doenetWorkerWasmUrl");if(Br!==void 0&&/^data:.*;base64,/.test(Br)){const Me=decodeWasmDataUrl(Br);if(Me)return Me}let ae;for(const Me of wasmUrlCandidates())if(!Me.startsWith("data:"))try{const Or=await fetch(Me);if(!Or.ok)throw Error(`HTTP ${Or.status} fetching ${Me}`);const Hr=Or.headers.get("Content-Type")??"";if(/^text\/html\b/i.test(Hr))throw Error(`Fetching ${Me} returned ${Hr}, an HTML page rather than WebAssembly`);return Or}catch(Or){ae=Or}throw ae??Error("No URL to load the core WASM from")}if(typeof globalThis<"u"&&!globalThis.document){const Br=new URL(typeof location<"u"?location.href:"http://localhost"),ae=Br.protocol+"//"+Br.host+Br.pathname;globalThis.document={URL:ae,baseURI:ae}}let wasmInitPromise=null;function ensureWasmInitialized(){return wasmInitPromise||(wasmInitPromise=(async()=>{const Br=await resolveWasmInput();return await __wbg_init({module_or_path:Br})})().catch(Br=>{throw wasmInitPromise=null,Br})),wasmInitPromise}class CoreWorker{constructor(){this.wasm_initialized=!1,this.javascript_initialized=!1,this.source_set=!1,this.flags_set=!1,this.core_type="rust",this._javascriptUpdateBuffer=[],this._capturingJavascriptUpdates=!1,this._componentIdxToName={},this._doenetIdToComponentIdx={},this._javascriptInitialRenderDone=!1,this.isProcessingPromise=Promise.resolve(),this._hostedCores=new Map,this._nextHostedCoreId=1,this._isHostedCore=!1}async createCore(ae){const Me=new CoreWorker;Me._isHostedCore=!0,expose(Me,ae);const Or=this._nextHostedCoreId++;return this._hostedCores.set(Or,{core:Me,port:ae}),Or}async destroyCore(ae){const Me=this._hostedCores.get(ae);if(Me){this._hostedCores.delete(ae);try{await Me.core.terminate()}catch(Or){console.error("Error terminating hosted core",Or)}finally{Me.port.close()}}}setCoreType(ae){this.core_type=ae}async setSource(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{this.wasm_initialized||(await ensureWasmInitialized(),this.wasm_initialized=!0),this.doenetCore||(this.doenetCore=PublicDoenetMLCore$1.new()),this.core_type==="javascript"&&(this.javascriptCore||(this.javascriptCore=new PublicDoenetMLCore),this.javascriptCore.setSource(ae.source)),this.doenetCore.set_source(ae.dast,ae.source),this.source_set=!0}catch(Li){throw console.error("Error when setting source",Li),Li}finally{Hr()}}async setFlags(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{this.wasm_initialized||(await ensureWasmInitialized(),this.wasm_initialized=!0),this.doenetCore||(this.doenetCore=PublicDoenetMLCore$1.new()),this.core_type==="javascript"&&(this.javascriptCore||(this.javascriptCore=new PublicDoenetMLCore),this.javascriptCore.setFlags(ae.flags)),this.doenetCore.set_flags(JSON.stringify(ae.flags)),this.flags_set=!0}finally{Hr()}}async setLocaleData(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{this.core_type==="javascript"&&(this.javascriptCore||(this.javascriptCore=new PublicDoenetMLCore),this.javascriptCore.setLocaleData(ae.localeData))}finally{Hr()}}async initializeJavascriptCore({activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr}){const Li=this.isProcessingPromise;let{promise:ts,resolve:rs}=promiseWithResolver();if(this.isProcessingPromise=ts,await Li,!this.source_set||!this.flags_set||!this.javascriptCore||!this.doenetCore)throw Error("Cannot initialize javascript core before setting source and flags");try{let ns=function(){return us.calculate_root_names()},is=function(ds,ps,ms){return us.resolve_path(ds,ps,ms)},as=function(ds,ps){us.add_nodes_to_resolver(ds,ps)},os=function(ds,ps){us.replace_index_resolutions_in_resolver(ds,ps)},ss=function(ds){us.delete_nodes_from_resolver(ds)},ls=this.doenetCore.return_normalized_dast_root();const us=this.doenetCore,cs=await this.javascriptCore.initializeWorker({activityId:ae,docId:Me,requestedVariantIndex:Or,attemptNumber:Hr,normalizedRoot:ls,addNodesToResolver:as,replaceIndexResolutionsInResolver:os,deleteNodesFromResolver:ss,resolvePath:is,calculateRootNames:ns});return this.javascript_initialized=!0,this.doenetCore.release_initialization_data(),cs}catch(ns){throw console.error(ns),ns}finally{rs()}}async generateJavascriptDast(ae,Me,Or,Hr,Li,ts,rs,ns){const is=this.isProcessingPromise;let{promise:as,resolve:os}=promiseWithResolver();if(this.isProcessingPromise=as,await is,!this.javascript_initialized||!this.javascriptCore)throw Error("Cannot return javascript dast before initializing javascript core");try{return await this.javascriptCore?.createCoreGenerateDast(ae,Me,Or,Hr,Li,ts,rs,ns)}catch(ss){throw console.error(ss),ss}finally{os()}}async returnDast(){const ae=this.isProcessingPromise;let{promise:Me,resolve:Or}=promiseWithResolver();if(this.isProcessingPromise=Me,await ae,!this.source_set||!this.flags_set||!this.doenetCore)throw Error("Cannot return dast before setting source and flags");try{return this.core_type==="javascript"?await this.returnFlatDastFromJS():this.doenetCore.return_dast()}catch(Hr){throw console.error(Hr),Hr}finally{Or()}}async returnNormalizedDastRoot(){if(!this.source_set||!this.doenetCore)throw Error("Cannot return normalized dast root before setting source");return this.core_type==="javascript"?{nodes:[]}:this.doenetCore.return_normalized_dast_root()}async returnFlatDastFromJS(){if(!this.javascriptCore||!this.doenetCore)throw Error("Cannot return dast before setting source and flags");let ae=this.doenetCore.return_normalized_dast_root();const Me=this.doenetCore;function Or(){return Me.calculate_root_names()}function Hr(gs,xs,bs){return Me.resolve_path(gs,xs,bs)}function Li(gs,xs){Me.add_nodes_to_resolver(gs,xs)}function ts(gs,xs){Me.replace_index_resolutions_in_resolver(gs,xs)}function rs(gs){Me.delete_nodes_from_resolver(gs)}await this.javascriptCore.initializeWorker({activityId:"a",docId:"a",requestedVariantIndex:1,attemptNumber:1,normalizedRoot:ae,addNodesToResolver:Li,replaceIndexResolutionsInResolver:ts,deleteNodesFromResolver:rs,resolvePath:Hr,calculateRootNames:Or}),this.javascript_initialized=!0,this.doenetCore.release_initialization_data();const ns={coreId:"a",cid:null,initializeCounters:{}};let is=null;this._javascriptUpdateBuffer=[];const as=gs=>{gs.init?is=gs.updateInstructions:this._capturingJavascriptUpdates&&gs.updateInstructions&&this._javascriptUpdateBuffer.push(...gs.updateInstructions)},os=gs=>{},ss=gs=>{},ls=gs=>{},us=gs=>{},cs=gs=>{},ds=gs=>Promise.resolve({allowView:!0}),ps=await this.javascriptCore.createCoreGenerateDast(ns,as,os,ss,ls,us,cs,ds);if(!ps.success)throw console.error(ps.errMsg),Error(ps.errMsg);if(is===null)throw Error("Need to address case where do not get updateRenderersCallback before dast");const ms=ps.coreInfo.documentToRender,{componentIdxToName:fs,doenetIdToComponentIdx:hs}=seedInstructionMaps(ms,is);return this._componentIdxToName=fs,this._doenetIdToComponentIdx=hs,this._javascriptInitialRenderDone=!0,flatDastFromJS(ms,is)}async dispatchActionJavascript(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();if(this.isProcessingPromise=Or,await Me,!this.source_set||!this.flags_set||!this.javascriptCore)throw Error("Cannot handle action before setting source and flags");try{return await this.javascriptCore.requestAction(ae)}catch(Li){throw console.error(Li),Li}finally{Hr()}}async dispatchActionJavascriptFlat(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();this.isProcessingPromise=Or,await Me;try{if(!this.source_set||!this.flags_set||!this.javascriptCore)throw Error("Cannot handle action before setting source and flags");if(!this._javascriptInitialRenderDone)throw Error("Cannot dispatch a flat action before the initial render (returnDast) has run");this._javascriptUpdateBuffer=[],this._capturingJavascriptUpdates=!0;const Li=ae.componentIdx!=null?this._componentIdxToName[ae.componentIdx]:void 0,ts=translateJsCoreActionName(Li,ae.actionName),rs=await this.javascriptCore.requestAction({...ae,actionName:ts});if(rs&&typeof rs=="object"&&"success"in rs&&rs.success===!1){const is=ts===ae.actionName?`"${ae.actionName}"`:`"${ae.actionName}" (translated to "${ts}")`;throw Error(`Action ${is} failed: ${rs.errMsg??"unknown error"}`)}this._capturingJavascriptUpdates=!1;const ns=this._javascriptUpdateBuffer;return this._javascriptUpdateBuffer=[],collectInstructionMaps(ns,this._componentIdxToName,this._doenetIdToComponentIdx),flatDastUpdateFromJS(ns,this._componentIdxToName,this._doenetIdToComponentIdx)}catch(Li){throw console.error(Li),Li}finally{this._capturingJavascriptUpdates=!1,Hr()}}async resolvePath(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();if(this.isProcessingPromise=Or,await Me,!this.source_set||!this.flags_set||!this.doenetCore)throw Error("Cannot resolve a path before setting source and flags");try{return this.doenetCore.resolve_path(ae.path,ae.origin,ae.skipParentSearch)}finally{Hr()}}async dispatchAction(ae){const Me=this.isProcessingPromise;let{promise:Or,resolve:Hr}=promiseWithResolver();if(this.isProcessingPromise=Or,await Me,!this.source_set||!this.flags_set||!this.doenetCore)throw Error("Cannot handle action before setting source and flags");try{return this.doenetCore.dispatch_action(ae)}catch(Li){throw console.error(Li),Li}finally{Hr()}}async resolvePathJavascript(ae,Me=0){const Or=this.isProcessingPromise;let{promise:Hr,resolve:Li}=promiseWithResolver();if(this.isProcessingPromise=Hr,await Or,!this.source_set||!this.flags_set||!this.doenetCore||!this.javascriptCore)throw Error("Cannot resolve path before setting source and flags");try{return await resolvePathImmediatelyToNodeIdx(ae,this.doenetCore,this.javascriptCore,Me)}catch(ts){throw console.error(ts),ts}finally{Li()}}async terminate(){const ae=this.isProcessingPromise;let{promise:Me,resolve:Or}=promiseWithResolver();if(this.isProcessingPromise=Me,await ae,this.doenetCore?.free(),this.doenetCore=void 0,this.source_set=!1,this.flags_set=!1,this.javascriptCore)try{await this.javascriptCore.terminate()}catch(Hr){throw console.error(Hr),Hr}finally{Or()}else Or();this._isHostedCore||close()}async returnAllStateVariables(ae=!1){return this.javascriptCore?this.javascriptCore.returnAllStateVariables(ae):{}}handleVisibilityChange(ae){this.javascriptCore&&this.javascriptCore.handleVisibilityChange(ae)}async submitAllAnswers(){this.javascriptCore&&this.javascriptCore.submitAllAnswers()}async saveImmediately(){this.javascriptCore&&this.javascriptCore.saveImmediately()}async flushState(){return this.javascriptCore?await this.javascriptCore.flushState():!1}async _getTests(){return this.doenetCore?._get_tests()}async _runTest(ae){return this.doenetCore?._run_test(ae)}}function promiseWithResolver(){let Br,ae;return{promise:new Promise((Or,Hr)=>{Br=Or,ae=Hr}),resolve:Br,reject:ae}}expose(new CoreWorker);function _mergeNamespaces$1(Br,ae){for(var Me=0;Me<ae.length;Me++){const Or=ae[Me];if(typeof Or!="string"&&!Array.isArray(Or)){for(const Hr in Or)if(Hr!=="default"&&!(Hr in Br)){const Li=Object.getOwnPropertyDescriptor(Or,Hr);Li&&Object.defineProperty(Br,Hr,Li.get?Li:{enumerable:!0,get:()=>Or[Hr]})}}}return Object.freeze(Object.defineProperty(Br,Symbol.toStringTag,{value:"Module"}))}var sha256$3={exports:{}},convertHex$1={exports:{}},convertHex=convertHex$1.exports,hasRequiredConvertHex;function requireConvertHex(){return hasRequiredConvertHex||(hasRequiredConvertHex=1,(function(Br){(function(ae){var Me={bytesToHex:function(Li){return Or(Li)},hexToBytes:function(Li){if(Li.length%2===1)throw new Error("hexToBytes can't have a string with an odd number of characters.");return Li.indexOf("0x")===0&&(Li=Li.slice(2)),Li.match(/../g).map(function(ts){return parseInt(ts,16)})}};function Or(Li){return Li.map(function(ts){return Hr(ts.toString(16),2)}).join("")}function Hr(Li,ts){return Li.length>ts?Li:Array(ts-Li.length+1).join("0")+Li}Br.exports?Br.exports=Me:ae.convertHex=Me})(convertHex)})(convertHex$1)),convertHex$1.exports}var convertString$1={exports:{}},convertString=convertString$1.exports,hasRequiredConvertString;function requireConvertString(){return hasRequiredConvertString||(hasRequiredConvertString=1,(function(Br){(function(ae){var Me={bytesToString:function(Or){return Or.map(function(Hr){return String.fromCharCode(Hr)}).join("")},stringToBytes:function(Or){return Or.split("").map(function(Hr){return Hr.charCodeAt(0)})}};Me.UTF8={bytesToString:function(Or){return decodeURIComponent(escape(Me.bytesToString(Or)))},stringToBytes:function(Or){return Me.stringToBytes(unescape(encodeURIComponent(Or)))}},Br.exports?Br.exports=Me:ae.convertString=Me})(convertString)})(convertString$1)),convertString$1.exports}var sha256$2=sha256$3.exports,hasRequiredSha256;function requireSha256(){return hasRequiredSha256||(hasRequiredSha256=1,(function(Br){(function(ae){var Me={};Br.exports?(Me.bytesToHex=requireConvertHex().bytesToHex,Me.convertString=requireConvertString(),Br.exports=ns):(Me.bytesToHex=ae.convertHex.bytesToHex,Me.convertString=ae.convertString,ae.sha256=ns);var Or=[];(function(){function is(ls){for(var us=Math.sqrt(ls),cs=2;cs<=us;cs++)if(!(ls%cs))return!1;return!0}function as(ls){return(ls-(ls|0))*4294967296|0}for(var os=2,ss=0;ss<64;)is(os)&&(Or[ss]=as(Math.pow(os,.3333333333333333)),ss++),os++})();var Hr=function(is){for(var as=[],os=0,ss=0;os<is.length;os++,ss+=8)as[ss>>>5]|=is[os]<<24-ss%32;return as},Li=function(is){for(var as=[],os=0;os<is.length*32;os+=8)as.push(is[os>>>5]>>>24-os%32&255);return as},ts=[],rs=function(is,as,os){for(var ss=is[0],ls=is[1],us=is[2],cs=is[3],ds=is[4],ps=is[5],ms=is[6],fs=is[7],hs=0;hs<64;hs++){if(hs<16)ts[hs]=as[os+hs]|0;else{var ys=ts[hs-15],gs=(ys<<25|ys>>>7)^(ys<<14|ys>>>18)^ys>>>3,xs=ts[hs-2],bs=(xs<<15|xs>>>17)^(xs<<13|xs>>>19)^xs>>>10;ts[hs]=gs+ts[hs-7]+bs+ts[hs-16]}var vs=ds&ps^~ds&ms,Cs=ss&ls^ss&us^ls&us,Ts=(ss<<30|ss>>>2)^(ss<<19|ss>>>13)^(ss<<10|ss>>>22),As=(ds<<26|ds>>>6)^(ds<<21|ds>>>11)^(ds<<7|ds>>>25),Ns=fs+As+vs+Or[hs]+ts[hs],ws=Ts+Cs;fs=ms,ms=ps,ps=ds,ds=cs+Ns|0,cs=us,us=ls,ls=ss,ss=Ns+ws|0}is[0]=is[0]+ss|0,is[1]=is[1]+ls|0,is[2]=is[2]+us|0,is[3]=is[3]+cs|0,is[4]=is[4]+ds|0,is[5]=is[5]+ps|0,is[6]=is[6]+ms|0,is[7]=is[7]+fs|0};function ns(is,as){is.constructor===String&&(is=Me.convertString.UTF8.stringToBytes(is));var os=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],ss=Hr(is),ls=is.length*8;ss[ls>>5]|=128<<24-ls%32,ss[(ls+64>>9<<4)+15]=ls;for(var us=0;us<ss.length;us+=16)rs(os,ss,us);var cs=Li(os);return as&&as.asBytes?cs:as&&as.asString?Me.convertString.bytesToString(cs):Me.bytesToHex(cs)}ns.x2=function(is,as){return ns(ns(is,{asBytes:!0}),as)}})(sha256$2)})(sha256$3)),sha256$3.exports}var sha256Exports=requireSha256();const sha256=getDefaultExportFromCjs$1(sha256Exports),sha256$1=_mergeNamespaces$1({__proto__:null,default:sha256},[sha256Exports]),sha256DT5xJ2HvDQlQsFFB=Object.freeze(Object.defineProperty({__proto__:null,s:sha256$1},Symbol.toStringTag,{value:"Module"}));return exports.CoreWorker=CoreWorker,Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),exports})({});
2609
2609
  //# sourceMappingURL=index.js.map