-
Notifications
You must be signed in to change notification settings - Fork 5
/
CHANGES
472 lines (343 loc) · 16.3 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
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
AUX 1.2: Changes since AUX 1.1
API Changes
===========
* EqBand: When the parameters of an eq band are changed by the user, the
userset and useraction events will now fire for the parameters freq, gain
and q. Previously, the userset and useraction events fired for the options x,
y, and z. This behavior was confusing and made it difficult to correctly bind
to those parameters. This is now resolved.
* Chart: It is now possible to pass a list of charts on creation.
* All widgets now use ResizeObserver to detect size changes. This helps in situations
in which a widget is resized using CSS (and not a change which results from changing
the window size).
AUX 1.1: Changes since AUX 1.0
Refactoring
===========
* All mixins have either been removed or replaced by equivalent functionality
* Widget.destroy no longer removes the node from the DOM
Removed Features
================
* The Widgets List, ListItem, SortableList, SortableListItem, TaggableListItem,
TaggableTreeItem, Tagger, TagNode, Tags and TreeItem have been removed.
AUX 1.0: Changes since Toolkit 1.3
--------------------------------------
Toolkit has been re-branded as 'AUX'. The first version is 1.0. In the Toolkit
version history this would have been Toolkit version 1.4. Toolkit 1.3 will be
maintained as a stable release with bugfixes.
Refactoring
===========
* All code is now organized into es6 modules
* Dropped support for IE
* Moved all DOM modifications from the constructor into
a new draw() method. This was done to allow constructing
widgets inside the WebComponent constructor.
* Most widgets now exist as WebComponents
Documentation
=============
* Updated missing documentation for many widgets
* Added documentation for implementing custom scale
transformations
* Added documentation for implementing custom Equalizer
filters
API Changes
===========
* renamed MeterBase to Meter
* Audiomath mixin was replaced by a module of free functions
* Renamed Expander to Expand
* Pager now uses the new Navigation widget (instead of ButtonArray)
* Removed the (internal) widgetize() API
* turned Colors mixin into a module with free functions
* Initial options are now passed in the constructor for all widgets,
instead of being passed to initialize() only
* Meter: title has been renamed to label
* MultiMeter: title has been renamed to label
* Graph: removed 'graphchanged' event
* Grid: removed 'gridchanged' event
* Meter: removed 'labelchanged', 'valuechanged' and 'basechanged' events
* LevelMeter: removed peak label
* Circular/Knob/ValueKnob: rename and remove some options - dot=>dots_default,
label=>labels_default, marker=>markers_default, title=>label
* Select: title has been renamed to label
* Colorpicker: title has been renamed to label
* ResponseHandle has been renamed to ChartHandle
* Widget: removed the 'active' option and the corresponding 'aux-inactive' CSS
class
* ChartHandle: 'label' has been renamed to 'format_label'
* ChartHandle: 'title' has been renamed to 'label'
* Select: 'selected' is -1 (instead of false) when no entry is selected
* Select: 'value' is undefined (instead of false) when no entry is selected
DOM Changes
===========
* Value: Removed surrounding DIV
* Select: Use DIVs instead of UL and LI
Bugfixes
========
* Graph: Fixed rendering of 'H' type curves
* Graph: Fixed rendering of some quadratic curves
* ResponseHandle: fixed missing zchangestarted event
Features
========
* Dynamics now has an optional handle for controlling settings
* Dynamics now has a knee parameter
* Added Panorama widget
* Added PhaseMeter widget
* Added ProgressBar widget
* Added Compressor, Expander, Gate and Limiter widgets
* Added different presets for common multi meter uses to MultiMeter:
* mono, stereo, 2.1, 3, 3.1, 4, 4.1, 5, 5.1, 7.1, dolby_digital_1_0,
dolby_digital_2_0, dolby_digital_3_0, dolby_digital_2_1,
dolby_digital_2_1.1, dolby_digital_3_1, dolby_digital_3_1.1,
dolby_digital_2_2, dolby_digital_2_2.1, dolby_digital_3_2,
dolby_digital_3_2.1, dolby_digital_ex, dolby_stereo, dolby_digital,
dolby_pro_logic, dolby_pro_logic_2, dolby_pro_logic_2x,
dolby_e_mono, dolby_e_stereo and dolby_e_5.1_stereo
* Added Buttons widget
* Added Navigation widget
* Added Timer class for fast resettable timers
(faster than manual setTimeout, etc.)
* ButtonArray.add_button now supports existing Button instances
* Added additional APIs to Base
* addEventListener and removeEventListener
as aliases for add_event and remove_event
* subscribe() for easier subscription
life cycle management
* added get_default() which returns the default
value of an option
* added once() for subscribing to an event once
* added get_option_type() which returns the type
of an option
* added 'interacting' option to widgets with user interaction (dragging, typing,
etc).
* Knob: added presets tiny, small, medium, large and huge
* Added implementations for common binding patters (see src/utils/binding.js)
* Added an Angular integration library (see docs/Angular.md)
* Added a boolean option 'square' to Chart (makes the Chart a square)
* Base: Added a initialize_children lifecycle event
* Widget: can now be actually visually hidden or shown using hide() and show().
Before this was only possible in Container. Sets the 'aux-hide' and 'aux-show'
CSS classes.
Tests
=====
* Added a new set of unit tests using mocha
* Added a visual regression testsuite using BackstopJS
* Added static code analysis using jshint
Styles
======
* removed all vendor prefixes
* Added one new default theme using CSS properties
Toolkit 1.3: Changes since Toolkit 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.
* Fixed rendering issues in inverted levelmeters with segments
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".
Toolkit 1.2: Changes since Toolkit 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
Toolkit 1.1: Changes since Toolkit 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.
Toolkit 1.0.0: Changes since Toolkit 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