@fluido/ui-containers
Version:
A framework for create front-end easy and fast
52 lines (48 loc) • 1.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Frame_ = void 0;
const ui_1 = require("@fluido/ui");
const box_1 = require("../box");
function getRatios(ratio) {
if (typeof ratio === 'string') {
const ratios = ratio.trim().split(/\/|:|x/);
if (ratios.length === 1)
ratios[1] = ratios[0];
return `
--aspect-w: ${ratios[0]};
--aspect-h: ${ratios[1]};
`;
}
return `
--aspect-w: ${ratio};
--aspect-h: ${1};
`;
}
exports.Frame_ = (0, ui_1.styled)(box_1.Box) `
${({ ratio }) => getRatios(ratio || 1)}
aspect-ratio: var(--aspect-w) / var(--aspect-h);
display: grid;
grid-template-areas: 'cell';
position: relative;
overflow: #and(!$allowOverflow, hidden);
min-height: #and($preserveRatio, 0);
isolation: #and($context, isolate);
& > img,
& > video,
& > [style] {
width: 100%;
height: 100%;
object-fit: $objectFit;
}
@supports not (aspect-ratio: 1 / 1) {
&::before {
grid-area: cell;
padding-bottom: calc(var(--aspect-h) / var(--aspect-w) * 100%);
content: '';
}
& > * {
grid-area: cell;
position: #select($preserveRatio || $allowOverflow, absolute);
}
}
`;