amotify
Version:
UI Component for React,NextJS,esbuild
2 lines (1 loc) • 14 kB
JavaScript
import{a as re,b as i,c as v,d as Q}from"../../../chunk-C5N2D3ZX.js";import{Fragment as Ee,jsx as f,jsxs as le}from"react/jsx-runtime";import M,{UUID as $,useStore as W}from"jmini";import*as K from"jmini";import{useState as B,useEffect as z,useRef as me}from"react";import{$$fromRoot as ue,Config as ie,ExtractStyles as de}from"../../../@utils";import{Box as H,FAI as fe}from"../../../atoms";import{Literal as he}from"../../../mols";import{Button as oe}from"../../Button";import{faClock as ge}from"@fortawesome/free-solid-svg-icons/faClock";import{faCalendarAlt as ye}from"@fortawesome/free-solid-svg-icons/faCalendarAlt";import{OptionalInputWrapper as Ie,BoxWrapper as ve,CoreEffects as Y,DefaultBoxishStyles as Se}from"../core";import{RightIcon as we}from"..";import Te from"../Select";import{InputLabel as De}from"../Label";import{TimeSelector as ne}from"./Selector";const A=" ~ ",be={clock:{defaultValue:"--:--",format:/^\d{2}\D\d{2}$/,ranges:[{type:"hour",from:0,length:2},{type:"minute",from:3,length:2}],sets:1},date:{defaultValue:"----/--/--",format:/^\d{4}\D\d{2}\D\d{2}$/,ranges:[{type:"year",from:0,length:4},{type:"month",from:5,length:2},{type:"date",from:8,length:2}],sets:1},week:{defaultValue:"----\u5E74\u7B2C--\u9031",format:/^\d{4}\D\d{2}$/,ranges:[{type:"year",from:0,length:4,region:6},{type:"week",from:6,length:2,region:3}],sets:1},month:{defaultValue:"----\u5E74--\u6708",format:/^\d{4}\D\d{2}$/,ranges:[{type:"year",from:0,length:4},{type:"month",from:5,length:2,region:3}],sets:1},year:{defaultValue:"----\u5E74",format:/^\d{4}$/,ranges:[{type:"year",from:0,length:4,region:5}],sets:1},"period.clock":{defaultValue:"--:--",format:/^\d{2}\D\d{2}$/,ranges:[{type:"hour",from:0,length:2},{type:"minute",from:3,length:2},{type:"hour",from:5+A.length,length:2},{type:"minute",from:8+A.length,length:2}],sets:2},"period.date":{defaultValue:"----/--/--",format:/^\d{4}\D\d{2}\D\d{2}$/,ranges:[{type:"year",from:0,length:4},{type:"month",from:5,length:2},{type:"date",from:8,length:2,region:5},{type:"year",from:10+A.length,length:4},{type:"month",from:15+A.length,length:2},{type:"date",from:18+A.length,length:2}],sets:2},"period.month":{defaultValue:"----\u5E74--\u6708",format:/^\d{4}\D\d{2}$/,ranges:[{type:"year",from:0,length:4},{type:"month",from:5,length:2,region:6},{type:"year",from:8+A.length,length:4},{type:"month",from:13+A.length,length:2,region:3}],sets:2},"locale.jp.warekiDate":{defaultValue:"----\u5E74--\u6708--\u65E5",format:/^\d{4}\D\d{2}\D\d{2}$/,ranges:[{type:"locale.jp.warekiDate",from:0,length:4,region:5},{type:"month",from:5,length:2,region:3},{type:"date",from:8,length:2,region:3}],sets:1}},N={PeriodMargin:" ~ ",SyncValue:e=>{let{restrict:a,value:I,era:o}=e,h=M.Arrayify(I||""),{defaultValue:E,format:w,ranges:l,sets:r}=be[a],_=[],D=a.match(/clock/)?":":"/";for(let t=0;t<h.length;t++)h[t]=String(h[t]).replace(/\D/ig,D);for(let t=0;t<r;t++){let p=h[t]||"";if(!p.match(w))h[t]="",_.push(E);else{let m=E;p.split(/\D/).forEach((b,k)=>{if(k==0&&a=="locale.jp.warekiDate"){let g=Number(b);o!="year"&&(g>=2019?o=="reiwa"?g-=2018:o=="heisei"&&(g=31):g>=1989?o=="heisei"?g-=1988:o=="shouwa"&&(g=64):g>=1926?o=="shouwa"?g-=1925:o=="taisho"&&(g=15):g>=1912?o=="taisho"?g-=1911:o=="meiji"&&(g=45):g>=1868&&(g-=1867)),b=g.zeroEmbed(4)}m=m.replace(new RegExp("------------------".slice(0,b.length)),b)}),_.push(m)}}return{safeValue:_.join(A),rawValue:a.startsWith("period.")?h:h[0],ranges:l}},SystemValidation:e=>{let{states:a}=e,{restrict:I,min:o,max:h,required:E}=a,w=[],l=M.Arrayify(e.value),r={empty:!1,escalated:1,filled:!0,correct:!0,prohibited:!1};(()=>{let D=I.match(/clock/)?":":"/";for(let t=0;t<l.length;t++)l[t]=String(l[t]).replace(/\D/ig,D);for(let t=0;t<l.length;t++){let p=l[t],m=l[t-1];p.removeLetters()||(r.empty=!0),t>0&&(r.escalated&=+(p>=m))}r.escalated&&(r.empty||(I.match(/clock/)?l.forEach(t=>{let[p,m]=t.split(/\D+/);!p||!m?r.filled=!1:(Number(p)>23||Number(m)>59)&&(r.correct=!1)}):I.match(/date/)?l.forEach(t=>{let[p,m,b]=t.split(/\D+/);if(!p||!m||!b)r.filled=!1;else{let k=K.Time(t);(!k.validate||t!=k.toFormatYMD())&&(r.correct=!1)}}):I.match(/week/)?l.forEach(t=>{let[p,m]=t.split(/\D+/);if(!p||!m)r.filled=!1;else{let b=K.Time(p+"/01/01").weekday,g=K.Time(p+"/01/0"+(7-b+1)).addWeek(Number(m)-1);p!=String(g.year)&&(r.correct=!1)}}):I.match(/month/)?l.forEach(t=>{let[p,m]=t.split(/\D+/);!p||!m?r.filled=!1:K.Time([p,m,"01"].join("/")).validate||(r.correct=!1)}):I.match(/year/),r.filled&&r.correct&&l.forEach(t=>{{let p=Number(String(t).replace(/\D/ig,""));if(o&&Number(String(o).replace(/\D/ig,""))>p&&(r.prohibited=!0),h){let m=Number(String(h).replace(/\D/ig,""));p>m&&(r.prohibited=!0)}}})))})();{let{empty:D,escalated:t,filled:p,correct:m,prohibited:b}=r;D&&E&&(w=[{type:"invalid",label:"\u5FC5\u9808\u9805\u76EE\u3067\u3059"}]),t||w.push({type:"invalid",label:"\u6642\u7CFB\u5217\u3092\u6B63\u3057\u304F\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"}),m||w.push({type:"invalid",label:"\u7121\u52B9\u306A\u5024\u304C\u5165\u529B\u3055\u308C\u3066\u3044\u307E\u3059"}),p||w.push({type:"invalid",label:"\u6700\u5F8C\u307E\u3067\u5024\u3092\u57CB\u3081\u3066\u304F\u3060\u3055\u3044"}),b&&w.push({type:"invalid",label:le(Ee,{children:[f(H,{children:"\u5165\u529B\u7BC4\u56F2\u304C\u5236\u9650\u3055\u308C\u3066\u3044\u307E\u3059"}),"[",o||"\u4E0B\u9650\u7121\u3057","] ~ [",h||"\u4E0A\u9650\u7121\u3057","]"]})})}return{ok:!w.filter(({type:D})=>D=="invalid").length,notice:w}},KeyDownEvent:e=>{let{val_era:a,restrict:I,event:o,val_status:h,set_status:E,val_focus:w,set_focus:l}=e,{key:r,shiftKey:_,ctrlKey:D,metaKey:t}=o,p=D||t,{selectionStart:m,selectionEnd:b}=o.target,{index:k,prevIndex:g}=w,{ranges:q,safeValue:Z}=h,F=q.length-1;if(M.isOneOf(r,"Tab","ArrowLeft","ArrowRight")){let u=0;if(r=="Tab"){let c=+!_*2-1;if(u=w.index+c,u<0||u>F)return}else{let c=r=="ArrowLeft"?-1:r=="ArrowRight"?1:0;p||m==0&&b==String(h.safeValue).length?u=c==1?F:0:u=Math.max(0,Math.min(k+c,F))}l(c=>v(i({},c),{index:u,prevIndex:k})),o.preventDefault()}if(M.isOneOf(r,"Backspace","ArrowUp","ArrowDown","0","1","2","3","4","5","6","7","8","9")){o.preventDefault();let u=k;u=Math.max(u,0),u=Math.min(u,F);let{type:c,from:X,length:G}=q[u],C=Z.slice(X,X+G),S;if(r=="Backspace")S="------".slice(0,G);else if(M.isOneOf(r,"ArrowUp","ArrowDown")){let P=r=="ArrowUp"?1:-1;C=C|0,S=C+P;let[T,s,x]=c=="locale.jp.warekiDate"?a=="year"?[0,2999,4]:a=="reiwa"?[1,2999,4]:a=="heisei"?[1,31,4]:a=="shouwa"?[1,64,4]:a=="taisho"?[1,15,4]:a=="meiji"?[1,45,4]:[0,0,0]:c=="minute"?[0,59,2]:c=="hour"?[0,23,2]:c=="date"?[1,31,2]:c=="week"?[1,53,2]:c=="month"?[1,12,2]:c=="year"?[0,2999,4]:[0,0,0];S>s?S=T:S<T&&(S=s),S=Number(S).zeroEmbed(x)}else if(M.isOneOf(r,"0","1","2","3","4","5","6","7","8","9")){let P=C|0,T=r,s=`${P}${T}`;if(g!=k&&(P=0,s="0"+T),c=="year"||c=="locale.jp.warekiDate"&&a=="year")Number(s)>1e4?S=T:S=s,(S|0)>1e3&&u++;else if(M.isOneOf(c,"hour","minute","date","week","month")||c=="locale.jp.warekiDate"&&a!="year"){let x=c=="locale.jp.warekiDate"?a=="reiwa"?100:a=="heisei"?31:a=="shouwa"?64:a=="taisho"?15:a=="meiji"?45:0:c=="minute"?59:c=="hour"?23:c=="date"?31:c=="week"?53:c=="month"?12:0;S=(s|0)>x?T:s,(Number(T)>Number(String(x)[0])||C=="0000".slice(0,String(x).length)&&(s!="0000".slice(0,String(x).length)||M.isOneOf(c,"minute","hour")&&g==k)||(s|0)>=re(10,String(x).length-1))&&u++}c=="year"||c=="locale.jp.warekiDate"?S=(S|0).zeroEmbed(4):S=(S|0).zeroEmbed(2)}{let P=String(Z).partReplace(X,String(S)),T=P.split(A).map(s=>s.replace(/(^\D|\D$)/,"").split(/\D+/).join(I.match(/clock/)&&":"||"/").replace(/(^\D|\D$)/,""));if(I=="locale.jp.warekiDate"){let s=T[0].split(/\D/),[x,d,R]=s;s.length==3&&x&&(T=[[Number(x)-1+Number({year:1,reiwa:2019,heisei:1989,shouwa:1926,taisho:1912,meiji:1868}[a]),d,R].join("/")])}u=Math.max(u,0),u=Math.min(u,F),E(s=>v(i({},s),{rawValue:I.startsWith("period.")?T:T[0],safeValue:P,eventType:"update",eventID:$(12),isInspected:!1})),l(s=>v(i({},s),{index:u,prevIndex:s.index}))}}},Shallow:e=>{let{rootStates:a,val_status:I}=e,[o]=de(a);return f(H,{position:"absolute",top:0,left:0,right:0,height:0,overflow:"hidden",ssZIndex:3,opacity:"trans",xcss:{pointerEvents:"none"},children:f(he.Description,v(i({className:a.className},o),{position:"absolute",width:1,xcss:v(i({},o.xcss),{color:"orange"}),children:f(H,{"data-input-value-shallow":I.componentId,children:"A"})}))})}},xe=e=>{let te=e,{tone:a,required:I,restrict:o="clock",componentId:h,era:E,form:w,name:l,min:r,max:_,className:D,enableFormSubmit:t,showInitValidation:p,onKeyDown:m,periodPresets:b,onValidate:k,onValidateDelay:g,onUpdateValue:q,onUpdateValidValue:Z,onUserAction:F,value:u="",leftIndicator:c,rightIndicator:X,leftIcon:G,rightIcon:C,xcss:S,wrapStyles:P}=te,T=Q(te,["tone","required","restrict","componentId","era","form","name","min","max","className","enableFormSubmit","showInitValidation","onKeyDown","periodPresets","onValidate","onValidateDelay","onUpdateValue","onUpdateValidValue","onUserAction","value","leftIndicator","rightIndicator","leftIcon","rightIcon","xcss","wrapStyles"]),[s,x]=B(E||"year"),[d,R]=B(()=>v(i({componentId:e.componentId||""},N.SyncValue({restrict:o,value:u,era:s})),{ranges:[],eventType:"init",eventID:$(12)})),[J,j]=B({active:!1,index:0,prevIndex:-1}),se={rootStates:e,val_status:d,set_status:R,val_era:s,set_era:x,val_focus:J,set_focus:j};Y.CommonEffects({type:"time",states:e,val_status:d,set_status:R,SystemValidation:N.SystemValidation,ExtraOverrideStates:n=>N.SyncValue({restrict:o,value:n,era:s})}),z(()=>{R(n=>v(i(i({},n),N.SyncValue({restrict:o,value:u,era:s})),{isInspected:!1}))},[]);const ee=me(!1);return z(()=>{if(ee.current){R(y=>v(i(i({},y),N.SyncValue({restrict:o,value:y.rawValue,era:s})),{isInspected:!1}));let n=W.get("refreshEra_"+d.componentId);n&&n.refreshEra(s)}else ee.current=!0},[s]),W.update({[d.componentId]:{openPicker:n=>{e.disabled||ne.picker.open({restrict:o,era:E,defaultValue:d.rawValue,min:r,max:_,periodPresets:e.periodPresets,onValueUpdate:y=>{y.eventType=="commit"&&(R(O=>v(i(i({},O),N.SyncValue({restrict:o,value:y.value,era:y.era})),{eventType:"update",eventID:$(12),isInspected:!1,isValidated:!1,notice:[]})),x(y.era))}})},resetEra:n=>{x(n),R(y=>v(i(i({},y),N.SyncValue({restrict:o,value:"",era:s})),{eventType:"update",eventID:$(12),isInspected:!1}))}}}),z(()=>{let{index:n,active:y}=J;if(y){n=Math.max(n,0),n=Math.min(n,d.ranges.length-1);let{from:O,length:L}=d.ranges[n],U=ue("#"+e.id)[0];U&&U.setSelectionRange&&U.setSelectionRange(O,O+L)}R(O=>v(i({},O),{isFocusing:y}))},[J]),le(ve,{val_status:d,set_status:R,states:e,children:[f(N.Shallow,i({},se)),f(De,{componentId:e.componentId,fontSize:e.fontSize,required:e.required,label:e.label,isActive:!0,val_status:d}),ie.get().isTouchDevice?f(oe.Plain,v(i({"data-show-validation":Y.isShowValidation(d,!!p),"data-component-id":d.componentId,"data-input-origin":d.componentId,"data-disabled":e.disabled,className:D,xcss:{textAlign:"left"}},T),{children:d.safeValue,onClick:n=>{let y=W.get(d.componentId);y&&y.openPicker(`[data-input-origin="${d.componentId}"]`),n.stopPropagation()},onFocus:()=>{j(n=>v(i({},n),{active:!0}))},onBlur:()=>{j(n=>v(i({},n),{active:!1}))}})):f(H,i({htmlTag:"input",type:"text",inputMode:"numeric","data-show-validation":Y.isShowValidation(d,!!p),"data-input-origin":d.componentId,"data-disabled":e.disabled,value:d.safeValue,className:D,tabIndex:ie.get().isTouchDevice?-1:0,onKeyDown:n=>{N.KeyDownEvent({restrict:o,event:n,val_era:s,val_status:d,set_status:R,val_focus:J,set_focus:j}),m&&m(n),t&&Y.SubmitForm(n,w)},onKeyUp:n=>{n.key=="Tab"&&j(y=>v(i({},y),{active:!0}))},onClick:n=>{let y=n.target.selectionEnd,O=0;d.ranges.forEach((L,U)=>{let{from:ae,length:ce,region:pe}=L;ae<=y&&y<=ae+(pe||ce)&&(O=U)}),j(L=>v(i({},L),{active:!0,index:O})),n.preventDefault()},onBlur:()=>{j(n=>v(i({},n),{active:!1}))},onChange:()=>{}},T))]})},V={Origin:e=>{let a=i({fontSize:"inherit",width:1,value:""},e);a.value=a.value||"";let[I]=B(e.componentId||$(12));if(a.componentId=I,M.isNullish(a.rightIcon)){let o=(e.restrict||"").match(/clock/)?ge:ye;a.rightIcon=f(we,{ssSphere:2.5,xcss:{pointerEvents:"all"},children:f(oe.Sub,{color:"cloud",border:"unset",ssSphere:2.5,fontColor:"theme",boxShadow:"0.normal",borderRadius:"3.tone.tertiary",flexCenter:!0,ssEffectsOnActive:"push",tabIndex:-1,id:"Picker-"+a.componentId,onClick:()=>{let h=W.get(a.componentId);h&&h.openPicker("#Picker-"+a.componentId)},children:f(fe,{icon:o})})})}return f(Ie,{componentId:a.componentId,children:xe,states:Se(a)})},Clock:e=>f(V.Origin,i({restrict:"clock",era:"clock"},e)),Date:e=>f(V.Origin,i({restrict:"date"},e)),Week:e=>f(V.Origin,i({restrict:"week"},e)),Month:e=>f(V.Origin,i({restrict:"month"},e)),Year:e=>f(V.Origin,i({restrict:"year"},e)),Locale:{JP:{WarekiDate:e=>{e=i({},e);let[a]=B(e.componentId||$(12));e.componentId=a;let w=e,{defaultEra:I="wareki"}=w,o=Q(w,["defaultEra"]),[h,E]=B((()=>{let l="year";if(I=="wareki"&&(l="reiwa",e.value)){let[r,_,D]=e.value.split(/\D/);if(r&&_&&D){let t=Number(r);t>=2019?(t-=2019,l="reiwa"):t>=1989?(t-=1989,l="heisei"):t>=1926?(t-=1926,l="shouwa"):t>=1912?(t-=1912,l="taisho"):t>=1868&&(t-=1868,l="meiji"),t+=1}}return l})());return z(()=>{W.set({["refreshEra_"+a]:{refreshEra:l=>{E(l)}}})},[]),f(V.Origin,v(i({restrict:"locale.jp.warekiDate",leftIndicator:f(Te,{label:"\u5143\u53F7",emptySelect:!1,value:h,tone:e.tone||"border",override:"force",flexCenter:!0,borderTopRightRadius:"2/3",borderBottomRightRadius:"2/3",height:1,xcss:{whiteSpace:"nowrap"},options:[{value:"year",label:"\u897F\u66A6"},{value:"reiwa",label:"\u4EE4\u548C"},{value:"heisei",label:"\u5E73\u6210"},{value:"shouwa",label:"\u662D\u548C"},{value:"taisho",label:"\u5927\u6B63"},{value:"meiji",label:"\u660E\u6CBB"}],onUpdateValidValue:l=>{E(l);let r=W.get(e.componentId);r&&r.resetEra&&r.resetEra(l)}})},o),{era:h}))}}},Periods:{Clock:e=>f(V.Origin,i({restrict:"period.clock",era:"clock"},e)),Date:e=>f(V.Origin,i({restrict:"period.date"},e)),Month:e=>f(V.Origin,i({restrict:"period.month"},e))}};export{V as Time,ne as TimeSelector,V as default};