@charcoal-ui/react 2.0.0-alpha.20 → 2.0.0-alpha.21

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/dist/index.cjs CHANGED
@@ -1,2 +1,1061 @@
1
- var e=require("react"),n=require("styled-components"),t=require("@charcoal-ui/styled"),r=require("@charcoal-ui/utils"),a=require("warning"),i=require("@react-aria/switch"),o=require("react-stately"),l=require("@react-aria/textfield"),u=require("@react-aria/visually-hidden");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("@charcoal-ui/icons");var s=/*#__PURE__*/d(e),c=/*#__PURE__*/d(n),f=/*#__PURE__*/d(a);function p(){return p=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},p.apply(this,arguments)}function h(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n.indexOf(t=i[r])>=0||(a[t]=e[t]);return a}function v(e,n){return n||(n=e.slice(0)),e.raw=n,e}function b(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function g(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,n){if(e){if("string"==typeof e)return b(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?b(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){t&&(e=t);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var m=["to","children"],x={Link:s.default.forwardRef(function(e,n){var t=e.to,r=e.children,a=h(e,m);/*#__PURE__*/return s.default.createElement("a",p({href:t,ref:n},a),r)})},y=s.default.createContext(x);function w(){return e.useContext(y)}var E,k,C,S,R,P,q,z,T,L,N,O,D,M,H,j,A,I,F,G,B,X,V,Y,J,U,$,K,Q,W,Z,_,ee,ne,te,re=t.createTheme(c.default),ae=["onClick","disabled"],ie=s.default.forwardRef(function(e,n){var t=w().Link;if("to"in e){var r=e.onClick,a=e.disabled,i=void 0!==a&&a,o=h(e,ae);/*#__PURE__*/return s.default.createElement(ue,p({},o,{as:i?void 0:t,onClick:i?void 0:r,"aria-disabled":i,ref:n}))}/*#__PURE__*/return s.default.createElement(le,p({},e,{ref:n}))}),oe=n.css(E||(E=v(["\n /* Clickable style */\n cursor: pointer;\n\n "," {\n cursor: default;\n }\n"])),r.disabledSelector),le=c.default.button(k||(k=v(["\n /* Reset button appearance */\n appearance: none;\n background: transparent;\n padding: 0;\n border-style: none;\n outline: none;\n color: inherit;\n text-rendering: inherit;\n letter-spacing: inherit;\n word-spacing: inherit;\n\n &:focus {\n outline: none;\n }\n\n /* Change the font styles in all browsers. */\n font: inherit;\n\n /* Remove the margin in Firefox and Safari. */\n margin: 0;\n\n /* Show the overflow in Edge. */\n overflow: visible;\n\n /* Remove the inheritance of text transform in Firefox. */\n text-transform: none;\n\n /* Remove the inner border and padding in Firefox. */\n &::-moz-focus-inner {\n border-style: none;\n padding: 0;\n }\n\n ","\n"])),oe),ue=c.default.span(C||(C=v(["\n /* Reset a-tag appearance */\n color: inherit;\n\n &:focus {\n outline: none;\n }\n\n .text {\n top: calc(1em + 2em);\n }\n\n ","\n"])),oe),de=["children","variant","size","fixed","disabled"],se=s.default.forwardRef(function(e,n){var t=e.children,r=e.variant,a=void 0===r?"Default":r,i=e.size,o=void 0===i?"M":i,l=e.fixed,u=void 0!==l&&l,d=e.disabled,c=void 0!==d&&d,f=h(e,de);/*#__PURE__*/return s.default.createElement(ce,p({},f,{disabled:c,variant:a,size:o,fixed:u,ref:n}),t)}),ce=c.default(ie).withConfig({shouldForwardProp:function(e){return"fixed"!==e}}).attrs(function(e){return p({},e,function(e){switch(e){case"Overlay":return{font:"text5",background:"surface4"};case"Default":return{font:"text2",background:"surface3"};case"Primary":return{font:"text5",background:"brand"};case"Navigation":return{font:"text5",background:"surface6"};case"Danger":return{font:"text5",background:"assertive"};default:return function(e){throw new Error(0===arguments.length?"unreachable":"unreachable ("+JSON.stringify(e)+")")}(e)}}(e.variant),function(e){switch(e){case"S":return{height:32,padding:16};case"M":return{height:40,padding:24}}}(e.size))})(S||(S=v(["\n width: ",";\n display: inline-grid;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n\n ","\n\n /* よく考えたらheight=32って定義が存在しないな... */\n height: ","px;\n"])),function(e){return e.fixed?"stretch":"min-content"},function(e){return re(function(n){return[n.font[e.font].hover.press,n.bg[e.background].hover.press,n.typography(14).bold.preserveHalfLeading,n.padding.horizontal(e.padding),n.disabled,n.borderRadius("oval"),n.outline.default.focus]})},function(e){return e.height}),fe=["variant","size","icon"],pe=s.default.forwardRef(function(e,n){var t=e.variant,r=void 0===t?"Default":t,a=e.size,i=void 0===a?"M":a,o=e.icon,l=h(e,fe);return function(e,n){var t;switch(e){case"XS":t="16";break;case"S":case"M":t="24"}var r=/^[0-9]*/.exec(n);if(null==r)throw new Error("Invalid icon name");var a=r[0];a!==t&&console.warn('IconButton with size "'+e+'" expect icon size "'+t+', but got "'+a+'"')}(i,o),/*#__PURE__*/s.default.createElement(he,p({},l,{ref:n,variant:r,size:i}),/*#__PURE__*/s.default.createElement("pixiv-icon",{name:o}))}),he=c.default(ie).attrs(function(e){return p({},e,function(e){switch(e){case"Default":return{font:"text3",background:"transparent"};case"Overlay":return{font:"text5",background:"surface4"}}}(e.variant),function(e){switch(e){case"XS":return{width:20,height:20};case"S":return{width:32,height:32};case"M":return{width:40,height:40}}}(e.size))})(R||(R=v(["\n user-select: none;\n\n width: ","px;\n height: ","px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ","\n"])),function(e){return e.width},function(e){return e.height},function(e){var n=e.font,t=e.background;return re(function(e){return[e.font[n],e.bg[t].hover.press,e.disabled,e.borderRadius("oval"),e.outline.default.focus]})}),ve=c.default.label(P||(P=v(["\n display: grid;\n grid-template-columns: auto 1fr;\n grid-gap: ",";\n align-items: center;\n cursor: pointer;\n\n ","\n"])),function(e){return r.px(e.theme.spacing[4])},re(function(e){return[e.disabled]})),be=c.default.input.attrs({type:"radio"})(q||(q=v(["\n /** Make prior to browser default style */\n &[type='radio'] {\n appearance: none;\n display: block;\n box-sizing: border-box;\n\n padding: 6px;\n\n width: 20px;\n height: 20px;\n\n ",";\n\n &:not(:checked) {\n border-width: 2px;\n border-style: solid;\n border-color: ",";\n }\n\n &:checked {\n ","\n\n &::after {\n content: '';\n display: block;\n width: 8px;\n height: 8px;\n pointer-events: none;\n\n ","\n }\n }\n\n ","\n }\n"])),function(e){var n=e.hasError,t=void 0!==n&&n;return re(function(e){return[e.borderRadius("oval"),e.bg.text5.hover.press,t&&e.outline.assertive]})},function(e){return e.theme.color.text4},re(function(e){return e.bg.brand.hover.press}),re(function(e){return[e.bg.text5.hover.press,e.borderRadius("oval")]}),re(function(e){return e.outline.default.focus})),ge=c.default.div(z||(z=v(["\n ","\n"])),re(function(e){return[e.typography(14)]})),me=c.default.div(T||(T=v(["\n display: grid;\n grid-template-columns: 1fr;\n grid-gap: ",";\n"])),function(e){return r.px(e.theme.spacing[8])}),xe=s.default.createContext({name:void 0,selected:void 0,disabled:!1,readonly:!1,hasError:!1,onChange:function(){throw new Error("Cannot find onChange() handler. Perhaps you forgot to wrap with <RadioGroup> ?")}}),ye=e.createContext({name:void 0,selected:[],disabled:!1,readonly:!1,hasError:!1,onChange:function(){throw new Error("Cannot find `onChange()` handler. Perhaps you forgot to wrap it with `<SelectGroup />` ?")}}),we=c.default.label(L||(L=v(["\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: center;\n position: relative;\n cursor: pointer;\n "," {\n cursor: default;\n }\n gap: ",";\n ","\n"])),r.disabledSelector,function(e){return r.px(e.theme.spacing[4])},re(function(e){return e.disabled})),Ee=c.default.div(N||(N=v(["\n display: flex;\n align-items: center;\n ","\n"])),re(function(e){return[e.typography(14),e.font.text1]})),ke=c.default.input.attrs({type:"checkbox"})(O||(O=v(["\n &[type='checkbox'] {\n appearance: none;\n display: block;\n width: 20px;\n height: 20px;\n margin: 0;\n\n &:checked {\n ","\n }\n\n ",";\n }\n"])),re(function(e){return e.bg.brand.hover.press}),function(e){var n=e.hasError,t=e.overlay;return re(function(e){return[e.bg.text3.hover.press,e.borderRadius("oval"),n&&!t&&e.outline.assertive,t&&e.bg.surface4]})}),Ce=c.default.div(D||(D=v(["\n position: absolute;\n top: -2px;\n left: -2px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ","\n\n ","\n"])),function(e){var n=e.hasError,t=e.overlay;return re(function(e){return[e.width.px(24),e.height.px(24),e.borderRadius("oval"),e.font.text5,n&&t&&e.outline.assertive]})},function(e){return e.overlay&&n.css(M||(M=v(["\n border-color: ",";\n border-width: 2px;\n border-style: solid;\n "])),function(e){return e.theme.color.text5})}),Se=["className","type"],Re=c.default.label(H||(H=v(["\n display: inline-grid;\n grid-template-columns: auto 1fr;\n gap: ",";\n cursor: pointer;\n outline: 0;\n\n ","\n\n "," {\n cursor: default;\n }\n"])),function(e){return r.px(e.theme.spacing[4])},re(function(e){return e.disabled}),r.disabledSelector),Pe=c.default.div(j||(j=v(["\n ","\n"])),re(function(e){return e.typography(14)})),qe=c.default.input.attrs({type:"checkbox"})(A||(A=v(["\n &[type='checkbox'] {\n appearance: none;\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n width: 28px;\n border: 2px solid transparent;\n transition: box-shadow 0.2s, background-color 0.2s;\n cursor: inherit;\n ","\n\n &::after {\n content: '';\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n width: 12px;\n height: 12px;\n transform: translateX(0);\n transition: transform 0.2s;\n ","\n }\n\n &:checked {\n ","\n\n &::after {\n transform: translateX(12px);\n }\n }\n }\n"])),re(function(e){return[e.borderRadius(16),e.height.px(16),e.bg.text4.hover.press,e.outline.default.focus]}),re(function(e){return[e.bg.text5.hover.press,e.borderRadius("oval")]}),re(function(e){return e.bg.brand.hover.press})),ze=["style","className","label","required","requiredText","subLabel"],Te=s.default.forwardRef(function(e,n){var t=e.style,r=e.className,a=e.label,i=e.required,o=void 0!==i&&i,l=e.requiredText,u=e.subLabel,d=h(e,ze);/*#__PURE__*/return s.default.createElement(Me,{style:t,className:r},/*#__PURE__*/s.default.createElement(Ne,p({ref:n},d),a),o&&/*#__PURE__*/s.default.createElement(Oe,null,l),/*#__PURE__*/s.default.createElement(De,null,/*#__PURE__*/s.default.createElement("span",null,u)))}),Le=t.createTheme(c.default),Ne=c.default.label(I||(I=v(["\n ","\n"])),Le(function(e){return[e.typography(14).bold,e.font.text1]})),Oe=c.default.span(F||(F=v(["\n ","\n"])),Le(function(e){return[e.typography(14),e.font.text3]})),De=c.default.div(G||(G=v(["\n ","\n"])),Le(function(e){return[e.typography(14),e.font.text3.hover.press,e.outline.default.focus]})),Me=c.default.div(B||(B=v(["\n display: inline-flex;\n align-items: center;\n\n > "," {\n ","\n }\n\n > "," {\n ","\n }\n"])),Oe,Le(function(e){return e.margin.left(4)}),De,Le(function(e){return e.margin.left("auto")})),He=["onChange"],je=["onChange"],Ae=t.createTheme(c.default);function Ie(){var e=arguments;return function(n){for(var t,r=g([].slice.call(e));!(t=r()).done;){var a=t.value;"function"==typeof a?a(n):null!==a&&(a.current=n)}}}function Fe(e){return Array.from(e).length}var Ge=s.default.forwardRef(function(e,n){/*#__PURE__*/return s.default.createElement(void 0!==e.multiline&&e.multiline?Xe:Be,p({ref:n},e))}),Be=s.default.forwardRef(function(n,t){var r,a=n.onChange,i=h(n,He),o=i.className,d=i.showLabel,c=void 0!==d&&d,f=i.showCount,v=void 0!==f&&f,b=i.label,g=i.requiredText,m=i.subLabel,x=i.disabled,y=void 0!==x&&x,w=i.required,E=i.invalid,k=void 0!==E&&E,C=i.assistiveText,S=i.maxLength,R=i.prefix,P=void 0===R?null:R,q=i.suffix,z=void 0===q?null:q,T=u.useVisuallyHidden().visuallyHiddenProps,L=e.useRef(null),N=e.useRef(null),O=e.useRef(null),D=e.useState(Fe(null!=(r=i.value)?r:"")),M=D[0],H=D[1],j=e.useState(0),A=j[0],I=j[1],F=e.useState(0),G=F[0],B=F[1],X=void 0===i.value,V=e.useCallback(function(e){var n=Fe(e);void 0!==S&&n>S||(X&&H(n),null==a||a(e))},[S,X,a]);e.useEffect(function(){var e;H(Fe(null!=(e=i.value)?e:""))},[i.value]);var Y=l.useTextField(p({inputElementType:"input",isDisabled:y,isRequired:w,validationState:k?"invalid":"valid",description:!k&&C,errorMessage:k&&C,onChange:V},i),L),J=Y.inputProps,U=Y.labelProps,$=Y.descriptionProps,K=Y.errorMessageProps;return e.useEffect(function(){var e=new ResizeObserver(function(e){I(e[0].contentRect.width)}),n=new ResizeObserver(function(e){B(e[0].contentRect.width)});return null!==N.current&&e.observe(N.current),null!==O.current&&n.observe(O.current),function(){n.disconnect(),e.disconnect()}},[]),/*#__PURE__*/s.default.createElement(Ve,{className:o,isDisabled:y},/*#__PURE__*/s.default.createElement(Ye,p({label:b,requiredText:g,required:w,subLabel:m},U,c?{}:T)),/*#__PURE__*/s.default.createElement(Je,null,/*#__PURE__*/s.default.createElement(Ue,{ref:N},/*#__PURE__*/s.default.createElement(Ke,null,P)),/*#__PURE__*/s.default.createElement(Qe,p({ref:Ie(t,L),invalid:k,extraLeftPadding:A,extraRightPadding:G},J)),/*#__PURE__*/s.default.createElement($e,{ref:O},/*#__PURE__*/s.default.createElement(Ke,null,z),v&&/*#__PURE__*/s.default.createElement(_e,null,void 0!==S?M+"/"+S:M))),null!=C&&0!==C.length&&/*#__PURE__*/s.default.createElement(nn,p({invalid:k},k?K:$),C))}),Xe=s.default.forwardRef(function(n,t){var r,a=n.onChange,i=h(n,je),o=i.className,d=i.showCount,c=void 0!==d&&d,f=i.showLabel,v=void 0!==f&&f,b=i.label,g=i.requiredText,m=i.subLabel,x=i.disabled,y=void 0!==x&&x,w=i.required,E=i.invalid,k=void 0!==E&&E,C=i.assistiveText,S=i.maxLength,R=i.autoHeight,P=void 0!==R&&R,q=i.rows,z=void 0===q?4:q,T=u.useVisuallyHidden().visuallyHiddenProps,L=e.useRef(null),N=e.useRef(null),O=e.useState(Fe(null!=(r=i.value)?r:"")),D=O[0],M=O[1],H=e.useState(z),j=H[0],A=H[1],I=e.useCallback(function(e){var n,t,r=null!=(n=null==(t=(e.value+"\n").match(/\n/g))?void 0:t.length)?n:1;z<=r&&A(r)},[z]),F=void 0===i.value,G=e.useCallback(function(e){var n=Fe(e);void 0!==S&&n>S||(F&&M(n),P&&null!==L.current&&I(L.current),null==a||a(e))},[P,S,F,a,I]);e.useEffect(function(){var e;M(Fe(null!=(e=i.value)?e:""))},[i.value]);var B=l.useTextField(p({inputElementType:"textarea",isDisabled:y,isRequired:w,validationState:k?"invalid":"valid",description:!k&&C,errorMessage:k&&C,onChange:G},i),N),X=B.inputProps,V=B.labelProps,Y=B.descriptionProps,J=B.errorMessageProps;return e.useEffect(function(){P&&null!==L.current&&I(L.current)},[P,I]),/*#__PURE__*/s.default.createElement(Ve,{className:o,isDisabled:y},/*#__PURE__*/s.default.createElement(Ye,p({label:b,requiredText:g,required:w,subLabel:m},V,v?{}:T)),/*#__PURE__*/s.default.createElement(We,{invalid:k,rows:c?j+1:j},/*#__PURE__*/s.default.createElement(Ze,p({ref:Ie(L,t,N),rows:j,noBottomPadding:c},X)),c&&/*#__PURE__*/s.default.createElement(en,null,void 0!==S?D+"/"+S:D)),null!=C&&0!==C.length&&/*#__PURE__*/s.default.createElement(nn,p({invalid:k},k?J:Y),C))}),Ve=c.default.div(X||(X=v(["\n display: flex;\n flex-direction: column;\n\n ","\n"])),function(e){return e.isDisabled&&{opacity:e.theme.elementEffect.disabled.opacity}}),Ye=c.default(Te)(V||(V=v(["\n ","\n"])),Ae(function(e){return e.margin.bottom(8)})),Je=c.default.div(Y||(Y=v(["\n height: 40px;\n display: grid;\n position: relative;\n"]))),Ue=c.default.span(J||(J=v(["\n position: absolute;\n top: 50%;\n left: 8px;\n transform: translateY(-50%);\n"]))),$e=c.default.span(U||(U=v(["\n position: absolute;\n top: 50%;\n right: 8px;\n transform: translateY(-50%);\n\n display: flex;\n gap: 8px;\n"]))),Ke=c.default.span($||($=v(["\n user-select: none;\n\n ","\n"])),Ae(function(e){return[e.typography(14).preserveHalfLeading,e.font.text2]})),Qe=c.default.input(K||(K=v(["\n border: none;\n box-sizing: border-box;\n outline: none;\n font-family: inherit;\n\n /* Prevent zooming for iOS Safari */\n transform-origin: top left;\n transform: scale(0.875);\n width: calc(100% / 0.875);\n height: calc(100% / 0.875);\n font-size: calc(14px / 0.875);\n line-height: calc(22px / 0.875);\n padding-left: calc((8px + ","px) / 0.875);\n padding-right: calc((8px + ","px) / 0.875);\n border-radius: calc(4px / 0.875);\n\n /* Display box-shadow for iOS Safari */\n appearance: none;\n\n ","\n\n &::placeholder {\n ","\n }\n"])),function(e){return e.extraLeftPadding},function(e){return e.extraRightPadding},function(e){return Ae(function(n){return[n.bg.surface3.hover,n.outline.default.focus,e.invalid&&n.outline.assertive,n.font.text2]})},Ae(function(e){return e.font.text3})),We=c.default.div(Q||(Q=v(["\n position: relative;\n overflow: hidden;\n padding: 0 8px;\n\n ","\n\n &:focus-within {\n ","\n }\n\n ",";\n"])),function(e){return Ae(function(n){return[n.bg.surface3.hover,e.invalid&&n.outline.assertive,n.font.text2,n.borderRadius(4)]})},function(e){return Ae(function(n){return e.invalid?n.outline.assertive:n.outline.default})},function(e){var t=e.rows;return n.css(W||(W=v(["\n height: calc(22px * "," + 18px);\n "])),t)}),Ze=c.default.textarea(Z||(Z=v(["\n border: none;\n outline: none;\n resize: none;\n font-family: inherit;\n color: inherit;\n\n /* Prevent zooming for iOS Safari */\n transform-origin: top left;\n transform: scale(0.875);\n width: calc(100% / 0.875);\n font-size: calc(14px / 0.875);\n line-height: calc(22px / 0.875);\n padding: calc(9px / 0.875) 0 ",";\n\n ",";\n\n /* Display box-shadow for iOS Safari */\n appearance: none;\n\n background: none;\n\n &::placeholder {\n ","\n }\n\n /* Hide scrollbar for Chrome, Safari and Opera */\n &::-webkit-scrollbar {\n display: none;\n }\n /* Hide scrollbar for IE, Edge and Firefox */\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n"])),function(e){return e.noBottomPadding?0:""},function(e){var t=e.rows,r=void 0===t?1:t;return n.css(_||(_=v(["\n height: calc(22px / 0.875 * ",");\n "])),r)},Ae(function(e){return e.font.text3})),_e=c.default.span(ee||(ee=v(["\n ","\n"])),Ae(function(e){return[e.typography(14).preserveHalfLeading,e.font.text3]})),en=c.default.span(ne||(ne=v(["\n position: absolute;\n bottom: 9px;\n right: 8px;\n\n ","\n"])),Ae(function(e){return[e.typography(14).preserveHalfLeading,e.font.text3]})),nn=c.default.p(te||(te=v(["\n ","\n"])),function(e){return Ae(function(n){return[n.typography(14),n.margin.top(8),n.margin.bottom(0),n.font[e.invalid?"assertive":"text1"]]})}),tn=["name","scale","unsafeNonGuidelineScale","className"],rn=s.default.forwardRef(function(e,n){var t=e.name,r=e.scale,a=e.unsafeNonGuidelineScale,i=e.className,o=h(e,tn);/*#__PURE__*/return s.default.createElement("pixiv-icon",p({ref:n,name:t,scale:r,"unsafe-non-guideline-scale":a,class:i},o))});exports.Button=se,exports.Clickable=ie,exports.ComponentAbstraction=function(e){var n=e.children;/*#__PURE__*/return s.default.createElement(y.Provider,{value:p({},x,e.components)},n)},exports.Icon=rn,exports.IconButton=pe,exports.Radio=function(n){var t=n.value,r=n.forceChecked,a=void 0!==r&&r,i=n.disabled,o=void 0!==i&&i,l=n.children,u=e.useContext(xe),d=u.name,c=u.selected,p=u.disabled,h=u.readonly,v=u.hasError,b=u.onChange;f.default(void 0!==d,'"name" is not Provided for <Radio>. Perhaps you forgot to wrap with <RadioGroup> ?');var g=t===c,m=o||p,x=h&&!g,y=e.useCallback(function(e){b(e.currentTarget.value)},[b]);/*#__PURE__*/return s.default.createElement(ve,{"aria-disabled":m||x},/*#__PURE__*/s.default.createElement(be,{name:d,value:t,checked:a||g,hasError:v,onChange:y,disabled:m||x}),null!=l&&/*#__PURE__*/s.default.createElement(ge,null,l))},exports.RadioGroup=function(n){var t=n.className,r=n.value,a=n.label,i=n.name,o=n.onChange,l=n.disabled,u=n.readonly,d=n.hasError,c=n.children,f=e.useCallback(function(e){o(e)},[o]);/*#__PURE__*/return s.default.createElement(xe.Provider,{value:{name:i,selected:r,disabled:null!=l&&l,readonly:null!=u&&u,hasError:null!=d&&d,onChange:f}},/*#__PURE__*/s.default.createElement(me,{role:"radiogroup","aria-orientation":"vertical","aria-label":a,"aria-invalid":d,className:t},c))},exports.Select=function(n){var t=n.value,r=n.forceChecked,a=void 0!==r&&r,i=n.disabled,o=void 0!==i&&i,l=n.onChange,u=n.variant,d=void 0===u?"default":u,c=n.children,p=e.useContext(ye),h=p.name,v=p.selected,b=p.disabled,g=p.readonly,m=p.hasError,x=p.onChange;f.default(void 0!==h,'"name" is not Provided for <Select>. Perhaps you forgot to wrap with <SelectGroup> ?');var y=v.includes(t)||a,w=o||b||g,E=e.useCallback(function(e){e.currentTarget instanceof HTMLInputElement&&(l&&l({value:t,selected:e.currentTarget.checked}),x({value:t,selected:e.currentTarget.checked}))},[l,x,t]);/*#__PURE__*/return s.default.createElement(we,{"aria-disabled":w},/*#__PURE__*/s.default.createElement(ke,{name:h,value:t,hasError:m,checked:y,disabled:w,onChange:E,overlay:"overlay"===d,"aria-invalid":m}),/*#__PURE__*/s.default.createElement(Ce,{overlay:"overlay"===d,hasError:m,"aria-hidden":!0},/*#__PURE__*/s.default.createElement("pixiv-icon",{name:"24/Check","unsafe-non-guideline-scale":16/24})),Boolean(c)&&/*#__PURE__*/s.default.createElement(Ee,null,c))},exports.SelectGroup=function(n){var t=n.className,r=n.name,a=n.ariaLabel,i=n.selected,o=n.onChange,l=n.disabled,u=void 0!==l&&l,d=n.readonly,c=void 0!==d&&d,f=n.hasError,p=void 0!==f&&f,h=n.children,v=e.useCallback(function(e){var n=i.indexOf(e.value);e.selected?n<0&&o([].concat(i,[e.value])):n>=0&&o([].concat(i.slice(0,n),i.slice(n+1)))},[o,i]);/*#__PURE__*/return s.default.createElement(ye.Provider,{value:{name:r,selected:Array.from(new Set(i)),disabled:u,readonly:c,hasError:p,onChange:v}},/*#__PURE__*/s.default.createElement("div",{className:t,"aria-label":a,"data-testid":"SelectGroup"},h))},exports.Switch=function(n){var t=n.disabled,r=n.className,a=e.useMemo(function(){return p({},n,{"aria-label":"children"in n?void 0:n.label,isDisabled:n.disabled,isSelected:n.checked})},[n]),l=o.useToggleState(a),u=e.useRef(null),d=h(i.useSwitch(a,l,u).inputProps,Se);/*#__PURE__*/return s.default.createElement(Re,{className:r,"aria-disabled":t},/*#__PURE__*/s.default.createElement(qe,p({},d,{ref:u})),"children"in n?/*#__PURE__*/s.default.createElement(Pe,null,n.children):void 0)},exports.TextField=Ge,exports.useComponentAbstraction=w;
1
+ var React = require('react');
2
+ var ssr = require('@react-aria/ssr');
3
+ var styled$1 = require('styled-components');
4
+ var styled = require('@charcoal-ui/styled');
5
+ var utils = require('@charcoal-ui/utils');
6
+ var warning = require('warning');
7
+ var _switch = require('@react-aria/switch');
8
+ var reactStately = require('react-stately');
9
+ var textfield = require('@react-aria/textfield');
10
+ var visuallyHidden = require('@react-aria/visually-hidden');
11
+ require('@charcoal-ui/icons');
12
+
13
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
+
15
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
16
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled$1);
17
+ var warning__default = /*#__PURE__*/_interopDefaultLegacy(warning);
18
+
19
+ function _extends() {
20
+ _extends = Object.assign || function (target) {
21
+ for (var i = 1; i < arguments.length; i++) {
22
+ var source = arguments[i];
23
+
24
+ for (var key in source) {
25
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
26
+ target[key] = source[key];
27
+ }
28
+ }
29
+ }
30
+
31
+ return target;
32
+ };
33
+
34
+ return _extends.apply(this, arguments);
35
+ }
36
+
37
+ function _objectWithoutPropertiesLoose(source, excluded) {
38
+ if (source == null) return {};
39
+ var target = {};
40
+ var sourceKeys = Object.keys(source);
41
+ var key, i;
42
+
43
+ for (i = 0; i < sourceKeys.length; i++) {
44
+ key = sourceKeys[i];
45
+ if (excluded.indexOf(key) >= 0) continue;
46
+ target[key] = source[key];
47
+ }
48
+
49
+ return target;
50
+ }
51
+
52
+ function _taggedTemplateLiteralLoose(strings, raw) {
53
+ if (!raw) {
54
+ raw = strings.slice(0);
55
+ }
56
+
57
+ strings.raw = raw;
58
+ return strings;
59
+ }
60
+
61
+ function _unsupportedIterableToArray(o, minLen) {
62
+ if (!o) return;
63
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
64
+ var n = Object.prototype.toString.call(o).slice(8, -1);
65
+ if (n === "Object" && o.constructor) n = o.constructor.name;
66
+ if (n === "Map" || n === "Set") return Array.from(o);
67
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
68
+ }
69
+
70
+ function _arrayLikeToArray(arr, len) {
71
+ if (len == null || len > arr.length) len = arr.length;
72
+
73
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
74
+
75
+ return arr2;
76
+ }
77
+
78
+ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
79
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
80
+ if (it) return (it = it.call(o)).next.bind(it);
81
+
82
+ if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
83
+ if (it) o = it;
84
+ var i = 0;
85
+ return function () {
86
+ if (i >= o.length) return {
87
+ done: true
88
+ };
89
+ return {
90
+ done: false,
91
+ value: o[i++]
92
+ };
93
+ };
94
+ }
95
+
96
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
97
+ }
98
+
99
+ var _excluded$7 = ["to", "children"];
100
+ var DefaultLink = React__default["default"].forwardRef(function DefaultLink(_ref, ref) {
101
+ var to = _ref.to,
102
+ children = _ref.children,
103
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
104
+
105
+ return /*#__PURE__*/React__default["default"].createElement("a", _extends({
106
+ href: to,
107
+ ref: ref
108
+ }, rest), children);
109
+ });
110
+ var DefaultValue = {
111
+ Link: DefaultLink
112
+ };
113
+ var ComponentAbstractionContext = React__default["default"].createContext(DefaultValue);
114
+ function ComponentAbstraction(_ref2) {
115
+ var children = _ref2.children,
116
+ components = _ref2.components;
117
+ return /*#__PURE__*/React__default["default"].createElement(ComponentAbstractionContext.Provider, {
118
+ value: _extends({}, DefaultValue, components)
119
+ }, children);
120
+ }
121
+ function useComponentAbstraction() {
122
+ return React.useContext(ComponentAbstractionContext);
123
+ }
124
+
125
+ /**
126
+ * 今後ポートされる予定の汎用的な関数群
127
+ */
128
+ function unreachable(value) {
129
+ throw new Error(arguments.length === 0 ? 'unreachable' : "unreachable (" + JSON.stringify(value) + ")");
130
+ }
131
+
132
+ var theme$2 = styled.createTheme(styled__default["default"]);
133
+
134
+ var _templateObject$7, _templateObject2$5, _templateObject3$5;
135
+
136
+ var _excluded$6 = ["onClick", "disabled"];
137
+ var Clickable = React__default["default"].forwardRef(function Clickable(props, ref) {
138
+ var _useComponentAbstract = useComponentAbstraction(),
139
+ Link = _useComponentAbstract.Link;
140
+
141
+ if ('to' in props) {
142
+ var onClick = props.onClick,
143
+ _props$disabled = props.disabled,
144
+ disabled = _props$disabled === void 0 ? false : _props$disabled,
145
+ rest = _objectWithoutPropertiesLoose(props, _excluded$6);
146
+
147
+ return /*#__PURE__*/React__default["default"].createElement(A, _extends({}, rest, {
148
+ as: disabled ? undefined : Link,
149
+ onClick: disabled ? undefined : onClick,
150
+ "aria-disabled": disabled,
151
+ ref: ref
152
+ }));
153
+ } else {
154
+ return /*#__PURE__*/React__default["default"].createElement(Button$1, _extends({}, props, {
155
+ ref: ref
156
+ }));
157
+ }
158
+ });
159
+ var clickableCss = styled$1.css(_templateObject$7 || (_templateObject$7 = _taggedTemplateLiteralLoose(["\n /* Clickable style */\n cursor: pointer;\n\n ", " {\n cursor: default;\n }\n"])), utils.disabledSelector);
160
+ var Button$1 = styled__default["default"].button(_templateObject2$5 || (_templateObject2$5 = _taggedTemplateLiteralLoose(["\n /* Reset button appearance */\n appearance: none;\n background: transparent;\n padding: 0;\n border-style: none;\n outline: none;\n color: inherit;\n text-rendering: inherit;\n letter-spacing: inherit;\n word-spacing: inherit;\n\n &:focus {\n outline: none;\n }\n\n /* Change the font styles in all browsers. */\n font: inherit;\n\n /* Remove the margin in Firefox and Safari. */\n margin: 0;\n\n /* Show the overflow in Edge. */\n overflow: visible;\n\n /* Remove the inheritance of text transform in Firefox. */\n text-transform: none;\n\n /* Remove the inner border and padding in Firefox. */\n &::-moz-focus-inner {\n border-style: none;\n padding: 0;\n }\n\n ", "\n"])), clickableCss);
161
+ var A = styled__default["default"].span(_templateObject3$5 || (_templateObject3$5 = _taggedTemplateLiteralLoose(["\n /* Reset a-tag appearance */\n color: inherit;\n\n &:focus {\n outline: none;\n }\n\n .text {\n top: calc(1em + 2em);\n }\n\n ", "\n"])), clickableCss);
162
+
163
+ var _templateObject$6;
164
+
165
+ var _excluded$5 = ["children", "variant", "size", "fixed", "disabled"];
166
+ var Button = React__default["default"].forwardRef(function Button(_ref, ref) {
167
+ var children = _ref.children,
168
+ _ref$variant = _ref.variant,
169
+ variant = _ref$variant === void 0 ? 'Default' : _ref$variant,
170
+ _ref$size = _ref.size,
171
+ size = _ref$size === void 0 ? 'M' : _ref$size,
172
+ _ref$fixed = _ref.fixed,
173
+ fixed = _ref$fixed === void 0 ? false : _ref$fixed,
174
+ _ref$disabled = _ref.disabled,
175
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
176
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
177
+
178
+ return /*#__PURE__*/React__default["default"].createElement(StyledButton, _extends({}, rest, {
179
+ disabled: disabled,
180
+ variant: variant,
181
+ size: size,
182
+ fixed: fixed,
183
+ ref: ref
184
+ }), children);
185
+ });
186
+ var StyledButton = styled__default["default"](Clickable).withConfig({
187
+ shouldForwardProp: function shouldForwardProp(prop) {
188
+ // fixed は <button> 要素に渡ってはいけない
189
+ return prop !== 'fixed';
190
+ }
191
+ }).attrs(styledProps$1)(_templateObject$6 || (_templateObject$6 = _taggedTemplateLiteralLoose(["\n width: ", ";\n display: inline-grid;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n\n ", "\n\n /* \u3088\u304F\u8003\u3048\u305F\u3089height=32\u3063\u3066\u5B9A\u7FA9\u304C\u5B58\u5728\u3057\u306A\u3044\u306A... */\n height: ", "px;\n"])), function (p) {
192
+ return p.fixed ? 'stretch' : 'min-content';
193
+ }, function (p) {
194
+ return theme$2(function (o) {
195
+ return [o.font[p.font].hover.press, o.bg[p.background].hover.press, o.typography(14).bold.preserveHalfLeading, o.padding.horizontal(p.padding), o.disabled, o.borderRadius('oval'), o.outline["default"].focus];
196
+ });
197
+ }, function (p) {
198
+ return p.height;
199
+ });
200
+
201
+ function styledProps$1(props) {
202
+ return _extends({}, props, variantToProps$1(props.variant), sizeToProps$1(props.size));
203
+ }
204
+
205
+ function variantToProps$1(variant) {
206
+ switch (variant) {
207
+ case 'Overlay':
208
+ return {
209
+ font: 'text5',
210
+ background: 'surface4'
211
+ };
212
+
213
+ case 'Default':
214
+ return {
215
+ font: 'text2',
216
+ background: 'surface3'
217
+ };
218
+
219
+ case 'Primary':
220
+ return {
221
+ font: 'text5',
222
+ background: 'brand'
223
+ };
224
+
225
+ case 'Navigation':
226
+ return {
227
+ font: 'text5',
228
+ background: 'surface6'
229
+ };
230
+
231
+ case 'Danger':
232
+ return {
233
+ font: 'text5',
234
+ background: 'assertive'
235
+ };
236
+
237
+ default:
238
+ return unreachable(variant);
239
+ }
240
+ }
241
+
242
+ function sizeToProps$1(size) {
243
+ switch (size) {
244
+ case 'S':
245
+ return {
246
+ height: 32,
247
+ padding: 16
248
+ };
249
+
250
+ case 'M':
251
+ return {
252
+ height: 40,
253
+ padding: 24
254
+ };
255
+ }
256
+ }
257
+
258
+ var _templateObject$5;
259
+
260
+ var _excluded$4 = ["variant", "size", "icon"];
261
+ var IconButton = React__default["default"].forwardRef(function IconButtonInner(_ref, ref) {
262
+ var _ref$variant = _ref.variant,
263
+ variant = _ref$variant === void 0 ? 'Default' : _ref$variant,
264
+ _ref$size = _ref.size,
265
+ size = _ref$size === void 0 ? 'M' : _ref$size,
266
+ icon = _ref.icon,
267
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
268
+
269
+ validateIconSize(size, icon);
270
+ return /*#__PURE__*/React__default["default"].createElement(StyledIconButton, _extends({}, rest, {
271
+ ref: ref,
272
+ variant: variant,
273
+ size: size
274
+ }), /*#__PURE__*/React__default["default"].createElement("pixiv-icon", {
275
+ name: icon
276
+ }));
277
+ });
278
+ var StyledIconButton = styled__default["default"](Clickable).attrs(styledProps)(_templateObject$5 || (_templateObject$5 = _taggedTemplateLiteralLoose(["\n user-select: none;\n\n width: ", "px;\n height: ", "px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ", "\n"])), function (p) {
279
+ return p.width;
280
+ }, function (p) {
281
+ return p.height;
282
+ }, function (_ref2) {
283
+ var font = _ref2.font,
284
+ background = _ref2.background;
285
+ return theme$2(function (o) {
286
+ return [o.font[font], o.bg[background].hover.press, o.disabled, o.borderRadius('oval'), o.outline["default"].focus];
287
+ });
288
+ });
289
+
290
+ function styledProps(props) {
291
+ return _extends({}, props, variantToProps(props.variant), sizeToProps(props.size));
292
+ }
293
+
294
+ function variantToProps(variant) {
295
+ switch (variant) {
296
+ case 'Default':
297
+ return {
298
+ font: 'text3',
299
+ background: 'transparent'
300
+ };
301
+
302
+ case 'Overlay':
303
+ return {
304
+ font: 'text5',
305
+ background: 'surface4'
306
+ };
307
+ }
308
+ }
309
+
310
+ function sizeToProps(size) {
311
+ switch (size) {
312
+ case 'XS':
313
+ return {
314
+ width: 20,
315
+ height: 20
316
+ };
317
+
318
+ case 'S':
319
+ return {
320
+ width: 32,
321
+ height: 32
322
+ };
323
+
324
+ case 'M':
325
+ return {
326
+ width: 40,
327
+ height: 40
328
+ };
329
+ }
330
+ }
331
+ /**
332
+ * validates matches of size and icon
333
+ */
334
+
335
+
336
+ function validateIconSize(size, icon) {
337
+ var requiredIconSize;
338
+
339
+ switch (size) {
340
+ case 'XS':
341
+ requiredIconSize = '16';
342
+ break;
343
+
344
+ case 'S':
345
+ case 'M':
346
+ requiredIconSize = '24';
347
+ break;
348
+ } // アイコン名は サイズ/名前
349
+
350
+
351
+ var result = /^[0-9]*/.exec(icon);
352
+
353
+ if (result == null) {
354
+ throw new Error('Invalid icon name');
355
+ }
356
+
357
+ var iconSize = result[0];
358
+
359
+ if (iconSize !== requiredIconSize) {
360
+ // eslint-disable-next-line no-console
361
+ console.warn("IconButton with size \"" + size + "\" expect icon size \"" + requiredIconSize + ", but got \"" + iconSize + "\"");
362
+ }
363
+ }
364
+
365
+ var _templateObject$4, _templateObject2$4, _templateObject3$4, _templateObject4$3;
366
+ function Radio(_ref) {
367
+ var value = _ref.value,
368
+ _ref$forceChecked = _ref.forceChecked,
369
+ forceChecked = _ref$forceChecked === void 0 ? false : _ref$forceChecked,
370
+ _ref$disabled = _ref.disabled,
371
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
372
+ children = _ref.children;
373
+
374
+ var _useContext = React.useContext(RadioGroupContext),
375
+ name = _useContext.name,
376
+ selected = _useContext.selected,
377
+ isParentDisabled = _useContext.disabled,
378
+ readonly = _useContext.readonly,
379
+ hasError = _useContext.hasError,
380
+ onChange = _useContext.onChange;
381
+
382
+ warning__default["default"]( // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
383
+ name !== undefined, "\"name\" is not Provided for <Radio>. Perhaps you forgot to wrap with <RadioGroup> ?");
384
+ var isSelected = value === selected;
385
+ var isDisabled = disabled || isParentDisabled;
386
+ var isReadonly = readonly && !isSelected;
387
+ var handleChange = React.useCallback(function (e) {
388
+ onChange(e.currentTarget.value);
389
+ }, [onChange]);
390
+ return /*#__PURE__*/React__default["default"].createElement(RadioRoot, {
391
+ "aria-disabled": isDisabled || isReadonly
392
+ }, /*#__PURE__*/React__default["default"].createElement(RadioInput, {
393
+ name: name,
394
+ value: value,
395
+ checked: forceChecked || isSelected,
396
+ hasError: hasError,
397
+ onChange: handleChange,
398
+ disabled: isDisabled || isReadonly
399
+ }), children != null && /*#__PURE__*/React__default["default"].createElement(RadioLabel, null, children));
400
+ }
401
+ var RadioRoot = styled__default["default"].label(_templateObject$4 || (_templateObject$4 = _taggedTemplateLiteralLoose(["\n display: grid;\n grid-template-columns: auto 1fr;\n grid-gap: ", ";\n align-items: center;\n cursor: pointer;\n\n ", "\n"])), function (_ref2) {
402
+ var theme = _ref2.theme;
403
+ return utils.px(theme.spacing[4]);
404
+ }, theme$2(function (o) {
405
+ return [o.disabled];
406
+ }));
407
+ var RadioInput = styled__default["default"].input.attrs({
408
+ type: 'radio'
409
+ })(_templateObject2$4 || (_templateObject2$4 = _taggedTemplateLiteralLoose(["\n /** Make prior to browser default style */\n &[type='radio'] {\n appearance: none;\n display: block;\n box-sizing: border-box;\n\n padding: 6px;\n\n width: 20px;\n height: 20px;\n\n ", ";\n\n &:not(:checked) {\n border-width: 2px;\n border-style: solid;\n border-color: ", ";\n }\n\n &:checked {\n ", "\n\n &::after {\n content: '';\n display: block;\n width: 8px;\n height: 8px;\n pointer-events: none;\n\n ", "\n }\n }\n\n ", "\n }\n"])), function (_ref3) {
410
+ var _ref3$hasError = _ref3.hasError,
411
+ hasError = _ref3$hasError === void 0 ? false : _ref3$hasError;
412
+ return theme$2(function (o) {
413
+ return [o.borderRadius('oval'), o.bg.text5.hover.press, hasError && o.outline.assertive];
414
+ });
415
+ }, function (_ref4) {
416
+ var theme = _ref4.theme;
417
+ return theme.color.text4;
418
+ }, theme$2(function (o) {
419
+ return o.bg.brand.hover.press;
420
+ }), theme$2(function (o) {
421
+ return [o.bg.text5.hover.press, o.borderRadius('oval')];
422
+ }), theme$2(function (o) {
423
+ return o.outline["default"].focus;
424
+ }));
425
+ var RadioLabel = styled__default["default"].div(_templateObject3$4 || (_templateObject3$4 = _taggedTemplateLiteralLoose(["\n ", "\n"])), theme$2(function (o) {
426
+ return [o.typography(14)];
427
+ })); // TODO: use (or polyfill) flex gap
428
+
429
+ var StyledRadioGroup = styled__default["default"].div(_templateObject4$3 || (_templateObject4$3 = _taggedTemplateLiteralLoose(["\n display: grid;\n grid-template-columns: 1fr;\n grid-gap: ", ";\n"])), function (_ref5) {
430
+ var theme = _ref5.theme;
431
+ return utils.px(theme.spacing[8]);
432
+ });
433
+ var RadioGroupContext = React__default["default"].createContext({
434
+ name: undefined,
435
+ selected: undefined,
436
+ disabled: false,
437
+ readonly: false,
438
+ hasError: false,
439
+ onChange: function onChange() {
440
+ throw new Error('Cannot find onChange() handler. Perhaps you forgot to wrap with <RadioGroup> ?');
441
+ }
442
+ });
443
+ function RadioGroup(_ref6) {
444
+ var className = _ref6.className,
445
+ value = _ref6.value,
446
+ label = _ref6.label,
447
+ name = _ref6.name,
448
+ onChange = _ref6.onChange,
449
+ disabled = _ref6.disabled,
450
+ readonly = _ref6.readonly,
451
+ hasError = _ref6.hasError,
452
+ children = _ref6.children;
453
+ var handleChange = React.useCallback(function (next) {
454
+ onChange(next);
455
+ }, [onChange]);
456
+ return /*#__PURE__*/React__default["default"].createElement(RadioGroupContext.Provider, {
457
+ value: {
458
+ name: name,
459
+ selected: value,
460
+ disabled: disabled != null ? disabled : false,
461
+ readonly: readonly != null ? readonly : false,
462
+ hasError: hasError != null ? hasError : false,
463
+ onChange: handleChange
464
+ }
465
+ }, /*#__PURE__*/React__default["default"].createElement(StyledRadioGroup, {
466
+ role: "radiogroup",
467
+ "aria-orientation": "vertical",
468
+ "aria-label": label,
469
+ "aria-invalid": hasError,
470
+ className: className
471
+ }, children));
472
+ }
473
+
474
+ var SelectGroupContext = React.createContext({
475
+ name: undefined,
476
+ selected: [],
477
+ disabled: false,
478
+ readonly: false,
479
+ hasError: false,
480
+ onChange: function onChange() {
481
+ throw new Error('Cannot find `onChange()` handler. Perhaps you forgot to wrap it with `<SelectGroup />` ?');
482
+ }
483
+ });
484
+
485
+ var _templateObject$3, _templateObject2$3, _templateObject3$3, _templateObject4$2, _templateObject5$1;
486
+ function Select(_ref) {
487
+ var value = _ref.value,
488
+ _ref$forceChecked = _ref.forceChecked,
489
+ forceChecked = _ref$forceChecked === void 0 ? false : _ref$forceChecked,
490
+ _ref$disabled = _ref.disabled,
491
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
492
+ onChange = _ref.onChange,
493
+ _ref$variant = _ref.variant,
494
+ variant = _ref$variant === void 0 ? 'default' : _ref$variant,
495
+ children = _ref.children;
496
+
497
+ var _useContext = React.useContext(SelectGroupContext),
498
+ name = _useContext.name,
499
+ selected = _useContext.selected,
500
+ parentDisabled = _useContext.disabled,
501
+ readonly = _useContext.readonly,
502
+ hasError = _useContext.hasError,
503
+ parentOnChange = _useContext.onChange;
504
+
505
+ warning__default["default"]( // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
506
+ name !== undefined, "\"name\" is not Provided for <Select>. Perhaps you forgot to wrap with <SelectGroup> ?");
507
+ var isSelected = selected.includes(value) || forceChecked;
508
+ var isDisabled = disabled || parentDisabled || readonly;
509
+ var handleChange = React.useCallback(function (event) {
510
+ if (!(event.currentTarget instanceof HTMLInputElement)) {
511
+ return;
512
+ }
513
+
514
+ if (onChange) onChange({
515
+ value: value,
516
+ selected: event.currentTarget.checked
517
+ });
518
+ parentOnChange({
519
+ value: value,
520
+ selected: event.currentTarget.checked
521
+ });
522
+ }, [onChange, parentOnChange, value]);
523
+ return /*#__PURE__*/React__default["default"].createElement(SelectRoot, {
524
+ "aria-disabled": isDisabled
525
+ }, /*#__PURE__*/React__default["default"].createElement(SelectInput, {
526
+ name: name,
527
+ value: value,
528
+ hasError: hasError,
529
+ checked: isSelected,
530
+ disabled: isDisabled,
531
+ onChange: handleChange,
532
+ overlay: variant === 'overlay',
533
+ "aria-invalid": hasError
534
+ }), /*#__PURE__*/React__default["default"].createElement(SelectInputOverlay, {
535
+ overlay: variant === 'overlay',
536
+ hasError: hasError,
537
+ "aria-hidden": true
538
+ }, /*#__PURE__*/React__default["default"].createElement("pixiv-icon", {
539
+ name: "24/Check",
540
+ "unsafe-non-guideline-scale": 16 / 24
541
+ })), Boolean(children) && /*#__PURE__*/React__default["default"].createElement(SelectLabel, null, children));
542
+ }
543
+ var SelectRoot = styled__default["default"].label(_templateObject$3 || (_templateObject$3 = _taggedTemplateLiteralLoose(["\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: center;\n position: relative;\n cursor: pointer;\n ", " {\n cursor: default;\n }\n gap: ", ";\n ", "\n"])), utils.disabledSelector, function (_ref2) {
544
+ var theme = _ref2.theme;
545
+ return utils.px(theme.spacing[4]);
546
+ }, theme$2(function (o) {
547
+ return o.disabled;
548
+ }));
549
+ var SelectLabel = styled__default["default"].div(_templateObject2$3 || (_templateObject2$3 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n ", "\n"])), theme$2(function (o) {
550
+ return [o.typography(14), o.font.text1];
551
+ }));
552
+ var SelectInput = styled__default["default"].input.attrs({
553
+ type: 'checkbox'
554
+ })(_templateObject3$3 || (_templateObject3$3 = _taggedTemplateLiteralLoose(["\n &[type='checkbox'] {\n appearance: none;\n display: block;\n width: 20px;\n height: 20px;\n margin: 0;\n\n &:checked {\n ", "\n }\n\n ", ";\n }\n"])), theme$2(function (o) {
555
+ return o.bg.brand.hover.press;
556
+ }), function (_ref3) {
557
+ var hasError = _ref3.hasError,
558
+ overlay = _ref3.overlay;
559
+ return theme$2(function (o) {
560
+ return [o.bg.text3.hover.press, o.borderRadius('oval'), hasError && !overlay && o.outline.assertive, overlay && o.bg.surface4];
561
+ });
562
+ });
563
+ var SelectInputOverlay = styled__default["default"].div(_templateObject4$2 || (_templateObject4$2 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: -2px;\n left: -2px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ", "\n\n ", "\n"])), function (_ref4) {
564
+ var hasError = _ref4.hasError,
565
+ overlay = _ref4.overlay;
566
+ return theme$2(function (o) {
567
+ return [o.width.px(24), o.height.px(24), o.borderRadius('oval'), o.font.text5, hasError && overlay && o.outline.assertive];
568
+ });
569
+ }, function (_ref5) {
570
+ var overlay = _ref5.overlay;
571
+ return overlay && styled$1.css(_templateObject5$1 || (_templateObject5$1 = _taggedTemplateLiteralLoose(["\n border-color: ", ";\n border-width: 2px;\n border-style: solid;\n "])), function (_ref6) {
572
+ var theme = _ref6.theme;
573
+ return theme.color.text5;
574
+ });
575
+ });
576
+ function SelectGroup(_ref7) {
577
+ var className = _ref7.className,
578
+ name = _ref7.name,
579
+ ariaLabel = _ref7.ariaLabel,
580
+ selected = _ref7.selected,
581
+ onChange = _ref7.onChange,
582
+ _ref7$disabled = _ref7.disabled,
583
+ disabled = _ref7$disabled === void 0 ? false : _ref7$disabled,
584
+ _ref7$readonly = _ref7.readonly,
585
+ readonly = _ref7$readonly === void 0 ? false : _ref7$readonly,
586
+ _ref7$hasError = _ref7.hasError,
587
+ hasError = _ref7$hasError === void 0 ? false : _ref7$hasError,
588
+ children = _ref7.children;
589
+ var handleChange = React.useCallback(function (payload) {
590
+ var index = selected.indexOf(payload.value);
591
+
592
+ if (payload.selected) {
593
+ if (index < 0) {
594
+ onChange([].concat(selected, [payload.value]));
595
+ }
596
+ } else {
597
+ if (index >= 0) {
598
+ onChange([].concat(selected.slice(0, index), selected.slice(index + 1)));
599
+ }
600
+ }
601
+ }, [onChange, selected]);
602
+ return /*#__PURE__*/React__default["default"].createElement(SelectGroupContext.Provider, {
603
+ value: {
604
+ name: name,
605
+ selected: Array.from(new Set(selected)),
606
+ disabled: disabled,
607
+ readonly: readonly,
608
+ hasError: hasError,
609
+ onChange: handleChange
610
+ }
611
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
612
+ className: className,
613
+ "aria-label": ariaLabel,
614
+ "data-testid": "SelectGroup"
615
+ }, children));
616
+ }
617
+
618
+ var _templateObject$2, _templateObject2$2, _templateObject3$2;
619
+
620
+ var _excluded$3 = ["className", "type"];
621
+ function SwitchCheckbox(props) {
622
+ var disabled = props.disabled,
623
+ className = props.className;
624
+ var ariaSwitchProps = React.useMemo(function () {
625
+ return _extends({}, props, {
626
+ // children がいない場合は aria-label をつけないといけない
627
+ 'aria-label': 'children' in props ? undefined : props.label,
628
+ isDisabled: props.disabled,
629
+ isSelected: props.checked
630
+ });
631
+ }, [props]);
632
+ var state = reactStately.useToggleState(ariaSwitchProps);
633
+ var ref = React.useRef(null);
634
+
635
+ var _useSwitch = _switch.useSwitch(ariaSwitchProps, state, ref),
636
+ _useSwitch$inputProps = _useSwitch.inputProps,
637
+ rest = _objectWithoutPropertiesLoose(_useSwitch$inputProps, _excluded$3);
638
+
639
+ return /*#__PURE__*/React__default["default"].createElement(Label$1, {
640
+ className: className,
641
+ "aria-disabled": disabled
642
+ }, /*#__PURE__*/React__default["default"].createElement(SwitchInput, _extends({}, rest, {
643
+ ref: ref
644
+ })), 'children' in props ?
645
+ /*#__PURE__*/
646
+ // eslint-disable-next-line react/destructuring-assignment
647
+ React__default["default"].createElement(LabelInner, null, props.children) : undefined);
648
+ }
649
+ var Label$1 = styled__default["default"].label(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteralLoose(["\n display: inline-grid;\n grid-template-columns: auto 1fr;\n gap: ", ";\n cursor: pointer;\n outline: 0;\n\n ", "\n\n ", " {\n cursor: default;\n }\n"])), function (_ref) {
650
+ var theme = _ref.theme;
651
+ return utils.px(theme.spacing[4]);
652
+ }, theme$2(function (o) {
653
+ return o.disabled;
654
+ }), utils.disabledSelector);
655
+ var LabelInner = styled__default["default"].div(_templateObject2$2 || (_templateObject2$2 = _taggedTemplateLiteralLoose(["\n ", "\n"])), theme$2(function (o) {
656
+ return o.typography(14);
657
+ }));
658
+ var SwitchInput = styled__default["default"].input.attrs({
659
+ type: 'checkbox'
660
+ })(_templateObject3$2 || (_templateObject3$2 = _taggedTemplateLiteralLoose(["\n &[type='checkbox'] {\n appearance: none;\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n width: 28px;\n border: 2px solid transparent;\n transition: box-shadow 0.2s, background-color 0.2s;\n cursor: inherit;\n ", "\n\n &::after {\n content: '';\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n width: 12px;\n height: 12px;\n transform: translateX(0);\n transition: transform 0.2s;\n ", "\n }\n\n &:checked {\n ", "\n\n &::after {\n transform: translateX(12px);\n }\n }\n }\n"])), theme$2(function (o) {
661
+ return [o.borderRadius(16), o.height.px(16), o.bg.text4.hover.press, o.outline["default"].focus];
662
+ }), theme$2(function (o) {
663
+ return [o.bg.text5.hover.press, o.borderRadius('oval')];
664
+ }), theme$2(function (o) {
665
+ return o.bg.brand.hover.press;
666
+ }));
667
+
668
+ var _templateObject$1, _templateObject2$1, _templateObject3$1, _templateObject4$1;
669
+
670
+ var _excluded$2 = ["style", "className", "label", "required", "requiredText", "subLabel"];
671
+ var FieldLabel = React__default["default"].forwardRef(function FieldLabel(_ref, ref) {
672
+ var style = _ref.style,
673
+ className = _ref.className,
674
+ label = _ref.label,
675
+ _ref$required = _ref.required,
676
+ required = _ref$required === void 0 ? false : _ref$required,
677
+ requiredText = _ref.requiredText,
678
+ subLabel = _ref.subLabel,
679
+ labelProps = _objectWithoutPropertiesLoose(_ref, _excluded$2);
680
+
681
+ return /*#__PURE__*/React__default["default"].createElement(FieldLabelWrapper, {
682
+ style: style,
683
+ className: className
684
+ }, /*#__PURE__*/React__default["default"].createElement(Label, _extends({
685
+ ref: ref
686
+ }, labelProps), label), required && /*#__PURE__*/React__default["default"].createElement(RequiredText, null, requiredText), /*#__PURE__*/React__default["default"].createElement(SubLabelClickable, null, /*#__PURE__*/React__default["default"].createElement("span", null, subLabel)));
687
+ });
688
+ var theme$1 = styled.createTheme(styled__default["default"]);
689
+ var Label = styled__default["default"].label(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteralLoose(["\n ", "\n"])), theme$1(function (o) {
690
+ return [o.typography(14).bold, o.font.text1];
691
+ }));
692
+ var RequiredText = styled__default["default"].span(_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteralLoose(["\n ", "\n"])), theme$1(function (o) {
693
+ return [o.typography(14), o.font.text3];
694
+ }));
695
+ var SubLabelClickable = styled__default["default"].div(_templateObject3$1 || (_templateObject3$1 = _taggedTemplateLiteralLoose(["\n ", "\n"])), theme$1(function (o) {
696
+ return [o.typography(14), o.font.text3.hover.press, o.outline["default"].focus];
697
+ }));
698
+ var FieldLabelWrapper = styled__default["default"].div(_templateObject4$1 || (_templateObject4$1 = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n align-items: center;\n\n > ", " {\n ", "\n }\n\n > ", " {\n ", "\n }\n"])), RequiredText, theme$1(function (o) {
699
+ return o.margin.left(4);
700
+ }), SubLabelClickable, theme$1(function (o) {
701
+ return o.margin.left('auto');
702
+ }));
703
+
704
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14;
705
+
706
+ var _excluded$1 = ["onChange"],
707
+ _excluded2 = ["onChange"];
708
+ var theme = styled.createTheme(styled__default["default"]);
709
+
710
+ function mergeRefs() {
711
+ var _arguments = arguments;
712
+ return function (value) {
713
+ for (var _iterator = _createForOfIteratorHelperLoose([].slice.call(_arguments)), _step; !(_step = _iterator()).done;) {
714
+ var ref = _step.value;
715
+
716
+ if (typeof ref === 'function') {
717
+ ref(value);
718
+ } else if (ref !== null) {
719
+ ref.current = value;
720
+ }
721
+ }
722
+ };
723
+ }
724
+
725
+ function countCodePointsInString(string) {
726
+ // [...string] とするとproduction buildで動かなくなる
727
+ // cf. https://twitter.com/f_subal/status/1497214727511891972
728
+ return Array.from(string).length;
729
+ }
730
+
731
+ var TextField = React__default["default"].forwardRef(function TextField(props, ref) {
732
+ return props.multiline !== undefined && props.multiline ? /*#__PURE__*/React__default["default"].createElement(MultiLineTextField, _extends({
733
+ ref: ref
734
+ }, props)) : /*#__PURE__*/React__default["default"].createElement(SingleLineTextField, _extends({
735
+ ref: ref
736
+ }, props));
737
+ });
738
+ var SingleLineTextField = React__default["default"].forwardRef(function SingleLineTextFieldInner(_ref, forwardRef) {
739
+ var _props$value;
740
+
741
+ var onChange = _ref.onChange,
742
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$1);
743
+
744
+ var className = props.className,
745
+ _props$showLabel = props.showLabel,
746
+ showLabel = _props$showLabel === void 0 ? false : _props$showLabel,
747
+ _props$showCount = props.showCount,
748
+ showCount = _props$showCount === void 0 ? false : _props$showCount,
749
+ label = props.label,
750
+ requiredText = props.requiredText,
751
+ subLabel = props.subLabel,
752
+ _props$disabled = props.disabled,
753
+ disabled = _props$disabled === void 0 ? false : _props$disabled,
754
+ required = props.required,
755
+ _props$invalid = props.invalid,
756
+ invalid = _props$invalid === void 0 ? false : _props$invalid,
757
+ assistiveText = props.assistiveText,
758
+ maxLength = props.maxLength,
759
+ _props$prefix = props.prefix,
760
+ prefix = _props$prefix === void 0 ? null : _props$prefix,
761
+ _props$suffix = props.suffix,
762
+ suffix = _props$suffix === void 0 ? null : _props$suffix;
763
+
764
+ var _useVisuallyHidden = visuallyHidden.useVisuallyHidden(),
765
+ visuallyHiddenProps = _useVisuallyHidden.visuallyHiddenProps;
766
+
767
+ var ariaRef = React.useRef(null);
768
+ var prefixRef = React.useRef(null);
769
+ var suffixRef = React.useRef(null);
770
+
771
+ var _useState = React.useState(countCodePointsInString((_props$value = props.value) != null ? _props$value : '')),
772
+ count = _useState[0],
773
+ setCount = _useState[1];
774
+
775
+ var _useState2 = React.useState(0),
776
+ prefixWidth = _useState2[0],
777
+ setPrefixWidth = _useState2[1];
778
+
779
+ var _useState3 = React.useState(0),
780
+ suffixWidth = _useState3[0],
781
+ setSuffixWidth = _useState3[1];
782
+
783
+ var nonControlled = props.value === undefined;
784
+ var handleChange = React.useCallback(function (value) {
785
+ var count = countCodePointsInString(value);
786
+
787
+ if (maxLength !== undefined && count > maxLength) {
788
+ return;
789
+ }
790
+
791
+ if (nonControlled) {
792
+ setCount(count);
793
+ }
794
+
795
+ onChange == null ? void 0 : onChange(value);
796
+ }, [maxLength, nonControlled, onChange]);
797
+ React.useEffect(function () {
798
+ var _props$value2;
799
+
800
+ setCount(countCodePointsInString((_props$value2 = props.value) != null ? _props$value2 : ''));
801
+ }, [props.value]);
802
+
803
+ var _useTextField = textfield.useTextField(_extends({
804
+ inputElementType: 'input',
805
+ isDisabled: disabled,
806
+ isRequired: required,
807
+ validationState: invalid ? 'invalid' : 'valid',
808
+ description: !invalid && assistiveText,
809
+ errorMessage: invalid && assistiveText,
810
+ onChange: handleChange
811
+ }, props), ariaRef),
812
+ inputProps = _useTextField.inputProps,
813
+ labelProps = _useTextField.labelProps,
814
+ descriptionProps = _useTextField.descriptionProps,
815
+ errorMessageProps = _useTextField.errorMessageProps;
816
+
817
+ React.useEffect(function () {
818
+ var prefixObserver = new ResizeObserver(function (entries) {
819
+ setPrefixWidth(entries[0].contentRect.width);
820
+ });
821
+ var suffixObserver = new ResizeObserver(function (entries) {
822
+ setSuffixWidth(entries[0].contentRect.width);
823
+ });
824
+
825
+ if (prefixRef.current !== null) {
826
+ prefixObserver.observe(prefixRef.current);
827
+ }
828
+
829
+ if (suffixRef.current !== null) {
830
+ suffixObserver.observe(suffixRef.current);
831
+ }
832
+
833
+ return function () {
834
+ suffixObserver.disconnect();
835
+ prefixObserver.disconnect();
836
+ };
837
+ }, []);
838
+ return /*#__PURE__*/React__default["default"].createElement(TextFieldRoot, {
839
+ className: className,
840
+ isDisabled: disabled
841
+ }, /*#__PURE__*/React__default["default"].createElement(TextFieldLabel, _extends({
842
+ label: label,
843
+ requiredText: requiredText,
844
+ required: required,
845
+ subLabel: subLabel
846
+ }, labelProps, !showLabel ? visuallyHiddenProps : {})), /*#__PURE__*/React__default["default"].createElement(StyledInputContainer, null, /*#__PURE__*/React__default["default"].createElement(PrefixContainer, {
847
+ ref: prefixRef
848
+ }, /*#__PURE__*/React__default["default"].createElement(Affix, null, prefix)), /*#__PURE__*/React__default["default"].createElement(StyledInput, _extends({
849
+ ref: mergeRefs(forwardRef, ariaRef),
850
+ invalid: invalid,
851
+ extraLeftPadding: prefixWidth,
852
+ extraRightPadding: suffixWidth
853
+ }, inputProps)), /*#__PURE__*/React__default["default"].createElement(SuffixContainer, {
854
+ ref: suffixRef
855
+ }, /*#__PURE__*/React__default["default"].createElement(Affix, null, suffix), showCount && /*#__PURE__*/React__default["default"].createElement(SingleLineCounter, null, maxLength !== undefined ? count + "/" + maxLength : count))), assistiveText != null && assistiveText.length !== 0 && /*#__PURE__*/React__default["default"].createElement(AssistiveText, _extends({
856
+ invalid: invalid
857
+ }, invalid ? errorMessageProps : descriptionProps), assistiveText));
858
+ });
859
+ var MultiLineTextField = React__default["default"].forwardRef(function MultiLineTextFieldInner(_ref2, forwardRef) {
860
+ var _props$value3;
861
+
862
+ var onChange = _ref2.onChange,
863
+ props = _objectWithoutPropertiesLoose(_ref2, _excluded2);
864
+
865
+ var className = props.className,
866
+ _props$showCount2 = props.showCount,
867
+ showCount = _props$showCount2 === void 0 ? false : _props$showCount2,
868
+ _props$showLabel2 = props.showLabel,
869
+ showLabel = _props$showLabel2 === void 0 ? false : _props$showLabel2,
870
+ label = props.label,
871
+ requiredText = props.requiredText,
872
+ subLabel = props.subLabel,
873
+ _props$disabled2 = props.disabled,
874
+ disabled = _props$disabled2 === void 0 ? false : _props$disabled2,
875
+ required = props.required,
876
+ _props$invalid2 = props.invalid,
877
+ invalid = _props$invalid2 === void 0 ? false : _props$invalid2,
878
+ assistiveText = props.assistiveText,
879
+ maxLength = props.maxLength,
880
+ _props$autoHeight = props.autoHeight,
881
+ autoHeight = _props$autoHeight === void 0 ? false : _props$autoHeight,
882
+ _props$rows = props.rows,
883
+ initialRows = _props$rows === void 0 ? 4 : _props$rows;
884
+
885
+ var _useVisuallyHidden2 = visuallyHidden.useVisuallyHidden(),
886
+ visuallyHiddenProps = _useVisuallyHidden2.visuallyHiddenProps;
887
+
888
+ var textareaRef = React.useRef(null);
889
+ var ariaRef = React.useRef(null);
890
+
891
+ var _useState4 = React.useState(countCodePointsInString((_props$value3 = props.value) != null ? _props$value3 : '')),
892
+ count = _useState4[0],
893
+ setCount = _useState4[1];
894
+
895
+ var _useState5 = React.useState(initialRows),
896
+ rows = _useState5[0],
897
+ setRows = _useState5[1];
898
+
899
+ var syncHeight = React.useCallback(function (textarea) {
900
+ var _$match$length, _$match;
901
+
902
+ var rows = (_$match$length = (_$match = (textarea.value + "\n").match(/\n/g)) == null ? void 0 : _$match.length) != null ? _$match$length : 1;
903
+
904
+ if (initialRows <= rows) {
905
+ setRows(rows);
906
+ }
907
+ }, [initialRows]);
908
+ var nonControlled = props.value === undefined;
909
+ var handleChange = React.useCallback(function (value) {
910
+ var count = countCodePointsInString(value);
911
+
912
+ if (maxLength !== undefined && count > maxLength) {
913
+ return;
914
+ }
915
+
916
+ if (nonControlled) {
917
+ setCount(count);
918
+ }
919
+
920
+ if (autoHeight && textareaRef.current !== null) {
921
+ syncHeight(textareaRef.current);
922
+ }
923
+
924
+ onChange == null ? void 0 : onChange(value);
925
+ }, [autoHeight, maxLength, nonControlled, onChange, syncHeight]);
926
+ React.useEffect(function () {
927
+ var _props$value4;
928
+
929
+ setCount(countCodePointsInString((_props$value4 = props.value) != null ? _props$value4 : ''));
930
+ }, [props.value]);
931
+
932
+ var _useTextField2 = textfield.useTextField(_extends({
933
+ inputElementType: 'textarea',
934
+ isDisabled: disabled,
935
+ isRequired: required,
936
+ validationState: invalid ? 'invalid' : 'valid',
937
+ description: !invalid && assistiveText,
938
+ errorMessage: invalid && assistiveText,
939
+ onChange: handleChange
940
+ }, props), ariaRef),
941
+ inputProps = _useTextField2.inputProps,
942
+ labelProps = _useTextField2.labelProps,
943
+ descriptionProps = _useTextField2.descriptionProps,
944
+ errorMessageProps = _useTextField2.errorMessageProps;
945
+
946
+ React.useEffect(function () {
947
+ if (autoHeight && textareaRef.current !== null) {
948
+ syncHeight(textareaRef.current);
949
+ }
950
+ }, [autoHeight, syncHeight]);
951
+ return /*#__PURE__*/React__default["default"].createElement(TextFieldRoot, {
952
+ className: className,
953
+ isDisabled: disabled
954
+ }, /*#__PURE__*/React__default["default"].createElement(TextFieldLabel, _extends({
955
+ label: label,
956
+ requiredText: requiredText,
957
+ required: required,
958
+ subLabel: subLabel
959
+ }, labelProps, !showLabel ? visuallyHiddenProps : {})), /*#__PURE__*/React__default["default"].createElement(StyledTextareaContainer, {
960
+ invalid: invalid,
961
+ rows: showCount ? rows + 1 : rows
962
+ }, /*#__PURE__*/React__default["default"].createElement(StyledTextarea, _extends({
963
+ ref: mergeRefs(textareaRef, forwardRef, ariaRef),
964
+ rows: rows,
965
+ noBottomPadding: showCount
966
+ }, inputProps)), showCount && /*#__PURE__*/React__default["default"].createElement(MultiLineCounter, null, maxLength !== undefined ? count + "/" + maxLength : count)), assistiveText != null && assistiveText.length !== 0 && /*#__PURE__*/React__default["default"].createElement(AssistiveText, _extends({
967
+ invalid: invalid
968
+ }, invalid ? errorMessageProps : descriptionProps), assistiveText));
969
+ });
970
+ var TextFieldRoot = styled__default["default"].div(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n\n ", "\n"])), function (p) {
971
+ return p.isDisabled && {
972
+ opacity: p.theme.elementEffect.disabled.opacity
973
+ };
974
+ });
975
+ var TextFieldLabel = styled__default["default"](FieldLabel)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n ", "\n"])), theme(function (o) {
976
+ return o.margin.bottom(8);
977
+ }));
978
+ var StyledInputContainer = styled__default["default"].div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n height: 40px;\n display: grid;\n position: relative;\n"])));
979
+ var PrefixContainer = styled__default["default"].span(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 50%;\n left: 8px;\n transform: translateY(-50%);\n"])));
980
+ var SuffixContainer = styled__default["default"].span(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 50%;\n right: 8px;\n transform: translateY(-50%);\n\n display: flex;\n gap: 8px;\n"])));
981
+ var Affix = styled__default["default"].span(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n user-select: none;\n\n ", "\n"])), theme(function (o) {
982
+ return [o.typography(14).preserveHalfLeading, o.font.text2];
983
+ }));
984
+ var StyledInput = styled__default["default"].input(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n border: none;\n box-sizing: border-box;\n outline: none;\n font-family: inherit;\n\n /* Prevent zooming for iOS Safari */\n transform-origin: top left;\n transform: scale(0.875);\n width: calc(100% / 0.875);\n height: calc(100% / 0.875);\n font-size: calc(14px / 0.875);\n line-height: calc(22px / 0.875);\n padding-left: calc((8px + ", "px) / 0.875);\n padding-right: calc((8px + ", "px) / 0.875);\n border-radius: calc(4px / 0.875);\n\n /* Display box-shadow for iOS Safari */\n appearance: none;\n\n ", "\n\n &::placeholder {\n ", "\n }\n"])), function (p) {
985
+ return p.extraLeftPadding;
986
+ }, function (p) {
987
+ return p.extraRightPadding;
988
+ }, function (p) {
989
+ return theme(function (o) {
990
+ return [o.bg.surface3.hover, o.outline["default"].focus, p.invalid && o.outline.assertive, o.font.text2];
991
+ });
992
+ }, theme(function (o) {
993
+ return o.font.text3;
994
+ }));
995
+ var StyledTextareaContainer = styled__default["default"].div(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n position: relative;\n overflow: hidden;\n padding: 0 8px;\n\n ", "\n\n &:focus-within {\n ", "\n }\n\n ", ";\n"])), function (p) {
996
+ return theme(function (o) {
997
+ return [o.bg.surface3.hover, p.invalid && o.outline.assertive, o.font.text2, o.borderRadius(4)];
998
+ });
999
+ }, function (p) {
1000
+ return theme(function (o) {
1001
+ return p.invalid ? o.outline.assertive : o.outline["default"];
1002
+ });
1003
+ }, function (_ref3) {
1004
+ var rows = _ref3.rows;
1005
+ return styled$1.css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose(["\n height: calc(22px * ", " + 18px);\n "])), rows);
1006
+ });
1007
+ var StyledTextarea = styled__default["default"].textarea(_templateObject10 || (_templateObject10 = _taggedTemplateLiteralLoose(["\n border: none;\n outline: none;\n resize: none;\n font-family: inherit;\n color: inherit;\n\n /* Prevent zooming for iOS Safari */\n transform-origin: top left;\n transform: scale(0.875);\n width: calc(100% / 0.875);\n font-size: calc(14px / 0.875);\n line-height: calc(22px / 0.875);\n padding: calc(9px / 0.875) 0 ", ";\n\n ", ";\n\n /* Display box-shadow for iOS Safari */\n appearance: none;\n\n background: none;\n\n &::placeholder {\n ", "\n }\n\n /* Hide scrollbar for Chrome, Safari and Opera */\n &::-webkit-scrollbar {\n display: none;\n }\n /* Hide scrollbar for IE, Edge and Firefox */\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n"])), function (p) {
1008
+ return p.noBottomPadding ? 0 : '';
1009
+ }, function (_ref4) {
1010
+ var _ref4$rows = _ref4.rows,
1011
+ rows = _ref4$rows === void 0 ? 1 : _ref4$rows;
1012
+ return styled$1.css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteralLoose(["\n height: calc(22px / 0.875 * ", ");\n "])), rows);
1013
+ }, theme(function (o) {
1014
+ return o.font.text3;
1015
+ }));
1016
+ var SingleLineCounter = styled__default["default"].span(_templateObject12 || (_templateObject12 = _taggedTemplateLiteralLoose(["\n ", "\n"])), theme(function (o) {
1017
+ return [o.typography(14).preserveHalfLeading, o.font.text3];
1018
+ }));
1019
+ var MultiLineCounter = styled__default["default"].span(_templateObject13 || (_templateObject13 = _taggedTemplateLiteralLoose(["\n position: absolute;\n bottom: 9px;\n right: 8px;\n\n ", "\n"])), theme(function (o) {
1020
+ return [o.typography(14).preserveHalfLeading, o.font.text3];
1021
+ }));
1022
+ var AssistiveText = styled__default["default"].p(_templateObject14 || (_templateObject14 = _taggedTemplateLiteralLoose(["\n ", "\n"])), function (p) {
1023
+ return theme(function (o) {
1024
+ return [o.typography(14), o.margin.top(8), o.margin.bottom(0), o.font[p.invalid ? 'assertive' : 'text1']];
1025
+ });
1026
+ });
1027
+
1028
+ var _excluded = ["name", "scale", "unsafeNonGuidelineScale", "className"];
1029
+ var Icon = React__default["default"].forwardRef(function IconInner(_ref, ref) {
1030
+ var name = _ref.name,
1031
+ scale = _ref.scale,
1032
+ unsafeNonGuidelineScale = _ref.unsafeNonGuidelineScale,
1033
+ className = _ref.className,
1034
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
1035
+
1036
+ return /*#__PURE__*/React__default["default"].createElement("pixiv-icon", _extends({
1037
+ ref: ref,
1038
+ name: name,
1039
+ scale: scale,
1040
+ "unsafe-non-guideline-scale": unsafeNonGuidelineScale,
1041
+ "class": className
1042
+ }, rest));
1043
+ });
1044
+
1045
+ Object.defineProperty(exports, 'SSRProvider', {
1046
+ enumerable: true,
1047
+ get: function () { return ssr.SSRProvider; }
1048
+ });
1049
+ exports.Button = Button;
1050
+ exports.Clickable = Clickable;
1051
+ exports.ComponentAbstraction = ComponentAbstraction;
1052
+ exports.Icon = Icon;
1053
+ exports.IconButton = IconButton;
1054
+ exports.Radio = Radio;
1055
+ exports.RadioGroup = RadioGroup;
1056
+ exports.Select = Select;
1057
+ exports.SelectGroup = SelectGroup;
1058
+ exports.Switch = SwitchCheckbox;
1059
+ exports.TextField = TextField;
1060
+ exports.useComponentAbstraction = useComponentAbstraction;
2
1061
  //# sourceMappingURL=index.cjs.map