Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 13 additions & 20 deletions packages/svelte2tsx/src/svelte2tsx/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { ComponentEvents } from './nodes/ComponentEvents';
import { EventHandler } from './nodes/event-handler';
import { ExportedNames } from './nodes/ExportedNames';
import { createClassGetters, createRenderFunctionGetterStr } from './nodes/exportgetters';
import { createClassSetters, createRenderFunctionSetterStr } from './nodes/exportsetters';
import { createClassAccessors } from './nodes/exportaccessors';
import {
handleScopeAndResolveForSlot,
handleScopeAndResolveLetVarForSlot
Expand Down Expand Up @@ -46,7 +46,8 @@ interface AddComponentExportPara {
strictEvents: boolean;
isTsFile: boolean;
getters: Set<string>;
setters: Set<string>;
usesAccessors: boolean;
exportedNames: ExportedNames;
fileName?: string;
componentDocumentation: ComponentDocumentation;
}
Expand Down Expand Up @@ -316,7 +317,8 @@ function addComponentExport({
strictEvents,
isTsFile,
getters,
setters,
usesAccessors,
exportedNames,
fileName,
componentDocumentation
}: AddComponentExportPara) {
Expand All @@ -341,7 +343,7 @@ function addComponentExport({
className ? ` ${className}` : ''
} extends createSvelte2TsxComponent(${propDef}) {` +
createClassGetters(getters) +
createClassSetters(setters) +
(usesAccessors ? createClassAccessors(getters, exportedNames) : '') +
'\n}';

str.append(statement);
Expand Down Expand Up @@ -382,7 +384,6 @@ function createRenderFunction({
scriptDestination,
slots,
getters,
setters,
events,
exportedNames,
isTsFile,
Expand Down Expand Up @@ -437,10 +438,9 @@ function createRenderFunction({
'}';

const returnString =
`\nreturn { props: ${exportedNames.createPropsStr(
isTsFile
)}, slots: ${slotsAsDef}, getters: ${createRenderFunctionGetterStr(getters)}` +
`, setters: ${createRenderFunctionSetterStr(setters)}` +
`\nreturn { props: ${exportedNames.createPropsStr(isTsFile)}` +
`, slots: ${slotsAsDef}` +
`, getters: ${createRenderFunctionGetterStr(getters)}` +
`, events: ${events.toDefString()} }}`;

// wrap template with callback
Expand Down Expand Up @@ -499,24 +499,17 @@ export function svelte2tsx(
//move the instance script and process the content
let exportedNames = new ExportedNames();
let getters = new Set<string>();
let setters = new Set<string>();
if (scriptTag) {
//ensure it is between the module script and the rest of the template (the variables need to be declared before the jsx template)
if (scriptTag.start != instanceScriptTarget) {
str.move(scriptTag.start, scriptTag.end, instanceScriptTarget);
}
const res = processInstanceScriptContent(
str,
scriptTag,
events,
implicitStoreValues,
usesAccessors
);
const res = processInstanceScriptContent(str, scriptTag, events, implicitStoreValues);
uses$$props = uses$$props || res.uses$$props;
uses$$restProps = uses$$restProps || res.uses$$restProps;
uses$$slots = uses$$slots || res.uses$$slots;

({ exportedNames, events, getters, setters } = res);
({ exportedNames, events, getters } = res);
}

//wrap the script tag and template content in a function returning the slot and exports
Expand All @@ -527,7 +520,6 @@ export function svelte2tsx(
slots,
events,
getters,
setters,
exportedNames,
isTsFile: options?.isTsFile,
uses$$props,
Expand All @@ -551,7 +543,8 @@ export function svelte2tsx(
strictEvents: events.hasInterface(),
isTsFile: options?.isTsFile,
getters,
setters,
exportedNames,
usesAccessors,
fileName: options?.filename,
componentDocumentation
});
Expand Down
18 changes: 18 additions & 0 deletions packages/svelte2tsx/src/svelte2tsx/nodes/exportaccessors.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { ExportedNames } from './ExportedNames';

const createClassAccessor = (name: string) =>
`\n get ${name}() { return render().props.${name} }` +
`\n /**accessor*/\n set ${name}(_) {}`;

export const createClassAccessors = (getters: Set<string>, exportedNames: ExportedNames) => {
const accessors: string[] = [];
for (const [name, value] of exportedNames) {
if (getters.has(name)) {
continue;
}

accessors.push(value.identifierText);
}

return accessors.map(createClassAccessor).join('');
};
4 changes: 3 additions & 1 deletion packages/svelte2tsx/src/svelte2tsx/nodes/exportgetters.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
export const createClassGetter = (name: string) =>
const createClassGetter = (name: string) =>
`\n get ${name}() { return render().getters.${name} }`;

export const createClassGetters = (names: Set<string>) => {
return Array.from(names).map(createClassGetter).join('');
};

export function createRenderFunctionGetterStr(getters: Set<string>) {
const properties = Array.from(getters).map((name) => `${name}: ${name}`);
return `{${properties.join(', ')}}`;
Expand Down
11 changes: 0 additions & 11 deletions packages/svelte2tsx/src/svelte2tsx/nodes/exportsetters.ts

This file was deleted.

13 changes: 2 additions & 11 deletions packages/svelte2tsx/src/svelte2tsx/processInstanceScriptContent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ export interface InstanceScriptProcessResult {
uses$$restProps: boolean;
uses$$slots: boolean;
getters: Set<string>;
setters: Set<string>;
}

interface PendingStoreResolution {
Expand All @@ -34,8 +33,7 @@ export function processInstanceScriptContent(
str: MagicString,
script: Node,
events: ComponentEvents,
implicitStoreValues: ImplicitStoreValues,
usesAccessors: boolean
implicitStoreValues: ImplicitStoreValues
): InstanceScriptProcessResult {
const htmlx = str.original;
const scriptContent = htmlx.substring(script.content.start, script.content.end);
Expand All @@ -49,7 +47,6 @@ export function processInstanceScriptContent(
const astOffset = script.content.start;
const exportedNames = new ExportedNames();
const getters = new Set<string>();
const setters = new Set<string>();

const implicitTopLevelNames = new ImplicitTopLevelNames();
let uses$$props = false;
Expand Down Expand Up @@ -104,11 +101,6 @@ export function processInstanceScriptContent(
const name = identifier.getText();
const end = declaration.end + astOffset;

if (usesAccessors) {
setters.add(name);
getters.add(name);
}

str.appendLeft(end, `;${name} = __sveltets_any(${name});`);
};

Expand Down Expand Up @@ -507,7 +499,6 @@ export function processInstanceScriptContent(
uses$$props,
uses$$restProps,
uses$$slots,
getters,
setters
getters
};
}
2 changes: 1 addition & 1 deletion packages/svelte2tsx/test/sourcemaps/event-binding.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
1==== 2==================
<button onclick={(__sveltets_store_get(check), $check) ? method1 : method2} >Bla</button></>
3==== 4==================
return { props: {}, slots: {}, getters: {}, setters: {}, events: {} }}
return { props: {}, slots: {}, getters: {}, events: {} }}

export default class extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
Expand Down
2 changes: 1 addition & 1 deletion packages/svelte2tsx/test/sourcemaps/let.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
;
() => (<>
</>);
return { props: {}, slots: {}, getters: {}, setters: {}, events: {} }}
return { props: {}, slots: {}, getters: {}, events: {} }}

export default class extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
Expand Down
2 changes: 1 addition & 1 deletion packages/svelte2tsx/test/sourcemaps/repl.html
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@
</> : <></>}
</div>
</>);
return { props: {slug: slug , chapter: chapter}, slots: {}, getters: {}, setters: {}, events: {} }}
return { props: {slug: slug , chapter: chapter}, slots: {}, getters: {}, events: {} }}

export default class extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
{...__sveltets_ensureAnimation((__sveltets_store_get(animateStore), $animateStore)(__sveltets_mapElementTag('div'),__sveltets_AnimationMove,{}))}
>
</div></>);
return { props: {}, slots: {}, getters: {}, setters: {}, events: {} }}
return { props: {}, slots: {}, getters: {}, events: {} }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
(__sveltets_store_get(store), $store).b = false;
;
() => (<></>);
return { props: {}, slots: {}, getters: {}, setters: {}, events: {} }}
return { props: {}, slots: {}, getters: {}, events: {} }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<>{someRecordOrArr[(__sveltets_store_get(store), $store)]}
{someObject['$store']}
{someObject.$store}</>
return { props: {}, slots: {}, getters: {}, setters: {}, events: {} }}
return { props: {}, slots: {}, getters: {}, events: {} }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
let [a,b,c] = [1,2,3];
;
() => (<></>);
return { props: {a: a , b: b , c: c}, slots: {}, getters: {}, setters: {}, events: {} }}
return { props: {a: a , b: b , c: c}, slots: {}, getters: {}, events: {} }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<></>;function render() {
;(__sveltets_store_get(var), $var);
() => (<></>);
return { props: {}, slots: {}, getters: {}, setters: {}, events: {} }}
return { props: {}, slots: {}, getters: {}, events: {} }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<></>;function render() {
;(__sveltets_store_get(var), $var);
() => (<></>);
return { props: {}, slots: {}, getters: {}, setters: {}, events: {} }}
return { props: {}, slots: {}, getters: {}, events: {} }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ function render() {
</>; __sveltets_awaitThen(_$$p, (data) => {<>
{data}
</>})}}</>);
return { props: {}, slots: {}, getters: {}, setters: {}, events: {} }}
return { props: {}, slots: {}, getters: {}, events: {} }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
///<reference types="svelte" />
<></>;function render() {
<><input id="dom-input" type="radio" {...__sveltets_empty((__sveltets_store_get(compile_options), $compile_options).generate)} value="dom"/></>
return { props: {}, slots: {}, getters: {}, setters: {}, events: {} }}
return { props: {}, slots: {}, getters: {}, events: {} }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@
<input type="range" value={selected.r} oninput={adjust}/>
</div>
</> : <></>}</>);
return { props: {}, slots: {}, getters: {}, setters: {}, events: {} }}
return { props: {}, slots: {}, getters: {}, events: {} }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
() => (<>

</>);
return { props: {}, slots: {}, getters: {}, setters: {}, events: {} }}
return { props: {}, slots: {}, getters: {}, events: {} }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<div>
<slot a={b}>Hello</slot>
</div></>);
return { props: {}, slots: {'default': {a:b}}, getters: {}, setters: {}, events: {} }}
return { props: {}, slots: {'default': {a:b}}, getters: {}, events: {} }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
}
;
() => (<></>);
return { props: {}, slots: {}, getters: {}, setters: {}, events: {} as unknown as ComponentEvents }}
return { props: {}, slots: {}, getters: {}, events: {} as unknown as ComponentEvents }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(render)) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
}
;
() => (<></>);
return { props: {}, slots: {}, getters: {}, setters: {}, events: {} as unknown as ComponentEvents }}
return { props: {}, slots: {}, getters: {}, events: {} as unknown as ComponentEvents }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(render)) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
}
;
() => (<></>);
return { props: {}, slots: {}, getters: {}, setters: {}, events: {} as unknown as ComponentEvents }}
return { props: {}, slots: {}, getters: {}, events: {} as unknown as ComponentEvents }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(render)) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<slot name="test" c={d} e={e}></slot>
<slot name="abc-cde.113"></slot>
</div></>);
return { props: {}, slots: {'default': {a:b}, 'test': {c:d, e:e}, 'abc-cde.113': {}}, getters: {}, setters: {}, events: {} }}
return { props: {}, slots: {'default': {a:b}, 'test': {c:d, e:e}, 'abc-cde.113': {}}, getters: {}, events: {} }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<div>
<slot a={b} b={b} c="b" d={`a${b}`} e={b} >Hello</slot>
</div></>);
return { props: {}, slots: {'default': {a:b, b:b, c:"b", d:"__svelte_ts_string", e:b}}, getters: {}, setters: {}, events: {} }}
return { props: {}, slots: {'default': {a:b, b:b, c:"b", d:"__svelte_ts_string", e:b}}, getters: {}, events: {} }}

export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
}
}
Loading