forked from nexus-js/ui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNexusUI.map
1 lines (1 loc) · 405 KB
/
NexusUI.map
1
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap e7c2e3c566e62c2f1345","webpack:///./index.js","webpack:///./lib/main.js","webpack:///./lib/interfaces/index.js","webpack:///./lib/interfaces/position.js","webpack:///./lib/util/svg.js","webpack:///./lib/util/math.js","webpack:///./lib/core/interface.js","webpack:///./lib/util/dom.js","webpack:///./lib/util/util.js","webpack:///./lib/util/touch.js","webpack:///./~/events/events.js","webpack:///./lib/models/step.js","webpack:///./lib/util/interaction.js","webpack:///./lib/models/toggle.js","webpack:///./lib/interfaces/slider.js","webpack:///./lib/interfaces/toggle.js","webpack:///./lib/interfaces/button.js","webpack:///./lib/components/buttontemplate.js","webpack:///./lib/interfaces/textbutton.js","webpack:///./lib/interfaces/radiobutton.js","webpack:///./lib/interfaces/number.js","webpack:///./lib/interfaces/select.js","webpack:///./lib/interfaces/dial.js","webpack:///./lib/interfaces/piano.js","webpack:///./lib/interfaces/sequencer.js","webpack:///./lib/models/matrix.js","webpack:///./lib/models/sequence.js","webpack:///./lib/models/drunk.js","webpack:///./lib/models/counter.js","webpack:///./lib/time/interval.js","webpack:///./lib/interfaces/pan2d.js","webpack:///./lib/interfaces/tilt.js","webpack:///./lib/interfaces/multislider.js","webpack:///./lib/interfaces/pan.js","webpack:///./lib/interfaces/envelope.js","webpack:///./lib/interfaces/spectrogram.js","webpack:///./lib/interfaces/meter.js","webpack:///./lib/interfaces/oscilloscope.js","webpack:///./lib/core/rack.js","webpack:///./lib/util/transform.js","webpack:///./lib/tuning/tuning.js","webpack:///./lib/models/radio.js","webpack:///./~/waaclock/index.js","webpack:///./~/waaclock/lib/WAAClock.js","webpack:///./~/process/browser.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;ACtCA,aAAY,CAAC;;;;KAEN,OAAO,uCAAM,CAAY;;kBAEjB,OAAO,C;;;;;;;;;;;;;;;;SCmHN,MAAM,GAAN,MAAM;SAGN,OAAO,GAAP,OAAO;SAGP,KAAK,GAAL,KAAK;;;;AA7HrB,aAAY,CAAC;;KAEN,UAAU,uCAAM,CAAe;;KAC/B,IAAI,uCAAM,CAAa;;KACvB,IAAI,uCAAM,EAAa;;KACvB,IAAI,uCAAM,EAAiB;;KACtB,SAAS,+CAAM,EAAkB;;AAE7C,KAAI,OAAO,GAAG,mBAAO,CAAC,EAAkB,CAAC,CAAC;AAC1C,KAAI,KAAK,GAAG,mBAAO,CAAC,EAAgB,CAAC,CAAC;AACtC,KAAI,KAAK,GAAG,mBAAO,CAAC,EAAgB,CAAC,CAAC;AACtC,KAAI,QAAQ,GAAG,mBAAO,CAAC,EAAmB,CAAC,CAAC;AAC5C,KAAI,MAAM,GAAG,mBAAO,CAAC,EAAiB,CAAC,CAAC;;KAEjC,QAAQ,uCAAM,EAAU;;KACxB,QAAQ,uCAAM,EAAiB;;;;;;KAOhC,OAAO;AAEE,YAFT,OAAO,CAEG,OAAO,EAAE;2BAFnB,OAAO;;AAIL,UAAK,IAAI,GAAG,IAAI,UAAU,EAAE;AACxB,WAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;MAC/B;;AAED,UAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AAClB,WAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;MACzB;;AAED,SAAI,IAAI,GAAG;AACT,aAAQ,IAAI;MACb,CAAC;;AAEF,SAAI,MAAM,GAAG;AACX,gBAAW,OAAO;AAClB,cAAS,KAAK;AACd,cAAS,KAAK;AACd,iBAAY,QAAQ;AACpB,eAAU,MAAM;MACjB,CAAC;;AAEF,UAAK,IAAI,GAAG,IAAI,MAAM,EAAE;AACtB,WAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;MACzB;;AAED,UAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AACpB,WAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;MACvB;;AAED,SAAI,cAAc,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,kBAAkB,CAAC;AACtE,SAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,IAAI,cAAc,EAAE,CAAC;;AAEhD,SAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACvB,SAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAE3C,SAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzC,SAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACnB,SAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;;AAEzB,SAAI,CAAC,MAAM,GAAG;AACZ,aAAM,EAAE,MAAM;AACd,WAAI,EAAE,MAAM;AACZ,YAAK,EAAE,MAAM;AACb,WAAI,EAAE,MAAM;AACZ,kBAAW,EAAE,MAAM;AACnB,iBAAU,EAAE,MAAM;MACnB,CAAC;;AAEF,SAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,SAAI,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;;AAGzB,SAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AACd,UAAK,IAAI,GAAG,IAAI,UAAU,EAAE;AAC1B,WAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAC,GAAG,CAAC,CAAC;MAC9C;;;;AAOD,SAAI,mBAAmB,GAAG,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACjE,SAAI,sBAAsB,GAAG,wCAAwC,CAAC;AACtE,SAAI,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACvD,qBAAgB,CAAC,IAAI,GAAG,UAAU,CAAC;AACnC,qBAAgB,CAAC,SAAS,GAAG,sBAAsB,CAAC;AACpD,SAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,WAAI,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,UAAU;AAC9C,aAAM,CAAC,YAAY,CAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;MAC/D,MAAM;AACL,eAAQ,CAAC,KAAK,CAAC,SAAS,GAAC,sBAAsB,GAAC,UAAW,CAAC,CAAC;MAC9D;;IAGJ;AAHI;gBA3EH,OAAO;AAoFL,YAAO;YAJA,YAAG;AACZ,gBAAO,IAAI,CAAC,QAAQ,CAAC;QACtB;YAEU,UAAC,GAAG,EAAE;AACf,aAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAClB,aAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;AACpB,aAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,aAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB;;;;UAzFC,OAAO;;;AA+Fb,KAAI,KAAK,GAAG,IAAI,OAAO,EAAE,CAAC;;AAEnB,UAAS,MAAM,GAAG;AACrB,UAAO,KAAK,CAAC,MAAM,CAAC;EACvB;;AACM,UAAS,OAAO,GAAG;AACtB,UAAO,KAAK,CAAC,OAAO,CAAC;EACxB;;AACM,UAAS,KAAK,GAAG;AACpB,UAAO,KAAK,CAAC,KAAK,CAAC;EACtB;;sBAEc,KAAK,C;;;;;;;;kBCjIL;AACb,WAAQ,EAAE,mBAAO,CAAC,CAAY,CAAC;AAC/B,SAAM,EAAE,mBAAO,CAAC,EAAU,CAAC;AAC3B,SAAM,EAAE,mBAAO,CAAC,EAAU,CAAC;;;AAG3B,SAAM,EAAE,mBAAO,CAAC,EAAU,CAAC;AAC3B,aAAU,EAAE,mBAAO,CAAC,EAAc,CAAC;AACnC,cAAW,EAAE,mBAAO,CAAC,EAAe,CAAC;AACrC,SAAM,EAAE,mBAAO,CAAC,EAAU,CAAC;AAC3B,SAAM,EAAE,mBAAO,CAAC,EAAU,CAAC;AAC3B,OAAI,EAAE,mBAAO,CAAC,EAAQ,CAAC;AACvB,QAAK,EAAE,mBAAO,CAAC,EAAS,CAAC;AACzB,YAAS,EAAE,mBAAO,CAAC,EAAa,CAAC;AACjC,QAAK,EAAE,mBAAO,CAAC,EAAS,CAAC;AACzB,OAAI,EAAE,mBAAO,CAAC,EAAQ,CAAC;AACvB,cAAW,EAAE,mBAAO,CAAC,EAAe,CAAC;AACrC,MAAG,EAAE,mBAAO,CAAC,EAAO,CAAC;AACrB,WAAQ,EAAE,mBAAO,CAAC,EAAY,CAAC;AAC/B,cAAW,EAAE,mBAAO,CAAC,EAAe,CAAC;AACrC,QAAK,EAAE,mBAAO,CAAC,EAAS,CAAC;AACzB,eAAY,EAAE,mBAAO,CAAC,EAAgB,CAAC;EACxC,C;;;;;;;ACrBD,aAAY,CAAC;;;;;;;;;;;;AAEb,KAAI,GAAG,GAAG,mBAAO,CAAC,CAAa,CAAC,CAAC;AACjC,KAAI,SAAS,GAAG,mBAAO,CAAC,CAAmB,CAAC,CAAC;AAC7C,KAAI,IAAI,GAAG,mBAAO,CAAC,EAAgB,CAAC,CAAC;;KACzB,WAAW,+CAAM,EAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuC7B,QAAQ;AAEhB,YAFQ,QAAQ,GAEb;2BAFK,QAAQ;;AAIzB,SAAI,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;;AAExB,SAAI,QAAQ,GAAG;AACb,aAAQ,CAAC,GAAG,EAAC,GAAG,CAAC;AACjB,aAAQ,UAAU;AAClB,aAAQ,CAAC;AACT,aAAQ,CAAC;AACT,cAAS,CAAC;AACV,UAAK,GAAG;AACR,aAAQ,CAAC;AACT,aAAQ,CAAC;AACT,cAAS,CAAC;AACV,UAAK,GAAG;MACT,CAAC;;AAEF,gCAnBiB,QAAQ,6CAmBnB,SAAS,EAAC,OAAO,EAAC,QAAQ,EAAE;;AAGlC,SAAI,CAAC,EAAE,GAAG,IAAI,IAAI,CAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;AACnG,SAAI,CAAC,EAAE,GAAG,IAAI,IAAI,CAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;;AAEnG,SAAI,CAAC,QAAQ,GAAG;AACd,QAAC,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAC,YAAY,EAAC,CAAC,CAAC,EAAC,IAAI,CAAC,KAAK,CAAC,EAAC,CAAC,IAAI,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC;AACzF,QAAC,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAC,UAAU,EAAC,CAAC,CAAC,EAAC,IAAI,CAAC,KAAK,CAAC,EAAC,CAAC,IAAI,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC;MACxF,CAAC;AACF,SAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;AAC3C,SAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;;AAE3C,SAAI,CAAC,IAAI,EAAE,CAAC;AACZ,SAAI,CAAC,MAAM,EAAE,CAAC;IAEf;;aAnCkB,QAAQ;;gBAAR,QAAQ;AAqC3B,mBAAc;cAAA,0BAAG;;AAEf,aAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACjC,aAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErC;;AAED,kBAAa;cAAA,yBAAG;;AAEZ,aAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,IAAI,CAAC,KAAK,CAAC,EAAC,CAAC,IAAI,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC,CAAC;AACvD,aAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,IAAI,CAAC,KAAK,CAAC,EAAC,CAAC,IAAI,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC,CAAC;;AAEvD,aAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEtD,aAAI,CAAC,UAAU,GAAG;AAChB,cAAG,EAAE,EAAC,EAAE,IAAI,CAAC,aAAa,GAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EACxC,CAAC;AACF,aAAI,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;;AAE7C,aAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAC,IAAI,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC;AAC1C,aAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAC,IAAI,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;AAC3C,aAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACnD;;AAED,mBAAc;cAAA,0BAAG;AACb,aAAI,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACtD,aAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtD;;AAED,WAAM;cAAA,kBAAG;AACP,aAAI,IAAI,CAAC,OAAO,EAAE;;AAEhB,eAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;UAChD,MAAM;;AAEL,eAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;UACjD;;AAED,aAAI,CAAC,eAAe,GAAG;AACrB,YAAC,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK;AAClC,YAAC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM;UAClD,CAAC;;AAEF,aAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACpD,aAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACrD;;AAGD,UAAK;cAAA,iBAAG;AACN,aAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AACpC,aAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AACpC,aAAI,CAAC,IAAI,EAAE,CAAC;QACb;;AAED,SAAI;cAAA,gBAAG;AACL,aAAI,IAAI,CAAC,OAAO,EAAE;AAChB,eAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,eAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,eAAI,CAAC,EAAE,CAAC,YAAY,CAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAE,CAAC;AAC9C,eAAI,CAAC,EAAE,CAAC,YAAY,CAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAE,CAAC;AAC9C,eAAI,CAAC,IAAI,CAAC,QAAQ,EAAC;AACjB,cAAC,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK;AAChB,cAAC,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK;YACjB,CAAC,CAAC;AACH,eAAI,CAAC,MAAM,EAAE,CAAC;UACf;QACF;;AAED,YAAO;cAAA,mBAAG;AACR,aAAI,CAAC,MAAM,EAAE,CAAC;QACf;;AAYG,MAAC;;;;;;;;YAJA,YAAG;AACN,gBAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;QACtB;YAEI,UAAC,KAAK,EAAE;AACX,aAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,aAAI,CAAC,IAAI,CAAC,QAAQ,EAAC;AACjB,YAAC,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK;AAChB,YAAC,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK;UACjB,CAAC,CAAC;AACH,aAAI,CAAC,MAAM,EAAE,CAAC;QACf;;AAYG,MAAC;;;;;;;;YAJA,YAAG;AACN,gBAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;QACtB;YAEI,UAAC,KAAK,EAAE;AACX,aAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,aAAI,CAAC,IAAI,CAAC,QAAQ,EAAC;AACjB,YAAC,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK;AAChB,YAAC,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK;UACjB,CAAC,CAAC;AACH,aAAI,CAAC,MAAM,EAAE,CAAC;QACf;;AAIG,eAAU;YAAA,YAAG;AACf,gBAAO;AACL,YAAC,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU;AACrB,YAAC,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU;UACtB,CAAC;QACH;;AAUG,SAAI;;;;;;;YAJA,YAAG;AACT,gBAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;QACpB;YAEO,UAAC,CAAC,EAAE;AACV,aAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;AAChB,aAAI,CAAC,MAAM,EAAE,CAAC;QACf;;AAUG,SAAI;;;;;;;YAJA,YAAG;AACT,gBAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;QACpB;YAEO,UAAC,CAAC,EAAE;AACV,aAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;AAChB,aAAI,CAAC,MAAM,EAAE,CAAC;QACf;;AAWG,SAAI;;;;;;;YAJA,YAAG;AACT,gBAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;QACpB;YAEO,UAAC,CAAC,EAAE;AACV,aAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;AAChB,aAAI,CAAC,MAAM,EAAE,CAAC;QACf;;AAWG,SAAI;;;;;;;YAJA,YAAG;AACT,gBAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;QACpB;YAEO,UAAC,CAAC,EAAE;AACV,aAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;AAChB,aAAI,CAAC,MAAM,EAAE,CAAC;QACf;;AAWG,UAAK;;;;;;;YAJA,YAAG;AACV,gBAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;QACrB;YAEQ,UAAC,CAAC,EAAE;AACX,aAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC;AACjB,aAAI,CAAC,MAAM,EAAE,CAAC;QACf;;AAWG,UAAK;;;;;;;YAJA,YAAG;AACV,gBAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;QACrB;YAEQ,UAAC,CAAC,EAAE;AACX,aAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC;AACjB,aAAI,CAAC,MAAM,EAAE,CAAC;QACf;;AAWG,SAAI;;;;;;;;YAHA,YAAG;AACT,gBAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7B;YACO,UAAC,CAAC,EAAE;AACV,aAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AACzB,aAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1B;;;;UA1PkB,QAAQ;IAAS,SAAS;;kBAA1B,QAAQ,C;;;;;;AC7C7B,aAAY,CAAC;;AAEb,KAAI,IAAI,GAAG,mBAAO,CAAC,CAAc,CAAC,CAAC;;kBAEpB;;AAEb,SAAM,EAAE,UAAC,IAAI,EAAK;AAChB,YAAO,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;IACrE;;AAED,MAAG,EAAE,UAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAK;;AAE3C,SAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/C,SAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;;AAE/C,SAAI,YAAY,GAAG,QAAQ,GAAG,UAAU,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;AAE5D,SAAI,CAAC,GAAG,CACJ,GAAG,EAAE,KAAK,CAAC,CAAC,GAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAC,CAAC,EACzB,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAC,CAAC,CAC5D,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;AAEZ,YAAO,CAAC,CAAC;IACV;;AAED,iBAAc,EAAE,UAAC,IAAI,EAAC,aAAa,EAAK;;AAEtC,SAAI,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;AAC5C,SAAI,KAAK,GAAG,EAAE,CAAC;;AAEf,SAAI,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,gBAAgB,CAAC,CAAC;AACxF,aAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAChC,aAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnC,aAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnC,aAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;;AAElC,SAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;;AAE3B,UAAK,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,aAAa,EAAC,CAAC,EAAE,EAAE;AAChC,WAAI,KAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;AAC1E,YAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAC,CAAC,CAAC,CAAC;;;AAGlC,eAAQ,CAAC,WAAW,CAAC,KAAI,CAAC,CAAC;AAC3B,YAAK,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;MAClB;;AAED,YAAO;AACL,SAAE,EAAE,EAAE;AACN,YAAK,EAAE,KAAK;AACZ,cAAO,EAAE,QAAQ;MAClB,CAAC;IAEH;;EAEF,C;;;;;;ACvDD,aAAY,CAAC;;;;;;;;;;;;;;AAcb,QAAO,CAAC,IAAI,GAAG,UAAC,KAAK,EAAC,GAAG,EAAC,GAAG,EAAK;AAChC,UAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,GAAG,CAAC,CAAC;EAC1C,CAAC;;AAEF,QAAO,CAAC,SAAS,GAAG,UAAC,KAAK,EAAC,GAAG,EAAC,GAAG,EAAK;AACrC,UAAS,CAAC,KAAK,GAAC,GAAG,KAAK,GAAG,GAAC,GAAG,CAAC,CAAG;EACpC,CAAC;;;;;;;;;;;;;;AAcF,QAAO,CAAC,KAAK,GAAG,UAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAK;AACvD,OAAI,KAAK,KAAK,KAAK,EAAE;AACnB,YAAO,MAAM,CAAC;IACf;AACD,UAAS,CAAC,KAAK,GAAG,KAAK,KAAK,MAAM,GAAG,MAAM,CAAC,IAAK,KAAK,GAAG,KAAK,CAAC,GAAI,MAAM,CAAC;EAC3E,CAAC;;AAEF,QAAO,CAAC,OAAO,GAAG,UAAC,CAAC,EAAC,CAAC,EAAK;AACzB,OAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC;;AAE7B,OAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;AAC5B,OAAI,KAAK,GAAG,CAAC,EAAE;AACb,UAAK,GAAG,KAAK,GAAI,CAAC,GAAG,IAAI,CAAC,EAAG,CAAC;IAC/B;AACD,UAAO,EAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;EAClC,CAAC;;AAEF,QAAO,CAAC,WAAW,GAAG,UAAS,MAAM,EAAE,KAAK,EAAC;AAC3C,OAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B,OAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B,UAAO,EAAC,CAAC,EAAE,MAAM,GAAC,GAAG,EAAE,CAAC,EAAE,MAAM,GAAC,GAAG,GAAC,CAAC,CAAC,EAAC,CAAC;EAC1C,CAAC;;;;;;;;;;;AAaF,QAAO,CAAC,KAAK,GAAG,UAAS,IAAI,EAAE,KAAK,EAAE;AACpC,UAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,CAAC;;AAEF,QAAO,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE;AAChC,UAAO,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACzC,CAAC;;;;;;;;;AASF,QAAO,CAAC,IAAI,GAAG,UAAS,IAAI,EAAE;AAC5B,UAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAG,CAAC,IAAI,GAAC,EAAE,IAAE,EAAE,CAAE,GAAG,GAAG,CAAC;EAC1C,CAAC;;;;;;;;;;;;AAYF,QAAO,CAAC,MAAM,GAAG,UAAS,GAAG,EAAC,GAAG,EAAC,GAAG,EAAE;AACrC,UAAO,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;EAChC,CAAC;;;;;;;;;AASF,QAAO,CAAC,IAAI,GAAG,YAAW;AACxB,UAAO,SAAS,CAAC,EAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;EACtD,CAAC;;;;;;;;;;;;AAYF,QAAO,CAAC,MAAM,GAAG,UAAS,GAAG,EAAE;AAC7B,UAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,GAAG,CAAC,CAAC;EACxB,CAAC;;;;;;;;;;;AAWF,QAAO,CAAC,EAAE,GAAG,UAAS,MAAM,EAAC,MAAM,EAAE;AACnC,OAAI,CAAC,MAAM,EAAE;AACX,WAAM,GAAG,MAAM,CAAC;AAChB,WAAM,GAAG,CAAC,CAAC;IACZ;AACD,OAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;AAClC,OAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;AACnC,UAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAE,IAAI,GAAC,GAAG,CAAC,GAAC,GAAG,CAAC,CAAC;EACjD,CAAC;;;;;;;;;;;AAWF,QAAO,CAAC,EAAE,GAAG,UAAS,MAAM,EAAC,MAAM,EAAE;AACnC,OAAI,CAAC,MAAM,EAAE;AACX,WAAM,GAAG,MAAM,CAAC;AAChB,WAAM,GAAG,CAAC,CAAC;IACZ;AACD,OAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;AAClC,OAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;AACnC,UAAO,IAAI,CAAC,MAAM,EAAE,IAAE,IAAI,GAAC,GAAG,CAAC,GAAC,GAAG,CAAC;EACrC,CAAC;;AAGF,QAAO,CAAC,KAAK,GAAG,UAAS,KAAK,EAAC,GAAG,EAAC,GAAG,EAAE;AACtC,QAAK,EAAE,CAAC;AACR,OAAI,KAAK,IAAI,GAAG,EAAE;AAChB,UAAK,GAAG,GAAG,CAAC;IACb;AACD,UAAO,KAAK,CAAC;EACd,CAAC;;;;;;;;;AASF,QAAO,CAAC,OAAO,GAAG,UAAS,IAAI,EAAE;AAC/B,OAAI,KAAK,GAAG,CAAC,CAAC;AACd,QAAK,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,IAAI,CAAC,MAAM,EAAC,CAAC,EAAE,EAAE;AAC9B,UAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB;AACD,UAAO,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;EAC5B,CAAC;;;;;;;;;;;;AAYF,QAAO,CAAC,QAAQ,GAAG,UAAS,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAE;AACvC,OAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AAChB,OAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AAChB,UAAO,IAAI,CAAC,IAAI,CAAE,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAE,CAAC;EAC/B,CAAC;;AAEF,QAAO,CAAC,QAAQ,GAAG,UAAS,IAAI,EAAE;AAChC,UAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EAC9B,CAAC;;;;;;;;;AASF,QAAO,CAAC,IAAI,GAAG,YAAmB;OAAV,IAAI,gCAAC,GAAG;;AAC9B,OAAI,OAAO,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,GAAG,IAAI,EAAE;AAC1B,YAAO,CAAC,CAAC;IACV,MAAM;AACL,YAAO,CAAC,CAAC;IACV;EACF,C;;;;;;AC7ND,aAAY,CAAC;;;;;;;;;;AAEb,KAAI,GAAG,GAAG,mBAAO,CAAC,CAAa,CAAC,CAAC;AACjC,KAAI,GAAG,GAAG,mBAAO,CAAC,CAAa,CAAC,CAAC;AACjC,KAAI,IAAI,GAAG,mBAAO,CAAC,CAAc,CAAC,CAAC;AACnC,KAAI,KAAK,GAAG,mBAAO,CAAC,CAAe,CAAC,CAAC;AACrC,KAAM,YAAY,GAAG,mBAAO,CAAC,EAAQ,CAAC,CAAC;;KAE9B,MAAM,uBAAQ,CAAS,EAAvB,MAAM;;;;;;KAKM,SAAS;AAEjB,YAFQ,SAAS,CAEhB,IAAI,EAAC,OAAO,EAAC,QAAQ,EAAE;2BAFhB,SAAS;;AAG1B,gCAHiB,SAAS,6CAGlB;AACR,SAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAClC,SAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAC,OAAO,EAAC,QAAQ,CAAC,CAAC;AAC1D,SAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAChB,SAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AAClB,SAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,SAAI,aAAa,GAAG,MAAM,EAAE,CAAC;AAC7B,SAAI,CAAC,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;AAC1C,SAAI,CAAC,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;AACtC,SAAI,CAAC,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;AACxC,SAAI,CAAC,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;AACtC,SAAI,CAAC,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;AACpD,SAAI,CAAC,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC;IACnD;;aAhBkB,SAAS;;gBAAT,SAAS;AAkB5B,kBAAa;cAAA,uBAAC,IAAI,EAAC,OAAO,EAAC,QAAQ,EAAE;;AAEnC,gBAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1B,iBAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;AACjD,iBAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;;AAEtB,aAAI,QAAQ,GAAG;AACb,mBAAU,QAAQ,CAAC,IAAI;AACvB,mBAAU,EAAE;AACZ,2BAAkB,IAAI;AACtB,kBAAS,iBAAW,EAAE;AACtB,sBAAa,KAAK;UACnB,CAAC;;AAEF,cAAK,IAAI,GAAG,IAAI,QAAQ,EAAE;AACxB,mBAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;UAC/B;;AAED,cAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;AAEhC,eAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;AAEtB,eAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAG;AAC5B,kBAAM,IAAI,GAAG,IAAI,OAAO,EAAG;AACzB,uBAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;cAC9B;;AAAA,YAEF,MAAM,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;AACxC,qBAAQ,CAAC,KAAK,GAAG,OAAO,CAAC;;YAE1B,MAAM,IAAI,OAAO,CAAC,MAAM,IAAE,CAAC,EAAE;;AAE5B,iBAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,qBAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;YACzB;UACF;;;;;AAKD,aAAI,CAAC,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;;AAGhD,aAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,YAAY,WAAW,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC5E,eAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;AACzC,iBAAI,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAC,EAAE,CAAC,CAAC;YACzC;UACF;;;;AAID,aAAI,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,cAAc,EAAE;AAC5E,eAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,eAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,eAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC5C,eAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;UAC/C,MAAM,IAAI,QAAQ,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;;AAEzD,eAAI,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAC,EAAE,CAAC,CAAC,CAAC;AAC/G,eAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAC,EAAE,CAAC,CAAC,CAAC;;AAEjH,eAAI,IAAI,CAAC,KAAK,IAAE,IAAI,EAAE;AACpB,iBAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACrC,iBAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACjE;AACD,eAAI,IAAI,CAAC,MAAM,IAAE,IAAI,EAAE;AACrB,iBAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACtC,iBAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACpE;UAEF,MAAM;AACL,mBAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC;AACrC,eAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,eAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UAChC;;;AAGD,aAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,eAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;UAChD,MAAM;AACL,eAAI,CAAC,KAAK,GAAG,KAAK,CAAC;UACpB;;AAED,gBAAO,QAAQ,CAAC;QAEjB;;AAED,SAAI;cAAA,gBAAG;AACL,aAAI,CAAC,UAAU,EAAE,CAAC;AAClB,aAAI,CAAC,cAAc,EAAE,CAAC;AACtB,aAAI,CAAC,aAAa,EAAE,CAAC;AACrB,aAAI,CAAC,eAAe,EAAE,CAAC;AACvB,aAAI,CAAC,cAAc,EAAE,CAAC;AACtB,aAAI,CAAC,YAAY,EAAE,CAAC;QACrB;;AAED,eAAU;cAAA,sBAAG;AACX,aAAI,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjC,aAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9C,aAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChD,aAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC;;AAED,mBAAc;cAAA,0BAAG,EAAE;;AACnB,kBAAa;cAAA,yBAAG,EAAE;;AAClB,mBAAc;cAAA,0BAAG,EAAE;;AAEnB,oBAAe;cAAA,2BAAG;;;AAEhB,aAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC;;;AAGhE,aAAI,KAAK,CAAC,MAAM,EAAE;AAChB,eAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,YAAY,EAAE,aAAG;oBAAI,MAAK,QAAQ,CAAC,GAAG,CAAC;YAAA,CAAC,CAAC;AACjF,eAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAG;oBAAI,MAAK,YAAY,CAAC,GAAG,CAAC;YAAA,CAAC,CAAC;AACpF,eAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,EAAE,aAAG;oBAAI,MAAK,eAAe,CAAC,GAAG,CAAC;YAAA,CAAC,CAAC;UACvF;AACD,aAAI,CAAC,YAAY,GAAG,aAAG;kBAAI,MAAK,OAAO,CAAC,GAAG,CAAC;UAAA,CAAC;AAC7C,aAAI,CAAC,eAAe,GAAG,aAAG;kBAAI,MAAK,UAAU,CAAC,GAAG,CAAC;UAAA,CAAC;AACnD,aAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAG;kBAAI,MAAK,QAAQ,CAAC,GAAG,CAAC;UAAA,CAAC,CAAC;QACjF;;AAED,iBAAY;cAAA,wBAAG;AACb,aAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;QACvC;;AAED,aAAQ;cAAA,kBAAC,CAAC,EAAE;;;AAGV,aAAI,IAAI,CAAC,OAAO,YAAY,WAAW,EAAE;AACvC,eAAI,CAAC,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAC,EAAE,CAAC,CAAC;UACrG;;;AAGD,aAAI,CAAC,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7C,aAAI,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,aAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,aAAI,CAAC,KAAK,EAAE,CAAC;AACb,aAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3E,aAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC/E,aAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,UAAC,CAAC,cAAc,EAAE,CAAC;AACnB,UAAC,CAAC,eAAe,EAAE,CAAC;QACrB;;AAED,YAAO;cAAA,iBAAC,CAAC,EAAE;;;AACT,aAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,eAAI,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,eAAI,CAAC,IAAI,EAAE,CAAC;AACZ,eAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,qBAAU,CAAC,YAAM;AAAE,mBAAK,IAAI,GAAG,KAAK,CAAC;YAAE,EAAC,EAAE,CAAC,CAAC;UAC7C;AACD,UAAC,CAAC,cAAc,EAAE,CAAC;AACnB,UAAC,CAAC,eAAe,EAAE,CAAC;QACrB;;AAED,eAAU;cAAA,oBAAC,CAAC,EAAE;AACZ,aAAI,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,aAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,aAAI,CAAC,OAAO,EAAE,CAAC;AACf,aAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrB,iBAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5D,iBAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7D,UAAC,CAAC,cAAc,EAAE,CAAC;AACnB,UAAC,CAAC,eAAe,EAAE,CAAC;QACrB;;AAED,UAAK;cAAA,iBAAG,EAEP;;AAED,SAAI;cAAA,gBAAG,EAEN;;AAED,YAAO;cAAA,mBAAG,EAET;;AAKD,aAAQ;;;;cAAA,kBAAC,CAAC,EAAE;AACV,aAAI,IAAI,CAAC,OAAO,YAAY,WAAW,EAAE;AACvC,eAAI,CAAC,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAC,EAAE,CAAC,CAAC;UACrG;AACD,aAAI,CAAC,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7C,aAAI,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,aAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,aAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACd,aAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,UAAC,CAAC,cAAc,EAAE,CAAC;AACnB,UAAC,CAAC,eAAe,EAAE,CAAC;QACrB;;AAED,iBAAY;cAAA,sBAAC,CAAC,EAAE;AACd,aAAI,IAAI,CAAC,OAAO,EAAE;AAChB,eAAI,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,eAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAC,CAAC,cAAc,EAAE,CAAC;AACnB,YAAC,CAAC,eAAe,EAAE,CAAC;UACrB;QACF;;AAED,oBAAe;cAAA,yBAAC,CAAC,EAAE;AACjB,aAAI,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7C,aAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,aAAI,CAAC,YAAY,EAAE,CAAC;AACpB,aAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrB,UAAC,CAAC,cAAc,EAAE,CAAC;AACnB,UAAC,CAAC,eAAe,EAAE,CAAC;QACrB;;AAED,UAAK;cAAA,iBAAG;AACN,aAAI,CAAC,KAAK,EAAE,CAAC;QACd;;AAED,cAAS;cAAA,qBAAG;AACV,aAAI,CAAC,IAAI,EAAE,CAAC;QACb;;AAED,iBAAY;cAAA,wBAAG;AACb,aAAI,CAAC,OAAO,EAAE,CAAC;QAChB;;AAUD,WAAM;;;;;;;;;;;cAAA,gBAAC,KAAK,EAAC,MAAM,EAAE;AACnB,aAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,aAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,aAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAC,IAAI,CAAC;AAC1C,aAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC;AAC5C,aAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9C,aAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChD,aAAI,CAAC,aAAa,EAAE,CAAC;QACtB;;AAED,UAAK;cAAA,iBAAG;AACN,gBAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAC7B,eAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;UAClD;QACF;;AAQD,YAAO;;;;;;;;;cAAA,mBAAG;AACR,aAAI,CAAC,KAAK,EAAE,CAAC;AACb,aAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,aAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,aAAI,IAAI,CAAC,UAAU,EAAE;AACnB,kBAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;UACjC;AACD,aAAI,CAAC,aAAa,EAAE,CAAC;QACtB;;AAED,kBAAa;cAAA,yBAAG,EAEf;;AAED,aAAQ;cAAA,kBAAC,IAAI,EAAC,KAAK,EAAE;AACnB,aAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAC1B,aAAI,CAAC,cAAc,EAAE,CAAC;QACvB;;;;UAlSkB,SAAS;IAAS,YAAY;;kBAA9B,SAAS,C;;;;;;ACb9B,aAAY,CAAC;;AAEb,QAAO,CAAC,YAAY,GAAG,UAAC,EAAE,EAAK;AAC7B,OAAI,cAAc,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;AAChD,OAAI,GAAG,GAAG,cAAc,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9C,OAAI,IAAI,GAAG,cAAc,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;AAChD,UAAO,EAAC,GAAG,EAAH,GAAG,EAAC,IAAI,EAAJ,IAAI,EAAC,CAAC;EACnB,CAAC;;AAEF,QAAO,CAAC,YAAY,GAAG,UAAC,MAAM,EAAK;AACjC,OAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,WAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAC,EAAE,CAAC,CAAC,CAAC;IAC1D;;AAED,OAAI,MAAM,YAAY,WAAW,IAAI,MAAM,YAAY,UAAU,EAAC;AAChE,YAAO,MAAM,CAAC;IACf,MAAM;AACL,YAAO,0BAA0B,CAAC;IACnC;EACF,CAAC;;AAEF,QAAO,CAAC,WAAW,GAAG,UAAC,CAAC,EAAC,MAAM,EAAK;AAClC,UAAO;AACL,MAAC,EAAE,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI;AACxB,MAAC,EAAE,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG;IACxB,CAAC;EACH,CAAC;;AAEF,QAAO,CAAC,WAAW,GAAG,UAAC,CAAC,EAAC,MAAM,EAAK;AAClC,UAAO;AACL,MAAC,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK;AAC1E,MAAC,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,KAAK;IAC1E,CAAC;EACH,CAAC;;AAEF,QAAO,CAAC,WAAW,GAAG,UAAS,MAAM,EAAE;;;AAErC,OAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChD,OAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC7C,SAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;AAEjC,OAAI,CAAC,MAAM,GAAG,UAAC,CAAC,EAAC,CAAC,EAAK;AACrB,WAAK,OAAO,CAAC,KAAK,GAAG,CAAC,GAAC,CAAC,CAAC;AACzB,WAAK,OAAO,CAAC,MAAM,GAAG,CAAC,GAAC,CAAC,CAAC;AAC1B,WAAK,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAC,IAAI,CAAC;AAClC,WAAK,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAC,IAAI,CAAC;IACpC,CAAC;EAEH,C;;;;;;AChDD,aAAY,CAAC;;AAEb,QAAO,CAAC,QAAQ,GAAG,UAAC,GAAG,EAAK;AAC1B,OAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,YAAY,UAAU,KAAK,KAAK,IAAI,GAAG,YAAY,WAAW,KAAK,KAAK,EAAG;AAClJ,YAAO,IAAI,CAAC;IACb,MAAM;AACL,YAAO,KAAK,CAAC;IACd;EACF,CAAC;;;;AAIF,QAAO,CAAC,cAAc,GAAG,UAAC,OAAO,EAAE,WAAW,EAAK;AACjD,IAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,UAAS,KAAK,EAAE;AAC7G,YAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAW;AACzC,WAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC3B,aAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AAC3B,aAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC;AAC7C,aAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC;QAC1C,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;AAC1C,aAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B,aAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACtE,MAAM;AACL,aAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACjB;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,C;;;;;;AC3BD,aAAY,CAAC;;AAEb,QAAO,CAAC,MAAM,GAAI,cAAc,IAAI,QAAQ,CAAC,eAAgB,C;;;;;;ACF7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAG;AACH,qBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;AC7SA,aAAY,CAAC;;;;;;AAEb,KAAI,IAAI,GAAG,mBAAO,CAAC,CAAc,CAAC,CAAC;;;;;;;;;;;KAWd,IAAI;AAEZ,YAFQ,IAAI,GAEyB;SAApC,GAAG,gCAAG,CAAC;SAAC,GAAG,gCAAG,CAAC;SAAC,IAAI,gCAAG,CAAC;SAAC,KAAK,gCAAG,CAAC;;2BAF3B,IAAI;;;;;AAMrB,SAAI,CAAC,GAAG,GAAG,GAAG,CAAC;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CA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAAyC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAG;AACH;AACA;;AAEA,IAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAkC,iCAAiC;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,eAAe;AACpD;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,I;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,E;;;;;;;ACzOA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAqC;;AAErC;AACA;AACA;;AAEA,4BAA2B;AAC3B;AACA;AACA;AACA,6BAA4B,UAAU","file":"./dist/NexusUI.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Nexus\"] = factory();\n\telse\n\t\troot[\"Nexus\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap e7c2e3c566e62c2f1345","'use strict';\n\nimport NexusUI from './lib/main';\n\nexport default NexusUI;\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./index.js","'use strict';\n\nimport Interfaces from './interfaces/';\nimport math from './util/math';\nimport Rack from './core/rack';\nimport Tune from './tuning/tuning';\nimport * as Transform from './util/transform';\n\nlet Counter = require('./models/counter');\nlet Radio = require('./models/radio');\nlet Drunk = require('./models/drunk');\nlet Sequence = require('./models/sequence');\nlet Matrix = require('./models/matrix');\n\nimport WAAClock from 'waaclock';\nimport Interval from './time/interval';\n\n\n/**\nNexusUI => created as Nexus\n*/\n\nclass NexusUI {\n\n constructor(context) {\n\n for (let key in Interfaces) {\n this[key] = Interfaces[key];\n }\n\n for (let key in math) {\n this[key] = math[key];\n }\n\n let Core = {\n 'Rack': Rack\n };\n\n let Models = {\n 'Counter': Counter,\n 'Radio': Radio,\n 'Drunk': Drunk,\n 'Sequence': Sequence,\n 'Matrix': Matrix\n };\n\n for (let key in Models) {\n this[key] = Models[key];\n }\n\n for (let key in Core) {\n this[key] = Core[key];\n }\n\n let DefaultContext = window.AudioContext || window.webkitAudioContext;\n this._context = context || new DefaultContext();\n\n this.tune = new Tune();\n this.note = this.tune.note.bind(this.tune);\n\n this.clock = new WAAClock(this._context);\n this.clock.start();\n this.Interval = Interval;\n\n this.colors = {\n accent: '#2bb',\n fill: '#eee',\n light: '#fff',\n dark: '#333',\n mediumLight: '#ccc',\n mediumDark: '#666'\n };\n\n this.transform = Transform;\n this.add = Transform.add;\n\n\n this.Add = {};\n for (let key in Interfaces) {\n this.Add[key] = Transform.add.bind(this,key);\n }\n\n\n\n\n /* create default component size */\n /* jshint ignore:start */\n var existingStylesheets = document.getElementsByTagName(\"style\");\n var defaultSizeDeclaration = '[nexus-ui]{height:5000px;width:5000px}';\n var defaultStyleNode = document.createElement('style');\n defaultStyleNode.type = 'text/css';\n defaultStyleNode.innerHTML = defaultSizeDeclaration;\n if (existingStylesheets.length > 0) {\n var parent = existingStylesheets[0].parentNode\n parent.insertBefore( defaultStyleNode, existingStylesheets[0])\n } else {\n document.write('<style>'+defaultSizeDeclaration+'<\\/style>');\n }\n /* jshint ignore:end */\n\n }\n\n get context() {\n return this._context;\n }\n\n set context(ctx) {\n this.clock.stop();\n this._context = ctx;\n this.clock = new WAAClock(this.context);\n this.clock.start();\n }\n\n\n\n}\n\nlet Nexus = new NexusUI();\n\nexport function colors() {\n return Nexus.colors;\n}\nexport function context() {\n return Nexus.context;\n}\nexport function clock() {\n return Nexus.clock;\n}\n\nexport default Nexus;\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/main.js","export default {\n Position: require('./position'),\n Slider: require('./slider'),\n Toggle: require('./toggle'),\n/* Range: require('./rangeslider'),\n Waveform: require('./waveform'), */\n Button: require('./button'),\n TextButton: require('./textbutton'),\n RadioButton: require('./radiobutton'),\n Number: require('./number'),\n Select: require('./select'),\n Dial: require('./dial'),\n Piano: require('./piano'),\n Sequencer: require('./sequencer'),\n Pan2D: require('./pan2d'),\n Tilt: require('./tilt'),\n Multislider: require('./multislider'),\n Pan: require('./pan'),\n Envelope: require('./envelope'),\n Spectrogram: require('./spectrogram'),\n Meter: require('./meter'),\n Oscilloscope: require('./oscilloscope')\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/index.js","\n'use strict';\n\nlet svg = require('../util/svg');\nlet Interface = require('../core/interface');\nlet Step = require('../models/step');\nimport * as Interaction from '../util/interaction';\n\n/**\n* Position\n*\n* @description Two-dimensional touch slider.\n*\n* @demo <span nexus-ui=\"position\"></span>\n*\n* @example\n* var position = new Nexus.Position('#target')\n*\n* @example\n* var position = new Nexus.Position('#target',{\n* 'size': [200,200],\n* 'mode': 'absolute', // \"absolute\" or \"relative\"\n* 'x': 0.5, // initial x value\n* 'minX': 0,\n* 'maxX': 1,\n* 'stepX': 0,\n* 'y': 0.5, // initial y value\n* 'minY': 0,\n* 'maxY': 1,\n* 'stepY': 0\n* })\n*\n* @output\n* change\n* Fires any time the interface's value changes. <br>\n* The event data is an object with x and y properties containing the x and y values of the interface.\n*\n* @outputexample\n* position.on('change',function(v) {\n* console.log(v);\n* })\n*\n*\n*/\n\nexport default class Position extends Interface {\n\n constructor() {\n\n let options = ['value'];\n\n let defaults = {\n 'size': [200,200],\n 'mode': 'absolute',\n 'minX': 0,\n 'maxX': 1,\n 'stepX': 0,\n 'x': 0.5,\n 'minY': 0,\n 'maxY': 1,\n 'stepY': 0,\n 'y': 0.5\n };\n\n super(arguments,options,defaults);\n\n\n this._x = new Step( this.settings.minX, this.settings.maxX, this.settings.stepX, this.settings.x );\n this._y = new Step( this.settings.minY, this.settings.maxY, this.settings.stepY, this.settings.y );\n\n this.position = {\n x: new Interaction.Handle(this.settings.mode,'horizontal',[0,this.width],[this.height,0]),\n y: new Interaction.Handle(this.settings.mode,'vertical',[0,this.width],[this.height,0])\n };\n this.position.x.value = this._x.normalized;\n this.position.y.value = this._y.normalized;\n\n this.init();\n this.render();\n\n }\n\n buildInterface() {\n\n this.knob = svg.create('circle');\n this.element.appendChild(this.knob);\n \n }\n\n sizeInterface() {\n\n this.position.x.resize([0,this.width],[this.height,0]);\n this.position.y.resize([0,this.width],[this.height,0]);\n\n this._minDimension = Math.min(this.width,this.height);\n\n this.knobRadius = {\n off: ~~(this._minDimension/100) * 5 + 5,\n };\n this.knobRadius.on = this.knobRadius.off * 2;\n\n this.knob.setAttribute('cx',this.width/2);\n this.knob.setAttribute('cy',this.height/2);\n this.knob.setAttribute('r',this.knobRadius.off);\n }\n\n colorInterface() {\n this.element.style.backgroundColor = this.colors.fill;\n this.knob.setAttribute('fill', this.colors.accent);\n }\n\n render() {\n if (this.clicked) {\n // this.knobRadius = 30;\n this.knob.setAttribute('r',this.knobRadius.on);\n } else {\n // this.knobRadius = 15;\n this.knob.setAttribute('r',this.knobRadius.off);\n }\n\n this.knobCoordinates = {\n x: this._x.normalized * this.width,\n y: this.height - this._y.normalized * this.height\n };\n\n this.knob.setAttribute('cx',this.knobCoordinates.x);\n this.knob.setAttribute('cy',this.knobCoordinates.y);\n }\n\n\n click() {\n this.position.x.anchor = this.mouse;\n this.position.y.anchor = this.mouse;\n this.move();\n }\n\n move() {\n if (this.clicked) {\n this.position.x.update(this.mouse);\n this.position.y.update(this.mouse);\n this._x.updateNormal( this.position.x.value );\n this._y.updateNormal( this.position.y.value );\n this.emit('change',{\n x: this._x.value,\n y: this._y.value\n });\n this.render();\n }\n }\n\n release() {\n this.render();\n }\n\n /**\n * The interface's x value. When set, it will automatically adjust to fit min/max/step settings of the interface.\n * @type {object}\n * @example position.x = 0.5;\n */\n\n get x() {\n return this._x.value;\n }\n\n set x(value) {\n this._x.update(value);\n this.emit('change',{\n x: this._x.value,\n y: this._y.value\n });\n this.render();\n }\n\n /**\n * The interface's y values. When set, it will automatically adjust to fit min/max/step settings of the interface.\n * @type {object}\n * @example position.x = 0.5;\n */\n\n get y() {\n return this._y.value;\n }\n\n set y(value) {\n this._y.update(value);\n this.emit('change',{\n x: this._x.value,\n y: this._y.value\n });\n this.render();\n }\n\n\n\n get normalized() {\n return {\n x: this._x.normalized,\n y: this._y.normalized\n };\n }\n\n /**\n * The lower limit of value on the x axis\n * @type {object}\n */\n get minX() {\n return this._x.min;\n }\n\n set minX(v) {\n this._x.min = v;\n this.render();\n }\n\n /**\n * The lower limit of value on the y axis\n * @type {object}\n */\n get minY() {\n return this._y.min;\n }\n\n set minY(v) {\n this._y.min = v;\n this.render();\n }\n\n\n /**\n * The upper limit of value on the x axis\n * @type {object}\n */\n get maxX() {\n return this._x.max;\n }\n\n set maxX(v) {\n this._x.max = v;\n this.render();\n }\n\n\n /**\n * The upper limit of value on the y axis\n * @type {object}\n */\n get maxY() {\n return this._y.max;\n }\n\n set maxY(v) {\n this._y.max = v;\n this.render();\n }\n\n\n /**\n * The incremental step of values on the x axis\n * @type {object}\n */\n get stepX() {\n return this._x.step;\n }\n\n set stepX(v) {\n this._x.step = v;\n this.render();\n }\n\n\n /**\n * The incremental step of values on the y axis\n * @type {object}\n */\n get stepY() {\n return this._y.step;\n }\n\n set stepY(v) {\n this._y.step = v;\n this.render();\n }\n\n\n /**\n Absolute mode (position's value jumps to mouse click position) or relative mode (mouse drag changes value relative to its current position). Default: \"absolute\".\n @type {string}\n @example position.mode = \"relative\";\n */\n get mode() {\n return this.position.x.mode;\n }\n set mode(v) {\n this.position.x.mode = v;\n this.position.y.mode = v;\n }\n\n\n\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/position.js","'use strict';\n\nlet math = require('../util/math');\n\nexport default {\n\n create: (type) => {\n return document.createElementNS('http://www.w3.org/2000/svg', type);\n },\n\n arc: (x, y, radius, startAngle, endAngle) => {\n\n var start = math.toCartesian(radius, endAngle);\n var end = math.toCartesian(radius, startAngle);\n\n var largeArcFlag = endAngle - startAngle <= 180 ? '0' : '1';\n\n var d = [\n 'M', start.x+x, start.y+y,\n 'A', radius, radius, 0, largeArcFlag, 0, end.x+x, end.y+y\n ].join(' ');\n\n return d;\n },\n\n radialGradient: (defs,numberOfStops) => {\n\n let id = 'gradient' + math.ri(100000000000);\n let stops = [];\n\n let gradient = document.createElementNS('http://www.w3.org/2000/svg', 'radialGradient');\n gradient.setAttribute('id', id);\n gradient.setAttribute('cx', '50%');\n gradient.setAttribute('cy', '50%');\n gradient.setAttribute('r', '50%');\n\n defs.appendChild(gradient);\n\n for (let i=0;i<numberOfStops;i++) {\n let stop = document.createElementNS('http://www.w3.org/2000/svg', 'stop');\n stop.setAttribute('id', 'stop'+i);\n //stop.setAttribute('offset', '70%');\n //stop.setAttribute('stop-color', 'White');\n gradient.appendChild(stop);\n stops.push(stop);\n }\n\n return {\n id: id,\n stops: stops,\n element: gradient\n };\n\n }\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/util/svg.js","'use strict';\n\n/**\n * Limit a number to within a minimum and maximum\n * @param {number} value Input value\n * @param {number} min Lower limit\n * @param {number} max Upper limit\n * @return {number} The input value constrained within the lower and upper limits\n * @example\n * Nexus.clip(11,0,10) // returns 10\n * Nexus.clip(-1,0,10) // returns 0\n * Nexus.clip(5,0,10) // returns 5\n */\n\nexports.clip = (value,min,max) => {\n return Math.min(Math.max(value,min),max);\n};\n\nexports.normalize = (value,min,max) => {\n return ( (value-min) / (max-min) );\n};\n\n/**\n * Scale a value from one range to another range.\n * @param {number} inNum Input value\n * @param {number} inMin Input range minimum\n * @param {number} inMax Input range maximum\n * @param {number} outMin Output range minimum\n * @param {number} outMax Output range maximum\n * @return {number} The input value scaled to its new range\n * @example\n * Nexus.scale(0.5,0,1,0,10) // returns 5\n * Nexus.scale(0.9,0,1,1,0) // returns 0.1\n */\nexports.scale = (inNum, inMin, inMax, outMin, outMax) => {\n if (inMin === inMax) {\n return outMin;\n }\n return (((inNum - inMin) * (outMax - outMin)) / (inMax - inMin)) + outMin;\n};\n\nexports.toPolar = (x,y) => {\n var r = Math.sqrt(x*x + y*y);\n\n var theta = Math.atan2(y,x);\n if (theta < 0) {\n theta = theta + (2 * Math.PI);\n }\n return {radius: r, angle: theta};\n};\n\nexports.toCartesian = function(radius, angle){\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return {x: radius*cos, y: radius*sin*-1};\n};\n/*\nexports.polarToCartesian(centerX, centerY, radius, angleInDegrees) {\n var angleInRadians = (angleInDegrees-90) * Math.PI / 180.0;\n\n return {\n x: centerX + (radius * Math.cos(angleInRadians)),\n y: centerY + (radius * Math.sin(angleInRadians))\n };\n} */\n\n\n\nexports.prune = function(data, scale) {\n return parseFloat(data.toFixed(scale));\n};\n\nexports.invert = function (inNum) {\n return exports.scale(inNum, 1, 0, 0, 1);\n};\n\n/**\n * Convert a MIDi note number to a frequency value in equal temperament.\n * @param {number} midi MIDI note value\n * @return {number} Frequence value\n * @example\n * Nexus.mtof(60) // returns the frequency number of Middle C\n */\nexports.mtof = function(midi) {\n return Math.pow(2, ((midi-69)/12)) * 440;\n};\n\n/**\n * Interpolate between two numbers\n * @param {number} loc Interpolation index (0-1)\n * @param {number} min Lower value\n * @param {number} max Upper value\n * @return {number} Interpolated value\n * @example\n * Nexus.interp(0.5,2,4) // returns 3\n * Nexus.interp(0.1,0,10) // returns 1\n */\nexports.interp = function(loc,min,max) {\n return loc * (max - min) + min;\n};\n\n/**\n * Return a random choice from a list of arguments\n * @return {various} One random argument\n * @example\n * Nexus.pick(1,2,3,4) // returns 1, 2, 3, or 4\n * Nexus.pick(function1,function2) // returns either function1 or function2\n */\nexports.pick = function() {\n return arguments[~~(Math.random()*arguments.length)];\n};\n\n/**\n * Returns an octave multiplier for frequency values\n * @param {number} num Relative octave number (e.g. -1 for one octave down, 1 for one octave up)\n * @return {number} Octave multiplier\n * @example\n * Nexus.octave(-1) // returns 0.5\n * Nexus.octave(0) // returns 1\n * Nexus.octave(1) // returns 2\n * Nexus.octave(2) // returns 4\n */\nexports.octave = function(num) {\n return Math.pow(2,num);\n};\n\n/**\n * Random integer generator. If no second argument is given, will return random integer from 0 to bound1.\n * @param {number} bound1 Minimum random value\n * @param {number} bound2 Maximum random value\n * @return {number} Random integer between lower and upper boundary\n * @example\n * Nexus.ri(10) // returns random int from 0 to 10\n * Nexus.ri(20,2000) // returns random int from 20 to 2000\n */\nexports.ri = function(bound1,bound2) {\n if (!bound2) {\n bound2 = bound1;\n bound1 = 0;\n }\n var low = Math.min(bound1,bound2);\n var high = Math.max(bound1,bound2);\n return Math.floor(Math.random()*(high-low)+low);\n};\n\n/**\n * Random float number generator. If no second argument is given, will return random float from 0 to bound1.\n * @param {number} bound1 Minimum random value\n * @param {number} bound2 Maximum random value\n * @return {number} Random float between lower and upper boundary\n * @example\n * Nexus.rf(1) // returns random float from 0 to 1\n * Nexus.rf(1,2) // returns random float from 1 to 2\n */\nexports.rf = function(bound1,bound2) {\n if (!bound2) {\n bound2 = bound1;\n bound1 = 0;\n }\n var low = Math.min(bound1,bound2);\n var high = Math.max(bound1,bound2);\n return Math.random()*(high-low)+low;\n};\n\n\nexports.cycle = function(input,min,max) {\n input++;\n if (input >= max) {\n input = min;\n }\n return input;\n};\n\n/**\n * Average an array of numbers\n * @param {Array} data Array of numbers to average\n * @return {number} Average of the input data\n * @example\n * Nexus.average([0,2,4,6,8,10]) // returns 5\n */\nexports.average = function(data) {\n let total = 0;\n for (var i=0;i<data.length;i++) {\n total += data[i];\n }\n return total / data.length;\n};\n\n/**\n * Get the distance from one (x,y) point to another (x,y) point\n * @param {number} x1 x of first point\n * @param {number} y1 y of first point\n * @param {number} x2 x of second point\n * @param {number} y2 y of second poiny\n * @return {number} Distance\n * @example\n * Nexus.distance(0,0,3,4) // returns 5\n */\nexports.distance = function(x1,y1,x2,y2) {\n let a = x1 - x2;\n let b = y1 - y2;\n return Math.sqrt( a*a + b*b );\n};\n\nexports.gainToDB = function(gain) {\n return 20 * Math.log10(gain);\n};\n\n/**\n * Flip a coin, returning either 0 or 1 according to a probability\n * @param {number} [odds=0.5] Likelihood of returning 1\n * @return {number} 1 or 0\n * @example\n * Nexus.coin(0.1) // returns 1 (10% of the time) or 0 (90% of the time)\n */\nexports.coin = function(odds=0.5) {\n if (exports.rf(0,1) < odds) {\n return 1;\n } else {\n return 0;\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/util/math.js","'use strict';\n\nlet svg = require('../util/svg');\nlet dom = require('../util/dom');\nlet util = require('../util/util');\nlet touch = require('../util/touch');\nconst EventEmitter = require('events');\n\nimport { colors } from '../main';\n\n/**\nInterface\n*/\nexport default class Interface extends EventEmitter {\n\n constructor(args,options,defaults) {\n super();\n this.type = this.constructor.name;\n this.settings = this.parseSettings(args,options,defaults);\n this.mouse = {};\n this.wait = false;\n this.colors = {};\n let defaultColors = colors(); // jshint ignore:line\n this.colors.accent = defaultColors.accent;\n this.colors.fill = defaultColors.fill;\n this.colors.light = defaultColors.light;\n this.colors.dark = defaultColors.dark;\n this.colors.mediumLight = defaultColors.mediumLight;\n this.colors.mediumDark = defaultColors.mediumDark;\n }\n\n parseSettings(args,options,defaults) {\n\n options.unshift('target');\n defaults.defaultSize = defaults.size.splice(0,2);\n defaults.size = false;\n\n let settings = {\n 'target': document.body,\n 'colors': {}, // should inherit from a colors module,\n 'snapWithParent': true,\n 'event': function() {},\n 'component': false\n };\n\n for (let key in defaults) {\n settings[key] = defaults[key];\n }\n\n for (let i=0; i<args.length; i++) {\n // grabs the next argument\n let setting = args[i];\n // if it's an object, it must be the settings object\n if ( util.isObject(setting) ) {\n for ( let key in setting ) {\n settings[key] = setting[key];\n }\n // if it's a function, it must be the event setting\n } else if (typeof setting === 'function') {\n settings.event = setting;\n // otherwise, consider it one of the widget's custom options\n } else if (options.length>=1) {\n // grab the first option -- i.e. 'target'\n let key = options.splice(0,1)[0];\n settings[key] = setting;\n }\n }\n\n /* handle common settings */\n\n // target\n this.parent = dom.parseElement(settings.target);\n\n // nexus-ui attribute\n if (this.parent && this.parent instanceof HTMLElement && !settings.component) {\n if (!this.parent.hasAttribute('nexus-ui')) {\n this.parent.setAttribute('nexus-ui','');\n }\n }\n\n // size\n\n if (settings.size && Array.isArray(settings.size) && settings.snapWithParent) {\n this.width = settings.size[0];\n this.height = settings.size[1];\n this.parent.style.width = this.width + 'px';\n this.parent.style.height = this.height + 'px';\n } else if (settings.snapWithParent && !settings.component) {\n\n this.width = parseFloat(window.getComputedStyle(this.parent, null).getPropertyValue('width').replace('px',''));\n this.height = parseFloat(window.getComputedStyle(this.parent, null).getPropertyValue('height').replace('px',''));\n\n if (this.width==5000) {\n this.width = settings.defaultSize[0];\n this.parent.style.width = this.parent.width = this.width + 'px';\n }\n if (this.height==5000) {\n this.height = settings.defaultSize[1];\n this.parent.style.height = this.parent.height = this.height + 'px';\n }\n\n } else {\n settings.size = settings.defaultSize;\n this.width = settings.size[0];\n this.height = settings.size[1];\n }\n\n // event\n if (settings.event) {\n this.event = this.on('change', settings.event);\n } else {\n this.event = false;\n }\n\n return settings;\n\n }\n\n init() {\n this.buildFrame();\n this.buildInterface();\n this.sizeInterface();\n this.attachListeners();\n this.colorInterface();\n this.finalTouches();\n }\n\n buildFrame() {\n this.element = svg.create('svg');\n this.element.setAttribute('width',this.width);\n this.element.setAttribute('height',this.height);\n this.parent.appendChild(this.element);\n }\n\n buildInterface() {}\n sizeInterface() {}\n colorInterface() {}\n\n attachListeners() {\n\n this.interactionTarget = this.interactionTarget || this.element;\n\n // Setup interaction\n if (touch.exists) {\n this.interactionTarget.addEventListener('touchstart', evt => this.preTouch(evt));\n this.interactionTarget.addEventListener('touchmove', evt => this.preTouchMove(evt));\n this.interactionTarget.addEventListener('touchend', evt => this.preTouchRelease(evt));\n }\n this.boundPreMove = evt => this.preMove(evt);\n this.boundPreRelease = evt => this.preRelease(evt);\n this.interactionTarget.addEventListener('mousedown', evt => this.preClick(evt));\n }\n\n finalTouches() {\n this.element.style.cursor = 'pointer';\n }\n\n preClick(e) {\n // 10000 getComputedStyle calls takes 100 ms.\n // .:. one takes about .01ms\n if (this.element instanceof HTMLElement) {\n this.width = window.getComputedStyle(this.element, null).getPropertyValue('width').replace('px','');\n }\n // 10000 getComputedStyle calls takes 40 ms.\n // .:. one takes about .004ms\n this.offset = dom.findPosition(this.element);\n this.mouse = dom.locateMouse(e,this.offset);\n this.clicked = true;\n this.click();\n this.moveEvent = document.addEventListener('mousemove', this.boundPreMove);\n this.releaseEvent = document.addEventListener('mouseup', this.boundPreRelease);\n this.emit('click');\n e.preventDefault();\n e.stopPropagation();\n }\n\n preMove(e) {\n if (!this.wait) {\n this.mouse = dom.locateMouse(e,this.offset);\n this.move();\n this.wait = true;\n setTimeout(() => { this.wait = false; },25);\n }\n e.preventDefault();\n e.stopPropagation();\n }\n\n preRelease(e) {\n this.mouse = dom.locateMouse(e,this.offset);\n this.clicked = false;\n this.release();\n this.emit('release');\n document.removeEventListener('mousemove',this.boundPreMove);\n document.removeEventListener('mouseup',this.boundPreRelease);\n e.preventDefault();\n e.stopPropagation();\n }\n\n click() {\n\n }\n\n move() {\n\n }\n\n release() {\n\n }\n\n\n /* touch */\n\n preTouch(e) {\n if (this.element instanceof HTMLElement) {\n this.width = window.getComputedStyle(this.element, null).getPropertyValue('width').replace('px','');\n }\n this.offset = dom.findPosition(this.element);\n this.mouse = dom.locateTouch(e,this.offset);\n this.clicked = true;\n this.touch(e);\n this.emit('click');\n e.preventDefault();\n e.stopPropagation();\n }\n\n preTouchMove(e) {\n if (this.clicked) {\n this.mouse = dom.locateTouch(e,this.offset);\n this.touchMove();\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n preTouchRelease(e) {\n this.mouse = dom.locateTouch(e, this.offset);\n this.clicked = false;\n this.touchRelease();\n this.emit('release');\n e.preventDefault();\n e.stopPropagation();\n }\n\n touch() {\n this.click();\n }\n\n touchMove() {\n this.move();\n }\n\n touchRelease() {\n this.release();\n }\n\n /**\n * Resize the interface\n * @param width {number} New width in pixels\n * @param height {number} New height in pixels\n *\n * @example\n * button.resize(100,100);\n */\n resize(width,height) {\n this.width = width;\n this.height = height;\n this.parent.style.width = this.width+'px';\n this.parent.style.height = this.height+'px';\n this.element.setAttribute('width',this.width);\n this.element.setAttribute('height',this.height);\n this.sizeInterface();\n }\n\n empty() {\n while (this.element.lastChild) {\n this.element.removeChild(this.element.lastChild);\n }\n }\n\n /**\n * Remove the interface from the page and cancel its event listener(s).\n *\n * @example\n * button.destroy();\n */\n destroy() {\n this.empty();\n this.parent.removeChild(this.element);\n this.removeAllListeners();\n if (this.instrument) {\n delete this.instrument[this.id];\n }\n this.customDestroy();\n }\n\n customDestroy() {\n\n }\n\n colorize(type,color) {\n this.colors[type] = color;\n this.colorInterface();\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/core/interface.js","'use strict';\n\nexports.findPosition = (el) => {\n let viewportOffset = el.getBoundingClientRect();\n let top = viewportOffset.top + window.scrollY;\n let left = viewportOffset.left + window.scrollX;\n return {top,left};\n};\n\nexports.parseElement = (parent) => {\n if (typeof parent === 'string') {\n parent = document.getElementById(parent.replace('#',''));\n }\n\n if (parent instanceof HTMLElement || parent instanceof SVGElement){\n return parent;\n } else {\n return 'No valid parent argument';\n }\n};\n\nexports.locateMouse = (e,offset) => {\n return {\n x: e.pageX - offset.left,\n y: e.pageY - offset.top\n };\n};\n\nexports.locateTouch = (e,offset) => {\n return {\n x: e.targetTouches.length ? e.targetTouches[0].pageX - offset.left : false,\n y: e.targetTouches.length ? e.targetTouches[0].pageY - offset.top : false\n };\n};\n\nexports.SmartCanvas = function(parent) {\n\n this.element = document.createElement('canvas');\n this.context = this.element.getContext('2d');\n parent.appendChild(this.element);\n\n this.resize = (w,h) => {\n this.element.width = w*2;\n this.element.height = h*2;\n this.element.style.width = w+'px';\n this.element.style.height = h+'px';\n };\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/util/dom.js","'use strict';\n\nexports.isObject = (obj) => {\n if (typeof obj === 'object' && !Array.isArray(obj) && obj !== null && obj instanceof SVGElement === false && obj instanceof HTMLElement === false ) {\n return true;\n } else {\n return false;\n }\n};\n\n// Restricts input for the given textbox to the given inputFilter function\n// cf https://stackoverflow.com/a/469362\nexports.setInputFilter = (textbox, inputFilter) => {\n [\"input\", \"keydown\", \"keyup\", \"mousedown\", \"mouseup\", \"select\", \"contextmenu\", \"drop\"].forEach(function(event) {\n textbox.addEventListener(event, function() {\n if (inputFilter(this.value)) {\n this.oldValue = this.value;\n this.oldSelectionStart = this.selectionStart;\n this.oldSelectionEnd = this.selectionEnd;\n } else if (this.hasOwnProperty(\"oldValue\")) {\n this.value = this.oldValue;\n this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);\n } else {\n this.value = \"\";\n }\n });\n });\n};\n\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/util/util.js","'use strict';\n\nexports.exists = ('ontouchstart' in document.documentElement);\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/util/touch.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/events/events.js\n// module id = 10\n// module chunks = 0","'use strict';\n\nlet math = require('../util/math');\n\n/**\n Creates a steppable value with minimum, maximum, and step size. This is used in many interfaces to constrict their values to certain ranges.\n @param {number} [min=0] minimum\n @param {number} [max=1] maximum\n @param {number} [step=0]\n @param {number} [value=0] initial value\n @returns {Object} Step\n*/\n\nexport default class Step {\n\n constructor(min = 0,max = 1,step = 0,value = 0) {\n //Object.assign(this,{min,max,step});\n //Cannot use Object.assign because not supported in Safari.\n //I would expect for Babel to take care of this but it is not.\n this.min = min;\n this.max = max;\n this.step = step;\n this.value = value;\n this.changed = false;\n this.oldValue = false;\n this.update(this.value);\n }\n\n /**\n Update with a new value. The value will be auto-adjusted to fit the min/max/step.\n @param {number} value\n */\n\n update(value) {\n if (this.step) {\n // this.value = math.clip(Math.round(value / (this.step)) * this.step, this.min,this.max);\n this.value = math.clip(Math.round((value-this.min) / (this.step)) * this.step + this.min, this.min,this.max);\n } else {\n this.value = math.clip(value,this.min,this.max);\n }\n if (this.oldValue !== this.value) {\n this.oldValue = this.value;\n this.changed = true;\n } else {\n this.changed = false;\n }\n return this.value;\n }\n\n /**\n Update with a normalized value 0-1.\n @param {number} value\n */\n updateNormal(value) {\n this.value = math.scale(value,0,1,this.min,this.max);\n return this.update(this.value);\n }\n\n /**\n Get a normalized version of this.value . Not settable.\n */\n get normalized() {\n return math.normalize(this.value,this.min,this.max);\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/models/step.js","'use strict';\n\nimport math from '../util/math';\nimport ToggleModel from '../models/toggle';\n\n\n/*\nhow to use :\n\ndial.interaction = new Handle('radial','relative',this.width,this.height);\n// dial.interaction.mode = 'relative'\n// dial.interaction.direction = 'radial'\n\non click:\ndial.interaction.anchor = this.mouse;\n\non move:\ndial.interaction.update(this.mouse);\n\nconsole.log( dial.interaction.value ); should be a normalized value.\n\n*/\n\n/*\n absolute/relative are property: mode\n radial/vertical/horizontal/2d are property: direction\n\n plan :\n\n if relative --\n NO on click, get value offset between current value and click value.\n NO on move, use click value - offset\n INSTEAD\n use delta -- bc vertical motion on dial is impossible otherwise\n also allow to set sensitivity\n\n*/\n\nexport class Handle {\n\n constructor(mode='absolute',direction='vertical',xbound=[0,100],ybound=[0,100]) {\n this.mode = mode;\n this.direction = direction;\n this.previous = 0;\n this.value = 0;\n this.sensitivity = 1;\n this.resize(xbound,ybound);\n }\n\n resize(xbound,ybound) {\n this.boundary = {\n min: {\n x: xbound[0],\n y: ybound[0]\n },\n max: {\n x: xbound[1],\n y: ybound[1]\n },\n center: {\n x: (xbound[1] - xbound[0])/2 + xbound[0],\n y: (ybound[1] - ybound[0])/2 + ybound[0]\n }\n };\n }\n\n set anchor(mouse) {\n this._anchor = this.convertPositionToValue(mouse);\n }\n\n get anchor() {\n return this._anchor;\n }\n\n\n update(mouse) {\n if (this.mode==='relative') {\n let increment = this.convertPositionToValue(mouse) - this.anchor;\n if (Math.abs(increment) > 0.5) { increment = 0; }\n this.anchor = mouse;\n this.value = this.value + increment * this.sensitivity;\n } else {\n this.value = this.convertPositionToValue(mouse);\n }\n this.value = math.clip(this.value,0,1);\n }\n\n convertPositionToValue(current) {\n switch(this.direction) {\n case 'radial':\n let position = math.toPolar(current.x - this.boundary.center.x, current.y - this.boundary.center.y);\n position = position.angle / (Math.PI*2);\n position = ((position - 0.25) + 1) % 1;\n return position;\n case 'vertical':\n return math.scale(current.y,this.boundary.min.y,this.boundary.max.y,0,1);\n case 'horizontal':\n return math.scale(current.x,this.boundary.min.x,this.boundary.max.x,0,1);\n }\n }\n\n}\n\n\nexport class Button {\n\n constructor(mode='button') {\n this.mode = mode;\n this.state = new ToggleModel();\n this.paintbrush = false;\n }\n\n click() {\n switch (this.mode) {\n case 'impulse':\n this.state.on();\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n this.timeout = setTimeout(this.state.off.bind(this),30);\n this.emit('change',this.state);\n break;\n case 'button':\n this.turnOn();\n this.emit('change',this.state);\n break;\n case 'aftertouch':\n this.position = {\n x: math.clip(this.mouse.x / this.width,0,1),\n y: math.clip(1 - this.mouse.y / this.height,0,1)\n };\n this.turnOn();\n this.emit('change',{\n state: this.state,\n x: this.position.x,\n y: this.position.y,\n });\n break;\n case 'toggle':\n this.flip();\n this.emit('change',this.state);\n break;\n }\n\n }\n\n move() {\n if (this.mode==='aftertouch') {\n this.position = {\n x: math.clip(this.mouse.x / this.width,0,1),\n y: math.clip(1 - this.mouse.y / this.height,0,1)\n };\n this.emit('change',{\n state: this.state,\n x: this.position.x,\n y: this.position.y,\n });\n this.render();\n }\n }\n\n release() {\n switch (this.mode) {\n case 'button':\n this.turnOff();\n this.emit('change',this.state);\n break;\n case 'aftertouch':\n this.turnOff();\n this.position = {\n x: this.mouse.x / this.width,\n y: 1 - this.mouse.y / this.height\n };\n this.emit('change',{\n state: this.state,\n x: this.position.x,\n y: this.position.y,\n });\n break;\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/util/interaction.js","'use strict';\n\nexport default class Toggle {\n\n constructor(state) {\n this.state = state || false;\n }\n\n flip(state) {\n if (state || state === false) {\n this.state = state;\n } else {\n this.state = !this.state;\n }\n }\n\n on() {\n this.state = true;\n }\n\n off() {\n this.state = false;\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/models/toggle.js","'use strict';\n\nlet svg = require('../util/svg');\nlet Interface = require('../core/interface');\nlet Step = require('../models/step');\nimport * as Interaction from '../util/interaction';\n\n/**\n* Slider\n*\n* @description Horizontal or vertical slider with settable interaction modes.\n*\n* @demo <span nexus-ui=\"slider\" step=0.2></span>\n*\n* @example\n* var slider = new Nexus.Slider('#target')\n*\n* @example\n* var slider = new Nexus.Slider('#target',{\n* 'size': [120,20],\n* 'mode': 'relative', // 'relative' or 'absolute'\n* 'min': 0,\n* 'max': 1,\n* 'step': 0,\n* 'value': 0\n* })\n*\n* @output\n* change\n* Fires when the interface's value changes. <br>\n* Event data: <i>number</i> The number value of the interface.\n*\n* @outputexample\n* slider.on('change',function(v) {\n* console.log(v);\n* })\n*\n*\n*/\n\nexport default class Slider extends Interface {\n\n constructor() {\n\n let options = ['min','max','value'];\n\n let defaults = {\n 'size': [120,20],\n 'mode': 'relative', // 'relative' or 'absolute'\n 'min': 0,\n 'max': 1,\n 'step': 0,\n 'value': 0\n };\n\n super(arguments,options,defaults);\n\n this.orientation = 'vertical'; // This will change automatically to 'horizontal'if the interface is wider than it is tall.\n\n this._value = new Step(this.settings.min, this.settings.max, this.settings.step, this.settings.value);\n\n this.position = new Interaction.Handle(this.settings.mode,this.orientation,[0,this.width],[this.height,0]);\n this.position.value = this._value.normalized;\n\n this.init();\n\n this.position.direction = this.orientation;\n\n this.emit('change',this.value);\n\n }\n\n buildInterface() {\n\n this.bar = svg.create('rect');\n this.fillbar = svg.create('rect');\n this.knob = svg.create('circle');\n\n this.element.appendChild(this.bar);\n this.element.appendChild(this.fillbar);\n this.element.appendChild(this.knob);\n\n }\n\n sizeInterface() {\n\n if (this.width < this.height) {\n this.orientation = 'vertical';\n this.position.direction = 'vertical';\n } else {\n this.orientation = 'horizontal';\n this.position.direction = 'horizontal';\n }\n\n if (this.position) {\n this.position.resize([0,this.width],[this.height,0]);\n }\n\n let x, y, w, h, barOffset, cornerRadius;\n this.knobData = {\n level: 0,\n r: 0\n };\n\n if (this.orientation === 'vertical') {\n this.thickness = this.width / 2;\n \tx = this.width/2;\n \ty = 0;\n \tw = this.thickness;\n \th = this.height;\n this.knobData.r = this.thickness * 0.8;\n \tthis.knobData.level = h-this.knobData.r-this.normalized*(h-this.knobData.r*2);\n barOffset = 'translate('+this.thickness*(-1)/2+',0)';\n cornerRadius = w/2;\n } else {\n this.thickness = this.height / 2;\n \tx = 0;\n \ty = this.height/2;\n \tw = this.width;\n \th = this.thickness;\n this.knobData.r = this.thickness * 0.8;\n \tthis.knobData.level = this.normalized*(w-this.knobData.r*2)+this.knobData.r;\n barOffset = 'translate(0,'+this.thickness*(-1)/2+')';\n cornerRadius = h/2;\n }\n\n this.bar.setAttribute('x',x);\n this.bar.setAttribute('y',y);\n this.bar.setAttribute('transform',barOffset);\n this.bar.setAttribute('rx',cornerRadius); // corner radius\n this.bar.setAttribute('ry',cornerRadius);\n this.bar.setAttribute('width',w);\n this.bar.setAttribute('height',h);\n\n if (this.orientation === 'vertical') {\n this.fillbar.setAttribute('x',x);\n this.fillbar.setAttribute('y',this.knobData.level);\n this.fillbar.setAttribute('width',w);\n this.fillbar.setAttribute('height',h-this.knobData.level);\n } else {\n this.fillbar.setAttribute('x',0);\n this.fillbar.setAttribute('y',y);\n this.fillbar.setAttribute('width',this.knobData.level);\n this.fillbar.setAttribute('height',h);\n }\n this.fillbar.setAttribute('transform',barOffset);\n this.fillbar.setAttribute('rx',cornerRadius);\n this.fillbar.setAttribute('ry',cornerRadius);\n\n if (this.orientation === 'vertical') {\n this.knob.setAttribute('cx',x);\n this.knob.setAttribute('cy',this.knobData.level);\n } else {\n this.knob.setAttribute('cx',this.knobData.level);\n this.knob.setAttribute('cy',y);\n }\n this.knob.setAttribute('r',this.knobData.r);\n\n }\n\n colorInterface() {\n this.bar.setAttribute('fill', this.colors.fill);\n this.fillbar.setAttribute('fill', this.colors.accent);\n this.knob.setAttribute('fill', this.colors.accent);\n }\n\n\n render() {\n if (!this.clicked) {\n this.knobData.r = this.thickness*0.75;\n }\n this.knob.setAttribute('r',this.knobData.r);\n\n if (this.orientation === 'vertical') {\n \t this.knobData.level = this.knobData.r+this._value.normalized*(this.height-this.knobData.r*2);\n this.knob.setAttribute('cy',this.height - this.knobData.level);\n this.fillbar.setAttribute('y',this.height - this.knobData.level);\n this.fillbar.setAttribute('height',this.knobData.level);\n } else {\n \t this.knobData.level = this._value.normalized*(this.width-this.knobData.r*2)+this.knobData.r;\n this.knob.setAttribute('cx',this.knobData.level);\n this.fillbar.setAttribute('x',0);\n this.fillbar.setAttribute('width',this.knobData.level);\n }\n }\n\n\n click() {\n this.knobData.r = this.thickness*0.9;\n this.position.anchor = this.mouse;\n this.move();\n }\n\n move() {\n if (this.clicked) {\n this.position.update(this.mouse);\n this._value.updateNormal( this.position.value );\n this.emit('change',this._value.value);\n this.render();\n\n }\n }\n\n release() {\n this.render();\n }\n\n get normalized() {\n return this._value.normalized;\n }\n\n /**\n The slider's current value. If set manually, will update the interface and trigger the output event.\n @type {number}\n @example slider.value = 10;\n */\n get value() {\n return this._value.value;\n }\n set value(v) {\n this._value.update(v);\n this.position.value = this._value.normalized;\n this.emit('change',this._value.value);\n this.render();\n }\n\n /**\n Lower limit of the sliders's output range\n @type {number}\n @example slider.min = 1000;\n */\n get min() {\n return this._value.min;\n }\n set min(v) {\n this._value.min = v;\n }\n\n /**\n Upper limit of the slider's output range\n @type {number}\n @example slider.max = 1000;\n */\n get max() {\n return this._value.max;\n }\n set max(v) {\n this._value.max = v;\n }\n\n /**\n The increment that the slider's value changes by.\n @type {number}\n @example slider.step = 5;\n */\n get step() {\n return this._value.step;\n }\n set step(v) {\n this._value.step = v;\n }\n\n /**\n Absolute mode (slider's value jumps to mouse click position) or relative mode (mouse drag changes value relative to its current position). Default: \"relative\".\n @type {string}\n @example slider.mode = \"relative\";\n */\n get mode() {\n return this.position.mode;\n }\n set mode(v) {\n this.position.mode = v;\n }\n\n\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/slider.js","'use strict';\n\nlet svg = require('../util/svg');\nlet ToggleModel = require('../models/toggle');\nlet Interface = require('../core/interface');\n\n/**\n* Toggle\n*\n* @description Binary switch\n*\n* @demo <span nexus-ui=\"toggle\"></span>\n*\n* @example\n* var toggle = new Nexus.Toggle('#target')\n*\n* @example\n* var toggle = new Nexus.Toggle('#target',{\n* 'size': [40,20],\n* 'state': false\n* })\n*\n* @output\n* change\n* Fires any time the interface's value changes. <br>\n* Parameter: The boolean state of the interface.\n*\n* @outputexample\n* toggle.on('change',function(v) {\n* console.log(v);\n* })\n*\n*\n*/\nexport default class Toggle extends Interface {\n\n constructor() {\n\n let options = ['value'];\n\n let defaults = {\n 'size': [40,20],\n 'target': false,\n 'state': false\n };\n\n super(arguments,options,defaults);\n\n this._state = new ToggleModel(this.settings.state);\n\n this.init();\n\n }\n\n buildInterface() {\n\n this.bar = svg.create('rect');\n this.knob = svg.create('circle');\n this.element.appendChild(this.bar);\n this.element.appendChild(this.knob);\n\n }\n\n sizeInterface() {\n\n if (this.height < this.width/2) {\n this.knobSize = this.height/2;\n } else {\n this.knobSize = this.width/4;\n }\n\n this.bar.setAttribute('x',this.width/2 - this.knobSize*1.5);\n this.bar.setAttribute('y',this.height/2 - this.knobSize/2);\n this.bar.setAttribute('rx',this.knobSize/2);\n this.bar.setAttribute('ry',this.knobSize/2);\n this.bar.setAttribute('width',this.knobSize*3);\n this.bar.setAttribute('height',this.knobSize);\n\n this.knob.setAttribute('cx',this.width/2 - this.knobSize);\n this.knob.setAttribute('cy',this.height/2);\n this.knob.setAttribute('r',this.knobSize);\n\n }\n\n colorInterface() {\n this.knob.setAttribute('fill', this.colors.accent);\n this.render();\n }\n\n render() {\n if (!this.state) {\n this.knob.setAttribute('cx',this.width/2 - this.knobSize);\n this.bar.setAttribute('fill', this.colors.fill);\n } else {\n this.knob.setAttribute('cx',this.width/2 + this.knobSize);\n this.bar.setAttribute('fill', this.colors.accent);\n }\n }\n\n click() {\n this.flip();\n this.render();\n this.emit('change',this.state);\n }\n\n /**\n Whether the toggle is currently on or off. Setting this property will update the toggle interface and trigger the output event.\n @type {boolean}\n @example toggle.state = false;\n */\n get state() {\n return this._state.state;\n }\n set state(value) {\n this._state.flip(value);\n this.emit('change',this.state);\n this.render();\n }\n\n\n /**\n * Switch the toggle state to its opposite state\n * @example\n * toggle.flip();\n */\n flip() {\n this._state.flip();\n this.render();\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/toggle.js","'use strict';\n\nlet svg = require('../util/svg');\nlet ButtonTemplate = require('../components/buttontemplate');\n\n/**\n* Button\n*\n* @description Circular button with optional aftertouch.\n*\n* @demo <span nexus-ui=\"button\"></span>\n*\n* @example\n* var button = new Nexus.Button('#target')\n*\n* @example\n* var button = new Nexus.Button('#target',{\n* 'size': [80,80],\n* 'mode': 'aftertouch',\n* 'state': false\n* })\n*\n* @output\n* change\n* Fires any time the interface's value changes. <br>\n* In <b>button mode</b>, <b>toggle mode</b>, and <b>impulse mode</b>, the output data is a boolean describing the state of the button.<br>\n* In <b>aftertouch mode</b>, the output data is an object containing x (0-1) and y (0-1) positions of aftertouch.\n*\n* @outputexample\n* button.on('change',function(v) {\n* // v is the value of the button\n* console.log(v);\n* })\n*\n*/\n\nexport default class Button extends ButtonTemplate {\n\n constructor() {\n\n let options = ['mode'];\n\n\n let defaults = {\n 'size': [80,80],\n 'mode': 'aftertouch', // button, aftertouch, impulse, toggle\n 'state': false\n };\n\n super(arguments,options,defaults);\n\n\n /**\n * Interaction mode: supports \"button\", \"aftertouch\", \"impulse\", or \"toggle\"\n * @type {string}\n * @example button.mode = 'toggle';\n */\n this.mode = this.settings.mode;\n\n this.init();\n this.render();\n\n }\n\n buildInterface() {\n this.pad = svg.create('circle');\n this.element.appendChild(this.pad);\n\n this.interactionTarget = this.pad;\n\n // only used if in 'aftertouch' mode\n this.defs = svg.create('defs');\n this.element.appendChild(this.defs);\n\n this.gradient = svg.radialGradient(this.defs,2);\n\n this.gradient.stops[0].setAttribute('offset', '30%');\n\n this.gradient.stops[1].setAttribute('offset', '100%');\n\n }\n\n sizeInterface() {\n\n this.pad.setAttribute('cx',this.width/2);\n this.pad.setAttribute('cy',this.height/2);\n this.pad.setAttribute('r', Math.min(this.width,this.height) / 2 - this.width/40);\n this.pad.setAttribute('stroke-width', this.width/20);\n }\n\n colorInterface() {\n\n this.gradient.stops[0].setAttribute('stop-color', this.colors.accent);\n this.gradient.stops[1].setAttribute('stop-color', this.colors.fill);\n this.render();\n }\n\n /*\n * Update the visual interface using its current state\n *\n * @example\n * button.render();\n */\n render() {\n if (!this.state) {\n this.pad.setAttribute('fill', this.colors.fill);\n this.pad.setAttribute('stroke', this.colors.mediumLight);\n } else {\n if (this.mode==='aftertouch') {\n this.pad.setAttribute('stroke', 'url(#'+this.gradient.id+')');\n this.gradient.element.setAttribute('cx', (this.position.x*100)+'%');\n this.gradient.element.setAttribute('cy', ((1-this.position.y)*100)+'%');\n } else {\n this.pad.setAttribute('stroke', this.colors.accent);\n }\n this.pad.setAttribute('fill', this.colors.accent);\n }\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/button.js","'use strict';\n\nlet svg = require('../util/svg');\nlet math = require('../util/math');\nlet ToggleModel = require('../models/toggle');\nlet Interface = require('../core/interface');\n\n/**\nButton Template\n*/\n\nexport default class ButtonTemplate extends Interface {\n\n constructor(args,options,defaults) {\n\n super(args,options,defaults);\n\n this.mode = this.settings.mode || 'button';\n\n this.position = {\n x: 0,\n y: 0\n };\n\n this._state = new ToggleModel(this.settings.state);\n\n }\n\n buildInterface() {\n this.pad = svg.create('circle');\n this.pad.setAttribute('fill', '#d18');\n this.pad.setAttribute('stroke', '#d18');\n this.pad.setAttribute('stroke-width', 4);\n\n this.element.appendChild(this.pad);\n\n this.interactionTarget = this.pad;\n\n this.sizeInterface();\n }\n\n sizeInterface() {\n this.pad.setAttribute('cx',this.width/2);\n this.pad.setAttribute('cy',this.height/2);\n this.pad.setAttribute('r', Math.min(this.width,this.height) / 2 - 2);\n }\n\n render() {\n if (!this.state) {\n this.pad.setAttribute('fill', this.colors.fill);\n this.pad.setAttribute('stroke', this.colors.mediumLight);\n } else {\n this.pad.setAttribute('fill', this.colors.accent);\n this.pad.setAttribute('stroke', this.colors.accent);\n }\n }\n\n down(paintbrush) {\n switch (this.mode) {\n case 'impulse':\n this.turnOn();\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n this.timeout = setTimeout(this.turnOff.bind(this),30);\n // this.emit('change',this.state);\n break;\n case 'button':\n this.turnOn();\n // this.emit('change',this.state);\n break;\n case 'aftertouch':\n this.position = {\n x: math.clip(this.mouse.x / this.width,0,1),\n y: math.clip(1-this.mouse.y / this.height,0,1)\n };\n this.turnOn();\n // this.emit('change',{\n // state: this.state,\n // x: this.position.x,\n // y: this.position.y,\n // });\n break;\n case 'toggle':\n this.flip(paintbrush);\n // this.emit('change',this.state);\n break;\n }\n\n }\n\n bend(mouse) {\n if (this.mode==='aftertouch') {\n this.mouse = mouse || this.mouse;\n this.position = {\n x: math.clip(this.mouse.x / this.width,0,1),\n y: math.clip(1 - this.mouse.y / this.height,0,1)\n };\n this.emit('change',{\n state: this.state,\n x: this.position.x,\n y: this.position.y,\n });\n this.render();\n }\n }\n\n up() {\n switch (this.mode) {\n case 'button':\n this.turnOff();\n // this.emit('change',this.state);\n break;\n case 'aftertouch':\n this.turnOff();\n this.position = {\n x: math.clip(this.mouse.x / this.width,0,1),\n y: math.clip(1 - this.mouse.y / this.height,0,1)\n };\n // this.emit('change',{\n // state: this.state,\n // x: this.position.x,\n // y: this.position.y,\n // });\n break;\n }\n }\n\n /* overwritable interaction handlers */\n\n click() {\n this.down();\n }\n move() {\n this.bend();\n }\n release() {\n this.up();\n }\n\n /**\n Whether the button is on (pressed) or off (not pressed)\n @type {boolean}\n @example button.state = true;\n */\n get state() {\n return this._state.state;\n }\n set state(value) {\n this._state.flip(value);\n if (this.mode==='aftertouch') {\n this.emit('change',{\n state: this.state,\n x: this.position.x,\n y: this.position.y,\n });\n } else {\n this.emit('change',this.state);\n }\n this.render();\n }\n\n /**\n Change the button to its alternate state (off=>on, on=>off), or flip it to a specified state.\n @param value {boolean} (Optional) State to flip to.\n @example button.flip();\n */\n flip(value) {\n this._state.flip(value);\n if (this.mode==='aftertouch') {\n this.emit('change',{\n state: this.state,\n x: this.position.x,\n y: this.position.y,\n });\n } else {\n this.emit('change',this.state);\n }\n this.render();\n }\n\n /**\n Turn the button's state to true.\n @example button.turnOn();\n */\n turnOn(emitting) {\n this._state.on();\n if (emitting!==false) {\n if (this.mode==='aftertouch') {\n this.emit('change',{\n state: this.state,\n x: this.position.x,\n y: this.position.y,\n });\n } else {\n this.emit('change',this.state);\n }\n }\n this.render();\n }\n\n /**\n Turn the button's state to false.\n @example button.turnOff();\n */\n turnOff(emitting) {\n this._state.off();\n if (emitting!==false) {\n if (this.mode==='aftertouch') {\n this.emit('change',{\n state: this.state,\n x: this.position.x,\n y: this.position.y,\n });\n } else {\n this.emit('change',this.state);\n }\n }\n this.render();\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/components/buttontemplate.js","'use strict';\n\nlet ButtonTemplate = require('../components/buttontemplate');\n\n/**\n* TextButton\n*\n* @description Text button\n*\n* @demo <span nexus-ui=\"textButton\"></span>\n*\n* @example\n* var textbutton = new Nexus.TextButton('#target')\n*\n* @example\n* var textbutton = new Nexus.TextButton('#target',{\n* 'size': [150,50],\n* 'state': false,\n* 'text': 'Play',\n* 'alternateText': 'Stop'\n* })\n*\n* @output\n* change\n* Fires any time the interface's value changes. <br>\n* The event data is a <i>string</i> of the text on the button at the moment it was clicked.\n*\n* @outputexample\n* textbutton.on('change',function(v) {\n* console.log(v);\n* })\n*\n*/\n\nexport default class TextButton extends ButtonTemplate {\n\n constructor() {\n\n let options = ['value'];\n\n let defaults = {\n 'size': [150,50],\n 'state': false,\n 'text': 'Play'\n };\n\n super(arguments,options,defaults);\n\n this._text = this.settings.text;\n\n if(this.settings.alternate){ //TODO: Remove this conditional in a breaking-changes release\n this.settings.alternateText = this.settings.alternate;\n console.warn(\"'alternate' initiator is deprecated. Use 'alternateText' instead.\");\n }\n this._alternateText = this.settings.alternateText;\n this.mode = (this.settings.alternateText) ? 'toggle' : 'button';\n this.init();\n this.render();\n\n this.state = this.settings.state;\n\n }\n\n buildFrame() {\n\n this.element = document.createElement('div');\n this.parent.appendChild(this.element);\n\n this.textElement = document.createElement('div');\n this.textElement.innerHTML = this._text;\n this.element.appendChild(this.textElement);\n }\n\n buildInterface() {\n\n }\n\n colorInterface() {\n this.element.style.color = this.colors.dark;\n this.render();\n }\n\n sizeInterface() {\n let textsize = this.height/3;\n let textsize2 = (this.width / (this._text.length + 2) );\n textsize = Math.min(textsize,textsize2);\n if (this.alternateText) {\n let textsize3 = (this.width / (this.alternateText.length + 2) );\n textsize = Math.min(textsize,textsize3);\n }\n let styles = 'width: ' + this.width + 'px;';\n styles += 'height: ' + this.height + 'px;';\n styles += 'padding: '+(this.height-textsize)/2+'px 0px;';\n styles += 'box-sizing: border-box;';\n styles += 'text-align: center;';\n styles += 'font-family: inherit;';\n styles += 'font-weight: 700;';\n styles += 'opacity: 1;';\n styles += 'font-size:' + textsize + 'px;';\n this.textElement.style.cssText = styles;\n this.render();\n }\n\n render() {\n if (!this.state) {\n this.element.style.backgroundColor = this.colors.fill;\n this.textElement.style.color = this.colors.dark;\n this.textElement.innerHTML = this._text;\n } else {\n this.element.style.backgroundColor = this.colors.accent;\n this.textElement.style.color = this.colors.fill;\n if (this.alternateText) {\n this.textElement.innerHTML = this._alternateText;\n } else {\n this.textElement.innerHTML = this._text;\n }\n }\n }\n\n /**\n The text to display when the button is in its \"on\" state. If set, this puts the button in \"toggle\" mode.\n @type {String}\n */\n get alternateText() {\n return this._alternateText;\n }\n\n set alternateText(text) {\n if (text) {\n this.mode = 'toggle';\n } else {\n this.mode = 'button';\n }\n this._alternateText = text;\n this.render();\n }\n\n\n /**\n The text to display. (If .alternateText exists, then this .text will only be displayed when the button is in its \"off\" state.)\n @type {String}\n */\n get text() {\n return this._text;\n }\n\n set text(text) {\n this._text = text;\n this.sizeInterface();\n this.render();\n }\n\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/textbutton.js","'use strict';\n\n//let svg = require('../util/svg');\nlet Interface = require('../core/interface');\nlet Button = require('../interfaces/button');\n\n/**\n* RadioButton\n*\n* @description An array of buttons. By default, selecting one button will deselect all other buttons, but this can be customized using the API below.\n*\n* @demo <div nexus-ui=\"RadioButton\"></div>\n*\n* @example\n* var radiobutton = new Nexus.RadioButton('#target')\n*\n* @example\n* var radiobutton = new Nexus.RadioButton('#target',{\n* 'size': [120,25],\n* 'numberOfButtons': 4,\n* 'active': -1\n* })\n*\n* @output\n* change\n* Fires any time the interface's value changes. <br>\n* The event data an <i>integer</i>, the index of the button that is currently on. If no button is selected, the value will be -1.\n*\n* @outputexample\n* radiobutton.on('change',function(v) {\n* console.log(v);\n* })\n*\n*/\n\nexport default class RadioButton extends Interface {\n\n constructor() {\n\n let options = ['value'];\n\n let defaults = {\n 'size': [120,25],\n 'numberOfButtons': 4,\n 'active': -1\n };\n\n super(arguments,options,defaults);\n\n this.buttons = [];\n this._numberOfButtons = this.settings.numberOfButtons;\n this.active = this.settings.active;\n\n this.init();\n this.render();\n\n }\n\n buildFrame() {\n this.element = document.createElement('div');\n this.parent.appendChild(this.element);\n }\n\n buildInterface() {\n\n for (let i=0;i<this._numberOfButtons;i++) {\n let container = document.createElement('span');\n\n let button = new Button(container, {\n mode: 'toggle',\n component: true,\n }, this.update.bind(this,i));\n\n this.buttons.push(button);\n this.element.appendChild(container);\n }\n\n }\n\n sizeInterface() {\n\n let buttonWidth = this.width / this._numberOfButtons;\n let buttonHeight = this.height;\n\n for (let i=0;i<this._numberOfButtons;i++) {\n this.buttons[i].resize(buttonWidth,buttonHeight);\n }\n\n }\n\n colorInterface() {\n for (let i=0;i<this._numberOfButtons;i++) {\n this.buttons[i].colors = this.colors;\n this.buttons[i].render();\n }\n }\n\n update(index) {\n if (this.buttons[index].state) {\n this.select(index);\n } else {\n this.deselect();\n }\n // this.render();\n }\n\n render() {\n for (let i=0;i<this.buttons.length;i++) {\n if (i===this.active) {\n this.buttons[i].turnOn(false);\n } else {\n this.buttons[i].turnOff(false);\n }\n }\n }\n\n /**\n Select one button and deselect all other buttons.\n @param index {number} The index of the button to select\n */\n select(index) {\n if (index>=0 && index < this.buttons.length) {\n this.active = index;\n this.emit('change',this.active);\n this.render();\n }\n }\n\n /**\n Deselect all buttons.\n */\n deselect() {\n this.active = -1;\n this.emit('change',this.active);\n this.render();\n }\n\n get numberOfButtons() {\n return this._numberOfButtons;\n }\n\n /**\n * Update how many buttons are in the interface\n * @param {number} buttons How many buttons are in the interface\n */\n set numberOfButtons(buttons) {\n this._numberOfButtons = buttons;\n for (let i=0;i<this.buttons.length;i++) {\n this.buttons[i].destroy();\n }\n this.buttons = [];\n // for (let i=0;i<this.buttons.length;i++) {\n // this.buttons[i].destroy();\n // }\n this.empty();\n this.buildInterface();\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/radiobutton.js","'use strict';\n\nlet Interface = require('../core/interface');\nlet Step = require('../models/step');\nlet math = require('../util/math');\nlet util = require('../util/util');\n\n/**\n* Number\n*\n* @description Number interface which is controllable by dragging or typing.\n*\n* @demo <span nexus-ui=\"number\"></span>\n*\n* @example\n* var number = new Nexus.Number('#target')\n*\n* @example\n* var number = new Nexus.Number('#target',{\n* 'size': [60,30],\n* 'value': 0,\n* 'min': 0,\n* 'max': 20000,\n* 'step': 1\n* })\n*\n* @output\n* change\n* Fires any time the interface's value changes. <br>\n* The event data is the number value of the interface.\n*\n* @outputexample\n* number.on('change',function(v) {\n* console.log(v);\n* })\n*\n*\n*/\n\n\nexport default class Number extends Interface {\n\n constructor() {\n\n let options = ['value'];\n\n let defaults = {\n 'size': [60,30],\n 'value': 0,\n 'min': 0,\n 'max': 20000,\n 'step': 1\n };\n\n super(arguments,options,defaults);\n\n this._value = new Step(this.settings.min,this.settings.max,this.settings.step,this.settings.value);\n\n /*\n Default: 2. How many decimal places to clip the number's visual rendering to. This does not affect number's actual value output -- for that, set the step property to .01, .1, or 1.\n @type {number}\n @example number.decimalPlaces = 2;\n */\n this.decimalPlaces = 2;\n this.actual = 0;\n\n this.max = this._value.max;\n\n this.min = this._value.min;\n\n this.step = this._value.step;\n\n this.init();\n this.render();\n\n }\n\n buildFrame() {\n this.element = document.createElement('input');\n this.element.type = 'text';\n\n this.element.addEventListener('blur', function () {\n this.element.style.backgroundColor = this.colors.fill;\n this.element.style.color = this.colors.dark;\n if (this.element.value !== this.value) {\n this.value = parseFloat(this.element.value);\n this.render();\n }\n }.bind(this));\n\n util.setInputFilter(this.element, function(value) {\n return /^\\d*\\.?\\d*$/.test(value); });\n\n this.element.addEventListener('keydown', function (e) {\n if (e.which===13) {\n this.element.blur();\n this.value = this.element.value;\n this.emit('change',this.value);\n this.render();\n }\n }.bind(this), true);\n\n this.parent.appendChild(this.element);\n\n }\n\n sizeInterface() {\n\n this._minDimension = Math.min(this.width,this.height);\n\n let styles = 'width: ' + this.width + 'px;';\n styles += 'height: ' + this.height + 'px;';\n styles += 'background-color: #e7e7e7;';\n styles += 'color: #333;';\n styles += 'font-family: arial;';\n styles += 'font-weight: 500;';\n styles += 'font-size:' + this._minDimension/2 + 'px;';\n // styles += 'highlight: #d18;';\n styles += 'border: none;';\n styles += 'outline: none;';\n styles += 'padding: '+this._minDimension/4+'px '+this._minDimension/4+'px;';\n styles += 'box-sizing: border-box;';\n styles += 'userSelect: text;';\n styles += 'mozUserSelect: text;';\n styles += 'webkitUserSelect: text;';\n this.element.style.cssText += styles;\n\n // to add eventually\n // var css = '#'+this.elementID+'::selection{ background-color: transparent }';\n\n this.element.value = this.value;\n\n }\n\n colorInterface() {\n this.element.style.backgroundColor = this.colors.fill;\n this.element.style.color = this.colors.dark;\n }\n\n render() {\n\n this.element.value = math.prune(this.value,this.decimalPlaces);\n\n }\n\n click() {\n this.hasMoved = false;\n this.element.readOnly = true;\n\t this.actual = this.value;\n this.initial = { y: this.mouse.y };\n this.changeFactor = math.invert( this.mouse.x / this.width );\n }\n\n move() {\n this.hasMoved = true;\n if (this.clicked) {\n\n let newvalue = this.actual - (this.mouse.y - this.initial.y) * ( math.clip( this.max-this.min, 0, 1000 ) / 200 ) * Math.pow(this.changeFactor,2);\n this.value = newvalue;\n\n \t\tthis.render();\n if (this._value.changed) {\n this.emit('change',this.value);\n }\n\n \t}\n }\n\n release() {\n if (!this.hasMoved) {\n this.element.readOnly = false;\n \t\tthis.element.focus();\n \t\tthis.element.setSelectionRange(0, this.element.value.length);\n \t\tthis.element.style.backgroundColor = this.colors.accent;\n \t\tthis.element.style.color = this.colors.light;\n } else {\n document.body.focus();\n }\n }\n\n /**\n Connect this number interface to a dial or slider\n @param {Interface} element Element to connect to.\n @example number.link(slider)\n */\n link(destination) {\n this.min = destination.min;\n this.max = destination.max;\n this.step = destination.step;\n destination.on('change',(v) => {\n this.passiveUpdate(v);\n });\n this.on('change',(v) => {\n destination.value = v;\n });\n this.value = destination.value;\n /* return {\n listener1: listener1,\n listener2: listener2,\n destroy: () => {\n listener1.remove() (or similar)\n listener2.remove() (or similar)\n }\n } */\n }\n\n passiveUpdate(v) {\n this._value.update(v);\n this.render();\n }\n\n /**\n The interface's current value. If set manually, will update the interface and trigger the output event.\n @type {number}\n @example number.value = 10;\n */\n get value() {\n return this._value.value;\n }\n set value(v) {\n this._value.update(v);\n this.emit('change',this.value);\n this.render();\n }\n\n /**\n Lower limit of the number's output range\n @type {number}\n @example number.min = 1000;\n */\n get min() {\n return this._value.min;\n }\n set min(v) {\n this._value.min = v;\n }\n\n /**\n Upper limit of the number's output range\n @type {number}\n @example number.max = 1000;\n */\n get max() {\n return this._value.max;\n }\n set max(v) {\n this._value.max = v;\n }\n\n /**\n The increment that the number's value changes by.\n @type {number}\n @example number.step = 5;\n */\n get step() {\n return this._value.step;\n }\n set step(v) {\n this._value.step = v;\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/number.js","'use strict';\n\nlet Interface = require('../core/interface');\n\n/**\n* Select\n*\n* @description Dropdown menu\n*\n* @demo <span nexus-ui=\"select\"></span>\n*\n* @example\n* var select = new Nexus.Select('#target')\n*\n* @example\n* var select = new Nexus.Select('#target',{\n* 'size': [100,30],\n* 'options': ['default','options']\n* })\n*\n* @output\n* change\n* Fires any time the interface's value changes. <br>\n* The event data is an object containing the text value of the selected option, as well as the numeric index of the selection.\n*\n* @outputexample\n* select.on('change',function(v) {\n* console.log(v);\n* })\n*\n*\n*/\n\n\nexport default class Select extends Interface {\n\n constructor() {\n\n let options = ['value'];\n\n let defaults = {\n 'size': [100,30],\n 'options': ['default','options']\n };\n\n super(arguments,options,defaults);\n\n this._selectedIndex = -1;\n this._value = false;\n\n this._options = this.settings.options;\n\n this.init();\n this.render();\n\n }\n\n buildFrame() {\n this.element = document.createElement('select');\n this.element.style.fontSize = this.height/2+'px';\n this.element.style.outline = 'none';\n this.element.style.highlight = 'none';\n this.element.style.width = this.width+'px';\n this.element.style.height = this.height+'px';\n\n this.boundRender = this.render.bind(this);\n\n this.element.addEventListener('change', this.boundRender);\n\n this.parent.appendChild(this.element);\n\n }\n\n attachListeners() {\n\n }\n\n buildInterface() {\n\n this.defineOptions();\n\n }\n\n colorInterface() {\n this.element.style.backgroundColor = this.colors.fill;\n this.element.style.color = this.colors.dark;\n this.element.style.border = 'solid 0px '+this.colors.mediumLight;\n }\n\n render() {\n\n this._value = this.element.options[this.element.selectedIndex].text;\n this._selectedIndex = this.element.selectedIndex;\n this.emit('change',{\n value: this._value,\n index: this._selectedIndex\n });\n\n }\n\n click() {\n\n }\n\n move() {\n\n }\n\n release() {\n\n }\n\n /**\n * Update the list of options. This removes all existing options and creates a new list of options.\n * @param {array} options New array of options\n */\n\n defineOptions(options) {\n\n /* function removeOptions(selectbox)\n {\n var i;\n for(i = selectbox.options.length - 1 ; i >= 0 ; i--)\n {\n selectbox.remove(i);\n }\n }\n //using the function:\n removeOptions(document.getElementById(\"mySelectObject\")); */\n\n\n if (options) {\n this._options = options;\n }\n\n for(let i=this.element.options.length-1; i >= 0; i--) {\n this.element.remove(i);\n }\n\n for(let i=0;i<this._options.length;i++) {\n this.element.options.add(new Option(this._options[i], i));\n }\n\n }\n\n\n /**\n The text of the option that is currently selected. If set, will update the interface and trigger the output event.\n @type {String}\n @example select.value = \"sawtooth\";\n */\n get value() {\n return this._value;\n }\n set value(v) {\n this._value = v;\n for(let i=0;i<this.element.options.length;i++) {\n if (v === this.element.options[i].text) {\n this.selectedIndex = i;\n break;\n }\n }\n }\n\n\n /**\n The numeric index of the option that is currently selected. If set, will update the interface and trigger the output event.\n @type {number}\n @example select.selectedIndex = 2;\n */\n get selectedIndex() {\n return this._selectedIndex;\n }\n set selectedIndex(v) {\n this._selectedIndex = v;\n this.element.selectedIndex = v;\n this.render();\n }\n\n customDestroy() {\n this.element.removeEventListener('change', this.boundRender);\n }\n\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/select.js","'use strict';\n\nlet svg = require('../util/svg');\nlet math = require('../util/math');\nlet Interface = require('../core/interface');\nlet Step = require('../models/step');\nimport * as Interaction from '../util/interaction';\n\n/**\n* Dial\n*\n*\n* @description Dial with radial or linear interaction.\n*\n* @demo <span nexus-ui=\"dial\"></span>\n*\n* @example\n* var dial = new Nexus.Dial('#target')\n*\n* @example\n* var dial = new Nexus.Dial('#target',{\n* 'size': [75,75],\n* 'interaction': 'radial', // \"radial\", \"vertical\", or \"horizontal\"\n* 'mode': 'relative', // \"absolute\" or \"relative\"\n* 'min': 0,\n* 'max': 1,\n* 'step': 0,\n* 'value': 0\n* })\n*\n* @output\n* change\n* Fires any time the interface's value changes. <br>\n* The event data is the number value of the interface.\n*\n* @outputexample\n* dial.on('change',function(v) {\n* console.log(v);\n* })\n*\n* @tutorial\n* Dial\n* ygGMxq\n*\n*/\n\nexport default class Dial extends Interface {\n\n constructor() {\n\n let options = ['min','max','value'];\n\n let defaults = {\n 'size': [75,75],\n 'interaction': 'radial', // radial, vertical, horizontal\n 'mode': 'relative', // absolute, relative\n 'min': 0,\n 'max': 1,\n 'step': 0,\n 'value': 0\n };\n\n super(arguments,options,defaults);\n\n this.interaction = this.settings.interaction;\n\n this._value = new Step(this.settings.min, this.settings.max, this.settings.step, this.settings.value);\n\n this.position = new Interaction.Handle(this.settings.mode,this.interaction,[0,this.width],[this.height,0]);\n\n this.init();\n\n this.value = this._value.value;\n\n this.position.value = this._value.normalized;\n\n this.previousAngle = false;\n\n this.emit('change',this.value);\n\n }\n\n buildInterface() {\n\n this.background = svg.create('circle');\n this.screw = svg.create('circle');\n this.handle = svg.create('path');\n this.handle2 = svg.create('path');\n this.handleFill = svg.create('path');\n this.handle2Fill = svg.create('path');\n this.handleLine = svg.create('path');\n\n this.element.appendChild(this.background);\n this.element.appendChild(this.handle);\n this.element.appendChild(this.handle2);\n this.element.appendChild(this.handleFill);\n this.element.appendChild(this.handle2Fill);\n this.element.appendChild(this.handleLine);\n this.element.appendChild(this.screw);\n\n }\n\n\n sizeInterface() {\n\n this.position.resize([0,this.width],[this.height,0]);\n\n let center = {\n x: this.width/2,\n y: this.height/2\n };\n\n let diameter = Math.min(this.width,this.height);\n\n this.background.setAttribute('cx', center.x);\n this.background.setAttribute('cy', center.y);\n this.background.setAttribute('r', diameter/2-diameter/40);\n\n this.screw.setAttribute('cx', center.x);\n this.screw.setAttribute('cy', center.y);\n this.screw.setAttribute('r', diameter/12);\n\n let value = this.value;\n\n let handlePoints = {\n start: Math.PI*1.5,\n end: math.clip( math.scale(value,0,0.5,Math.PI*1.5,Math.PI*0.5) , Math.PI*0.5, Math.PI*1.5 )\n };\n let handle2Points = {\n start: Math.PI*2.5,\n end: math.clip( math.scale(value,0.5,1,Math.PI*2.5,Math.PI*1.5) , Math.PI*1.5, Math.PI*2.5 )\n };\n\n let handlePath = svg.arc(center.x, center.y, diameter/2-diameter/40, handlePoints.start, handlePoints.end);\n let handle2Path = svg.arc(center.x, center.y, diameter/2-diameter/40, handle2Points.start, handle2Points.end);\n\n this.handle.setAttribute('d',handlePath);\n this.handle.setAttribute('stroke-width', diameter/20);\n this.handle.setAttribute('fill', 'none');\n\n this.handle2.setAttribute('d',handle2Path);\n this.handle2.setAttribute('stroke-width', diameter/20);\n this.handle2.setAttribute('fill', 'none');\n\n handlePath += ' L '+center.x+' '+center.y;\n\n this.handleFill.setAttribute('d',handlePath);\n this.handleFill.setAttribute('fill-opacity', '0.3');\n\n handle2Path += ' L '+center.x+' '+center.y;\n\n this.handle2Fill.setAttribute('d',handle2Path);\n this.handle2Fill.setAttribute('fill-opacity', '0.3');\n\n let arcEndingA;\n if (value < 0.5) {\n arcEndingA = handlePoints.end;\n } else {\n arcEndingA = handle2Points.end;\n }\n\n let arcEndingX = center.x + Math.cos(arcEndingA) * (diameter/2);\n let arcEndingY = center.y + Math.sin(arcEndingA) * (diameter/2) * -1;\n\n this.handleLine.setAttribute('d','M '+center.x+' '+center.y+' L '+arcEndingX+' '+arcEndingY);\n this.handleLine.setAttribute('stroke-width', diameter/20);\n\n }\n\n colorInterface() {\n this.background.setAttribute('fill', this.colors.fill);\n this.screw.setAttribute('fill', this.colors.accent);\n this.handle.setAttribute('stroke', this.colors.accent);\n this.handle2.setAttribute('stroke', this.colors.accent);\n this.handleFill.setAttribute('fill', this.colors.accent);\n this.handle2Fill.setAttribute('fill', this.colors.accent);\n this.handleLine.setAttribute('stroke', this.colors.accent);\n\n }\n\n render() {\n let value = this._value.normalized;\n\n let center = {\n x: this.width/2,\n y: this.height/2\n };\n\n let diameter = Math.min(this.width,this.height);\n\n let handlePoints = {\n start: Math.PI*1.5,\n end: math.clip( math.scale(value,0,0.5,Math.PI*1.5,Math.PI*0.5) , Math.PI*0.5, Math.PI*1.5 )\n };\n let handle2Points = {\n start: Math.PI *2.5,\n end: math.clip( math.scale(value,0.5,1,Math.PI*2.5,Math.PI*1.5) , Math.PI*1.5, Math.PI*2.5 )\n };\n\n let handlePath = svg.arc(center.x, center.y, diameter/2-diameter/40, handlePoints.start, handlePoints.end);\n let handle2Path = svg.arc(center.x, center.y, diameter/2-diameter/40, handle2Points.start, handle2Points.end);\n\n this.handle.setAttribute('d',handlePath);\n this.handle2.setAttribute('d',handle2Path);\n\n\n handlePath += ' L '+center.x+' '+center.y;\n\n this.handleFill.setAttribute('d',handlePath);\n\n handle2Path += ' L '+center.x+' '+center.y;\n\n this.handle2Fill.setAttribute('d',handle2Path);\n\n let arcEndingA;\n if (value <= 0.5) {\n arcEndingA = handlePoints.end;\n } else {\n arcEndingA = handle2Points.end;\n }\n\n let arcEndingX = center.x + Math.cos(arcEndingA) * (diameter/2);\n let arcEndingY = center.y + Math.sin(arcEndingA) * (diameter/2) * -1;\n\n this.handleLine.setAttribute('d','M '+center.x+' '+center.y+' L '+arcEndingX+' '+arcEndingY);\n\n }\n\n\n click() {\n if (this.mode==='relative') {\n this.previousAngle = false;\n }\n this.position.anchor = this.mouse;\n this.position.value = this._value.normalized;\n this.move();\n }\n\n move() {\n if (this.clicked) {\n\n this.position.update(this.mouse);\n\n let angle = this.position.value*Math.PI*2;\n\n if (angle < 0 ) { angle += (Math.PI*2); }\n\n if (this.mode === 'relative') {\n if (this.previousAngle !== false && Math.abs(this.previousAngle - angle) > 2) {\n if (this.previousAngle > 3) {\n angle = Math.PI*2;\n } else {\n angle = 0;\n }\n }\n } /* else {\n if (this.previousAngle !== false && Math.abs(this.previousAngle - angle) > 2) {\n if (this.previousAngle > 3) {\n angle = Math.PI*2;\n } else {\n angle = 0;\n }\n }\n } */\n this.previousAngle = angle;\n\n let realValue = angle / (Math.PI*2);\n\n this.value = this._value.updateNormal( realValue );\n\n if (this.mode === 'relative') {\n this.position.value = realValue;\n }\n\n this.emit('change',this._value.value);\n\n this.render();\n\n }\n }\n\n release() {\n }\n\n /*\n Dial's value. When set, it will automatically be adjust to fit min/max/step settings of the interface.\n @type {number}\n @example dial.value = 10;\n\n get value() {\n return this._value.value;\n }\n\n set value(value) {\n this._value.update(value);\n this.emit('change',this.value);\n this.render();\n }\n*/\n\n /**\n Dial's value. When set, it will automatically be adjust to fit min/max/step settings of the interface.\n @type {number}\n @example dial.value = 10;\n */\n get value() {\n return this._value.value;\n }\n set value(v) {\n this._value.update(v);\n this.position.value = this._value.normalized;\n this.emit('change',this._value.value);\n this.render();\n }\n\n /**\n Lower limit of the dial's output range\n @type {number}\n @example dial.min = 1000;\n */\n get min() {\n return this._value.min;\n }\n set min(v) {\n this._value.min = v;\n }\n\n /**\n Upper limit of the dial's output range\n @type {number}\n @example dial.max = 1000;\n */\n get max() {\n return this._value.max;\n }\n set max(v) {\n this._value.max = v;\n }\n\n /**\n The increment that the dial's value changes by.\n @type {number}\n @example dial.step = 5;\n */\n get step() {\n return this._value.step;\n }\n set step(v) {\n this._value.step = v;\n }\n\n /**\n Absolute mode (dial's value jumps to mouse click position) or relative mode (mouse drag changes value relative to its current position). Default: \"relative\".\n @type {string}\n @example dial.mode = \"relative\";\n */\n get mode() {\n return this.position.mode;\n }\n set mode(v) {\n this.position.mode = v;\n }\n\n\n /**\n Normalized value of the dial.\n @type {number}\n @example dial.normalized = 0.5;\n */\n get normalized() {\n return this._value.normalized;\n }\n\n set normalized(v) {\n this._value.updateNormal(v);\n this.emit('change',this.value);\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/dial.js","'use strict';\n\nlet svg = require('../util/svg');\nlet Interface = require('../core/interface');\nlet ButtonTemplate = require('../components/buttontemplate');\nlet touch = require('../util/touch');\n\nclass PianoKey extends ButtonTemplate {\n\n constructor() {\n\n let options = ['value','note','color'];\n\n let defaults = {\n 'size': [80,80],\n 'target': false,\n 'mode': 'button',\n 'value': 0\n };\n\n super(arguments,options,defaults);\n\n this.note = this.settings.note;\n this.color = this.settings.color;\n\n this.colors = {\n 'w': '#fff',\n 'b': '#666',\n };\n\n this.init();\n this.render();\n\n }\n\n buildFrame() {\n this.element = svg.create('svg');\n this.element.setAttribute('width',this.width);\n this.element.setAttribute('height',this.height);\n this.parent.appendChild(this.element);\n }\n\n buildInterface() {\n\n this.pad = svg.create('rect');\n\n this.element.appendChild(this.pad);\n\n this.interactionTarget = this.pad;\n\n /* events */\n\n if (!touch.exists) {\n\n this.click = () => {\n // console.log('click');\n this.piano.interacting = true;\n this.piano.paintbrush = !this.state;\n this.down(this.piano.paintbrush);\n };\n\n this.pad.addEventListener('mouseover', () => {\n if (this.piano.interacting) {\n // console.log('mouseover');\n this.down(this.piano.paintbrush);\n }\n });\n\n\n this.move = () => {\n if (this.piano.interacting) {\n // console.log('move');\n this.bend();\n }\n };\n\n\n this.release = () => {\n this.piano.interacting = false;\n // console.log('release');\n // this.up();\n };\n this.pad.addEventListener('mouseup', () => {\n if (this.piano.interacting) {\n // console.log('mouseup');\n this.up();\n }\n });\n this.pad.addEventListener('mouseout', () => {\n if (this.piano.interacting) {\n // console.log('mouseout');\n this.up();\n }\n });\n\n }\n\n }\n\n sizeInterface() {\n\n //let radius = Math.min(this.width,this.height) / 5;\n let radius = 0;\n\n this.pad.setAttribute('x',0.5);\n this.pad.setAttribute('y',0.5);\n if (this.width > 2) {\n this.pad.setAttribute('width', this.width - 1);\n } else {\n this.pad.setAttribute('width', this.width);\n }\n if (this.height > 2) {\n this.pad.setAttribute('height', this.height);\n } else {\n this.pad.setAttribute('height', this.height);\n }\n this.pad.setAttribute('rx', radius);\n this.pad.setAttribute('ry', radius);\n\n }\n\n render() {\n if (!this.state) {\n this.pad.setAttribute('fill', this.colors[this.color]);\n } else {\n this.pad.setAttribute('fill', this.colors.accent);\n }\n }\n\n}\n\n/**\n* Piano\n*\n* @description Piano keyboard interface\n*\n* @demo <div nexus-ui=\"piano\"></div>\n*\n* @example\n* var piano = new Nexus.Piano('#target')\n*\n* @example\n* var piano = new Nexus.Piano('#target',{\n* 'size': [500,125],\n* 'mode': 'button', // 'button', 'toggle', or 'impulse'\n* 'lowNote': 24,\n* 'highNote': 60\n* })\n*\n* @output\n* change\n* Fires any time a new key is pressed or released <br>\n* The event data is an object containing <i>note</i> and <i>state</i> properties.\n*\n* @outputexample\n* piano.on('change',function(v) {\n* console.log(v);\n* })\n*\n*/\n\nexport default class Piano extends Interface {\n\n constructor() {\n\n let options = ['value'];\n\n let defaults = {\n 'size': [500,125],\n 'lowNote': 24,\n 'highNote': 60,\n 'mode': 'button'\n };\n\n super(arguments,options,defaults);\n\n this.keyPattern = ['w','b','w','b','w','w','b','w','b','w','b','w'];\n\n this.paintbrush = false;\n\n this.mode = this.settings.mode;\n\n this.range = {\n low: this.settings.lowNote,\n high: this.settings.highNote\n };\n\n this.range.size = this.range.high - this.range.low + 1;\n\n this.keys = [];\n\n this.toggleTo = false;\n\n this.init();\n this.render();\n\n }\n\n buildFrame() {\n this.element = document.createElement('div');\n this.element.style.position = 'relative';\n this.element.style.borderRadius = '0px';\n this.element.style.display = 'block';\n this.element.style.width = '100%';\n this.element.style.height = '100%';\n this.parent.appendChild(this.element);\n }\n\n buildInterface() {\n\n this.keys = [];\n\n for (let i=0;i<this.range.size;i++) {\n\n let container = document.createElement('span');\n let scaleIndex = (i+this.range.low) % this.keyPattern.length;\n\n let key = new PianoKey(container, {\n component: true,\n note: i+this.range.low,\n color: this.keyPattern[scaleIndex],\n mode: this.mode\n }, this.keyChange.bind(this,i+this.range.low));\n\n key.piano = this;\n\n if (touch.exists) {\n key.pad.index = i;\n key.preClick = key.preMove = key.preRelease = () => {};\n key.click = key.move = key.release = () => {};\n key.preTouch = key.preTouchMove = key.preTouchRelease = () => {};\n key.touch = key.touchMove = key.touchRelease = () => {};\n }\n\n this.keys.push(key);\n this.element.appendChild(container);\n\n }\n if (touch.exists) {\n this.addTouchListeners();\n }\n\n }\n\n sizeInterface() {\n\n let keyX = 0;\n\n let keyPositions = [];\n\n for (let i=0;i<this.range.size;i++) {\n\n keyPositions.push(keyX);\n\n let scaleIndex = (i+this.range.low) % this.keyPattern.length;\n let nextScaleIndex = (i+1+this.range.low) % this.keyPattern.length;\n if (i+1+this.range.low >= this.range.high) {\n keyX += 1;\n } else if (this.keyPattern[scaleIndex] === 'w' && this.keyPattern[nextScaleIndex] === 'w') {\n keyX += 1;\n } else {\n keyX += 0.5;\n }\n }\n let keysWide = keyX;\n\n\n // let padding = this.width / 120;\n let padding = 1;\n let buttonWidth = (this.width-padding*2) / keysWide;\n let buttonHeight = (this.height-padding*2) / 2;\n\n for (let i=0;i<this.keys.length;i++) {\n\n let container = this.keys[i].parent;\n container.style.position = 'absolute';\n container.style.left = (keyPositions[i]*buttonWidth+padding) + 'px';\n if (this.keys[i].color === 'w') {\n container.style.top = (padding) + 'px';\n this.keys[i].resize(buttonWidth, buttonHeight*2);\n } else {\n container.style.zIndex = 1;\n container.style.top = padding+'px';\n this.keys[i].resize(buttonWidth, buttonHeight*1.1);\n }\n\n }\n\n }\n\n colorInterface() {\n\n // Piano keys don't actually have a stroke border\n // They have space between them, which shows the Piano bg color\n this.element.style.backgroundColor = this.colors.mediumLight;\n\n for (let i=0;i<this.keys.length;i++) {\n this.keys[i].colors = {\n 'w': this.colors.light,\n 'b': this.colors.dark,\n 'accent': this.colors.accent,\n 'border': this.colors.mediumLight\n };\n this.keys[i].colorInterface();\n this.keys[i].render();\n }\n\n\n }\n\n keyChange(note,on) {\n // emit data for any key turning on/off\n // \"note\" is the note value\n // \"on\" is a boolean whether it is on or off\n // in aftertouch mode, \"on: is an object with state/x/y properties\n var data = {\n note: note\n };\n if (typeof on === 'object') {\n data.state = on.state;\n // data.x = on.x\n // data.y = on.y\n } else {\n data.state = on;\n }\n this.emit('change',data);\n }\n\n /* drag(note,on) {\n this.emit('change',{\n note: note,\n state: on\n });\n } */\n\n render() {\n // loop through and render the keys?\n }\n\n\n addTouchListeners() {\n\n this.preClick = this.preMove = this.preRelease = () => {};\n this.click = this.move = this.release = () => {};\n this.preTouch = this.preTouchMove = this.preTouchRelease = () => {};\n this.touch = this.touchMove = this.touchRelease = () => {};\n\n this.currentElement = false;\n\n this.element.addEventListener('touchstart', (e) => {\n console.log('touchstart');\n let element = document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY);\n let key = this.keys[element.index];\n this.paintbrush = !key.state;\n key.down(this.paintbrush);\n this.currentElement = element.index;\n e.preventDefault();\n e.stopPropagation();\n });\n\n this.element.addEventListener('touchmove', (e) => {\n let element = document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY);\n let key = this.keys[element.index];\n if (element.index!==this.currentElement) {\n if (this.currentElement) {\n let pastKey = this.keys[this.currentElement];\n pastKey.up();\n }\n key.down(this.paintbrush);\n } else {\n key.bend();\n }\n this.currentElement = element.index;\n e.preventDefault();\n e.stopPropagation();\n });\n\n this.element.addEventListener('touchend', (e) => {\n // no touches to calculate because none remaining\n let key = this.keys[this.currentElement];\n key.up();\n this.interacting = false;\n this.currentElement = false;\n e.preventDefault();\n e.stopPropagation();\n });\n\n }\n\n /**\n Define the pitch range (lowest and highest note) of the piano keyboard.\n @param low {number} MIDI note value of the lowest note on the keyboard\n @param high {number} MIDI note value of the highest note on the keyboard\n */\n setRange(low,high) {\n this.range.low = low;\n this.range.high = high;\n this.empty();\n this.buildInterface();\n }\n\n /**\n Turn a key on or off using its MIDI note value;\n @param note {number} MIDI note value of the key to change\n @param on {boolean} Whether the note should turn on or off\n */\n toggleKey(note, on) {\n this.keys[note-this.range.low].flip(on);\n }\n\n /**\n Turn a key on or off using its key index on the piano interface.\n @param index {number} Index of the key to change\n @param on {boolean} Whether the note should turn on or off\n */\n toggleIndex(index, on) {\n this.keys[index].flip(on);\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/piano.js","'use strict';\n\nlet svg = require('../util/svg');\nlet dom = require('../util/dom');\nlet Interface = require('../core/interface');\nlet ButtonTemplate = require('../components/buttontemplate');\nlet MatrixModel = require('../models/matrix');\nlet CounterModel = require('../models/counter');\nlet Interval = require('../time/interval');\nlet touch = require('../util/touch');\n\n\n\nclass MatrixCell extends ButtonTemplate {\n\n constructor() {\n\n let options = ['value',];\n\n let defaults = {\n 'size': [80,80],\n 'target': false,\n 'mode': 'toggle',\n 'value': 0\n };\n\n super(arguments,options,defaults);\n\n this.index = this.settings.index;\n this.row = this.settings.row;\n this.column = this.settings.column;\n\n this.matrix = this.settings.matrix;\n\n this.interacting = false;\n this.paintbrush = false;\n\n this.init();\n this.render();\n\n }\n\n buildFrame() {\n this.element = svg.create('svg');\n this.element.setAttribute('width',this.width);\n this.element.setAttribute('height',this.height);\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.element.style.position = 'absolute';\n this.parent.appendChild(this.element);\n }\n\n buildInterface() {\n\n this.pad = svg.create('rect');\n this.element.appendChild(this.pad);\n\n this.interactionTarget = this.pad;\n\n /* events */\n\n if (!touch.exists) {\n\n this.click = () => {\n this.matrix.interacting = true;\n this.matrix.paintbrush = !this.state;\n this.down(this.matrix.paintbrush);\n };\n this.pad.addEventListener('mouseover', () => {\n if (this.matrix.interacting) {\n this.down(this.matrix.paintbrush);\n }\n });\n\n\n this.move = () => {\n };\n this.pad.addEventListener('mousemove', (e) => {\n if (this.matrix.interacting) {\n if (!this.offset) {\n this.offset = dom.findPosition(this.element);\n }\n this.mouse = dom.locateMouse(e,this.offset);\n this.bend();\n }\n });\n\n\n this.release = () => {\n this.matrix.interacting = false;\n };\n this.pad.addEventListener('mouseup', () => {\n if (this.matrix.interacting) {\n this.up();\n }\n });\n this.pad.addEventListener('mouseout', () => {\n if (this.matrix.interacting) {\n this.up();\n }\n });\n }\n\n }\n\n sizeInterface() {\n\n this.pad.setAttribute('x',1);\n this.pad.setAttribute('y',1);\n if (this.width > 2) {\n this.pad.setAttribute('width', this.width - 2);\n } else {\n this.pad.setAttribute('width', this.width);\n }\n if (this.height > 2) {\n this.pad.setAttribute('height', this.height - 2);\n } else {\n this.pad.setAttribute('height', this.height);\n }\n //this.pad.setAttribute('height', this.height - 2);\n this.pad.setAttribute('fill', this.matrix.colors.fill);\n\n }\n\n render() {\n if (!this.state) {\n this.pad.setAttribute('fill', this.matrix.colors.fill);\n } else {\n this.pad.setAttribute('fill', this.matrix.colors.accent);\n }\n }\n\n}\n\n/**\n* Sequencer\n*\n* @description Grid of buttons with built-in step sequencer.\n*\n* @demo <div nexus-ui=\"sequencer\" style=\"width:400px;height:200px;\"></div>\n*\n* @example\n* var sequencer = new Nexus.Sequencer('#target')\n*\n* @example\n* var sequencer = new Nexus.Sequencer('#target',{\n* 'size': [400,200],\n* 'mode': 'toggle',\n* 'rows': 5,\n* 'columns': 10\n*})\n*\n* @output\n* change\n* Fires any time the interface's matrix changes. <br>\n* The event data is an object containing <i>row</i> (number), <i>column</i> (number), and <i>state</i> (boolean) properties.\n*\n* @outputexample\n* sequencer.on('change',function(v) {\n* console.log(v);\n* })\n*\n* @output\n* step\n* Fires any time the sequencer steps to the next column, in sequece mode. <br>\n* The event data is an <i>array</i> containing all values in the column, <i>bottom row first</i>.\n*\n* @outputexample\n* sequencer.on('step',function(v) {\n* console.log(v);\n* })\n*/\n\nexport default class Sequencer extends Interface {\n\n constructor() {\n\n let options = ['value'];\n\n let defaults = {\n 'size': [400,200],\n 'mode': 'toggle',\n 'rows': 5,\n 'columns': 10\n };\n\n super(arguments,options,defaults);\n\n this.active = -1;\n\n /**\n * Button interaction mode: see Button\n * @type {string}\n * @example button.mode = 'toggle';\n */\n this.mode = this.settings.mode;\n\n /**\n * The interval object which controls timing and sequence scheduling.\n * @type {interval}\n */\n this.interval = new Interval(200,function() {},false); // jshint ignore:line\n\n /**\n * A Matrix model containing methods for manipulating the sequencer's array of values. To learn how to manipulate the matrix, read about the matrix model.\n * @type {matrix}\n */\n this.matrix = new MatrixModel(this.settings.rows,this.settings.columns);\n this.matrix.ui = this;\n\n /**\n * A Counter model which the sequencer steps through. For example, you could use this model to step through the sequencer in reverse, randomly, or in a drunk walk.\n * @type {counter}\n */\n this.stepper = new CounterModel(0,this.columns);\n\n this.init();\n\n }\n\n buildFrame() {\n this.element = document.createElement('div');\n this.element.style.position = 'relative';\n this.element.style.display = 'block';\n this.element.style.width = '100%';\n this.element.style.height = '100%';\n this.parent.appendChild(this.element);\n if (touch.exists) {\n this.addTouchListeners();\n }\n }\n\n buildInterface() {\n\n this.cells = [];\n for (let i=0;i<this.matrix.length;i++) {\n\n let location = this.matrix.locate(i);\n // returns {row,col}\n\n let container = document.createElement('span');\n container.style.position = 'absolute';\n\n\n let cell = new MatrixCell(container, {\n component: true,\n index: i,\n row: location.row,\n column: location.column,\n mode: this.mode,\n matrix: this\n }, this.keyChange.bind(this,i));\n\n // cell.matrix = this;\n if (touch.exists) {\n cell.pad.index = i;\n cell.preClick = cell.preMove = cell.preRelease = () => {};\n cell.click = cell.move = cell.release = () => {};\n cell.preTouch = cell.preTouchMove = cell.preTouchRelease = () => {};\n cell.touch = cell.touchMove = cell.touchRelease = () => {};\n }\n\n this.cells.push(cell);\n this.element.appendChild(container);\n\n }\n this.sizeInterface();\n }\n\n sizeInterface() {\n\n let cellWidth = this.width / this.columns;\n let cellHeight = this.height / this.rows;\n\n for (let i=0; i<this.cells.length; i++) {\n let container = this.cells[i].parent;\n container.style.left = this.cells[i].column * cellWidth + 'px';\n container.style.top = this.cells[i].row * cellHeight + 'px';\n this.cells[i].resize(cellWidth,cellHeight);\n }\n\n\n }\n\n colorInterface() {\n for (var i=0; i<this.cells.length; i++) {\n this.cells[i].render();\n }\n }\n\n update() {\n // console.log(\"updating...\")\n //on = on || false;\n this.matrix.iterate((r,c,i) => {\n // console.log(this.matrix.pattern[r][c], this.cells[i].state);\n if (this.matrix.pattern[r][c] !== this.cells[i].state) {\n if (this.matrix.pattern[r][c] > 0) {\n this.cells[i].turnOn();\n } else {\n this.cells[i].turnOff();\n }\n }\n });\n }\n\n// update => cell.turnOn => cell.emit => keyChange (seq.emit) => matrix.set.cell => update\n//\n// interaction => keyChange => matrix.set.cell => update => cell.turnOn\n// => emit\n//\n// set.cell => update => needs to emit.\n\n keyChange(note,on) {\n // emit data for any key turning on/off\n // i is the note index\n // v is whether it is on or off\n let cell = this.matrix.locate(note);\n // this.matrix.set.cell(cell.column,cell.row,on);\n this.matrix.pattern[cell.row][cell.column] = on;\n var data = {\n row: cell.row,\n column: cell.column,\n state: on\n };\n this.emit('change',data);\n }\n\n render() {\n if (this.stepper.value >= 0) {\n this.matrix.iterate((r,c,i) => {\n if (c===this.stepper.value) {\n this.cells[i].pad.setAttribute('stroke',this.colors.mediumLight);\n this.cells[i].pad.setAttribute('stroke-width','1');\n this.cells[i].pad.setAttribute('stroke-opacity','1');\n } else {\n this.cells[i].pad.setAttribute('stroke','none');\n }\n });\n }\n }\n\n /**\n * Start sequencing\n * @param {number} ms Beat tempo in milliseconds\n */\n start(ms) {\n this.interval.event = this.next.bind(this);\n if (ms) {\n this.interval.ms(ms);\n }\n this.interval.start();\n }\n\n /**\n Stop sequencing\n */\n stop() {\n this.interval.stop();\n }\n\n /**\n Manually jump to the next column and trigger the 'change' event. The \"next\" column is determined by your mode of sequencing.\n */\n next() {\n this.stepper.next();\n this.emit('step',this.matrix.column(this.stepper.value).reverse());\n this.render();\n }\n\n addTouchListeners() {\n\n this.preClick = this.preMove = this.preRelease = () => {};\n this.click = this.move = this.release = () => {};\n this.preTouch = this.preTouchMove = this.preTouchRelease = () => {};\n this.touch = this.touchMove = this.touchRelease = () => {};\n\n this.currentElement = false;\n\n this.element.addEventListener('touchstart', (e) => {\n let element = document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY);\n let cell = this.cells[element.index];\n this.paintbrush = !cell.state;\n cell.down(this.paintbrush);\n this.currentElement = element.index;\n e.preventDefault();\n e.stopPropagation();\n });\n\n this.element.addEventListener('touchmove', (e) => {\n let element = document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY);\n let cell = this.cells[element.index];\n if (element.index!==this.currentElement) {\n if (this.currentElement >= 0) {\n let pastCell = this.cells[this.currentElement];\n pastCell.up();\n }\n cell.down(this.paintbrush);\n } else {\n cell.bend();\n }\n this.currentElement = element.index;\n e.preventDefault();\n e.stopPropagation();\n });\n\n this.element.addEventListener('touchend', (e) => {\n // no touches to calculate because none remaining\n let cell = this.cells[this.currentElement];\n cell.up();\n this.interacting = false;\n this.currentElement = false;\n e.preventDefault();\n e.stopPropagation();\n });\n\n }\n\n /**\n Number of rows in the sequencer\n @type {number}\n */\n get rows() {\n return this.matrix.rows;\n }\n\n set rows(v) {\n this.matrix.rows = v;\n this.empty();\n this.buildInterface();\n this.update();\n }\n\n /**\n Number of columns in the sequencer\n @type {number}\n */\n get columns() {\n return this.matrix.columns;\n }\n\n set columns(v) {\n this.matrix.columns = v;\n this.stepper.max = v;\n this.empty();\n this.buildInterface();\n this.update();\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/sequencer.js","'use strict';\n\nimport math from '../util/math';\nimport Sequence from '../models/sequence';\n\n// For the tutorial, looking at\n\n//Pattern section:\n// .create(), .rows, .columns,\n// .pattern, .length, .formatAsText(), .log(),\n// .locate(i), .indexOf(c,r)\n// row(), column() (returns contents of row or colum)\n\n//Control section:\n// toggle x3\n// set x4\n// rotate x3\n// populate x3\n// erase x3\n\n\n// should some version of this have a float value for each cell?\n// could be like a mirror .pattern that has values. by default, everything is 1, but could be set...\n// not a good way to do that on interface, but as a model it would be nice...\n// for .formatAsText(), could multiply by 100 and floor, so each cell is an int from 0 to 9\n\nexport default class Matrix {\n\n constructor(rows,columns) {\n // should also have ability to create using an existing matrix (2d array)\n this.pattern = [];\n this.create(rows,columns);\n\n this.toggle = {\n cell: (column, row) => {\n this.pattern[row][column] = !this.pattern[row][column]; // math.invert(this.pattern[row][column]);\n if (this.ui) { this.ui.update(); }\n return this.pattern[row][column];\n },\n all: () => {\n this.iterate((r,c) => { this.toggle.cell(c,r); });\n if (this.ui) { this.ui.update(); }\n },\n row: (row) => {\n for (let i=0; i<this.columns; i++) {\n this.toggle.cell(i,row);\n }\n if (this.ui) { this.ui.update(); }\n },\n column: (column) => {\n for (let i=0; i<this.rows; i++) {\n this.toggle.cell(column,i);\n }\n if (this.ui) { this.ui.update(); }\n }\n };\n\n this.set = {\n cell: (column, row, value) => {\n this.pattern[row][column] = value;\n if (this.ui) { this.ui.update(); }\n },\n all: (values) => {\n // set the whole matrix using a 2d array as input\n // this should also resize the array?\n this.pattern = values;\n if (this.ui) { this.ui.update(); }\n },\n row: (row,values) => {\n // set a row using an array as input\n this.pattern[row] = values;\n if (this.ui) { this.ui.update(); }\n },\n column: (column,values) => {\n // set a column using an array as input\n this.pattern.forEach((row,i) => {\n this.pattern[i][column] = values[i];\n });\n if (this.ui) { this.ui.update(); }\n }\n };\n\n this.rotate = {\n //should eventually do (amountX, amountY) here\n // could just use a loop and this.rotate.row(i,amountX);\n all: (amount) => {\n if (!amount && amount!==0) {\n amount = 1;\n }\n amount %= this.pattern[0].length;\n if (amount < 0) {\n amount = this.pattern[0].length + amount;\n }\n for (let i=0; i<this.rows; i++) {\n let cut = this.pattern[i].splice( this.pattern[i].length - amount, amount );\n this.pattern[i] = cut.concat( this.pattern[i] );\n }\n if (this.ui) { this.ui.update(); }\n },\n row: (row,amount) => {\n if (!amount && amount!==0) {\n amount = 1;\n }\n amount %= this.pattern[0].length;\n if (amount < 0) {\n amount = this.pattern[0].length + amount;\n }\n let cut = this.pattern[row].splice( this.pattern[row].length - amount, amount );\n this.pattern[row] = cut.concat( this.pattern[row] );\n if (this.ui) { this.ui.update(); }\n },\n column: (column, amount) => {\n if (!amount && amount!==0) {\n amount = 1;\n }\n amount %= this.pattern.length;\n if (amount < 0) {\n amount = this.pattern.length + amount;\n }\n let proxy = [];\n this.pattern.forEach((row) => {\n proxy.push( row[column] );\n });\n let cut = proxy.splice( proxy.length - amount, amount );\n proxy = cut.concat( proxy );\n this.pattern.forEach((row,i) => {\n row[column] = proxy[i];\n });\n if (this.ui) { this.ui.update(); }\n }\n };\n\n // the idea behind populate is to be able to set a whole row or column to 0 or 1\n // IF the value is a float, such as 0.7, then it would become a probability\n // so populate(0.7) would give each cell a 70% chance of being 1\n this.populate = {\n all: (odds) => {\n let oddsSequence = new Sequence(odds);\n this.iterate((r,c) => {\n this.pattern[r][c] = math.coin(oddsSequence.next());\n });\n // This could be used so that each row has same odds pattern, even if row length is not divisibly by sequence length.\n //,() => {\n // odds.pos = -1;\n // }\n if (this.ui) { this.ui.update(); }\n },\n row: (row=0,odds=1) => {\n let oddsSequence = new Sequence(odds);\n this.pattern[row].forEach((cell,i) => {\n this.pattern[row][i] = math.coin(oddsSequence.next());\n });\n if (this.ui) { this.ui.update(); }\n },\n column: (column=0,odds=1) => {\n let oddsSequence = new Sequence(odds);\n this.pattern.forEach((row,i) => {\n this.pattern[i][column] = math.coin(oddsSequence.next());\n });\n if (this.ui) { this.ui.update(); }\n }\n };\n\n // essentiall populate(0) so i'm not sure if this is necessary but is nice\n this.erase = {\n all: () => {\n this.set.all(0);\n },\n row: (row) => {\n this.set.row(row,0);\n },\n column: (column) => {\n this.set.column(column,0);\n }\n };\n\n // end constructor\n }\n\n\n create(rows,columns) {\n this.pattern = [];\n for ( let row=0; row < rows; row++ ) {\n let arr = new Array(columns);\n this.pattern.push(arr);\n }\n this.iterate((r,c) => { this.pattern[r][c] = false; });\n }\n\n iterate(f, f2) {\n let i = 0;\n for ( let row=0; row < this.rows; row++ ) {\n if (f2) { f2(row); }\n for ( let column=0; column < this.columns; column++ ) {\n f(row,column,i);\n i++;\n }\n }\n }\n\n formatAsText() {\n let patternString = '';\n this.iterate(\n (r,c) => { patternString += (this.pattern[r][c] ? 1 : 0) + ' '; },\n () => { patternString += '\\n'; }\n );\n return patternString;\n }\n\n log() {\n console.log(this.formatAsText());\n }\n\n update(pattern) {\n this.pattern = pattern || this.pattern;\n }\n\n get length() {\n return this.rows*this.columns;\n }\n\n locate(index) {\n // returns row and column of cell by index\n return {\n row: ~~( index / this.columns ),\n column: index % this.columns\n };\n }\n\n indexOf(row,column) {\n return column + row * this.columns;\n // returns index of cell by row and column\n }\n\n row(row) {\n let data = [];\n for (let i=0; i<this.columns; i++) {\n data.push(this.pattern[row] ? 1 : 0);\n }\n return data;\n }\n\n column(column) {\n let data = [];\n for (let i=0; i<this.rows; i++) {\n data.push(this.pattern[i][column] ? 1 : 0);\n }\n return data;\n }\n\n get rows() {\n return this.pattern.length;\n }\n set rows(v) {\n let previous = this.pattern.slice(0);\n this.create(v,this.columns);\n this.iterate((r,c) => {\n if (previous[r] && previous[r][c]) {\n this.pattern[r][c] = previous[r][c];\n }\n });\n }\n\n get columns() {\n return this.pattern[0].length;\n }\n set columns(v) {\n let previous = this.pattern.slice(0);\n this.create(this.rows,v);\n this.iterate((r,c) => {\n if (previous[r] && previous[r][c]) {\n this.pattern[r][c] = previous[r][c];\n }\n });\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/models/matrix.js","'use strict';\r\n\r\nimport math from '../util/math';\r\nimport Drunk from './drunk';\r\n\r\nexport default class Sequence {\r\n\r\n constructor(sequence = [0,10,20,30], mode='up', position=false) {\r\n this.values = sequence;\r\n if (!Array.isArray(this.values)) {\r\n this.values = [this.values];\r\n }\r\n this._mode = mode;\r\n this.position = position;\r\n\r\n this.drunkWalk = new Drunk(0, this.values.length - 1);\r\n\r\n this.startValues = {\r\n 'up': 0,\r\n 'down': this.values.length - 1,\r\n 'drunk': ~~(this.values.length/2),\r\n 'random': math.ri(this.values.length)\r\n };\r\n\r\n if (this.position!==false) {\r\n this.next = this[this._mode];\r\n } else {\r\n this.next = this.first;\r\n }\r\n\r\n\r\n }\r\n\r\n get mode() {\r\n return this._mode;\r\n }\r\n\r\n set mode(mode) {\r\n if (!(mode === 'up' || mode === 'down' || mode === 'random' || mode === 'drunk')) {\r\n console.error('The only modes currently allowed are: up, down, random, drunk');\r\n return;\r\n }\r\n this._mode = mode;\r\n if (this.position) {\r\n this.next = this[this._mode];\r\n }\r\n }\r\n\r\n get value() {\r\n return this.values[this.position];\r\n }\r\n\r\n set value(v) {\r\n this.position = this.values.indexOf(v);\r\n }\r\n\r\n first() {\r\n if (this.position!==false) {\r\n this.next = this[this._mode];\r\n return this.next();\r\n }\r\n this.position = this.startValues[this._mode];\r\n this.next = this[this._mode];\r\n return this.value;\r\n }\r\n\r\n up() {\r\n this.position++;\r\n this.position %= this.values.length;\r\n return this.value;\r\n }\r\n\r\n down() {\r\n this.position--;\r\n if (this.position < 0) {\r\n this.position = (this.position + this.values.length) % this.values.length;\r\n }\r\n return this.value;\r\n }\r\n\r\n random() {\r\n this.position = math.ri(0, this.values.length);\r\n return this.value;\r\n }\r\n\r\n drunk() {\r\n this.drunkWalk.max = this.values.length;\r\n this.drunkWalk.value = this.position;\r\n this.position = this.drunkWalk.next();\r\n return this.value;\r\n }\r\n\r\n /* future methods\r\n .group(start,stop) -- outputs a group of n items from the list, with wrapping\r\n .loop(start,stop) -- confines sequencing to a subset of the values\r\n (could even have a distinction between .originalValues and the array of values being used)\r\n */\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/models/sequence.js","'use strict';\n\nimport math from '../util/math';\n\nexport default class Drunk {\n\n constructor(min=0, max=9, value=0, increment=1, loop=false) {\n this.min = min;\n this.max = max;\n this.value = value;\n this.increment = increment;\n this.loop = loop;\n }\n\n next() {\n this.value += math.pick(-1 * this.increment, this.increment);\n if (this.value > this.max) {\n if (this.loop) {\n this.value = this.min;\n } else {\n this.value = this.max - this.increment;\n }\n }\n\n if (this.value < this.min) {\n if (this.loop) {\n this.value = this.max;\n } else {\n this.value = this.min + this.increment;\n }\n }\n return this.value;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/models/drunk.js","'use strict';\n\nimport math from '../util/math';\nimport Drunk from './drunk';\n\nexport default class Counter {\n\n constructor(min=0, max=10, mode='up', value=false) {\n this.min = min;\n this.max = max;\n this.value = value;\n this.mode = mode;\n this.drunkWalk = new Drunk(this.min, this.max);\n if (this.value!==false) {\n this.next = this[this._mode];\n } else {\n this.next = this.first;\n }\n }\n\n set mode(mode) {\n if (!(mode === 'up' || mode === 'down' || mode === 'random' || mode === 'drunk')) {\n console.error('The only modes currently allowed are: up, down, random, drunk');\n return;\n }\n this._mode = mode;\n if (this.value) {\n this.next = this[this._mode];\n }\n }\n\n get mode() {\n return this._mode;\n }\n\n first() {\n if (this.value!==false) {\n this.next = this[this._mode];\n return this.next();\n }\n this.startValues = {\n 'up': this.min,\n 'down': this.max,\n 'drunk': ~~math.average(this.min,this.max),\n 'random': math.ri(this.min,this.max)\n };\n this.value = this.startValues[this._mode];\n this.next = this[this._mode];\n return this.value;\n }\n\n up() {\n this.value++;\n if (this.value >= this.max) {\n this.value = this.min;\n }\n return this.value;\n }\n\n down() {\n this.value--;\n if (this.value < this.min) {\n this.value = this.max;\n }\n return this.value;\n }\n\n random() {\n this.value = math.ri(this.min, this.max);\n return this.value;\n }\n\n drunk() {\n this.drunkWalk.min = this.min;\n this.drunkWalk.max = this.max;\n this.drunkWalk.value = this.value;\n this.value = this.drunkWalk.next();\n return this.value;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/models/counter.js","'use strict';\n\nimport { clock } from '../main';\n\nexport default class Interval {\n\n constructor(rate,func,on) {\n\n this.rate = rate;\n this.on = on;\n this.clock = clock(); // jshint ignore:line\n\n this.pattern = [1];\n this.index = 0;\n\n this.event = func ? func : function() { };\n\n if (this.on) {\n this.start();\n }\n\n }\n\n _event(e) {\n // if (this.pattern[this.index%this.pattern.length]) {\n this.event(e);\n // }\n this.index++;\n }\n\n stop() {\n this.on = false;\n this.interval.clear();\n }\n\n start() {\n this.on = true;\n this.interval = this.clock.callbackAtTime(this._event.bind(this), this.clock.context.currentTime).repeat(this.rate/1000).tolerance({early: 0.1, late:1});\n }\n\n ms(newrate) {\n if (this.on) {\n var ratio = newrate/this.rate;\n this.rate = newrate;\n this.clock.timeStretch(this.clock.context.currentTime, [this.interval], ratio);\n } else {\n this.rate = newrate;\n }\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/time/interval.js","'use strict';\n\nlet svg = require('../util/svg');\nlet math = require('../util/math');\nlet Interface = require('../core/interface');\nlet Step = require('../models/step');\nimport * as Interaction from '../util/interaction';\n\n/**\n* Pan2D\n*\n* @description Interface for moving a sound around an array of speakers. Speaker locations can be customized. The interface calculates the closeness of the sound source to each speaker and returns that distance as a numeric value.\n*\n* @demo <span nexus-ui=\"pan2D\"></span>\n*\n* @example\n* var pan2d = new Nexus.Pan2d('#target')\n*\n* @example\n* var pan2d = new Nexus.Pan2D('#target',{\n* 'size': [200,200],\n* 'range': 0.5, // detection radius of each speaker\n* 'mode': 'absolute', // 'absolute' or 'relative' sound movement\n* 'speakers': [ // the speaker [x,y] positions\n* [0.5,0.2],\n* [0.75,0.25],\n* [0.8,0.5],\n* [0.75,0.75],\n* [0.5,0.8],\n* [0.25,0.75]\n* [0.2,0.5],\n* [0.25,0.25]\n* ]\n* })\n*\n* @output\n* change\n* Fires any time the \"source\" node's position changes. <br>\n* The event data is an array of the amplitudes (0-1), representing the level of each speaker (as calculated by its distance to the audio source).\n*\n* @outputexample\n* pan2d.on('change',function(v) {\n* console.log(v);\n* })\n*\n*/\n\nexport default class Pan2D extends Interface {\n\n constructor() {\n\n let options = ['range'];\n\n let defaults = {\n 'size': [200,200],\n 'range': 0.5,\n 'mode': 'absolute',\n 'speakers': [\n [0.5,0.2],\n [0.75,0.25],\n [0.8,0.5],\n [0.75,0.75],\n [0.5,0.8],\n [0.25,0.75],\n [0.2,0.5],\n [0.25,0.25]\n ]\n };\n\n super(arguments,options,defaults);\n\n this.value = {\n x: new Step(0,1,0,0.5),\n y: new Step(0,1,0,0.5)\n };\n\n /**\n Absolute or relative mouse interaction. In \"absolute\" mode, the source node will jump to your mouse position on mouse click. In \"relative\" mode, it does not.\n */\n this.mode = this.settings.mode;\n\n this.position = {\n x: new Interaction.Handle(this.mode,'horizontal',[0,this.width],[this.height,0]),\n y: new Interaction.Handle(this.mode,'vertical',[0,this.width],[this.height,0])\n };\n this.position.x.value = this.value.x.normalized;\n this.position.y.value = this.value.y.normalized;\n\n /**\n An array of speaker locations. Update this with .moveSpeaker() or .moveAllSpeakers()\n */\n this.speakers = this.settings.speakers;\n\n /**\n Rewrite: The maximum distance from a speaker that the source node can be for it to be heard from that speaker. A low range (0.1) will result in speakers only playing when the sound is very close it. Default is 0.5 (half of the interface).\n */\n this.range = this.settings.range;\n\n /**\n The current levels for each speaker. This is calculated when a source node or speaker node is moved through interaction or programatically.\n */\n this.levels = [];\n\n this.init();\n\n this.calculateLevels();\n this.render();\n\n }\n\n buildInterface() {\n\n this.knob = svg.create('circle');\n\n\n this.element.appendChild(this.knob);\n\n\n // add speakers\n this.speakerElements = [];\n\n for (let i=0;i<this.speakers.length;i++) {\n let speakerElement = svg.create('circle');\n\n this.element.appendChild(speakerElement);\n\n this.speakerElements.push(speakerElement);\n }\n\n }\n\n sizeInterface() {\n\n this._minDimension = Math.min(this.width,this.height);\n\n this.knobRadius = {\n off: ~~(this._minDimension/100) * 3 + 5,\n };\n this.knobRadius.on = this.knobRadius.off * 2;\n\n this.knob.setAttribute('cx',this.width/2);\n this.knob.setAttribute('cy',this.height/2);\n this.knob.setAttribute('r',this.knobRadius.off);\n\n for (let i=0;i<this.speakers.length;i++) {\n let speakerElement = this.speakerElements[i];\n let speaker = this.speakers[i];\n speakerElement.setAttribute('cx',speaker[0]*this.width);\n speakerElement.setAttribute('cy',speaker[1]*this.height);\n speakerElement.setAttribute('r',this._minDimension/20 + 5);\n speakerElement.setAttribute('fill-opacity', '0');\n }\n\n this.position.x.resize([0,this.width],[this.height,0]);\n this.position.y.resize([0,this.width],[this.height,0]);\n\n // next, need to\n // resize positions\n // calculate speaker distances\n this.calculateLevels();\n this.render();\n\n }\n\n colorInterface() {\n\n this.element.style.backgroundColor = this.colors.fill;\n this.knob.setAttribute('fill', this.colors.mediumLight);\n\n for (let i=0;i<this.speakers.length;i++) {\n let speakerElement = this.speakerElements[i];\n speakerElement.setAttribute('fill', this.colors.accent);\n speakerElement.setAttribute('stroke', this.colors.accent);\n }\n\n }\n\n render() {\n this.knobCoordinates = {\n x: this.value.x.normalized * this.width,\n y: this.height - this.value.y.normalized * this.height\n };\n\n this.knob.setAttribute('cx',this.knobCoordinates.x);\n this.knob.setAttribute('cy',this.knobCoordinates.y);\n }\n\n\n click() {\n this.position.x.anchor = this.mouse;\n this.position.y.anchor = this.mouse;\n this.move();\n }\n\n move() {\n if (this.clicked) {\n this.position.x.update(this.mouse);\n this.position.y.update(this.mouse);\n // position.x and position.y are normalized\n // so are the levels\n // likely don't need this.value at all -- only used for drawing\n // not going to be a 'step' or 'min' and 'max' in this one.\n this.calculateLevels();\n this.emit('change',this.levels);\n this.render();\n }\n }\n\n release() {\n this.render();\n }\n\n get normalized() {\n return {\n x: this.value.x.normalized,\n y: this.value.y.normalized\n };\n }\n\n calculateLevels() {\n this.value.x.updateNormal( this.position.x.value );\n this.value.y.updateNormal( this.position.y.value );\n this.levels = [];\n this.speakers.forEach((s,i) => {\n let distance = math.distance(s[0]*this.width,s[1]*this.height,this.position.x.value*this.width,(1-this.position.y.value)*this.height);\n let level = math.clip(1-distance/(this.range*this.width),0,1);\n this.levels.push(level);\n this.speakerElements[i].setAttribute('fill-opacity', level);\n });\n }\n\n /**\n Move the audio source node and trigger the output event.\n @param x {number} New x location, normalized 0-1\n @param y {number} New y location, normalized 0-1\n */\n moveSource(x,y) {\n let location = {\n x: x*this.width,\n y: y*this.height\n };\n this.position.x.update(location);\n this.position.y.update(location);\n this.calculateLevels();\n this.emit('change',this.levels);\n this.render();\n }\n\n /**\n Move a speaker node and trigger the output event.\n @param index {number} Index of the speaker to move\n @param x {number} New x location, normalized 0-1\n @param y {number} New y location, normalized 0-1\n */\n moveSpeaker(index,x,y) {\n\n this.speakers[index] = [x,y];\n this.speakerElements[index].setAttribute('cx', x*this.width);\n this.speakerElements[index].setAttribute('cy', y*this.height);\n this.calculateLevels();\n this.emit('change',this.levels);\n this.render();\n\n }\n\n /**\n Set all speaker locations\n @param locations {Array} Array of speaker locations. Each item in the array should be an array of normalized x and y coordinates.\n\n setSpeakers(locations) {\n\n }\n */\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/pan2d.js","'use strict';\n\nlet math = require('../util/math');\nlet svg = require('../util/svg');\nlet Interface = require('../core/interface');\n\n/**\n* Tilt\n*\n* @description Device tilt sensor with 2 or 3 axes (depending on your device and browser).\n*\n* @demo <span nexus-ui='tilt'></span>\n*\n* @example\n* var tilt = new Nexus.Tilt('#target')\n*\n* @output\n* change\n* Fires at a regular interval, as long as this interface is active (see the interface's <i>.active</i> property)<br>\n* The event data is an <i>object</i> containing x (number) and y (number) properties which represent the current tilt state of the device.\n*\n* @outputexample\n* tilt.on('change',function(v) {\n* console.log(v);\n* })\n*\n*\n*/\n\nexport default class Tilt extends Interface {\n\n constructor() {\n\n let options = ['value'];\n\n let defaults = {\n 'size': [80,80]\n };\n\n super(arguments,options,defaults);\n\n this._active = true;\n\n this.init();\n\n // add event listener for device orientation\n\n \tthis.boundUpdate = this.update.bind(this);\n //\tthis.boundMozTilt = this.mozTilt.bind(this)\n\n \tif (window.DeviceOrientationEvent) {\n \t\tthis.orientationListener = window.addEventListener('deviceorientation', this.boundUpdate, false);\n \t} else {\n this._active = false;\n this.colorInterface();\n }\n\n\n\n /*else if (window.OrientationEvent) {\n //\t \twindow.addEventListener('MozOrientation', this.boundMozTilt, false);\n \t} else {\n \t \tconsole.log('Not supported on your device or browser.');\n \t} */\n\n\n }\n\n\n buildInterface() {\n\n this.title = svg.create('text');\n this.circleX = svg.create('circle');\n this.circleY = svg.create('circle');\n this.circleZ = svg.create('circle');\n\n this.barX = svg.create('path');\n this.barY = svg.create('path');\n this.barZ = svg.create('path');\n\n this.barX2 = svg.create('path');\n this.barY2 = svg.create('path');\n this.barZ2 = svg.create('path');\n\n this.barX.setAttribute('opacity','0.8');\n this.barY.setAttribute('opacity','0.8');\n this.barZ.setAttribute('opacity','0.8');\n this.barX2.setAttribute('opacity','0.8');\n this.barY2.setAttribute('opacity','0.8');\n this.barZ2.setAttribute('opacity','0.8');\n\n this.circleX.setAttribute('cx',this.width*3/12);\n this.circleX.setAttribute('cy',this.height*3/4);\n this.circleX.setAttribute('r',this.height/10);\n this.circleX.setAttribute('opacity','0.4');\n\n this.circleY.setAttribute('cx',this.width*6/12);\n this.circleY.setAttribute('cy',this.height*3/4);\n this.circleY.setAttribute('r',this.height/10);\n this.circleY.setAttribute('opacity','0.4');\n\n this.circleZ.setAttribute('cx',this.width*9/12);\n this.circleZ.setAttribute('cy',this.height*3/4);\n this.circleZ.setAttribute('r',this.height/10);\n this.circleZ.setAttribute('opacity','0.4');\n\n\n this.barX.setAttribute('stroke-width',Math.round(this.height/30));\n this.barY.setAttribute('stroke-width',Math.round(this.height/30));\n this.barZ.setAttribute('stroke-width',Math.round(this.height/30));\n\n this.barX.setAttribute('fill', 'none');\n this.barY.setAttribute('fill', 'none');\n this.barZ.setAttribute('fill', 'none');\n\n this.barX2.setAttribute('stroke-width',Math.round(this.height/30));\n this.barY2.setAttribute('stroke-width',Math.round(this.height/30));\n this.barZ2.setAttribute('stroke-width',Math.round(this.height/30));\n\n this.barX2.setAttribute('fill', 'none');\n this.barY2.setAttribute('fill', 'none');\n this.barZ2.setAttribute('fill', 'none');\n\n\n this.title.setAttribute('x',this.width/2);\n this.title.setAttribute('y',this.height/3+7);\n this.title.setAttribute('font-size','15px');\n this.title.setAttribute('font-weight','bold');\n this.title.setAttribute('letter-spacing','2px');\n this.title.setAttribute('opacity','0.7');\n this.title.setAttribute('text-anchor','middle');\n this.title.textContent = 'TILT';\n\n\n this.element.appendChild(this.circleX);\n this.element.appendChild(this.circleY);\n this.element.appendChild(this.circleZ);\n\n this.element.appendChild(this.barX);\n this.element.appendChild(this.barY);\n this.element.appendChild(this.barZ);\n\n this.element.appendChild(this.barX2);\n this.element.appendChild(this.barY2);\n this.element.appendChild(this.barZ2);\n\n this.element.appendChild(this.title);\n\n }\n\n colorInterface() {\n\n if (this._active) {\n this.element.style.backgroundColor = this.colors.accent;\n this.circleX.setAttribute('fill',this.colors.light);\n this.circleY.setAttribute('fill',this.colors.light);\n this.circleZ.setAttribute('fill',this.colors.light);\n this.circleX.setAttribute('stroke',this.colors.light);\n this.circleY.setAttribute('stroke',this.colors.light);\n this.circleZ.setAttribute('stroke',this.colors.light);\n this.barX.setAttribute('stroke',this.colors.light);\n this.barY.setAttribute('stroke',this.colors.light);\n this.barZ.setAttribute('stroke',this.colors.light);\n this.barX2.setAttribute('stroke',this.colors.light);\n this.barY2.setAttribute('stroke',this.colors.light);\n this.barZ2.setAttribute('stroke',this.colors.light);\n this.title.setAttribute('fill',this.colors.light);\n } else {\n this.element.style.backgroundColor = this.colors.fill;\n this.circleX.setAttribute('fill',this.colors.mediumLight);\n this.circleY.setAttribute('fill',this.colors.mediumLight);\n this.circleZ.setAttribute('fill',this.colors.mediumLight);\n this.circleX.setAttribute('stroke',this.colors.mediumLight);\n this.circleY.setAttribute('stroke',this.colors.mediumLight);\n this.circleZ.setAttribute('stroke',this.colors.mediumLight);\n this.barX.setAttribute('stroke',this.colors.mediumLight);\n this.barY.setAttribute('stroke',this.colors.mediumLight);\n this.barZ.setAttribute('stroke',this.colors.mediumLight);\n this.barX2.setAttribute('stroke',this.colors.mediumLight);\n this.barY2.setAttribute('stroke',this.colors.mediumLight);\n this.barZ2.setAttribute('stroke',this.colors.mediumLight);\n this.title.setAttribute('fill',this.colors.mediumLight);\n }\n\n }\n\n update(v) {\n if (this._active){\n\n let y = v.beta;\n let x = v.gamma;\n let z = v.alpha;\n\n // take the original -90 to 90 scale and normalize it 0-1\n x = math.scale(x,-90,90,0,1);\n y = math.scale(y,-90,90,0,1);\n z = math.scale(z,0,360,0,1);\n\n\n let handlePoints = {\n start: Math.PI*1.5,\n end: math.clip( math.scale(x,0,0.5,Math.PI*1.5,Math.PI*0.5) , Math.PI*0.5, Math.PI*1.5 )\n };\n let handle2Points = {\n start: Math.PI*2.5,\n end: math.clip( math.scale(x,0.5,1,Math.PI*2.5,Math.PI*1.5) , Math.PI*1.5, Math.PI*2.5 )\n };\n\n let handlePath = svg.arc(this.circleX.cx.baseVal.value, this.circleX.cy.baseVal.value, this.circleX.r.baseVal.value, handlePoints.start, handlePoints.end);\n let handle2Path = svg.arc(this.circleX.cx.baseVal.value, this.circleX.cy.baseVal.value, this.circleX.r.baseVal.value, handle2Points.start, handle2Points.end);\n\n this.barX.setAttribute('d', handlePath);\n this.barX2.setAttribute('d', handle2Path);\n\n\n\n\n\n handlePoints = {\n start: Math.PI*1.5,\n end: math.clip( math.scale(y,0,0.5,Math.PI*1.5,Math.PI*0.5) , Math.PI*0.5, Math.PI*1.5 )\n };\n handle2Points = {\n start: Math.PI*2.5,\n end: math.clip( math.scale(y,0.5,1,Math.PI*2.5,Math.PI*1.5) , Math.PI*1.5, Math.PI*2.5 )\n };\n\n handlePath = svg.arc(this.circleY.cx.baseVal.value, this.circleY.cy.baseVal.value, this.circleY.r.baseVal.value, handlePoints.start, handlePoints.end);\n handle2Path = svg.arc(this.circleY.cx.baseVal.value, this.circleY.cy.baseVal.value, this.circleY.r.baseVal.value, handle2Points.start, handle2Points.end);\n\n this.barY.setAttribute('d', handlePath);\n this.barY2.setAttribute('d', handle2Path);\n\n\n\n\n\n\n handlePoints = {\n start: Math.PI*1.5,\n end: math.clip( math.scale(z,0,0.5,Math.PI*1.5,Math.PI*0.5) , Math.PI*0.5, Math.PI*1.5 )\n };\n handle2Points = {\n start: Math.PI*2.5,\n end: math.clip( math.scale(z,0.5,1,Math.PI*2.5,Math.PI*1.5) , Math.PI*1.5, Math.PI*2.5 )\n };\n\n handlePath = svg.arc(this.circleZ.cx.baseVal.value, this.circleZ.cy.baseVal.value, this.circleZ.r.baseVal.value, handlePoints.start, handlePoints.end);\n handle2Path = svg.arc(this.circleZ.cx.baseVal.value, this.circleZ.cy.baseVal.value, this.circleZ.r.baseVal.value, handle2Points.start, handle2Points.end);\n\n this.barZ.setAttribute('d', handlePath);\n this.barZ2.setAttribute('d', handle2Path);\n\n\n /*\n\n let pointsX = {\n start: 0,\n end: math.scale( x, 0, 1, 0, Math.PI*2 )\n };\n\n // console.log(this.circleX.cx.baseVal.value);\n\n let pathX = svg.arc(this.circleX.cx.baseVal.value, this.circleX.cy.baseVal.value, this.circleX.r.baseVal.value*2, pointsX.start, pointsX.end);\n\n this.barX.setAttribute('d',pathX); */\n\n //this.textH.textContent = math.prune(x,2);\n //this.textV.textContent = math.prune(y,2);\n //\n // this.circleX.setAttribute('opacity',x);\n // this.circleY.setAttribute('opacity',y);\n // this.circleZ.setAttribute('opacity',z);\n\n this.emit('change', {\n x: x,\n y: y,\n z: z\n });\n\n }\n\n }\n\n click() {\n if (window.DeviceOrientationEvent) {\n this.active = !this.active;\n }\n }\n\n /**\n Whether the interface is on (emitting values) or off (paused & not emitting values). Setting this property will update it.\n @type {boolean}\n */\n\n get active() {\n return this._active;\n }\n\n set active(on) {\n this._active = on;\n this.colorInterface();\n }\n\n customDestroy() {\n window.removeEventListener('deviceorientation', this.boundUpdate, false);\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/tilt.js","'use strict';\n\nlet math = require('../util/math');\nlet svg = require('../util/svg');\nlet Interface = require('../core/interface');\n\n\n/**\n* Multislider\n*\n* @description Multislider\n*\n* @demo <span nexus-ui=\"multislider\"></span>\n*\n* @example\n* var multislider = new Nexus.Multislider('#target')\n*\n* @example\n* var multislider = new Nexus.Multislider('#target',{\n* 'size': [200,100],\n* 'numberOfSliders': 5,\n* 'min': 0,\n* 'max': 1,\n* 'step': 0,\n* 'candycane': 3,\n* 'values': [0.9,0.8,0.7,0.6,0.5,0.4,0.3,0.2,0.1],\n* 'smoothing': 0,\n* 'mode': 'bar' // 'bar' or 'line'\n*})\n*\n* @output\n* change\n* Fires any time the interface's value changes. <br>\n* The event data is an object containing <i>index</i> and <i>value</i> properties\n*\n* @outputexample\n* multislider.on('change',function(v) {\n* console.log(v);\n* })\n*\n*/\n\nexport default class Multislider extends Interface {\n\n constructor() {\n\n let options = ['value'];\n\n let defaults = {\n 'size': [200,100],\n 'numberOfSliders': 5,\n 'min': 0,\n 'max': 1,\n 'step': 0,\n 'candycane': 3,\n 'values': [0.9,0.8,0.7,0.6,0.5,0.4,0.3,0.2,0.1],\n 'smoothing': 0,\n 'mode': 'bar' // 'bar', 'line'\n };\n\n super(arguments,options,defaults);\n\n this._numberOfSliders = this.settings.numberOfSliders;\n this._min = this.settings.min;\n this._max = this.settings.max;\n this._step = this.settings.step;\n\n this._mode = this.settings.mode;\n\n /**\n The current values of the slider. NOTE: Use this only to get the current values. Setting this array will not update the multislider. To set the multislider's values, use setSlider() or setAllSliders()\n @type {Array}\n */\n this.values = this.settings.values;\n\n this.candycane = this.settings.candycane;\n\n this.sliderWidth = this.width / this.values.length;\n\n /**\n Applies a simple low-pass filter to the multislider as it is interacted with. A smoothing of 0 will be no smoothing. A smoothing of 1 will smooth 1 slider on each side of the interaction. A smoothing of 2 will smooth 2 sliders on each side, and so on.\n @type {Number}\n */\n this.smoothing = this.settings.smoothing;\n\n this.init();\n this.render();\n\n }\n\n buildInterface() {\n\n if (this._mode == 'line') {\n\n this.line = svg.create('polyline');\n this.line.setAttribute('stroke-width', 2);\n this.line.setAttribute('fill', 'none');\n\n this.element.appendChild(this.line);\n\n this.fill = svg.create('polyline');\n this.fill.setAttribute('fill-opacity', '0.2');\n\n this.element.appendChild(this.fill);\n\n this.nodes = [];\n\n this.values.forEach(function(value, index) {\n\n let node = svg.create('circle');\n\n node.setAttribute('cx', this.getX(index));\n node.setAttribute('cy', this.getY(value));\n\n this.element.appendChild( node );\n this.nodes.push( node );\n\n }.bind(this));\n\n } else {\n\n this.bars = [];\n this.caps = [];\n\n this.values.forEach(function(value, index) {\n\n let bar = svg.create('rect');\n\n let x = this.getBarX(index);\n let y = this.getY(value);\n\n bar.setAttribute('x', x - 0.1);\n bar.setAttribute('y', y);\n bar.setAttribute('width', this.sliderWidth + 0.2);\n bar.setAttribute('height', this.height);\n bar.setAttribute('opacity', 1-(index % this.candycane+1)/(this.candycane+1));\n\n this.element.appendChild( bar );\n this.bars.push( bar );\n\n\n let cap = svg.create('rect');\n\n cap.setAttribute('x', x - 0.1);\n cap.setAttribute('y', y);\n cap.setAttribute('width', this.sliderWidth + 0.2);\n cap.setAttribute('height', 5);\n\n this.element.appendChild( cap );\n this.caps.push( cap );\n\n\n\n\n }.bind(this));\n\n\n }\n\n }\n\n getBarX(index) {\n return this.getX(index) - this.sliderWidth/2;\n }\n\n getX(index) {\n //return Math.floor( index * this.sliderWidth + this.sliderWidth/2 );\n return index * this.sliderWidth + this.sliderWidth/2;\n }\n\n getY(value) {\n return math.scale(value,this._min,this._max,this.height,0); //(1 - value) * this.height;\n }\n\n getValueFromY(y) {\n let scaleAdjusted = math.scale(y, this.height, 0, this._min, this._max);\n return this.adjustValueToStep(scaleAdjusted);\n }\n\n getIndexFromX(x) {\n return math.clip( Math.floor((x / this.width) * (this.values.length)), 0, this.values.length-1);\n }\n\n adjustValueToStep(value) {\n if (!this._step) {\n return value;\n }\n let offset = value%this._step;\n value = value - (value%this._step);\n if (offset > this._step/2) {\n value += this._step;\n }\n return value;\n }\n\n adjustAllValues() {\n this.values.forEach(function(value,index) {\n value = this.adjustValueToStep(value);\n this.values[index] = math.clip(value,this._min,this._max);\n }.bind(this));\n }\n\n getNormalizedValues() {\n this.normalizedValues = [];\n this.values.forEach(function(value) {\n this.normalizedValues.push( math.scale(value,this._min,this._max,0,1) );\n }.bind(this));\n }\n\n colorInterface() {\n\n this.element.style.backgroundColor = this.colors.fill;\n\n if (this._mode == 'line') {\n this.line.setAttribute('stroke', this.colors.accent);\n this.fill.setAttribute('fill', this.colors.accent);\n this.nodes.forEach((node) => {\n node.setAttribute('fill',this.colors.accent);\n });\n } else {\n this.bars.forEach((bar) => {\n bar.setAttribute('fill',this.colors.accent);\n });\n this.caps.forEach((cap) => {\n cap.setAttribute('fill',this.colors.accent);\n });\n }\n\n }\n\n sizeInterface() {\n\n this.sliderWidth = this.width / this.values.length;\n\n if (this._mode == 'line') {\n this.nodes.forEach(function(node) {\n let r = ~~(Math.min(this.width,this.height)/50)+2;\n r = Math.min(this.sliderWidth,r);\n node.setAttribute('r',r);\n }.bind(this));\n }\n\n this.render();\n\n }\n\n\n render() {\n\n if (this._mode == 'line') {\n\n let data = '0 '+ this.getY(this.values[0]) +', ';\n\n this.values.forEach((value,index) => {\n let x = this.getX(index);\n let y = this.getY(value);\n data += x + ' ' + y + ', ';\n this.nodes[index].setAttribute('cx', this.getX(index));\n this.nodes[index].setAttribute('cy', this.getY(value));\n });\n\n data += this.width + ' ' + this.getY(this.values[this.values.length-1]);\n\n this.line.setAttribute('points', data);\n\n // fill data\n // add bottom corners\n\n data += ', '+this.width +' '+this.height+', ';\n data += '0 '+this.height;\n\n this.fill.setAttribute('points', data);\n\n } else {\n\n this.values.forEach((value,index) => {\n this.bars[index].setAttribute('y', this.getY(value));\n this.caps[index].setAttribute('y', this.getY(value));\n });\n\n }\n\n }\n\n click() {\n this.hasMoved = false;\n this.previousSlider = false;\n this.move();\n }\n\n move() {\n \tif (this.clicked) {\n this.mouse.x = math.clip(this.mouse.x,0,this.width);\n this.mouse.y = math.clip(this.mouse.y,0,this.height);\n this.hasMoved = true;\n\n this.selectedSlider = this.getIndexFromX(this.mouse.x);\n\n this.values[this.selectedSlider] = this.getValueFromY(this.mouse.y);\n\n /* handle interpolation for in-between sliders */\n\n if (this.previousSlider !== false) {\n let distance = Math.abs(this.previousSlider-this.selectedSlider);\n if ( distance > 1 ) {\n let low = Math.min(this.previousSlider,this.selectedSlider);\n let high = Math.max(this.previousSlider,this.selectedSlider);\n let lowValue = this.values[low];\n let highValue = this.values[high];\n for (let i=low;i<high;i++) {\n this.values[i] = math.interp( (i-low)/distance, lowValue, highValue );\n this.values[i] = this.adjustValueToStep(this.values[i]);\n }\n }\n }\n\n if (this.smoothing > 0) {\n\n for (var i=1;i<=this.smoothing;i++) {\n let downCenter = this.selectedSlider - i;\n let upCenter = this.selectedSlider + i;\n\n if (downCenter >= 1) {\n let downLowerNeighbor = downCenter - 1 >= 0 ? downCenter-1 : 0;\n let downUpperNeighbor = downCenter + 1;\n this.values[downCenter] = (this.values[downLowerNeighbor] + this.values[downUpperNeighbor]) / 2;\n this.values[downCenter] = this.adjustValueToStep(this.values[downCenter]);\n }\n\n if (upCenter < this.values.length-1) {\n let upLowerNeighbor = upCenter - 1;\n let upUpperNeighbor = upCenter + 1 < this.values.length ? upCenter+1 : this.values.length-1;\n this.values[upCenter] = (this.values[upLowerNeighbor] + this.values[upUpperNeighbor]) / 2;\n this.values[upCenter] = this.adjustValueToStep(this.values[upCenter]);\n }\n\n }\n\n }\n\n this.previousSlider = this.selectedSlider;\n\n \t\tthis.emit('change',this.values);\n \t\tthis.render();\n \t}\n }\n\n // would be a cool API call to have for later...\n scan() {\n\n }\n\n update(index,value) {\n this.values[index] = this.adjustValueToStep(value);\n this.emit('change',{\n 'index': index,\n 'value': value\n });\n }\n\n\n /**\n Get the number of sliders\n @type {Number}\n */\n get numberOfSliders() {\n return this.values.length;\n }\n\n\n /**\n Lower limit of the multislider's output range\n @type {number}\n @example multislider.min = 1000;\n */\n get min() {\n return this._min;\n }\n set min(v) {\n this._min = v;\n this.adjustAllValues();\n this.render();\n }\n\n /**\n Upper limit of the multislider's output range\n @type {number}\n @example multislider.max = 1000;\n */\n get max() {\n return this._max;\n }\n set max(v) {\n this._max = v;\n this.adjustAllValues();\n this.render();\n }\n\n /**\n The increment that the multislider's value changes by.\n @type {number}\n @example multislider.step = 5;\n */\n get step() {\n return this._step;\n }\n set step(v) {\n this._step = v;\n this.adjustAllValues();\n this.render();\n }\n\n /**\n Set the value of an individual slider\n @param index {number} Slider index\n @param value {number} New slider value\n @example\n // Set the first slider to value 0.5\n multislider.setSlider(0,0.5)\n */\n setSlider(index,value) {\n this.values[index] = this.adjustValueToStep(value);\n this.values[index] = math.clip(this.values[index],this._min,this._max);\n this.emit('change',{\n 'index': index,\n 'value': value\n });\n }\n\n /**\n Set the value of all sliders at once. If the size of the input array does not match the current number of sliders, the value array will repeat until all sliders have been set. I.e. an input array of length 1 will set all sliders to that value.\n @param values {Array} All slider values\n @example\n multislider.setAllSliders([0.2,0.3,0.4,0.5,0.6])\n */\n setAllSliders(values) {\n let previousLength = this.values.length;\n let newLength = values.length;\n this.values = values;\n this.adjustAllValues();\n if (previousLength != newLength) {\n this.empty();\n this.buildInterface();\n this.colorInterface();\n }\n this.sizeInterface();\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/multislider.js","'use strict';\n\nlet svg = require('../util/svg');\nlet math = require('../util/math');\nlet Interface = require('../core/interface');\nlet Step = require('../models/step');\nimport * as Interaction from '../util/interaction';\n\n/**\n* Pan\n*\n* @description Stereo crossfader.\n*\n* @demo <span nexus-ui=\"pan\"></span>\n*\n* @example\n* var pan = new Nexus.Pan('#target')\n*\n* @output\n* change\n* Fires any time the interface's value changes. <br>\n* The event data is an object containing the interface's <i>value</i> (-1 to 1), as well as <i>L</i> and <i>R</i> amplitude values (0-1) for left and right speakers, calculated by a square-root crossfade algorithm.\n*\n* @outputexample\n* pan.on('change',function(v) {\n* console.log(v);\n* })\n*\n*\n*/\n\nexport default class Pan extends Interface {\n\n constructor() {\n\n let options = ['scale','value'];\n\n let defaults = {\n 'size': [120,20],\n 'orientation': 'horizontal',\n 'mode': 'relative',\n 'scale': [-1,1],\n 'step': 0,\n 'value': 0,\n 'hasKnob': true\n };\n\n super(arguments,options,defaults);\n\n this.orientation = this.settings.orientation;\n\n this.mode = this.settings.mode;\n\n this.hasKnob = this.settings.hasKnob;\n\n // this.step should eventually be get/set\n // updating it will update the _value step model\n this.step = this.settings.step; // float\n\n this._value = new Step(this.settings.scale[0], this.settings.scale[1], this.settings.step, this.settings.value);\n\n this.init();\n\n this.position = new Interaction.Handle(this.mode,this.orientation,[0,this.width],[this.height,0]);\n this.position.value = this._value.normalized;\n\n this.value = this._value.value;\n\n this.emit('change',this.value);\n\n }\n\n buildInterface() {\n\n this.bar = svg.create('rect');\n this.knob = svg.create('circle');\n\n this.element.appendChild(this.bar);\n this.element.appendChild(this.knob);\n\n }\n\n sizeInterface() {\n\n if (this.position) {\n this.position.resize([0,this.width],[this.height,0]);\n }\n\n if (this.width < this.height) {\n this.orientation = 'vertical';\n } else {\n this.orientation = 'horizontal';\n }\n\n let x, y, w, h, barOffset, cornerRadius;\n this.knobData = {\n level: 0,\n r: 0\n };\n\n if (this.orientation === 'vertical') {\n this.thickness = this.width / 2;\n \tx = this.width/2;\n \ty = 0;\n \tw = this.thickness;\n \th = this.height;\n this.knobData.r = this.thickness * 0.8;\n \tthis.knobData.level = h-this.knobData.r-this.normalized*(h-this.knobData.r*2);\n barOffset = 'translate('+this.thickness*(-1)/2+',0)';\n cornerRadius = w/2;\n } else {\n this.thickness = this.height / 2;\n \tx = 0;\n \ty = this.height/2;\n \tw = this.width;\n \th = this.thickness;\n this.knobData.r = this.thickness * 0.8;\n \tthis.knobData.level = this.normalized*(w-this.knobData.r*2)+this.knobData.r;\n barOffset = 'translate(0,'+this.thickness*(-1)/2+')';\n cornerRadius = h/2;\n }\n\n this.bar.setAttribute('x',x);\n this.bar.setAttribute('y',y);\n this.bar.setAttribute('transform',barOffset);\n this.bar.setAttribute('rx',cornerRadius); // corner radius\n this.bar.setAttribute('ry',cornerRadius);\n this.bar.setAttribute('width',w);\n this.bar.setAttribute('height',h);\n\n if (this.orientation === 'vertical') {\n this.knob.setAttribute('cx',x);\n this.knob.setAttribute('cy',this.knobData.level);\n } else {\n this.knob.setAttribute('cx',this.knobData.level);\n this.knob.setAttribute('cy',y);\n }\n this.knob.setAttribute('r',this.knobData.r);\n\n }\n\n colorInterface() {\n\n this.bar.setAttribute('fill', this.colors.fill);\n this.knob.setAttribute('fill', this.colors.accent);\n\n if (!this.hasKnob) {\n this.knob.setAttribute('fill','transparent');\n }\n\n }\n\n render() {\n if (!this.clicked) {\n this.knobData.r = this.thickness*0.75;\n }\n this.knob.setAttribute('r',this.knobData.r);\n\n if (this.orientation === 'vertical') {\n \t this.knobData.level = this.knobData.r+this._value.normalized*(this.height-this.knobData.r*2);\n this.knob.setAttribute('cy',this.height - this.knobData.level);\n } else {\n \t this.knobData.level = this._value.normalized*(this.width-this.knobData.r*2)+this.knobData.r;\n this.knob.setAttribute('cx',this.knobData.level);\n }\n }\n\n\n click() {\n this.knobData.r = this.thickness*0.9;\n this.position.anchor = this.mouse;\n this.move();\n }\n\n move() {\n if (this.clicked) {\n this.position.update(this.mouse);\n\n this.value = this._value.updateNormal( this.position.value );\n\n this.emit('change',{\n value: this.value,\n L: Math.pow( math.scale(this.value,-1,1,1,0), 2),\n R: Math.pow( math.scale(this.value,-1,1,0,1), 2)\n });\n\n }\n }\n\n release() {\n this.render();\n }\n\n /**\n The position of crossfader, from -1 (left) to 1 (right). Setting this value updates the interface and triggers the output event.\n @type {number}\n */\n get value() {\n return this._value.value;\n }\n\n set value(value) {\n this._value.update(value);\n this.position.value = this._value.normalized;\n this.emit('change',{\n value: this.value,\n L: Math.pow( math.scale(this.value,-1,1,1,0), 2),\n R: Math.pow( math.scale(this.value,-1,1,0,1), 2)\n });\n this.render();\n }\n\n get normalized() {\n return this._value.normalized;\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/pan.js","'use strict';\n\nlet math = require('../util/math');\nlet svg = require('../util/svg');\nlet Interface = require('../core/interface');\n\n\nlet Point = function(point,envelope) {\n\n this.x = point.x;\n this.y = point.y;\n\n this.xMin = point.xMin || 0;\n this.xMax = point.xMax || 1;\n this.yMin = point.yMin || 0;\n this.yMax = point.yMax || 1;\n\n this.envelope = envelope;\n\n this.element = svg.create('circle');\n this.element.setAttribute('fill',this.envelope.colors.accent);\n\n this.envelope.element.appendChild(this.element);\n\n this.resize = function() {\n let r = ~~(Math.min(this.envelope.width,this.envelope.height)/50)+2;\n this.element.setAttribute('r',r);\n };\n\n this.move = function(x,y) {\n\n this.x = (x || x===0) ? x : this.x;\n this.y = (y || y===0) ? y : this.y;\n\n if (this.envelope.nodes.indexOf(this)>=0) {\n\n let prevIndex = this.envelope.nodes.indexOf(this)-1;\n let nextIndex = this.envelope.nodes.indexOf(this)+1;\n\n let prevNode = this.envelope.nodes[prevIndex];\n let nextNode = this.envelope.nodes[nextIndex];\n\n let lowX = prevIndex >= 0 ? prevNode.x : 0;\n\t lowX = lowX<this.xMin?this.xMin:lowX;\n\n let highX = nextIndex < this.envelope.nodes.length ? nextNode.x : 1;\n\t highX = highX>this.xMax?this.xMax:highX;\n\n \t if (this.x < lowX) { this.x = lowX; }\n if (this.x > highX) { this.x = highX; }\n\n if (this.y < this.yMin) { this.y = this.yMin; }\n if (this.y > this.yMax) { this.y = this.yMax; }\n\n }\n\n this.location = this.getCoordinates();\n this.element.setAttribute('cx', this.location.x);\n this.element.setAttribute('cy', this.location.y);\n };\n\n this.getCoordinates = function() {\n return {\n x: this.x * this.envelope.width,\n y: (1-this.y) * this.envelope.height\n };\n };\n\n this.move(this.x,this.y,true);\n this.resize();\n\n this.destroy = function() {\n this.envelope.element.removeChild(this.element);\n this.envelope.nodes.splice(this.envelope.nodes.indexOf(this),1);\n };\n\n\n};\n\n\n/**\n* Envelope\n*\n* @description Interactive linear ramp visualization.\n*\n* @demo <span nexus-ui=\"envelope\"></span>\n*\n* @example\n* var envelope = new Nexus.Envelope('#target')\n*\n* @example\n* var envelope = new Nexus.Envelope('#target',{\n* 'size': [300,150],\n* 'noNewPoints': false,\n* 'points': [\n* {\n* x: 0.1,\n* y: 0.4\n* },\n* {\n* x: 0.35,\n* y: 0.6\n* },\n* {\n* x: 0.65,\n* y: 0.2\n* },\n* {\n* x: 0.9,\n* y: 0.4\n* },\n* ]\n* })\n*\n* @output\n* change\n* Fires any time a node is moved. <br>\n* The event data is an array of point locations. Each item in the array is an object containing <i>x</i> and <i>y</i> properties describing the location of a point on the envelope.\n*\n* @outputexample\n* envelope.on('change',function(v) {\n* console.log(v);\n* })\n*\n*/\n\nexport default class Envelope extends Interface {\n\n constructor() {\n\n let options = ['value'];\n\n let defaults = {\n 'size': [300,150],\n 'noNewPoints':false,\n 'points': [\n \t\t\t{\n \t\t\t\tx: 0.1,\n \t\t\t\ty: 0.4\n \t\t\t},\n \t\t\t{\n \t\t\t\tx: 0.35,\n \t\t\t\ty: 0.6\n \t\t\t},\n \t\t\t{\n \t\t\t\tx: 0.65,\n \t\t\t\ty: 0.2\n \t\t\t},\n \t\t\t{\n \t\t\t\tx: 0.9,\n \t\t\t\ty: 0.4\n \t\t\t}\n \t\t]\n };\n\n super(arguments,options,defaults);\n\n this.points = this.settings.points;\n\n this.nodes = [];\n\n this.selected = false;\n\n this.init();\n\n\n }\n\n buildInterface() {\n\n\n this.points.forEach((point) => {\n let node = new Point(point,this);\n this.nodes.push(node);\n });\n\n this.sortPoints();\n\n this.line = svg.create('polyline');\n this.line.setAttribute('stroke-width', 2);\n this.line.setAttribute('fill', 'none');\n\n this.element.appendChild(this.line);\n\n this.fill = svg.create('polyline');\n this.fill.setAttribute('fill-opacity', '0.2');\n\n this.element.appendChild(this.fill);\n\n }\n\n sizeInterface() {\n\n for (let i=0; i<this.nodes.length; i++) {\n this.nodes[i].resize();\n this.nodes[i].move();\n }\n\n this.render();\n\n }\n\n colorInterface() {\n\n this.element.style.backgroundColor = this.colors.fill;\n this.line.setAttribute('stroke', this.colors.accent);\n this.fill.setAttribute('fill', this.colors.accent);\n this.nodes.forEach((node) => {\n node.element.setAttribute('fill',this.colors.accent);\n });\n\n }\n\n render() {\n // this.nodes[this.selected].move( this.points )\n this.calculatePath();\n }\n\n calculatePoints() {\n this.points = [];\n this.nodes.forEach((node) => {\n this.points.push({ x: node.x, y: node.y });\n });\n }\n\n calculatePath() {\n\n //stroke data\n let data = '0 '+ this.nodes[0].location.y+', ';\n\n // data should be re-ordered based on x location.\n // whatever function adds a node should add it at the right index\n\n this.nodes.forEach((node) => {\n // let location = node.getCoordinates();\n data += node.location.x + ' ' + node.location.y + ', ';\n });\n\n\n // data += point.x*this.width+' '+ point.y*this.height+', ';\n data += this.width + ' '+ this.nodes[this.nodes.length-1].location.y;\n\n this.line.setAttribute('points', data);\n\n // fill data\n // add bottom corners\n\n data += ', '+this.width +' '+this.height+', ';\n data += '0 '+this.height;\n\n this.fill.setAttribute('points', data);\n\n }\n\n\n\n click() {\n \t// find nearest node and set this.selected (index)\n this.hasMoved = false;\n \tthis.selected = this.findNearestNode();\n\n this.nodes[this.selected].move(this.mouse.x/this.width,1-this.mouse.y/this.height);\n this.scaleNode(this.selected);\n\n // must do this b/c new node may have been created\n this.calculatePoints();\n this.emit('change',this.points);\n \tthis.render();\n }\n\n move() {\n \tif (this.clicked) {\n this.mouse.x = math.clip(this.mouse.x,0,this.width);\n this.hasMoved = true;\n\n this.nodes[this.selected].move(this.mouse.x/this.width,1-this.mouse.y/this.height);\n \tthis.scaleNode(this.selected);\n\n this.calculatePoints();\n \t\tthis.emit('change',this.points);\n \t\tthis.render();\n \t}\n }\n\n release() {\n\n \tif (!this.hasMoved) {\n this.nodes[this.selected].destroy();\n \t}\n\n this.calculatePoints();\n this.emit('change',this.points);\n \tthis.render();\n\n \t// reset this.selected\n \tthis.selected = null;\n }\n\n\n findNearestNode() {\n \tvar nearestIndex = null;\n // set this unreasonably high so that every distance will be lower than it.\n \tvar nearestDist = 10000;\n \tvar before = false;\n let x = this.mouse.x/this.width;\n let y = 1-this.mouse.y/this.height;\n let nodes = this.nodes;\n \tfor (let i = 0; i<nodes.length; i++) {\n\n // calculate the distance from mouse to this node using pythagorean theorem\n \t\tvar distance = Math.sqrt( Math.pow( (nodes[i].x - x), 2) + Math.pow((nodes[i].y - y), 2) );\n\n // if this distance is less than the previous shortest distance, use this index\n \t\tif (distance < nearestDist) {\n \t\t\tnearestDist = distance;\n \t\t\tnearestIndex = i;\n \t\t\tbefore = x > nodes[i].x;\n \t\t}\n\n \t}\n\n // if not very close to any node, create a node\n \tif (!this.settings.noNewPoints && nearestDist>0.07) {\n\n nearestIndex = this.getIndexFromX(this.mouse.x/this.width);\n\n \t\tthis.nodes.splice(nearestIndex,0, new Point({\n \t\t\tx: this.mouse.x/this.width,\n \t\t\ty: 1-this.mouse.y/this.height\n \t\t}, this));\n this.hasMoved = true;\n\n \t}\n\n \treturn nearestIndex;\n }\n\n getIndexFromX(x) {\n let index = 0;\n this.nodes.forEach((node,i) => {\n if (this.nodes[i].x <= x) {\n index = i+1;\n }\n });\n return index;\n }\n\n scaleNode(i) {\n\n \tlet clippedX = math.clip(this.nodes[i].x, 0, 1);\n \tlet clippedY = math.clip(this.nodes[i].y, 0, 1);\n\n this.nodes[i].move( clippedX, clippedY );\n\n }\n\n /**\n Sort the this.points array from left-most point to right-most point. You should not regularly need to use this, however it may be useful if the points get unordered.\n */\n sortPoints() {\n this.nodes.sort(function(a, b){\n return a.x > b.x;\n });\n }\n\n\n /**\n Add a breakpoint on the envelope.\n @param x {number} x location of the point, normalized (0-1)\n @param y {number} y location of the point, normalized (0-1)\n */\n addPoint(x,y) {\n let index = this.nodes.length;\n\n this.sortPoints();\n\n for (let i = 0; i<this.nodes.length; i++) {\n if (x < this.nodes[i].x) {\n index = i;\n break;\n }\n \t}\n\n this.nodes.splice(index, 0, new Point({\n x: x,\n y: y\n }, this));\n\n this.scaleNode(index);\n\n this.calculatePoints();\n this.emit('change',this.points);\n\n this.render();\n }\n\n\n /**\n Find the level at a certain x location on the envelope.\n @param x {number} The x location to find the level of, normalized 0-1\n */\n scan(x) {\n // find surrounding points\n let nextIndex = this.getIndexFromX(x);\n let priorIndex = nextIndex-1;\n if (priorIndex < 0) {\n priorIndex = 0;\n }\n if (nextIndex >= this.nodes.length) {\n nextIndex = this.nodes.length-1;\n }\n let priorPoint = this.nodes[priorIndex];\n let nextPoint = this.nodes[nextIndex];\n let loc = math.scale(x,priorPoint.x, nextPoint.x, 0, 1);\n let value = math.interp(loc,priorPoint.y,nextPoint.y);\n this.emit('scan',value);\n return value;\n }\n\n\n /**\n Move a breakpoint on the envelope.\n @param index {number} The index of the breakpoint to move\n @param x {number} New x location, normalized 0-1\n @param y {number} New y location, normalized 0-1\n */\n movePoint(index,x,y) {\n this.nodes[index].move(x,y);\n this.scaleNode(index);\n this.calculatePoints();\n this.emit('change',this.points);\n this.render();\n }\n\n\n /**\n Move a breakpoint on the envelope by a certain amount.\n @param index {number} The index of the breakpoint to move\n @param xOffset {number} X displacement, normalized 0-1\n @param yOffset {number} Y displacement, normalized 0-1\n */\n adjustPoint(index,xOffset,yOffset) {\n this.nodes[index].move(this.nodes[index].x+xOffset,this.nodes[index].y+yOffset);\n this.scaleNode(index);\n this.calculatePoints();\n this.emit('change',this.points);\n this.render();\n }\n\n\n /**\n Remove a breakpoint from the envelope.\n @param index {number} Index of the breakpoint to remove\n */\n destroyPoint(index) {\n this.nodes[index].destroy();\n this.calculatePoints();\n this.emit('change',this.points);\n this.render();\n }\n\n\n /**\n Remove all existing breakpoints and add an entirely new set of breakpoints.\n @param allPoints {array} An array of objects with x/y properties (normalized 0-1). Each object in the array specifices the x/y location of a new breakpoint to be added.\n */\n setPoints(allPoints) {\n while (this.nodes.length) {\n this.nodes[0].destroy();\n }\n allPoints.forEach((point) => {\n this.addPoint(point.x,point.y);\n });\n this.calculatePoints();\n this.emit('change',this.points);\n this.render();\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/envelope.js","'use strict';\n\nlet dom = require('../util/dom');\n//let math = require('../util/math');\nlet Interface = require('../core/interface');\nimport { context } from '../main';\n\n/**\n * Spectrogram\n *\n * @description Audio spectrum visualization\n *\n * @demo <span nexus-ui=\"spectrogram\"></span>\n *\n * @example\n * var spectrogram = new Nexus.Spectrogram('#target')\n *\n * @example\n * var spectrogram = new Nexus.Spectrogram('#target',{\n * 'size': [300,150]\n * })\n *\n * @output\n * \n * No events\n *\n */\n\nexport default class Spectrogram extends Interface {\n constructor() {\n let options = ['scale', 'value'];\n\n let defaults = {\n size: [300, 150]\n };\n\n super(arguments, options, defaults);\n\n this.context = context(); // jshint ignore:line\n\n this.analyser = this.context.createAnalyser();\n this.analyser.fftSize = 2048;\n this.bufferLength = this.analyser.frequencyBinCount;\n this.dataArray = new Uint8Array(this.bufferLength);\n\n this.active = true;\n\n this.source = false;\n\n this.init();\n }\n\n buildFrame() {\n this.canvas = new dom.SmartCanvas(this.parent);\n this.element = this.canvas.element;\n }\n\n sizeInterface() {\n this.canvas.resize(this.width, this.height);\n }\n\n colorInterface() {\n this.canvas.element.style.backgroundColor = this.colors.fill;\n }\n\n render() {\n if (this.active) {\n requestAnimationFrame(this.render.bind(this));\n }\n\n this.analyser.getByteFrequencyData(this.dataArray);\n\n this.canvas.context.fillStyle = this.colors.fill;\n this.canvas.context.fillRect(\n 0,\n 0,\n this.canvas.element.width,\n this.canvas.element.height\n );\n\n if (this.source && this.dataArray) {\n //console.log(this.dataArray);\n\n let barWidth = this.canvas.element.width / this.bufferLength;\n let barHeight;\n let x = 0;\n\n let definition = this.canvas.element.width / 50;\n\n for (let i = 0; i < this.bufferLength; i = i + definition) {\n barHeight = Math.max.apply(\n null,\n this.dataArray.subarray(i, i + definition)\n );\n barHeight /= 255;\n barHeight *= this.canvas.element.height;\n\n this.canvas.context.fillStyle = this.colors.accent;\n this.canvas.context.fillRect(\n x,\n this.canvas.element.height - barHeight,\n barWidth * definition,\n barHeight\n );\n\n x += barWidth * definition;\n }\n }\n }\n\n /**\n Equivalent to \"patching in\" an audio node to visualize. NOTE: You cannot connect audio nodes across two different audio contexts. NexusUI runs its audio analysis on its own audio context, Nexus.context. If the audio node you are visualizing is created on a different audio context, you will need to tell NexusUI to use that context instead: i.e. Nexus.context = YourAudioContextName. For example, in ToneJS projects, the line would be: Nexus.context = Tone.context . We recommend that you write that line of code only once at the beginning of your project.\n @param node {AudioNode} The audio node to visualize\n @example Nexus.context = Tone.context // or another audio context you have created\n spectrogram.connect( Tone.Master );\n */\n connect(node) {\n if (this.source) {\n this.disconnect();\n }\n this.source = node;\n this.source.connect(this.analyser);\n this.render();\n }\n\n /**\n Stop visualizing the source node and disconnect it.\n */\n disconnect() {\n this.source.disconnect(this.analyser);\n this.source = null;\n }\n\n click() {\n this.active = !this.active;\n this.render();\n }\n\n customDestroy() {\n this.active = false;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/spectrogram.js","'use strict';\n\nlet dom = require('../util/dom');\nlet math = require('../util/math');\nlet Interface = require('../core/interface');\nimport { context } from '../main';\n\n/**\n * Meter\n *\n * @description Stereo decibel meter\n *\n * @demo <span nexus-ui=\"meter\"></span>\n *\n * @example\n * var meter = new Nexus.Meter('#target')\n *\n * @example\n * var meter = new Nexus.Meter('#target',{\n * size: [75,75]\n * })\n *\n * @output\n * \n * No events\n *\n */\n\nexport default class Meter extends Interface {\n constructor() {\n let options = ['scale', 'value'];\n\n let defaults = {\n size: [30, 100]\n };\n\n super(arguments, options, defaults);\n\n this.context = context(); // jshint ignore:line\n\n this.channels = 2;\n\n this.splitter = this.context.createChannelSplitter(this.channels);\n\n this.analysers = [];\n\n for (let i = 0; i < this.channels; i++) {\n let analyser = this.context.createAnalyser();\n this.splitter.connect(analyser, i);\n analyser.fftSize = 1024;\n analyser.smoothingTimeConstant = 1;\n this.analysers.push(analyser);\n }\n this.bufferLength = this.analysers[0].frequencyBinCount;\n this.dataArray = new Float32Array(this.bufferLength);\n\n /*\n // add linear gradient\n var grd = canvasCtx.createLinearGradient(0, 0, 0, canvas.height);\n // light blue\n grd.addColorStop(0, '#000');\n grd.addColorStop(0.2, '#bbb');\n grd.addColorStop(0.4, '#d18');\n // dark blue\n grd.addColorStop(1, '#d18');\n canvasCtx.fillStyle = grd; */\n\n this.active = true;\n\n this.db = -Infinity;\n\n this.init();\n\n this.meterWidth = this.canvas.element.width / this.channels;\n\n this.render();\n }\n\n buildFrame() {\n this.canvas = new dom.SmartCanvas(this.parent);\n this.element = this.canvas.element;\n }\n\n sizeInterface() {\n this.canvas.resize(this.width, this.height);\n }\n\n colorInterface() {\n this.canvas.element.style.backgroundColor = this.colors.fill;\n }\n\n render() {\n if (this.active) {\n requestAnimationFrame(this.render.bind(this));\n }\n\n this.canvas.context.fillStyle = this.colors.fill;\n this.canvas.context.fillRect(\n 0,\n 0,\n this.canvas.element.width,\n this.canvas.element.height\n );\n\n for (let i = 0; i < this.analysers.length; i++) {\n if (this.source) {\n this.analysers[i].getFloatTimeDomainData(this.dataArray);\n\n let rms = 0;\n\n for (let i = 0; i < this.dataArray.length; i++) {\n rms += this.dataArray[i] * this.dataArray[i];\n }\n\n rms = Math.sqrt(rms / this.dataArray.length);\n\n this.db = 20 * Math.log10(rms);\n } else if (this.db > -200 && this.db !== -Infinity) {\n this.db -= 1;\n } else {\n this.db = -Infinity;\n }\n\n //console.log(db)\n\n if (this.db > -70) {\n let linear = math.normalize(this.db, -70, 5);\n let exp = linear * linear;\n let y = math.scale(exp, 0, 1, this.element.height, 0);\n\n this.canvas.context.fillStyle = this.colors.accent;\n this.canvas.context.fillRect(\n this.meterWidth * i,\n y,\n this.meterWidth,\n this.canvas.element.height - y\n );\n\n //console.log(\"rendering...\")\n }\n }\n }\n\n /**\n Equivalent to \"patching in\" an audio node to visualize. NOTE: You cannot connect audio nodes across two different audio contexts. NexusUI runs its audio analysis on its own audio context, Nexus.context. If the audio node you are visualizing is created on a different audio context, you will need to tell NexusUI to use that context instead: i.e. Nexus.context = YourAudioContextName. For example, in ToneJS projects, the line would be: Nexus.context = Tone.context . We recommend that you write that line of code only once at the beginning of your project.\n @param node {AudioNode} The audio node to visualize\n @param channels {number} (optional) The number of channels in the source node to watch. If not specified, the interface will look for a .channelCount property on the input node. If it does not exist, the interface will default to 1 channel.\n @example Nexus.context = Tone.context // or another audio context you have created\n meter.connect( Tone.Master, 2 );\n */\n\n connect(node, channels) {\n if (this.source) {\n this.disconnect();\n }\n //this.dummy.disconnect(this.splitter);\n\n if (channels) {\n this.channels = channels;\n } else if (node.channelCount) {\n this.channels = node.channelCount;\n } else {\n this.channels = 2;\n }\n this.meterWidth = this.canvas.element.width / this.channels;\n\n this.source = node;\n this.source.connect(this.splitter);\n\n // this.render();\n }\n\n /**\n Stop visualizing the source node and disconnect it.\n */\n disconnect() {\n this.source.disconnect(this.splitter);\n this.source = false;\n // this.dummy.connect(this.splitter);\n this.meterWidth = this.canvas.element.width / this.channels;\n }\n\n click() {\n this.active = !this.active;\n this.render();\n }\n\n customDestroy() {\n this.active = false;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/meter.js","'use strict';\n\nlet dom = require('../util/dom');\nlet Interface = require('../core/interface');\nimport { context } from '../main';\n\n/**\n * Oscilloscope\n *\n * @description Visualizes a waveform's stream of values.\n *\n * @demo <span nexus-ui=\"oscilloscope\"></span>\n *\n * @example\n * var oscilloscope = new Nexus.Oscilloscope('#target')\n *\n * @example\n * var oscilloscope = new Nexus.Oscilloscope('#target',{\n * 'size': [300,150]\n * })\n *\n * @output\n * \n * No events\n *\n */\n\nexport default class Oscilloscope extends Interface {\n constructor() {\n let options = ['scale', 'value'];\n\n let defaults = {\n size: [300, 150]\n };\n\n super(arguments, options, defaults);\n\n this.context = context(); // jshint ignore:line\n\n this.analyser = this.context.createAnalyser();\n this.analyser.fftSize = 2048;\n this.bufferLength = this.analyser.frequencyBinCount;\n this.dataArray = new Uint8Array(this.bufferLength);\n this.analyser.getByteTimeDomainData(this.dataArray);\n\n this.active = true;\n\n this.source = false;\n\n this.init();\n\n this.render();\n }\n\n buildFrame() {\n this.canvas = new dom.SmartCanvas(this.parent);\n this.element = this.canvas.element;\n }\n\n sizeInterface() {\n this.canvas.resize(this.width, this.height);\n }\n\n colorInterface() {\n this.canvas.element.style.backgroundColor = this.colors.fill;\n }\n\n render() {\n if (this.active) {\n requestAnimationFrame(this.render.bind(this));\n }\n\n this.analyser.getByteTimeDomainData(this.dataArray);\n\n this.canvas.context.fillStyle = this.colors.fill;\n this.canvas.context.fillRect(\n 0,\n 0,\n this.canvas.element.width,\n this.canvas.element.height\n );\n\n this.canvas.context.lineWidth = ~~(this.height / 100 + 2);\n this.canvas.context.strokeStyle = this.colors.accent;\n\n this.canvas.context.beginPath();\n\n if (this.source) {\n var sliceWidth = (this.canvas.element.width * 1.0) / this.bufferLength;\n var x = 0;\n\n for (var i = 0; i < this.bufferLength; i++) {\n var v = this.dataArray[i] / 128.0;\n var y = (v * this.canvas.element.height) / 2;\n\n if (i === 0) {\n this.canvas.context.moveTo(x, y);\n } else {\n this.canvas.context.lineTo(x, y);\n }\n\n x += sliceWidth;\n }\n } else {\n this.canvas.context.moveTo(0, this.canvas.element.height / 2);\n this.canvas.context.lineTo(\n this.canvas.element.width,\n this.canvas.element.height / 2\n );\n }\n\n this.canvas.context.stroke();\n }\n\n /**\n Equivalent to \"patching in\" an audio node to visualize. NOTE: You cannot connect audio nodes across two different audio contexts. NexusUI runs its audio analysis on its own audio context, Nexus.context. If the audio node you are visualizing is created on a different audio context, you will need to tell NexusUI to use that context instead: i.e. Nexus.context = YourAudioContextName. For example, in ToneJS projects, the line would be: Nexus.context = Tone.context . We recommend that you write that line of code only once at the beginning of your project.\n @param node {AudioNode} The audio node to visualize\n @example Nexus.context = Tone.context // or another audio context you have created\n oscilloscope.connect( Tone.Master );\n */\n\n connect(node) {\n if (this.source) {\n this.disconnect();\n }\n\n this.source = node;\n this.source.connect(this.analyser);\n\n this.render();\n }\n\n /**\n Stop visualizing the source node and disconnect it.\n */\n disconnect() {\n if (this.source) {\n this.source.disconnect(this.analyser);\n this.source = null;\n }\n }\n\n click() {\n this.active = !this.active;\n this.render();\n }\n\n customDestroy() {\n this.active = false;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/interfaces/oscilloscope.js","/*\nMain concept:\nsynth = new Nexus.Rack('elementID');\n\nTransform all elements inside the div\nsynth.elementID will hold the first slider interface\n\n2) In future, potentially writing a rack that is re-usable?\nCould also take JSON\n\nnew Nexus.Rack('#target',{\n pre: () => {\n create some divs here, or some audio code\n },\n interface: {\n slider1: Nexus.add.slider({\n top:10,\n left:10,\n width:50,\n height:100,\n min: 0,\n max: 100,\n step: 1\n }),\n wave1: Nexus.add.waveform({\n file: './path/to/file.mp3',\n width:500,\n height:100,\n mode: 'range'\n })\n },\n init: () => {\n // some audio init code goes here...\n }\n});\n\n*/\n\nimport * as transform from '../util/transform';\nimport dom from '../util/dom';\n\nimport { colors } from '../main';\n\nexport default class Rack {\n\n constructor(target, settings) {\n\n this.meta = {};\n this.meta.target = target;\n this.meta.parent = dom.parseElement(target); // should be a generic function for parsing a 'target' argument that checks for string/DOM/jQUERY\n this.meta.colors = {};\n\n if (settings) {\n this.meta.attribute = settings.attribute || 'nexus-ui';\n this.meta.title = settings.name || false;\n this.meta.open = settings.open || false;\n } else {\n this.meta.attribute = 'nexus-ui';\n this.meta.title = false;\n this.meta.open = false;\n }\n\n let defaultColors = colors(); // jshint ignore:line\n this.meta.colors.accent = defaultColors.accent;\n this.meta.colors.fill = defaultColors.fill;\n this.meta.colors.light = defaultColors.light;\n this.meta.colors.dark = defaultColors.dark;\n this.meta.colors.mediumLight = defaultColors.mediumLight;\n this.meta.colors.mediumDark = defaultColors.mediumDark;\n this.buildInterface();\n this.colorInterface();\n }\n\n buildInterface() {\n this.meta.parent.style.boxSizing = 'border-box';\n this.meta.parent.style.userSelect = 'none';\n this.meta.parent.style.mozUserSelect = 'none';\n this.meta.parent.style.webkitUserSelect = 'none';\n\n this.meta.contents = document.createElement('div');\n\n while (this.meta.parent.childNodes.length > 0) {\n this.meta.contents.appendChild(this.meta.parent.childNodes[0]);\n }\n\n this.meta.contents.style.padding = '0px';\n this.meta.contents.style.boxSizing = 'border-box';\n\n if (this.meta.title) {\n this.meta.titleBar = document.createElement('div');\n this.meta.titleBar.innerHTML = this.meta.title;\n this.meta.titleBar.style.fontFamily = 'arial';\n this.meta.titleBar.style.position = 'relative';\n this.meta.titleBar.style.color = '#888';\n this.meta.titleBar.style.padding = '7px';\n this.meta.titleBar.style.fontSize = '12px';\n\n this.meta.button = document.createElement('div');\n this.meta.button.style.position = 'absolute';\n this.meta.button.style.top = '5px' ;\n this.meta.button.style.right = '5px' ;\n this.meta.button.innerHTML = '-';\n this.meta.button.style.padding = '0px 5px 2px';\n this.meta.button.style.lineHeight = '12px';\n this.meta.button.style.fontSize = '15px';\n\n this.meta.button.style.cursor = 'pointer';\n\n this.meta.button.addEventListener('mouseover', () => {\n this.meta.button.style.backgroundColor = this.meta.colors.mediumDark;\n });\n this.meta.button.addEventListener('mouseleave', () => {\n this.meta.button.style.backgroundColor = this.meta.colors.mediumLight;\n });\n this.meta.button.addEventListener('click', () => {\n if (this.meta.open) {\n this.hide();\n } else {\n this.show();\n }\n });\n\n\n this.meta.titleBar.appendChild(this.meta.button);\n\n this.meta.parent.appendChild(this.meta.titleBar);\n }\n this.meta.parent.appendChild(this.meta.contents);\n\n // var width = this.meta.parent.style.width = getComputedStyle(this.meta.parent).getPropertyValue('width');\n// this.meta.parent.style.width = width;\n\n let ui = transform.section(this.meta.target, this.meta.attribute);\n for (var key in ui) {\n this[key] = ui[key];\n }\n }\n\n colorInterface() {\n if (this.meta.title) {\n this.meta.button.style.backgroundColor = this.meta.colors.mediumLight;\n this.meta.button.style.border = 'solid 0px '+this.meta.colors.fill;\n this.meta.parent.style.border = 'solid 1px '+this.meta.colors.mediumLight;\n this.meta.parent.style.backgroundColor = this.meta.colors.light;\n this.meta.titleBar.style.backgroundColor = this.meta.colors.fill;\n }\n }\n\n show() {\n this.meta.contents.style.display = 'block';\n this.meta.open = true;\n }\n\n hide() {\n this.meta.contents.style.display = 'none';\n this.meta.open = false;\n }\n\n colorize(type,color) {\n for (var key in this) {\n if (this[key].colorize) {\n this[key].colorize(type,color);\n }\n }\n this.meta.colors[type] = color;\n this.colorInterface();\n }\n\n empty() {\n for (var key in this) {\n if (this[key].destroy) {\n this[key].destroy();\n }\n }\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/core/rack.js","'use strict';\n\nimport dom from '../util/dom';\nimport Interfaces from '../interfaces/';\n\nlet createInterfaceID = (widget,interfaceIDs) => {\n let type = widget.type;\n if (interfaceIDs[type]) {\n interfaceIDs[type]++;\n } else {\n interfaceIDs[type] = 1;\n }\n return ( type + interfaceIDs[type] );\n};\n\nlet element = (element,type,options) => {\n options = options || {};\n for (let i = 0; i < element.attributes.length; i++){\n let att = element.attributes[i];\n // try {\n // options[att.nodeName] = eval(att.nodeValue);\n // } catch(e) {\n options[att.nodeName] = att.nodeValue;\n // }\n }\n type = type[0].toUpperCase() + type.slice(1);\n let widget = new Interfaces[type](element,options);\n widget.id = element.id;\n return widget;\n};\n\n\nlet section = (parent,keyword) => {\n\n keyword = keyword || 'nexus-ui';\n\n let interfaceIDs = {};\n\n let container = dom.parseElement(parent);\n\n let ui = {};\n\n let htmlElements = container.getElementsByTagName('*');\n let elements = [];\n for (let i=0; i<htmlElements.length; i++) {\n elements.push(htmlElements[i]);\n }\n for (let i=0;i<elements.length;i++) {\n let type = elements[i].getAttribute(keyword);\n if (type) {\n let formattedType = false;\n for (let key in Interfaces) {\n if (type.toLowerCase()===key.toLowerCase()) {\n formattedType = key;\n }\n }\n console.log(formattedType);\n let widget = element(elements[i],formattedType);\n if (widget.id) {\n ui[widget.id] = widget;\n } else {\n let id = createInterfaceID(widget,interfaceIDs);\n ui[id] = widget;\n }\n }\n }\n\n return ui;\n\n};\n\nlet add = (type,parent,options) => {\n let target = document.createElement('div');\n options = options || {};\n if (parent) {\n parent = dom.parseElement(parent);\n } else {\n parent = document.body;\n }\n parent.appendChild(target);\n options.target = target;\n if (options.size) {\n target.style.width = options.size[0] + 'px';\n target.style.height = options.size[1] + 'px';\n }\n return element(target,type,options);\n};\n\nexport { element };\nexport { section };\nexport { add };\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/util/transform.js","'use strict';\n\nimport math from '../util/math';\n\nexport default class Tune {\n\n constructor() {\n\n \t// the scale as ratios\n \tthis.scale = [];\n\n \t// i/o modes\n \tthis.mode = {\n \t\toutput: 'frequency',\n \t\tinput: 'step'\n \t};\n\n \t// ET major\n \tthis.etmajor = [ 261.62558,\n \t\t293.664764,\n \t\t329.627563,\n \t\t349.228241,\n \t\t391.995422,\n \t\t440,\n \t\t493.883301,\n \t\t523.25116\n \t];\n\n \t// Root frequency.\n \tthis.root = math.mtof(60); // * Math.pow(2,(60-69)/12);\n\n // default is a major scale\n this.createScale(0,2,4,5,7,9,11);\n\n }\n\n /* Return data in the mode you are in (freq, ratio, or midi) */\n note(input,octave) {\n\n \tlet newvalue;\n\n \tif (this.mode.output === 'frequency') {\n \t\tnewvalue = this.frequency(input,octave);\n \t} else if (this.mode.output === 'ratio') {\n \t\tnewvalue = this.ratio(input,octave);\n \t} else if (this.mode.output === 'MIDI') {\n \t\tnewvalue = this.MIDI(input,octave);\n \t} else {\n \t\tnewvalue = this.frequency(input,octave);\n \t}\n\n \treturn newvalue;\n\n }\n\n\n /* Return freq data */\n frequency(stepIn, octaveIn) {\n\n \tif (this.mode.input === 'midi' || this.mode.input === 'MIDI' ) {\n \t\tthis.stepIn += 60;\n \t}\n\n \t// what octave is our input\n \tlet octave = Math.floor(stepIn/this.scale.length);\n\n \tif (octaveIn) {\n \t\toctave += octaveIn;\n \t}\n\n \t// which scale degree (0 - scale length) is our input\n \tlet scaleDegree = stepIn % this.scale.length;\n\n \twhile (scaleDegree < 0) {\n \t\tscaleDegree += this.scale.length;\n \t}\n\n let ratio = this.scale[scaleDegree];\n\n \tlet freq = this.root * ratio;\n\n \tfreq = freq*(Math.pow(2,octave));\n\n \t// truncate irrational numbers\n \tfreq = Math.floor(freq*100000000000)/100000000000;\n\n \treturn freq;\n\n }\n\n /* Force return ratio data */\n\n ratio(stepIn, octaveIn) {\n\n \tif (this.mode.input === 'midi' || this.mode.input === 'MIDI' ) {\n \t\tthis.stepIn += 60;\n \t}\n\n \t// what octave is our input\n \tlet octave = Math.floor(stepIn/this.scale.length);\n\n \tif (octaveIn) {\n \t\toctave += octaveIn;\n \t}\n\n \t// which scale degree (0 - scale length) is our input\n \tlet scaleDegree = stepIn % this.scale.length;\n\n \t// what ratio is our input to our key\n \tlet ratio = Math.pow(2,octave)*this.scale[scaleDegree];\n\n \tratio = Math.floor(ratio*100000000000)/100000000000;\n\n \treturn ratio;\n\n }\n\n /* Force return adjusted MIDI data */\n\n MIDI(stepIn,octaveIn) {\n\n \tlet newvalue = this.frequency(stepIn,octaveIn);\n\n \tlet n = 69 + 12*Math.log(newvalue/440)/Math.log(2);\n\n \tn = Math.floor(n*1000000000)/1000000000;\n\n \treturn n;\n\n }\n\n createScale() {\n let newScale = [];\n for (let i=0;i<arguments.length;i++) {\n newScale.push( math.mtof( 60 + arguments[i] ) );\n }\n this.loadScaleFromFrequencies(newScale);\n }\n\n createJIScale() {\n this.scale = [];\n for (let i=0;i<arguments.length;i++) {\n this.scale.push(arguments[i]);\n }\n }\n\n loadScaleFromFrequencies(freqs) {\n this.scale = [];\n for (let i=0;i<freqs.length-1;i++) {\n this.scale.push(freqs[i]/freqs[0]);\n }\n }\n\n /* Load a new scale */\n\n loadScale(name){\n\n \t/* load the scale */\n \tlet freqs = this.scales[name].frequencies;\n this.loadScaleFromFrequencies(freqs);\n\n }\n\n /* Search the names of tunings\n \t Returns an array of names of tunings */\n\n search(letters) {\n \tlet possible = [];\n \tfor (let key in this.scales) {\n \t\tif (key.toLowerCase().indexOf(letters.toLowerCase()) !== -1) {\n \t\t\tpossible.push(key);\n \t\t}\n \t}\n \treturn possible;\n }\n\n /* Return a collection of notes as an array */\n\n chord(midis) {\n \tlet output = [];\n \tfor (let i=0;i<midis.length;i++) {\n \t\toutput.push(this.note(midis[i]));\n \t}\n \treturn output;\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/tuning/tuning.js","'use strict';\n\n//Disable jshint warning concerning trailing regular params\n/*jshint -W138 */\n\nexport default class Radio {\n //if non-existent buttons are switched, they are ignored\n\n constructor(length = 3, ...onVals) {\n //each optional 'onVals' argument switches on that value in the Radio if it exists\n //In the example below, a 3-button radio is created, index 0 is switched on, index 1 is switched on then then attempted again producing an warning, and the final argument produces a warning because the index value does not exist.\n //Example:\n //` radio = new Radio(3, 0, 1, 1, 3);\n //… [1,1,0]\n\n if (length < 0) { length = 1; }\n\n this.length = length;\n this.onVals = onVals;\n this.array = new Array(length).fill(0);\n\n if (onVals.length > 0) {\n this.on(...onVals);\n }\n }\n\n select(value) {\n this.array.fill(0);\n this.array[value] = 1;\n return this.array;\n }\n\n flip(...values) {\n //flips the specified values. if no value is specified, flips all buttons\n let a = this.array;\n if (values.length > 0) {\n values.forEach(function(v) {\n if (v > a.length - 1) {\n console.warn('Warning: AnonRadio[' + v + '] does not exist');\n } else {\n a[v] = (a[v] ? 0 : 1);\n }\n });\n } else {\n a.forEach(function(v, i, arr) {\n arr[i] = (v ? 0 : 1);\n });\n }\n return a;\n }\n\n on(...values) {\n //switch on the specified values. if no value specified, flips on all buttons\n let a = this.array;\n if (values.length > 0) {\n values.forEach(function(v) {\n if (v > a.length - 1) {\n console.warn('Warning: AnonRadio[' + v + '] exceeds size of object');\n } else {\n if (a[v] === 1) { console.warn('Warning: AnonRadio[' + v + '] was already on.'); }\n a[v] = 1;\n }\n });\n } else {\n a.fill(1);\n }\n return a;\n }\n\n off(...values) {\n //switch off the specified values. if no value specified, flips off all buttons\n let a = this.array;\n if (values.length > 0) {\n values.forEach(function(v) {\n a[v] = 0;\n });\n } else {\n a.fill(0);\n }\n return a;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./lib/models/radio.js","var WAAClock = require('./lib/WAAClock')\n\nmodule.exports = WAAClock\nif (typeof window !== 'undefined') window.WAAClock = WAAClock\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/waaclock/index.js\n// module id = 42\n// module chunks = 0","var isBrowser = (typeof window !== 'undefined')\n\nvar CLOCK_DEFAULTS = {\n toleranceLate: 0.10,\n toleranceEarly: 0.001\n}\n\n// ==================== Event ==================== //\nvar Event = function(clock, deadline, func) {\n this.clock = clock\n this.func = func\n this._cleared = false // Flag used to clear an event inside callback\n\n this.toleranceLate = clock.toleranceLate\n this.toleranceEarly = clock.toleranceEarly\n this._latestTime = null\n this._earliestTime = null\n this.deadline = null\n this.repeatTime = null\n\n this.schedule(deadline)\n}\n\n// Unschedules the event\nEvent.prototype.clear = function() {\n this.clock._removeEvent(this)\n this._cleared = true\n return this\n}\n\n// Sets the event to repeat every `time` seconds.\nEvent.prototype.repeat = function(time) {\n if (time === 0)\n throw new Error('delay cannot be 0')\n this.repeatTime = time\n if (!this.clock._hasEvent(this))\n this.schedule(this.deadline + this.repeatTime)\n return this\n}\n\n// Sets the time tolerance of the event.\n// The event will be executed in the interval `[deadline - early, deadline + late]`\n// If the clock fails to execute the event in time, the event will be dropped.\nEvent.prototype.tolerance = function(values) {\n if (typeof values.late === 'number')\n this.toleranceLate = values.late\n if (typeof values.early === 'number')\n this.toleranceEarly = values.early\n this._refreshEarlyLateDates()\n if (this.clock._hasEvent(this)) {\n this.clock._removeEvent(this)\n this.clock._insertEvent(this)\n }\n return this\n}\n\n// Returns true if the event is repeated, false otherwise\nEvent.prototype.isRepeated = function() { return this.repeatTime !== null }\n\n// Schedules the event to be ran before `deadline`.\n// If the time is within the event tolerance, we handle the event immediately.\n// If the event was already scheduled at a different time, it is rescheduled.\nEvent.prototype.schedule = function(deadline) {\n this._cleared = false\n this.deadline = deadline\n this._refreshEarlyLateDates()\n\n if (this.clock.context.currentTime >= this._earliestTime) {\n this._execute()\n \n } else if (this.clock._hasEvent(this)) {\n this.clock._removeEvent(this)\n this.clock._insertEvent(this)\n \n } else this.clock._insertEvent(this)\n}\n\nEvent.prototype.timeStretch = function(tRef, ratio) {\n if (this.isRepeated())\n this.repeatTime = this.repeatTime * ratio\n\n var deadline = tRef + ratio * (this.deadline - tRef)\n // If the deadline is too close or past, and the event has a repeat,\n // we calculate the next repeat possible in the stretched space.\n if (this.isRepeated()) {\n while (this.clock.context.currentTime >= deadline - this.toleranceEarly)\n deadline += this.repeatTime\n }\n this.schedule(deadline)\n}\n\n// Executes the event\nEvent.prototype._execute = function() {\n if (this.clock._started === false) return\n this.clock._removeEvent(this)\n\n if (this.clock.context.currentTime < this._latestTime)\n this.func(this)\n else {\n if (this.onexpired) this.onexpired(this)\n console.warn('event expired')\n }\n // In the case `schedule` is called inside `func`, we need to avoid\n // overrwriting with yet another `schedule`.\n if (!this.clock._hasEvent(this) && this.isRepeated() && !this._cleared)\n this.schedule(this.deadline + this.repeatTime) \n}\n\n// Updates cached times\nEvent.prototype._refreshEarlyLateDates = function() {\n this._latestTime = this.deadline + this.toleranceLate\n this._earliestTime = this.deadline - this.toleranceEarly\n}\n\n// ==================== WAAClock ==================== //\nvar WAAClock = module.exports = function(context, opts) {\n var self = this\n opts = opts || {}\n this.tickMethod = opts.tickMethod || 'ScriptProcessorNode'\n this.toleranceEarly = opts.toleranceEarly || CLOCK_DEFAULTS.toleranceEarly\n this.toleranceLate = opts.toleranceLate || CLOCK_DEFAULTS.toleranceLate\n this.context = context\n this._events = []\n this._started = false\n}\n\n// ---------- Public API ---------- //\n// Schedules `func` to run after `delay` seconds.\nWAAClock.prototype.setTimeout = function(func, delay) {\n return this._createEvent(func, this._absTime(delay))\n}\n\n// Schedules `func` to run before `deadline`.\nWAAClock.prototype.callbackAtTime = function(func, deadline) {\n return this._createEvent(func, deadline)\n}\n\n// Stretches `deadline` and `repeat` of all scheduled `events` by `ratio`, keeping\n// their relative distance to `tRef`. In fact this is equivalent to changing the tempo.\nWAAClock.prototype.timeStretch = function(tRef, events, ratio) {\n events.forEach(function(event) { event.timeStretch(tRef, ratio) })\n return events\n}\n\n// Removes all scheduled events and starts the clock \nWAAClock.prototype.start = function() {\n if (this._started === false) {\n var self = this\n this._started = true\n this._events = []\n\n if (this.tickMethod === 'ScriptProcessorNode') {\n var bufferSize = 256\n // We have to keep a reference to the node to avoid garbage collection\n this._clockNode = this.context.createScriptProcessor(bufferSize, 1, 1)\n this._clockNode.connect(this.context.destination)\n this._clockNode.onaudioprocess = function () {\n process.nextTick(function() { self._tick() })\n }\n } else if (this.tickMethod === 'manual') null // _tick is called manually\n\n else throw new Error('invalid tickMethod ' + this.tickMethod)\n }\n}\n\n// Stops the clock\nWAAClock.prototype.stop = function() {\n if (this._started === true) {\n this._started = false\n this._clockNode.disconnect()\n } \n}\n\n// ---------- Private ---------- //\n\n// This function is ran periodically, and at each tick it executes\n// events for which `currentTime` is included in their tolerance interval.\nWAAClock.prototype._tick = function() {\n var event = this._events.shift()\n\n while(event && event._earliestTime <= this.context.currentTime) {\n event._execute()\n event = this._events.shift()\n }\n\n // Put back the last event\n if(event) this._events.unshift(event)\n}\n\n// Creates an event and insert it to the list\nWAAClock.prototype._createEvent = function(func, deadline) {\n return new Event(this, deadline, func)\n}\n\n// Inserts an event to the list\nWAAClock.prototype._insertEvent = function(event) {\n this._events.splice(this._indexByTime(event._earliestTime), 0, event)\n}\n\n// Removes an event from the list\nWAAClock.prototype._removeEvent = function(event) {\n var ind = this._events.indexOf(event)\n if (ind !== -1) this._events.splice(ind, 1)\n}\n\n// Returns true if `event` is in queue, false otherwise\nWAAClock.prototype._hasEvent = function(event) {\n return this._events.indexOf(event) !== -1\n}\n\n// Returns the index of the first event whose deadline is >= to `deadline`\nWAAClock.prototype._indexByTime = function(deadline) {\n // performs a binary search\n var low = 0\n , high = this._events.length\n , mid\n while (low < high) {\n mid = Math.floor((low + high) / 2)\n if (this._events[mid]._earliestTime < deadline)\n low = mid + 1\n else high = mid\n }\n return low\n}\n\n// Converts from relative time to absolute time\nWAAClock.prototype._absTime = function(relTime) {\n return relTime + this.context.currentTime\n}\n\n// Converts from absolute time to relative time \nWAAClock.prototype._relTime = function(absTime) {\n return absTime - this.context.currentTime\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/waaclock/lib/WAAClock.js\n// module id = 43\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 44\n// module chunks = 0"],"sourceRoot":""}