removed constructor, prop name check from compiler and added event:bindings to init function

pull/6876/head
Tom Shaw 5 years ago
parent 1ada8c1c1e
commit 3e3a5491fb

@ -444,7 +444,7 @@ export default function dom(
unknown_props_check = b`
const writable_props = [${writable_props.map(prop => x`'${prop.export_name}'`)}];
@_Object.keys($$props).forEach(key => {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot' && key !== 'event:bindings') @_console.warn(\`<${component.tag}> was created with unknown prop '\${key}'\`);
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') @_console.warn(\`<${component.tag}> was created with unknown prop '\${key}'\`);
});
`;
}

@ -22,6 +22,7 @@ export interface Fragment {
/* outro */ o: (local: any) => void;
/* destroy */ d: (detaching: 0 | 1) => void;
}
interface T$$ {
dirty: number[];
ctx: null | any;
@ -41,6 +42,20 @@ interface T$$ {
root:Element | ShadowRoot
}
/**
* bind_events
* Binds the events provided in options.props, to named callbacks event:bindings
* @param props
*/
function bind_events(props) {
const events = props && props['event:bindings'] ? props['event:bindings'] : {};
if (Object.keys(events).length) {
delete props['event:bindings'];
}
return events;
}
export function bind(component, name, callback) {
const index = component.$$.props[name];
if (index !== undefined) {
@ -127,7 +142,7 @@ export function init(component, options, instance, create_fragment, not_equal, p
context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
// everything else
callbacks: blank_object(),
callbacks: bind_events(options.props),
dirty,
skip_bound: false,
root: options.target || parent_component.$$.root
@ -239,12 +254,6 @@ export class SvelteComponent {
$$set?: ($$props: any) => void;
eventBindings: any;
constructor(props) {
if (props && props.props && Object.prototype.hasOwnProperty.call(props.props, 'event:bindings')) {
this.eventBindings = props.props['event:bindings'];
}
}
$destroy() {
destroy_component(this, 1);
this.$destroy = noop;

@ -155,7 +155,7 @@ export class SvelteComponentDev extends SvelteComponent {
throw new Error("'target' is a required option");
}
super(options);
super();
}
$destroy() {

Loading…
Cancel
Save