@mathwiz/ui-components 0.1.25 → 0.1.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{index.cjs.js → index.cjs} +1 -1
- package/dist/index.cjs.map +1 -0
- package/dist/{index.es.js → index.mjs} +1 -1
- package/dist/index.mjs.map +1 -0
- package/dist/style.css +1 -0
- package/package.json +7 -3
- package/dist/index.cjs.js.map +0 -1
- package/dist/index.es.js.map +0 -1
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
## 📦 组件库信息
|
|
6
6
|
|
|
7
7
|
- **包名**: `@mathwiz/ui-components`
|
|
8
|
-
- **版本**: 0.1.
|
|
8
|
+
- **版本**: 0.1.26
|
|
9
9
|
- **描述**: A collection of reusable UI components for React applications within the mathwiz ecosystem.
|
|
10
10
|
- **GitHub**: [https://github.com/moleusher/mathwiz-UI](https://github.com/moleusher/mathwiz-UI)
|
|
11
11
|
- **Storybook**: [本地开发地址](http://localhost:6006)
|
|
@@ -257,4 +257,4 @@ ${new Error().stack?.split(`
|
|
|
257
257
|
The large square represents 1 whole.`},{type:"hundredGrid",content:"",props:{value:.12,mode:"readonly",rows:10,cols:10,cellSize:12,fillColor:"#a5b4fc",baseColor:"#e2e8f0",strokeColor:"#d1d5db",shadingDirection:"ltr",hasShadow:!0}}],items:[{type:"text",content:"回顾问题:",style:{fontSize:"1.25rem",fontWeight:"bold",color:"#1e293b"}},{type:"text",content:`What decimal number does the model represent?
|
|
258
258
|
The large square represents 1 whole.`},{type:"hundredGrid",content:"",props:{value:.12,mode:"readonly",rows:10,cols:10,cellSize:12,fillColor:"#a5b4fc",baseColor:"#e2e8f0",strokeColor:"#d1d5db",shadingDirection:"ltr",hasShadow:!0}}]}},explanation:[],answer:{value:.12,unit:"",explanation:"模型中100个方格有12个被涂色,代表12/100,即0.12。"}},fm=({className:r="",problemData:e})=>{const t=mi(),n=hi(),o=gi(),s=cm(),{updateUserAnswer:i,submitAnswer:a,nextQuestion:d,setProblemData:l}=pi(),c=b.useMemo(()=>e||dm,[e]);return b.useEffect(()=>{l(c)},[c,l]),f.jsxs("div",{className:`max-w-4xl mx-auto p-4 md:p-8 bg-slate-50 min-h-screen ${r}`,children:[f.jsxs("header",{className:"mb-8",children:[f.jsx("h1",{className:"text-2xl font-bold text-slate-800",children:"小数认识练习"}),f.jsxs("p",{className:"text-slate-600 mt-2",children:[c.grade,"年级 - ",c.unit]}),f.jsx("p",{className:"text-slate-500 text-sm mt-1",children:"通过百格图模型理解百分位和小数的关系"})]}),f.jsxs("main",{className:"bg-white border border-slate-200 rounded-lg shadow-sm",children:[t==="question"&&f.jsx(St,{problemData:c,userAnswer:n,showAnswerForm:o,onAnswerSubmit:a,onAnswerChange:i,validationError:s}),t==="explanation"&&f.jsx(Ku,{problemData:c,userAnswer:n,onNextQuestion:d}),t==="success"&&f.jsx(Ct,{problemData:c,onNextQuestion:d})]}),f.jsxs("div",{className:"mt-4 text-center text-sm text-slate-500",children:[t==="question"&&"请识别百格图代表的小数",t==="explanation"&&"查看详细解释",t==="success"&&"恭喜!答案正确"]})]})},Ie=(r,e,t)=>({x:r.x+(e.x-r.x)*t,y:r.y+(e.y-r.y)*t}),um=()=>{const r={x:.5,y:.1,name:"A"},e={x:.1,y:.75,name:"B"},t={x:.9,y:.75,name:"C"},n={...Ie(r,e,1/3),name:"D"},o={...Ie(r,t,1/3),name:"E"},s={...Ie(r,e,2/3),name:"M"},i={...Ie(r,t,2/3),name:"N"},a={...Ie(e,t,1/3),name:"P"},d={...Ie(e,t,2/3),name:"Q"},l={...Ie(n,o,1/3),name:"U"},c={...Ie(n,o,2/3),name:"S"},u={...Ie(s,i,1/3),name:"K"},y={...Ie(s,i,2/3),name:"L"};return{A:r,B:e,C:t,D:n,E:o,M:s,N:i,P:a,Q:d,U:l,S:c,K:u,L:y}},mm=(r,e,t)=>{const n={};for(const[o,s]of Object.entries(r))n[o]={...s,x:s.x*e,y:s.y*t};return n},hm=(r,e)=>{const[t,n,o]=e,{x:s,y:i}=r,a=(n.y-o.y)*(t.x-o.x)+(o.x-n.x)*(t.y-o.y);if(Math.abs(a)<1e-4)return!1;const d=((n.y-o.y)*(s-o.x)+(o.x-n.x)*(i-o.y))/a,l=((o.y-t.y)*(s-o.x)+(t.x-o.x)*(i-o.y))/a,c=1-d-l;return d>=-.001&&l>=-.001&&c>=-.001},gm=(r,e)=>{if(!r||!e||r.length!==3||e.length!==3)return!1;const t=r.map(o=>o.name).sort(),n=e.map(o=>o.name).sort();return t.every((o,s)=>o===n[s])},pm=(r,e)=>{if(!r||!e||r.length!==e.length)return!1;const t=r.map(o=>o.name).sort(),n=e.map(o=>o.name).sort();return t.join("")===n.join("")},ym=()=>[{from:"A",to:"B"},{from:"A",to:"C"},{from:"B",to:"C"},{from:"D",to:"E"},{from:"M",to:"N"},{from:"P",to:"Q"},{from:"A",to:"D"},{from:"A",to:"E"},{from:"A",to:"M"},{from:"A",to:"N"},{from:"A",to:"P"},{from:"A",to:"Q"},{from:"D",to:"U"},{from:"U",to:"S"},{from:"S",to:"E"},{from:"M",to:"K"},{from:"K",to:"L"},{from:"L",to:"N"},{from:"B",to:"P"},{from:"P",to:"Q"},{from:"Q",to:"C"}],bm=()=>[{id:"gem_1",vertices:["A","B","P"],points:10,category:"basic"},{id:"gem_2",vertices:["A","P","Q"],points:10,category:"basic"},{id:"gem_3",vertices:["A","Q","C"],points:10,category:"basic"},{id:"gem_4",vertices:["A","B","Q"],points:15,category:"medium"},{id:"gem_5",vertices:["A","P","C"],points:15,category:"medium"},{id:"gem_6",vertices:["A","B","C"],points:20,category:"large"},{id:"gem_7",vertices:["A","D","U"],points:12,category:"ade_small"},{id:"gem_8",vertices:["A","U","S"],points:12,category:"ade_small"},{id:"gem_9",vertices:["A","S","E"],points:12,category:"ade_small"},{id:"gem_10",vertices:["A","D","S"],points:18,category:"ade_medium"},{id:"gem_11",vertices:["A","U","E"],points:18,category:"ade_medium"},{id:"gem_12",vertices:["A","D","E"],points:25,category:"ade_large"},{id:"gem_13",vertices:["A","M","K"],points:14,category:"amn_small"},{id:"gem_14",vertices:["A","K","L"],points:14,category:"amn_small"},{id:"gem_15",vertices:["A","L","N"],points:14,category:"amn_small"},{id:"gem_16",vertices:["A","M","L"],points:20,category:"amn_medium"},{id:"gem_17",vertices:["A","K","N"],points:20,category:"amn_medium"},{id:"gem_18",vertices:["A","M","N"],points:30,category:"amn_large"}],xm={TOTAL_GEMS:18,CANVAS_RATIO:4/3,DEFAULT_VIEWBOX:{width:700,height:600},POINT_RADIUS:{default:6,selected:9},TOLERANCE:.001,MIN_TRIANGLE_AREA:.001,COORDINATE_PRECISION:1e-4,BARYCENTRIC_TOLERANCE:-.001},yi=(r=Yt.id)=>{const e=de.units.map((o,s)=>{const i=Math.min(100,Math.max(0,s*15+Math.random()*20)),a=Math.floor(o.lessons.length*i/100),d=o.lessons.map((l,c)=>{const u=Math.min(100,Math.max(0,i-c*10+Math.random()*30));return{lessonId:l.id,status:u>=100?"completed":u>0?"in-progress":"not-started",progressPercentage:Math.round(u),lastAccessed:u>0?new Date(Date.now()-Math.random()*7*24*60*60*1e3).toISOString():void 0,timeSpent:u>0?Math.floor(Math.random()*120+10):void 0,score:u>=100?Math.floor(Math.random()*21+80):void 0,attempts:u>0?Math.floor(Math.random()*3+1):void 0}});return{unitId:o.id,userId:r,totalLessons:o.lessons.length,completedLessons:a,progressPercentage:Math.round(i),status:i>=100?"completed":i>0?"in-progress":"not-started",lastAccessed:i>0?new Date(Date.now()-Math.random()*14*24*60*60*1e3).toISOString():void 0,lessons:d}}),t=e.reduce((o,s)=>o+s.progressPercentage,0)/e.length,n=e.filter(o=>o.status==="completed").length;return{courseId:de.id,userId:r,totalUnits:e.length,completedUnits:n,progressPercentage:Math.round(t),status:t>=100?"completed":t>0?"in-progress":"not-started",lastAccessed:new Date(Date.now()-Math.random()*3*24*60*60*1e3).toISOString(),units:e}},bi=yi(),On=(r,e)=>r===Yt.id&&e===de.id?bi:null,xi=(r,e,t)=>{const n=On(r,e);return n&&n.units.find(o=>o.unitId===t)||null},vm=(r,e,t,n)=>{const o=xi(r,e,t);return o&&o.lessons.find(s=>s.lessonId===n)||null},_m=(r,e,t,n,o)=>(console.log("Updating lesson progress:",{userId:r,courseId:e,unitId:t,lessonId:n,progress:o}),!0),jn=(r,e)=>{const t=On(r,e);if(!t)return null;const n=de.units.map((o,s)=>{const i=t.units.find(a=>a.unitId===o.id);return{unitId:o.id,title:o.title,description:o.description,moduleCategory:o.moduleCategory,estimatedDuration:o.estimatedDuration,totalLessons:o.lessons.length,completedLessons:i?.completedLessons||0,progressPercentage:i?.progressPercentage||0,status:i?.status||"not-started",lastAccessed:i?.lastAccessed,isActive:s===0,route:`/math/grade-${de.level}/unit/${o.id}`}});return{userId:r,courseId:de.id,courseTitle:de.title,courseLevel:de.level,totalUnits:n.length,completedUnits:n.filter(o=>o.status==="completed").length,overallProgress:t.progressPercentage,status:t.status,lastAccessed:t.lastAccessed,units:n}},wm=(r,e,t)=>{const n=jn(r,e);return n&&n.units.find(o=>o.unitId===t)||null},Am=(r,e,t,n)=>(console.log("Updating unit active status:",{userId:r,courseId:e,unitId:t,isActive:n}),!0),Rm=jn(Yt.id,de.id),Sm={userId:Yt.id,courseId:de.id,courseTitle:de.title,courseLevel:de.level,totalUnits:de.units.length,completedUnits:3,overallProgress:45,status:"in-progress",lastAccessed:"2024-01-15T10:30:00Z",units:[{unitId:"unit_1",title:"小数乘法",description:"学习小数乘法的计算方法及应用",moduleCategory:"Arithmetic and Algebra",estimatedDuration:"3周",totalLessons:10,completedLessons:8,progressPercentage:80,status:"completed",lastAccessed:"2024-01-10T14:20:00Z",isActive:!1,route:"/math/grade-5/unit/unit_1",icon:"🔢"},{unitId:"unit_2",title:"小数除法",description:"学习小数除法的计算方法及应用",moduleCategory:"Arithmetic and Algebra",estimatedDuration:"3周",totalLessons:12,completedLessons:6,progressPercentage:50,status:"in-progress",lastAccessed:"2024-01-15T10:30:00Z",isActive:!0,route:"/math/grade-5/unit/unit_2",icon:"➗"},{unitId:"unit_3",title:"简易方程",description:"学习用字母表示数和解简易方程",moduleCategory:"Arithmetic and Algebra",estimatedDuration:"4周",totalLessons:14,completedLessons:2,progressPercentage:14,status:"in-progress",lastAccessed:"2024-01-12T16:45:00Z",isActive:!1,route:"/math/grade-5/unit/unit_3",icon:"📝"},{unitId:"unit_4",title:"多边形的面积",description:"学习平行四边形、三角形、梯形和组合图形的面积计算",moduleCategory:"Graphics and Geometry",estimatedDuration:"3周",totalLessons:12,completedLessons:0,progressPercentage:0,status:"not-started",isActive:!1,route:"/math/grade-5/unit/unit_4",icon:"📐"},{unitId:"unit_5",title:"因数与倍数",description:"学习因数、倍数、质数、合数等概念",moduleCategory:"Arithmetic and Algebra",estimatedDuration:"3周",totalLessons:10,completedLessons:0,progressPercentage:0,status:"not-started",isActive:!1,route:"/math/grade-5/unit/unit_5",icon:"🔢"},{unitId:"unit_6",title:"长方体和正方体",description:"学习长方体和正方体的特征、表面积和体积计算",moduleCategory:"Graphics and Geometry",estimatedDuration:"4周",totalLessons:14,completedLessons:0,progressPercentage:0,status:"not-started",isActive:!1,route:"/math/grade-5/unit/unit_6",icon:"📦"},{unitId:"unit_7",title:"分数的意义和性质",description:"学习分数的意义、性质和约分、通分等方法",moduleCategory:"Arithmetic and Algebra",estimatedDuration:"4周",totalLessons:16,completedLessons:0,progressPercentage:0,status:"not-started",isActive:!1,route:"/math/grade-5/unit/unit_7",icon:"½"},{unitId:"unit_8",title:"分数的加法和减法",description:"学习同分母分数、异分母分数的加法和减法",moduleCategory:"Arithmetic and Algebra",estimatedDuration:"3周",totalLessons:12,completedLessons:0,progressPercentage:0,status:"not-started",isActive:!1,route:"/math/grade-5/unit/unit_8",icon:"➕"},{unitId:"unit_9",title:"折线统计图",description:"学习单式折线统计图和复式折线统计图的认识和制作",moduleCategory:"Probability and Statistics",estimatedDuration:"2周",totalLessons:6,completedLessons:0,progressPercentage:0,status:"not-started",isActive:!1,route:"/math/grade-5/unit/unit_9",icon:"📊"}]},Cm=({className:r="",problemData:e,children:t})=>{const n=xn(),o=vn(),s=_n(),i=wn(),{updateUserAnswer:a,submitAnswer:d,nextQuestion:l,setProblemData:c}=An();b.useEffect(()=>{e&&c(e)},[e,c]);const y=(()=>{switch(e?.basicInfo?.shape){case"triangle":return{titleColor:"text-cyan-600",label:"三角形面积"};case"parallelogram":return{titleColor:"text-blue-600",label:"平行四边形面积"};case"trapezoid":return{titleColor:"text-green-600",label:"梯形面积"};default:return e?.title?.includes("年龄")||e?.basicInfo?.question?.includes("年龄")?{titleColor:"text-purple-600",label:"年龄问题"}:{titleColor:"text-slate-600",label:"数学问题"}}})();return f.jsxs("div",{className:"min-h-screen bg-gradient-to-br from-slate-50 to-cyan-50 flex flex-col items-center justify-center p-4 font-sans",children:[f.jsxs("header",{className:"w-full max-w-4xl mb-8",children:[f.jsxs("div",{className:"flex flex-col md:flex-row md:items-center md:justify-between",children:[f.jsxs("div",{children:[f.jsx("h1",{className:`text-2xl md:text-3xl font-bold ${y.titleColor}`,children:e?.title||"数学问题练习"}),f.jsxs("p",{className:"text-slate-600 mt-2",children:[e?.grade||5,"年级 · ",e?.unit||"数学",e?.lesson&&` · ${e.lesson}`]})]}),f.jsx("div",{className:"mt-4 md:mt-0",children:f.jsx("span",{className:"inline-block px-3 py-1 text-sm font-medium rounded-full bg-white border border-slate-200 text-slate-700",children:y.label})})]}),e?.description&&f.jsx("p",{className:"mt-4 text-slate-700 bg-white/50 p-3 rounded-lg border border-slate-200",children:e.description})]}),f.jsx("main",{className:"w-full max-w-4xl bg-white border border-slate-200 rounded-xl shadow-sm overflow-hidden",children:e?f.jsxs(f.Fragment,{children:[n==="question"&&f.jsx(St,{problemData:e,userAnswer:o,showAnswerForm:s,onAnswerSubmit:d,onAnswerChange:a,validationError:i}),n==="explanation"&&f.jsx(Kt,{problemData:e,userAnswer:o,onNextQuestion:l}),n==="success"&&f.jsx(Ct,{problemData:e,onNextQuestion:l})]}):f.jsxs("div",{className:"p-8 text-center",children:[f.jsx("div",{className:"text-red-500 text-4xl mb-4",children:"⚠️"}),f.jsx("h3",{className:"text-xl font-semibold text-slate-800 mb-2",children:"缺少问题数据"}),f.jsx("p",{className:"text-slate-600",children:"请提供有效的problemData prop"})]})}),f.jsx("footer",{className:"w-full max-w-4xl mt-8 text-center text-slate-500 text-sm",children:f.jsxs("div",{className:"flex flex-col md:flex-row md:justify-between items-center",children:[f.jsx("div",{className:"mb-4 md:mb-0",children:f.jsx("p",{children:"使用MathCardV2组件系统 · 三场景交互设计"})}),f.jsx("div",{children:f.jsxs("p",{children:["数据源: ",e?.id||"未知"]})})]})}),t&&f.jsx("div",{className:"w-full max-w-4xl mt-8",children:t})]})},Em=new Proxy({},{get(){throw new Error(`⚠️ MathCard 已废弃!请使用 MathCardV2 代替。
|
|
259
259
|
更改: import { MathCard } from '@mathwiz/ui-components' → import { MathCardV2 as MathCard } from '@mathwiz/ui-components'`)}});exports.AbilityAssessmentDashboard=ic;exports.AbilityProgressBar=ps;exports.AreaGeometrySessionPage=Cm;exports.Button=xt;exports.ContentAccordion=wo;exports.DEFAULT_IXL_CONFIG=Xl;exports.DecimalNumberRecognitionSessionPage=fm;exports.EquationRender=qt;exports.ExplanationScene=Kt;exports.GEOMETRY_CONFIG=xm;exports.GeometryProblemAdapterV4=nd;exports.GeometryTransform=Xo;exports.GradeNavigation=Ql;exports.GradeUnitBrowserPage=_c;exports.GradeUnitBrowserProvider=_s;exports.GraphContainer=ds;exports.HundredChart=ns;exports.IXLStyleCard=wt;exports.IXL_COLORS=Jl;exports.IXL_LABELS=Zl;exports.InputValidator=Zr;exports.MOCK_USER_COURSE_PROGRESS=bi;exports.MOCK_USER_GRADE_UNITS_NAV=Rm;exports.MOCK_USER_GRADE_UNITS_PROGRESS=Sm;exports.MathCard=Em;exports.MathCardV2=Re;exports.MathGraph=Tr;exports.MathPracticeSessionPage=lm;exports.MathSessionContainer=ui;exports.MathSessionPage=Hu;exports.MathWizHeader=Yo;exports.OutputValidator=Qr;exports.ParallelogramAreaCalculationSessionPage=If;exports.PersonalizedAdvicePanel=ys;exports.QuestionScene=St;exports.RadarChart=gs;exports.RecommendationCard=bs;exports.RememberModule=As;exports.ReviewModule=Rn;exports.SCHEMA_VERSION=Ls;exports.Sidebar=Ao;exports.SolveModule=Sn;exports.Submenu=sn;exports.SuccessScene=Ct;exports.TriangleAreaCalculationSessionPage=Ff;exports.UserProfile=qo;exports.VERSION=od;exports.ValidationManager=ft;exports.adaptGeometryData=Cn;exports.adaptGeometryDataAsync=Cn;exports.adaptGeometryDataSync=ut;exports.adaptGeometryDataV4=ut;exports.benchmarkAdapter=rd;exports.calculateBoundingBox=mn;exports.calculateDragRange=ts;exports.calculateFilledCells=Qo;exports.calculateGamePoints=um;exports.calculateValueFromDrag=rs;exports.categoryIcons=Ft;exports.checkCompatibility=sd;exports.comparePointArrays=pm;exports.courseData=de;exports.createAsyncAdapter=Ds;exports.createGeometryDataAdapter=Ds;exports.createSyncAdapter=Ps;exports.exploreItems=fc;exports.formatPercentage=Pl;exports.generateCellData=es;exports.generateMockUserCourseProgress=yi;exports.getBasicGemDefinitions=bm;exports.getBasicLineDefinitions=ym;exports.getUnitNavItem=wm;exports.getUserCourseProgress=On;exports.getUserGradeUnitsNav=jn;exports.getUserLessonProgress=vm;exports.getUserUnitProgress=xi;exports.isGeometryProblem=id;exports.isPointInTriangle=hm;exports.isV4Format=Us;exports.loadGeometryProblemData=Fs;exports.loadGeometryProblemDataAsync=Fs;exports.loadGeometryProblemDataSync=Is;exports.loadGeometryProblemDataV4=Is;exports.pointOnLine=Ie;exports.statusColors=lc;exports.statusMapping=ac;exports.toPixelCoordinates=mm;exports.trianglesMatch=gm;exports.updateUnitActiveStatus=Am;exports.updateUserLessonProgress=_m;exports.useAnswerCorrectness=Rc;exports.useAnswerFormVisibility=yn;exports.useCurrentScene=gn;exports.useDataAdapter=os;exports.useDecimalAnswerFormVisibility=gi;exports.useDecimalCurrentScene=mi;exports.useDecimalSessionActions=pi;exports.useDecimalUserAnswer=hi;exports.useGeometryManagement=di;exports.useGradeUnitBrowser=vs;exports.useHundredChartDrag=Zo;exports.useHundredChartStore=un;exports.useHundredChartValue=Jo;exports.useIXLStyle=ms;exports.useMathPracticeSessionStore=et;exports.useProblemData=Sc;exports.useResponsive=hs;exports.useSessionActions=bn;exports.useSessionCalculations=ci;exports.useSessionEventHandlers=fi;exports.useSessionStore=ce;exports.useUserAnswer=pn;exports.useValidationError=ws;exports.userData=uc;exports.validateGeometryData=td;exports.validateValue=dr;
|
|
260
|
-
//# sourceMappingURL=index.cjs.
|
|
260
|
+
//# sourceMappingURL=index.cjs.map
|