Commit graph

150 commits

Author SHA1 Message Date
Pierre-Yves Gerardy
dc15acd791 Improve attrs setting performance
before:

> mutate styles/properties x 7,999 ops/sec ±10.87% (46 runs sampled)

after:

> mutate styles/properties x 16,104 ops/sec ±4.36% (66 runs sampled)
2018-06-01 21:27:02 +02:00
Pierre-Yves Gerardy
4197cf0ae1 Enable the tests for #1804 2018-06-01 21:27:02 +02:00
Pierre-Yves Gérardy
285cb5382f [render] cleanup and comments 2018-05-29 23:50:29 +02:00
Pierre-Yves Gérardy
144ce68192 [render/render] get rid of vnode.skip 2018-05-29 23:50:29 +02:00
Pierre-Yves Gérardy
2cfc68359d [render/render] Introduce longest increasing subsequence-based node moves in keyed diff, fix #1791, fix #2026 2018-05-29 23:50:29 +02:00
Pierre-Yves Gérardy
44e165a357 [render/render] Misc comment fixes 2018-04-23 13:52:03 +02:00
Pierre-Yves Gérardy
f7a95d8c12 Cleanup, comments, and optimize getKeyMap 2018-04-23 13:52:03 +02:00
Pierre-Yves Gérardy
801bde219e [render/render] move keyed cached nodes when needed, fix diff semantics for cached nodes, fix #2132 2018-04-23 13:52:03 +02:00
Pierre-Yves Gérardy
9490950c30 [render/render] Simplify updateNodes, fix #2128 2018-04-23 13:52:03 +02:00
Pierre-Yves Gérardy
c6693aa361 Disentangle keyed and unkeyed diff 2018-04-23 13:52:03 +02:00
Pierre-Yves Gérardy
203df39c30 Remove the DOM nodes recycling pool (fix #1653, fix #2023) 2018-04-16 09:45:45 +02:00
Pierre-Yves Gérardy
d21ba5ee6a Document the reason for the possibleParents map 2018-03-06 02:13:15 +01:00
Pierre-Yves Gérardy
ad46a21a7d [render] add support for SVG in m.trust() strings 2018-03-06 01:12:32 +01:00
Fabiano Taioli
83884bdc90 element value is not cleared when value valor change to undefined 2018-02-09 00:47:59 +01:00
Pierre-Yves Gérardy
1782fa8b63 render: fix perf regression introduced by #1918 2017-12-08 21:37:08 +01:00
Pierre-Yves Gérardy
9f09ac069c Address #2021 review comments 2017-12-04 14:38:39 +01:00
Pierre-Yves Gérardy
3f37d3d7c0 #2021 change log and docs 2017-12-04 14:38:39 +01:00
Pierre-Yves Gérardy
02aab654f0 render: remove check that may hide bugs 2017-12-04 14:38:39 +01:00
Pierre-Yves Gérardy
9c835f4eac render/updateNodes: call toFragment on the new vnodes, solves issues with actual fragments (fix #1991 partim 2) 2017-12-04 14:38:39 +01:00
Pierre-Yves Gérardy
39ff8d7217 render: make removeNode aware that it is removing children from an object that's brought back from the pool 2017-12-04 14:38:39 +01:00
Pierre-Yves Gérardy
98c053e12b render/updateNodes: revamp unkeyed list detection, don't skip null nodes in unkeyed lists when old and vnodes don't have the same length
Fix #2003 partim 2
2017-12-04 14:38:39 +01:00
Pierre-Yves Gérardy
e839c9e80a render/updateNodes: Don't fetch the next sibling from the pool 2017-12-04 14:38:39 +01:00
Pierre-Yves Gérardy
eaa9f589af render/updateNodes: recycling, clarify terminology, fix logic
fix #2003 partim 1
fix #1991 partim 1
2017-12-04 14:38:39 +01:00
Pierre-Yves Gérardy
8950760e85 render: extract pool addtition logic, don't run onremove on nodes that move from pool to pool (fix #1990) 2017-12-04 14:38:39 +01:00
robinchew
db2a12dec9 Trying to fix #1916 (#1918)
* Trying to fix #1916

* Remove test for rendering select options. Add back after resolving issue #1978.

* Add #1916 fix to change log.

* Revert "Remove test for rendering select options. Add back after resolving issue #1978."

This reverts commit d4c1be7c2319adf744f78ca787485f52be869208.

* Comment on why failing test for #1916 is commented out.
2017-10-31 20:37:51 +01:00
valtron
622e009811 recycling => shouldRecycle, Fix #1992 (#1993)
* Fix #1992

* doc in changelog

* add test for #1992
2017-10-16 08:38:44 +02:00
Mateusz Jaworski
8b56c70911 fix: Allow for changing focus in lifecycle hooks (#1988) 2017-10-13 22:31:03 -07:00
Isiah Meadows
ae27c0ff18 Merge pull request #1977 from isiahmeadows/remove-legacy-state
Remove support for `vnode.state = ...`
2017-10-04 18:00:16 -04:00
Isiah Meadows
19d2ba316c Remove support for vnode.state = ...
- Remove docs for it
- Remove tests for it
- Add runtime check for unexpected reassignment, since we can't freeze
  the property (we internally have to be able to modify it)
2017-10-02 19:57:48 -04:00
Isiah Meadows
348bed0a7e Allow xlink:href to get removed, fix option.value in mock 2017-10-01 19:34:12 -04:00
Isiah Meadows
a1a7038e55 Rework event diffing for better optimizability
Re-ordered the type checks so that I can avoid polymorphic property
lookups in event updates. (It improved the common case of no change by
a little over ~40%.)
2017-09-01 17:06:19 -04:00
Isiah Meadows
5209071011 Merge next into optimize-events 2017-08-31 05:43:39 -04:00
Jackson Nowotny
5303e70fde fixing merge conflicts 2017-08-29 10:30:45 -05:00
Jackson Nowotny
aaa448ac4e adding comment specifying bug 2017-08-29 10:28:00 -05:00
Jackson Nowotny
849e862413 Fixing IE bug causing active element to be null causing render function to throw error 2017-08-29 10:27:58 -05:00
Isiah Meadows
2c92d84058 Add support for object event handlers (using handleEvent)
- `handleEvent` is checked on dispatch, like in the DOM.
- Had to reorder attribute key checking so `undefined` events still got
  removed.
- Drive-by: Optimize the initial attribute key checking a little.
- Drive-by: Fix changelog v2.0.0 link in TOC.
2017-08-25 06:06:46 -04:00
Isiah Meadows
dbbdb0664a Reduce memory allocation/usage across multiple event handlers
- `handleEvent` is a very useful tool.
- Always use `addEventListener`/`removeEventListener`, since it's
  required for this optimization.
- Change log updated.
- Drive-by: make DOM mock work with both event listener types.
- Drive-by: eliminate possibility of `Object.prototype` interference.
2017-08-25 05:19:30 -04:00
spacejack
ae0b791530 Eleminate now-redundant if block. Add change-log notes. 2017-08-15 15:53:23 -04:00
spacejack
1e56f7763e More accurate style object diffs 2017-08-13 18:32:32 -04:00
Pierre-Yves Gérardy
c96e085799 core: don't call onremove on the children passed to components that return from their view, fix #1921 2017-07-31 11:48:15 +02:00
Pierre-Yves Gérardy
1fb64c91e3 Take the namespace of the root node into account, fix other ns oversight #1872 2017-06-14 01:59:45 +02:00
Pierre-Yves Gérardy
60e999fa89 [render/render] Add a special case for ; fix #1870 2017-06-12 18:42:46 +02:00
Isiah Meadows
712be2bcc3 Merge pull request #1862 from pygy/fix-1595-redux
Re-fix #1595
2017-05-31 02:56:29 -04:00
Isiah Meadows
66aa377548 Simplify ESLint guard 2017-05-31 02:44:15 -04:00
Pierre-Yves Gerardy
40429c8377 Pass namespace when creating new elements while updating a keyed list, fix #1820 2017-05-30 14:17:46 +02:00
Pierre-Yves Gerardy
4616160a52 redo #1595 2017-05-29 17:19:55 +02:00
Samuel Tilly
de4433cd31 Override namespace with xmlns attribute (#1825)
Fixes issue #1819 foreignObject inside SVG
2017-05-03 14:55:56 -04:00
spacejack
0f9d5f1631 Fix select option to use empty string value, add tests. 2017-04-30 15:04:37 -04:00
Isiah Meadows
b24c37c42d Revert "Pass vnode as second argument" 2017-04-28 16:40:13 -04:00
Isiah Meadows
e78d1b692c Support vnode event callbacks 2017-04-11 13:05:12 -04:00