koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
3 lines (2 loc) • 1.23 kB
JavaScript
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),o=require("react"),M=require("classnames"),O=require("css-vars-hook"),t=require("./Iframe.module.css.cjs"),T=require("./convertPermissions.cjs"),_=require("../Skeleton/SkeletonShape.cjs"),u=o.forwardRef(({children:z,className:i,src:m,width:e,height:s,referrerPolicy:d,allowFullScreen:f,name:j,title:q,srcDoc:S,loading:N,sandboxConfig:c,permissionsConfig:n,onLoad:l=()=>{},...b},x)=>{const[I,L]=o.useState(!1),R=o.useCallback(a=>{l(a),L(!0)},[l]),k=c&&Object.entries(c).filter(([a,P])=>P).map(([a])=>a).join(" "),p=n&&T.convertPermissions(n),v=o.useMemo(()=>({height:s,width:e}),[s,e]),{LocalRoot:y}=O.useLocalTheme();return r.jsx(y,{theme:v,className:t.default.sizeContainer,children:r.jsxs("div",{className:t.default.ratioContainer,children:[r.jsx("iframe",{...b,className:M(t.default.iframe,i),ref:x,onLoad:R,loading:N,name:j,width:e,height:s,src:m,title:q,srcDoc:S,allow:p,referrerPolicy:d,allowFullScreen:f,sandbox:k}),!I&&r.jsx(_.SkeletonShape,{width:e,height:s,borderRadius:0,className:t.default.loader})]})})});u.displayName="Iframe";exports.Iframe=u;
//# sourceMappingURL=Iframe.cjs.map