mirror of https://github.com/sveltejs/svelte
feat: add naturalWidth and naturalHeight bindings (#7857)
Closes #7771 --------- Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com> Co-authored-by: Simon Holthausen <simon.holthausen@vercel.com>pull/8321/head
parent
ba8f979f03
commit
d16dd5d7ca
@ -0,0 +1,95 @@
|
|||||||
|
/* generated by Svelte vX.Y.Z */
|
||||||
|
import {
|
||||||
|
SvelteComponent,
|
||||||
|
add_render_callback,
|
||||||
|
attr,
|
||||||
|
detach,
|
||||||
|
element,
|
||||||
|
init,
|
||||||
|
insert,
|
||||||
|
listen,
|
||||||
|
noop,
|
||||||
|
safe_not_equal,
|
||||||
|
set_data,
|
||||||
|
space,
|
||||||
|
src_url_equal,
|
||||||
|
text
|
||||||
|
} from "svelte/internal";
|
||||||
|
|
||||||
|
function create_fragment(ctx) {
|
||||||
|
let img;
|
||||||
|
let img_src_value;
|
||||||
|
let t0;
|
||||||
|
let t1;
|
||||||
|
let t2;
|
||||||
|
let t3;
|
||||||
|
let mounted;
|
||||||
|
let dispose;
|
||||||
|
|
||||||
|
return {
|
||||||
|
c() {
|
||||||
|
img = element("img");
|
||||||
|
t0 = space();
|
||||||
|
t1 = text(/*naturalWidth*/ ctx[0]);
|
||||||
|
t2 = text(" x ");
|
||||||
|
t3 = text(/*naturalHeight*/ ctx[1]);
|
||||||
|
if (!src_url_equal(img.src, img_src_value = "something.jpg")) attr(img, "src", img_src_value);
|
||||||
|
if (/*naturalWidth*/ ctx[0] === void 0 || /*naturalHeight*/ ctx[1] === void 0) add_render_callback(() => /*img_load_handler*/ ctx[2].call(img));
|
||||||
|
},
|
||||||
|
m(target, anchor) {
|
||||||
|
insert(target, img, anchor);
|
||||||
|
insert(target, t0, anchor);
|
||||||
|
insert(target, t1, anchor);
|
||||||
|
insert(target, t2, anchor);
|
||||||
|
insert(target, t3, anchor);
|
||||||
|
|
||||||
|
if (!mounted) {
|
||||||
|
dispose = listen(img, "load", /*img_load_handler*/ ctx[2]);
|
||||||
|
mounted = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
p(ctx, [dirty]) {
|
||||||
|
if (dirty & /*naturalWidth*/ 1) set_data(t1, /*naturalWidth*/ ctx[0]);
|
||||||
|
if (dirty & /*naturalHeight*/ 2) set_data(t3, /*naturalHeight*/ ctx[1]);
|
||||||
|
},
|
||||||
|
i: noop,
|
||||||
|
o: noop,
|
||||||
|
d(detaching) {
|
||||||
|
if (detaching) detach(img);
|
||||||
|
if (detaching) detach(t0);
|
||||||
|
if (detaching) detach(t1);
|
||||||
|
if (detaching) detach(t2);
|
||||||
|
if (detaching) detach(t3);
|
||||||
|
mounted = false;
|
||||||
|
dispose();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function instance($$self, $$props, $$invalidate) {
|
||||||
|
let { naturalWidth = 0 } = $$props;
|
||||||
|
let { naturalHeight = 0 } = $$props;
|
||||||
|
|
||||||
|
function img_load_handler() {
|
||||||
|
naturalWidth = this.naturalWidth;
|
||||||
|
naturalHeight = this.naturalHeight;
|
||||||
|
$$invalidate(0, naturalWidth);
|
||||||
|
$$invalidate(1, naturalHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
$$self.$$set = $$props => {
|
||||||
|
if ('naturalWidth' in $$props) $$invalidate(0, naturalWidth = $$props.naturalWidth);
|
||||||
|
if ('naturalHeight' in $$props) $$invalidate(1, naturalHeight = $$props.naturalHeight);
|
||||||
|
};
|
||||||
|
|
||||||
|
return [naturalWidth, naturalHeight, img_load_handler];
|
||||||
|
}
|
||||||
|
|
||||||
|
class Component extends SvelteComponent {
|
||||||
|
constructor(options) {
|
||||||
|
super();
|
||||||
|
init(this, options, instance, create_fragment, safe_not_equal, { naturalWidth: 0, naturalHeight: 1 });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Component;
|
@ -0,0 +1,8 @@
|
|||||||
|
<script>
|
||||||
|
export let naturalWidth = 0;
|
||||||
|
export let naturalHeight = 0;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<img src="something.jpg" bind:naturalWidth bind:naturalHeight>
|
||||||
|
|
||||||
|
{naturalWidth} x {naturalHeight}
|
Loading…
Reference in new issue