You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte/CHANGELOG.md

79 KiB

Svelte changelog

3.6.2

  • Fix placement of each-else block (#2917)
  • Make context accessible to bind:this (#2806)
  • Pass hoisted values to slots (#2586)

3.6.1

  • Fix escaping of @ in dev mode debug filename (#3114)

3.6.0

  • Add innerHTML and textContent bindings for contenteditable elements (#2996)
  • Fix destructuring assignments where targets are member expressions (#3092)
  • Deconflict with used globals (#2963)
  • Always run onDestroy functions, not just for detaching components (#3058)
  • Fix scope analysis around catch clauses (#3064)
  • Add error constructors to known globals (#3064)
  • Always bail out of hoisting on encountering local state in function definition (#3044)
  • Fix incorrect merging of top-level text nodes (#3027)
  • Handle removal of components in each blocks without props (#3035)
  • Only call subscriber once when resubscribing to a store (#3022)
  • Check for existence of dynamic component before introing (#3054)
  • Sanitize names of bubbled event handlers (#2923)

3.5.4

  • Preserve whitespace at the boundaries of {#each} blocks (#713)
  • Fix dynamic bind:this on components (#2333)
  • Fix binding to values in a component when it uses $$props (#2725)
  • Fix parsing ambiguous HTML entities (#3071)

3.5.3

  • Don't double-destroy keyed each blocks with outros (#3055)

3.5.2

  • Prevent duplicated outros causing errors (#3001)
  • Fix automatic name generation (#2843)
  • Fix .d.ts stubs (#3009)
  • Don't strip non-breaking spaces (#3014)
  • Fix requestAnimationFrame context (#2933)
  • Allow space before attribute value (#3026)
  • Remove null/undefined attributes (#1434)
  • Fix whitespace in static markup (#3030)

3.5.1

  • Accommodate webpack idiosyncracies

3.5.0

  • Update package folder structure (#2887)
  • Support once modifier on component events (#2654)
  • Allow empty <title> tags (#2980)
  • Render textarea binding values inside element (#2975)
  • Fix delayed animation glitch (#2871)
  • Solve diamond dependencies problem with stores (#2660)
  • Fix missing outros inside each blocks (#2689)
  • Support animations without transitions (#2908)
  • Add missing transition events (#2912)

3.4.4

  • Publish type declaration files (#2874)
  • Don't trigger updates for unreferenced values (#2865)
  • Omit readonly bindings from SSR output (#2339)
  • Prevent outdated animation CSS (#2871)
  • Repair dynamic {@html ...} in head (#2880)
  • Don't create unknown prop warnings for internal props, or if component has $$props (#2881)

3.4.3

  • Add type declaration files for everything (#2842)
  • Prevent svelte/store being bundled (#2786)
  • Warn on unknown props in dev mode (#2840)
  • Treat requestAnimationFrame as a no-op on the server (#2856)
  • Add raw property to AST's Text nodes (#2714)
  • Add <details bind:open> (#2854)

3.4.2

  • Use empty string for empty data attributes (#2804)
  • Support customElement: true with no <svelte:options> (#2821)
  • Add docstrings to svelte/store (#2795)

3.4.1

  • Handle non-falsy non-function return values from derivers (#2780)
  • Allow spring to work server-side (#2773)

3.4.0

  • Allow custom element to be defined without a tag (#2417)
  • Fix parsing of quote marks inside attribute values (#2715)
  • Convert svelte/store to TypeScript (#2733)
  • Allow debug tags to include hoisted values (#2764)
  • Parse error if attribute name is missing = (#1513)
  • Allow reactive declarations to depend on mutated const values (#2728)

3.3.0

  • Allow multiple event listeners on a single node (#2688)
  • Allow derivers to return a cleanup function (#2553)
  • Support namespaced components (<Foo.Bar/>) (#2743)

3.2.2

  • Add window and document to expected globals (#2722)
  • Prevent hoisting of functions that depend on reactive state (#2703)
  • Generate correct code when slot has no changes (#2697)
  • Prevent Object.prototype-related bugs (#2696)

3.2.1

  • Use same comparison logic for derived as for other stores (#2644)
  • Invalidate dependencies of reactive declarations (#2444)
  • Fix instrumentation of auto-subscription self-assignments (#2681)
  • Warn on non-top-level or module-context statements labeled with $: (#2176)

3.2.0

  • Improve spring animations, and add hard/soft options (#2627)
  • Expose parse and walk functions (#2661, #2534)
  • Support array/object rest in each block destructuring patterns (#2647, #2658)
  • Use setAttribute to change form property on form elements (#1742)
  • Fix a11y warning when <figcaption> is non-direct descendant of <figure> (#2582)
  • Squelch erroneous 'empty block' warnings (#1716)
  • Fix IE9/10 error with insertBefore (#2573)
  • Prevent $$scope from being spread onto an element (#2520)
  • Resubscribe to stores that are assigned to in <script> (#2435)
  • Allow reactive declarations to depend on const variables (#2285)
  • Trigger store changes on UpdateExpression (#2625)
  • Squelch missing prop warning if variable is initialised (#2635)
  • Add alert, confirm and prompt to known globals (#2648)

3.1.0

  • Allow store subscribe functions to return an object with an unsubscribe method, providing native RxJS support (#2549)

3.0.1

  • Prevent text input cursor jumping in Safari (#2506)
  • Allow assignments to member expressions (#2510)
  • Prevent mutually dependent functions causing an infinite during hoisting (#2542)
  • Reuse scheduler promise instead of creating new one each time (#2555)
  • Various site/docs fixes

3.0.0

  • Everything

2.15.4

  • IE classList fix (#1868)

2.15.3

  • Don't mutate AST

2.15.2

  • Expose stats.props (#1837)

2.15.1

  • Don't throw missing store error when store is declared in component (#1828)

2.15.0

  • Event modifiers (#1088)
  • Wheel and touch events are passive by default (#1088)
  • Add <svelte:document> tag (#1484)
  • Include binding values in server-rendered HTML (#1205)
  • Remove attributes when value is undefined/null (#1434)
  • Initialise window scroll from component data (#938)
  • Remove references to unused properties in generated code (#1187)
  • Add TypeScript definitions for store (#1207)
  • Better error for missing store (#1807)

2.14.3

  • Account for directive dependencies (#1793)
  • Detach each block iterations in each blocks with no update method (#1795)

2.14.2

  • Fix issue with nested {#if} blocks (#1780)

2.14.1

  • Fix block insertion order regression (#1778)
  • Fix blocks inside <svelte:head> (#1774)
  • Better attribute parsing (#1772)
  • Fix parse errors inside directives (#1788)

2.14.0

  • Refactor internals (#1678)
  • Deprecate onerror option (#1745)
  • Handle edge cases where destroy is called before mount (#1653)
  • Make scroll binding more efficient (#1579)
  • Make 'readonly property' store error more informative (#1761)

2.13.5

  • Fix missing dependencies in shorthand class directives (#1739)

2.13.4

  • Support dynamic import() in template expressions

2.13.3

  • Fix bug with keyed each blocks and nested components (#1706)

2.13.2

  • Coalesce simultaneous store/component updates (#1520)
  • Fix nested transitions preventing each block item removal (#1617)
  • Add class directive shorthand and encapsulate styles (#1695)
  • Prevent erroneous updates of bound inputs (#1699)

2.13.1

  • Coerce second argument to toggleClass (#1685)

2.13.0

  • Add class directive (#890)
  • Remove sourcemaps from npm package (#1690)

2.12.1

  • Allow actions to take any expression (#1676)
  • Run transitions in component context (#1675)
  • Correctly set select value on mount (#1666)
  • Support {@debug} in SSR (#1659)
  • Don't treat &nbsp; as empty whitespace (#1658)
  • Fix outros for if blocks with no else (#1688)
  • Set style.cssText in spread attributes (#1684)

2.12.0

  • Initialise actions on mount rather than hydrate (#1653)
  • Allow non-existent components to be destroyed (#1677)
  • Pass AMD ID from CLI correctly (#1672)
  • Minor AST tweaks (#1673, #1674)
  • Reduce code duplication in component initialisation (#1670)

2.11.0

  • Add --shared CLI option (#1649)
  • Run first onstate before fragment is rendered (#1522)
  • Exclude current computed prop from state object (#1544)

2.10.1

  • Add sourcemaps to {@debug} tags (#1647)

2.10.0

  • Add a {@debug} tag, for inspecting values in templates in dev mode (#1635)
  • Fix dimension bindings in iOS (#1642)

2.9.11

  • Pass props to custom elements rather than setting attributes, where appropriate (#875)
  • Handle whitespace in lists consistently between SSR and DOM renderers (#1637)
  • Improve error for invalid ref names (#1613)

2.9.10

  • Handle null consistently in tags (#1598)
  • Support object rest in computed properties (#1540)
  • Always update dynamic components when expression changes (#1621)
  • Encapsulate local styles inside global styles (#1618)

2.9.9

  • Fix attribute name regex (#1623)

2.9.8

  • Sanitize spread attributes in SSR — fixes vulnerability CVE-2018-6341 (#1623)

2.9.7

  • Allow <input type=file bind:files> (#1608)
  • Ensure child window exists before removing listener in addResizeHandler (#1600)
  • Handle transitions in else block (#1589)

2.9.6

  • Provide more useful error if SSR component attempts to render non-SSR component (#1605)

2.9.5

  • Null out refs to dynamic components (#1596)

2.9.4

  • Make identifier optional for then and catch blocks (#1507)
  • Group outros correctly (#1575)

2.9.3

  • Fix bug when an each block contains transitions but its else branch does not (#1559)
  • If an event handler throws an exception, don't block all future calls to that handler (#1573)

2.9.2

  • Fix conflict when using multiple if-else blocks, some of which use outros and some of which do not (#1580)
  • Fix some cases where .innerHTML was being used to create child elements when it shouldn't (#1581)

2.9.1

  • Use template.content instead of template where appropriate (#1571)

2.9.0

  • Play outro transitions on <svelte:component> if nestedTransitions is true (#1568)
  • Allow illegal identifiers to be component prop names, for e.g. spreading data-foo props (#887)
  • Abort transition when node is detached (#1561)
  • Only include transitionManager when necessary (#1514)

2.8.1

  • Fix prefixed animation name replacement (#1556)

2.8.0

  • Correctly set store on nested components (to parent store, not root store) (#1538)

2.7.2

  • Prevent unnecessary remounts (#1527)
  • Allow refs.* as callee (#1526)
  • Handle empty lists when outroing (#1532)

2.7.1

  • Fix spread props with multiple dependencies (#1515)

2.7.0

  • Add __svelte_meta object to elements in dev mode, containing source info (#1499)
  • Fix bind:online in dev mode (#1502)
  • Update v1 warnings/errors (#1508)
  • Transform prefixed keyframes (#1504)

2.6.6

  • Fix nested transition bug (#1497)

2.6.5

  • Handle cases where only some if block branches have outros (#1492)

2.6.4

  • Web worker support (#1487)
  • Update dynamic component bindings when component changes (#1489)

2.6.3

  • Nested transitions respect skipIntroByDefault (#1460)
  • Always create outro for top-level block (#1470)

2.6.2

  • Fix spread+bindings on dynamic components (#1433)
  • Abort in-progress animations, if a new one starts (#1458)
  • Allow animations to be parameterised (#1462)

2.6.1

  • Absolutely position outroing animated nodes (#1457)

2.6.0

  • Add animate directive (#1454)
  • Add skipIntroByDefault compiler option and intro: true init option (#1448)
  • Add nestedTransitions compiler option (#1451)
  • Component outros, if nestedTransitions is true (#1211)
  • Allow transition functions to return a function, for inter-transition coordination (#1453)
  • Pass 1 - t as second argument to transition functions (#1452)

2.5.1

  • Add new ARIA attributes (#1436)
  • Add Promise to whitelisted globals (#1441)
  • Allow spaces around reserved keyword attributes (#1445)

2.5.0

  • Support transitions in await blocks (#956)
  • Abort outros if block is recreated (#1425)
  • Wait until transitions have completed before removing styles (#648)
  • Support event shorthand on dynamic components (#1427)
  • Various codegen improvements (#1419, #1421, #1422, #1424)
  • Correctly handle await blocks with no dynamic content (#1417)
  • Allow spread props on elements with static attribute tests (#1429)

2.4.4

  • Declare missing variable in Store (#1415)
  • ALways declare spread levels (#1413)

2.4.3

  • ref directives prevent HTMLified content (#1407)
  • Store computed properties update components immediately upon declaration (#1327)

2.4.2

  • Evaluate each key in child scope (#1397)
  • Prevent false negatives and positives when detecting cyclical computed store properties (#1399)
  • Only update dynamic component props (#1394)

2.4.1

  • Fix DOM event context (#1390)

2.4.0

  • Integrate CLI (#1360)
  • Allow arbitrary destructuring for each block items, with binding (#1385)
  • Each block keys can use arbitrary expressions (#703)
  • bind:offsetWidth, bind:offsetHeight, bind:clientWidth and bind:clientHeight (#984)
  • Leaner generated code for each blocks (#1287)

2.3.0

  • Allow computed properties to have entire state object as dependency (#1303)
  • Fix stats when options.generate is false (#1368)
  • Assign custom methods to custom elements (#1369)
  • Fix this value in custom event handlers (#1297)
  • Re-evaluate each values lazily (#1286)
  • Preserve outer context in await blocks (#1251)

2.2.0

  • Internal refactoring (#1367)

2.1.1

  • Report initial changed based on state, not expected props (#1356)
  • Set state to empty object, not null, on destroy (#1354)
  • Prevent stale state in component event handlers (#1353)

2.1.0

  • Allow shorthand imports (#1038)
  • Update spread props inside each blocks (#1337)

2.0.0

See the blog post for information on how to upgrade your apps

  • New template syntax (#1318)
  • Emit ES2015 code, not ES5 (#1348)
  • Add onstate and onupdate hooks, remove component.observe method (#1197)
  • Use destructuring syntax for computed properties (#1069
  • Change signature of svelte.compile (#1298)
  • Remove validate and Stylesheet from public API (#1348)
  • Don't typecast numeric attributes (#657)
  • Always compile with Store support, and cascading disabled (#1348)
  • Remove unused hash property from AST (#1348)
  • Rename loc property to start in warnings and errors (#1348)

1.64.1

  • Fix computed properties in SSR renderer (#1349)

1.64.0

  • Deprecate passing a string argument to component.get (#1347)

1.63.1

  • Allow observe method to be overwritten

1.63.0

  • Add onstate and onupdate lifecycle hooks and deprecate component.observe (#1197)
  • Add on and fire to Store, deprecate onchange and observe (#1344)
  • Require computed properties to have destructured argument in v2 mode (#1069)

1.62.0

  • Add a code field to errors and warnings (#474)
  • When using v2 syntax, do not use interpolation in non-root <style> tags (#1339)

1.61.0

  • Support v2 syntax with parser: 'v2' option (#1318)

1.60.3

  • Fix validation of multiple attributes on bound <select> elements (#1331)

1.60.2

  • Fix order of insertions for keyed each blocks with siblings (#1306)
  • Bail out of CSS DCE if element has spread attribute (#1300)
  • Allow console etc in component events (#1278)
  • Deconflict against inherited contexts (#1275)
  • Make CSS DCE case insensitive (#1269)
  • Error on dynamic multiple attribute for bound select (#1270)
  • Allow custom events on <:Window> (#1268)

1.60.1

  • Fix spread updates on dynamic components (#1307)

1.60.0

  • Spread properties (#195)
  • svelte.compile returns an object with { js, css, ast } properties, where js and css are { code, map } objects (#1298)
  • Fixed broken compile errors when using Rollup (#1296)

1.59.0

  • Deprecate teardown in custom event handlers (#531)
  • Allow static content in keyed each block (#1291)
  • Allow empty content in keyed each block (#1295)
  • Only delete applicable transitions (#1290)

1.58.5

  • Allow backtick string literals for svg, tag, and props properties (#1284)
  • Fix removal of transition styles under Firefox (#1288)

1.58.4

  • Fix initial state regression (#1283)

1.58.3

  • Actions run in the context of the component (#1279)
  • Set refs when mounting dynamic components (#1280)

1.58.2

  • (1.58.1 failed to publish)

1.58.1

  • Actions (#1247)
  • Support preserveComments option in SSR mode (#1265)
  • Fix performance regression (#1274)

1.58.0

  • Fast row swapping (#588)
  • Better error messages for invalid directives (#1242)
  • Fix local context variable bugs (#1240, #1254)
  • Skip missing property warnings for computed/global properties in dev mode (#1246)
  • Add end position to warnings (#1250)

1.57.4

  • Deconflict context names (#1229)
  • Use setAttribute to set input types (#1209)
  • Scale transition duration correctly (#1221)

1.57.3

  • Fix scoped CSS on static child elements (#1223)

1.57.2

  • Fix scoped CSS on SVG elements (#1224)

1.57.1

  • Add each_value to contextProps (#1206)

1.57.0

  • Use classes (not attributes) for style encapsulation, and base36-encode hashes (#1118)

1.56.4

  • Allow component and state to be context names (#1213)
  • Don't remove @supports rules when cascade: false (#1215)

1.56.3

  • Top-level transitions work inside nested components (#1188)
  • Always use internal _mount method (#1201)

1.56.2

  • Null out key for children of keyed each blocks (#1202)

1.56.1

  • Fix if-in-each bug (#1195)
  • Cross-browser scrollX/scrollY support (#1175)

1.56.0

  • Internal refactor (#1122)
  • Use correct context for component events (#1184)
  • Allow observing $foo in dev mode (#1181)
  • Handle dynamic data in default slot (#1144)

1.55.1

  • Fix cancellation of store onchange handlers (#1177)
  • Write ["default"] instead of .default in legacy mode (#1166)
  • Upgrade Acorn (#1182)
  • Don't warn about capitalisation if options.name begins with non-alphabetical character (#1179)

1.55.0

  • Add immutable compiler option for Svelte and runtime option for Store (#1146)
  • Fix component store bindings (#1100)
  • Fire oncreate when custom element is attached (#1117)
  • Downgrade empty blocks to a warning (#1156)
  • Error on unclosed comment (#1156)

1.54.2

  • Prevent await blocks using stale state (#1131)
  • Prevent erroneous missing data warnings for custom elements (#1065)
  • Remove empty selectors in prod mode (#1138)
  • Escape attribute values in SSR mode (#1155)
  • Remove <noscript> elements in DOM mode (#1108)
  • Allow hydration of non-root <script>/<style> tags (#1163)
  • Allow interpolation in non-root <style> tags (#1163)

1.54.1

  • Hoist destructured references (#1139)
  • Add bind:volume for media elements (#1143)

1.54.0

  • Run oncreate hooks depth-first, top-to-bottom (#1135)
  • Render boolean attributes correctly in SSR mode (#1109)
  • Add feed aria role to expected roles when doing a11y checks (#1124)
  • More complete fix for case sensitive attributes (#1062)
  • Handle CLRF line endings in await block comments (#1132)

1.53.0

  • Base scoping selectors on <style> contents alone (#1091)

1.52.0

  • Deconflict referenced globals (#1079)
  • Validate contents of await blocks (#1061)
  • Fire oncreate for components in await blocks (#1061)
  • Automatically fix attribute casing (#1062)
  • Fix escaping in <script> and <style> (#1082)
  • Error if invalid characters are used in computed properties, and allow any valid identifier in props (#1083)
  • Don't run a11y tests on components (#1110)
  • Respect store option in SSR mode (#1107)

1.51.1

  • Only escape <, > and & characters (#1082)

1.51.0

  • Lock scroll bindings (#1071)
  • Escape HTML entities when compiling to static HTML (#1066)
  • Apply a11y warnings to SVG <a> attributes with xlink:href (#1008)

1.50.1

  • Prevent main fragment being created twice in custom elements (#1064)

1.50.0

  • Detect unused/misplaced components (#1039)
  • Warn on unused event definitions/transitions (#1051)
  • Remove whitespace inside <:Head> (#1026)
  • Optimise <title> (#1027)
  • Add bind: false option to disable two-way binding (#54)

1.49.3

  • Return html from SSR compiler render().toString() methods (#1044)
  • Correctly reinitialise dynamic components (#1040)
  • Allow <option> outside <select> (#1022)
  • Fix data references in await-block event handlers (#1032)

1.49.2

  • Add store.umd.js (#967)
  • Warn on use of this inside computed properties (#1033)

1.49.1

  • Pass store to children in SSR mode (#1029)

1.49.0

  • Support store as a component property (#1028)

1.48.0

  • Added <:Head> component for injecting contents into document head (#1013))
  • SSR render(...) method now returns a { html, css: { code, map }, head } object (#1013)
  • SSR renderCss(...) method is deprecated (#1013)
  • Add a preload function to components (#1015)
  • Expose this.root on nested components (#1023)

1.47.2

  • Deconflict computed properties against arguments to _recompute (#1012)
  • Allow await blocks in slots (#1018)
  • Allow components without slots to have whitespace as only child (#1007)
  • Correctly set toString on CompileError (#1016)

1.47.1

  • Sanitize filenames in SSR mode (#1005)

1.47.0

  • Support dynamic import(...) inside <script> tags (#1003)

1.46.1

  • await...then shorthand (#957)
  • Allow dynamic components inside elements (#993)
  • Don't use dataset on SVG nodes (#982)
  • Fix erroneous <figcaption> a11y warning (#991)
  • Handle empty classes when pruning unused selectors (#978)
  • Better trimming of SSR'd output (#976)
  • Don't add event to expectedProperties (#972)
  • Emit error on bad set arguments in dev mode (#990)

1.46.0

  • Pass filename through to preprocessors (#983)

1.45.0

  • Dynamic components (#971)

1.44.2

  • Fix await blocks with siblings (#974)
  • Fix await blocks inside if blocks (#975)

1.44.1

  • Fix bidirectional transitions that reference state (#962)

1.44.0

  • Add svelte.preprocess (#181, #876)
  • Add {{#await ...}} blocks (#654)

1.43.1

  • Fix parameterised transitions (#962)
  • Prevent boolean attributes breaking estree-walker expectations (#961)
  • Throw error on cyclical store computations (#964)

1.43.0

  • Export Store class to manage global state (#930)
  • Recognise aria-current (#953)
  • Support SSR register options including extensions (#939)
  • Friendlier error for illegal contexts (#934)
  • Remove whitespace around <:Window> components (#943)

1.42.1

  • Correctly append items inside a slotted each block (#932)
  • Fix <:Window bind:online/> (#936)
  • Attach globals to state upon initialisation (#908)

1.42.0

  • Implement indeterminate binding for checkbox inputs (#910)
  • Use <option> children as value attribute if none exists (#928)
  • Allow quoted property names in default export and sub-properties (#914)
  • Various improvements to generated code for bindings

1.41.4

  • Handle self-destructive bindings (#917)
  • Prevent innerHTML with <option> elements (#915)
  • Use dataset unless legacy is true (#858)
  • Add prepare script to facilitate installing from git (#923)

1.41.3

  • Prevent argument name clashes (#911)
  • Fix UMD factory arguments (#918)
  • Don't attempt to set computed values (#893)
  • Fix TypeScript build error (#919)

1.41.2

  • Handle attribute selectors with no value (#905)
  • Retain async keyword when extracting functions (#904)
  • Shallow clone data on initialisation (#891)

1.41.1

  • Fix updates of destructured each blocks (#897)
  • Don't warn on options.* event handler callee (#900)

1.41.0

  • onwarn and onerror receive default handlers as second arguments (#883)
  • Recognise muted as boolean property on <audio> elements (#886)
  • Array destructuring for each block contexts (#889)

1.40.2

  • Ignore @apply and similar in CSS (#871)
  • Properly escape CSS in custom elements (#872)

1.40.1

  • Always use explicit closing tags with innerHTML (#866)
  • Escape text in textContent and innerHTML expressions (#868)

1.40.0

  • Short fragment method names (#863)
  • Extract declarations out of default export (#756)

1.39.4

  • Extract shared init logic (#855)
  • Allow console.* calls in event handlers (#782)
  • Marker comments in output (#823)
  • Use textContent and innerHTML where appropriate (#23)
  • Various improvements to generated code

1.39.3

  • Allow slot='...' inside custom elements (#827)
  • Disallow slot='...' inside if/each blocks (#849)
  • Use correct parent node for slotted if blocks (#850)

1.39.2

  • Escape CSS in shadow DOM (#840)
  • Fix missing anchor bug inside SVG elements (#843)

1.39.1

  • Always use anchors for slotted content (#822)
  • Prevent ES6 in helpers (#838)
  • Correctly determine whether to use timeRangesToArray (#837)

1.39.0

  • Always attach fragment to shadow root (#821)
  • Add buffered, seekable, played bindings to media elements (#819)
  • Quote class properties in legacy mode (#830)
  • Warn on missing lang attribute on <html> (#828)

1.38.0

  • Compile-time a11y warnings (#815)
  • Remove redundant input blowback guards (#645)
  • Use component name in debugging messages (#781)

1.37.0

  • Experimental support for compiling to custom elements (#797)

1.36.0

  • Optimize style attributes where possible (#455)

1.35.0

  • set and get continue to work until destroy is complete (#788)
  • Observers of unchanged bound values don't fire incorrectly (#804)
  • Nested components with slotted content render correctly in SSR mode (#801)
  • More efficient rendering of raw and slotted content (#637)
  • Handle unquoted attributes in attribute selectors (#798)

1.34.0

  • Support nested <slot> elements (#790)
  • Attach options to instance (#550, #777)
  • Error if transitions are applied to component (#791)
  • Handle CSS variables in <style> tag (#757)

1.33.0

  • Replace {{yield}} with <slot> — adds fallback content named slots, and options.slots (#763)

1.32.0

  • Allow anchor initialisation option, alongside target (#784)
  • Remove leading CSS selectors safely (#783)

1.31.0

  • Add legacy compile option, which adds IE9 compatibility (#773)

1.30.0

  • Update all component bindings simultaneously (#760)
  • Fix @keyframes atrules with from and to selectors (#774)

1.29.3

  • Only recompute tag and attribute values if they could have changed (#768)
  • Fix CSS scoping with multiple levels of descendant selectors (#767)

1.29.2

  • Preserve space before non-parenthesized media query expression (#759)
  • Call create() on new iterations of static each blocks (#762)
  • Use change events as well as input events to bind range inputs (#740)

1.29.1

  • Replace set and destroy with noop when component is destroyed (#744)

1.29.0

  • Add static setup method (#578)
  • Hoist if block selectors (#751)
  • More sigil escaping fixes (#750)

1.28.1

  • Fix unescaping of special words in SSR mode (#741)

1.28.0

  • Support ref:foo as a CSS selector (#693)
  • Prevent magic-string bugs by only minifying CSS combinators if cascade: false (#743)
  • Don't throw an error if component is destroyed twice (#643)

1.27.0

  • Minify CSS and remove unused styles (#697)
  • Optimize ternary expressions when excluding unused CSS (#696)
  • Clear refs after ondestroy callbacks fire (#706)
  • Prevent certain forms of component binding blowback (#721)
  • Use helper to encapsulate styles (#375)
  • Event propagation shorthand — on:foo equals on:foo='fire("foo", event) (#638)
  • Allow refs.* in event handlers, and validate them (#686)

1.26.2

  • Unescape # characters (#722)

1.26.1

  • Fix select binding regression (#724)

1.26.0

  • Enforce correct order of operations when initialising (#708 and #714)
  • Ensure data is up-to-date when re-rendering yield block (#711)
  • Fix unescaping of strings, preserve at-rules in CSS (#712)
  • Preserve whitespace at end of each blocks (#713)

1.25.1

  • Better CSS sourcemaps (#716)

1.25.0

  • Fix hoisted event handlers (#699)
  • Fire intro.start and outro.start events (#702)
  • Preserve order of components in keyed each blocks (#700)
  • Add cssMap property to compiler output (#698)

1.24.0

  • Deconflict names with imports in SSR compiler (#655)
  • Improved transition performance (#670)
  • Run transitions on initial render (#651)
  • Add dev mode warning if hydrate is true but hydratable was false (#664)
  • Manipulate sourcemap to make missing loop values obvious (#683)
  • Only add CSS scoping attributes where necessary (#679)
  • Warn on unused CSS selectors (#678)
  • Fix <select> binding in loop (#685)
  • Prevent bindings from calling oncreate functions prematurely (#694)
  • Simpler codegen (#673)

1.23.4

  • Don't recreate if blocks incorrectly (#669)

1.23.3

  • Pass parameters to get_block (#667)

1.23.2

  • Fix if blocks being recreated on update (#665)

1.23.1

  • Fix each-else blocks that are empty on initial render (#662)

1.23.0

  • Hydration (#649)
  • Correctly transform CSS selectors with pseudo-elements (#658)

1.22.5

  • Fix nested component unmounting bug (#643)

1.22.4

  • Include ast in svelte.compile return value (#632)
  • Set initial value of <select> binding, if unspecified (#639)
  • Mark indirect dependencies of <select> bindings (i.e. the dependencies of their <option> values) (#639)

1.22.3

  • Fix nested component unmounting bug (#625)
  • Allow components to have computed member expression bindings (#624)
  • Handle empty <style> tags (#634)
  • Warn on missing component (#623)
  • Allow dynamic type attribute for unbound inputs (#620)
  • Rename addEventListener and removeEventListener directives (#621)

1.22.2

  • Escape template strings correctly in SSR output (#616)
  • Prevent magic-string deprecation warning (#617)

1.22.1

  • Sanitise event handler names (#612)

1.22.0

  • Symmetry between mount and unmount. This is potentially a breaking change if your components import other components that were precompiled with an earlier version of Svelte (#592)
  • Add cascade option, which prevents styles affecting child components if false, unless selectors are wrapped in :global(...) and keyframe declaration IDs are prefixed with -global-. This will become the default behaviour in v2 (#583)
  • Support binding to computed member expressions (#602)
  • Coerce empty string in number/range inputs to undefined, not 0 (#584)
  • Fix insert location of DOM elements in each/if/nested component edge cases (#610)

1.21.0

  • Always use helpers if referenced, not just for call expressions (#575)
  • Fix parsing of <textarea> children (#599)
  • Treat <textarea> value attributes and children as equivalent, and fail validation if both are present (#599)
  • Fix <textarea> SSR (#599)
  • Apply CSS transition styles immediately if transition has delay (#574)
  • Ensure transitionManager is treeshakeable (#593)
  • Fix for environments where node.style.animation is undefined (#587)
  • Fix order of operations when dealing with <select> elements (#590)
  • Downgrade 'invalid callee' to a warning (#579)
  • Convert to TypeScript (#573)

1.20.2

  • Fix destruction of compound if-blocks with outros (#572)

1.20.1

  • Fix insertion order of if blocks and their anchors (#569)

1.20.0

  • Faster, better updates of keyed each blocks (#373, #543)
  • Use element IDs to robustly track dynamically injected <style> tags (#554)
  • Abort outros before corresponding intros (#546)
  • Generate less code for if blocks with else blocks (#540)
  • Ensure {{yield}} block content is injected into the right place (#561)
  • Simpler, more readable codegen code (#559)
  • Validate transition directives (#564)
  • Apply delays to bidirectional transitions (#562)
  • Handle all valid HTML entities (#565)
  • Fix outros on compound if blocks (#565)
  • Validation for <:Window> tags (#565)
  • Increased test coverage (#565)

1.19.1

  • Export generateKeyframes, so that CSS transitions work

1.19.0

  • Experimental support for transitions (#7)
  • Use querySelector(':checked') instead of selectedOptions (#539)
  • Stringify helpers before bundling them, to avoid renaming errors (#538)

1.18.2

  • Parenthesize if-block conditions (#532)
  • Fix parsing of parenthesized expressions (#534)
  • Fix error on bind:checked that doesn't belong to a checkbox input (#529)

1.18.1

  • Allow destroy() in event handlers (#523)
  • Fix bug with {{yield}} blocks following elements (#524)

1.18.0

  • Visit <select> attributes after children, to ensure options are in the right state (#521)
  • Use sibling elements as anchors rather than creating comment nodes wherever possible (#3)

1.17.2

  • Replace bad characters when creating variable names based on element names (#516)

1.17.1

  • Fixes for static each-else and yield blocks (#509), (#514)
  • Code generation tweaks (#504), (#507)

1.17.0

  • Add currentTime, duration and paused bindings for media elements (#406)
  • Don't treat helpers as dependencies (#492)
  • Allow <:Window> event handlers to access component state (#497)
  • Allow two-way binding to properties named 'component' (#495)
  • Group checkbox bindings correctly, to avoid erroneously unchecking siblings (#498)
  • Validate two-way bindings (#494)
  • Allow dynamic each-block to have static else-block (#501)
  • Initialise <select> value correctly (#502)

1.16.0

  • Better code generation (#489), (#490), (#491)
  • Prevent binding blowback on initial render (#488)

1.15.1

  • Clone data before merging it with state (#479)
  • Apply binding event handlers before user event handlers (#486)

1.15.0

  • Dev mode — downgrade 'missing data' to a warning, and ignore whitelisted globals (#475)
  • Fix <select> value binding when options are updated late (#476)
  • Throw at compile time if event handler references invalid callee (#473)
  • Check for helper function purity (#473)
  • Validate namespace option (#473)

1.14.1

  • Replace bad characters when creating variable names based on attributes (#470)

1.14.0

  • Better guard against naming conflicts (#465)
  • Better error if getters and setters are used with methods (#425)
  • Don't create whitespace nodes inside elements that can't use them (#189)
  • Collapse consecutive if statements with the same condition (#450)
  • Window scroll bindings are bidirectional (#404)
  • Add bind:online to window (#404)
  • In dev mode, throw if read-only properties are set (#404)
  • Prevent conflicts with component name (#464)
  • Ensure event handler names are deconflicted (#466)

1.13.7

  • Fix observers — defer: true now triggers callback after DOM is updated (#441)
  • Handle empty computed property (#452)
  • Correctly bind one-way <select> value attributes with objects (#423)
  • Hoist event handlers inside each blocks, where possible (#456)
  • Don't bind event handler callbacks (#433)
  • Internal refactoring and neater code generation (#453)

1.13.6

  • Use assign helper instead of Object.assign for better performance and legacy compatibility (#431)
  • Improved code generation (#419), (#440), (#442)

1.13.5

  • Read range and number input values as numbers (#436)
  • Better error for bind:value='{{foo}}' (#437)

1.13.4

  • Prevent unclosed <script> tag causing infinite loop (#435)

1.13.3

  • Correctly handle {{true}}, {{false}} and {{null}} (#424)
  • Update <select> value attributes correctly (#423)
  • Bind custom event handler callbacks (#428)
  • Disallow import root (#430)
  • Prevent component bindings mutating the wrong object (#432)

1.13.2

  • Fix deep component bindings (#420)
  • Include css property in compiler output (#409)
  • Treat functions as mutable objects when recomputing (#413
  • Include magic-string in bundle (#410)
  • Disable unneeded Bublé transformations for slimmer output (#411)

1.13.1

  • Prevent infinite loops with pathological component bindings (#398)
  • More robust deconflicting (#401)

1.13.0

  • Add <:Window> meta tag with event listeners, and a handful of bindings (#371)
  • Don't uncheck radios incorrectly (#399)

1.12.1

  • Deconflict non-helper functions (addCss etc) (#388)
  • Allow reserved words in tags, e.g. {{class}} (#383)

1.12.0

  • Shorthand attributes — <Widget :foo/> is equivalent to <Widget foo='{{foo}}'/> (#384)
  • Support bind:group for radio and checkbox inputs (#311, #312)
  • Better sourcemap support for two-way bindings

1.11.4

  • Dev mode warning for bad component.observe arguments (#369)
  • Translate component.on('teardown', ...) to component.on('destroy', ...) and add dev warning (#365)
  • Use shared prototype to save bytes (#378)

1.11.3

  • Undo CSS behaviour change in 1.11.2 (#372)
  • Pin version of css-tree (#370)

1.11.2

  • Add component CSS to each document a component is rendered to (#331)

1.11.1

  • Fix two-way binding for components inside each blocks (#356)

1.11.0

  • Add format: 'eval' and svelte.create, to create components directly from source code (#345)
  • Node 4 compatibility (#109)

1.10.3

  • Prevent '</script>' string occurence breaking pages (#349)
  • Allow reference to whitelisted globals without properties (#333)
  • Don't remove &nbsp; incorrectly (#348)
  • let -> var in addCss block (#351)

1.10.2

  • Accept any case for doctype declarations (#336)
  • Allow non-top-level <script> and <style> tags to pass through without processing (#335)

1.10.1

  • typecheck argument in _set when in dev mode (#342)
  • Prevent duplicate helpers in non-shared mode (#337)

1.10.0

  • Component self-references with <:Self/> (#51)
  • Two-way binding with <select multiple> (#313)

1.9.1

  • Better error for malformed event handlers (#220)
  • Allow function expressions in tags (#269)

1.9.0

  • Add development warnings (#13), (#320), (#177), (#249)
  • Better error if parser encounters an unmatched closing tag (#321)

1.8.1

  • Allow implicitly closed elements (#318)
  • More informative error messages for unclosed elements/blocks (#258)
  • Deprecate onrender and onteardown in favour of oncreate and ondestroy (#40)

1.8.0

  • Prevent duplicate imports (#308)
  • Use input events (not change) for all input elements other than checkbox and radio, and textareas (#309)
  • Encapsulate keyframe declarations (#245)

1.7.1

  • Deconflict imports and shared helpers (#222)
  • Deconflict each-block contexts and reserved words (#222)
  • Allow shorthand properties in expressions (#296)

1.7.0

  • Include CSS AST in svelte.parse output (#302)
  • Better handling of CSS parse errors (#302)
  • Initialise <select> elements with two-way binding correctly (#301)
  • Allow local context in component event handlers inside each blocks (#290)
  • Fix two-way binding for components inside each blocks (#290)

1.6.11

  • Initialise dynamic <option> value correctly (#291)

1.6.10

  • Ensure sources and sourcesContent are populated in sourcemaps, even if none of the original code is used (#295)
  • Add outputFilename option to populate file and sources sourcemap properties correctly (#295)

1.6.9

  • Don't trigger bindings for torn-down components (#277)
  • SSR: Handle two-way bindings (#275)
  • Improve performance by checking data has changed before updates (#279)
  • Parse CSS with css-tree to prevent transformation errors with unconventional styles (#288)

1.6.8

  • Always trigger onrender, including when change initiator is a nested component (#263)
  • Handle default function parameters in computations (#274)

1.6.7

  • SSR: Fix apostrophes (#267)
  • Add xmlns attributes to SVGs (#262)

1.6.6

  • Omit text from comment anchors (#247)
  • Handle xlink attributes (#264)

1.6.5

  • Handle <!doctype> declarations (#255)

1.6.4

  • Fix updates of yields inside each blocks (20e1b05)
  • SSR: Handle attributes with values that begin with a number (#248)
  • Handle multiline comments in CSS (#252)

1.6.3

  • Fix {{yield}} bugs for components inside if and each blocks (#230, #231)
  • Set attributes on <svg> elements correctly (#233)
  • Add svelte.VERSION property to compiler

1.6.2

  • Use helpers for addEventListener, removeEventListener, setAttribute (#227)
  • Escape sharedPath (#229)
  • Handle attributes with values that begin with a number (#234)
  • Update dependencies

1.6.1

  • SSR: Handle component directives at arbitrary positions (#221)
  • Provide useful feedback on invalid void closing tag (#224)

1.6.0

  • Replace standalone: false with shared: true, or shared: 'custom/path/to/shared.js' (#218)
  • Include shared.js in package

1.5.0

  • Implement standalone: false (#9)
  • SSR: Handle component directives (216)

1.4.0

  • Keyed each blocks (#81)

1.3.1

  • Remove file extensions from AMD dependencies (#144)
  • Throw if options.name is illegal (#102)

1.3.0

  • SSR compiler: Support format option (#196)
  • SSR compiler: Don't self-close 'normal' elements (#200)
  • Remove leading spaces from scoped CSS (#140)
  • Internal refactoring

1.2.5

  • Allow whitelisted globals in templates (#185)
  • Intercept parse errors with options.onerror

1.2.4

  • SSR compiler: Implement {{{triples}}} (#197)
  • SSR compiler: Escape HTML in tags (#197)

1.2.3

  • Add support for namespace declaration for SVG (etc) components (#147)
  • Throw error if methods or lifecycle hooks are arrow functions that use this or arguments (#179)
  • Use setAttribute() for list attributes, to preserve link to <datalist> (#178)
  • Throw error if default export is not an object literal (#190)
  • Internal refactoring

1.2.2

  • Omit directives in server-side rendering (#163)
  • Handle comments in SSR (#165)
  • Support calling methods of event/this in event handlers (#162)
  • Remove mount from public API (#150)

1.2.1

  • Server-side rendering is available as a compiler option (generate: 'ssr') (#159)
  • Allow call expressions where function is not in helpers (#163)

1.2.0

  • Server-side rendering of HTML (#148) and CSS (#154)

1.1.3

  • Handle xmlns attributes correctly (#142)
  • Error on duplicate <style>/<script> tags rather than failing silently (#142)
  • Don't create whitespace text nodes inside SVG elements (#142)
  • Require void elements to be lowercase, to eliminate confusion with components (#137)

1.1.2

  • Deconflict variable names (#88, #126)

1.1.1

  • Support multiple SVG elements in a component (#130)

1.1.0

  • Separate fragment creation from mount (#91)
  • Trigger onrender hook at correct time for nested components (#103)
  • Fix keypath dynamic attributes in components (#46)
  • Implement {{yield}} (#112)
  • Optimise teardown (#99)
  • Require computed properties to have at least one dependency (#115)
  • Support {{#each ...}}...{{else}}...{{/each}} (#90)
  • Triple mustaches (#35)

1.0.7

  • Correctly escape HTML entities (#85)

1.0.6

  • Generate useful sourcemaps (#60)

1.0.5

  • Ensure compiler only generates ES5 code (#75)
  • get() without arguments returns entire state object (#73)

1.0.4

  • Handle empty attributes in elements and components (#63)
  • Detach top-level text nodes inside departing each blocks (#62)

1.0.3

  • Better generated code for if blocks, especially with else/elseif chains (#28)
  • Trim unnecessary whitespace from else/elseif blocks (#49)
  • Handle trailing comments in script tags (#64)

1.0.2

Set style.cssText rather than style (#44)

1.0.1

  • Preserve SVG namespace inside each blocks
  • Always use setAttribute with SVG elements

1.0.0

  • Generate AMD, CJS, IIFE and UMD builds
  • Correctly insert text nodes before anchors (#31)

0.3.0

  • Fix bug where departing element would unset ref incorrectly (#24)
  • Basic template validation (#6)
  • Fire onrender hooks once component is in DOM (#18)
  • Only detach nodes when necessary to do so (#26)

0.2.2

  • On second thoughts, don't transpile build. Was only really for Uglify's benefit, which is daft

0.2.1

  • Transpile build

0.2.0

  • Only generate UMD build, for now
  • Include dependencies in the build, treat as devDependencies
  • Faster initial render
  • Parent data overrides child defaults
  • Remove top-level text nodes on teardown
  • Handle readUntil errors in parser
  • Basic <select> binding
  • Handle missing data
  • Prevent infinite set/observe loops
  • Add bind:foo shorthand
  • else and elseif blocks
  • Hoist imports

0.1.1

  • Support unquoted attributes
  • Handle entities in attributes
  • Inline nested components
  • fire and on methods

0.1.0

  • Breaking change  Svelte compiler now generates constructor functions rather than factories (#2)
  • SVG support

0.0.2

  • First release capable of building TodoMVC

0.0.1

  • Just squatting on the package name