Artifact
73c2e85fd5684e72e42682954b985c04b17b16be58b1b592ba21dffb1c368c87:
- Executable file
public/nexus-js/lib/main.js
— part of check-in
[12a9bb700d]
at
2021-08-11 18:56:04
on branch trunk
— Import from git
Added a changelog
(user:
dev
size: 2646)
0000: 27 75 73 65 20 73 74 72 69 63 74 27 3b 0a 0a 69 'use strict';..i
0010: 6d 70 6f 72 74 20 49 6e 74 65 72 66 61 63 65 73 mport Interfaces
0020: 20 66 72 6f 6d 20 27 2e 2f 69 6e 74 65 72 66 61 from './interfa
0030: 63 65 73 2f 27 3b 0a 69 6d 70 6f 72 74 20 6d 61 ces/';.import ma
0040: 74 68 20 66 72 6f 6d 20 27 2e 2f 75 74 69 6c 2f th from './util/
0050: 6d 61 74 68 27 3b 0a 69 6d 70 6f 72 74 20 52 61 math';.import Ra
0060: 63 6b 20 66 72 6f 6d 20 27 2e 2f 63 6f 72 65 2f ck from './core/
0070: 72 61 63 6b 27 3b 0a 69 6d 70 6f 72 74 20 54 75 rack';.import Tu
0080: 6e 65 20 66 72 6f 6d 20 27 2e 2f 74 75 6e 69 6e ne from './tunin
0090: 67 2f 74 75 6e 69 6e 67 27 3b 0a 69 6d 70 6f 72 g/tuning';.impor
00a0: 74 20 2a 20 61 73 20 54 72 61 6e 73 66 6f 72 6d t * as Transform
00b0: 20 66 72 6f 6d 20 27 2e 2f 75 74 69 6c 2f 74 72 from './util/tr
00c0: 61 6e 73 66 6f 72 6d 27 3b 0a 0a 6c 65 74 20 43 ansform';..let C
00d0: 6f 75 6e 74 65 72 20 3d 20 72 65 71 75 69 72 65 ounter = require
00e0: 28 27 2e 2f 6d 6f 64 65 6c 73 2f 63 6f 75 6e 74 ('./models/count
00f0: 65 72 27 29 3b 0a 6c 65 74 20 52 61 64 69 6f 20 er');.let Radio
0100: 3d 20 72 65 71 75 69 72 65 28 27 2e 2f 6d 6f 64 = require('./mod
0110: 65 6c 73 2f 72 61 64 69 6f 27 29 3b 0a 6c 65 74 els/radio');.let
0120: 20 44 72 75 6e 6b 20 3d 20 72 65 71 75 69 72 65 Drunk = require
0130: 28 27 2e 2f 6d 6f 64 65 6c 73 2f 64 72 75 6e 6b ('./models/drunk
0140: 27 29 3b 0a 6c 65 74 20 53 65 71 75 65 6e 63 65 ');.let Sequence
0150: 20 3d 20 72 65 71 75 69 72 65 28 27 2e 2f 6d 6f = require('./mo
0160: 64 65 6c 73 2f 73 65 71 75 65 6e 63 65 27 29 3b dels/sequence');
0170: 0a 6c 65 74 20 4d 61 74 72 69 78 20 3d 20 72 65 .let Matrix = re
0180: 71 75 69 72 65 28 27 2e 2f 6d 6f 64 65 6c 73 2f quire('./models/
0190: 6d 61 74 72 69 78 27 29 3b 0a 0a 69 6d 70 6f 72 matrix');..impor
01a0: 74 20 57 41 41 43 6c 6f 63 6b 20 66 72 6f 6d 20 t WAAClock from
01b0: 27 77 61 61 63 6c 6f 63 6b 27 3b 0a 69 6d 70 6f 'waaclock';.impo
01c0: 72 74 20 49 6e 74 65 72 76 61 6c 20 66 72 6f 6d rt Interval from
01d0: 20 27 2e 2f 74 69 6d 65 2f 69 6e 74 65 72 76 61 './time/interva
01e0: 6c 27 3b 0a 0a 0a 2f 2a 2a 0a 4e 65 78 75 73 55 l';.../**.NexusU
01f0: 49 20 3d 3e 20 63 72 65 61 74 65 64 20 61 73 20 I => created as
0200: 4e 65 78 75 73 0a 2a 2f 0a 0a 63 6c 61 73 73 20 Nexus.*/..class
0210: 4e 65 78 75 73 55 49 20 7b 0a 0a 20 20 20 20 63 NexusUI {.. c
0220: 6f 6e 73 74 72 75 63 74 6f 72 28 63 6f 6e 74 65 onstructor(conte
0230: 78 74 29 20 7b 0a 0a 20 20 20 20 20 20 20 20 66 xt) {.. f
0240: 6f 72 20 28 6c 65 74 20 6b 65 79 20 69 6e 20 49 or (let key in I
0250: 6e 74 65 72 66 61 63 65 73 29 20 7b 0a 20 20 20 nterfaces) {.
0260: 20 20 20 20 20 20 20 20 20 74 68 69 73 5b 6b 65 this[ke
0270: 79 5d 20 3d 20 49 6e 74 65 72 66 61 63 65 73 5b y] = Interfaces[
0280: 6b 65 79 5d 3b 0a 20 20 20 20 20 20 20 20 7d 0a key];. }.
0290: 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65 . for (le
02a0: 74 20 6b 65 79 20 69 6e 20 6d 61 74 68 29 20 7b t key in math) {
02b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
02c0: 73 5b 6b 65 79 5d 20 3d 20 6d 61 74 68 5b 6b 65 s[key] = math[ke
02d0: 79 5d 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 y];. }..
02e0: 20 20 20 20 20 20 20 6c 65 74 20 43 6f 72 65 20 let Core
02f0: 3d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 27 52 = {. 'R
0300: 61 63 6b 27 3a 20 52 61 63 6b 0a 20 20 20 20 20 ack': Rack.
0310: 20 20 20 7d 3b 0a 0a 20 20 20 20 20 20 20 20 6c };.. l
0320: 65 74 20 4d 6f 64 65 6c 73 20 3d 20 7b 0a 20 20 et Models = {.
0330: 20 20 20 20 20 20 20 20 27 43 6f 75 6e 74 65 72 'Counter
0340: 27 3a 20 43 6f 75 6e 74 65 72 2c 0a 20 20 20 20 ': Counter,.
0350: 20 20 20 20 20 20 27 52 61 64 69 6f 27 3a 20 52 'Radio': R
0360: 61 64 69 6f 2c 0a 20 20 20 20 20 20 20 20 20 20 adio,.
0370: 27 44 72 75 6e 6b 27 3a 20 44 72 75 6e 6b 2c 0a 'Drunk': Drunk,.
0380: 20 20 20 20 20 20 20 20 20 20 27 53 65 71 75 65 'Seque
0390: 6e 63 65 27 3a 20 53 65 71 75 65 6e 63 65 2c 0a nce': Sequence,.
03a0: 20 20 20 20 20 20 20 20 20 20 27 4d 61 74 72 69 'Matri
03b0: 78 27 3a 20 4d 61 74 72 69 78 0a 20 20 20 20 20 x': Matrix.
03c0: 20 20 20 7d 3b 0a 0a 20 20 20 20 20 20 20 20 66 };.. f
03d0: 6f 72 20 28 6c 65 74 20 6b 65 79 20 69 6e 20 4d or (let key in M
03e0: 6f 64 65 6c 73 29 20 7b 0a 20 20 20 20 20 20 20 odels) {.
03f0: 20 20 20 74 68 69 73 5b 6b 65 79 5d 20 3d 20 4d this[key] = M
0400: 6f 64 65 6c 73 5b 6b 65 79 5d 3b 0a 20 20 20 20 odels[key];.
0410: 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 66 }.. f
0420: 6f 72 20 28 6c 65 74 20 6b 65 79 20 69 6e 20 43 or (let key in C
0430: 6f 72 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ore) {.
0440: 20 74 68 69 73 5b 6b 65 79 5d 20 3d 20 43 6f 72 this[key] = Cor
0450: 65 5b 6b 65 79 5d 3b 0a 20 20 20 20 20 20 20 20 e[key];.
0460: 7d 0a 0a 20 20 20 20 20 20 20 20 6c 65 74 20 44 }.. let D
0470: 65 66 61 75 6c 74 43 6f 6e 74 65 78 74 20 3d 20 efaultContext =
0480: 77 69 6e 64 6f 77 2e 41 75 64 69 6f 43 6f 6e 74 window.AudioCont
0490: 65 78 74 20 7c 7c 20 77 69 6e 64 6f 77 2e 77 65 ext || window.we
04a0: 62 6b 69 74 41 75 64 69 6f 43 6f 6e 74 65 78 74 bkitAudioContext
04b0: 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f ;. this._
04c0: 63 6f 6e 74 65 78 74 20 3d 20 63 6f 6e 74 65 78 context = contex
04d0: 74 20 7c 7c 20 6e 65 77 20 44 65 66 61 75 6c 74 t || new Default
04e0: 43 6f 6e 74 65 78 74 28 29 3b 0a 0a 20 20 20 20 Context();..
04f0: 20 20 20 20 74 68 69 73 2e 74 75 6e 65 20 3d 20 this.tune =
0500: 6e 65 77 20 54 75 6e 65 28 29 3b 0a 20 20 20 20 new Tune();.
0510: 20 20 20 20 74 68 69 73 2e 6e 6f 74 65 20 3d 20 this.note =
0520: 74 68 69 73 2e 74 75 6e 65 2e 6e 6f 74 65 2e 62 this.tune.note.b
0530: 69 6e 64 28 74 68 69 73 2e 74 75 6e 65 29 3b 0a ind(this.tune);.
0540: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6c . this.cl
0550: 6f 63 6b 20 3d 20 6e 65 77 20 57 41 41 43 6c 6f ock = new WAAClo
0560: 63 6b 28 74 68 69 73 2e 5f 63 6f 6e 74 65 78 74 ck(this._context
0570: 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e );. this.
0580: 63 6c 6f 63 6b 2e 73 74 61 72 74 28 29 3b 0a 20 clock.start();.
0590: 20 20 20 20 20 20 20 74 68 69 73 2e 49 6e 74 65 this.Inte
05a0: 72 76 61 6c 20 3d 20 49 6e 74 65 72 76 61 6c 3b rval = Interval;
05b0: 0a 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 .. this.c
05c0: 6f 6c 6f 72 73 20 3d 20 7b 0a 20 20 20 20 20 20 olors = {.
05d0: 20 20 20 20 61 63 63 65 6e 74 3a 20 27 23 32 62 accent: '#2b
05e0: 62 27 2c 0a 20 20 20 20 20 20 20 20 20 20 66 69 b',. fi
05f0: 6c 6c 3a 20 27 23 65 65 65 27 2c 0a 20 20 20 20 ll: '#eee',.
0600: 20 20 20 20 20 20 6c 69 67 68 74 3a 20 27 23 66 light: '#f
0610: 66 66 27 2c 0a 20 20 20 20 20 20 20 20 20 20 64 ff',. d
0620: 61 72 6b 3a 20 27 23 33 33 33 27 2c 0a 20 20 20 ark: '#333',.
0630: 20 20 20 20 20 20 20 6d 65 64 69 75 6d 4c 69 67 mediumLig
0640: 68 74 3a 20 27 23 63 63 63 27 2c 0a 20 20 20 20 ht: '#ccc',.
0650: 20 20 20 20 20 20 6d 65 64 69 75 6d 44 61 72 6b mediumDark
0660: 3a 20 27 23 36 36 36 27 0a 20 20 20 20 20 20 20 : '#666'.
0670: 20 7d 3b 0a 0a 20 20 20 20 20 20 20 20 74 68 69 };.. thi
0680: 73 2e 74 72 61 6e 73 66 6f 72 6d 20 3d 20 54 72 s.transform = Tr
0690: 61 6e 73 66 6f 72 6d 3b 0a 20 20 20 20 20 20 20 ansform;.
06a0: 20 74 68 69 73 2e 61 64 64 20 3d 20 54 72 61 6e this.add = Tran
06b0: 73 66 6f 72 6d 2e 61 64 64 3b 0a 0a 0a 20 20 20 sform.add;...
06c0: 20 20 20 20 20 74 68 69 73 2e 41 64 64 20 3d 20 this.Add =
06d0: 7b 7d 3b 0a 20 20 20 20 20 20 20 20 66 6f 72 20 {};. for
06e0: 28 6c 65 74 20 6b 65 79 20 69 6e 20 49 6e 74 65 (let key in Inte
06f0: 72 66 61 63 65 73 29 20 7b 0a 20 20 20 20 20 20 rfaces) {.
0700: 20 20 20 20 74 68 69 73 2e 41 64 64 5b 6b 65 79 this.Add[key
0710: 5d 20 3d 20 54 72 61 6e 73 66 6f 72 6d 2e 61 64 ] = Transform.ad
0720: 64 2e 62 69 6e 64 28 74 68 69 73 2c 6b 65 79 29 d.bind(this,key)
0730: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 ;. }..
0740: 20 20 20 20 20 2f 2a 20 63 72 65 61 74 65 20 64 /* create d
0750: 65 66 61 75 6c 74 20 63 6f 6d 70 6f 6e 65 6e 74 efault component
0760: 20 73 69 7a 65 20 61 73 20 31 73 74 20 73 74 79 size as 1st sty
0770: 6c 65 20 65 6c 65 6d 65 6e 74 20 69 6e 20 64 6f le element in do
0780: 63 75 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 cument */.
0790: 20 20 76 61 72 20 64 65 66 61 75 6c 74 53 74 79 var defaultSty
07a0: 6c 65 4e 6f 64 65 20 3d 20 64 6f 63 75 6d 65 6e leNode = documen
07b0: 74 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 t.createElement(
07c0: 27 73 74 79 6c 65 27 29 3b 0a 20 20 20 20 20 20 'style');.
07d0: 20 20 64 65 66 61 75 6c 74 53 74 79 6c 65 4e 6f defaultStyleNo
07e0: 64 65 2e 74 79 70 65 20 3d 20 27 74 65 78 74 2f de.type = 'text/
07f0: 63 73 73 27 3b 0a 20 20 20 20 20 20 20 20 64 65 css';. de
0800: 66 61 75 6c 74 53 74 79 6c 65 4e 6f 64 65 2e 69 faultStyleNode.i
0810: 6e 6e 65 72 48 54 4d 4c 20 3d 20 27 5b 6e 65 78 nnerHTML = '[nex
0820: 75 73 2d 75 69 5d 7b 68 65 69 67 68 74 3a 35 30 us-ui]{height:50
0830: 30 30 70 78 3b 77 69 64 74 68 3a 35 30 30 30 70 00px;width:5000p
0840: 78 7d 27 3b 0a 20 20 20 20 20 20 20 20 76 61 72 x}';. var
0850: 20 68 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 68 65 h = document.he
0860: 61 64 3b 0a 20 20 20 20 20 20 20 20 68 2e 69 6e ad;. h.in
0870: 73 65 72 74 42 65 66 6f 72 65 28 64 65 66 61 75 sertBefore(defau
0880: 6c 74 53 74 79 6c 65 4e 6f 64 65 2c 20 68 2e 66 ltStyleNode, h.f
0890: 69 72 73 74 45 6c 65 6d 65 6e 74 43 68 69 6c 64 irstElementChild
08a0: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 67 65 );. }.. ge
08b0: 74 20 63 6f 6e 74 65 78 74 28 29 20 7b 0a 20 20 t context() {.
08c0: 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
08d0: 5f 63 6f 6e 74 65 78 74 3b 0a 20 20 20 20 7d 0a _context;. }.
08e0: 0a 20 20 20 20 73 65 74 20 63 6f 6e 74 65 78 74 . set context
08f0: 28 63 74 78 29 20 7b 0a 20 20 20 20 20 20 74 68 (ctx) {. th
0900: 69 73 2e 63 6c 6f 63 6b 2e 73 74 6f 70 28 29 3b is.clock.stop();
0910: 0a 20 20 20 20 20 20 74 68 69 73 2e 5f 63 6f 6e . this._con
0920: 74 65 78 74 20 3d 20 63 74 78 3b 0a 20 20 20 20 text = ctx;.
0930: 20 20 74 68 69 73 2e 63 6c 6f 63 6b 20 3d 20 6e this.clock = n
0940: 65 77 20 57 41 41 43 6c 6f 63 6b 28 74 68 69 73 ew WAAClock(this
0950: 2e 63 6f 6e 74 65 78 74 29 3b 0a 20 20 20 20 20 .context);.
0960: 20 74 68 69 73 2e 63 6c 6f 63 6b 2e 73 74 61 72 this.clock.star
0970: 74 28 29 3b 0a 20 20 20 20 7d 0a 0a 0a 0a 7d 0a t();. }....}.
0980: 0a 6c 65 74 20 4e 65 78 75 73 20 3d 20 6e 65 77 .let Nexus = new
0990: 20 4e 65 78 75 73 55 49 28 29 3b 0a 0a 65 78 70 NexusUI();..exp
09a0: 6f 72 74 20 66 75 6e 63 74 69 6f 6e 20 63 6f 6c ort function col
09b0: 6f 72 73 28 29 20 7b 0a 20 20 20 20 72 65 74 75 ors() {. retu
09c0: 72 6e 20 4e 65 78 75 73 2e 63 6f 6c 6f 72 73 3b rn Nexus.colors;
09d0: 0a 7d 0a 65 78 70 6f 72 74 20 66 75 6e 63 74 69 .}.export functi
09e0: 6f 6e 20 63 6f 6e 74 65 78 74 28 29 20 7b 0a 20 on context() {.
09f0: 20 20 20 72 65 74 75 72 6e 20 4e 65 78 75 73 2e return Nexus.
0a00: 63 6f 6e 74 65 78 74 3b 0a 7d 0a 65 78 70 6f 72 context;.}.expor
0a10: 74 20 66 75 6e 63 74 69 6f 6e 20 63 6c 6f 63 6b t function clock
0a20: 28 29 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 () {. return
0a30: 4e 65 78 75 73 2e 63 6c 6f 63 6b 3b 0a 7d 0a 0a Nexus.clock;.}..
0a40: 65 78 70 6f 72 74 20 64 65 66 61 75 6c 74 20 4e export default N
0a50: 65 78 75 73 3b 0a exus;.