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

34 KiB

Svelte changelog

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