Artifact
60cb7abdd6ddd3cc708de8258a1011bb9eba25a229ebd49d06150400474a6c98:
0000: 27 75 73 65 20 73 74 72 69 63 74 27 3b 0a 0a 2f 'use strict';../
0010: 2f 6c 65 74 20 73 76 67 20 3d 20 72 65 71 75 69 /let svg = requi
0020: 72 65 28 27 2e 2e 2f 75 74 69 6c 2f 73 76 67 27 re('../util/svg'
0030: 29 3b 0a 6c 65 74 20 49 6e 74 65 72 66 61 63 65 );.let Interface
0040: 20 3d 20 72 65 71 75 69 72 65 28 27 2e 2e 2f 63 = require('../c
0050: 6f 72 65 2f 69 6e 74 65 72 66 61 63 65 27 29 3b ore/interface');
0060: 0a 6c 65 74 20 42 75 74 74 6f 6e 20 3d 20 72 65 .let Button = re
0070: 71 75 69 72 65 28 27 2e 2e 2f 69 6e 74 65 72 66 quire('../interf
0080: 61 63 65 73 2f 62 75 74 74 6f 6e 27 29 3b 0a 0a aces/button');..
0090: 2f 2a 2a 0a 20 2a 20 52 61 64 69 6f 42 75 74 74 /**. * RadioButt
00a0: 6f 6e 0a 20 2a 0a 20 2a 20 40 64 65 73 63 72 69 on. *. * @descri
00b0: 70 74 69 6f 6e 20 41 6e 20 61 72 72 61 79 20 6f ption An array o
00c0: 66 20 62 75 74 74 6f 6e 73 2e 20 42 79 20 64 65 f buttons. By de
00d0: 66 61 75 6c 74 2c 20 73 65 6c 65 63 74 69 6e 67 fault, selecting
00e0: 20 6f 6e 65 20 62 75 74 74 6f 6e 20 77 69 6c 6c one button will
00f0: 20 64 65 73 65 6c 65 63 74 20 61 6c 6c 20 6f 74 deselect all ot
0100: 68 65 72 20 62 75 74 74 6f 6e 73 2c 20 62 75 74 her buttons, but
0110: 20 74 68 69 73 20 63 61 6e 20 62 65 20 63 75 73 this can be cus
0120: 74 6f 6d 69 7a 65 64 20 75 73 69 6e 67 20 74 68 tomized using th
0130: 65 20 41 50 49 20 62 65 6c 6f 77 2e 0a 20 2a 0a e API below.. *.
0140: 20 2a 20 40 64 65 6d 6f 20 3c 64 69 76 20 6e 65 * @demo <div ne
0150: 78 75 73 2d 75 69 3d 22 52 61 64 69 6f 42 75 74 xus-ui="RadioBut
0160: 74 6f 6e 22 3e 3c 2f 64 69 76 3e 0a 20 2a 0a 20 ton"></div>. *.
0170: 2a 20 40 65 78 61 6d 70 6c 65 0a 20 2a 20 76 61 * @example. * va
0180: 72 20 72 61 64 69 6f 62 75 74 74 6f 6e 20 3d 20 r radiobutton =
0190: 6e 65 77 20 4e 65 78 75 73 2e 52 61 64 69 6f 42 new Nexus.RadioB
01a0: 75 74 74 6f 6e 28 27 23 74 61 72 67 65 74 27 29 utton('#target')
01b0: 0a 20 2a 0a 20 2a 20 40 65 78 61 6d 70 6c 65 0a . *. * @example.
01c0: 20 2a 20 76 61 72 20 72 61 64 69 6f 62 75 74 74 * var radiobutt
01d0: 6f 6e 20 3d 20 6e 65 77 20 4e 65 78 75 73 2e 52 on = new Nexus.R
01e0: 61 64 69 6f 42 75 74 74 6f 6e 28 27 23 74 61 72 adioButton('#tar
01f0: 67 65 74 27 2c 7b 0a 20 2a 20 20 20 27 73 69 7a get',{. * 'siz
0200: 65 27 3a 20 5b 31 32 30 2c 32 35 5d 2c 0a 20 2a e': [120,25],. *
0210: 20 20 20 27 6e 75 6d 62 65 72 4f 66 42 75 74 74 'numberOfButt
0220: 6f 6e 73 27 3a 20 34 2c 0a 20 2a 20 20 20 27 61 ons': 4,. * 'a
0230: 63 74 69 76 65 27 3a 20 2d 31 0a 20 2a 20 7d 29 ctive': -1. * })
0240: 0a 20 2a 0a 20 2a 20 40 6f 75 74 70 75 74 0a 20 . *. * @output.
0250: 2a 20 63 68 61 6e 67 65 0a 20 2a 20 46 69 72 65 * change. * Fire
0260: 73 20 61 6e 79 20 74 69 6d 65 20 74 68 65 20 69 s any time the i
0270: 6e 74 65 72 66 61 63 65 27 73 20 76 61 6c 75 65 nterface's value
0280: 20 63 68 61 6e 67 65 73 2e 20 3c 62 72 3e 0a 20 changes. <br>.
0290: 2a 20 54 68 65 20 65 76 65 6e 74 20 64 61 74 61 * The event data
02a0: 20 61 6e 20 3c 69 3e 69 6e 74 65 67 65 72 3c 2f an <i>integer</
02b0: 69 3e 2c 20 74 68 65 20 69 6e 64 65 78 20 6f 66 i>, the index of
02c0: 20 74 68 65 20 62 75 74 74 6f 6e 20 74 68 61 74 the button that
02d0: 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20 6f 6e is currently on
02e0: 2e 20 49 66 20 6e 6f 20 62 75 74 74 6f 6e 20 69 . If no button i
02f0: 73 20 73 65 6c 65 63 74 65 64 2c 20 74 68 65 20 s selected, the
0300: 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 2d 31 value will be -1
0310: 2e 0a 20 2a 0a 20 2a 20 40 6f 75 74 70 75 74 65 .. *. * @outpute
0320: 78 61 6d 70 6c 65 0a 20 2a 20 72 61 64 69 6f 62 xample. * radiob
0330: 75 74 74 6f 6e 2e 6f 6e 28 27 63 68 61 6e 67 65 utton.on('change
0340: 27 2c 66 75 6e 63 74 69 6f 6e 28 76 29 20 7b 0a ',function(v) {.
0350: 20 2a 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 * console.log
0360: 28 76 29 3b 0a 20 2a 20 7d 29 0a 20 2a 0a 20 2a (v);. * }). *. *
0370: 2f 0a 0a 65 78 70 6f 72 74 20 64 65 66 61 75 6c /..export defaul
0380: 74 20 63 6c 61 73 73 20 52 61 64 69 6f 42 75 74 t class RadioBut
0390: 74 6f 6e 20 65 78 74 65 6e 64 73 20 49 6e 74 65 ton extends Inte
03a0: 72 66 61 63 65 20 7b 0a 20 20 63 6f 6e 73 74 72 rface {. constr
03b0: 75 63 74 6f 72 28 29 20 7b 0a 20 20 20 20 6c 65 uctor() {. le
03c0: 74 20 6f 70 74 69 6f 6e 73 20 3d 20 5b 27 76 61 t options = ['va
03d0: 6c 75 65 27 5d 3b 0a 0a 20 20 20 20 6c 65 74 20 lue'];.. let
03e0: 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a 20 20 20 defaults = {.
03f0: 20 20 20 73 69 7a 65 3a 20 5b 31 32 30 2c 20 32 size: [120, 2
0400: 35 5d 2c 0a 20 20 20 20 20 20 6e 75 6d 62 65 72 5],. number
0410: 4f 66 42 75 74 74 6f 6e 73 3a 20 34 2c 0a 20 20 OfButtons: 4,.
0420: 20 20 20 20 61 63 74 69 76 65 3a 20 2d 31 0a 20 active: -1.
0430: 20 20 20 7d 3b 0a 0a 20 20 20 20 73 75 70 65 72 };.. super
0440: 28 61 72 67 75 6d 65 6e 74 73 2c 20 6f 70 74 69 (arguments, opti
0450: 6f 6e 73 2c 20 64 65 66 61 75 6c 74 73 29 3b 0a ons, defaults);.
0460: 0a 20 20 20 20 74 68 69 73 2e 62 75 74 74 6f 6e . this.button
0470: 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 74 68 69 73 s = [];. this
0480: 2e 5f 6e 75 6d 62 65 72 4f 66 42 75 74 74 6f 6e ._numberOfButton
0490: 73 20 3d 20 74 68 69 73 2e 73 65 74 74 69 6e 67 s = this.setting
04a0: 73 2e 6e 75 6d 62 65 72 4f 66 42 75 74 74 6f 6e s.numberOfButton
04b0: 73 3b 0a 20 20 20 20 74 68 69 73 2e 61 63 74 69 s;. this.acti
04c0: 76 65 20 3d 20 74 68 69 73 2e 73 65 74 74 69 6e ve = this.settin
04d0: 67 73 2e 61 63 74 69 76 65 3b 0a 0a 20 20 20 20 gs.active;..
04e0: 74 68 69 73 2e 69 6e 69 74 28 29 3b 0a 20 20 20 this.init();.
04f0: 20 74 68 69 73 2e 72 65 6e 64 65 72 28 29 3b 0a this.render();.
0500: 20 20 7d 0a 0a 20 20 62 75 69 6c 64 46 72 61 6d }.. buildFram
0510: 65 28 29 20 7b 0a 20 20 20 20 74 68 69 73 2e 65 e() {. this.e
0520: 6c 65 6d 65 6e 74 20 3d 20 64 6f 63 75 6d 65 6e lement = documen
0530: 74 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 t.createElement(
0540: 27 64 69 76 27 29 3b 0a 20 20 20 20 74 68 69 73 'div');. this
0550: 2e 70 61 72 65 6e 74 2e 61 70 70 65 6e 64 43 68 .parent.appendCh
0560: 69 6c 64 28 74 68 69 73 2e 65 6c 65 6d 65 6e 74 ild(this.element
0570: 29 3b 0a 20 20 7d 0a 0a 20 20 62 75 69 6c 64 49 );. }.. buildI
0580: 6e 74 65 72 66 61 63 65 28 29 20 7b 0a 20 20 20 nterface() {.
0590: 20 66 6f 72 20 28 6c 65 74 20 69 20 3d 20 30 3b for (let i = 0;
05a0: 20 69 20 3c 20 74 68 69 73 2e 5f 6e 75 6d 62 65 i < this._numbe
05b0: 72 4f 66 42 75 74 74 6f 6e 73 3b 20 69 2b 2b 29 rOfButtons; i++)
05c0: 20 7b 0a 20 20 20 20 20 20 6c 65 74 20 63 6f 6e {. let con
05d0: 74 61 69 6e 65 72 20 3d 20 64 6f 63 75 6d 65 6e tainer = documen
05e0: 74 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 t.createElement(
05f0: 27 73 70 61 6e 27 29 3b 0a 0a 20 20 20 20 20 20 'span');..
0600: 6c 65 74 20 62 75 74 74 6f 6e 20 3d 20 6e 65 77 let button = new
0610: 20 42 75 74 74 6f 6e 28 0a 20 20 20 20 20 20 20 Button(.
0620: 20 63 6f 6e 74 61 69 6e 65 72 2c 0a 20 20 20 20 container,.
0630: 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 20 20 {.
0640: 6d 6f 64 65 3a 20 27 74 6f 67 67 6c 65 27 2c 0a mode: 'toggle',.
0650: 20 20 20 20 20 20 20 20 20 20 63 6f 6d 70 6f 6e compon
0660: 65 6e 74 3a 20 74 72 75 65 0a 20 20 20 20 20 20 ent: true.
0670: 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 74 68 69 },. thi
0680: 73 2e 75 70 64 61 74 65 2e 62 69 6e 64 28 74 68 s.update.bind(th
0690: 69 73 2c 20 69 29 0a 20 20 20 20 20 20 29 3b 0a is, i). );.
06a0: 0a 20 20 20 20 20 20 74 68 69 73 2e 62 75 74 74 . this.butt
06b0: 6f 6e 73 2e 70 75 73 68 28 62 75 74 74 6f 6e 29 ons.push(button)
06c0: 3b 0a 20 20 20 20 20 20 74 68 69 73 2e 65 6c 65 ;. this.ele
06d0: 6d 65 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 ment.appendChild
06e0: 28 63 6f 6e 74 61 69 6e 65 72 29 3b 0a 20 20 20 (container);.
06f0: 20 7d 0a 20 20 7d 0a 0a 20 20 73 69 7a 65 49 6e }. }.. sizeIn
0700: 74 65 72 66 61 63 65 28 29 20 7b 0a 20 20 20 20 terface() {.
0710: 6c 65 74 20 6f 72 69 65 6e 74 61 74 69 6f 6e 3b let orientation;
0720: 0a 20 20 20 20 69 66 20 28 74 68 69 73 2e 77 69 . if (this.wi
0730: 64 74 68 20 3e 20 74 68 69 73 2e 68 65 69 67 68 dth > this.heigh
0740: 74 29 20 7b 0a 20 20 20 20 20 20 6f 72 69 65 6e t) {. orien
0750: 74 61 74 69 6f 6e 20 3d 20 27 68 6f 72 69 7a 6f tation = 'horizo
0760: 6e 74 61 6c 27 3b 0a 20 20 20 20 7d 20 65 6c 73 ntal';. } els
0770: 65 20 7b 0a 20 20 20 20 20 20 6f 72 69 65 6e 74 e {. orient
0780: 61 74 69 6f 6e 20 3d 20 27 76 65 72 74 69 63 61 ation = 'vertica
0790: 6c 27 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6c l';. }.. l
07a0: 65 74 20 62 75 74 74 6f 6e 57 69 64 74 68 20 3d et buttonWidth =
07b0: 0a 20 20 20 20 20 20 74 68 69 73 2e 77 69 64 74 . this.widt
07c0: 68 20 2f 20 28 6f 72 69 65 6e 74 61 74 69 6f 6e h / (orientation
07d0: 20 3d 3d 3d 20 27 76 65 72 74 69 63 61 6c 27 20 === 'vertical'
07e0: 3f 20 31 20 3a 20 74 68 69 73 2e 5f 6e 75 6d 62 ? 1 : this._numb
07f0: 65 72 4f 66 42 75 74 74 6f 6e 73 29 3b 0a 20 20 erOfButtons);.
0800: 20 20 6c 65 74 20 62 75 74 74 6f 6e 48 65 69 67 let buttonHeig
0810: 68 74 20 3d 0a 20 20 20 20 20 20 74 68 69 73 2e ht =. this.
0820: 68 65 69 67 68 74 20 2f 20 28 6f 72 69 65 6e 74 height / (orient
0830: 61 74 69 6f 6e 20 3d 3d 3d 20 27 76 65 72 74 69 ation === 'verti
0840: 63 61 6c 27 20 3f 20 74 68 69 73 2e 5f 6e 75 6d cal' ? this._num
0850: 62 65 72 4f 66 42 75 74 74 6f 6e 73 20 3a 20 31 berOfButtons : 1
0860: 29 3b 0a 0a 20 20 20 20 66 6f 72 20 28 6c 65 74 );.. for (let
0870: 20 69 20 3d 20 30 3b 20 69 20 3c 20 74 68 69 73 i = 0; i < this
0880: 2e 5f 6e 75 6d 62 65 72 4f 66 42 75 74 74 6f 6e ._numberOfButton
0890: 73 3b 20 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 s; i++) {.
08a0: 74 68 69 73 2e 62 75 74 74 6f 6e 73 5b 69 5d 2e this.buttons[i].
08b0: 72 65 73 69 7a 65 28 62 75 74 74 6f 6e 57 69 64 resize(buttonWid
08c0: 74 68 2c 20 62 75 74 74 6f 6e 48 65 69 67 68 74 th, buttonHeight
08d0: 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 );. }. }..
08e0: 63 6f 6c 6f 72 49 6e 74 65 72 66 61 63 65 28 29 colorInterface()
08f0: 20 7b 0a 20 20 20 20 66 6f 72 20 28 6c 65 74 20 {. for (let
0900: 69 20 3d 20 30 3b 20 69 20 3c 20 74 68 69 73 2e i = 0; i < this.
0910: 5f 6e 75 6d 62 65 72 4f 66 42 75 74 74 6f 6e 73 _numberOfButtons
0920: 3b 20 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 74 ; i++) {. t
0930: 68 69 73 2e 62 75 74 74 6f 6e 73 5b 69 5d 2e 63 his.buttons[i].c
0940: 6f 6c 6f 72 73 20 3d 20 74 68 69 73 2e 63 6f 6c olors = this.col
0950: 6f 72 73 3b 0a 20 20 20 20 20 20 74 68 69 73 2e ors;. this.
0960: 62 75 74 74 6f 6e 73 5b 69 5d 2e 72 65 6e 64 65 buttons[i].rende
0970: 72 28 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a r();. }. }..
0980: 20 20 75 70 64 61 74 65 28 69 6e 64 65 78 29 20 update(index)
0990: 7b 0a 20 20 20 20 69 66 20 28 74 68 69 73 2e 62 {. if (this.b
09a0: 75 74 74 6f 6e 73 5b 69 6e 64 65 78 5d 2e 73 74 uttons[index].st
09b0: 61 74 65 29 20 7b 0a 20 20 20 20 20 20 74 68 69 ate) {. thi
09c0: 73 2e 73 65 6c 65 63 74 28 69 6e 64 65 78 29 3b s.select(index);
09d0: 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 . } else {.
09e0: 20 20 20 20 74 68 69 73 2e 64 65 73 65 6c 65 63 this.deselec
09f0: 74 28 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 2f t();. }. /
0a00: 2f 20 20 74 68 69 73 2e 72 65 6e 64 65 72 28 29 / this.render()
0a10: 3b 0a 20 20 7d 0a 0a 20 20 72 65 6e 64 65 72 28 ;. }.. render(
0a20: 29 20 7b 0a 20 20 20 20 66 6f 72 20 28 6c 65 74 ) {. for (let
0a30: 20 69 20 3d 20 30 3b 20 69 20 3c 20 74 68 69 73 i = 0; i < this
0a40: 2e 62 75 74 74 6f 6e 73 2e 6c 65 6e 67 74 68 3b .buttons.length;
0a50: 20 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 69 66 i++) {. if
0a60: 20 28 69 20 3d 3d 3d 20 74 68 69 73 2e 61 63 74 (i === this.act
0a70: 69 76 65 29 20 7b 0a 20 20 20 20 20 20 20 20 74 ive) {. t
0a80: 68 69 73 2e 62 75 74 74 6f 6e 73 5b 69 5d 2e 74 his.buttons[i].t
0a90: 75 72 6e 4f 6e 28 66 61 6c 73 65 29 3b 0a 20 20 urnOn(false);.
0aa0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 } else {.
0ab0: 20 20 20 20 20 74 68 69 73 2e 62 75 74 74 6f 6e this.button
0ac0: 73 5b 69 5d 2e 74 75 72 6e 4f 66 66 28 66 61 6c s[i].turnOff(fal
0ad0: 73 65 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 se);. }.
0ae0: 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 }. }.. /**.
0af0: 53 65 6c 65 63 74 20 6f 6e 65 20 62 75 74 74 6f Select one butto
0b00: 6e 20 61 6e 64 20 64 65 73 65 6c 65 63 74 20 61 n and deselect a
0b10: 6c 6c 20 6f 74 68 65 72 20 62 75 74 74 6f 6e 73 ll other buttons
0b20: 2e 0a 20 20 40 70 61 72 61 6d 20 69 6e 64 65 78 .. @param index
0b30: 20 7b 6e 75 6d 62 65 72 7d 20 54 68 65 20 69 6e {number} The in
0b40: 64 65 78 20 6f 66 20 74 68 65 20 62 75 74 74 6f dex of the butto
0b50: 6e 20 74 6f 20 73 65 6c 65 63 74 0a 20 20 2a 2f n to select. */
0b60: 0a 20 20 73 65 6c 65 63 74 28 69 6e 64 65 78 29 . select(index)
0b70: 20 7b 0a 20 20 20 20 69 66 20 28 69 6e 64 65 78 {. if (index
0b80: 20 3e 3d 20 30 20 26 26 20 69 6e 64 65 78 20 3c >= 0 && index <
0b90: 20 74 68 69 73 2e 62 75 74 74 6f 6e 73 2e 6c 65 this.buttons.le
0ba0: 6e 67 74 68 29 20 7b 0a 20 20 20 20 20 20 74 68 ngth) {. th
0bb0: 69 73 2e 61 63 74 69 76 65 20 3d 20 69 6e 64 65 is.active = inde
0bc0: 78 3b 0a 20 20 20 20 20 20 74 68 69 73 2e 65 6d x;. this.em
0bd0: 69 74 28 27 63 68 61 6e 67 65 27 2c 20 74 68 69 it('change', thi
0be0: 73 2e 61 63 74 69 76 65 29 3b 0a 20 20 20 20 20 s.active);.
0bf0: 20 74 68 69 73 2e 72 65 6e 64 65 72 28 29 3b 0a this.render();.
0c00: 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 2f 2a 2a }. }.. /**
0c10: 0a 20 20 44 65 73 65 6c 65 63 74 20 61 6c 6c 20 . Deselect all
0c20: 62 75 74 74 6f 6e 73 2e 0a 20 20 2a 2f 0a 20 20 buttons.. */.
0c30: 64 65 73 65 6c 65 63 74 28 29 20 7b 0a 20 20 20 deselect() {.
0c40: 20 74 68 69 73 2e 61 63 74 69 76 65 20 3d 20 2d this.active = -
0c50: 31 3b 0a 20 20 20 20 74 68 69 73 2e 65 6d 69 74 1;. this.emit
0c60: 28 27 63 68 61 6e 67 65 27 2c 20 74 68 69 73 2e ('change', this.
0c70: 61 63 74 69 76 65 29 3b 0a 20 20 20 20 74 68 69 active);. thi
0c80: 73 2e 72 65 6e 64 65 72 28 29 3b 0a 20 20 7d 0a s.render();. }.
0c90: 0a 20 20 67 65 74 20 6e 75 6d 62 65 72 4f 66 42 . get numberOfB
0ca0: 75 74 74 6f 6e 73 28 29 20 7b 0a 20 20 20 20 72 uttons() {. r
0cb0: 65 74 75 72 6e 20 74 68 69 73 2e 5f 6e 75 6d 62 eturn this._numb
0cc0: 65 72 4f 66 42 75 74 74 6f 6e 73 3b 0a 20 20 7d erOfButtons;. }
0cd0: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 55 70 64 .. /**. * Upd
0ce0: 61 74 65 20 68 6f 77 20 6d 61 6e 79 20 62 75 74 ate how many but
0cf0: 74 6f 6e 73 20 61 72 65 20 69 6e 20 74 68 65 20 tons are in the
0d00: 69 6e 74 65 72 66 61 63 65 0a 20 20 20 2a 20 40 interface. * @
0d10: 70 61 72 61 6d 20 20 7b 6e 75 6d 62 65 72 7d 20 param {number}
0d20: 62 75 74 74 6f 6e 73 20 48 6f 77 20 6d 61 6e 79 buttons How many
0d30: 20 62 75 74 74 6f 6e 73 20 61 72 65 20 69 6e 20 buttons are in
0d40: 74 68 65 20 69 6e 74 65 72 66 61 63 65 0a 20 20 the interface.
0d50: 20 2a 2f 0a 20 20 73 65 74 20 6e 75 6d 62 65 72 */. set number
0d60: 4f 66 42 75 74 74 6f 6e 73 28 62 75 74 74 6f 6e OfButtons(button
0d70: 73 29 20 7b 0a 20 20 20 20 74 68 69 73 2e 5f 6e s) {. this._n
0d80: 75 6d 62 65 72 4f 66 42 75 74 74 6f 6e 73 20 3d umberOfButtons =
0d90: 20 62 75 74 74 6f 6e 73 3b 0a 20 20 20 20 66 6f buttons;. fo
0da0: 72 20 28 6c 65 74 20 69 20 3d 20 30 3b 20 69 20 r (let i = 0; i
0db0: 3c 20 74 68 69 73 2e 62 75 74 74 6f 6e 73 2e 6c < this.buttons.l
0dc0: 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 20 20 ength; i++) {.
0dd0: 20 20 20 20 74 68 69 73 2e 62 75 74 74 6f 6e 73 this.buttons
0de0: 5b 69 5d 2e 64 65 73 74 72 6f 79 28 29 3b 0a 20 [i].destroy();.
0df0: 20 20 20 7d 0a 20 20 20 20 74 68 69 73 2e 62 75 }. this.bu
0e00: 74 74 6f 6e 73 20 3d 20 5b 5d 3b 0a 20 20 20 20 ttons = [];.
0e10: 2f 2f 20 20 66 6f 72 20 28 6c 65 74 20 69 3d 30 // for (let i=0
0e20: 3b 69 3c 74 68 69 73 2e 62 75 74 74 6f 6e 73 2e ;i<this.buttons.
0e30: 6c 65 6e 67 74 68 3b 69 2b 2b 29 20 7b 0a 20 20 length;i++) {.
0e40: 20 20 2f 2f 20 20 20 20 74 68 69 73 2e 62 75 74 // this.but
0e50: 74 6f 6e 73 5b 69 5d 2e 64 65 73 74 72 6f 79 28 tons[i].destroy(
0e60: 29 3b 0a 20 20 20 20 2f 2f 20 20 7d 0a 20 20 20 );. // }.
0e70: 20 74 68 69 73 2e 65 6d 70 74 79 28 29 3b 0a 20 this.empty();.
0e80: 20 20 20 74 68 69 73 2e 62 75 69 6c 64 49 6e 74 this.buildInt
0e90: 65 72 66 61 63 65 28 29 3b 0a 20 20 7d 0a 7d 0a erface();. }.}.