-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCHANGES
314 lines (215 loc) · 10.7 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
Changes since version 1.2
--------------------------------------
Style Changes
=============
* Flex-Layout: The following widgets have a changed layout based on flex-box and grid:
* Fader (new DOM element: _track as container for _handle)
Fixes
=====
* TK.element: object argument wasn't handled as attributes but as styles
opposed to what the documentation says. This might break backward compatibility
in some cases.
* TK.DragValue: new option `limit` to keep value to be set between `min` and `max`.
added to `TK.Knob` and `TK.Fader` by default which disables `toolkit-warning`-class
by default in favour of less nervous lower and upper ends in those widgets.
Features
========
* TK.Value: New options
* `type` sets the type attribute of the input child
* `placeholder` sets the placeholder attribute of the input child
* `editmode` sets whether the userset event fires on hitting enter (`onenter`) or immediately after every key press (`immediate`)
* TK.Dialog was officially added (including docs, CSS and AWML abilities)
* TK.Color: new universal conversion functions taking any kind of color parameter or model
New
===
* TK.ColorPicker and TK.ColorPickerDialog officially went into master.
Changes
=======
* TK.Pager: drop option `overlap` due to new flex layout was already missing since 1.3 but not removed.
* TK.Button: options.layout defaults to "horizontal".
Changes since version 1.1
--------------------------------------
New Features
============
o added DragCapture. DragCapture implements a pointer capture logic. It is now used
in DragValue, Drag and ResponseHandler. It automatically supports multi touch.
o Iconset as font
Improvements
============
o DragValue: The 'blind_angle' option now applies to all choices of the 'direction'
option.
o DragValue: can be reversed by setting the option "reverse" to true.
o Drag: supports CSS transformations if option "transform" is set to true.
o ResponseHandle: has real MultiTouch support. This also applies to the z_handling
gesture, which means that any number of touch points can now drag handles in the
EQ.
o Button/Toggle: set URL or class name for icon
o Faders got title and value ChildWidgets.
o Scale: New child elements pointer and bar to visualize values within Scale.
o Window: complete rewrite. Less DOM nodes, less complexity, using new
toolkit APIs. Additionally layout switched from table-like div zoo to
more slick flexbox.
o Value: new option "readonly"
o Refactorering to allow using toolkit in module context. This allows
using it from within Angular or similar frameworks and to bundle it
with tools such as webpack.
o ValueKnob: All children are of class ChildWidget now. This breaks the
use of "label" option for TK.Label, had to be renamed to "title".
o MeterBase: Title and value label are real widgets now. Their name changed
so they don't have an underscore any more:
_label -> label and _title -> title
o MultiMeter: Title is a ChildWidget now. Name changed from _title to title.
o ValueButton: _bar, _base and marker were removed in favour of new Scale ChildWidget.
x
API Changes
===========
o The return value of event handlers is processed differently now.
Any return value which is not undefined will interrupt the execution of
any other handlers. fire_event will return that value.
This change was necessary because some DOM events use values !== false for
cancellation. It also makes more complex signalling logic possible for events.
This is used by the new DragCapture class.
o Circular elements switched the option for the opening angle from "basis"
to "angle". This is to separate the distance to drag on Knob and ValueKnob
from the angle.
o Window: All sub elements are real widgets now using the new ChildWidget API.
There's only header and footer element left, header_left, header_center, header_right,
footer_left, footer_center and footer_right are removed.
The options are reduced to only header and footer, too. Setting one of them
to false removes the element from the window. It's not possible to set
simple strings without being wrapped in an array anymore.
There's a new element to be added to header or footer: "resize".
The option "resizable" was dropped in favour of setting "resize"
in "header" or "footer".
o Window: "resize" handle had to be renamed since it overwrote the resize function
handle. New identifier for the resize handle is "size".
TODO: startdrag and stopdrag events aren't fired in TK.Drag. This stops
Window from un-maximizing and other things.
Style Changes
=============
* Flex-Layout: The following widgets have a changed layout based on flex-box and grid:
* Button (_cell member was dropped, icon and label are direct flex children)
* ButtonArray
* ValueKnob
* MeterBase
* LevelMeter
* Select
* Pager
* MultiMeter
* ValueButton
Version 1.1: Changes since version 1.0
-----------------------------------------
New Features
============
o added MultiLevelMeter widget.
o Events can now be cancelled by returning 'false' from an event handler. When
used for native DOM events this will make the native event handler to return
false, aswell.
o The userset() method was added to all widgets. It is used internally whenever
an option is changed by user interaction. It fires the 'userset' event, which
has the same API as the 'useraction' event. The 'userset' event can be
cancelled, in which case the option will not be set. This can be used to
prevent or restrict user interaction.
Improvements
============
o rewrote most of the rendering path of ResponseHandle. The code
is now more concise and supports different settings more flexibly.
For instance, the z_handle can now be positioned in all 8 positions
for all modes
o rewrote the mouse/touch-event handling in Toggle. In particular it now
properly handles multiple touchpoints and should work more reliable in
edge cases.
o The mouseevents in DragValue and ResponseHandle will now compare the button
state between different events. When the button state changes, the drag
action will be cancelled. This works around problems where the mouseup
event is not received.
API Changes
===========
o the add_event() method no longer accepts flags to automatically
preventDefault or stopPropagation. These have to be called manually now.
o The 'pointerdown' and 'pointerup' synthetic events have been removed.
Version 1.0.0: Changes since version 0.66
-----------------------------------------
Browser support
===============
o added many compatibility helpers to support older browsers. Most widgets
work in IE9 and upwards. The list of supported browsers will change in future
versions.
API Changes
===========
o Every widget must to be a descendant of an instance of TK.Root in order
to be drawn and resized correctly. See 'docs/rendering.md' for details.
o The set() method now returns the actual value set. Note that this value can be
different from the value passed, for example when using grid snapping.
Improvements
============
o moved all documentation to jsdoc syntax
o documented more options and methods
o added an option 'element' to allow widgets to resuse an existing
DOM element
o added many warnings and diagnostics for incorrect options or wrong API calls
o reimplemented TK.Scale to draw better automatic scales and labels
o added the TK.Expander widget. It can be used to implement complex logic to
interfaces more responsive. See its documentation for more information.
o added multi-touch support to TK.DragValue, which for example now allows
dragging several faders simultaneously.
o added standard gain to decibel full scale transformations to AudioMath
Cleanup
=======
o Used explicit child selectors for most widgets. This is usually faster
and avoid possible mismatches in containers (e.g. Pager).
o Separated the CSS definitions of all widgets into 'functional' definitions
and those for layout/design. This simplifies creating custom stylesheets.
o Activated JavaScript strict-mode in all source files.
o Replaced all toolkit constants by strings.
This is an incompatible change.
o Moved many 'internal' functions into real private helper methods.
o reduced the number of leaked event callbacks
o string labels are now always interpreted as text. Adding more complex labels
is still supported by passing a DOM element or a document fragment.
This is an incompatible change.
o Avoid using the global namespace for any variables. All toolkit classes
and functions are now available in the 'TK' namespace. All widgets are
still added to the global scope for compatibility. They will be removed from
the global scope in a future version.
o Removed all non ASCII characters from the source code to avoid encoding
errors.
o Avoid multiple inheritance where possible.
Performance improvements
========================
o LevelMeter now uses a canvas overlay. It also optimizes the rendering
of segmented level meters.
o Added standalone version of TK.sprintf.
o Pager was reimplemented to use CSS transitions and remove hidden pages
from the DOM.
o Implemented new tooltip widgets which does not require a relayout.
o Only redraw or resize the visible parts of the widget tree.
o Redesigned how the DOM resize event API is used. All widgets now resize
automatically, by doing necessary measurements once after a resize event.
o Added a clean representation of a widget tree.
o Ranged: implemented faster and cleaner snap methods as asm.js modules. Note
that the 'nosnap' option was removed.
o Moved rendering of all widgets into a redraw method. The code was also
refactored to redraw only those parts of the DOM, which depend on options
which have changed since the last redraw.
o Implemented all filters and other audio-related transformations as asm.js
modules
o DOM scheduling
DOM scheduling is a technique, which aims to reorder DOM API calls in order
to optimize rendering performance. It is implemented using a simple priority
based scheduler, which runs all operations in an animation callback.
See 'docs/rendering.md' for more details.
o Used more local variables where possible to avoid unecessary lookups.
o Use CSS in favour of JavaScript
Simplify rendering of widgets by removing lots of JavaScript layouting
code replacing it with CSS. This breaks older layouts which have to be
refactored in order to reflect the changes done to CSS.
o Simplify DOM of widgets by using techniques like pseudo CSS elements
for drawing dynamic background compositions like in Fader
o Re-layout some widgets to have most of the layout options formerly
flagged with "initialize" changeable on runtime
o Add some more layout options to some widgets like Fader
Changes before version 0.66
---------------------------
o removed mootools dependency
o added a custom sprintf implementation