{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/lab/arrays.js","webpack:///./src/lab/common/validator.js","webpack:///./src/lab/common/alert.js","webpack:///./node_modules/iframe-phone/lib/parent-endpoint.js","webpack:///./node_modules/iframe-phone/lib/iframe-endpoint.js","webpack:///./src/lab/models/md2d/models/engine/constants/units.js","webpack:///(webpack)/buildin/module.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./node_modules/node-libs-browser/node_modules/util/util.js","webpack:///./node_modules/fastclick/lib/fastclick.js","webpack:///./node_modules/markdown/lib/index.js","webpack:///./src/lab/common/layout/semantic-layout.js","webpack:///./src/lab/models/md2d/models/engine/math/distributions.js","webpack:///./node_modules/canvg/dist/browser/canvg.min.js","webpack:///./src/lab/common/jquery-svg-class.js","webpack:///./vendor/d3/d3.js","webpack:///./node_modules/jquery-ui-dist/jquery-ui.js","webpack:///./node_modules/jquery-ui-touch-punch/jquery.ui.touch-punch.js","webpack:///./node_modules/jquery-contextmenu/src/jquery.contextMenu.js","webpack:///./node_modules/selectboxit/src/javascripts/jquery.selectBoxIt.js","webpack:///./node_modules/seedrandom/lib/alea.js","webpack:///./node_modules/seedrandom/lib/xor128.js","webpack:///./node_modules/seedrandom/lib/xorwow.js","webpack:///./node_modules/seedrandom/lib/xorshift7.js","webpack:///./node_modules/seedrandom/lib/xor4096.js","webpack:///./src/lab/models/md2d/models/metadata.js","webpack:///./node_modules/seedrandom/lib/tychei.js","webpack:///./node_modules/seedrandom/seedrandom.js","webpack:///./node_modules/iframe-phone/lib/iframe-phone-rpc-endpoint.js","webpack:///./node_modules/markdown/lib/markdown.js","webpack:///./node_modules/rgbcolor/index.js","webpack:///./node_modules/stackblur-canvas/src/stackblur.js","webpack:///./src/lab/common/layout/semantic-layout-config.js","webpack:///./vendor/lab-grapher/dist/lab-grapher.js","webpack:///./node_modules/backbone/backbone.js","webpack:///./node_modules/mustache/mustache.js","webpack:///./src/lab/lab.version.js","webpack:///./node_modules/iframe-phone/main.js","webpack:///./node_modules/process/browser.js","webpack:///./src/lab/models/md2d/models/engine/constants/index.js","webpack:///./src/lab/common/jquery-plugins.js","webpack:///./src/lab/grapher/bar-graph/bar-graph-model.js","webpack:///./src/lab/grapher/bar-graph/bar-graph-view.js","webpack:///./src/lab/models/energy2d/models/constants.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/lab/lab.config.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectSpread.js","webpack:///./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack:///./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/i18next/dist/esm/i18next.js","webpack:///./src/lab/common/controllers/interactive-metadata.js","webpack:///./src/lab/common/resources-url.js","webpack:///./src/lab/common/controllers/language-select.js","webpack:///./src/lab/common/listening-pool.js","webpack:///./src/lab/common/dispatch-support.js","webpack:///./src/lab/common/controllers/data-set.js","webpack:///./src/lab/common/controllers/help-icon-support.js","webpack:///./src/lab/common/controllers/bar-graph-controller.js","webpack:///./src/lab/common/controllers/graph-controller.js","webpack:///./src/lab/import-export/codap-interface.js","webpack:///./src/lab/common/controllers/basic-dialog.js","webpack:///./src/lab/common/controllers/export-controller.js","webpack:///./src/lab/common/controllers/log-controller.js","webpack:///./src/lab/common/controllers/scripting-api.js","webpack:///./src/lab/common/inherit.js","webpack:///./src/lab/common/views/view-state.js","webpack:///./src/lab/common/controllers/disablable.js","webpack:///./src/lab/common/controllers/interactive-component.js","webpack:///./src/lab/common/controllers/button-controller.js","webpack:///./src/lab/common/controllers/checkbox-controller.js","webpack:///./src/lab/common/markdown-to-html.js","webpack:///./src/lab/common/controllers/text-controller.js","webpack:///./src/lab/common/controllers/image-controller.js","webpack:///./src/lab/common/views/select-box-view.js","webpack:///./src/lab/common/models/engines/clone-restore-wrapper.js","webpack:///./src/lab/common/controllers/pulldown-controller.js","webpack:///./src/lab/models/md2d/models/engine/utils.js","webpack:///./src/lab/common/array-types.js","webpack:///./src/lab/models/md2d/models/engine/plugins/quantum-dynamics.js","webpack:///./src/lab/common/controllers/spectrometer-controller.js","webpack:///./src/lab/common/layout/detect-font-change.js","webpack:///./src/lab/common/views/numeric-output-view.js","webpack:///./src/lab/common/views/table-view.js","webpack:///./src/lab/common/controllers/table-controller.js","webpack:///./src/lab/common/benchmark/browser-detect.js","webpack:///./src/lab/common/benchmark/benchmark.js","webpack:///./src/lab/common/url-helper.js","webpack:///./src/lab/common/controllers/parent-message-api.js","webpack:///./src/lab/common/controllers/playback-controller.js","webpack:///./src/lab/common/controllers/thermometer-controller.js","webpack:///./src/lab/common/controllers/div-controller.js","webpack:///./src/lab/common/controllers/help-system.js","webpack:///./src/lab/common/views/tooltip.js","webpack:///./src/lab/common/cookies.js","webpack:///./src/lab/common/controllers/setup-banner.js","webpack:///./src/lab/common/controllers/about-dialog.js","webpack:///./src/lab/common/controllers/copyright.js","webpack:///./src/lab/common/controllers/share-dialog.tpl","webpack:///./src/lab/common/controllers/share-dialog.js","webpack:///./src/lab/common/controllers/credits-dialog.js","webpack:///./src/lab/common/controllers/credits-dialog.tpl","webpack:///./src/lab/common/performance.js","webpack:///./src/lab/common/layout/templates.js","webpack:///./src/lab/common/controllers/model-controller.js","webpack:///./src/lab/common/serialize.js","webpack:///./src/lab/common/property-support.js","webpack:///./src/lab/common/property-description.js","webpack:///./src/lab/common/parameter-support.js","webpack:///./src/lab/common/filters/running-average-filter.js","webpack:///./src/lab/common/filters/simple-period-filter.js","webpack:///./src/lab/common/output-support.js","webpack:///./src/lab/common/playback-support.js","webpack:///./src/lab/common/lab-modeler-mixin.js","webpack:///./src/lab/common/define-builtin-properties.js","webpack:///./src/lab/common/models/tick-history.js","webpack:///./src/lab/models/md2d/models/aminoacids-props.js","webpack:///./src/lab/models/md2d/models/aminoacids-helper.js","webpack:///./src/lab/models/md2d/models/engine/math/index.js","webpack:///./src/lab/models/md2d/models/engine/math/minimizer.js","webpack:///./src/lab/models/md2d/models/engine/potentials/coulomb.js","webpack:///./src/lab/models/md2d/models/engine/potentials/lennard-jones.js","webpack:///./src/lab/models/md2d/models/engine/potentials/index.js","webpack:///./src/lab/models/md2d/models/engine/pairwise-lj-properties.js","webpack:///./src/lab/models/md2d/models/engine/cell-list.js","webpack:///./src/lab/models/md2d/models/engine/neighbor-list.js","webpack:///./src/lab/common/models/plugin-controller.js","webpack:///./src/lab/models/md2d/models/engine/md2d.js","webpack:///./src/lab/models/md2d/models/unit-definitions/index.js","webpack:///./src/lab/models/md2d/models/unit-definitions/md2d.js","webpack:///./src/lab/models/md2d/models/unit-definitions/mks.js","webpack:///./src/lab/models/md2d/models/units-translation.js","webpack:///./src/lab/models/md2d/models/engine/genetic-engine.js","webpack:///./src/lab/models/md2d/models/performance-optimizer.js","webpack:///./src/lab/common/models/property-transition.js","webpack:///./src/lab/models/md2d/models/atom-transition.js","webpack:///./src/lab/models/md2d/models/engine/plugins/chemical-reactions.js","webpack:///./src/lab/models/md2d/models/modeler.js","webpack:///./src/lab/common/views/tab-index.js","webpack:///./src/lab/common/feature-tests.js","webpack:///./src/lab/common/views/hit-testing-helper.js","webpack:///./src/lab/common/views/svg-container.js","webpack:///./src/lab/common/views/color.js","webpack:///./src/lab/models/md2d/views/aminoacid-context-menu.js","webpack:///./src/lab/models/md2d/views/atoms-interactions.js","webpack:///./src/lab/models/md2d/views/atoms-renderer.js","webpack:///./src/lab/models/md2d/views/bonds-renderer.js","webpack:///./src/lab/models/md2d/views/vectors-renderer.js","webpack:///./src/lab/models/md2d/views/field-renderer.js","webpack:///./src/lab/models/md2d/views/vdw-lines-renderer.js","webpack:///./src/lab/models/md2d/views/nucleotide-paths.js","webpack:///./src/lab/models/md2d/views/nucleotides.js","webpack:///./src/lab/models/md2d/views/genetic-elements-renderer.js","webpack:///./src/lab/common/views/state-manager.js","webpack:///./src/lab/models/md2d/views/genetic-anim-states.js","webpack:///./src/lab/models/md2d/views/mutations-context-menu.js","webpack:///./src/lab/models/md2d/views/genetic-renderer.js","webpack:///./src/lab/common/layout/wrap-svg-text.js","webpack:///./src/lab/common/views/gradients.js","webpack:///./src/lab/models/md2d/views/images-renderer.js","webpack:///./src/lab/models/md2d/views/renderer.js","webpack:///./src/lab/models/md2d/views/view.js","webpack:///./src/lab/models/md2d/views/dna-edit-dialog.js","webpack:///./src/lab/models/md2d/controllers/scripting-api.js","webpack:///./src/lab/models/md2d/benchmarks/benchmarks.js","webpack:///./src/lab/models/md2d/controllers/controller.js","webpack:///./src/lab/models/signal-generator/metadata.js","webpack:///./src/lab/models/signal-generator/modeler.js","webpack:///./src/lab/common/views/null-model-view.js","webpack:///./src/lab/models/signal-generator/controller.js","webpack:///./src/lab/models/iframe/metadata.js","webpack:///./src/lab/models/iframe/modeler.js","webpack:///./src/lab/models/iframe/iframe-container.js","webpack:///./src/lab/models/iframe/scripting-api.js","webpack:///./src/lab/models/iframe/controller.js","webpack:///./src/lab/models/sensor/metadata.js","webpack:///./src/lab/models/sensor-common/i18n-sensor-definitions.js","webpack:///./src/lab/models/sensor-common/notifier.js","webpack:///./src/lab/models/sensor/modeler.js","webpack:///./src/lab/models/sensor/view.js","webpack:///./src/lab/models/sensor/scripting-api.js","webpack:///./src/lab/models/sensor/controller.js","webpack:///./src/lab/models/dual-sensor/metadata.js","webpack:///./src/lab/models/dual-sensor/modeler.js","webpack:///./src/lab/models/dual-sensor/view.js","webpack:///./src/lab/models/dual-sensor/scripting-api.js","webpack:///./src/lab/models/dual-sensor/controller.js","webpack:///./src/lab/models/dual-sensor-connector/metadata.js","webpack:///./src/lab/common/state-machine.js","webpack:///./src/lab/models/dual-sensor-connector/units-definition.js","webpack:///./src/lab/models/sensor-common/i18n-sensor-definitions-connector.js","webpack:///./src/lab/models/dual-sensor-connector/modeler.js","webpack:///./src/lab/models/dual-sensor-connector/view.js","webpack:///./src/lab/models/dual-sensor-connector/scripting-api.js","webpack:///./src/lab/models/dual-sensor-connector/controller.js","webpack:///./src/lab/models/sensor-connector/metadata.js","webpack:///./src/lab/models/sensor-connector/units-definition.js","webpack:///./src/lab/models/sensor-connector/modeler.js","webpack:///./src/lab/models/sensor-connector/view.js","webpack:///./src/lab/models/sensor-connector/scripting-api.js","webpack:///./src/lab/models/sensor-connector/controller.js","webpack:///./src/lab/models/labquest2/metadata.js","webpack:///./src/lab/models/labquest2/units-definition.js","webpack:///./src/lab/models/labquest2/modeler.js","webpack:///./src/lab/models/labquest2/view.js","webpack:///./src/lab/models/labquest2/scripting-api.js","webpack:///./src/lab/models/labquest2/controller.js","webpack:///./src/lab/models/energy2d/gpu/context.js","webpack:///./src/lab/models/energy2d/gpu/shader.js","webpack:///./src/lab/models/energy2d/metadata.js","webpack:///./src/lab/models/energy2d/models/physics-solvers/heat-solver.js","webpack:///./src/lab/models/energy2d/gpu/texture.js","webpack:///./src/lab/models/energy2d/gpu/mesh.js","webpack:///./src/lab/models/energy2d/gpu/gpgpu.js","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/basic.vs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/heat-solver-gpu.js","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/solver.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/force-flux-t.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/t-to-t0.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/maccormack-step1.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/maccormack-step2.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers/fluid-solver.js","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/basic.vs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-gpu.js","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/maccormack-step1.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/maccormack-step2.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/apply-uv-boundary.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/apply-u0v0-boundary.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/set-obstacle-boundary.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/set-obstacle-velocity.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/uv-to-u0v0.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/conserve-step1.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/conserve-step2.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/conserve-step3.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/diffuse.fs.glsl","webpack:///./src/lab/models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/apply-buoyancy.fs.glsl","webpack:///./src/lab/models/energy2d/models/helpers.js","webpack:///./src/lab/models/energy2d/models/shape.js","webpack:///./src/lab/models/energy2d/models/photon.js","webpack:///./src/lab/models/energy2d/models/physics-solvers/ray-solver.js","webpack:///./src/lab/models/energy2d/models/part.js","webpack:///./src/lab/models/energy2d/models/core-model.js","webpack:///./src/lab/models/energy2d/modeler.js","webpack:///./src/lab/models/energy2d/views/helpers.js","webpack:///./src/lab/models/energy2d/views/color-palette.js","webpack:///./src/lab/models/energy2d/views/heatmap.js","webpack:///./src/lab/models/energy2d/views/heatmap-webgl.js","webpack:///./src/lab/models/energy2d/views/heatmap-webgl-glsl/basic.vs.glsl","webpack:///./src/lab/models/energy2d/views/heatmap-webgl-glsl/temp-renderer.fs.glsl","webpack:///./src/lab/models/energy2d/views/webgl-status.js","webpack:///./src/lab/models/energy2d/views/vectormap.js","webpack:///./src/lab/models/energy2d/views/vectormap-webgl.js","webpack:///./src/lab/models/energy2d/views/vectormap-webgl-glsl/vectormap.vs.glsl","webpack:///./src/lab/models/energy2d/views/vectormap-webgl-glsl/vectormap.fs.glsl","webpack:///./src/lab/models/energy2d/views/photons.js","webpack:///./src/lab/models/energy2d/views/parts.js","webpack:///./src/lab/models/energy2d/views/sensors.js","webpack:///./src/lab/models/energy2d/views/renderer.js","webpack:///./src/lab/models/energy2d/views/view.js","webpack:///./src/lab/models/energy2d/benchmarks/benchmarks.js","webpack:///./src/lab/models/energy2d/controllers/scripting-api.js","webpack:///./src/lab/models/energy2d/controllers/controller.js","webpack:///./src/lab/common/models/dataset.js","webpack:///./src/lab/common/controllers/experiment-controller.js","webpack:///./src/lab/common/controllers/interactives-controller.js","webpack:///./src/lab/common/controllers/radio-controller.js","webpack:///./src/lab/common/controllers/thermometer.tpl","webpack:///./src/lab/common/controllers/slider-controller.js","webpack:///./src/lab/common/controllers/color-indicator-controller.js","webpack:///./src/lab/common/controllers/joystick-controller.js","webpack:///./src/lab/common/controllers/numeric-output-controller.js","webpack:///./src/lab/import-export/netlogo-importer.js","webpack:///./src/lab/index.js","webpack:///./src/lab/common/i18n.js","webpack:///./src/lab/models/md2d/models/solvent.js","webpack:///./node_modules/underscore/underscore.js","webpack:///./src/lab/models/md2d/models/engine/math/utils.js","webpack:///./node_modules/screenfull/dist/screenfull.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./src/lab/common/console.js","webpack:///./node_modules/pixi.js/bin/pixi.js","webpack:///./node_modules/seedrandom/index.js","webpack:///./vendor/sensor-connector-interface/dist/sensor-connector-interface.js","webpack:///./vendor/sensor-labquest-2-interface/dist/sensor-labquest-2-interface.js","webpack:///./node_modules/iframe-phone/lib/structured-clone.js","webpack:///./node_modules/node-libs-browser/node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/node-libs-browser/node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///./src/lab/grapher/index.js","webpack:///./vendor/lab-sensor-applet-interface-dist/sensor-applet-interface.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","arrays","webgl","window","WebGLRenderingContext","typed","Float64Array","e","size","fill","array_type","a","undefined","Array","Float32Array","Int32Array","Int16Array","Int8Array","Uint32Array","Uint16Array","Uint8Array","Uint8ClampedArray","Error","array","length","constructor_function","source","buffer","__proto__","constructor","toString","copy","dest","num","len","clone","slice","between","b","x","Math","max","min","apply","maxTypedArray","test","Number","MIN_VALUE","minTypedArray","MAX_VALUE","maxAnyArray","TypeError","minAnyArray","average","acc","extend","newLength","extendedArray","Constructor","set","subarray","remove","idx","rest","push","isArray","ValidationError","prop","message","this","isObject","checkConflicts","input","propName","conflictingProps","validateSingleProperty","propertyMetadata","ignoreImmutable","readOnly","immutable","validate","metadata","propMetadata","result","arguments","conflictsWith","propertyIsWritable","propertyChangeInvalidates","validateCompleteness","opts","defVal","includeOnlySerializedProperties","serialize","defaultValue","required","$","alertFunc","alert","console","error","msg","structuredClone","targetWindowOrIframeEl","targetOrigin","afterConnectedCallback","targetWindowIsIframeElement","postMessageQueue","connected","handlers","post","type","content","tWindow","getTargetWindow","supported","postMessage","JSON","stringify","addListener","messageName","func","contentWindow","receiveMessage","messageData","origin","data","parse","log","HTMLIFrameElement","Function","src","match","location","href","shift","addEventListener","removeListener","disconnect","removeEventListener","IFrameEndpoint","helloInterval","listeners","isInitialized","postToParent","parent","postHello","messageListener","stopPostingHello","clearInterval","initialize","setInterval","setTimeout","startPostingHello","getListenerNames","keys","fn","removeAllListeners","messsageListener","instance","ratio","types","unit","FEMTOSECOND","SECOND","NANOMETER","ANGSTROM","METER","DALTON","GRAM","KILOGRAM","MW_ENERGY_UNIT","JOULE","KILOGRAMS_PER_DALTON","EV","EV_PER_KELVIN","JOULES_PER_KELVIN","ELEMENTARY_CHARGE","COULOMB","INVERSE_MOLE","FARADS_PER_METER","METERS_PER_FARAD","MW_FORCE_UNIT","NEWTON","EV_PER_NM","MW_VELOCITY_UNIT","METERS_PER_SECOND","from","to","checkCompatibility","fromUnit","toUnit","per","as","convert","val","fromTo","webpackPolyfill","deprecate","paths","children","g","getOwnPropertyDescriptors","obj","descriptors","getOwnPropertyDescriptor","formatRegExp","format","f","isString","objects","inspect","join","args","str","String","replace","_","isNull","process","noDeprecation","warned","throwDeprecation","traceDeprecation","trace","debugEnviron","debugs","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","style","styles","recurseTimes","isFunction","ret","primitive","simple","isNumber","formatPrimitive","visibleKeys","hash","forEach","arrayToHash","getOwnPropertyNames","isError","indexOf","formatError","isRegExp","RegExp","isDate","Date","output","base","braces","toUTCString","formatProperty","formatArray","map","pop","reduce","prev","cur","numLinesEst","reduceToSingleString","desc","split","line","substr","ar","arg","re","objectToString","pad","debuglog","env","NODE_DEBUG","toUpperCase","pid","isNullOrUndefined","isSymbol","isPrimitive","isBuffer","months","timestamp","time","getHours","getMinutes","getSeconds","getDate","getMonth","inherits","add","kCustomPromisifiedSymbol","callbackifyOnRejected","reason","cb","newReason","promisify","original","writable","configurable","promiseResolve","promiseReject","promise","Promise","resolve","reject","err","setPrototypeOf","getPrototypeOf","defineProperties","custom","callbackify","callbackified","maybeCb","self","then","nextTick","rej","FastClick","layer","options","oldOnClick","trackingClick","trackingClickStart","targetElement","touchStartX","touchStartY","lastTouchIdentifier","touchBoundary","tapDelay","tapTimeout","notNeeded","methods","deviceIsAndroid","onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","Event","stopImmediatePropagation","callback","capture","rmv","Node","hijacked","adv","event","propagationStopped","onclick","method","context","deviceIsWindowsPhone","navigator","userAgent","deviceIsIOS","deviceIsIOS4","deviceIsIOSWithBadTarget","deviceIsBlackBerry10","needsClick","target","nodeName","toLowerCase","disabled","className","needsFocus","sendClick","clickEvent","touch","document","activeElement","blur","changedTouches","createEvent","initMouseEvent","determineEventType","screenX","screenY","clientX","clientY","forwardedTouchEvent","dispatchEvent","tagName","focus","setSelectionRange","updateScrollParent","scrollParent","parentElement","fastClickScrollParent","contains","scrollHeight","offsetHeight","fastClickLastScrollTop","scrollTop","getTargetElementFromEventTarget","eventTarget","nodeType","TEXT_NODE","parentNode","selection","targetTouches","getSelection","rangeCount","isCollapsed","identifier","preventDefault","timeStamp","pageX","pageY","lastClickTime","touchHasMoved","boundary","abs","findControl","labelElement","control","htmlFor","getElementById","querySelector","forElement","targetTagName","cancelNextClick","elementFromPoint","pageXOffset","pageYOffset","top","cancelable","stopPropagation","permitted","detail","destroy","metaViewport","chromeVersion","blackberryVersion","ontouchstart","exec","documentElement","scrollWidth","outerWidth","msTouchAction","touchAction","attach","markdown","toHTML","SemanticLayout","layout","$mainContainer","$containersParent","containerSpecList","containersContent","componentByID","modelController","aspectRatio","fontScale","padding","scaledPadding","containerSpecByID","$containerByID","$innerContainerByID","$modelContainer","availableWidth","availableHeight","fontSizeChanged","modelWidth","modelTop","modelLeft","paddingTop","paddingLeft","paddingBottom","reset","layoutConfig","minModelWidth","getDimensionOfContainer","$container","dim","position","outerHeight","left","setFontSize","containerScale","font","canonicalWidth","canonicalHeight","width","height","canonicalFontSize","minFontSize","css","createContainers","container","id","ii","appendTo","placeComponentsInContainers","containerID","divContents","items","$row","$containerComponents","lastContainer","comps","errMsg","j","jj","k","kk","append","getViewContainer","bottom","last","addClass","positionContainers","right","getHeightForWidth","parseDimension","aboveOthers","belowOthers","resizeModelContainer","maxX","Infinity","maxY","minX","minY","isNaN","vars","getDimension","eval","containers","components","setupModel","newModelController","model","isReady","layoutInteractive","redraws","iterationsLimit","resize","timeEnd","next","normal","mean","sd","theta","u1","u2","random","PI","sqrt","sin","cos","default","u","createElement","DOMParser","A","FRAMERATE","MAX_VIRTUAL_PIXELS","rootEmSize","emSize","init","UniqueId","Definitions","Styles","StylesSpecificity","Animations","Images","ViewPort","viewPorts","Clear","SetCurrent","RemoveCurrent","Current","ComputeSize","pow","ImagesLoaded","loaded","trim","compressSpaces","ajax","XMLHttpRequest","ActiveXObject","open","send","responseText","parseXml","Windows","Data","Xml","Dom","XmlDocument","XmlLoadSettings","prohibitDtd","loadXml","async","loadXML","xmldom","parseFromString","Property","getValue","hasValue","numValue","parseFloat","valueOrDefault","numValueOrDefault","addOpacity","ok","getDefinition","isUrlDefinition","getFillStyleDefinition","createGradient","createPattern","getHrefAttribute","attribute","getDPI","getREM","getEM","getUnits","isPixels","toPixels","toMilliseconds","toRadians","baseline","middle","central","ideographic","alphabetic","hanging","mathematical","toTextBaseline","Font","Variants","Weights","CreateFont","Parse","fontFamily","fontSize","fontStyle","fontWeight","fontVariant","ToNumberArray","Point","y","angleTo","atan2","applyTransform","CreatePoint","CreatePath","BoundingBox","x1","NaN","y1","x2","y2","addPoint","addX","addY","addBoundingBox","addQuadraticCurve","h","addBezierCurve","v","isPointInBox","Transform","Type","translate","unapply","applyToPoint","rotate","angle","cx","cy","scale","matrix","transform","SkewBase","skewX","tan","skewY","transforms","AspectRatio","Element","EmptyProperty","ElementBase","attributes","stylesSpecificity","render","save","setContext","renderChildren","clearContext","restore","addChild","CreateElement","addStylesFromStyleDefinition","childNodes","captureTextNodes","text","textContent","tspan","RenderedElementBase","calculateOpacity","fillStyle","strokeStyle","lineWidth","lineCap","lineJoin","miterLimit","paintOrder","setLineDash","webkitLineDash","mozDash","lineDashOffset","webkitLineDashOffset","mozDashOffset","globalAlpha","PathElementBase","path","beginPath","Mouse","checkPath","stroke","getMarkers","getBoundingBox","svg","baseClearContext","baseSetContext","canvas","getComputedStyle","getPropertyValue","root","moveTo","lineTo","closePath","clip","rect","bezierCurveTo","circle","arc","ellipse","getPoints","polyline","points","polygon","basePath","PathParser","tokens","command","previousCommand","start","current","angles","isEnd","isCommandOrEnd","isRelativeCommand","getToken","getScalar","nextCommand","getPoint","makeAbsolute","getAsControlPoint","getAsCurrentPoint","getReflectedControlPoint","addMarker","addMarkerAngle","getMarkerPoints","getMarkerAngles","quadraticCurveTo","P","E","acos","w","B","C","T","V","M","S","D","pattern","viewBox","getContext","marker","baseRender","refX","refY","defs","GradientBase","stops","getGradient","gradientUnits","attributesToInherit","inheritStopContainer","color","addColorStop","offset","linearGradient","createLinearGradient","radialGradient","createRadialGradient","stop","AnimateBase","duration","begin","maxDuration","getProperty","initialValue","initialUnits","removed","calcValue","update","frozen","animationFrozen","animationFrozenValue","values","progress","floor","ceil","animate","animateColor","parseInt","animateTransform","horizAdvX","isRTL","isArabic","fontFace","missingGlyph","glyphs","arabicForm","unicode","fontface","ascent","descent","unitsPerEm","missingglyph","glyph","textBaseline","initializeCoordinates","getAnchorDelta","getChildBoundingBox","renderChild","measureTextRecursive","adjustChildCoordinates","measureText","TextElementBase","getGlyph","strokeText","getText","fillText","reverse","tref","hasText","baseRenderChildren","checkBoundingBox","onmousemove","cursor","image","img","useCORS","crossOrigin","onload","onerror","drawSvg","complete","drawImage","symbol","getElementsByTagName","use","elementTransform","preserveAspectRatio","overflow","mask","globalCompositeOperation","fillRect","clipPath","CanvasRenderingContext2D","filter","extraFilterDistance","feMorphology","feComposite","feColorMatrix","getImageData","clearRect","putImageData","feGaussianBlur","blurRadius","canvasRGBA","display","body","appendChild","removeChild","title","MISSING","load","loadXmlDoc","offsetLeft","offsetTop","offsetParent","scrollX","scrollY","ignoreMouse","clientWidth","clientHeight","ignoreDimensions","offsetX","offsetY","scaleWidth","scaleHeight","ignoreClear","renderCallback","intervalID","hasEvents","ignoreAnimation","forceRedraw","runEvents","events","run","eventElements","isPointInPath","querySelectorAll","insertBefore","innerHTML","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","jQuery","Zepto","is","Sizzle","matchesSelector","hasClassHTML","hasClass","addClassHTML","removeClassHTML","removeClass","hasClassSVG","getAttribute","addClassSVG","setAttribute","removeClassSVG","removedClass","execute","jquerySelection","orgArguments","SVGFunc","HTMLFunc","element","SVGElement","d3","version","now","d3_arraySlice","d3_array","list","d3_document","d3_documentElement","d3_window","setProperty","d3_element_prototype","d3_element_setAttribute","d3_element_setAttributeNS","setAttributeNS","d3_style_prototype","CSSStyleDeclaration","d3_style_setProperty","space","local","priority","d3_number","ascending","descending","extent","sum","quantile","H","median","sort","bisector","lo","hi","mid","d3_bisector","d3_zipLength","bisectLeft","bisect","bisectRight","shuffle","permute","indexes","permutes","pairs","p1","zip","zips","transpose","entries","merge","merged","d3_range_integerScale","d3_class","ctor","properties","d3_Map","range","step","has","d3_map_prefix","charCodeAt","d3_map_prefixCode","substring","d3_Set","d3_rebind","d3_vendorSymbol","charAt","d3_vendorPrefixes","prefixName","nest","sortValues","rollup","sortKeys","mapType","keyValue","setter","valuesByKey","sortKey","keyMap","order","behavior","rebind","d3_noop","d3_dispatch","d3_dispatch_event","dispatch","listenerByName","z","on","listener","concat","d3_eventPreventDefault","d3_eventSource","sourceEvent","d3_eventDispatch","of","thiz","argumentz","e1","e0","requote","d3_requote_re","d3_subclass","d3_selection","groups","d3_selectionPrototype","d3_select","d3_selectAll","d3_selectMatcher","d3_selectMatches","uniqueSort","d3_selectionRoot","d3_selection_selector","selector","d3_selection_selectorAll","select","subgroup","subnode","group","node","subgroups","__data__","selectAll","d3_nsPrefix","xhtml","xlink","xml","xmlns","d3_selection_attr","qualify","removeAttributeNS","removeAttribute","d3_collapse","d3_selection_classedRe","d3_selection_classed","d3_selection_classedName","classList","lastIndex","d3_selection_style","removeProperty","d3_selection_property","d3_selection_creator","ownerDocument","createElementNS","namespaceURI","d3_selection_dataNode","d3_selection_filter","d3_selection_sortComparator","comparator","d3_selection_each","d3_selection_enter","d3_selection_enterPrototype","prefix","attr","getAttributeNS","each","classed","html","insert","before","groupData","nodeData","n0","updateNodes","enterNodes","exitNodes","nodeByKeyValue","dataByKeyValue","keyValues","enter","exit","datum","nextSibling","empty","d3_selection_enterInsertBefore","i0","j0","d3_selection_interrupt","lock","__transition__","active","upgroup","transition","d3_transitionInheritId","d3_transitionId","d3_transitionInherit","ease","d3_ease_cubicInOut","delay","d3_transitionNode","d3_transition","interrupt","nodes","d3_selection_on","wrap","d3_selection_onListener","d3_selection_onFilters","onRemove","d3_selection_onFilter","mouseenter","mouseleave","related","relatedTarget","compareDocumentPosition","d3_event_dragSelect","d3_event_dragId","d3_event_dragSuppress","touchmove","selectstart","dragstart","click","suppressClick","off","mouse","d3_mousePoint","d3_mouse_bug44083","ownerSVGElement","createSVGPoint","point","ctm","margin","border","getScreenCTM","matrixTransform","inverse","getBoundingClientRect","clientLeft","clientTop","touches","drag","mousedown","touchstart","move","end","event_","eventId","origin_","dragged","moved","ended","dragRestore","dx","dy","π","τ","halfπ","ε","d3_radians","d3_degrees","d3_sgn","d3_acos","d3_asin","asin","d3_sinh","exp","d3_cosh","d3_haversin","ρ","SQRT2","interpolateZoom","p0","ux0","uy0","w0","ux1","uy1","w1","d2","d1","b0","b1","r0","dr","interpolate","coshr0","zoom","translate0","center","mousewheelTimer","touchtime","x0","y0","view","scaleExtent","d3_behavior_zoomInfinity","mousemove","mouseup","mousedowned","d3_behavior_zoomWheel","mousewheeled","mousewheelreset","dblclicked","touchstarted","scaleTo","translateTo","rescale","domain","invert","zoomstarted","zoomed","zoomended","scale0","locations0","distance0","touchend","started","relocate","changed","q","l0","l1","distance1","scale1","clearTimeout","d3_behavior_zoomDelta","LN2","shiftKey","view1","__chart__","tween","deltaY","deltaMode","wheelDelta","d3_Color","d3_hsl","d3_Hsl","rgb","hsl","d3_rgb_parse","d3_rgb_hsl","d3_hslPrototype","d3_hsl_rgb","m1","m2","vv","round","d3_rgb","d3_hcl","d3_Hcl","brighter","darker","hcl","d3_lab_hcl","d3_Lab","d3_rgb_lab","d3_hclPrototype","d3_hcl_lab","d3_lab","d3_lab_K","lab","d3_labPrototype","d3_lab_rgb","d3_xyz_rgb","d3_lab_xyz","d3_xyz_lab","d3_rgbNumber","d3_rgbString","d3_Rgb","d3_rgbPrototype","d3_rgb_hex","d3_rgb_parseNumber","d3_rgb_names","d3_rgb_xyz","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","d3_functor","d3_identity","d3_xhrType","response","url","mimeType","d3_xhr","xhr","headers","request","responseType","respond","status","XDomainRequest","onreadystatechange","readyState","onprogress","header","setRequestHeader","overrideMimeType","beforesend","abort","d3_xhr_fixCallback","functor","dsv","delimiter","reFormat","delimiterCode","row","typedResponse","formatRow","parseRows","eol","EOL","EOF","rows","N","I","token","formatRows","fieldSet","fields","field","csv","tsv","d3_timer_queueHead","d3_timer_queueTail","d3_timer_interval","d3_timer_timeout","d3_timer_active","d3_timer_frame","d3_timer_step","d3_timer_mark","d3_timer_sweep","isFinite","t0","t1","timer","flush","d3_format_grouping","d3_formatPrefixes","formatPrefix","precision","d3_format_precision","LN10","specifier","d3_format_re","align","sign","zfill","comma","suffix","integer","d3_format_types","d3_format_typeDefault","zcomma","negative","lastIndexOf","after","d3_format_group","fromCharCode","X","toPrecision","toExponential","toFixed","d3_format_groupingLength","d3_adder","geo","d3_adderSum","d3_adderTemp","valueOf","bv","av","d3_geo_streamGeometry","geometry","d3_geo_streamGeometryType","stream","d3_geo_streamObjectType","Feature","feature","FeatureCollection","features","Sphere","sphere","coordinates","MultiPoint","LineString","d3_geo_streamLine","MultiLineString","Polygon","d3_geo_streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","area","d3_geo_areaSum","d3_geo_area","d3_geo_centroidW0","d3_geo_centroidW1","d3_geo_centroidX0","d3_geo_centroidY0","d3_geo_centroidZ0","d3_geo_centroidX1","d3_geo_centroidY1","d3_geo_centroidZ1","d3_geo_centroidX2","d3_geo_centroidY2","d3_geo_centroidZ2","d3_geo_areaRingSum","d3_geo_areaRingStart","λ00","φ00","λ0","cosφ0","sinφ0","nextPoint","λ","φ","dλ","cosφ","sinφ","d3_geo_cartesian","spherical","d3_geo_cartesianDot","d3_geo_cartesianCross","d3_geo_cartesianAdd","d3_geo_cartesianScale","vector","d3_geo_cartesianNormalize","d3_geo_spherical","cartesian","d3_geo_sphericalEqual","bounds","φ0","λ1","φ1","λ_","λ__","φ__","dλSum","ranges","bound","ringPoint","ringStart","ringEnd","linePoint","inflection","λi","antimeridian","φi","compareRanges","withinRange","best","centroid","d3_geo_centroid","d3_geo_centroidPoint","d3_geo_centroidLineStart","d3_geo_centroidLineEnd","d3_geo_centroidRingStart","d3_geo_centroidPointXYZ","z0","cz","d3_true","d3_geo_clipPolygon","segments","compare","clipStartInside","subject","segment","d3_geo_clipPolygonIntersection","d3_geo_clipPolygonLinkCircular","entry","isSubject","other","d3_geo_clip","pointVisible","clipLine","clipStart","rotatedClipStart","pointRing","meridian","parallel","meridianNormal","polarAngle","winding","ring","point0","intersection","φarc","d3_geo_pointInPolygon","d3_geo_clipSort","pointLine","d3_geo_clipBufferListener","ringListener","clean","ringSegments","d3_geo_clipSegmentLength1","lines","rejoin","d3_geo_clipAntimeridian","sλ0","sλ1","cosφ1","sinλ0_λ1","atan","d3_geo_clipAntimeridianIntersect","direction","d3_geo_clipCircle","radius","cr","smallRadius","notHemisphere","visible","c0","v0","v00","point2","point1","code","intersect","d3_geo_circleInterpolate","two","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","t2","δλ","polar","q1","d3_geom_clipLine","ax","ay","d3_geo_clipExtent","x__","y__","v__","x_","y_","v_","first","listener_","bufferListener","wn","isLeft","insidePolygon","inside","a1","corner","comparePoints","ca","d3_geo_compose","compose","d3_geo_conic","projectAt","d3_geo_projectionMutator","parallels","d3_geo_conicEqualArea","ρ0","forward","ρ0_y","clipExtent","valid","conicEqualArea","raw","albers","albersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","lower48Stream","alaskaStream","hawaiiStream","d3_geo_pathAreaSum","d3_geo_pathAreaPolygon","d3_geo_pathBoundsX0","d3_geo_pathBoundsY0","d3_geo_pathBoundsX1","d3_geo_pathBoundsY1","d3_geo_pathArea","d3_geo_pathAreaRingStart","x00","y00","d3_geo_pathBounds","d3_geo_pathBuffer","pointCircle","d3_geo_pathBufferCircle","pointLineStart","lineEndPolygon","pointRadius","d3_geo_lengthSum","d3_geo_pathCentroid","d3_geo_pathCentroidPoint","d3_geo_pathCentroidLineStart","d3_geo_pathCentroidLineEnd","d3_geo_pathCentroidRingStart","d3_geo_pathContext","d3_geo_resample","project","δ2","cosMinDistance","maxDepth","resample","a00","b00","c00","a0","resampleLineTo","φ2","λ2","dx2","dy2","dz","d3_geo_transform","d3_geo_pathProjectStream","d3_geo_projection","projectRotate","δx","δy","projectResample","δφ","δγ","preclip","postclip","clipAngle","projection","d3_geo_rotation","invalidate","d3_geo_projectionRadians","d3_geo_equirectangular","d3_geo_identityRotation","d3_geo_rotationλ","d3_geo_rotationφγ","d3_geo_forwardRotationλ","rotation","cosδφ","sinδφ","cosδγ","sinδγ","sr","d3_geo_circleAngle","d3_geo_graticuleX","d3_geo_graticuleY","d3_source","d3_target","projectStream","contextStream","cacheStream","projectionMutator","equirectangular","distance","Δλ","sinΔλ","cosΔλ","sinφ1","graticule","X1","X0","Y1","Y0","Y","DX","DY","outline","majorExtent","minorExtent","majorStep","minorStep","greatArc","source_","target_","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","d3_geo_length","d3_geo_azimuthal","azimuthal","cosλ","sinc","cosc","d3_geo_azimuthalEqualArea","cosλcosφ","azimuthalEqualArea","d3_geo_azimuthalEquidistant","d3_geo_conicConformal","F","d3_geo_mercator","d3_geo_conicEquidistant","G","azimuthalEquidistant","conicConformal","conicEquidistant","d3_geo_gnomonic","d3_geo_mercatorProjection","clipAuto","gnomonic","mercator","d3_geo_orthographic","orthographic","d3_geo_stereographic","d3_geo_transverseMercator","d3_geom_pointX","d3_geom_pointY","d3_geom_hullCCW","i1","i2","i3","stereographic","transverseMercator","geom","hull","vertices","sp","fx","fy","plen","stack","index","poly","d3_geom_polygonPrototype","d3_geom_polygonInside","d3_geom_polygonIntersect","x3","x21","x43","y3","y21","y43","ua","d3_geom_polygonClosed","d3_geom_voronoiEdges","d3_geom_voronoiCells","d3_geom_voronoiBeaches","d3_geom_voronoiFirstCircle","d3_geom_voronoiCircles","d3_geom_voronoiBeachPool","d3_geom_voronoiCirclePool","d3_geom_voronoiBeach","d3_geom_voronoiRedBlackNode","edge","site","d3_geom_voronoiCreateBeach","beach","d3_geom_voronoiDetachBeach","d3_geom_voronoiDetachCircle","d3_geom_voronoiRemoveBeach","vertex","previous","disappearing","lArc","unshift","rArc","iArc","nArcs","d3_geom_voronoiSetEdgeEnd","d3_geom_voronoiCreateEdge","d3_geom_voronoiAttachCircle","d3_geom_voronoiAddBeach","dxl","dxr","directrix","d3_geom_voronoiLeftBreakPoint","L","d3_geom_voronoiRightBreakPoint","R","newArc","lSite","bx","by","rSite","hb","hc","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","d3_geom_voronoiCell","edges","d3_geom_voronoiHalfEdgeOrder","d3_geom_voronoiCircle","cSite","ha","d3_geom_voronoiConnectEdge","vb","fm","fb","va","lx","ly","rx","ry","d3_geom_voronoiEdge","d3_geom_voronoiHalfEdge","d3_geom_voronoiCreateBorderEdge","d3_geom_voronoiRedBlackTree","U","d3_geom_voronoiRedBlackRotateLeft","tree","d3_geom_voronoiRedBlackRotateRight","d3_geom_voronoiRedBlackFirst","d3_geom_voronoi","sites","bbox","d3_geom_voronoiVertexOrder","splice","d3_geom_voronoiClipEdges","cell","iHalfEdge","halfEdges","nHalfEdges","cells","iCell","prepare","d3_geom_voronoiCloseCells","diagram","grandpa","uncle","sibling","voronoi","d3_geom_voronoiClipExtent","polygons","links","triangles","s0","s1","d3_geom_voronoiTriangleArea","d3_geom_quadtreeCompatX","d3_geom_quadtreeCompatY","d3_geom_quadtreeVisit","sx","sy","d3_interpolateRgb","ag","ab","br","bg","bb","d3_interpolateObject","d3_interpolate","d3_interpolateNumber","d3_interpolateString","d3_interpolate_number","delaunay","quadtree","compat","xs","ys","x1_","y1_","x2_","y2_","leaf","nx","ny","insertChild","nPoint","interpolateRgb","interpolateObject","interpolateNumber","interpolateString","interpolators","d3_interpolateArray","na","nb","interpolateArray","d3_ease_default","d3_ease","linear","quad","d3_ease_quad","cubic","d3_ease_cubic","d3_ease_sin","d3_ease_exp","d3_ease_circle","elastic","back","bounce","d3_ease_bounce","d3_ease_mode","out","d3_ease_reverse","d3_ease_reflect","d3_ease_clamp","t3","d3_interpolateRound","d3_transform","r1","kx","d3_transformNormalize","kz","d3_transformDot","ky","d3_transformCombine","skew","interpolateHcl","ah","ac","al","bh","bc","bl","interpolateHsl","bs","interpolateLab","aa","ba","interpolateRound","string","baseVal","consolidate","d3_transformIdentity","d3_interpolateTransform","ta","tb","ra","rb","wa","wb","ka","kb","d3_uninterpolateNumber","d3_uninterpolateClamp","d3_layout_bundlePath","link","lca","aNodes","d3_layout_bundleAncestors","bNodes","aNode","bNode","sharedNode","d3_layout_bundleLeastCommonAncestor","ancestors","d3_layout_forceDragstart","fixed","d3_layout_forceDragend","d3_layout_forceMouseover","px","py","d3_layout_forceMouseout","interpolateTransform","bundle","chord","chords","sortGroups","sortSubgroups","sortChords","relayout","groupSums","groupIndex","subgroupIndex","di","dj","subindex","startAngle","endAngle","resort","force","alpha","distances","strengths","charges","friction","linkDistance","d3_layout_forceLinkDistance","linkStrength","d3_layout_forceLinkStrength","charge","gravity","repulse","dn","pointCharge","dragmove","resume","tick","weight","d3_layout_forceAccumulate","visit","neighbors","dimension","candidates","d3_layout_hierarchyRebind","hierarchy","d3_layout_hierarchyLinks","d3_layout_hierarchyChildren","d3_layout_hierarchyValue","d3_layout_hierarchySort","child","recurse","childs","revalue","partition","pie","d3_layout_pieSortByValue","arcs","d3_layout_stackX","d3_layout_stackY","d3_layout_stackOut","d3_layout_stackOrderDefault","d3_layout_stackOffsetZero","series","orders","offsets","d3_layout_stackOrders","d3_layout_stackOffsets","d3_layout_stackMaxIndex","sums","d3_layout_stackReduceSum","tops","bottoms","silhouette","wiggle","s2","s3","o0","expand","zero","d3_layout_stackSum","d3_layout_histogramBinSturges","d3_layout_histogramBinFixed","d3_layout_histogramRange","d3_layout_treeSeparation","d3_layout_treeLeft","_tree","thread","d3_layout_treeRight","d3_layout_treeSearch","d3_layout_treeRightmost","d3_layout_treeLeftmost","d3_layout_treeDeepest","d3_layout_treeVisitAfter","previousSibling","previousChild","d3_layout_treeMove","ancestor","change","number","prelim","mod","d3_layout_treeAncestor","vim","d3_layout_packSort","d3_layout_packInsert","_pack_next","_pack_prev","d3_layout_packSplice","d3_layout_packIntersects","d3_layout_packSiblings","xMin","xMax","yMin","yMax","d3_layout_packLink","d3_layout_packPlace","isect","d3_layout_packUnlink","db","da","dc","d3_layout_treemapPadNull","d3_layout_treemapPad","d3_scaleExtent","d3_scaleRange","rangeExtent","d3_scale_bilinear","uninterpolate","d3_scale_nice","nice","histogram","frequency","valuer","ranger","binner","bin","bins","thresholds","separation","nodeSize","apportion","vip","vop","vom","sip","sop","sim","som","firstWalk","firstChild","d3_layout_treeShift","midpoint","secondWalk","deep","pack","d3_layout_packTransform","cluster","previousNode","d3_layout_clusterX","d3_layout_clusterY","d3_layout_clusterLeft","d3_layout_clusterRight","treemap","stickies","sticky","squarify","score","remaining","worst","stickify","rmax","rmin","padFunction","padConstant","µ","σ","logNormal","irwinHall","d3_scale_niceIdentity","d3_scale_polylinear","d3_scale_linearRebind","d3_scale_linearNice","d3_scale_linearTickRange","span","d3_scale_linearTicks","d3_scale_linearTickFormat","d3_scale_linear","clamp","rangeRound","ticks","tickFormat","d3_scale_log","positive","niced","d3_scale_logNiceNegative","d3_scale_logFormat","d3_scale_powPow","d3_scale_pow","exponent","powp","powb","ordinal","d3_scale_ordinal","rangeBand","steps","xi","rangePoints","rangeBands","outerPadding","rangeRoundBands","category10","d3_category10","category20","d3_category20","category20b","d3_category20b","category20c","d3_category20c","d3_scale_quantile","quantiles","invertExtent","quantize","d3_scale_quantize","threshold","d3_scale_threshold","identity","d3_scale_identity","innerRadius","d3_svg_arcInnerRadius","outerRadius","d3_svg_arcOuterRadius","d3_svg_arcStartAngle","d3_svg_arcEndAngle","d3_svg_arcOffset","df","d3_svg_arcMax","d3_svg_line","defined","d3_svg_lineLinear","interpolateKey","tension","d3_svg_lineInterpolators","d3_svg_lineStepBefore","d3_svg_lineStepAfter","basis","d3_svg_lineBasis","pi","d3_svg_lineDot4","d3_svg_lineBasisBezier3","d3_svg_lineBasisBezier","cardinal","d3_svg_lineHermite","d3_svg_lineCardinalTangents","monotone","tangents","d3_svg_lineSlope","d3_svg_lineFiniteDifferences","d3_svg_lineMonotoneTangents","lp","p2","d3_svg_lineBasisBezier1","d3_svg_lineBasisBezier2","d3_svg_lineRadial","d3_svg_area","interpolateReverse","points0","points1","fx0","fy0","fx1","fy1","d3_svg_chordRadius","d3_svg_diagonalProjection","d3_svg_diagonalRadialProjection","d3_svg_symbolSize","d3_svg_symbolType","d3_svg_symbolCircle","radial","equals","curve","diagonal","p3","projection_","d3_svg_symbols","cross","diamond","d3_svg_symbolTan30","square","d3_svg_symbolSqrt3","symbolTypes","d3_transitionPrototype","d3_transition_tween","d3_transition_text","inherit","count","elapsed","tweened","subnodes","nameNS","attrNull","attrNullNS","attrTween","attrTweenNS","styleNull","styleString","styleTween","inheritId","id0","id1","axis","tickFormat_","orient","d3_svg_axisDefaultOrient","innerTickSize","outerTickSize","tickPadding","tickArguments_","tickValues","tickTransform","tickEnter","tickExit","tickUpdate","pathUpdate","lineEnter","lineUpdate","textEnter","textUpdate","d3_svg_axisX","d3_svg_axisY","d3_svg_axisOrients","tickSize","tickSubdivide","brush","xExtentDomain","yExtentDomain","xExtent","yExtent","xClamp","yClamp","resizes","d3_svg_brushResizes","brushstart","background","d3_svg_brushCursor","gUpdate","backgroundUpdate","redrawX","redrawY","redraw","resizing","resizingX","resizingY","dragging","keydown","keyup","brushmove","brushend","ex","ey","altKey","keyCode","move1","extent1","extent0","yi","clear","nw","ne","se","sw","d3_time","d3_date","d3_date_utc","UTC","getUTCDate","getDay","getUTCDay","getFullYear","getUTCFullYear","getUTCHours","getMilliseconds","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","getTime","getTimezoneOffset","setDate","d3_time_prototype","setUTCDate","setDay","setUTCDay","setFullYear","setUTCFullYear","setHours","setUTCHours","setMilliseconds","setUTCMilliseconds","setMinutes","setUTCMinutes","setMonth","setUTCMonth","setSeconds","setUTCSeconds","setTime","d3_time_days","d3_time_dayAbbreviations","d3_time_months","d3_time_monthAbbreviations","d3_time_interval","date","d0","dt","times","utc","d3_time_interval_utc","d3_time_format","template","d3_time_formatPads","d3_time_formats","Z","d3_time_parse","localZ","W","d3_time_parsers","d3_time_formatRe","names","d3_time_formatLookup","d3_time_formatPad","year","day","years","days","dayOfYear","interval","week","sunday","weeks","weekOfYear","sundayOfYear","d3_time_dayRe","d3_time_dayLookup","d3_time_dayAbbrevRe","d3_time_dayAbbrevLookup","d3_time_monthRe","d3_time_monthLookup","d3_time_monthAbbrevRe","d3_time_monthAbbrevLookup","d3_time_percentRe","mondayOfYear","zs","zh","zm","d3_time_parseDay","d3_time_parseHour24","d3_time_numberRe","d3_time_amPmLookup","am","pm","d3_time_formatUtc","d3_time_formatIso","d3_time_formatIsoNative","toISOString","d3_time_scale","tickMethod","d3_time_scaleSteps","d3_time_scaleMilliseconds","d3_time_scaleDate","skip","skipped","d3_time_scaleFormat","formats","iso","second","seconds","minute","minutes","hour","timezone","hours","month","d3_time_scaleLocalMethods","d3_time_scaleLocalFormat","d3_time_scaleUTCMethods","d3_time_scaleUTCFormat","d3_json","d3_html","createRange","selectNode","createContextualFragment","json","responseXML","ui","orig","widgetUuid","widgetSlice","cleanData","elems","elem","_data","triggerHandler","widget","existingConstructor","basePrototype","proxiedPrototype","namespace","fullName","Widget","expr","_createWidget","_proto","_childConstructors","_super","_superApply","returnValue","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","childPrototype","bridge","inputIndex","inputLength","isPlainObject","isMethodCall","methodValue","jquery","pushStack","option","_init","defaultElement","classes","uuid","eventNamespace","bindings","hoverable","focusable","classesElementLookup","_on","defaultView","parentWindow","_getCreateOptions","_create","_setOptionDisabled","_trigger","_getCreateEventData","noop","that","_destroy","_removeClass","removeData","removeAttr","parts","curOption","_setOptions","_setOption","_setOptionClasses","classKey","elements","currentElements","_classes","_toggleClass","enable","disable","full","processClassString","checkOption","unique","not","extra","_untrackClassesElement","inArray","_addClass","toggleClass","suppressDisabledCheck","delegateElement","handler","handlerProxy","guid","eventName","_off","_delay","_hoverable","currentTarget","_focusable","focusin","focusout","originalEvent","trigger","isDefaultPrevented","show","hide","defaultEffect","hasOptions","effect","effectName","isEmptyObject","effects","easing","queue","cachedScrollbarWidth","rhorizontal","rvertical","roffset","rposition","rpercent","_position","getOffsets","parseCss","getDimensions","isWindow","scrollLeft","scrollbarWidth","w2","div","innerDiv","offsetWidth","getScrollInfo","within","overflowX","isDocument","overflowY","hasOverflowX","getWithinInfo","withinElement","atOffset","targetWidth","targetHeight","targetOffset","basePosition","dimensions","scrollInfo","collision","at","horizontalOffset","verticalOffset","pos","collisionPosition","using","elemWidth","elemHeight","marginLeft","marginTop","collisionWidth","collisionHeight","myOffset","my","dir","props","feedback","horizontal","vertical","important","fit","newOverRight","withinOffset","collisionPosLeft","overLeft","overRight","newOverBottom","collisionPosTop","overTop","overBottom","flip","newOverLeft","newOverTop","flipfit","createPseudo","dataName","disableSelection","eventType","enableSelection","baseEasings","selectorEscape","rplusequals","stringParsers","execResult","Color","spaces","rgba","hsla","hue","saturation","lightness","propTypes","support","supportElem","allowEmpty","def","stringParse","inst","_rgba","parser","parsed","spaceName","cache","transparent","hue2rgb","cssText","backgroundColor","_default","same","localCache","isCache","_space","used","startColor","startValue","endValue","blend","opaque","toRgbaString","toHslaString","toHexString","includeAlpha","diff","arr","vtype","_hsla","hook","hooks","cssHooks","curElem","colorInit","borderColor","expanded","part","classAnimationActions","shorthandStyles","borderBottom","borderLeft","borderRight","borderTop","borderWidth","getElementStyles","currentStyle","camelCase","setAttr","addBack","prevObject","animateClass","speed","applyClassChange","animated","baseClass","allAnimations","find","el","action","oldStyle","newStyle","styleDifference","styleInfo","dfd","Deferred","when","done","classNames","toggle","switchClass","_normalizeArguments","speeds","standardAnimationOption","parseClip","filters","uiBackCompat","setMode","createWrapper","wrapper","zIndex","removeWrapper","replaceWith","define","scaledDimensions","percent","clipToBox","animation","queueLength","dequeue","saveStyle","restoreStyle","hidden","getBaseline","createPlaceholder","placeholder","cssPosition","marginBottom","marginRight","insertAfter","visibility","dataSpace","removePlaceholder","dataKey","cleanUp","setTransition","factor","cssUnit","effectMethod","defaultMode","queueName","modes","prefilter","normalizedMode","cssClip","clipObj","transfer","targetFixed","fixTop","fixLeft","endPosition","innerHeight","innerWidth","startPosition","clipInit","Sine","Circ","Elastic","Back","Bounce","pow2","easeIn","up","down","upAnim","downAnim","refValue","anims","ref","motion","queuelen","opacity","both","oppositeMotion","mx","pieces","childComplete","horizFirst","animation1","animation2","backgroundImage","temp","cProps","vProps","hProps","childOriginal","childFrom","childTo","newOptions","fade","showhide","animateTo","positiveMotion","startClip","startRef","hasTabindex","mapName","focusableIfVisible","fieldset","closest","form","formResetMixin","_formResetHandler","instances","refresh","_bindFormResetHandler","_unbindFormResetHandler","side","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","LEFT","PAGE_DOWN","PAGE_UP","PERIOD","RIGHT","SPACE","TAB","UP","escapeSelector","labels","eq","parents","siblings","includeHidden","excludeStaticParent","overflowRegex","tabbable","tabIndex","uniqueId","removeUniqueId","collapsible","heightStyle","icons","activeHeader","activate","beforeActivate","hideProps","borderTopWidth","borderBottomWidth","showProps","prevShow","prevHide","_processPanels","_refresh","panel","_createIcons","icon","prependTo","_destroyIcons","contents","_setupEvents","_activate","_keydown","ctrlKey","currentIndex","toFocus","_eventHandler","_panelKeyDown","prevHeaders","prevPanels","panels","maxHeight","_findActive","headerId","panelId","isVisible","activeChildren","clickedChildren","clicked","clickedIsActive","collapsing","toShow","toHide","eventData","oldHeader","oldPanel","newHeader","newPanel","_toggle","_animate","_toggleComplete","total","adjust","boxSizing","safeActiveElement","submenu","menus","role","activeMenu","mouseHandled","isPropagationStopped","previousFilter","actualTarget","keepActiveItem","item","collapseAll","_closeOnDocumentClick","submenus","character","previousPage","nextPage","_move","collapse","filterTimer","_filterMenuItems","nextAll","newSubmenus","newItems","newWrappers","menu","submenuCaret","prepend","_isDivider","_itemRole","listbox","nested","focused","activeParent","_scrollIntoView","_close","_startOpening","scroll","elementHeight","itemHeight","_hasScroll","fromFocus","_open","all","currentMenu","startMenu","newItem","isFirstItem","prevAll","isLastItem","escapedCharacter","regex","autoFocus","minLength","close","search","requestIndex","pending","suppressKeyPress","suppressKeyPressRepeat","suppressInput","isTextarea","isInput","isMultiLine","_isContentEditable","valueMethod","isNewMenu","_keyEvent","_value","term","_searchTimeout","keypress","selectedItem","cancelBlur","searching","_change","_initSource","_appendTo","menufocus","label","one","liveRegion","menuselect","beforeunload","_isEventTargetInWidget","menuElement","_closeOnClickOutside","autocomplete","dataType","success","equalValues","menuVisible","modifierKey","metaKey","_search","cancelSearch","_response","proxy","__response","_normalize","_suggest","ul","_renderMenu","_resizeMenu","_renderItemData","_renderItem","keyEvent","editable","escapeRegex","matcher","grep","messages","noResults","results","amount","datepicker_instActive","controlgroupCornerRegex","Datepicker","_curInst","_disabledInputs","_datepickerShowing","_inDialog","_mainDivId","_inlineClass","_appendClass","_triggerClass","_dialogClass","_disableClass","_unselectableClass","_currentClass","_dayOverClass","regional","closeText","prevText","nextText","currentText","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","weekHeader","dateFormat","firstDay","showMonthAfterYear","yearSuffix","_defaults","showOn","showAnim","showOptions","defaultDate","appendText","buttonText","buttonImage","buttonImageOnly","hideIfNoPrevNext","navigationAsDateFormat","gotoCurrent","changeMonth","changeYear","yearRange","showOtherMonths","selectOtherMonths","showWeek","calculateWeek","iso8601Week","shortYearCutoff","minDate","maxDate","beforeShowDay","beforeShow","onSelect","onChangeMonthYear","onClose","numberOfMonths","showCurrentAtPos","stepMonths","stepBigMonths","altField","altFormat","constrainInput","showButtonPanel","autoSize","en","dpDiv","datepicker_bindHover","datepicker_handleMouseover","datepicker","_isDisabledDatepicker","inline","datepicker_extendRemove","onlyVisible","_enhance","_callChildMethod","childWidgets","controlgroupLabel","unwrap","_initWidgets","wrapAll","instanceOptions","_resolveClassesValues","widgetElement","_updateCornerClass","_buildSimpleOptions","_spinnerOptions","_buttonOptions","_checkboxradioOptions","_selectmenuOptions","only","_readType","originalLabel","outerHTML","checked","_updateLabel","_updateIcon","_getRadioGroup","nameSelector","_toggleClasses","checkboxradio","iconSpace","toAdd","isDisabled","iconPosition","showLabel","hasTitle","_updateTooltip","displayBlock","_attachIcon","_attachIconSpace","newShowLabel","newIcon","button","primary","secondary","buttonset","controlgroup","markerClassName","maxRows","_widgetDatepicker","setDefaults","settings","_attachDatepicker","_newInst","_connectDatepicker","_inlineDatepicker","selectedDay","selectedMonth","selectedYear","drawMonth","drawYear","_attachments","_doKeyDown","_doKeyPress","_doKeyUp","_autoSize","_disableDatepicker","_get","_showDatepicker","alt","_lastInput","_hideDatepicker","findMax","maxI","_formatDate","divSpan","_setDate","_getDefaultDate","_updateDatepicker","_updateAlternate","_dialogDatepicker","browserWidth","browserHeight","_dialogInst","_dialogInput","_pos","blockUI","_destroyDatepicker","$target","_enableDatepicker","_getInst","_optionDatepicker","_getDateDatepicker","_getMinMaxDate","_changeDatepicker","_refreshDatepicker","_setDateDatepicker","noDefault","_setDateFromField","_getDate","dateStr","sel","handled","_selectDay","_adjustDate","_clearDate","_gotoToday","chars","chr","_possibleChars","charCode","lastVal","parseDate","_getFormatConfig","beforeShowSettings","isFixed","_findPos","_checkOffset","datepicker_getZindex","_shouldFocusInput","_generateHTML","_attachHandlers","origyearshtml","numMonths","_getNumberOfMonths","cols","activeCell","yearshtml","dpWidth","dpHeight","inputWidth","inputHeight","viewWidth","viewHeight","postProcess","_tidyDialog","unblockUI","_checkExternalClick","period","_adjustInstDate","currentDay","currentMonth","currentYear","_notifyChange","_selectMonthYear","selectedIndex","td","_selectDate","formatDate","noWeekends","checkDate","iFormat","iValue","shortYearCutoffTemp","doy","literal","lookAhead","getNumber","isDoubled","digits","getName","shortNames","longNames","pair","checkLiteral","_ticksTo1970","_getDaysInMonth","_daylightSavingAdjust","ATOM","COOKIE","ISO_8601","RFC_822","RFC_850","RFC_1036","RFC_1123","RFC_2822","RSS","TICKS","TIMESTAMP","W3C","formatNumber","formatName","dates","_restrictMinMax","_determineDate","newDate","offsetString","offsetNumeric","noChange","origMonth","origYear","today","selectDay","selectMonth","selectYear","maxDraw","gotoDate","controls","buttonPanel","dow","col","selectedDate","cornerClass","calender","thead","daysInMonth","leadDays","curRows","numRows","printDate","dRow","tbody","daySettings","otherMonth","unselectable","tempDate","isMultiMonth","currentDate","_canAdjustMonth","_isInRange","_generateMonthYearHeader","_getFirstDayOfMonth","inMinYear","inMaxYear","thisYear","determineYear","endYear","monthHtml","onChange","minMax","curYear","curMonth","yearSplit","minYear","maxYear","initialized","otherArgs","ie","cancel","_mouseInit","_mouseDown","_mouseDestroy","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseUp","_mouseDownEvent","btnIsLeft","which","elIsCancel","_mouseCapture","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","_mouseMove","documentMode","ignoreMissingWhich","_mouseDrag","_mouseStop","plugin","proto","plugins","allowDisconnected","safeBlur","addClasses","connectToSortable","containment","cursorAt","grid","handle","helper","iframeFix","refreshPositions","revert","revertDuration","scope","scrollSensitivity","scrollSpeed","snap","snapMode","snapTolerance","_setPositionRelative","_setHandleClassName","_removeHandleClassName","destroyOnClear","_getHandle","_blurActiveElement","_blockFrames","iframeBlocks","iframe","_unblockFrames","_createHelper","_cacheHelperProportions","ddmanager","_cacheMargins","hasFixedAncestor","positionAbs","_refreshOffsets","originalPosition","_generatePosition","originalPageX","originalPageY","_adjustOffsetFromHelper","_setContainment","_clear","dropBehaviour","prepareOffsets","dragStart","margins","_getParentOffset","relative","_getRelativeOffset","noPropagation","_convertPositionTo","_uiHash","dropped","drop","dragStop","handleElement","helperIsFunction","helperProportions","_isRootNode","po","scrollIsRootNode","isUserScrollable","ce","relativeContainer","constrainPosition","co","cancelHelperRemoval","draggable","uiSortable","sortables","sortable","isOver","_storedCSS","_helper","innermostIntersecting","_intersectsWith","containerCache","_parent","currentItem","fromOutside","_revert","_cursor","_opacity","scrollParentNotHidden","overflowOffset","scrolled","snapElements","$t","$o","ts","ls","rs","snapping","release","snapItem","makeArray","_zIndex","alsoResize","animateDuration","animateEasing","autoHide","ghost","handles","maxWidth","minHeight","minWidth","_num","_isNumber","_aspectRatio","originalElement","_proportionallyResizeElements","resizable","elementIsWrapper","originalResizeStyle","_proportionallyResize","_setupHandles","_handles","_removeHandles","hname","_renderAxis","padPos","padWrapper","curleft","curtop","_renderProxy","originalSize","sizeDiff","originalMousePosition","_propagate","smp","_updatePrevProperties","_updateVirtualBoundaries","_updateRatio","_respectSize","_updateCache","_applyChanges","pr","ista","soffseth","soffsetw","prevPosition","prevSize","forceAspectRatio","pMinWidth","pMaxWidth","pMinHeight","pMaxHeight","_vBoundaries","cpos","csize","ismaxw","ismaxh","isminw","isminh","dw","dh","cw","ch","_getPaddingPlusBorderDimensions","widths","borders","paddings","prel","outerDimensions","elementOffset","cs","oc","containerElement","containerOffset","containerPosition","parentData","containerSize","woset","hoset","isParent","isOffsetRelative","cp","pRatio","cop","continueResize","ho","os","op","delta","gridX","gridY","ox","oy","newWidth","newHeight","isMaxWidth","isMaxHeight","isMinWidth","isMinHeight","autoOpen","buttons","closeOnEscape","modal","topOffset","beforeClose","resizeStart","resizeStop","sizeRelatedOptions","resizableRelatedOptions","originalCss","originalTitle","_createWrapper","uiDialog","_createTitlebar","_createButtonPane","_makeDraggable","_makeResizable","_isOpen","_trackFocus","_untrackInstance","_destroyOverlay","detach","_focusedElement","opener","_hide","isOpen","moveToTop","_moveToTop","silent","zIndices","zIndexMax","_focusTabbable","_size","_createOverlay","overlay","_show","_makeFocusTarget","hasFocus","uiDialogButtonPane","uiDialogTitlebarClose","_keepFocus","checkFocus","tabbables","uiDialogTitle","uiDialogTitlebar","_title","uiButtonSet","_createButtons","buttonOptions","filteredUi","resizeHandles","_minHeight","_trackingInstances","exists","resizableOptions","isDraggable","isResizable","nonContentHeight","minContentHeight","maxContentHeight","_allowInteraction","isOpening","overlays","dialog","dialogClass","accept","greedy","tolerance","deactivate","over","proportions","isover","isout","_addToManager","droppables","_splice","_addActiveClass","_deactivate","_removeActiveClass","_over","_addHoverClass","_out","_removeHoverClass","_drop","childrenIntersection","droppable","rhash","isOverAxis","reference","toleranceMode","absolute","spinnerModifer","droppablesLoop","parentsUntil","greedyChild","parentInstance","intersects","hoverClass","activeClass","oldValue","_constrainedValue","valueDiv","_refreshValue","newValue","indeterminate","_percentage","percentage","overlayDiv","autoRefresh","selected","selecting","unselected","unselecting","elementPos","selectees","$this","selecteeOffset","$element","startselected","opos","selectee","doSelect","tmp","hit","selectmenuId","ids","_drawButton","_drawMenu","_rendered","menuItems","_parseOption","tabindex","buttonItem","_renderButtonItem","_resizeButton","_buttonEvents","_refreshMenu","menuWrap","menuInstance","_setSelection","_select","focusIndex","_getSelectedItem","_parseOptions","_setAria","_toggleAttr","_documentClick","menuWidget","_setText","currentOptgroup","li","optgroup","removeAllRanges","addRange","getRangeAt","_selectFocusedItem","oldIndex","orientation","slide","numPages","_keySliding","_mouseSliding","_animateOff","_handleIndex","_detectOrientation","_calculateNewMax","_createRange","_createHandles","handleCount","existingHandles","_valueMin","_handleEvents","normValue","closestHandle","mouseOverHandle","elementSize","_normValueFromMouse","_valueMax","thisDistance","_lastChangedValue","_start","_clickOffset","_slide","_stop","pixelTotal","pixelMouse","percentMouse","valueTotal","valueMouse","_trimAlignValue","uiHash","handleIndex","_hasMultipleValues","newVal","otherVal","currentValue","newValues","vals","_values","valsLength","_refreshRange","valModStep","alignValue","_precision","_precisionOf","decimal","lastValPercent","valPercent","valueMin","valueMax","oRange","_set","curVal","ready","connectWith","dropOnEmpty","forcePlaceholderSize","forceHelperSize","beforeStop","receive","_isOverAxis","_isFloating","overrideHandle","validHandle","reverting","_refreshItems","_removeCurrentsFromItems","noActivation","currentContainer","domPosition","_createPlaceholder","storedCursor","storedStylesheet","_storedOpacity","_storedZIndex","_preserveHelperProportions","itemElement","lastPositionAbs","_intersectsWithPointer","_intersectsWithSides","_rearrange","_contactContainers","_noFinalSort","_getItemsAsjQuery","res","expression","toArray","dyClick","dxClick","isOverElementHeight","isOverElementWidth","isOverElement","forcePointerForContainers","floating","verticalDirection","horizontalDirection","_getDragVerticalDirection","_getDragHorizontalDirection","isOverBottomHalf","isOverRightHalf","_connectWith","queries","addItems","targetData","_queries","queriesLength","fast","toleranceElement","refreshContainers","_createTrPlaceholder","sourceTr","targetTr","dist","itemWithLeastDistance","posProperty","sizeProperty","nearBottom","innermostContainer","innermostIndex","hardRefresh","counter","delayedTriggers","delayEvent","_inst","sender","culture","incremental","numberFormat","page","spin","_draw","_events","mousewheel","spinning","_spin","_repeat","uiSpinner","_adjustValue","_increment","aboveMin","prevValue","_parse","_format","Globalize","isValid","allowAny","stepUp","_stepUp","stepDown","_stepDown","pageUp","pages","pageDown","spinner","_uiSpinnerHtml","_buttonHtml","beforeLoad","_isLocal","anchor","anchorUrl","locationUrl","decodeURIComponent","running","_processTabs","_initialActive","tabs","anchors","locationHash","tab","_getPanelForTab","_tabKeydown","focusedTab","goingForward","_handlePageNav","activating","_focusNextTab","_panelKeydown","_findNextTab","lastTabIndex","_setupHeightStyle","_sanitizeSelector","lis","tablist","prevTabs","prevAnchors","_getList","anchorId","originalAriaControls","_createPanel","oldTab","newTab","_getIndex","jqXHR","_ajaxSettings","statusText","fail","beforeSend","ajaxSettings","track","_addDescribedBy","describedby","_removeDescribedBy","mouseover","tooltips","disabledTitles","tooltipData","_updateContent","_disable","_enable","blurEvent","_registerCloseHandlers","contentOption","tooltip","delayedShow","a11yContent","positionOption","_find","_tooltip","fakeEvent","_removeTooltip","closing","hiding","tooltipClass","touchHandled","mouseProto","_touchStart","_touchMoved","simulateMouseEvent","_touchMove","_touchEnd","unbind","simulatedType","simulatedEvent","htmlMenuitem","htmlCommand","eventSelectstart","_cleanData","$currentTrigger","$win","namespaces","defaults","reposition","determinePosition","$menu","opt","positionSubmenu","hoveract","abortevent","contextmenu","build","built","$trigger","$related","$document","layerClick","$window","triggerAction","$layer","contextMenu","keyStop","$selected","$parent","itemdata","accesskeys","$node","prevItem","$s","$children","$prev","$round","itemMouseleave","itemMouseenter","$input","nextItem","$next","focusInput","contextMenuRoot","blurInput","menuMouseenter","hovering","menuMouseleave","itemClick","contextMenuKey","callbacks","inputClick","hideMenu","focusItem","blurItem","zin","$tt","zindex","$label","accesskey","ak","aks","splitAccesskey","_name","commands","hasTypes","inputs","radio","$item","inputLabel","operation","$context","_hasContext","$visibleMenu","fromMenu","setInputValues","getInputValues","menuChildren","selectBoxIt","VERSION","vendor","opera","theme","isDeferred","internal","populateOption","userTheme","widgetProto","originalElem","selectBox","selectItems","firstSelectItem","documentHeight","getThemes","currentFocus","textArray","flipped","selectBoxStyles","_createDropdownButton","_createUnorderedList","_copyAttributes","_replaceSelectBox","_addClasses","_eventHandlers","_ariaAccessibility","isMobile","_mobile","_applyNativeSelect","triggerEvent","originalElemId","originalElemValue","originalElemName","copyClasses","selectboxClasses","dropdownText","dropdownImageContainer","dropdownImage","dropdown","dropdownContainer","dataDisabled","optgroupClass","optgroupElement","iconClass","iconUrl","iconUrlClass","iconUrlStyle","currentDataSelectedText","currentDataText","currentDataSearch","currentOption","createdList","htmlEscape","defaultedText","listItems","listAnchors","downArrowContainerWidth","dropdownImageWidth","listSize","downArrow","downArrowContainer","_scrollToView","listScrollTop","currentItemHeight","currentTopPosition","absCurrentTopPosition","listHeight","_callbackSupport","showEffect","showEffectSpeed","showEffectOptions","isNative","_dynamicPositioning","hideEffect","hideEffectSpeed","hideEffectOptions","listIsVisible","_keyMappings","_keydownMethods","moveToOption","moveDown","moveUp","activeElem","_update","nativeMousedown","customShowHideEvent","focusClass","openClass","mdown","currentKey","keydownMethod","alphaNumericKey","listIsHidden","ev","currentElem","selectedClass","hideCurrent","defaultText","hover","buttonClass","listClass","arrowClass","arrow","containerClass","_destroySelectBoxIt","_addSelectBoxAttributes","_realOuterWidth","clonedElem","_populate","dataLength","isJSON","_isJSON","parsedJSON","_parseJSON","parseJSON","returnedData","dropdownLabel","_addAttributes","iterator","whitelist","propValue","setOption","disableOption","currentSelectBoxOption","hasNextEnabled","hasPreviousEnabled","_isDisabled","listOffsetTop","selectBoxHeight","viewport","viewportHeight","viewportScrollTop","bottomReached","outsideBottomViewport","outsideTopViewport","enableOption","_setCurrentSearchOption","_searchAlgorithm","alphaNumeric","arrayLength","currentSearch","matchExists","rememberPreviousSearch","_updateMobileText","_mobileEvents","hasChanged","selectOption","setOptions","wait","global","Alea","seed","me","mash","impl","xg","state","prng","int32","double","quick","alea","XorGen","strseed","xor128","xorwow","xorshift7","limit","xor4096","mainProperties","isBeingEdited","imagePath","dnaEngineImagesPath","unitType","unitsScheme","lennardJonesForces","storeInTickHistory","coulombForces","temperatureControl","targetTemperature","modelSampleRate","gravitationalField","timeStep","dielectricConstant","realisticDielectricEffect","solventForceFactor","solventForceType","additionalSolventForceMult","additionalSolventForceThreshold","polarAAEpsilon","viscosity","timeStepsPerTick","DNAState","DNA","DNAMutations","useQuantumDynamics","useChemicalReactions","useDuration","requestedDuration","skipPECheckOnAddAtom","viewOptions","viewPortWidth","viewPortHeight","viewPortZoom","viewPortX","viewPortY","viewPortDrag","showClock","markColor","atomRadiusScale","keShading","keShadingMinEnergy","keShadingMaxEnergy","chargeShading","chargeShadingStyle","aminoAcidColorScheme","aminoAcidLabels","useThreeLetterCode","showChargeSymbols","showVDWLines","VDWLinesCutoff","showVelocityVectors","showForceVectors","showElectricField","electricFieldDensity","electricFieldColor","showAtomTrace","atomTraceId","images","imageMapping","textBoxes","xlabel","ylabel","xunits","yunits","controlButtons","controlButtonStyle","gridLines","atomNumbers","enableAtomTooltips","enableKeyboardHandlers","atomTraceColor","velocityVectors","forceVectors","forceVectorsDirectionOnly","onAtomDrag","atom","vx","vy","radical","pinned","marked","draggableWhenStopped","mass","excitation","sharedElectrons","sigma","epsilon","pairwiseLJProperties","element1","element2","obstacle","externalAx","externalAy","displayExternalAcceleration","westProbe","westProbeValue","northProbe","northProbeValue","eastProbe","eastProbeValue","southProbe","southProbeValue","permeability","shape","fence","lineColor","lineDashes","lineWeight","layerPosition","beginStyle","endStyle","radialBond","atom1","atom2","strength","angularBond","atom3","restraint","atomIndex","electricField","intensity","shapeIdx","textBox","frame","calloutPoint","strokeWidthEms","strokeOpacity","strokeColor","hostType","hostIndex","textAlign","chemicalReactions","updateInterval","createAngularBonds","noLoops","valenceElectrons","bondEnergy","activationEnergy","bondProbability","imageUri","imageX","imageY","imageHostType","imageHostIndex","imageLayer","imageLayerPosition","quantumDynamics","elementEnergyLevels","photons","radiationlessEmissionProbability","lightSource","monochromatic","radiationPeriod","numberOfBeams","angleOfIncidence","photon","angularFrequency","tychei","pool","math","nodecrypto","startdenom","significance","seedrandom","shortseed","mixkey","flatten","typ","entropy","tostring","randomBytes","crypto","msCrypto","getRandomValues","browser","screen","autoseed","arc4","ARC4","pass","is_math_call","keylen","smear","stringseed","ParentEndpoint","getIFrameEndpoint","targetWindow","phone","pendingCallbacks","callbackObj","messageType","timeout","getPseudoUUID","expose","Markdown","dialect","dialects","Gruber","em_state","strong_state","debug_indent","mk_block_toSource","uneval","trailing","lineNumber","mk_block_inspect","util","toTree","toHTMLTree","renderJsonML","attrs","extract_attr","refs","references","convert_tree_to_html","jsonml","preprocessTreeNode","level","merge_text_nodes","mk_block","block","trail","toSource","count_lines","strong_em","tag","md","state_slot","other_slot","CloseTag","len_after","orig_match","processInline","split_blocks","startLine","blocks","line_no","processBlock","cbs","ord","__order__","__call__","debug","custom_root","old_tree","print","loop_re_over_block","atxHeader","setextHeader","block_search","horizRule","lists","bullet_list","is_list_re","indent_re","loose","nl","add_to","what","get_contained_blocks","paragraphify","last_li","sublist","make_list","li_accumulate","line_re","wanted_depth","found","indent","contained","next_block","hr","blockquote","abutting","processedBlock","isEmpty","referenceDefn","para","__oneElement__","patterns_or_re","previous_nodes","__patterns__","patterns","__escape__","DialectHelpers","inline_until_char","consumed","open_parens","buildBlockOrder","buildInlinePatterns","want","subclassDialect","Block","Inline","Maruku","processMetaHash","meta_string","meta","in_quotes","letter","split_meta_hash","document_meta","block_meta","definition_list","tight","terms","defns","table","_split_on_unescaped","html_attrs","html_row","thisp","escapeHTML","render_tree","tag_attrs","color_string","simple_colors","feldspar","lightslateblue","rebeccapurple","violetred","color_defs","example","bits","processor","channels","toRGB","toRGBA","toHex","getHelpXML","examples","sc","list_item","list_color","RGBColor","example_div","createTextNode","list_item_value","mul_table","shg_table","getImageDataFromCanvas","top_x","top_y","HTMLCanvasElement","imageData","processCanvasRGBA","processImageDataRGBA","yp","yw","r_sum","g_sum","b_sum","a_sum","r_out_sum","g_out_sum","b_out_sum","a_out_sum","r_in_sum","g_in_sum","b_in_sum","a_in_sum","pg","pb","pa","rbs","pixels","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","BlurStack","stackEnd","stackIn","stackOut","mul_sum","shg_sum","processCanvasRGB","processImageDataRGB","blurAlphaChannel","HTMLImageElement","naturalWidth","naturalHeight","canvasRGB","imageDataRGBA","imageDataRGB","containerColors","1","require","numberWidth","fontSizeInPixels","numberStr","testSVG","testText","getBBox","axisProcessDrag","currentdrag","originExtent","maxDragIn","newdomain","axis1","axis2","2","i18n","idOrElement","vis","plot","viewbox","selectedRulerX","selectedRulerY","titleTooltip","xScale","yScale","xTickCount","yTickCount","fx_d3","fy_d3","buttonLayer","legendLayer","legendButton","selectionButton","drawButton","titleBackground","notification","graphCanvas","gcanvas","gctx","markerCursorStyle","halfFontSizeInPixels","titleFontSizeInPixels","axisFontSizeInPixels","xlabelFontSizeInPixels","ylabelFontSizeInPixels","xlabelMetrics","ylabelMetrics","xAxisNumberWidth","yAxisNumberWidth","xAxisNumberHeight","yAxisNumberHeight","xAxisVerticalPadding","yAxisHorizontalPadding","xAxisLabelHorizontalPadding","xAxisLabelBaseline","yAxisLabelBaseline","xAxisDraggableHeight","yAxisDraggableWidth","xAxisDraggable","yAxisDraggable","xAxisDraggableTooltip","yAxisDraggableTooltip","markerRadius","markerStrokeWidth","pointArray","pointArrayIndexed","pointsXMin","pointsXMax","pointsYMin","pointsYMax","currentSample","sampleInterval","dataSampleStart","selection_listener","brush_element","brush_control","api","gridStroke","tx","ty","annotations","titles","sizeType","category","tiny","small","medium","large","downx","downy","draggedPoint","selectable","pointListeners","default_options","showButtons","buttonsStyle","buttonsLayout","legendVisible","responsiveLayout","fontScaleRelativeToParent","hideAxisValues","enableAutoScaleButton","enableAxisScaling","enableZooming","enableSelectionButton","clearSelectionOnLeavingSelectMode","enableDrawButton","enableLegendButton","titlePosition","drawIndex","dataPoints","dataSamples","sortPoints","xmax","xmin","ymax","ymin","autoScaleX","autoScaleY","autoScalePadding","xFormatter","yFormatter","xscale","yscale","xscaleExponent","yscaleExponent","axisShift","markAllDataPoints","markNearbyDataPoints","extraCirclesVisibleOnHover","showRulersOnSelection","dataChange","addData","bars","onAutoscale","onXDomainChange","onYDomainChange","dataColors","legendLabels","selection_region","has_selection","selection_visible","selection_enabled","draw_enabled","mesg","setupOptions","lang","initializeLayout","xrange","yrange","domainObservingScale","updateScales","setupScales","onePercent","yrange2","yrange4","datacount","xtic","ytic","resetDataPoints","resetDataSamples","setCurrentSample","getTopPadding","topPadding","updateAxesAndSize","tickVal","metrics","updateXScale","updateYScale","samplePoint","indexedData","samples","pnts","createButtonLayer","updateLegendVisibility","autoscaleButton","autoscale","toggleSelection","drawEnabled","resizeButtonLayer","renderNewGraph","plotMousemove","plotDrag","zoomBehavior","resizeCanvas","yAxisDrag","xAxisDrag","catefory","adjustAxisDraggableFill","getComputedTextLength","updateMarkers","updateRulers","repaintExistingGraph","updateBrushElement","gx","gxe","gy","gye","gye_length","annotationTypes","bar","annotationsSelection","annotationAttributes","updateCanvasFromPoints","updateOrRescale","circleClasses","updateMarkerRadius","markedPoints","dataPointDrag","pMin","pMax","mousePoint","translatedMousePointX","findClosestPointByX","addPointAtMouse","notifyPointListeners","newpointIdx","newpoint","pointsIndexed","processPointsArray","isBetween","isBetweenReversed","clearPointsBetween","newPoints","needsUpdate","copyNonNull","falseFunction","onselectstart","prevPoint","minusHalf","plusHalf","graphx","graphy","xAxisStart","xAxisEnd","yAxisStart","yAxisEnd","isPointInsideGraph","domainXChanged","domainYChanged","maxPointsLen","xPadding","scaleAxis","yPadding","minVal","maxVal","dMin","dMax","domainChanged","scaleExponent","selectionVisible","selectionEnabled","selectionDomain","brushListener","pointsLength","pointStop","yOrigin","numberOfLines","setStrokeColor","setFillColor","afterSamplePoint","getDataColor","colorIndex","checkPointsOrder","newPointIdx","newPoint","updatePointsExtent","copyNonNullKeepIndexing","sorted","datapoints","datasamples","deletePoint","pointIndex","arrayIndex","registerKeyboardHandler","evt","updateTitle","renderGraph","updateXlabel","updateYlabel","createLegendLayer","repaint","notify","selectionListener","hasSelection","brushElement","brushControl","addPointListener","clearPointListeners","xDomain","yDomain","xLabel","yLabel","numberOfPoints","addAnnotation","annotation","resetAnnotations","addPoints","addDataPoints","replacePoints","oldPoint","pointModified","setDataPoints","pnt","resetPoints","addSamples","addDataSamples","addSample","sample","resetSamples","3","getTranslation","translations","fallback","4","5","Backbone","previousBackbone","noConflict","emulateHTTP","emulateJSON","_listening","Events","eventSplitter","eventsApi","iteratee","onApi","listening","_listeners","interop","listenTo","_listenId","listeningTo","_listeningTo","Listening","tryCatchOn","offApi","stopListening","_callback","cleanup","once","onceMap","listenToOnce","offer","triggerApi","objEvents","allEvents","triggerEvents","a2","a3","Model","preinitialize","cid","cidPrefix","collection","validationError","idAttribute","toJSON","sync","escape","_validate","unset","changes","changing","_changing","_previousAttributes","isEqual","_pending","changedAttributes","old","previousAttributes","fetch","resp","serverAttrs","wrapError","isNew","patch","defer","urlError","encodeURIComponent","Collection","models","_reset","addOptions","tail","singular","_removeModels","added","_isModel","toMerge","toRemove","modelMap","sortAttr","existing","_prepareModel","_addReference","orderChanged","some","_removeReference","previousModels","_byId","modelId","where","findWhere","sortBy","pluck","callbackOpts","CollectionIterator","ITERATOR_VALUES","ITERATOR_KEYS","ITERATOR_KEYSVALUES","_onModelEvent","prevId","$$iterator","kind","_collection","_kind","_index","View","pick","_ensureElement","delegateEventSplitter","$el","_removeElement","setElement","undelegateEvents","_setElement","delegateEvents","delegate","undelegate","_createElement","_setAttributes","addUnderscoreMethods","Class","defaultVal","addMethod","modelMatcher","collect","foldl","inject","reduceRight","foldr","detect","every","any","include","includes","invoke","head","take","initial","without","difference","chain","groupBy","countBy","indexBy","findIndex","findLastIndex","omit","config","Base","mixin","mappings","functions","memo","methodMap","params","contentType","_method","processData","textStatus","errorThrown","delete","read","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","escapeRegExp","route","_routeToRegExp","router","history","fragment","_extractParameters","navigate","optional","param","History","checkUrl","routeStripper","rootStripper","pathStripper","atRoot","pathname","getSearch","matchRoot","decodeFragment","decodeURI","getHash","getPath","getFragment","_usePushState","_wantsHashChange","hashChange","_hasHashChange","_useHashChange","_wantsPushState","pushState","_hasPushState","rootPath","iWindow","attachEvent","_checkUrlInterval","loadUrl","detachEvent","decodedFragment","assign","_updateHash","protoProps","staticProps","__super__","factory","hasProperty","regExpTest","nonSpaceRe","isWhitespace","testRegExp","entityMap","whiteRe","spaceRe","equalsRe","curlyRe","tagRe","Scanner","Context","parentContext","Writer","templateCache","_cache","eos","scan","scanUntil","lookup","intermediateValue","lookupHit","clearCache","tags","cacheKey","mustache","isCacheEnabled","openingTagRe","closingTagRe","closingCurlyRe","lineHasNonSpace","sections","hasTag","nonSpace","indentation","tagIndex","stripSpace","compileTags","tagsToCompile","openSection","scanner","valueLength","nestedTokens","collector","numTokens","nestTokens","lastToken","squashedTokens","squashTokens","parseTemplate","partials","renderTokens","originalTemplate","renderSection","renderInverted","renderPartial","unescapedValue","escapedValue","rawValue","indentPartial","partial","filteredIndentation","partialByNl","indentedValue","defaultWriter","IframePhoneRpcEndpoint","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","argv","versions","emit","prependListener","prependOnceListener","binding","cwd","chdir","umask","constantName","constant","units","constants","ATOMIC_MASS","BOLTZMANN_CONSTANT","AVAGADRO_CONSTANT","PERMITTIVITY_OF_FREE_SPACE","COULOMB_CONSTANT","measure","truncate","newText","$span","alterClass","removals","additions","patt","it","cn","special","destroyed","BarGraphModel","secondValue","barWidth","titleOn","barColor","fillColor","labelFormat","uid","getRealWidth","d3selection","BarGraphView","$topArea","axisContainer","gridContainer","trianglePos","traingle","titleContainer","heightScale","yAxis","$bottomArea","modelChanged","formatString","unitsString","getScaleFunc","renderLabels","_setupHorizontalTitle","svgHeight","setupValueLabelPairs","_getFillGradient","_getBarGradient","_setupGrid","_setupTitle","valChanged","secValChanged","gradient","titleG","gEnter","_processTitle","truncatedText","$title","AIR_THERMAL_CONDUCTIVITY","AIR_SPECIFIC_HEAT","AIR_DENSITY","AIR_VISCOSITY","STEFAN_CONSTANT","__webpack_amd_options__","_typeof","_defineProperty","_objectSpread","ownKeys","getOwnPropertySymbols","sym","_classCallCheck","_defineProperties","descriptor","_createClass","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","_getPrototypeOf","_setPrototypeOf","_inherits","subClass","superClass","_toConsumableArray","arr2","iter","_slicedToArray","_arr","_n","_d","_e","_s","_i","consoleLogger","warn","_console","baseLogger","Logger","concreteLogger","logger","bool","_len","_key","_len2","_key2","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","EventEmitter","observers","_this","cloned","observer","_cloned","makeString","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","setPath","_getLastOfPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","overwrite","regexEscape","_entityMap","_EventEmitter","ResourceStore","defaultNS","keySeparator","lng","addNamespaces","resources","addResource","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","postProcessor","processors","addPostProcessor","translator","checkedLoadedFor","Translator","services","language","interpolation","resolved","nsSeparator","_this2","overloadTranslationOptionHandler","_this$extractFromKey","extractFromKey","appendNamespaceToCIMode","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","copy$$1","newKeyToUse","deepKey","extendTranslation","usedDefault","isValidLookup","pluralResolver","getSuffix","updateMissing","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","missingKeyHandler","backendConnector","saveMissing","needsPluralHandling","saveMissingPlurals","getPluralFormsOfKey","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","usedLng","usedNS","skipInterpolation","interpolator","defaultVariables","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","_this4","extracted","fallbackNS","needsContextHandling","codes","utils","hasLoadedNamespace","pluralSuffix","possibleKey","finalKey","finalKeys","addLookupKeys","contextSeparator","returnNull","returnEmptyString","resourceStore","capitalize","LanguageUtil","formatLanguageCode","specialCases","lowerCaseLng","cleanCode","nonExplicitWhitelist","getLanguagePartFromCode","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","isWhitelisted","fc","sets","nr","_rulesPluralsTypes","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","createRules","rules","numbers","plurals","PluralResolver","rule","getRule","noAbs","simplifyPluralSuffix","returnSuffix","compatibilityJSON","Interpolator","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexp","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","nestingRegexp","replaces","regexSafe","handleFormat","missingInterpolationHandler","_temp","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","Connector","backend","store","languages","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","errors","_name$split2","addResourceBundle","_getLastOfPath2","fcName","tried","queueLoad","loadOne","prepareLoading","_this5","_name$split3","_name$split4","fallbackValue","isUpdate","initImmediate","preload","pluralSeparator","partialBundledLanguages","tDescription","transformOptions","I18n","external","isClone","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","storeApi","_this2$store","deferred","changeLanguage","usedCallback","isLanguageChangingTo","setLng","cacheUserLanguage","loadResources","fixedT","_this$translator","_this$translator2","_this6","lastLng","loadNotPending","loadState","_this7","preloaded","newLngs","_this8","mergedOptions","membersToCopy","interactive","publicationStatus","labEnvironment","i18nMetadata","showTopBar","showBottomBar","credits","subtitle","about","subCategory","screenshot","importedFrom","randomSeed","helpOnLoad","aboutOnLoad","parameters","dataSets","propertiesToRetain","outputs","filteredOutputs","experiment","logging","helpTips","onLoad","modelOptions","parameter","unitName","unitPluralName","unitAbbreviation","dataSet","serializableProperties","streamDataFromModel","clearOnModelReset","initialData","filteredOutput","selectionComponents","perRun","perTick","enabled","timeSeries","destinations","stateButtons","startRun","stopRun","saveRun","nextRun","clearAll","onReset","savedRuns","experimentTimeSeries","experimentParameter","experimentDestination","componentIds","experimentSavedRun","playback","stepping","helpIcon","urlRelativeTo","checkbox","textOn","retainProperty","slider","fillToValue","displayValue","pulldown","labelOn","pulldownOption","radioOption","numericOutput","thermometer","labelIsReading","reading","joystick","colorIndicator","colorValue","spectrometer","upperBound","lowerBound","clearOnModelLoad","tableData","addNewRows","visibleRows","showBlankRow","indexColumn","propertyColumns","headerData","graph","resetAxesOnReset","drawProperty","xProperty","syncXAxis","syncYAxis","barGraph","secondProperty","averagePeriod","helpTip","component","showcase","resourcePath","rootUrl","code2flag","countryCode","resourcesUrl","languageSelect","interactiveController","metadataDownloaded","currentLang","requestInteractiveAt","setupContextMenu","interactiveRendered","$icon","setupLangIcon","ListeningPool","_nameSpace","registeredListeners","_nameSpaced","listen","speaker","eventKey","listeningRecord","isD3Listner","removeAll","argsToArray","DispatchSupport","d3dispatch","batchMode","suppressedEvents","newTypes","funcName","mixInto","suppressEvents","addEventTypes","startBatch","endBatch","dataSetCount","DataSet","interactivesController","isPrivate","_model","getModel","validator","_modelProperties","_listeningPool","_dispatch","resetData","addDataSet","SAMPLE_ADDED","SAMPLE_CHANGED","SAMPLE_REMOVED","DATA_TRUNCATED","DATA_RESET","SELECTION_CHANGED","LABELS_CHANGED","_setupEmptyData","_inNewModelTerritory","stepCounter","maxLength","_addListeners","listeningPool","positionChanged","appendDataPoint","removeModelDataAfterStepPointer","addPropertyDescriptionObserver","getLabels","_getModelProperty","_getPropertyLabel","description","getPropertyDescription","getLabel","getUnitAbbreviation","_resetProperty","getData","dataPointIndex","allValuesMatching","valuesLength","propsLength","clearData","resetProperties","dataPoint","removeDataPoint","editDataPoint","modelLoadedCallback","serializeData","handleExternalEvent","evtName","helpIconSupport","componentDef","helpSystem","$helpIcon","isActive","showSingle","barGraphOptionForComponentSpecProperty","grapherOptionForComponentSpecProperty","graphControllerCount","throwIfError","isCodapPresent","frameConfig","codapPhone","iframePhone","notificationHandler","isEmbeddedInCODAP","canExportData","resource","initInteractiveFrame","codapDidConnect","doCommand","existingConfig","newIframeConfig","preventDataContextReorg","savedState","cmd","exportData","perRunAttrs","perRunData","timeSeriesAttrs","timeSeriesData","parentTableName","childTableName","dataContextName","parentTable","singleCase","pluralCase","singleCaseWithArticle","setOfCases","setOfCasesWithArticle","childTable","singleTable","shouldExportTimeSeries","runNumber","chunkSize","chunks","openTable","createDataContext","collections","collapseChildren","casesCount","cases","prevRunNumber","getDataContext","logAction","logString","formatStr","defOptions","BasicDialog","_eventNamePrefix","$content","setContent","enableLogging","logFunc","openTime","eventNamePrefix","wasOpenFor","ExportController","spec","perTickValues","controller","initialPerRunData","modelCanExportData","isUnexportedDataPresent","askAboutDataDiscard","getDataPoint","removeDataAfterStepPointer","handleDataDiscard","resetRequest","getCurrentPerRunData","proceed","willResetModelHandler","modelToBeReset","handleModelInitialization","cause","handleModelLoaded","propertyExists","getLabelForProperty","getCodapAttrForProperty","dataAreAvailableForExport","hasPlayed","isStopped","_spec","selectedData","getComponent","changedParameters","perRunPropertyLabels","perRunPropertyValues","perTickLabels","currentPerRunData","changesList","anyChanged","getChangedParameterValues","codapInterface","LogController","_properties","boundProperties","_interactivesController","_phone","_modelLoadedHandler","_interactiveWillReloadHandler","_setupComponents","_enableLoggingIn","additionalComponents","_logToCODAP","_genericLog","enabledComponents","componentsList","compID","logFunction","comp","_getProperties","propData","namespaceCount","shadowedGlobals","errorForKey","setShadowedGlobals","ScriptingAPI","onModelReset","randomInteger","swapElementsOfArray","trackEvent","_gaq","isInteger","randomFloat","choose","deg2rad","rad2deg","freeze","unfreeze","actionName","loadModel","getLoadedModelId","onPropertyChange","propertyName","addPropertiesListener","callAt","checkTime","removeObserver","startChecking","addObserver","onStart","callEvery","lastCall","modelContainer","setClickHandler","onDrag","setDragHandler","setSelectHandler","setComponentDisabled","setDisabled","clearDataSet","getDataSet","resetDataSet","resetDataSetProperties","appendDataPropertiesToComponent","setComponentAttributes","componentID","setAttributes","syncAxisRangesToPropertyRanges","scrollXAxisToZero","resetGraphSelection","onStop","reloadModel","reloadInteractive","stepForward","isNewStep","updateModelView","stepBack","getFPS","getSimulationProgressRate","startPerformanceTuning","performanceOptimizer","repaintModelView","exportController","getCardinalDirection","getCompassDirection","deg","bindModel","newModel","ModelScriptingAPI","exposeScriptingAPI","script","argNames","argVals","makeFunctionInScriptContext","scriptFunctionMakerSource","scriptFunctionMaker","scriptFunction","argumentsToScript","scriptSource","Child","Parent","enableView","viewState","disableView","disablable","InteractiveComponent","_scriptingAPI","getScriptingAPI","_optionallyAddOnClickHandlers","_modelLoadedCallback","_updateClickHandler","_actionClickFunction","_onClick","setAction","newAction","setOnClick","newOnClick","_clickTargetSelector","buttonControllerCount","ButtonController","CheckboxController","actionScript","$checkbox","$fakeCheckable","scriptingAPI","updateCheckbox","setCheckbox","updateCheckboxDisabledState","getFrozen","customClickEvent","getNextTabIndex","propObj","removePropertyDescriptionObserver","markdownToHTML","TextController","externalUrl","ImageController","_controller","_$img","_externalUrl","modelUrl","labConfig","modelsRootUrl","SelectBoxView","ignoreChangeEvent","$select","$wrapper","changeHandler","$option","ulEms","textMaxWidth","boxWidth","$options","pxToEm","CloneRestoreWrapper","hashOfArrays","padArraysWithZeroes","$__common_jquery_plugins","arrayContainer","notSafari","useTyped","floatType","int32Type","int16Type","int8Type","uint16Type","uint8Type","PLANCK_CONSTANT","ENERGY_GAP_TOLERANCE","TWO_PI","QuantumDynamics","engine","modelTime","atoms","atom1Idx","atom2Idx","dxFraction","dyFraction","pRadiationless","excitationTime","nextPhotonId","currentlyOperatedPairs","numPhotons","handlePhotonAtomCollision","photonIndex","preciseEnergy","tryToAbsorbPhoton","removePhoton","newFreq","photonAbsorbed","nLevels","energyLevels","energyLevelIndex","electronEnergy","photonEnergy","tryToThermallyExciteAtoms","atomWasExcited","tryToExciteAtom","currentEnergyLevel","currentElectronEnergy","relativeKE","highest","nextEnergyLevel","energyAbsorbed","computeVelocityComponents","getRelativeKE","updateVelocities","normalizationFactor","du","energyDelta","v1","v2","tryToThermallyDeexciteAtoms","excitation1","excitation2","readyToThermallyDeexcite","deexciteAtom","currentLevel","newLevel","energyReleased","emitPhotonFromAtom","emitPhoton","energy","angularFreq","findEmptyPhotonIndex","cosA","sinA","tryToSpontaneouslyEmitPhoton","excessEnergy","r2","mInverse","emitLightSourcePhotons","spacing","nBeams","getEnergy","dataTables","arrayTypes","serializedPhotons","createPhotonsTable","copyPhotonData","performActionWithinIntegrationLoop","neighborList","movePhotons","numAtoms","getNumberOfAtoms","handlePhotonAtomCollisions","el1","el2","energyLevels1","energyLevels2","xij","yij","avrSigma","atomWasDeexcited","nlist","getList","currentlyClosePairs","getStartIdxFor","getEndIdxFor","thermallyExciteAndDeexciteAtoms","spontaneouslyEmitPhotons","turnOnLightSource","turnOffLightSource","setLightSourceAngle","setLightSourceFrequency","freq","setLightSourcePeriod","setLightSourceNumber","getPhotons","getNumPhotons","getViewPhotons","viewPhotons","viewPhotonsByIndex","makeViewPhoton","viewPhoton","getElementEnergyLevels","getRadiationlessEmissionProbability","getLightSource","getState","INFRARED","ULTRAVIOLET","SpectrometerController","_existingPhotonMarks","renderBackground","renderTickMarks","$photonMarksContainer","onPhotonAbsorbed","$tickMarksContainer","photonMarkExists","addPhotonMark","DEFAULTS","onchange","fontLoaded","loading","getBitmap","FONT_SIZE","toDataURL","stopChecking","pollingInterval","detectFontChange","_options","multipleFonts","fontName","bitmap","changeCallbacks","startTime","fontChecker","NumericOutputView","$numericOutput","$output","$number","$units","lastValue","minContentWidth","$canvas","textY","canvasElementWidth","canvasElementHeight","canvasInternalWidth","canvasInternalHeight","textWidth","oversampledFontSize","repositionCanvas","updateLabel","updateUnits","hideUnits","showUnits","TableView","tableController","headerWidths","$tableWrapper","$table","$thead","$titlerow","$tbody","$bodyrows","columns","formatters","blankRow","klasses","renderColumnTitles","$th","columnSort","setFormattedData","$td","colIdx","sortOrder","removeBlankRow","tsort","sortFunction","anum","bnum","setupBlankRow","alignColumnWidths","getRowByIndex","rowIndex","addSelection","$tr","fillSelection","rowOrderIndices","indices","getRowOrderIndices","clearSelection","appendSingleRow","rowData","scrollToBottom","calculateSizeAndPosition","commitEditing","colIndex","addDataToCell","ri","startEditing","nextColIndex","$oldInputs","getDataInCell","remainingHeight","appendDataRow","appendDataRows","startIndex","removeDataRows","startIdx","replaceDataRow","$dataElements","dataElementCount","removeSelection","updateTable","tableControllerCount","windows_platform_token","os_platform","systemInfo","systemInfoArray","arch","average_row","what_browser","oscpu","buildID","buildDate","platform_match","cpuClass","platform","appVersion","browser_detect","_isMobile","_browser","renderToTable","benchmarks_table","benchmarksThatWereRun","results_row","title_cells","col_number","col_numbers","add_column","add_row","num_cols","tr","add_result","cell_index","num_rows","average_elements","genericDecimalFormatter","genericIntegerFormatter","numeric","formatter","update_averages","bench","benchmarks_to_run","resultsCallback","start_callback","end_callback","commit_link","bencharks_queue","browser_info","Lab","repo","commit","short_sha","dirty","branch","runBenchmark","doneCallback","versionedHome","last_tag","host","protocol","iframeEndpoint","sendPropertyValue","setFocus","urlHelper","loadInteractive","modelObject","benchmarks","benchmark","sendDatasetEvents","datasetName","dataset","enableWhen","condition","disableWhen","PlaybackController","_modelStopped","_modelPlayable","_modelHasPlayed","_dataAreAvailableForExport","_timeDesc","_fontSpec","_updateClockVisibility","controlButtonMethods","video","createControls","_$reset","_$playPause","_$timeDisplay","_$timeCanvas","_timeCtx","_$stepBackward","_$stepForward","updateButtonStates","stopped","playable","playing","updateControlButtonChoices","$buttons","setClockVisibility","_timeChanged","setClockValue","_canvWidth","_canvHeigth","_$start","_$stop","codap","_$analyzeData","_$newRun","_createControls","_controlButtonMethods","_updateButtonStates","_fitButtons","_updateControlButtonChoices","_setClockVisibility","_setClockValue","_updateCachedSimulationState","modelStopped","modelPlayable","isPlayable","modelHasPlayed","_simulationStateChanged","displayTime","_useDurationChanged","_useDuration","actualUseDuration","_updateDurationControl","durationOptions","actualDuration","selectOptions","durationControl","formatTime","_controlButtonChoicesChanged","_controlButtonStyleChanged","relativeFontSize","fontSizeStyle","parentWidth","$durationControl","elementWidth","MIN_FONT_SIZE","$b","_fitButtonsOnResize","_debouncedFitButtons","debounce","simulationStateChanged","DivController","divController","OVERLAY_MY","OVERLAY_AT","HelpSystem","$tip","$instructions","tipIdx","showTip","$component","overlayHeight","compDef","contPos","minLeft","maxRight","minTop","maxBottom","$arrow","leftOffset","eLeft","eWidth","tLeft","tWidth","$overlay","single","keycode","componentName","hasShowcase","lastClose","customTooltipsEnabled","$tooltip","fadeInID","fadeOutID","wasShown","vertOffset","$posTarget","delayVal","clearTooltipState","fadeIn","fadeOut","sKey","sValue","vEnd","sPath","sDomain","bSecure","sExpires","toGMTString","cookie","setupBanner","creditsDialog","aboutDialog","shareDialog","createElementInContainer","Controller","topBarHeight","topBarVerticalPadding","sharing","screenfull","isFullscreen","isPlaybackDefinedByAuthor","AboutDialog","parentSelector","_i18n","$aboutContent","interactive_title","getCopyright","MIT_link","license_link","concord_org_link","ShareDialog","interactiveContainerSelector","embeddablePath","_view","paste_html","select_size","size_larger","size_actual","size_smaller","copyright","homeForSharing","embeddableSharingUrl","homeEmbeddablePath","paste_email_im","_$interactiveContainer","_$iframeSize","_$iframeContent","updateIframeSize","actualWidth","actualHeight","CreditsDialog","interactiveCreditsUrl","utmString","concordUrl","nextGenUrl","utmCampaign","encodeURI","credits_text","CC_link","Next_Gen_MW_link","Google_link","find_shareable","shareable_ver_link","showShareable","nowFunc","performance","collectData","enterScope","lastTime","timeSum","leaveScope","getAvgTime","getAvgFreq","ModelController","ModelContainer","Benchmarks","resetCause","tickStartHandler","tickHandler","waitForSetup","resetHandler","RESET_CAUSE","RESET","modelReset","initializeView","setup","updateView","newModelUrl","newModelOptions","willReset","modelLoaded","LOAD_CAUSE","RELOAD","INITIAL_LOAD","metaData","propertiesHash","infinityToString","descriptorProperties","beforeSetCallback","afterSetCallback","afterGetTransform","beforeSetTransform","includeInHistoryState","invokeSetterAfterBulkRestore","validateIsType","propertyKey","PropertySupport","invalidatingChangeOccurredDuringBatch","propertyTypes","propertyInformation","cachedPropertiesObjects","byType","cachingIsEnabled","notificationsAreBatched","invalidatingChangeNestingLevel","suppressInvalidationForBatch","changedPropertyKeys","computedPropertyKeys","historyStatePropertyKeys","observedComputedPropertyKeys","validateDescriptor","descriptorProperty","validateIsPropertyType","notifyCallbacksOnce","called","withBatchedNotifications","closure","info","hasCachedValue","cachedValue","setPropertyDescription","propertyDescriptionObservers","notifyPropertyDescriptionObservers","getPropertiesObject","constructProperty","seal","propertiesOfType","setFrozen","isPropertyWritable","getPropertyType","getPropertyValidateFunc","makeInvalidatingChange","invalidatingChangePreHook","invalidatingChangePostHook","previousValue","deleteComputedPropertyCachedValues","storeComputedProperties","notifyChangedComputedProperties","notifyAllComputedProperties","setRawValues","enableCaching","beforeInvalidatingChange","afterInvalidatingChange","afterInvalidatingChangeSequence","PropertyDescription","unitDefinition","descriptionHash","_descriptionHash","_label","_unitName","_unitPluralName","_unitAbbreviation","_unitType","pluralName","_min","_max","_frozen","setFormat","getUnitName","getUnitPluralName","getUnitType","getMin","getMax","_formatter","formattedVal","abbreviated","_lastFormat","_lastFormatter","ParameterSupport","propertySupport","unitsDefinition","defineParameter","RunningAverageFilter","periodLength","_time","_idx","_maxBufferLength","timeDiff","minTime","valSum","SimplePeriodFilter","_zero_crossing_buffer","_period_buffer","previous_value","previous_zero_crossing","OutputSupport","tickHistory","updateFilteredOutputs","defineOutput","defineFilteredOutput","filteredPropertyKey","registerExternalObject","extract","setCurrentStep","setHistoryLength","setMaxBufferLength","calculate","updateAllOutputProperties","resetAllOutputProperties","PlaybackSupport","computeActualUseDuration","computeActualDuration","eventsSupported","stopRequest","restartRequest","timePropertyDescription","timePerTick","elapsedTime","tickStart","sampleRate","play","restart","LabModelerMixin","playbackSupport","setters","unitsTranslation","initialProperties","usePlaybackSupport","parameterSupport","outputSupport","dispatchSupport","saveInitialState","defineBuiltinProperty","metadataForType","translateToModelUnits","translateFromModelUnits","defineBuiltinProperties","TickHistory","modelState","initialState","listState","externalObjects","useNewInterface","getProperties","maxSize","startCounter","copyModelState","destination","getRawPropertyValue","isDefined","lastState","invalidateFollowingState","restoreProperties","restoreParameters","checkIndexArg","returnTick","ptr","restoreInitialState","decrementExtract","incrementExtract","seekExtract","externalObj","RNA_CODON_TABLE","firstElementID","lastElementID","aminoacidsProps","cysteineElement","abbrToElement","abbreviation","getAminoAcidByElement","elementID","isAminoAcid","getPolarAminoAcids","abbr","codonToAbbr","codon","$____distributions","getWindowedAverager","$____utils","getAngleBetweenVec","minimize","f_cur","f_prev","grad","maxstepsq","gradnormsq","maxiter","stopval","maxstep","eps","COULOMB_CONSTANT_IN_METERS_PER_FARAD","NANOMETERS_PER_METER","COULOMBS_SQ_PER_ELEMENTARY_CHARGE_SQ","EV_PER_JOULE","MW_FORCE_UNITS_PER_NEWTON","k_ePotential","k_eForce","forceFromSquaredDistance","rSq","q2","dC","rDE","potential","forceOverDistanceFromSquaredDistance","epsilon1","epsilon2","sigma1","sigma2","alpha_Potential","beta_Potential","alpha_Force","beta_Force","calculator","setCoefficients","getCoefficients","validateEpsilon","validateSigma","setEpsilon","setSigma","potentialFromSquaredDistance","r_sq","r_minus2nd","r_minus6th","r_minus8th","coulomb","lennardJones","PairwiseLJProperties","_engine","changePreHook","changePostHook","_changePreHook","_changePostHook","setPairwiseLJProperties","key1","innerObj","key2","CellList","cellSize","colsNum","rowsNum","cellsNum","reinitialize","newCellSize","addToCell","atomIdx","cellIdx","getCell","getRowsNum","getColsNum","getNeighboringCells","rowIdx","NeighborList","atomsNum","maxDisplacement","maxAtomsNum","listIdx","listCapacity","forceUpdate","newAtomsNum","newMaxDisplacement","markNeighbors","saveAtomPosition","xCoord","yCoord","shouldUpdate","newX","newY","maxDx","maxDy","PluginController","registerPlugin","callPluginFunction","retVal","potentials","BOLTZMANN_CONSTANT_IN_JOULES","sumSquare","convertKEtoT","totalKEinMWUnits","averageKEinMWUnits","validateTemperature","temperature","createEngine","T_target","dt_sq","hydrophobicity","visited","elementMass","elementEpsilon","elementSigma","elementRadius","elementColor","radialBondAtom1Index","radialBondAtom2Index","radialBondLength","radialBondStrength","radialBondType","radialBonds","restraintAtomIndex","restraintK","restraintX0","restraintY0","restraints","angularBondAtom1Index","angularBondAtom2Index","angularBondAtom3Index","angularBondAngle","angularBondStrength","angularBonds","obstacleX","obstacleY","obstacleWidth","obstacleHeight","obstacleVX","obstacleVY","obstacleExtAX","obstacleExtAY","obstacleFriction","obstacleMass","obstacleWestProbe","obstacleNorthProbe","obstacleEastProbe","obstacleSouthProbe","obstaclePermeability","obstacleXPrev","obstacleYPrev","obstacleWProbeValue","obstacleNProbeValue","obstacleEProbeValue","obstacleSProbeValue","obstacles","shapeType","shapeX","shapeY","shapeWidth","shapeHeight","shapeFence","shapes","lineX1","lineY1","lineX2","lineY2","lineFence","electricFieldIntensity","electricFieldOrientation","electricFieldShapeIdx","electricFields","vdwPairs","N_vdwPairs","vdwPairAtom1Index","vdwPairAtom2Index","springForceAtomIndex","springForceX","springForceY","springForceStrength","springForces","cellList","updateNeighborList","x_CM","y_CM","px_CM","py_CM","vx_CM","vy_CM","omega_CM","sizeHasBeenInitialized","pluginController","useCoulombInteraction","dielectricConst","dnaTranslationInProgress","useLennardJonesInteraction","useThermostat","vdwLinesRatio","N_elements","elementUsed","N_radialBonds","radialBondsChanged","N_restraints","N_angularBonds","N_obstacles","N_shapes","N_lines","N_electricFields","N_springForces","cutoffDistance_LJ_sq","cutoffNeighborListSquared","ljCalculator","freeCysteinesList","ljCoefficientChangeError","epsilon_i","epsilon_j","sigma_i","sigma_j","customProps","pairwiseEpsilon","pairwiseSigma","newLJCalculator","computeMaxCutoff","maxCutoff","computeNeighborListMaxDisplacement","initializeCellList","initializeNeighborList","assignShortcutReferences","xPrev","yPrev","createElementsArray","createAtomsArray","createRadialBondsArray","createRestraintsArray","createAngularBondsArray","createVdwPairsArray","createSpringForcesArray","createObstaclesArray","createShapesArray","createLinesArray","createElectricFieldsArray","computeTemperature","twoKE","computeTemperatureOfAtoms","atomIndices","addVelocity","vx_t","vy_t","addAngularVelocity","omega","computeCMMotion","x_sum","y_sum","px_sum","py_sum","totalMass","getTotalMass","computeSystemTranslation","computeSystemRotation","bounceObstacleOffWalls","rightwall","topwall","bounceParticleOffWalls","leftwall","bottomwall","bounceParticleOffObstacles","x_prev","y_prev","updatePressure","x_left","x_right","y_top","y_bottom","x_left_prev","x_right_prev","y_top_prev","y_bottom_prev","vxPrev","vyPrev","obs_vxPrev","obs_vyPrev","atom_mass","obs_mass","atomElement","bounceDirection","bounceParticleOffShapes","x_inside_left","x_inside_right","y_inside_top","y_inside_bottom","x_outside_left","x_outside_right","y_outside_top","y_outside_bottom","shapeX_offset","shapeY_offset","tx_prev","ty_prev","f1x","f1y","f1d","f2x","f2y","f2d","tvx","tvy","nd","bounceParticleOffLines","ld","atom1_to_line","atom2_to_line","line1_to_atom","calculateLJInteraction","fOverR","elI","elJ","radialBondMatrix","shortRangeForcesCellList","cell1","cell2","cell1Len","cell2Len","nLen","cellNeighbors","shortRangeForcesNeighborList","getMoleculeCenterOfMass","molecule","atomMass","xcm","ycm","rectContains","getElFieldForce","updateParticlesAccelerations","inverseMass","charge1","bondingPartners","chargedAtomsList","updateLongRangeForces","updateRadialBondForces","dxij","dyij","dxkj","dykj","rijSquared","rkjSquared","rij","rkj","cosTheta","sinTheta","forceInXForI","forceInYForI","forceInXForK","forceInYForK","commonPrefactor","updateAngularBondForces","f_over_r","updateRestraintForces","updateSpringForces","updateFrictionForces","moleculeAtoms","cm","solventFactor","getMoleculeAtoms","updateAminoAcidForces","updateGravitationalAccelerations","updateElectricFieldsAccelerations","updateDNATranslationAccelerations","halfUpdateVelocity","updateParticlesPosition","width100","height100","pinAtoms","updateParticlesSpeed","updateObstaclesPosition","extFx","extFy","zeroTotalMomentumOfMolecules","sumX","sumY","invMass","adjustTemperature","forceAdjustment","rescalingFactor","removeAngularBondsContaining","conserveEnergy","removeAngularBond","bondedAtoms","addPlugin","setVDWLinesRatio","vdwlr","setGravitationalField","gf","setTemperatureOfAtoms","targetT","vxtmp","vytmp","smallKE","groupT","nGroup","averageKEinJoules","convertTtoKE","setAtomProperties","getTemperatureOfAtoms","setTargetTemperature","setDielectricConstant","setRealisticDielectricEffect","setSolventForceType","sft","setDNAState","setSolventForceFactor","sff","setAdditionalSolventForceMult","asfm","setAdditionalSolventForceThreshold","asft","setDimensions","getLJCalculator","amino","cysteineEl","aminoacidsHelper","removeRadialBond","setRadialBondProperties","conserveAngularBondsEnergy","setAngularBondProperties","setRestraintProperties","setElementProperties","newRadius","setObstacleProperties","canPlaceObstacle","setShapeProperties","setLineProperties","setElectricFieldProperties","addAtom","removeAtom","addElement","addRadialBond","addRestraint","addAngularBond","angleDiff","addKEToAtoms","addSpringForce","updateSpringForce","removeSpringForce","addObstacle","removeObstacle","addShape","removeShape","removeElectricField","addLine","removeLine","addElectricField","atomInBounds","_x","_y","canPlaceAtom","skipPECheck","orig_x","orig_y","PEAtLocation","testX","testY","testXMax","testYMax","newPotentialCalculator","obsX","obsY","obsWidth","obsHeight","obsXMax","obsYMax","setupAtomsRandomly","rowSpacing","colSpacing","vMagnitude","vDirection","nrows","ncols","userElements","removeTranslationAndRotationFromVelocities","getVdwPairsArray","x_i","y_i","index_i","index_j","sig","distanceCutoff_sq","integrate","_dt","iloop","tStart","calculateOptimizationStructures","zeroPressureValues","mult","calculateFinalPressureValues","cys1Idx","cys2Idx","xDiff","yDiff","createDisulfideBonds","minimizeEnergy","maxAcc","getRadialBondsForAtom","rbonds","getAngularBondsForAtom","abonds","getRadiusOfElement","getNumberOfElements","getNumberOfObstacles","getNumberOfShapes","getNumberOfLines","getNumberOfRadialBonds","getNumberOfAngularBonds","getNumberOfRestraints","getNumberOfSpringForces","getNumberOfElectricFields","computeOutputState","elInMWUnits","gravPEInMWUnits","KEinMWUnits","PE","KE","pCM","CM","vCM","testElement","testCharge","calculateGradient","lj","ljTest","energyChange","newKE","oldKE","getAtomKineticEnergy","addKEToAtomPairAndConserveMomentum","deltaKE","v1x","v2x","v1y","v2y","disc","dv1xPlus","dv1xMinus","dv1x","findMinimumPELocation","pot","findMinimumPESquaredLocation","bondedAtom","getBondedAtoms","getCoulombForceAt","resultObj","atomCharge","getAtomNeighbors","getNeighborList","setViscosity","atomsBonded","pluginState","callPluginAccessor","accessorMethodName","md2d","translated","unitsPerBaseUnit","inverseTime","velocity","acceleration","momentum","dampingCoefficient","stiffness","rotationalStiffness","pressure","mks","representationInMD2DUnits","valueInSIUnits","baseUnitTypes","UnitsTranslation","siFactor","translatedUnitsValue","md2dUnitsValue","JUNK_SEQ","JUNK_COMP_SEQ","STATES","STATE_INDEX","NUCLEO_LAST_ID","PROMOTER_SEQ","TERMINATOR_SEQ","PROMOTER_COMP_SEQ","complementarySequence","TERMINATOR_COMP_SEQ","getNucleoID","GeneticProperties","stopCodonsHash","lastTranslationStep","eventMode","ongoingTransitions","DNAComp","mRNA","mRNACode","generateMRNAViewModel","sequence","nucleo","generateDNAViewModel","junkBound","promoterBound","codingBound","terminatorBound","region","updateGeneticProperties","viewModel","newCode","calculatemRNA","calculateStopCodonsHash","stateBefore","stateAfter","removeAminoAcids","stateEqual","generateFinalProtein","aaCount","aaSequenece","generateProtein","centerProtein","nextState","prevState","stateComp","stateA","stateB","parseState","transitionToState","doStateTransition","doDNATransition","newDNA","dispatchChange","suppressViewportUpdate","cancelTransitions","PRECODING_LEN","mutate","newType","DNAComplement","newDNANucleo","newDNACompNucleo","newMRNANucleo","transitionToNextState","stopTransition","jumpToNextState","jumpToPrevState","transitionTo","stateName","lastStateBefore","transcribeStep","expectedNucleotide","queueLen","lastStateName","lastStateAfter","codonComplement","translationStepStarted","codonIdx","xEnd","yEnd","elID","suppressCheck","atomTransition","shiftAminoAcids","xShift","getAtomProperties","batch","proteinCenterOfMass","tickInPlace","connectAminoAcid","bondLen","translationCompleted","atomsCount","transitionEnded","aaSequence","expectedLength","createdAA","xPos","yPos","xStep","yStep","prevRadius","yStepFunc","getRandomAA","getElementProperties","proteinsMaxX","proteinsCenter","viewPortCenter","spaceOnRight","letters","lettersLen","seq","junkSequence","PerformanceOptimizer","_initialTimeStep","_maxTimeStep","_targetProgressRate","_assessPerformance","progressRate","fps","currentMaxTimeStep","PropertyTransition","isFinished","_duration","_easeFunc","_elapsedTime","_id","_propName","_endValue","_interpolator","getObjectProperties","setObjectProperties","_incompleteSpec","AtomTransition","BOND_TYPE","BOND_TYPE_INV","dot","ChemicalReactions","bondToExchange","bondsChanged","modifiedAtoms","isRadical","getBondLength","getBondStrength","getUnpairedElectrons","getPossibleBondType","atom2Mod","maxType","prob","randomValue","getBondType","bondIdx","getBondEnergy","getActivationEnergy","bondType","validateSharedElectronsCount","destroyBonds","forcedCleanup","dpot","ijsq","chemEnergy","ljAdjustment","bondRemoved","creationPotential","collide","a1Radical","a2Radical","bothRadical","a1a2Exchange","a2a1Exchange","willCollide","array1","array2","len1","len2","commonElement","makeBond","tryToExchangeBond","newStrength","oldLength","oldStrength","lenDiff","a1Old","a2Old","el1Old","el2Old","el3","oldType","minCollisionEnergy","oldEnergy","newEnergy","getEnergyForBondExchange","ijsr","vxy","a1Mass","a2Mass","transferRadialBond","tryToMakeAngularBondsStronger","getAngleBetweenAtoms","getMoleculeAngle","bondsCount","pushPossibleBond","aCentral","comparePossibleBonds","createFirstNPossibleBonds","bondAngle","bondDef","addAngularBondBetween","currentAngle","updateRadialBondsTable","updateBondToExchangeArray","createBonds","removeAngularBondOfModfiedAtoms","possibleBonds","setupNewAngularBonds","processOutputState","getBondsChemicalPE","setBondEnergy","bondDescription","setValenceElectrons","md2dModelCount","initializationOptions","lastSampleTime","geneticEngine","editableElements","liveDragSavedFriction","pluginProperties","customSetters","VDWLinesCutoffMap","polarAAs","unitDefinitions","labModelerMixin","newStep","sampleTimes","transitions","registerChangeHooks","viewAtoms","viewRadialBonds","liveDragSpringForceIndex","mapValues","translateToMD2DUnits","translateFromMD2DUnits","runAndDispatchObjectNumberChanges","getNum","addEvent","removeEvent","newNum","readModelState","viewAtom","aminoAcid","updateViewAtoms","viewBond","updateViewRadialBonds","updateViewElectricField","stepStartCounter","seek","createElements","_elements","elementProps","createAtoms","atomProps","createRadialBonds","_radialBonds","radialBondProps","_angularBonds","angularBondProps","createRestraints","_restraints","restraintsProps","createObstacles","_obstacles","obstacleProps","numObstacles","createShapes","_shapes","shapeProps","numShapes","createLines","_lines","lineProps","numLines","createElectricFields","_eFields","eFieldProps","addRandomAtom","randomElement","loc","numTries","prevRadBondsCount","prevAngBondsCount","validatedProps","prevElFieldsCount","getMoleculeBoundingBox","checkLocation","moveMolecule","new_x","new_y","atomMetaData","elementMetaData","getObstacleProperties","obstacleMetaData","getShapeProperties","shapeMetaData","getLineProperties","lineMetaData","changeElectricField","getElectricFieldProperties","elFieldMetaData","getRadialBondProperties","radialBondMetaData","getRestraintProperties","restraintMetaData","getAngularBondProperties","angularBondMetaData","setSolvent","solventName","solvent","Solvent","forceType","springConstant","springForceIndex","addTextBox","textBoxesChanged","removeTextBox","setTextBoxProperties","addImage","imagesChanged","removeImage","setImageProperties","getTextBoxProperties","getImageProperties","liveDragStart","LIVE_DRAG_FRICTION","liveDrag","liveDragEnd","get_elements","getAtoms","getRadialBonds","getElectricField","displayTimeUnits","displayTimePropertyDescription","recomputeProperties","get_obstacles","get_shapes","get_lines","getNumberOfTextBoxes","get_restraints","getPairwiseLJProperties","get_vdw_pairs","sampleTime","processTransitions","getUnitDefinition","ljProps","propCopy","rawProperties","rawValues","Boolean","sigmaIn01Angstroms","sigmaInNm","aminoacids","volume","molWeight","createAminoAcids","invalidation","initializeEngine","GeneticEngine","deserialize","historyStateRawValues","CACHE","cssPointerEvents","$div1","$div2","$svg","EVENT_TYPES","windowListeners","addWindowEventListener","useCapture","HitTestingHelper","foregroundNode","layersToHitTest","propBackup","mousedownTarget","targetForCreatedClick","defaultPreventedFlag","cancelClickFlag","featureTests","propHidden","retargetMouseEvent","clonedEvent","bubbles","doc","createClick","hideLayer","unhideLayers","passMouseMove","mmoveSource","mmoveTarget","prevTarget","createMouseEvent","synthetic","mouseEvent","replacedBySynthetic","hitTestCallback","defaultPrevented","addLayer","mouseupCallback","cleanupWindowListeners","hitTestSucceeded","isCanvasObjectClick","layerBgColor","isHit","isClick","hitTest","touchId","didTouchMove","touchChanged","mouseMoveEvent","setupTouchEventTranslation","getPixiRenderer","newRenderer","PIXI","CanvasRenderer","autoDetectRenderer","SVGContainer","Renderer","plotContainer","backgroundContainer","foregroundContainer","backgroundRect","backgroundGroup","foregroundGroup","brushContainer","pixiRenderers","pixiStages","pixiContainers","hitTestingHelper","clickHandler","dragHandler","selectBrush","renderer","viewportZIndex","model2canvas","model2canvasInv","model2px","model2pxInv","nextViewportZIndex","getFontSizeInPixels","basicSVGAttrs","layeredOnTop","renderContainer","modelSize","scaledWidth","scaledHeight","pixiRenderer","pixiContainer","pivot","fsize","lengthUnits","drawXunits","drawYunits","drawXLabel","drawYLabel","redrawGridLinesAndLabels","renderCanvas","viewportDragging","dragBehavior","newDrag","dragOpt","updateArrays","viewportDrag","pixiStage","setBackgroundColor","updateClickHandlers","appendViewport","appendPixiViewport","Stage","DisplayObjectContainer","removeClickHandlers","getClickHandler","coords","d3rgba","contrastingColor","color2number","colorString","showCategory","getClickedAtom","elemId","andSelf","aminoAcidProps","POINT_CACHE","getAngle","AtomsInteractions","modelView","m2px","m2pxInv","modelHeight","targetOversampling","viewportX","viewportY","downAtom","contextMenuAtom","cursorVal","mouseDownHandler","isAtomDraggable","isAtomRotatable","originalPositions","prevAngle","getClickCoords","getMoleculePositions","xpos","ypos","translateMolecule","newAngle","rotationAllowed","newCoords","posAllowed","setAtomPosition","rotateMolecule","setCursor","setCursorForAtom","getAtomUnder","setCursorFromEvent","mouseDownCanvas","mouseMoveCanvas","mouseUpCanvas","upAtom","isDOMClick","mouseOverCanvas","mouseOutCanvas","contextMenuCanvas","useCachedDimensionsAndViewport","amniacidContextMenu","KE_SHADING_MIN_COLORS","KE_SHADING_MAX_COLORS","NEUTRAL_COLORS","chargeBlueLightColor","chargeBlueMedColor","chargeBlueDarkColor","chargeRedLightColor","chargeRedMedColor","chargeRedDarkColor","getChargeShadingColors","chargeIndex","getHydrophobicityColors","RENDERING_OPTIONS","AtomsRenderer","modelAtoms","elementTex","renderMode","interactions","readRenderingOptions","getAtomColors","colorStr","colorLib","getAtomOpacity","getAtomTexture","textVal","sizeRatio","getAtomLabel","tplData","canv","clearTextureCacheAndRedraw","lightCol","medCol","darkCol","excited","canvg","Texture","fromCanvas","setTexture","keSprite","Sprite","modelAtom","minKE","maxKE","RADIAL_BOND_TYPES","BondsRenderer","atomsRenderer","modelBonds","graphics","Graphics","renderSpring","pointX","pointY","numTurns","springDiameter","costheta","sintheta","cosThetaDiameter","sinThetaDiameter","cosThetaSpikes","sinThetaSpikes","lineStyle","getBondWidth","getBondColor","getBondOpacity","renderBond","bondShift","midRatio","xMid","yMid","bondWidth","bondColor1","bondColor2","bondOpacity1","bondOpacity2","bond","VectorsRenderer","viewVectors","xFunc","yFunc","vxFunc","vyFunc","alphaFunc","dirOnly","renderVector","vec","rot","arrowHead","lenInPx","tex","getVectorArrowheadTexture","FieldRenderer","sprites","getTexture","logistic","renderSprite","sprite","texture","VdwLinesRenderer","strokeWidth","texLength","removeContainerAndSprites","createContainerAndSprites","newStrokeWidth","gapLength","segmentLength","halfStroke","getLineTexture","nucleotides","bonds","backbone","randomEnter","glow","enterExitOnly","yShift","HEIGHT","WIDTH","nucleoEnter","nucleoExit","nucleoGEnter","nucleoShape","nucleoSVG","nucleoSVGUpdate","nucleoTrans","targetScale","yOffset","BACKB","yStart","G_GLOW","nucleotidePaths","regionClass","SCALE","interior","ee","GeneticElementsRenderer","opacityFunc","translateFuncInv","translateX","translateY","translateScaleFuncInv","scaleFunc","getOptBoundaries","dna","lowIdx","highIdx","CELLS","dna1","DNA1","dna2","DNA2","dna3","dna3units","DNA3","boundaries","dnaComp","mrna","mrnaSequence","stopCodons","polymeraseUnder","polyUnder","POLY_UNDER","polymeraseOver","polyOver","POLY_OVER","nucleus","NUCLEUS","ribosomeBottom","RIBO_BOTTOM","ribosomeTop","RIBO_TOP","ribosomeUnder","RIBO_UNDER","ribosomeOver","RIBO_OVER","trna","codonWidth","TRNA","TRNA_NECK","neck","viewPort","getDefs","appendTranscriptionBg","OBJECT_NAMES","StateManager","states","stateByName","newState","stateDef","extendLastState","objDef","objName","orgState","geneticAnimStates","lastStep","stateMgr","getStep","ribosomeX","trnaX","$__common_jquery_svg_class","clickedNucleoType","subsItems","GeneticRenderer","transitionFunction","viewportG","currentTrans","prevAnimState","suppressViewport","transitionInProgress","animStateInProgress","GeneticAnimStates","objectRenderer","renderState","animState","onStartCallback","forceAll","prevAnimStateData","inData","inPrevData","shouldRenderObj","nextTrans","forceNew","newTrans","d3node","transitionName","mutationsContextMenu","svgUrl","wrapSVGText","svgTextNode","dashArray","newlinemode","words","dashes","result1","curLineLength","computedTextLength","widestWidth","tempText","textNode","tspanNode","lastWord","word","nodeValue","lightColor","medColor","darkColor","gradientUrl","mainColorOfGradient","settleParens","peel","inparens","firstparen","smartSplit","parseWord","isLinear","isRadial","isGradient","isParens","asNumber","isDegrees","isRight","isTop","isBottom","isRepeat","isReflect","interpolateStops","fullParse","x_direction","y_direction","repeat","standard","toStandardForm","restandardize","toCSS","toSVG","xt","yt","ImagesRenderer","imgDimBySrc","scaleImageLength","setupImageData","countsBySrc","referencePoint","capturesPointer","layerIndex","countBySrc","imageDescription","getImagePath","Image","$image","imageDim","loadImage","srcIndex","zOrder","updateImageCoordinates","halfWidth","halfHeight","PHOTON_COLORS","MD2DView","modelElectricField","geneticRenderer","arrowHeadsCache","shapeTop","shapeBelow","lineTop","forceVectorColor","forceVectorWidth","drawAtomTrace","atomTrace","atomTracePath","isSetup","belowAtomsViewport","shapeContainerBelow","textContainerBelow","atomsContainer","vectorsBelowPixi","vdwLinesPixi","bondsPixi","atomsPixi","vectorsAbovePixi","aboveAtomsViewport","shapeContainerTop","lineContainerTop","textContainerTop","iconContainer","bondsRenderer","vdwLinesRenderer","velocityVectorsRenderer","forceVectorsRenderer","electricFieldRenderer","imagesRenderer","mockObstaclesArray","mockShapesTop","mockShapesBelow","mockLinesTop","onlyStaticTextBoxes","halfPi","hideLineMarkers","createCustomArrowHead","drawSymbolImages","imageSelect","heatBath","keShadingMode","fSize","getTextBoxCoords","hostX","hostY","frameX","frameY","calloutX","calloutY","pixelScale","getCalloutPath","fullWidth","fullHeight","calloutLocation","baseSize","dcx","dcy","updateTextBoxes","updateText","layers","layerNum","layerTextBoxes","$parentNode","callout","drawTextBoxes","appendTextBoxes","shouldRoundTextBoxStrokeWidth","AUTHORING","textDrag","horizontalPadding","verticalPadding","hasHost","setupObstacles","obstacleGroup","gradients","obstacleGroupEl","obsAx","obsAy","setupShapes","shapeGroup","shapeEnter","setupLines","setupAtomTrace","getAtomTracePath","lIndex","sIndex","dragDx","dragDy","setupBrowserWarning","setupWarningPane","testFunc","htmlContent","$warning","setupMiscOptions","createVectorArrowHeads","setupRendererOptions","createExcitationGlow","photonPath","lineData","nPoints","photonColor","remainder","g1","g2","b2","photonDashArray","enterAndUpdatePhotons","redrawClickableObjects","redrawOperation","setupElectricField","DNAEditDialog","$dialogDiv","$dnaTextInput","$originalDnaInput","$errorMsg","$submitButton","originalDNA","MD2DScriptingAPI","dnaEditDialog","batchDepth","repaintIfReady","createModelAdder","methodName","getCurrentComputerTime","fraction","setTemperatureOfAllAtoms","getTemperatureOfAllAtoms","limitHighTemperature","randomAtoms","atomsWithinCircle","atomsWithinRect","inX","inY","atomsWithinTriangle","dot00","dot01","dot02","dot11","dot12","invDenom","markAtoms","unmarkAllAtoms","traceAtom","untraceAtom","removePairwiseLJProperties","getAminoAcid","getAtomsWithinShape","openDNADialog","jumpToNextDNAState","jumpToPrevDNAState","DNAStateBefore","DNAStateAfter","animateToNextDNAState","animateToDNAState","stopDNAAnimation","transcribeDNAStep","ge","translateDNAStep","generateRandomProtein","realLength","pe","ke","atomsKe","atomsList","timeScale","sampleBatchLength","lastFrequency","newFrequency","phase","constrain","timesIndex","getIndexWithDefault","intervalLength","IFrameModel","customSet","_stopped","_hasPlayed","_initialProperties","_propertySupport","_stepCounter","_propertyUpdateComingFromIframe","_iframeOutputs","_defineModelSpecificProperties","iframeOutput","_updateOutputs","_updatePropertiesFromIframe","IFrameContainer","addIFrame","$iframe","IframeScriptingAPI","orgBindModel","sensorType","samplesPerSecond","collectionTime","tareValue","sensorDefinitions","sensorApplet","getTranslatedSensorDefinitions","goMotion","measurementName","sensorName","goTemp","goLinkTemperature","goLinkLight","goLinkForce","goLinkPH","goLinkCO2","goLinkO2","labQuestMotion","labQuestTemperature","labQuestLight","labQuestForce","labQuestPH","labQuestCO2","labQuestO2","Notifier","initialSensorType","applet","sensorPollingIntervalID","rawSensorValue","didCollectData","isTaring","isSensorTareable","initialTareValue","notifier","needsReload","isSensorReady","isSensorInitializing","defaultSensorReadingDescriptionHash","getSensorDefinitions","updateDisplayTimeRange","removeApplet","removeListeners","appendApplet","appletDataCallback","handleUnplugged","JavaLoadError","handleLoadingFailure","AppletInitializationError","SensorConnectionError","handleSensorConnectionError","sensor_name","OK","sensor_or_device_name","initializeStateVariables","setSensorType","_sensorType","AppletClass","sensorDefinition","measurementType","appletClass","tareable","sensor","listenerPath","appletId","codebase","minReading","maxReading","maxSeconds","__bizarreSafariFix","isStarted","tare","deviceName","shouldPollSensor","handleSensorValues","AlreadyReadingError","readSensor","startPollingSensor","sensorReadingView","sensorTypeView","setIsTaringState","$zeroButton","setCanTareState","canTare","setSensorTypeDisabledState","$selectBox","setupModelObservers","$sensorReading","showInitializationProgress","$progressbar","$progressbarContainer","progressbar","hideInitializationProgress","sensorReading","SensorScriptingAPI","resetModel","intController","sensorType2","tareValue2","clientId","useRandomClientId","rawSensorValue2","isTaring2","isSensorTareable2","setupApplet","sensorDefinition2","updateSamplesPerSecond","setSensorType2","tare2","sensorReading2View","sensorType2View","setIsTaringState2","$zeroButton2","setCanTareState2","canTare2","setSensorType2DisabledState","$selectBox2","$row1","$row2","$sensorReading2","updateUnits2","sensorReading2","DualSensorScriptingAPI","clientName","StateMachine","currentState","gotoState","toStateName","getCurrentStateName","toState","leaveState","enterState","handleEvent","eventArgs","stateMachine","sensorConnectorInterface","timeColumn","dataColumn","dataColumn2","selectedSensor","selectedSensor2","sensorName2","liveSensorValue","liveSensorValue2","canControl","hasMultipleSensors","statusDialog","defaultSensorReadingDescription","setSensorReadingDescription","setSensorReadingDescription2","checkColumnAgainstSelected","colCandidate","checkColumnAgainstSelected2","setColumn","newDataColumn","newDataColumn2","sIdx","datasets","hasAttachedInterface","hasCollectableSensors","inControl","controlling_client","handleData","numberOfValues","isAllColumnDataReceieved","column","receivedValuesTimeStamp","requestedValuesTimeStamp","isAllDataReceived","stopPolling","oldPlayable","connectedSensors","sensors","getSelectedSensor","getSelectedSensor2","setSelectedSensor","sensorIndex","setSelectedSensor2","notConnected","startPolling","connecting","isConnected","statusErrored","connectionTimedOut","launchTimedOut","statusReceived","sessionChanged","initialConnectionFailure","retry_link","click_here_link","tryAttachingHandler","dismiss","controlEnabled","controlDisabled","isCollecting","columnAdded","columnRemoved","columnTypeChanged","columnMoved","interfaceConnected","interfaceRemoved","liveValue","requestStart","collectionStarted","starting","_startTimerId","startRequestFailed","errorStarting","dismissErrorStarting","requestStop","collectionStopped","startedWithNoDataColumn","stoppedWithNoDataColumn","stopping","stopRequestFailed","errorStopping","dismissErrorStopping","collectionComplete","disconnected","SensorConnectorInterface","sensorReadingView2","setCanTare2State","setCanConnectState","setHasMultipleSensorsState","$selectSensorButton","$selectSensorButton2","setMessageText","$message","chooseSensorPopup1","chooseSensorPopup","chooseSensorPopup2","sensorDef","Cancel","remoteAddress","$controlsContainer","$statusContainer","liveSensorReading","liveSensorReading2","DualSensorConnectorScriptingAPI","pluaralName","light","ph","co2","o2","lastLiveValueTimestamp","liveValueLastChanged","canConnect","liveMode","labquest2Interface","connect","address","canceling","cancelRequestFailed","errorCanceling","liveValueTimeStamp","$connectButton","$addressInput","gl","Shader","use_WebGL","grid_width","grid_height","model_width","model_height","ticksPerGPUSync","convective","background_temperature","background_conductivity","background_specific_heat","background_density","background_viscosity","thermal_buoyancy","buoyancy_approximation","upper","lower","sunny","sun_angle","solar_power_density","solar_ray_count","solar_ray_speed","photon_emission_interval","color_palette_type","minimum_temperature","maximum_temperature","inner","outer","raw_x_coords","raw_y_coords","thermal_conductivity","specific_heat","density","transmission","reflection","absorption","emissivity","constant_temperature","power","wind_speed","wind_angle","filled","makeHeatSolver","getModelOptions","conductivity","getConductivityArray","capacity","getCapacityArray","getDensityArray","getUVelocityArray","getVVelocityArray","getBoundaryTemperatureArray","fluidity","getFluidityArray","getArrayType","nx1","ny1","nx2","ny2","deltaX","applyBoundary","inx","inx_ny1","vN","vS","vW","vE","solve","sij","axij","bxij","ayij","byij","jinx","jinx_plus_nx","jinx_minus_nx","jinx_plus_1","jinx_minus_1","hx","hy","invTimeStep","macCormack","getWebGLContext","getError","NO_ERROR","regexMap","vertexSource","fragmentSource","fix","replaced","isSampler","compileSource","shader","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","program","createProgram","attachShader","VERTEX_SHADER","FRAGMENT_SHADER","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","uniformLocations","uniforms","useProgram","getUniformLocation","uniform1fv","uniform2fv","uniform3fv","uniform4fv","uniformMatrix3fv","uniformMatrix4fv","uniform1i","uniform1f","draw","mesh","drawBuffers","vertexBuffers","indexBuffers","LINES","TRIANGLES","indexBuffer","getAttribLocation","bindBuffer","ARRAY_BUFFER","enableVertexAttribArray","vertexAttribPointer","FLOAT","disableVertexAttribArray","ELEMENT_ARRAY_BUFFER","drawElements","UNSIGNED_SHORT","drawArrays","createTexture","RGBA","UNSIGNED_BYTE","tex_unit","fbo","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_MAG_FILTER","mag_filter","LINEAR","TEXTURE_MIN_FILTER","min_filter","TEXTURE_WRAP_S","wrap_s","CLAMP_TO_EDGE","TEXTURE_WRAP_T","wrap_t","texImage2D","setAsRenderTarget","createFramebuffer","bindFramebuffer","FRAMEBUFFER","framebufferTexture2D","COLOR_ATTACHMENT0","activeTexture","TEXTURE0","drawTo","swapWith","Buffer","Mesh","compile","createBuffer","bufferData","STATIC_DRAW","addVertexBuffer","normals","addIndexBuffer","plane","detailX","detailY","temp_texture","output_texture","temp_storage","encode_program","copy_program","sync_allowed","WebGL_initialized","basic_vertex_shader","INIT_ERR","available","initWebGL","getExtension","NEAREST","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","DEPTH_TEST","convertToRGBA","channel","i4","writeTexture","writeRGBATexture","storage","packRGBAData","readTexture","output_storage","readPixels","copyTexture","src_tex","dst_tex","executeProgram","textures","setSynchronizationAllowed","tryFinish","finish","makeHeatSolverGPU","solver_program","basic_vs","force_flux_t_program","force_flux_t0_program","force_flux_t0_fs","t_to_t0_program","maccormack_step1_program","maccormack_step2_program","delta_x","delta_y","data0_tex","getSimulationTexture","data1_tex","data2_tex","data_0_1_2_array","data_0_1_array","data_0_array","grid_vec","heat_solver_gpu","gpgpu","enforce_temp","inv_timeStep","makeFluidSolver","getTemperatureArray","uWind","getUWindArray","vWind","getVWindArray","u0","i2dx","i2dy","idxsq","idysq","inx_plus1","inx_plus_ny1","inx_plus_ny2","nx_plusj","nx1nx","nx2nx","setObstacleVelocity","uw","vw","setObstacleBoundary","getMeanTemperature","conserve","phi","diffuse","f0","advect","applyBuoyancy","makeFluidSolverGPU","apply_uv_boundary_program","apply_u0v0_boundary_program","set_obstacle_boundary_program","set_obstacle_velocity_program","uv_to_u0v0_program","conserve_step1_program","conserve_step2_program","conserve_step3_program","diffuse_program","apply_buoyancy_program","data3_tex","data_2_array","data_1_2_array","data_1_2_3_array","fluid_solver_gpu","hypot","pointInsidePolygon","nvert","vertx","verty","testx","testy","Line","intersectsLine","ub","ua_t","ub_t","u_b","x_coords","y_coords","polygonize","Rectangle","polygon_cache","polygonizeEllipse","Ellipse","POLYGON_SEGMENTS","Ring","ra_outer","rb_outer","ra_inner","rb_inner","Photon","isContained","reflectFromLine","time_step","r12","photon_line","reflectFromRectangle","rectangle","reflectFromPolygon","reflect","makeRaySolver","getPowerArray","getPartsArray","getPhotonsArray","sunAngle","cleanupPhotonsArray","photons_len","parts_len","idy","absorb","radiate","sunShine","ray_power","ray_speed","shootAtAngle","SIN30","COS30","SIN60","COS60","Part","formatLabel","getGridCells","i_max","j_max","rectangleIndices","ellipseIndices","j1","j2","ringIndices","x_min","x_max","y_min","y_max","polygonIndices","getIrradiance","radiateFromLine","vxi","vyi","nray","ir","getAverageTemperatureAt","getTemperatureAt","addPhoton","setTemperatureAt","changeAverageTemperatureAt","makeCoreModel","partsOpt","heatSolver","fluidSolver","ray_solver","radiative","has_part_power","array_size","indexOfStep","WebGL_active","perf","startFPS","updateFPS","stopFPS","fillGPGPUTextures","setupOptimizationFlags","setupPart","updateOnly","resetArrays","skipTempAndVelocity","setupMaterialProperties","refreshPowerArray","iny","getVorticityAt","core_model","nextStep","setPerformanceTools","perf_tools","partsChanged","propChanged","addPart","removePart","useWebGL","isWebGLCompatible","initGPGPU","syncTemperature","syncVelocity","isWebGLActive","getWebGLError","getIndexOfStep","increment","getAverageVorticityAt","vor","getSpeedAt","getHeatFluxAt","getPerformanceModel","getTemperatureTexture","getVelocityTexture","energy2dModelCount","Modeler","coreModel","setWebGLEnabled","ticksToGPUSync","syncGPU","anemometers","updatePartsViewModel","PartWrapper","rawPart","_rawPart","WebGLOrg","computeLabel","rawParts","viewParts","updateSensorViewModel","SensorWrapper","rawObj","constraint","_rawObj","sensorsChanged","viewSensors","hasDiverged","validateParts","partsArray","createSensors","sensorsSpec","sensorValue","anemometer","_rot","heatFlux","flux","_sin","_cos","sensorOutputDesc","diverged","updateAnemometers","structure","getSensorsArray","color_palette","ColorPalette","view_helpers","color_palette_id","getRGBArray","HeatmapView","html_id","$heatmap_canvas","canvas_ctx","rgb_array","max_rgb_idx","heatmap","min_temp","max_temp","heatmap_view","renderHeatmap","rgb_idx","color1","color2","image_data","pix_index","pix_stride","bindHeatmap","new_heatmap","new_grid_width","new_grid_height","setCanvasSize","getHTMLElement","setMinTemperature","setMaxTemperature","setColorPalette","HeatmapWebGLView","palette_tex","canvas_width","canvas_height","heatmap_tex","render_program","COLOR_BUFFER_BIT","bindHeatmapTexture","new_heatmap_tex","tex_data","GET_WEBGL","WebGLStatusView","$div","$webgl_icon","$status_wrapper","$status","webgl_checkbox","energy2d_modeler","WebGL_status_view","$closeBtn","interactiveControllerProxy","modelCompatible","featuresInfo","requiredFeatures","optionalFeatures","initError","VectormapView","$vectormap_canvas","vectormap_u","vectormap_v","WING_COS","WING_SIN","vectormap_view","renderVectormap","uij","vij","ijny","arrowx","arrowy","wingx","wingy","bindVectormap","new_vectormap_u","new_vectormap_v","arrows_per_row","VectormapWebGLView","vectormap_tex","arrows","bindVectormapTexture","new_vectormap_tex","coord","gdx","gdy","tdx","tdy","origins","initGeometry","base_length","vector_scale","PhotonsView","$photons_canvas","scale_x","scale_y","scene_width","scene_height","setCanvasStyle","photons_view","renderPhotons","bindPhotonsArray","new_photons","new_scene_width","new_scene_height","PartsView","shapeTest","ringPathSpec","textureFill","pathSpec","polygonPathSpec","firstElementChild","renderShape","renderParts","partEnter","bindPartsArray","newParts","generateTextures","SensorsView","thermBg","thermReading","anemoRot","heatFluxReading","thermValScale","em","labelDx","labelText","readingText","bgHeight","anemometerRotation","heatFluxReadingText","heatFluxRot","measuringPoint","supportLabels","renderSensors","renderAnemometer","renderHeatFluxSensors","bindSensorsArray","newSensors","setMinMaxTemp","velocity_view","parts_view","sensors_view","webgl_status","$canvasCont","canvasCount","setAsNextLayer","setupCanvasViews","setVisOptions","Energy2DScriptingAPI","getSensor","getPart","getNumberOfParts","datasetCount","Dataset","definition","appendPropertyRow","propArray","rowResult","ExperimentController","experimentDefinition","timeSeriesDatasets","currentDataset","timeSeriesDestinations","parameterSeriesDestinations","timeSeriesGraph","setOnLoadScript","onLoadScript","unfreezeInputParameters","addOlderRunsToGraph","freezeInputParameters","setupDestinationComponents","parameterSeriesDestination","ModelControllerFor","ComponentConstructor","updatePulldown","updatePulldownDisabledState","interactiveContainer","optionSpec","logChange","$inputs","updateRadio","updateRadioDisabledState","$optionsContainer","normalize","fitWidth","$elem","$thermometer","$thermometerFill","$bottomLabel","$labelsContainer","updateThermometer","thermometerHeight","longestLabelIdx","barGraphModel","barGraphView","updateSecondProperty","inputHash","cName","gName","filterOptions","grapher","xProperties","staticSeries","ignoreDataSetEvents","suppressDomainSync","isLabelExplicit","getOptions","cProp","setupAxisSync","syncedGraphs","callbackName","setterName","syncedGraphID","_selectionChangeHandler","resetGraph","resetGrapher","Graph","graphChangedDataPoint","clearGrapher","updateLabels","_modelResetHandler","gData","gSeries","xArr","xProp","propArr","_dataResetHandler","_invalidationHandler","_labelsChangedHandler","labelWasChanged","yProp","isPointValid","_sampleAddedHandler","gPoints","_sampleChangedHandler","_sampleRemovedHandler","propIdx","yPro","xPro","clearDataSets","setXDomain","suppressSync","setYDomain","xDescription","yDescriptions","getView","startX","dataSetProperties","loadDataSet","actionFunc","displayFunc","fillToPct","$slider","$sliderHandle","defaultBackgroundColor","updateSlider","redoSliderFill","updateSliderDisabledState","bindTargets","valuePct","gradientStr","webkitGradientStr","startVal","endVal","leftLabelWidth","rightLabelWidth","getLabelWidth","labelSelector","colorFunc","$swatch","updateColorIndicator","$labelN","$labelS","$labelE","$labelW","$joystickBase","$joystickHandle","$valueText","valueChanged","hasBeenSetUp","updateJoystick","firstTime","moveJoystickTo","updateJoystickDisabledState","dot1","dot2","radians","limitXY","magnitude","rel_left","startLeft","rel_top","startTop","mag","fromSetup","baseHeight","labelsWidth","baseWidth","labelsOverflow","centerX","handleSize","containerHeight","adjPct","borderRadius","propertyDescription","renderValue","generateColumnTitlesAndFormatters","columnDesc","propertyTitle","unitAbrev","selectionChangedHandler","activeRow","nthRow","data2row","dataRow","handleNewDataRow","sampleAddedHandler","sampleChangedHandler","dataResetHandler","dataRows","dataTruncatedHandler","columnLabelWithUnits","importRun","perRunLabels","perRunValues","runs","numberOfRuns","timeStamps","runHavingTimeStamp","InteractivesController","interactiveReference","viewSelector","initialInteractiveConfig","initialModelConfig","experimentController","currentModelID","$interactiveContainer","$fastClickContainer","componentModelLoadedCallbacks","dataSetModelLoadedCallbacks","initialModelLoad","publicDataSetsByName","logController","parentMessageAPI","semanticLayout","randSeed","modelDefinitions","modelHash","willResetModelCallbacks","ignoreModelResetEvent","componentList","propertiesRetainedByComponents","generateRandomSeed","setupLayout","banner","resizeAfterFullscreen","templates","createComponent","getStringFromArray","validateInteractive","modelDefinition","validateArray","modelName","newInteractive","firstModel","initializeInteractive","i18next","LabGrapher","modelDef","modelType","createModelController","modelResetHandler","dataSetDefinition","hashCode","cookies","componentJsons","getBoundProperties","modelConfig","additionalPropertiesToRetain","interactiveViewOptions","interactiveModelOptions","retainedProperties","getModelDefinition","finishWithLoadedModel","interactiveModelConfig","interactiveViewConfig","meldOptions","processOptions","setupCustomOutputs","currentModel","modelParameters","interactiveParameters","customParameters","onChangeFunc","initialValues","setupCustomParameters","getDefaultExports","getRetainedProperties","notifyModelResetCallbacks","notifyWillResetModelAnd","numberOfResponsesRequired","numberOfProceedResponses","resetWasCanceled","makeResetRequest","wasUsed","willResetModelCallback","outputType","modelOutputs","interactiveOutputs","processOutputsArray","outputsArray","additionalProps","durationProps","propertyKeys","uniq","componentProperties","graphProperties","additionalPerTickProperties","perRunProperties","perTickProperties","getModelController","interactiveRequested","interactiveWillReload","modelParams","interactiveParams","isModelParameter","dsName","ParentMessageAPI","importExport","netlogoImporter","TYPES","vacuum","oil","water","propsHash","previousUnderscore","ArrayProto","ObjProto","SymbolProto","nativeIsArray","nativeKeys","nativeCreate","Ctor","_wrapped","builtinIteratee","optimizeCb","argCount","accumulator","restArguments","baseCreate","shallowProperty","deepGet","MAX_ARRAY_INDEX","getLength","isArrayLike","createReduce","reducer","predicate","findKey","negate","fromIndex","guard","contextPath","computed","lastComputed","rand","criteria","reStrSymbol","compact","shallow","strict","isArguments","otherArrays","isSorted","union","argsLength","unzip","createPredicateIndexFinder","sortedIndex","low","high","createIndexFinder","predicateFind","chunk","executeBound","sourceFunc","boundFunc","callingContext","callArgs","boundArgs","bindAll","memoize","hasher","throttle","later","leading","throttled","immediate","debounced","callNow","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","collectNonEnumProps","nonEnumIdx","allKeys","mapObject","createAssigner","keysFunc","extendOwn","deepEq","keyInObj","tap","interceptor","isMatch","aStack","bStack","areArrays","aCtor","bCtor","isElement","nodelist","propertyOf","accum","escapeMap","unescapeMap","createEscaper","escaper","testRegexp","replaceRegexp","unescape","idCounter","templateSettings","evaluate","noMatch","escapes","escapeChar","oldSettings","variable","argument","_chain","chainResult","windowSize","sum_vals","xa","ya","xb","yb","xc","yc","isCommonjs","keyboardAllowed","fnMap","eventNameMap","fullscreenchange","fullscreenerror","requestFullscreen","onFullScreenEntered","ALLOW_KEYBOARD_INPUT","catch","onFullScreenExit","exitFullscreen","fullscreenElement","fullscreenEnabled","noGlobal","class2type","hasOwn","rtrim","rmsPrefix","rdashAlpha","fcamelCase","copyIsArray","expando","isNumeric","realStringObj","globalEval","indirect","callbackExpect","Expr","isXML","tokenize","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","push_native","booleans","whitespace","pseudos","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","escaped","escapedWhitespace","unloadHandler","els","nid","nidselect","newSelector","newContext","getElementsByClassName","qsa","toSelector","testContext","qsaError","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","sourceIndex","createInputPseudo","createButtonPseudo","createPositionalPseudo","matchIndexes","hasCompare","createComment","getById","getElementsByName","attrId","getAttributeNode","disconnectedMatch","adown","bup","sortDetached","aup","ap","bp","specified","duplicates","detectDuplicates","sortStable","selectors","preFilter","excess","unquoted","nodeNameSelector","operator","check","ofType","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","matched","unmatched","innerText","elemLang","file","password","submit","addCombinator","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","div1","isXMLDoc","until","rneedsContext","needsContext","rsingleTag","risSimple","winnow","qualifier","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","targets","nextUntil","prevUntil","contentDocument","readyList","rnotwhite","completed","Callbacks","flag","createOptions","firing","memory","fired","locked","firingIndex","fire","stopOnFalse","fireWith","tuples","always","fns","newDefer","tuple","returned","pipe","stateString","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","updateFunc","notifyWith","resolveWith","readyWait","holdReady","hold","doScroll","access","chainable","emptyGet","bulk","acceptData","owner","register","stored","camel","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","_removeData","camelKey","startLength","_queueHooks","clearQueue","pnum","rcssNum","cssExpand","isHidden","adjustCSS","valueParts","adjusted","maxIterations","cssNumber","initialInUnit","rcheckableType","rtagName","rscriptType","wrapMap","getAll","setGlobalEval","refElements","tfoot","colgroup","caption","th","rhtml","buildFragment","scripts","ignored","createDocumentFragment","htmlPrefilter","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","origFn","handleObjIn","eventHandle","handleObj","origType","elemData","triggered","delegateType","bindType","delegateCount","mappedTypes","origCount","teardown","handlerQueue","delegateTarget","preDispatch","isImmediatePropagationStopped","rnamespace","postDispatch","fixHooks","keyHooks","mouseHooks","eventDoc","fixHook","noBubble","isSimulated","pointerenter","pointerleave","rxhtmlTag","rnoInnerhtml","rchecked","rscriptTypeMasked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","pdataOld","pdataCur","udataOld","udataCur","domManip","hasScripts","iNoClone","_evalUrl","keepData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","replaceChild","replaceAll","elemdisplay","HTML","BODY","actualDisplay","defaultDisplay","write","rmargin","rnumnonpx","getStyles","swap","curCSS","pixelMarginRight","addGetHookIf","conditionFn","hookFn","pixelPositionVal","boxSizingReliableVal","pixelMarginRightVal","reliableMarginLeftVal","computeStyleTests","divStyle","backgroundClip","clearCloneStyle","pixelPosition","boxSizingReliable","reliableMarginLeft","reliableMarginRight","marginDiv","rdisplayswap","cssShow","cssNormalTransform","letterSpacing","cssPrefixes","emptyStyle","vendorPropName","capName","setPositiveNumber","subtract","augmentWidthOrHeight","isBorderBox","getWidthOrHeight","valueIsBorderBox","showHide","Tween","cssProps","origName","propHooks","eased","swing","fxNow","timerId","rfxtypes","rrun","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","prefilters","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","rejectWith","propFilter","anim","tweener","oldfire","dataShow","unqueued","fadeTo","optall","doAnimation","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeToggle","slow","checkOn","optSelected","optDisabled","radioValue","boolHook","nType","attrHooks","attrNames","propFix","rfocusable","rclickable","removeProp","rclass","getClass","curValue","clazz","finalValue","stateVal","rreturn","rspaces","valHooks","optionSet","rfocusMorph","onlyHandlers","bubbleType","ontype","eventPath","isTrigger","simulate","fnOver","fnOut","attaches","nonce","rquery","parseXML","rts","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","inspected","seekingTransport","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","lastModified","etag","isLocal","accepts","responseFields","converters","ajaxSetup","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","lname","finalText","crossDomain","traditional","hasContent","ifModified","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapInner","getClientRects","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","serializeArray","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","username","xhrFields","onabort","binary","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","overwritten","responseContainer","jsonProp","keepScripts","_load","getWindow","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","win","box","parentOffset","scrollTo","Height","Width","defaultExtra","_jQuery","_$","publicAPI","cons","emptyFunction","tracing","WEBGL_RENDERER","CANVAS_RENDERER","blendModes","NORMAL","ADD","MULTIPLY","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","scaleModes","DEFAULT","_UID","INTERACTION_FREQUENCY","AUTO_PREVENT_DEFAULT","RAD_TO_DEG","DEG_TO_RAD","dontSayHello","sayHello","EmptyRectangle","Circle","getBounds","Matrix","fromArray","identityMatrix","determineMatrixArrayType","Matrix2","DisplayObject","hitArea","buttonMode","renderable","stage","worldAlpha","_interactive","defaultCursor","worldTransform","dynamic","_sr","_cr","filterArea","_bounds","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","setInteractive","isMask","_filters","passes","_filterBlock","filterPasses","_generateCachedSprite","_destroyCachedSprite","updateTransform","rotationCache","getLocalBounds","setStageReference","generateTexture","RenderTexture","updateCache","_renderCachedSprite","_cachedSprite","_renderWebGL","_renderCanvas","_width","_height","addChildAt","swapChildren","getChildAt","removeChildAt","removeStageReference","removeChildren","spriteBatch","filterManager","pushFilter","maskManager","pushMask","popMask","popFilter","tint","blendMode","baseTexture","hasLoaded","onTextureUpdate","onTextureUpdateBind","cachedTint","currentBlendMode","blendModesCanvas","roundPixels","setTransform","smoothProperty","scaleMode","tintedTexture","CanvasTinter","getTintedTexture","crop","fromFrame","TextureCache","fromImage","SpriteBatch","textureThing","fastSpriteBatch","WebGLFastSpriteBatch","shaderManager","setShader","fastShader","MovieClip","animationSpeed","loop","onComplete","currentFrame","gotoAndStop","gotoAndPlay","fromFrames","fromImages","FilterBlock","Text","setText","setStyle","strokeThickness","wordWrap","wordWrapWidth","dropShadow","dropShadowAngle","dropShadowDistance","dropShadowColor","determineFontHeight","isCocoonJS","updateTexture","requiresUpdate","updateWebGLTexture","heightCache","BitmapText","_pool","fonts","lineHeight","kerning","xOffset","xAdvance","textHeight","InteractionData","getLocalPosition","InteractionManager","touchs","tempPoint","mouseoverEnabled","interactiveItems","interactionDOMElement","onMouseMove","onMouseDown","onMouseOut","onMouseUp","currentCursorStyle","mouseOut","collectInteractiveSprite","interactiveChildren","__iParent","setTarget","setTargetDomElement","removeEvents","msPointerEnabled","rebuildInteractiveGraph","__hit","__isOver","mouseout","__mouseIsDown","__isDown","mouseupoutside","worldVisible","__touchData","touchendoutside","interactionManager","setInteractionDelegate","backgroundColorSplit","hex2rgb","backgroundColorString","getMousePosition","requestAnimationFrame","cancelAnimationFrame","requestAnimFrame","rgb2hex","AjaxRequest","canUseNewCanvasBlendModes","getNextPowerOfTwo","EventTarget","removeAllEventListeners","WebGLRenderer","autoDetectRecommendedRenderer","PolyK","Triangulate","_convex","_PointInTriangle","initDefaultShaders","CompileVertexShader","_CompileShader","CompileFragmentShader","compileProgram","PixiShader","fragmentSrc","textureCount","vertexSrc","defaultVertexSrc","uSampler","projectionVector","offsetVector","aVertexPosition","aTextureCoord","colorAttribute","uniformLocation","initUniforms","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","_glTextures","textureData","magFilter","minFilter","wrapS","wrapT","luminance","LUMINANCE","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","syncUniforms","createWebGLTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","PrimitiveShader","tintColor","ComplexPrimitiveShader","WebGLGraphics","renderGraphics","primitiveShader","updateGraphics","_webGL","stencilManager","pushStencil","TRIANGLE_FAN","popStencil","uniform2f","TRIANGLE_STRIP","clearDirty","graphicsDataPool","graphicsData","POLY","switchMode","buildComplexPoly","buildPoly","buildLine","RECT","buildRectangle","CIRC","ELIP","buildCircle","RREC","buildRoundedRectangle","upload","WebGLGraphicsData","fillAlpha","quadraticBezierCurve","J","K","lineAlpha","O","Q","glPoints","glIndicies","glContexts","defaultRenderer","preserveDrawingBuffer","contextLost","handleContextLost","contextRestoredLost","handleContextRestored","antialias","premultipliedAlpha","stencil","glContextId","blendModesWebGL","ONE","ONE_MINUS_SRC_ALPHA","SRC_ALPHA","DST_ALPHA","DST_COLOR","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","renderSession","drawCount","defaultShader","CULL_FACE","BLEND","colorMask","__stage","updateTextures","_interactiveEventsAdded","clearColor","renderDisplayObject","setBlendMode","frameUpdates","updateTextureFrame","texturesToDestroy","destroyTexture","texturesToUpdate","deleteTexture","_updateWebGLuvs","UNPACK_PREMULTIPLY_ALPHA_WEBGL","_powerOf2","_dirty","primitiveBatch","blendFunc","maskStack","maskPosition","stencilStack","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","EQUAL","DECR","INCR","_currentGraphics","complexPrimativeShader","maxAttibs","attribState","tempAttribState","shaderMap","stripShader","setAttribs","_currentId","currentShader","vertSize","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","vertexBuffer","DYNAMIC_DRAW","_uvs","renderTilingSprite","tilingTexture","TextureUvs","tilePosition","tileScaleOffset","tileScale","bufferSubData","renderBatch","deleteBuffer","filterStack","texturePool","initShaderBuffers","_filterArea","FilterTexture","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","applyFilterPass","shaders","colorBuffer","colorArray","framebuffer","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","CanvasMaskManager","CanvasGraphics","renderGraphicsMask","roundColor","tintCache","tintMethod","convertTintToImage","tintWithMultiply","tintWithOverlay","tintWithPerPixel","cacheStepsPerColorChannel","canUseMultiply","clearBeforeRender","screencanvas","renderStripFlat","verticies","renderStrip","uvs","CanvasBuffer","strokeRect","currentPath","boundsPadding","destroyCachedSprite","filling","arcTo","drawPath","beginFill","endFill","drawRect","drawRoundedRect","drawCircle","drawEllipse","updateBounds","Strip","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","updateFrame","Rope","TilingSprite","refreshTexture","generateTilingTexture","__tilePattern","isTiling","canvasBuffer","BoneData","scaleX","scaleY","SlotData","boneData","attachmentName","Bone","setToSetupPose","yDown","m00","m01","worldX","m10","m11","worldY","worldRotation","worldScaleX","worldScaleY","updateWorldTransform","Slot","skeleton","bone","_attachmentTime","attachment","setAttachment","setAttachmentTime","getAttachmentTime","slots","getAttachmentBySlotIndex","Skin","attachments","addAttachment","getAttachment","_attachAll","timelines","mix","binarySearch","linearSearch","Curves","curves","setLinear","setStepped","setCurve","getCurvePercent","RotateTimeline","frames","boneIndex","getFrameCount","setFrame","bones","TranslateTimeline","ScaleTimeline","ColorTimeline","slotIndex","AttachmentTimeline","attachmentNames","SkeletonData","skins","animations","defaultSkin","findBone","findBoneIndex","findSlot","slot","findSlotIndex","findSkin","findAnimation","Skeleton","drawOrder","skin","flipX","setBonesToSetupPose","setSlotsToSetupPose","getRootBone","setSkinByName","setSkin","getAttachmentBySlotName","AttachmentType","RegionAttachment","rendererObject","regionOffsetX","regionOffsetY","regionWidth","regionHeight","regionOriginalWidth","regionOriginalHeight","setUVs","updateOffset","computeVertices","AnimationStateData","skeletonData","animationToMixTime","defaultMix","setMixByName","setMix","getMix","AnimationState","previousTime","currentLoop","previousLoop","mixTime","mixDuration","_setAnimation","clearAnimation","setAnimationByName","setAnimation","addAnimationByName","addAnimation","isComplete","SkeletonJson","attachmentLoader","readSkeletonData","toColor","readAttachment","readAnimation","readCurve","Atlas","textureLoader","regions","AtlasReader","readLine","AtlasRegion","readValue","readTuple","splits","pads","originalWidth","originalHeight","AtlasPage","Format","TextureFilter","uWrap","TextureWrap","clampToEdge","vWrap","findRegion","dispose","unload","updateUVs","luminanceAlpha","rgb565","rgba4444","rgb888","rgba8888","nearest","mipMap","mipMapNearestNearest","mipMapLinearNearest","mipMapNearestLinear","mipMapLinearLinear","mirroredRepeat","AtlasAttachmentLoader","atlas","newAttachment","AnimCache","Spine","spineData","stateData","slotContainers","createSprite","currentSprite","currentSpriteName","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","imageUrl","_pixiId","updateSourceImage","TextureCacheIdGenerator","FrameCache","noFrame","onBaseTextureLoaded","onLoaded","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","tempMatrix","AssetLoader","assetURLs","crossorigin","loadersByType","jpg","ImageLoader","jpeg","png","gif","webp","JsonLoader","AtlasLoader","SpineLoader","BitmapFontLoader","fnt","_getDataType","onAssetLoaded","loadCount","loader","onProgress","baseUrl","ajaxRequest","onError","ontimeout","onJSONLoaded","trimmed","sourceSize","spriteSourceSize","onAtlasLoaded","realSize","currentImageId","SpriteSheetLoader","loadFramedSpriteSheet","onXMLLoaded","AbstractFilter","AlphaMaskFilter","mapDimensions","boundLoadedFunction","onTextureLoaded","ColorMatrixFilter","GrayFilter","DisplacementFilter","displacementMap","PixelateFilter","pixelSize","BlurXFilter","BlurYFilter","BlurFilter","blurXFilter","blurYFilter","InvertFilter","SepiaFilter","sepia","TwistFilter","ColorStepFilter","DotScreenFilter","CrossHatchFilter","RGBSplitFilter","RSVP","Machina","EventEmitter2","wildcard","SensorConnectorState","Fsm","urlQueryParams","urlPrefix","_TIME_LIMIT_IN_MS","_LAUNCH_TIME_LIMIT_IN_MS","_POLLING_DELAY","_COLLECTING_DELAY","_timer","_hostCycler","_rawQueryParams","_statusIntervalId","_lastStatusTimeStamp","_datasetsById","_columnsById","_sessionChangedEmitted","_currentSessionID","_launchFrame","fsm","timeLimit","_timerId","_currentHostIdx","_availableHosts","nextHost","_initializeSession","_onEnter","_requestStatus","moreHosts","launching","_injectCcscFrame","polling","_onExit","_processStatus","currentInterface","collecting","columnData","colId","interfaceMissing","errored","unsupported","setHosts","hosts","getParam","setParam","_setRawQueryParams","_updateQueryParams","_createCORSRequest","requestTimeStamp","sessionID","_processDatasets","_processColumns","setId","colIDs","eventsToEmit","columnFromResponse","setID","valuesTimeStamp","_requestData","relativeUrl","promisifyRequest","addresses","canSetImmediate","setImmediate","canPost","_conf","configure","conf","maxListeners","newListener","listenerTree","searchListenerTree","xTree","xxTree","isolatedBranch","endReached","typeLength","currentType","nextType","growListenerTree","setMaxListeners","many","ttl","_origin","_all","onAny","leafs","iLeaf","offAny","listenersAny","FUNC_ERROR_TEXT","PLACEHOLDER","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","numberTag","objectTag","regexpTag","stringTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChars","reHasRegExpChars","reComboMark","reEscapeChar","reEsTemplate","reFlags","reHasHexPrefix","reIsHostCtor","reIsUint","reLatin1","reNoMatch","reUnescapedString","reWords","contextProps","templateCounter","typedArrayTags","cloneableTags","deburredLetters","htmlEscapes","htmlUnescapes","objectTypes","regexpEscapes","stringEscapes","freeExports","freeModule","freeGlobal","freeSelf","freeWindow","moduleExports","baseCompareAscending","valIsNull","valIsUndef","valIsReflexive","othIsNull","othIsUndef","othIsReflexive","baseFindIndex","fromRight","baseIndexOf","indexOfNaN","baseIsFunction","baseToString","charsLeftIndex","charsRightIndex","compareAscending","deburrLetter","escapeHtmlChar","escapeRegExpChar","leadingChar","whitespaceChar","escapeStringChar","isObjectLike","isSpace","replaceHolders","resIndex","trimmedLeftIndex","trimmedRightIndex","unescapeHtmlChar","runInContext","arrayProto","objectProto","stringProto","fnToString","objToString","oldDash","reIsNative","ArrayBuffer","Set","getNative","WeakMap","nativeCeil","nativeFloor","nativeIsFinite","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","NEGATIVE_INFINITY","POSITIVE_INFINITY","metaMap","realNames","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseLodash","chainAll","actions","__wrapped__","__actions__","__chain__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","MapCache","SetCache","cacheIndexOf","arrayCopy","arrayEach","arrayEvery","arrayFilter","arrayMap","arrayPush","arrayReduce","initFromArray","arraySome","assignOwnDefaults","objectValue","sourceValue","assignWith","customizer","baseAssign","baseCopy","baseAt","isNil","isArr","isIndex","baseCallback","thisArg","bindCallback","baseMatches","baseMatchesProperty","baseClone","isDeep","stackA","stackB","initCloneArray","isFunc","bufferClone","byteOffset","initCloneByTag","initCloneObject","baseForOwn","subValue","baseDelay","baseDifference","getIndexOf","isCommon","valuesIndex","baseEach","createBaseEach","baseEachRight","baseForOwnRight","baseEvery","baseFilter","baseFind","eachFunc","retKey","baseFlatten","isStrict","baseFor","createBaseFor","baseForRight","baseForIn","keysIn","baseFunctions","baseGet","pathKey","toObject","baseIsEqual","isLoose","equalFunc","objIsArr","othIsArr","objTag","othTag","isTypedArray","objIsObj","othIsObj","isSameTag","equalByTag","objIsWrapped","othIsWrapped","equalArrays","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","objValue","srcValue","baseMap","getMatchData","isKey","isStrictComparable","toPath","baseSlice","baseProperty","basePullAt","baseRandom","baseReduce","initFromCollection","baseSetData","baseSome","baseSortBy","comparer","baseSortByOrder","iteratees","getCallback","objCriteria","othCriteria","ordersLength","compareMultiple","baseUniq","isLarge","seenIndex","baseValues","baseWhile","isDrop","baseWrapperValue","binaryIndex","retHighest","MAX_ARRAY_LENGTH","binaryIndexBy","valIsNaN","isDef","isReflexive","setLow","byteLength","composeArgs","holders","holdersLength","argsIndex","leftIndex","leftLength","composeArgsRight","holdersIndex","rightIndex","rightLength","createAggregator","initializer","assigner","restParam","sources","isIterateeCall","isLength","iterable","createCompounder","deburr","createCtorWrapper","thisBinding","createCurry","curryFunc","arity","createDefaults","createExtremum","exValue","arrayExtremum","toIterable","baseExtremum","createFind","createFindIndex","createFindKey","objectFunc","createFlow","funcs","thru","getFuncName","isLaziable","plant","createForEach","arrayFunc","createForIn","createForOwn","createObjectMapper","isMapKeys","createPadDir","createPadding","createPartial","partialFunc","createHybridWrapper","bitmask","partialsRight","holdersRight","argPos","ary","isAry","isBind","isBindKey","isCurry","isCurryBound","isCurryRight","argsHolders","newArgPos","newArity","newsHolders","newHoldersRight","newPartials","newPartialsRight","newData","setData","reorder","strLength","padLength","createPartialWrapper","createRound","createSortedIndex","srcBitmask","newBitmask","isCombo","mergeData","createBindWrapper","arrLength","othLength","arrValue","othValue","objProps","objLength","skipCtor","objCtor","othCtor","otherFunc","invokePath","pickByArray","pickByCallback","oldArray","lastCalled","stamp","shimKeys","allowIndexes","quote","dropRight","othIndex","caches","pullAt","sortedLastIndex","sortedUniq","unzipWith","zipObject","zipWith","wrapperConcat","arrayConcat","findLast","forEachRight","isProp","sortByAll","methodNames","bindKey","BIND_FLAG","curry","curryRight","maxTimeoutId","timeoutId","trailingCall","maxWait","isCalled","delayed","maxDelayed","leadingCall","flow","flowRight","resolver","memoized","Cache","modArgs","partialRight","rearg","gt","lt","toPlainObject","baseMerge","isSrcArr","mergeFunc","baseMergeDeep","defaultsDeep","mergeDefaults","findLastKey","forIn","forInRight","forOwn","forOwnRight","isProto","skipIndexes","mapKeys","kebabCase","padLeft","padRight","snakeCase","startCase","attempt","methodOf","isObj","basePropertyDeep","dropRightWhile","dropWhile","baseFill","flattenDeep","multiValue","matchesProperty","pull","sortByOrder","spread","takeRight","takeRightWhile","takeWhile","valuesIn","xor","backflow","eachRight","augend","addend","cloneDeep","endsWith","gte","inRange","lte","radix","noMin","noMax","startsWith","arraySum","baseSum","otherOptions","isEscaping","isEvaluating","imports","importsKeys","importsValues","reDelimiters","sourceURL","interpolateValue","esTemplateValue","evaluateValue","trimLeft","trimRight","trunc","omission","separator","newEnd","filtered","isFilter","takeName","dropName","operationName","createCallback","checkIteratee","retUnwrapped","lodashFunc","isHybrid","isLazy","useLazy","onlyLazy","chainName","iterLength","takeCount","iterIndex","wrapped","getDefaultBehavioralOptions","eventListeners","makeFsmNamespace","useSafeEmit","pendingDelegations","getDefaultClientMeta","inputQueue","targetReplayState","priorState","priorAction","currentAction","currentActionArgs","inExitHandler","getLeaklessArgs","machinaCount","_machKeys","listenToChild","ticket","delegated","bubbling","inputType","getDefaultOptions","createUUID","emitter","exception","BehavioralFsm","machina","initClient","client","ensureClientMeta","buildEventPayload","getHandlerArgs","isCatchAll","_args","inputDef","clientMeta","handlerName","stateObj","_child","eventPayload","delegatedTo","curState","curStateObj","newStateObj","childFsmDefinition","getChildFsmInstance","fromState","processQueue","attemptedState","deferUntilTransition","queued","untilState","queuedArgs","deferAndTransition","toProcess","evnt","compositeState","machObj","blendedState","instanceStates","_stamped","ensureClientArg","methodWithClientInjected","newFsm","denodeify","allSettled","race","hashSettled","rethrow","asap","__PROMISE_INSTRUMENTATION__","objectOrFunction","instrument","GET_THEN_ERROR","ErrorObject","handleMaybeThenable","maybeThenable","thenable","_onerror","_state","fulfill","_result","subscribe","handleOwnThenable","getThen","promise$2","sealed","fulfillmentHandler","rejectionHandler","tryThen","handleForeignThenable","publishRejection","publish","_subscribers","onFulfillment","onRejection","subscribers","settled","invokeCallback","TRY_CATCH_ERROR","succeeded","failed","hasCallback","tryCatch","initializePromise","FULFILLED","REJECTED","Enumerator","makeSettledResult","o_create","AllSettled","_superConstructor","_makeResult","_validationError","scheduleFlush","iterations","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isWorker","importScripts","MessageChannel","observe","characterData","port1","onmessage","port2","isMaybeThenable","PENDING","abortOnReject","_instanceConstructor","_abortOnReject","_validateInput","_input","_remaining","_enumerate","ABORT_ON_REJECTION","_eachEntry","_settledAt","_willSettleAt","enumerator","callbacksFor","_promiseCallbacks","allCallbacks","promises","filterFn","filtered$2","i$2","PromiseHash","HashSettled","payload","_guidKey","childGuid","mapFn","nodeFunc","argumentNames","asArray","asHash","denodeifiedFunction","nodeArgs","nodeArgs$2","length$2","i$3","successArguments","23","cast","Resolve","Reject","guidKey","needsResolver","needsNew","24","25","26","27","_reject","28","_resolve","29","30","31","32","33","datasetsById","columnsById","sessionChangedEmitted","currentSessionID","isPolling","createCORSRequest","lastStatusTimeStamp","statusIntervalId","requestStatus","statusLoaded","requestData","isNonThenable","fulfilled","resolveAll","fulfilledResolver","rejectedResolver","index$2","rejected","keysOf","property$2","fulfilledTo","_detail","rejectPromise","invokeResolver","handleThenable","publishFulfillment","thenPromise","fulfillmentAt","reject$2","resolve$2","featureSupported","DATA_CLONE_ERR","structuredClones","readUInt8","superCtor","super_","TempCtor","miniClass","SensorApplet","GoIO","extendClass","deviceType","deviceSpecificJars","LabQuest","errorConstructor","captureStackTrace","hasProp","defineClass","prototypeProperties","NewConstructor","instanceProperties","ParentClass","childPrototypeProperties","ChildConstructor","PrototypeConstructor","_ee_listeners","jarsTimestamp","AppletWaiter","_opts","handleCallback","attempts","maxAttempts","jars","deviceSpecificJarUrls","testAppletReadyInterval","getArchiveValue","jarUrls","getHTML","allJars","getTestAppletHTML","isSensorConnected","nextCallback","nextCallbackIdx","attachedSensors","appletInstance","getCachedAttachedSensors","getTypeConstantName","typeConstantName","registerCallback","getAttachedSensors","isInterfaceConnected","$loadingParent","$testAppletContainer","_appendHTML","_waitForTestApplet","_appendCallback","containerId","appletContainer","_testAppletWaiter","testAppletIsReadyCallback","$appletContainer","_waitForApplet","_appletWaiter","appletIsReadyCallback","requests","getSensorRequest","initSensorInterface","callbackIdx","getConfiguredSensorsValues","startCollecting","stopCollecting","initSensorInterfaceComplete","dataReceived","dataSample","numberOfSensors","sampleIndex","deviceUnplugged","sensorUnplugged","callbackTable","appletClasses","notObject","keysShim","opt_initialValue","isValueSet","ERROR_PROPERTY_FILTER","valueObject","shims","binarySlice"],"mappings":"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IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAGxDC,EAAY,CACZ,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI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","file":"lab/lab.min.js","sourcesContent":[" \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 400);\n","var arrays = {};\n\narrays.version = \"0.0.1\";\n\narrays.webgl = (typeof window !== \"undefined\") && !!window.WebGLRenderingContext;\n\narrays.typed = (function () {\n try {\n new Float64Array(0);\n return true;\n } catch (e) {\n return false;\n }\n}());\n\n// http://www.khronos.org/registry/typedarray/specs/latest/#TYPEDARRAYS\n// regular\n// Uint8Array\n// Uint8ClampedArray\n// Uint16Array\n// Uint32Array\n// Int8Array\n// Int16Array\n// Int32Array\n// Float32Array\n// Float64Array\n\narrays.create = function (size, fill, array_type) {\n if (!array_type) {\n if (arrays.webgl || arrays.typed) {\n array_type = \"Float32Array\";\n } else {\n array_type = \"regular\";\n }\n }\n if (fill === undefined) {\n fill = 0;\n }\n var a;\n if (array_type === \"regular\") {\n a = new Array(size);\n } else {\n switch (array_type) {\n case \"Float64Array\":\n a = new Float64Array(size);\n break;\n case \"Float32Array\":\n a = new Float32Array(size);\n break;\n case \"Int32Array\":\n a = new Int32Array(size);\n break;\n case \"Int16Array\":\n a = new Int16Array(size);\n break;\n case \"Int8Array\":\n a = new Int8Array(size);\n break;\n case \"Uint32Array\":\n a = new Uint32Array(size);\n break;\n case \"Uint16Array\":\n a = new Uint16Array(size);\n break;\n case \"Uint8Array\":\n a = new Uint8Array(size);\n break;\n case \"Uint8ClampedArray\":\n a = new Uint8ClampedArray(size);\n break;\n default:\n throw new Error(\"arrays: couldn't understand array type \\\"\" + array_type + \"\\\".\");\n }\n }\n arrays.fill(a, fill);\n return a;\n};\n\narrays.fill = function (array, value) {\n var i = -1,\n size = array.length;\n while (++i < size) {\n array[i] = value;\n }\n};\n\narrays.constructor_function = function (source) {\n if (source.buffer &&\n source.buffer.__proto__ &&\n source.buffer.__proto__.constructor &&\n Object.prototype.toString.call(source) === \"[object Array]\") {\n return source.__proto__.constructor;\n }\n\n switch (source.constructor) {\n case Array:\n return Array;\n case Float32Array:\n return Float32Array;\n case Uint8Array:\n return Uint8Array;\n case Float64Array:\n return Float64Array;\n case Int32Array:\n return Int32Array;\n case Int16Array:\n return Int16Array;\n case Int8Array:\n return Int8Array;\n case Uint32Array:\n return Uint32Array;\n case Uint16Array:\n return Uint16Array;\n case Uint8ClampedArray:\n return Uint8ClampedArray;\n default:\n throw new Error(\n \"arrays.constructor_function: must be an Array or Typed Array: \" + \" source: \" + source);\n // \", source.constructor: \" + source.constructor +\n // \", source.buffer: \" + source.buffer +\n // \", source.buffer.slice: \" + source.buffer.slice +\n // \", source.buffer.__proto__: \" + source.buffer.__proto__ +\n // \", source.buffer.__proto__.constructor: \" + source.buffer.__proto__.constructor\n }\n};\n\narrays.copy = function (source, dest, num) {\n var len = num !== undefined ? num : source.length,\n i = -1;\n while (++i < len) {\n dest[i] = source[i];\n }\n if (arrays.constructor_function(dest) === Array) dest.length = len;\n return dest;\n};\n\narrays.clone = function (source) {\n var i, len = source.length,\n clone, constructor;\n constructor = arrays.constructor_function(source);\n if (constructor === Array) {\n clone = new constructor(len);\n for (i = 0; i < len; i++) {\n clone[i] = source[i];\n }\n return clone;\n }\n if (source.buffer.slice) {\n clone = new constructor(source.buffer.slice(0));\n return clone;\n }\n clone = new constructor(len);\n for (i = 0; i < len; i++) {\n clone[i] = source[i];\n }\n return clone;\n};\n\n/** @return true if x is between a and b. */\n// float a, float b, float x\narrays.between = function (a, b, x) {\n return x < Math.max(a, b) && x > Math.min(a, b);\n};\n\n// float[] array\narrays.max = function (array) {\n return Math.max.apply(Math, array);\n};\n\n// float[] array\narrays.min = function (array) {\n return Math.min.apply(Math, array);\n};\n\n// FloatxxArray[] array\narrays.maxTypedArray = function (array) {\n var test, i,\n max = Number.MIN_VALUE,\n length = array.length;\n for (i = 0; i < length; i++) {\n test = array[i];\n max = test > max ? test : max;\n }\n return max;\n};\n\n// FloatxxArray[] array\narrays.minTypedArray = function (array) {\n var test, i,\n min = Number.MAX_VALUE,\n length = array.length;\n for (i = 0; i < length; i++) {\n test = array[i];\n min = test < min ? test : min;\n }\n return min;\n};\n\n// float[] array\narrays.maxAnyArray = function (array) {\n try {\n return Math.max.apply(Math, array);\n } catch (e) {\n if (e instanceof TypeError) {\n var test, i,\n max = Number.MIN_VALUE,\n length = array.length;\n for (i = 0; i < length; i++) {\n test = array[i];\n max = test > max ? test : max;\n }\n return max;\n }\n }\n};\n\n// float[] array\narrays.minAnyArray = function (array) {\n try {\n return Math.min.apply(Math, array);\n } catch (e) {\n if (e instanceof TypeError) {\n var test, i,\n min = Number.MAX_VALUE,\n length = array.length;\n for (i = 0; i < length; i++) {\n test = array[i];\n min = test < min ? test : min;\n }\n return min;\n }\n }\n};\n\narrays.average = function (array) {\n var i, acc = 0,\n length = array.length;\n for (i = 0; i < length; i++) {\n acc += array[i];\n }\n return acc / length;\n};\n\n/**\n Create a new array of the same type as 'array' and of length 'newLength', and copies as many\n elements from 'array' to the new array as is possible.\n\n If 'newLength' is less than 'array.length', and 'array' is a typed array, we still allocate a\n new, shorter array in order to allow GC to work.\n\n The returned array should always take the place of the passed-in 'array' in client code, and this\n method should not be counted on to always return a copy. If 'array' is non-typed, we manipulate\n its length instead of copying it. But if 'array' is typed, we cannot increase its size in-place,\n therefore must pas a *new* object reference back to client code.\n */\narrays.extend = function (array, newLength) {\n var extendedArray,\n Constructor,\n i;\n\n Constructor = arrays.constructor_function(array);\n\n if (Constructor === Array) {\n i = array.length;\n array.length = newLength;\n // replicate behavior of typed-arrays by filling with 0\n for (; i < newLength; i++) {\n array[i] = 0;\n }\n return array;\n }\n\n extendedArray = new Constructor(newLength);\n\n // prevent 'set' method from erroring when array.length > newLength, by using the (no-copy) method\n // 'subarray' to get an array view that is clamped to length = min(array.length, newLength)\n extendedArray.set(array.subarray(0, newLength));\n\n return extendedArray;\n};\n\narrays.remove = function (array, idx) {\n var constructor = arrays.constructor_function(array),\n rest;\n\n if (constructor !== Array) {\n throw new Error(\"arrays.remove for typed arrays not implemented yet.\");\n }\n\n rest = array.slice(idx + 1);\n array.length = idx;\n Array.prototype.push.apply(array, rest);\n\n return array;\n};\n\narrays.isArray = function (object) {\n if (object === undefined || object === null) {\n return false;\n }\n switch (Object.prototype.toString.call(object)) {\n case \"[object Array]\":\n case \"[object Float32Array]\":\n case \"[object Float64Array]\":\n case \"[object Uint8Array]\":\n case \"[object Uint16Array]\":\n case \"[object Uint32Array]\":\n case \"[object Uint8ClampedArray]\":\n case \"[object Int8Array]\":\n case \"[object Int16Array]\":\n case \"[object Int32Array]\":\n return true;\n default:\n return false;\n }\n};\n\nexport default arrays;\n","\n// For now, only defaultValue, readOnly and immutable\n// meta-properties are supported.\nimport arrays from 'arrays';\n\n\n// Create a new object, that prototypically inherits from the Error constructor.\n// It provides a direct information which property of the input caused an error.\nfunction ValidationError(prop, message) {\n this.prop = prop;\n this.message = message;\n}\nValidationError.prototype = new Error();\nValidationError.prototype.constructor = ValidationError;\n\nfunction isObject(prop) {\n // Note that typeof null is also equal to \"object\", so we have to check it.\n return prop !== null && typeof prop === \"object\";\n}\n\nfunction checkConflicts(input, propName, conflictingProps) {\n var i, len;\n for (i = 0, len = conflictingProps.length; i < len; i++) {\n if (input.hasOwnProperty(conflictingProps[i])) {\n throw new ValidationError(propName, \"Properties set contains conflicting properties: \" +\n conflictingProps[i] + \" and \" + propName);\n }\n }\n}\n\nfunction validateSingleProperty(propertyMetadata, prop, value, ignoreImmutable) {\n if (propertyMetadata.readOnly) {\n throw new ValidationError(prop, \"Properties set tries to overwrite read-only property \" + prop);\n }\n if (!ignoreImmutable && propertyMetadata.immutable) {\n throw new ValidationError(prop, \"Properties set tries to overwrite immutable property \" + prop);\n }\n // Use custom validate function defined in metadata if provided.\n return propertyMetadata.validate ? propertyMetadata.validate(value) : value;\n}\n\nexport default {\n\n // Basic validation.\n // Check if provided 'input' hash doesn't try to overwrite properties\n // which are marked as read-only or immutable. Don't take into account\n // 'defaultValue' as the 'input' hash is allowed to be incomplete.\n // It should be used *only* for update of an object.\n // While creating new object, use validateCompleteness() instead!\n validate: function(metadata, input, ignoreImmutable) {\n var result = {},\n prop, propMetadata;\n\n if (arguments.length < 2) {\n throw new Error(\"Incorrect usage. Provide metadata and hash which should be validated.\");\n }\n\n for (prop in input) {\n if (input.hasOwnProperty(prop)) {\n // Try to get meta-data for this property.\n propMetadata = metadata[prop];\n // Continue only if the property is listed in meta-data.\n if (typeof propMetadata !== \"undefined\") {\n input[prop] = validateSingleProperty(propMetadata, prop, input[prop], ignoreImmutable);\n if (propMetadata.conflictsWith) {\n checkConflicts(input, prop, propMetadata.conflictsWith);\n }\n result[prop] = input[prop];\n }\n }\n }\n return result;\n },\n\n validateSingleProperty: validateSingleProperty,\n\n propertyIsWritable: function(propertyMetadata) {\n // Note that immutable properties are writable, they just have to be\n return !propertyMetadata.readOnly;\n },\n\n propertyChangeInvalidates: function(propertyMetadata) {\n // Default to true for safety.\n if (typeof propertyMetadata.propertyChangeInvalidates === \"undefined\") {\n return true;\n }\n return !!propertyMetadata.propertyChangeInvalidates;\n },\n\n // Complete validation.\n // Assume that provided 'input' hash is used for creation of new\n // object. Start with checking if all required values are provided,\n // and using default values if they are provided.\n // Later perform basic validation.\n validateCompleteness: function(metadata, input, opts) {\n var result = {},\n includeOnlySerializedProperties = opts && opts.includeOnlySerializedProperties,\n prop, propMetadata, defVal;\n\n if (arguments.length < 2) {\n throw new Error(\"Incorrect usage. Provide metadata and hash which should be validated.\");\n }\n\n for (prop in metadata) {\n if (metadata.hasOwnProperty(prop)) {\n propMetadata = metadata[prop];\n // require explicit check for serialize === false, because the default value is true.\n if (includeOnlySerializedProperties && propMetadata.serialize === false) {\n continue;\n }\n\n defVal = propMetadata.defaultValue;\n\n if (typeof input[prop] === \"undefined\") {\n // Value is not declared in the input data.\n if (propMetadata.required === true) {\n throw new ValidationError(prop, \"Properties set is missing required property \" + prop);\n } else if (arrays.isArray(defVal)) {\n // Copy an array defined as a default value.\n // Do not use instance defined in metadata.\n result[prop] = arrays.copy(defVal, []);\n } else if (isObject(defVal)) {\n // Copy an object defined as a default value. Do not use instance defined in metadata.\n result[prop] = $.extend(true, {}, defVal);\n } else if (typeof defVal !== \"undefined\") {\n // If it's basic type, just set value.\n result[prop] = defVal;\n }\n } else if (!arrays.isArray(input[prop]) && isObject(input[prop]) && isObject(defVal)) {\n // Note that typeof [] is also \"object\" - that is the reason of the isArray() check.\n result[prop] = $.extend(true, {}, defVal, input[prop]);\n } else if (arrays.isArray(input[prop])) {\n // Deep copy of an array.\n result[prop] = $.extend(true, [], input[prop]);\n } else {\n // Basic type like number, so '=' is enough.\n result[prop] = input[prop];\n }\n }\n }\n\n // Perform standard check like for hash meant to update object.\n // However, ignore immutable check, as these properties are supposed\n // to create a new object.\n return this.validate(metadata, result, true);\n },\n\n // Expose ValidationError. It can be useful for the custom validation routines.\n ValidationError: ValidationError\n};\n","/**\n Tiny module providing global way to show errors to user.\n\n It's better to use module, as in the future, we may want to replace basic\n alert with more sophisticated solution (for example jQuery UI dialog).\n*/\nimport console from 'common/console';\n // Try to use global alert. If it's not available, use console.error (node.js).\n const alertFunc = typeof window.alert !== 'undefined' ? window.alert : console.error;\n\nexport default function(msg) {\n alertFunc(msg);\n}\n","var structuredClone = require('./structured-clone');\n\n/**\n Call as:\n new ParentEndpoint(targetWindow, targetOrigin, afterConnectedCallback)\n targetWindow is a WindowProxy object. (Messages will be sent to it)\n\n targetOrigin is the origin of the targetWindow. (Messages will be restricted to this origin)\n\n afterConnectedCallback is an optional callback function to be called when the connection is\n established.\n\n OR (less secure):\n new ParentEndpoint(targetIframe, afterConnectedCallback)\n\n targetIframe is a DOM object (HTMLIframeElement); messages will be sent to its contentWindow.\n\n afterConnectedCallback is an optional callback function\n\n In this latter case, targetOrigin will be inferred from the value of the src attribute of the\n provided DOM object at the time of the constructor invocation. This is less secure because the\n iframe might have been navigated to an unexpected domain before constructor invocation.\n\n Note that it is important to specify the expected origin of the iframe's content to safeguard\n against sending messages to an unexpected domain. This might happen if our iframe is navigated to\n a third-party URL unexpectedly. Furthermore, having a reference to Window object (as in the first\n form of the constructor) does not protect against sending a message to the wrong domain. The\n window object is actualy a WindowProxy which transparently proxies the Window object of the\n underlying iframe, so that when the iframe is navigated, the \"same\" WindowProxy now references a\n completely differeent Window object, possibly controlled by a hostile domain.\n\n See http://www.esdiscuss.org/topic/a-dom-use-case-that-can-t-be-emulated-with-direct-proxies for\n more about this weird behavior of WindowProxies (the type returned by ';\n\n/**\n * Share Dialog. Inherits from Basic Dialog.\n *\n * @constructor\n */\nfunction ShareDialog(parentSelector, interactiveContainerSelector, i18n, interactive) {\n var hash = location.hash,\n origin = location.href.match(/(.*?\\/\\/.*?)\\//)[1],\n embeddablePath = location.pathname;\n\n BasicDialog.call(this, {\n dialogClass: \"share-dialog\",\n appendTo: parentSelector\n }, i18n);\n\n /** @private */\n this._view = {\n paste_html: i18n.t(\"share_dialog.paste_html\"),\n select_size: i18n.t(\"share_dialog.select_size\"),\n size_larger: i18n.t(\"share_dialog.size_larger\", {\n val: 50\n }),\n size_actual: i18n.t(\"share_dialog.size_actual\"),\n size_smaller: i18n.t(\"share_dialog.size_smaller\", {\n val: 30\n }),\n copyright: getCopyright(i18n)\n };\n this._i18n = i18n;\n\n if (labConfig.homeForSharing) {\n this._view.embeddableSharingUrl = labConfig.homeForSharing + labConfig.homeEmbeddablePath + hash;\n } else {\n this._view.embeddableSharingUrl = origin + embeddablePath + hash;\n }\n\n var link = \"\" + i18n.t(\"share_dialog.link\") + \"\";\n this._view.paste_email_im = i18n.t(\"share_dialog.paste_email_im\", {\n link: link\n });\n\n this.setContent(mustache.render(shareDialogTpl, this._view));\n\n /** @private */\n this._$interactiveContainer = $(interactiveContainerSelector);\n /** @private */\n this._$iframeSize = this.$element.find(\"#iframe-size\");\n /** @private */\n this._$iframeContent = this.$element.find(\"#share-iframe-content\");\n\n this._$iframeSize.on('change', $.proxy(this.updateIframeSize, this));\n this.updateIframeSize();\n\n if (interactive) {\n this.update(interactive)\n }\n}\ninherit(ShareDialog, BasicDialog);\n\n/**\n * Updates size of the Interactive iframe in the share dialog.\n */\nShareDialog.prototype.updateIframeSize = function() {\n var actualWidth = this._$interactiveContainer.innerWidth(),\n actualHeight = this._$interactiveContainer.innerHeight(),\n sizeChoice = this._$iframeSize.val();\n\n switch (sizeChoice) {\n case \"smaller\":\n this._view.width = Math.floor(actualWidth * 0.7);\n this._view.height = Math.floor(actualHeight * 0.7);\n break;\n case \"larger\":\n this._view.width = Math.floor(actualWidth * 1.5);\n this._view.height = Math.floor(actualHeight * 1.5);\n break;\n default:\n this._view.width = actualWidth;\n this._view.height = actualHeight;\n break;\n }\n\n this._$iframeContent.val(mustache.render(iframeTpl, this._view));\n};\n\n/**\n * Updates dialog content using interactive JSON definition.\n *\n * @param {Object} interactive Interactive JSON definition.\n */\nShareDialog.prototype.update = function(interactive) {\n this.set(\"title\", this._i18n.t(\"share_dialog.title\", {\n interactive_title: interactive.title\n }));\n};\n\nexport default ShareDialog;\n","import labConfig from 'lab.config';\nimport mustache from 'mustache';\nimport markdownToHTML from 'common/markdown-to-html';\nimport inherit from 'common/inherit';\nimport BasicDialog from 'common/controllers/basic-dialog';\nimport getCopyright from 'common/controllers/copyright';\nimport creditsDialogTpl from 'common/controllers/credits-dialog.tpl';\n\nvar CONCORD_URL = 'https://concord.org',\n NEXT_GEN_URL = 'http://mw.concord.org/nextgen/';\n\n/**\n * Credits Dialog. Inherits from Basic Dialog.\n *\n * @constructor\n */\nfunction CreditsDialog(parentSelector, i18n, interactive) {\n BasicDialog.call(this, {\n dialogClass: \"credits-dialog\",\n appendTo: parentSelector\n }, i18n);\n this._i18n = i18n;\n if (interactive) {\n this.update(interactive)\n }\n}\ninherit(CreditsDialog, BasicDialog);\n\n/**\n * Updates dialog content using interactive JSON definition.\n *\n * @param {Object} interactive Interactive JSON definition.\n */\nCreditsDialog.prototype.update = function(interactive) {\n var hash = document.location.hash,\n origin = document.location.href.match(/(.*?\\/\\/.*?)\\//)[1],\n embeddablePath = document.location.pathname,\n i18n = this._i18n,\n concordUrl = CONCORD_URL,\n nextGenUrl = NEXT_GEN_URL,\n interactiveCreditsUrl,\n utmString;\n\n this.set(\"title\", this._i18n.t(\"credits_dialog.title\", {\n interactive_title: interactive.title\n }));\n\n if (labConfig.homeForSharing) {\n interactiveCreditsUrl = labConfig.homeForSharing + labConfig.homeEmbeddablePath + hash;\n } else {\n interactiveCreditsUrl = origin + embeddablePath + hash;\n }\n\n if (labConfig.utmCampaign) {\n utmString = \"utm_source=\" + encodeURIComponent(interactive.title.replace(/ /gi, \"+\")) +\n \"&utm_medium=embedded_interactive&utm_campaign=\" + labConfig.utmCampaign;\n concordUrl += \"?\" + utmString;\n nextGenUrl += \"?\" + utmString;\n interactiveCreditsUrl += \"?\" + encodeURI(\"utm_source=embed_link&utm_medium=embedded_interactive&utm_campaign=\" + labConfig.utmCampaign);\n }\n\n var view = {\n // Content of the credits dialog. If it's not specified, the default, translatable text will be used.\n credits_text: interactive.credits ? markdownToHTML(interactive.credits) : i18n.t(\"credits_dialog.credits_text\", {\n CC_link: \"Concord Consortium\",\n Next_Gen_MW_link: \"Next-Generation Molecular Workbench\",\n Google_link: \"Google.org\"\n }),\n find_shareable: i18n.t(\"credits_dialog.find_shareable\", {\n shareable_ver_link: '' + i18n.t('credits_dialog.shareable_ver') + '',\n concord_org_link: 'concord.org'\n }),\n copyright: getCopyright(i18n)\n };\n\n if (!labConfig.sharing) {\n view.showShareable = true;\n }\n\n this.setContent(mustache.render(creditsDialogTpl, view));\n};\n\nexport default CreditsDialog;\n","export default \"
\\n

\\n {{{credits_text}}}\\n

\\n {{#showShareable}}\\n

\\n {{{find_shareable}}}\\n

\\n {{/showShareable}}\\n {{{copyright}}}\\n
\\n\";","var nowFunc,\n scope,\n enabled = false;\n\nif (typeof performance !== 'undefined' && typeof performance.now !== 'undefined') {\n nowFunc = performance.now.bind(performance);\n} else {\n nowFunc = Date.now.bind(Date);\n}\n\nexport default {\n /**\n * window.performance.now or Date.now when performance.now is not available.\n * @type {Function}\n */\n now: nowFunc,\n\n collectData: function(v) {\n enabled = v;\n // Reset data each time when data collection is being started.\n if (enabled) scope = {};\n },\n\n enterScope: function(name) {\n if (enabled) {\n var s = scope[name];\n if (s === undefined) {\n s = scope[name] = {\n lastTime: 0,\n timeSum: 0,\n count: 0\n };\n }\n s.lastTime = nowFunc();\n }\n },\n\n leaveScope: function(name) {\n if (enabled) {\n var s = scope[name];\n if (s !== undefined) {\n s.timeSum += nowFunc() - s.lastTime;\n s.count += 1;\n }\n }\n },\n\n getAvgTime: function(name) {\n var s = scope[name];\n if (s !== undefined) {\n return s.timeSum / s.count;\n }\n return 0;\n },\n\n getAvgFreq: function(name) { // in Hz\n var s = scope[name];\n if (s !== undefined) {\n return s.count * 1000 / s.timeSum;\n }\n return 0;\n }\n};\n","export default {\n \"model-only\": [],\n \"simple\": [{\n \"id\": \"top\",\n \"bottom\": \"model.top\",\n \"width\": \"interactive.width\"\n }, {\n \"id\": \"right\",\n \"top\": \"model.top\",\n \"left\": \"model.right\",\n \"height\": \"model.height\",\n \"padding-left\": \"1em\",\n \"padding-right\": \"0.5em\"\n }, {\n \"id\": \"bottom\",\n \"top\": \"model.bottom\",\n \"width\": \"interactive.width\",\n \"padding-top\": \"0.5em\"\n }],\n \"narrow-right\": [{\n \"id\": \"top\",\n \"bottom\": \"model.top\",\n \"width\": \"interactive.width\"\n }, {\n \"id\": \"right\",\n \"top\": \"model.top\",\n \"left\": \"model.right\",\n \"height\": \"model.height\",\n \"padding-left\": \"1em\",\n \"padding-right\": \"0.5em\",\n \"width\": \"model.width / 4\",\n \"min-width\": \"6em\"\n }, {\n \"id\": \"bottom\",\n \"top\": \"model.bottom\",\n \"width\": \"interactive.width\",\n \"padding-top\": \"0.5em\"\n }],\n \"wide-right\": [{\n \"id\": \"top\",\n \"bottom\": \"model.top\",\n \"width\": \"interactive.width\"\n }, {\n \"id\": \"right\",\n \"top\": \"model.top\",\n \"left\": \"model.right\",\n \"height\": \"model.height\",\n \"padding-left\": \"1em\",\n \"padding-right\": \"0.5em\",\n \"width\": \"model.width\",\n \"min-width\": \"6em\"\n }, {\n \"id\": \"bottom\",\n \"top\": \"model.bottom\",\n \"width\": \"interactive.width\",\n \"padding-top\": \"0.5em\"\n }],\n \"left-right-bottom\": [{\n \"id\": \"left\",\n \"top\": \"model.top\",\n \"height\": \"model.height\",\n \"right\": \"model.left\",\n \"padding-right\": \"0.5em\"\n }, {\n \"id\": \"right\",\n \"top\": \"model.top\",\n \"height\": \"model.height\",\n \"left\": \"model.right\",\n \"padding-left\": \"1em\",\n \"padding-right\": \"0.5em\"\n }, {\n \"id\": \"bottom\",\n \"top\": \"model.bottom\",\n \"left\": \"model.left\",\n \"width\": \"model.width\"\n }]\n};\n","import seedrandom from 'seedrandom';\nimport performance from 'common/performance';\n\nfunction ModelController(modelUrl, modelOptions, interactivesController,\n Model, ModelContainer, ScriptingAPI, Benchmarks) {\n var controller,\n model,\n benchmarks,\n modelContainer,\n\n // Used to track cause of model reset, if known; required to be kept in this closure because\n // it doesn't get passed directly to our model.reset handler\n resetCause,\n\n // event dispatcher\n dispatch = d3.dispatch('modelLoaded', 'modelReset', 'modelSetupComplete');\n\n function tickStartHandler() {\n // Use seedrandom library (see vendor/seedrandom) that substitutes an explicitly seeded\n // RC4-based algorithm for Math.random(). When interactive random seed is constant, it ensures\n // that simulations will look the same for different users even if physics engine uses random\n // values. Note that we set seed each tick to be sure that it's always the same before\n // performing simulation step. Otherwise, it's possible that simulations won't be repeatable\n // if e.g. user uses tick history or triggers any code path that calls Math.random()\n // between ticks.\n // Note that event if .randomSeed is based on entropy (so, it's almost random), this still\n // ensures that e.g. when users steps back in tick history and clicks play, he will see\n // the same results like for the first time.\n Math.seedrandom = seedrandom(interactivesController.randomSeed + model.get(\"time\"));\n }\n\n function tickHandler() {\n performance.enterScope(\"js-rendering\");\n controller.modelContainer.update();\n performance.leaveScope(\"js-rendering\");\n }\n\n // ------------------------------------------------------------\n //\n // Model Setup\n // ------------------------------------------------------------\n function setupModel() {\n model = new Model(modelOptions, {\n waitForSetup: true,\n i18n: interactivesController.i18n\n });\n model.on('tickStart.modelController', tickStartHandler);\n model.on('tick.modelController', tickHandler);\n model.on('reset.modelController', resetHandler);\n }\n\n function resetHandler() {\n // Just use the generic cause, \"reset\", if no more specific cause of the model reset is\n // available.\n resetCause = resetCause || ModelController.RESET_CAUSE.RESET;\n modelContainer.repaint();\n dispatch.modelReset(resetCause);\n }\n\n /**\n Note: newModelConfig, newinteractiveViewConfig are optional. Calling this without\n arguments will simply reload the current model.\n */\n // REF TODO rename to load\n function reload(newModelUrl, newModelOptions, suppressEvents) {\n // Since we won't call model.reset() (instead, we will discard the model) we need to make sure\n // that the model knows to dispatch a willReset event.\n if (model && model.willReset) {\n model.willReset();\n }\n\n modelUrl = newModelUrl || modelUrl;\n modelOptions = newModelOptions || modelOptions;\n setupModel();\n\n if (modelContainer) {\n modelContainer.bindModel(model, modelUrl);\n } else {\n modelContainer = new ModelContainer(model, controller.modelUrl, interactivesController.i18n);\n }\n\n if (!suppressEvents) {\n dispatch.modelLoaded(ModelController.LOAD_CAUSE.RELOAD);\n }\n\n }\n\n // ------------------------------------------------------------\n //\n // Public methods\n //\n // ------------------------------------------------------------\n\n controller = {\n\n get type() {\n return Model.type;\n },\n get benchmarks() {\n return benchmarks;\n },\n get modelUrl() {\n return modelUrl;\n },\n get model() {\n return model;\n },\n get modelContainer() {\n return modelContainer;\n },\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n getViewContainer: function() {\n return controller.modelContainer.$el;\n },\n\n getHeightForWidth: function(width, fontSizeChanged) {\n return controller.modelContainer.getHeightForWidth(width, fontSizeChanged);\n },\n\n /**\n Initializes the model-type-specific renderer within the model container and asks it to\n render.\n\n The model will not be rendered to the screen until this method is called. For their part,\n renderers should ignore render() and repaint() calls before they have been setup by calling\n this method.\n\n Call this when the when the model is ready to be rendered (ie the container has been laid\n out and resized) and again after a new model has been bound to the container and\n has been initialized to the point that it is ready to render.\n */\n initializeView: function() {\n controller.modelContainer.setup();\n controller.modelContainer.repaint();\n },\n\n resize: function() {\n controller.modelContainer.resize();\n },\n\n repaint: function() {\n controller.modelContainer.repaint();\n },\n\n updateView: function() {\n controller.modelContainer.update();\n },\n\n reload: reload,\n\n reset: function(cause) {\n model.stop();\n // use the resetCause closure var to make the cause (which the model doesn't know about)\n // available to resetHandler()\n resetCause = cause;\n model.reset();\n resetCause = undefined;\n },\n\n state: function() {\n return model.serialize();\n },\n\n ScriptingAPI: ScriptingAPI,\n\n enableKeyboardHandlers: function() {\n return model.get(\"enableKeyboardHandlers\");\n }\n };\n\n // ------------------------------------------------------------\n //\n // Initial setup of this modelController:\n //\n // ------------------------------------------------------------\n\n // REF TODO ugly\n if (modelOptions != null) {\n setupModel();\n }\n\n // publish model so it can be inspected at console\n window.getModel = function() {\n return model;\n };\n\n benchmarks = typeof Benchmarks === \"function\" ? new Benchmarks(controller) : [];\n return controller;\n}\n\nModelController.LOAD_CAUSE = {\n RELOAD: 'reload',\n INITIAL_LOAD: 'initialLoad'\n};\n\nModelController.RESET_CAUSE = {\n RESET: 'reset'\n};\n\nexport default ModelController;\n","import arrays from \"arrays\";\n\nconst infinityToString = function (obj) {\n var i, len;\n if (arrays.isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n if (obj[i] === Infinity || obj[i] === -Infinity) {\n obj[i] = obj[i].toString();\n }\n }\n } else {\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (obj[i] === Infinity || obj[i] === -Infinity) {\n obj[i] = obj[i].toString();\n }\n if (typeof obj[i] === \"object\" || arrays.isArray(obj[i])) {\n infinityToString(obj[i]);\n }\n }\n }\n }\n};\n\nexport default function serialize(metaData, propertiesHash, count) {\n var result = {},\n propName, prop;\n for (propName in metaData) {\n if (metaData.hasOwnProperty(propName)) {\n if (propertiesHash[propName] !== undefined && metaData[propName].serialize !== false) {\n prop = propertiesHash[propName];\n if (arrays.isArray(prop)) {\n result[propName] = arrays.copy(prop, [], count);\n } else if (typeof prop === \"object\" && prop !== null) {\n result[propName] = $.extend(true, {}, prop);\n } else {\n result[propName] = prop;\n }\n }\n }\n }\n // JSON doesn't allow Infinity values so convert them to strings.\n infinityToString(result);\n // TODO: to make serialization faster, replace arrays.copy(prop, [])\n // with arrays.clone(prop) to use typed arrays whenever they are available.\n // Also, do not call \"infinityToString\" function. This can be useful when\n // we decide to use serialization in tick history manager.\n // Then we can provide toString() function which will use regular arrays,\n // replace each Infinity value with string and finally call JSON.stringify().\n return result;\n}\n"," /**\n\n This module provides support which Lab model types can use to implement observable properties that\n have custom getters, setters, and validation. It is specialized for the needs of interactive,\n computationally intensive simulations which want to enable UI bindings to simulation-state\n variables that evolve in time and change at potentially every clock tick.\n\n For example, if the model object using PropertySupport is 'model':\n\n > model.addObserver('kineticEnergy', function() { console.log(model.properties.kineticEnergy); })\n > model.start()\n 3.10225948103683\n 3.102259509874652\n 3.1022595094558194\n ...\n > model.addObserver('property', function() { console.log('property changed!'); })\n > model.properties.property = 1\n property changed!\n > model.properties.property\n 1\n\n Or, using the \"legacy\" interface:\n\n > model.addObserver('kineticEnergy', function() { console.log(model.get('kineticEnergy'); })\n > model.start()\n 3.10225948103683\n 3.102259509874652\n 3.1022595094558194\n ...\n > model.addObserver('property', function() { console.log('property changed!'); })\n > model.set('property', 1)\n property changed!\n > model.get('property')\n 1\n\n The design of this module differs in several ways than the property support implemented by general\n web MVC frameworks such as Backbone, Ember, and Angular.\n\n First, we assume that the properties module is used to enable UI binding and state saving for a\n simulation engine which has its own internal data structures and which executes many iterations of\n its inner loop between each screen refresh. As a result, we must assume that any computed property\n can change between \"clock ticks\" and that most computed properties are not simple functions of\n the value of other properties. Therefore we provide mechanisms that must be explicitly invoked by\n the model to synchronize the engine's internal state to the exposed property values when the\n engine considers it appropriate to do so.\n\n Second, we assume that the most properties are numbers that represent physical quantities that\n either parameterize the simulation or are computed by it.\n\n Third, we assume that, the simulation may need to save and restore the values of a subset of\n properties outside the usual setter/getter cycle. Specifically, we allow the simulation to define\n two subsets of properties: one that represents the entire set of properties required to restore\n the state of the model, for use when saving the model to storage; and a smaller subset of\n properties that represent the time-varying state of the model, for use when rewinding or fast-\n forwarding the model while it retains the remainder of its state in memory.\n\n*/\n// If at all possible, avoid adding dependencies to this module.\n\n// These are the properties that can be passed as the 'descriptor' argument to defineProperty.\nvar descriptorProperties = {\n\n /**\n A getter function that will be executed whenever the value of this property is read.\n\n Use this, for example, to make a property reflect internal state of the simulation.\n\n The property will be considered a \"computed property\" if and only if it has a getter. The\n return value of the getter is considered the \"raw\" property value and will be passed through\n the afterGetTransform, if one is defined, to generate the final value of the property.\n\n The (untransformed) raw getter value will be cached unless the enableCaching property of the\n propertySupport object is false. The cache can be cleared by calling the\n deleteComputedPropertyCachedValues method of the propertySupport object. The caching normally\n occurs lazily, but paired calls to the storeComputedProperties and\n notifyChangedComputedProperties methods of the propertySupport object cause all properties\n with getters to be computed and then recomputed, triggering notification of the observers of\n properties whose value changed between the calls.\n\n Optional.\n */\n get: {\n defaultValue: undefined,\n type: 'function'\n },\n\n /**\n A setter function that will be executed when the value of this property is assigned.\n\n Use this, for example, to modify simulation state when the property is changed.\n\n Note that this function is not required to store the value in any way; a corresponding getter\n does not need to be defined, although one could be. This setter is normally executed just to\n make sure the correct side effects occur when a property assignment is made.\n\n The value received by this function is a \"raw\" value. That is, if the value of this property\n is set \"normally\", then the value is first passed through the beforeSetTransform, if one is\n defined, and the transformed value is passed to this function. (If that sounds backwards,\n consider \"raw\" values to be of the type operated on by the simulation engine; transformed\n values are what are visible in the user interface.)\n\n The set function is called whenever a normal assignment is made to the property, but it may or\n may not be called when the property value is set \"behind the scenes\" by the setRawValues\n method. It will be called if and onlyh if this property key is present in the hash sent to\n setRawValues *and* the invokeSetterAfterBulkRestore descriptor value for this property is\n true.\n\n This is useful for distinguishing between properties whose setters must manipulate private\n state variables when they are called, and properties whose setter action operates entirely\n by setting publicly visible\n */\n set: {\n defaultValue: undefined,\n type: 'function'\n },\n\n /**\n A function that will be called with the new, \"raw\" value of this property whenever the\n property is assigned to.\n\n This function *must* return input value if it is correct. If the value is invalid,\n the validate function should throw an exception. Note that custom validate function\n can be used to autmatically \"fix\" the value (e.g. change lower case to upper case or\n do any other transformation related to notation of the value).\n\n The validate function is *not* called when the property value is set via setRawValues.\n */\n validate: {\n defaultValue: undefined,\n type: 'function'\n },\n\n /**\n A callback that is called before assignment to the property. (Exception: it is not called\n when the value is set via the setRawValues method of propertySupport.)\n\n Use this to detect changes which may cause other property values to need to be updated.\n\n For convenience, the property key is passed to the callback. The callback's return value is\n discarded.\n */\n beforeSetCallback: {\n defaultValue: undefined,\n type: 'function'\n },\n\n /**\n A callback that is called after assignment to the property. (Exception: it is not called\n when the value is set via the setRawValues method of propertySupport.)\n\n Use this to detect changes which may cause other property values to need to be updated.\n\n For convenience, the property key is passed to the callback. The callback's return value is\n discarded.\n */\n afterSetCallback: {\n defaultValue: undefined,\n type: 'function'\n },\n\n /**\n A function that is called with the return value of the get method whenever this property value\n is read. The value returned by this function is returned as the value of the property.\n\n If the transform is not defined, no transform is applied and the value of the property is\n simply the value returned by the get method.\n\n The expected use of this transform (and the associated beforeSetTransform) is to allow the\n same simulation engine to appear to operate at different length scales. Currently, the MD2D\n engine uses afterGetTransforms to convert values that are nominally in microscopic units (nm,\n for example) to values in a macroscopic unit system (m).\n */\n afterGetTransform: {\n defaultValue: undefined,\n type: 'function'\n },\n\n /**\n A function that is called to transform the property value to a \"raw\" value which is passed to\n the set function whenever this property is assigned to.\n\n If the transform is not defined, no transform is applied and the value that is assigned to the\n property is the value that is passed to the set method.\n */\n beforeSetTransform: {\n defaultValue: undefined,\n type: 'function'\n },\n\n /**\n If true, the property is considered read-only (and, practically speaking, must have a getter).\n\n Attempts to assign to the property will throw an error whether the property is directly\n assigned to or a value for the property is passed to the setRawValues method of the\n propertySupport object.\n\n Note that the native 'writable' property of ES5 Object descriptors does not apply to accessor\n properties (those with setters and getters, such as we construct in this module).\n */\n writable: {\n defaultValue: true,\n type: 'boolean'\n },\n\n /**\n If true, then the raw value of this property will be included in historyStateRawValues hash.\n */\n includeInHistoryState: {\n defaultValue: false,\n type: 'boolean'\n },\n\n /**\n If true, and this property's descriptor also includes a set function, then the set function\n will be called when the value of this property is updated via the setRawValues method of the\n PropertySupport object.\n\n If false, setRawValues will update the property without calling the set method.\n\n It is useful to set this to false for properties whose setter action operates entirely by\n directly or indirectly manipulating other properties. When setRawValues is used to restore the\n value of those properties during navigation of simulation history, it would be undesirable to\n repeat the setter action as it is entirely accounted for by the value of the other properties.\n */\n invokeSetterAfterBulkRestore: {\n defaultValue: true,\n type: 'boolean'\n },\n\n /**\n A string that represents the user-defined categorization of this property.\n\n When the propertySupport object is initialized, it can be passed a list of strings\n containing the different property types the engine wishes to use to categorize its properties.\n\n PRopertySupport mixes into its target object a method called propertiesOfType which can be\n used to filter the set of properties by category\n\n (For example, MD2D defines \"mainProperties\", \"viewOptions\", \"parameters\", and \"outputs\")\n */\n type: {\n defaultValue: undefined,\n type: 'propertyType'\n },\n\n /**\n An arbitrary object that will be returned when this property's key is passed to the\n getPropertyDescription method of the target object.\n\n Use this (possibly combined with enumeration and categorization of properties) to expose the\n list of properties to client code for use by e.g,. a UI builder or live scripting help.\n */\n description: {\n defaultValue: undefined\n }\n};\n\nfunction validateIsType(type, propertyKey, value) {\n // This is sufficient for functions and strings, which is all we test for.\n if (typeof value !== type) {\n throw new TypeError(propertyKey + \" must be a \" + type + \".\");\n }\n}\n\nfunction copy(a) {\n var ret = [];\n a.forEach(function(item) {\n ret.push(item);\n });\n return ret;\n}\n\n// Constructs a propertySupport object for use by client code. Client code (e.g., models) can maintain a\n// private reference to the propertySupport objectg and delegate property handling to it, and they\n// can optionally call the mixInto method of the propertySupport method to mix in a useful set of\n// public-facing methods and properties.\n\n// Accepts an args object with an optional 'types' arg, which should be a list of strings that\n// represent user-defined categories of properties.\nexport default function PropertySupport(args) {\n\n var propertyTypes = args && args.types && copy(args.types) || [],\n propertyInformation = {},\n cachedPropertiesObjects = {\n all: undefined,\n byType: {}\n },\n cachingIsEnabled = true,\n notificationsAreBatched = false,\n\n dispatch = d3.dispatch(\"beforeInvalidatingChange\",\n \"afterInvalidatingChange\",\n \"afterInvalidatingChangeSequence\"),\n\n invalidatingChangeNestingLevel = 0,\n invalidatingChangeOccurredDuringBatch,\n suppressInvalidationForBatch = false,\n\n // all properties that were notified while notifications were batched\n changedPropertyKeys = [],\n\n // all properties with a getter\n computedPropertyKeys = [],\n\n // all properties for which includeInHistoryState is true\n historyStatePropertyKeys = [],\n\n // public API\n api;\n\n\n // observed properties with a getter\n function observedComputedPropertyKeys() {\n return computedPropertyKeys.filter(function(key) {\n return propertyInformation[key].observers.length > 0;\n });\n }\n\n function validateIsPropertyType(value) {\n if (propertyTypes.indexOf(value) < 0) {\n throw new TypeError(value + \" is not a recognized property type.\");\n }\n }\n\n // Copy the properties described in descriptorProperties from 'descriptor' to return value;\n // validate each value of descriptor according to descriptorProperties[key].type and,\n // if no value is supplied for a given key in 'descriptor' use the default value specified\n // in descriptorProperties[key].default\n function validateDescriptor(descriptor) {\n var ret = {};\n\n Object.keys(descriptorProperties).forEach(function(key) {\n var descriptorProperty = descriptorProperties[key];\n\n if (descriptor[key] !== undefined) {\n ret[key] = descriptor[key];\n switch (descriptorProperty.type) {\n case 'boolean':\n ret[key] = !!ret[key];\n break;\n case 'function':\n validateIsType('function', key, descriptor[key]);\n break;\n case 'string':\n validateIsType('string', key, descriptor[key]);\n break;\n case 'propertyType':\n validateIsPropertyType(descriptor[key]);\n break;\n }\n } else {\n ret[key] = descriptorProperty.defaultValue;\n }\n });\n\n return ret;\n }\n\n // Given a list of callbacks, invoke each one in order, but skip repeats.\n function notifyCallbacksOnce(callbacks) {\n var called = [];\n callbacks.forEach(function(callback) {\n // TODO: explore ES6 Map/WeakMap shim that would allow this check to happen in O(1)\n if (called.indexOf(callback) < 0) {\n callback();\n called.push(callback);\n }\n });\n }\n\n // Execute closure after setting a flag which causes the notify function to queue a list of\n // notified properties, rather than notifying their observers immediately. After the closure\n // finishes, notify the observers, making sure to call each callback at most once.\n function withBatchedNotifications(closure) {\n var callbacks = [];\n\n notificationsAreBatched = true;\n closure();\n notificationsAreBatched = false;\n\n changedPropertyKeys.forEach(function(key) {\n propertyInformation[key].observers.forEach(function(callback) {\n callbacks.push(callback);\n });\n });\n changedPropertyKeys = [];\n notifyCallbacksOnce(callbacks);\n }\n\n // Notify observers of the passed-in property immediately if notifications are not batched\n // (see withBatchedNotifications), or else queue the passed-in property key for later\n // notification\n function notify(key) {\n if (notificationsAreBatched) {\n changedPropertyKeys.push(key);\n } else {\n notifyCallbacksOnce(propertyInformation[key].observers);\n }\n }\n\n // Note this does not respect batched notifications, as property descriptions are not expected\n // to be updated en masse during an engine tick as are property values.\n function notifyPropertyDescriptionObservers(key) {\n notifyCallbacksOnce(propertyInformation[key].propertyDescriptionObservers);\n }\n\n // Private implementation of the getter for the property specified by 'key'. Handles caching\n // concerns, but not afterGetTransform, etc.\n function get(key) {\n var info = propertyInformation[key];\n\n if (!info.descriptor.get) {\n return info.cachedValue;\n }\n\n if (cachingIsEnabled) {\n if (!info.hasCachedValue) {\n info.hasCachedValue = true;\n info.cachedValue = info.descriptor.get();\n }\n return info.cachedValue;\n }\n return info.descriptor.get();\n }\n\n // Private implementation of the setter for the property specified by 'key'. Handles caching\n // and the writable check (which, remember, is always applied) but does not handle observer\n // notification, validation, the beforeSetTransform, or beforeSet/afterSet callbacks.\n function set(key, value) {\n var info = propertyInformation[key];\n\n if (!info.descriptor.writable) {\n throw new Error(\"Attempt to set read-only property \" + key);\n }\n\n if (info.descriptor.get && !cachingIsEnabled) {\n info.hasCachedValue = false;\n } else {\n info.hasCachedValue = true;\n info.cachedValue = value;\n }\n }\n\n function setPropertyDescription(key, description) {\n var info = propertyInformation[key];\n\n info.descriptor.description = description;\n notifyPropertyDescriptionObservers(key);\n }\n\n function invalidateCachedPropertiesObjects(type) {\n cachedPropertiesObjects.all = undefined;\n if (type) {\n cachedPropertiesObjects.byType[type] = undefined;\n }\n }\n\n // This is the meat. Adds an enumerable property to the properties object returned by the\n // propertySupport object, with custom getters and setters that implement the behavior supported\n // by this module.\n function constructProperty(object, key) {\n var info = propertyInformation[key];\n\n Object.defineProperty(object, key, {\n enumerable: true,\n configurable: false,\n\n // This is the publicly-accessible getter for the property. This is invoked whenever the\n // property is read via code such as `var value = model.properties[key]`, or when the `get`\n // method mixed into the target is called (this might look like `model.get(key)`). It is\n // not invoked when a 'raw values' hash is constructed by the historyStateRawValues or\n // rawValues property accessors.\n get: function() {\n var value = get(key);\n if (info.descriptor.afterGetTransform) {\n value = info.descriptor.afterGetTransform(value);\n }\n return value;\n },\n\n // This is the publicly-accessible setter for the property. It is invoked whenever the\n // property is assigned to via code such as `model.properties[key] = value;`, or when the\n // `set` method mixed into the target is called (this might look like `model.set(key,\n // value)`). It is never invoked when the setRawValues method of the propertySupport object\n // is called.\n //\n // If beforeSetCallback or afterSetCallback properties have been defined on propertySupport,\n // then they will be called, respectively, before and after the body of this function\n // executes. Note again that setRawValues bypasses these callbacks.\n set: function(value) {\n if (info.descriptor.beforeSetCallback) {\n info.descriptor.beforeSetCallback();\n }\n\n if (info.descriptor.beforeSetTransform) {\n value = info.descriptor.beforeSetTransform(value);\n }\n if (info.descriptor.validate) {\n value = info.descriptor.validate(value);\n }\n\n set(key, value);\n\n if (info.descriptor.set) {\n info.descriptor.set(value);\n }\n\n if (info.descriptor.afterSetCallback) {\n info.descriptor.afterSetCallback();\n }\n\n notify(key);\n }\n });\n }\n\n // Private support for the `properties` and `propertiesOfType` accessor and method of the\n // propertySupport object. Returns the cached properties object if one exists, or constructs a\n // new one. Note that adding a property to the list of properties invalidates the cached object,\n // forcing construction of a new one when it is requested.\n function getPropertiesObject(type) {\n var object = type ? cachedPropertiesObjects.byType[type] : cachedPropertiesObjects.all;\n\n if (!object) {\n object = {};\n Object.keys(propertyInformation).forEach(function(key) {\n if (!type || type === propertyInformation[key].descriptor.type) {\n constructProperty(object, key);\n }\n });\n\n if (Object.seal) {\n Object.seal(object);\n }\n\n if (type) {\n cachedPropertiesObjects.byType[type] = object;\n } else {\n cachedPropertiesObjects.all = object;\n }\n }\n return object;\n }\n\n // The public methods and properties of the propertySupport object\n api = {\n\n /**\n Mixes a useful set of methods and properties into the target object. Lab models are expected\n to provide themselves as the target, i.e., mix these methods/properties into themselves.\n */\n mixInto: function(target) {\n\n /**\n The 'properties' property mixed into 'target' is a sealed Object whose enumerable\n properties are all the properties defined by calls to the defineProperty method of the\n propertySupport object. Creating this object is the main feature of the PropertySupport\n module.\n\n Reading the value of a computed property of the 'properties' object causes that value to\n be cached, unless the `enableCaching` property of the propertySupport object is false. The\n cached value is returned on subsequent reads, unless `enableCaching` is set to false,\n or `deleteComputedPropertyCachedValues` is called.\n\n Assigning to a property of the 'properties' object always triggers the observers of that\n property, if any.\n\n Because the 'properties' object is sealed, if `defineProperty` is subsequently called, the\n value of the 'properties' property will be updated to a new object containing the updated\n set of properties.\n */\n Object.defineProperty(target, 'properties', {\n configurable: false,\n enumerable: true,\n get: getPropertiesObject\n });\n\n /**\n The 'propertiesOfType' method mixed in to 'target' returns a sealed Object whose\n enumerable properties are all the properties defined by calls to the defineProperty\n method with the value 'type' as the type descriptor option.\n\n These properties behave the same as properties of the 'properties' object.\n */\n target.propertiesOfType = function(type) {\n return getPropertiesObject(type);\n };\n\n /**\n The 'set' method mixed into 'target' sets the value of one or more properties.\n\n Calling `target.set(key, value)` is equivalent to `target.properties[key] = value`\n\n However, if the first argument is a hash of properties, then the hash is treated as a\n set of key-value pairs to be assigned. In that case, observer notification is delayed\n until after all property values in the hash have been assigned.\n */\n target.set = function(key, value) {\n var hash;\n if (typeof key === 'string') {\n target.properties[key] = value;\n } else {\n hash = key;\n withBatchedNotifications(function() {\n Object.keys(hash).forEach(function(key) {\n target.properties[key] = hash[key];\n });\n });\n }\n };\n\n /**\n The 'get' method mixed into target reads the value of one property.\n\n Calling `target.get(key)` is equivalent to accessing `target.properties[key]`\n */\n target.get = function(key) {\n return target.properties[key];\n };\n\n // This is the publicly-accessible setter for 'freezing' the property.\n target.freeze = function(key) {\n var description = target.getPropertyDescription(key);\n description.setFrozen(true);\n setPropertyDescription(key, description);\n };\n\n // This is the publicly-accessible setter for 'un-freezing' the property.\n target.unfreeze = function(key) {\n var description = target.getPropertyDescription(key);\n description.setFrozen(false);\n setPropertyDescription(key, description);\n };\n\n /**\n The 'addObserver' method mixed into 'target' adds 'callback' to the end of the list of\n property observers of the property specified by 'key'. Note that adding a callback more\n than once to the observer list for a given property has no effect.\n\n Whenever the property 'key' is assigned to, the callback will be called. As noted above,\n sometimes property assignment is batched (e.g., by passing a hash to`target.set`). When\n this is the case, 'callback' is guaranteed to be called only once after the batched\n assignment, regardless of how many keys it is registered for. (Of course, if one of those\n observers then assigns to a property observed by 'callback', a second call will occur.)\n\n If 'key' represents a computed property, then observer notification is supported but\n happends according to a different cycle. Specifically, notification of the observer will\n happen if the value of the property changes between paired calls to\n `storeComputedProperties` and `notifyChangedComputedProperties`, or whenever\n `notifyAllComputedProperties` is called (regardless of the current or previous value of\n the property). As with batched property assignment, each callback is guaranteed to be\n called directly by `notifyAllComputedProperties` or `notifyChangedComputedProperties`\n at most once per invocation.\n\n Notification is never triggered by simply accessing the property, regardless of whether or\n not the access causes the property to be recalcuated\n\n Note that there are only 2 arguments accepted by addObserver; it does not support\n 'this'-binding to a target object.\n */\n target.addObserver = function(key, callback) {\n if (!propertyInformation[key]) {\n return;\n }\n var observers = propertyInformation[key].observers;\n if (observers.indexOf(callback) < 0) {\n observers.push(callback);\n }\n };\n\n /**\n The 'removeObserver' method mixed into 'target' removes 'callback' from the list of\n callbacks registered for the propery specified by key.\n */\n target.removeObserver = function(key, callback) {\n var observers = propertyInformation[key] && propertyInformation[key].observers,\n index = observers && observers.indexOf(callback);\n\n if (index !== undefined && index >= 0) {\n observers.splice(index, 1);\n }\n };\n\n /**\n The 'addPropertyDescriptionObserver' method mixed into 'target' adds 'callback' to the end\n of the list of property-description observers of the property specified by key. Note that\n adding a callback more than once to the property-description observer list for a given\n property has no effect.\n\n Property-description observers are called immediately when the observed property's\n description object is reassigned. Note that observing of mutation of the description\n object is not supported; to change a property's description after the property is created,\n always pass a property description object to propertySupport.setPropertyDescription.\n */\n target.addPropertyDescriptionObserver = function(key, callback) {\n if (!propertyInformation[key]) {\n return;\n }\n var observers = propertyInformation[key].propertyDescriptionObservers;\n if (observers.indexOf(callback) < 0) {\n observers.push(callback);\n }\n };\n\n target.removePropertyDescriptionObserver = function(key, callback) {\n var observers = propertyInformation[key].propertyDescriptionObservers,\n index = observers.indexOf(callback);\n\n if (index >= 0) {\n observers.splice(index, 1);\n }\n };\n\n /**\n The 'isPropertyWritable' method mixed into 'target' returns information whether\n the property named 'key' is writable.\n */\n target.hasProperty = function(key) {\n return propertyInformation[key] != null;\n };\n\n /**\n The 'isPropertyWritable' method mixed into 'target' returns information whether\n the property named 'key' is writable.\n */\n target.isPropertyWritable = function(key) {\n return !!propertyInformation[key] && propertyInformation[key].descriptor.writable;\n };\n\n /**\n The 'getPropertyDescription' method mixed into 'target' simply returns the object passed\n in as the 'description' property of the descriptor passed to `defineProperty` when the\n property named 'key' was defined.\n */\n target.getPropertyDescription = function(key) {\n if (propertyInformation[key] && propertyInformation[key].descriptor) {\n return propertyInformation[key].descriptor.description;\n }\n return null;\n };\n\n /**\n The 'getPropertyType' method mixed into 'target' simply returns the 'type' value passed\n in as the 'type' property of the descriptor passed to 'defineProperty'when the property\n named 'key' was defined.\n */\n target.getPropertyType = function(key) {\n if (propertyInformation[key] && propertyInformation[key].descriptor) {\n return propertyInformation[key].descriptor.type;\n }\n return null;\n };\n\n /**\n The 'getPropertyValidateFunc' method mixed into 'target' simply returns the 'validate' function\n passed in as the 'validate' property of the descriptor passed to 'defineProperty' when the\n property named 'key' was defined.\n */\n target.getPropertyValidateFunc = function(key) {\n if (propertyInformation[key] && propertyInformation[key].descriptor) {\n return propertyInformation[key].descriptor.validate;\n }\n return null;\n };\n\n /**\n The 'makeInvalidatingChange' method mixed into 'target' lets client code perform an action\n that will invalidate all computed properties.\n */\n target.makeInvalidatingChange = function(closure) {\n api.invalidatingChangePreHook();\n if (closure) {\n closure();\n }\n api.invalidatingChangePostHook();\n };\n\n // TODO: probably it's unnecessary, addObserver can support multiple\n // properties instead.\n target.addPropertiesListener = function(properties, callback) {\n if (typeof properties === 'string') {\n target.addObserver(properties, callback);\n } else {\n properties.forEach(function(property) {\n target.addObserver(property, callback);\n });\n }\n };\n },\n\n /**\n The defineProperty method allows the client object to define a new property named 'key'. The\n 'descriptor' property should be a hash containing property descriptors; see the comments on\n the descriptorProperties constant, above.\n */\n\n defineProperty: function(key, descriptor) {\n descriptor = validateDescriptor(descriptor || {});\n\n propertyInformation[key] = {\n descriptor: descriptor,\n observers: [],\n propertyDescriptionObservers: [],\n hasCachedValue: false,\n cachedValue: undefined,\n previousValue: undefined\n };\n\n if (descriptor.get) {\n computedPropertyKeys.push(key);\n }\n if (descriptor.includeInHistoryState) {\n historyStatePropertyKeys.push(key);\n }\n\n invalidateCachedPropertiesObjects(descriptor.type);\n },\n\n /**\n Set the PropertyDescription associated with 'key' to 'description' and notify any\n property-description observers (added via target.addPropertyDescriptionObserver())\n */\n setPropertyDescription: function(key, description) {\n setPropertyDescription(key, description);\n },\n\n /**\n The 'deleteComputedPropertyCachedValues' method removes the cached value of all computed\n properties (i.e., all properties with getters.)\n\n The next access of the property (either caused directly by code that explicitly accesses the\n property, or indirectly by `notifyChangedComputedProperties`, which retrieves the current\n value of all observed computed properties) will cause a recomputation of the property.\n */\n deleteComputedPropertyCachedValues: function() {\n computedPropertyKeys.forEach(function(key) {\n propertyInformation[key].hasCachedValue = false;\n propertyInformation[key].cachedValue = undefined;\n });\n },\n\n /**\n The 'storeComputedProperties' method retrieves the current value of all computed properties,\n respecting any previously-cached value, and stores it in a secondary cache for subsequent\n comparison to an updated value, by `notifyChangedComputedProperties`.\n\n Normally, one would call this method prior to updating the simulation clock, and then call\n `deleteComputedPropertyCachedValues` and notifyChangedComputedProperties` after updating\n the simulation clock.\n */\n storeComputedProperties: function() {\n observedComputedPropertyKeys().forEach(function(key) {\n propertyInformation[key].previousValue = get(key);\n });\n },\n\n /**\n Retrieves the current value of all computed properties, respecting any cached value it\n finds, and compares them to the previous values of the properties stored by\n `storeComputedProperties`\n\n Notifies the observers of any properties whose values differ from the previous value. Note\n that observers are called strictly after all computed property values are calculated, and\n each observer callback is guaranteed to be called directly by this method only once per\n invocation.\n\n (However, it would be possible for any given callback to be called again as a side effect of\n previous observers.)\n\n Note that, because this method observes the cache, you probably want to call\n `deleteComputedPropertyCachedValues` after calling `storeComputedProperties`,\n */\n notifyChangedComputedProperties: function() {\n withBatchedNotifications(function() {\n observedComputedPropertyKeys().forEach(function(key) {\n if (get(key) !== propertyInformation[key].previousValue) {\n notify(key);\n }\n propertyInformation[key].previousValue = undefined;\n });\n });\n },\n\n /**\n Blanket-notifies the observers of all computed properties. As described above, each observer\n callback will only be called directly by this method only once per invocation, but the side\n effects of some observer callbacks may result in subsequent calls to any given observer\n callback.\n */\n notifyAllComputedProperties: function() {\n withBatchedNotifications(function() {\n observedComputedPropertyKeys().forEach(function(key) {\n notify(key);\n });\n });\n },\n\n /**\n The 'properties' object is the main object containing the properties defined using this\n module. This is the same object that is mixed into the mixin target, and it is described\n above in detail.\n */\n get properties() {\n return getPropertiesObject();\n },\n\n /**\n The 'propertiesOfType' method behaves the same as the `propertiesOfType` method mixed into\n the mixin target, and it is describd above.\n */\n propertiesOfType: function(type) {\n return getPropertiesObject(type);\n },\n\n /**\n The enableCaching property indicates whether computed property values should be cached.\n When multiple cycles of property changes are triggered by a single change to the simulation\n state, you may want to turn off property caching until all cycles complete.\n */\n\n get enableCaching() {\n return cachingIsEnabled;\n },\n\n set enableCaching(value) {\n cachingIsEnabled = !!value;\n },\n\n /**\n The 'historyStateRawValues' property is a hash of key-value pairs of those properties which\n have the `includeInHistoryState` descriptor property set to true.\n\n The underlying values are 'raw' values, i.e., those which have been passed through the\n beforeSetTransform.\n */\n get historyStateRawValues() {\n var ret = {};\n historyStatePropertyKeys.forEach(function(key) {\n ret[key] = get(key);\n });\n return ret;\n },\n\n /**\n The 'rawValues' property is a hash of key-value pairs of all properties.\n\n The underlying values are 'raw' values, i.e., those which have been passed through the\n beforeSetTransform.\n */\n get rawValues() {\n var ret = {};\n Object.keys(propertyInformation).forEach(function(key) {\n ret[key] = get(key);\n });\n return ret;\n },\n\n /**\n The 'setRawValues' method accepts a hash of key-value pairs of some properties.\n\n Unlike the argument accepted by the 'set' method mixed into the mixin target, the values are\n expected to be 'raw' values, i.e., those which have already passed through the\n beforeSetTransform.\n\n Furthermore, notification of observers is only triggered for those properties whose value\n changed. This is because setRawValues is expected to be used as a system interface for\n restoring past states of the simulation, e.g., rewinding a simulation, and it would be\n undesirable to notify every observer, every time a history state was revisited.\n\n Additionally, for each property in the passed-in hash, the 'internal' setter is called if\n and only if that property has its `invokeSetterAfterBulkRestore` descriptor property set\n to true.\n */\n setRawValues: function(values) {\n withBatchedNotifications(function() {\n Object.keys(values).forEach(function(key) {\n var info = propertyInformation[key];\n if (!info) {\n return;\n }\n // During bulk state restoration, only actually changed values should trigger observers!\n if (get(key) !== values[key]) {\n notify(key);\n }\n set(key, values[key]);\n if (info.descriptor.invokeSetterAfterBulkRestore && info.descriptor.set) {\n info.descriptor.set(get(key));\n }\n });\n });\n },\n\n invalidatingChangePreHook: function() {\n\n // Only the first invalidating change during a batch runs the \"pre hook\".\n if (suppressInvalidationForBatch && invalidatingChangeOccurredDuringBatch) {\n return;\n }\n\n invalidatingChangeOccurredDuringBatch = true;\n\n if (invalidatingChangeNestingLevel === 0) {\n api.storeComputedProperties();\n api.deleteComputedPropertyCachedValues();\n api.enableCaching = false;\n }\n invalidatingChangeNestingLevel++;\n\n dispatch.beforeInvalidatingChange();\n },\n\n invalidatingChangePostHook: function() {\n if (suppressInvalidationForBatch) return;\n\n invalidatingChangeNestingLevel--;\n\n dispatch.afterInvalidatingChange();\n\n if (invalidatingChangeNestingLevel === 0) {\n api.enableCaching = true;\n api.notifyChangedComputedProperties();\n\n dispatch.afterInvalidatingChangeSequence();\n }\n },\n\n // N.B. We don't currently handle nested batches. This may be a problem.\n startBatch: function() {\n invalidatingChangeOccurredDuringBatch = false;\n suppressInvalidationForBatch = true;\n },\n\n endBatch: function() {\n suppressInvalidationForBatch = false;\n if (invalidatingChangeOccurredDuringBatch) {\n api.invalidatingChangePostHook();\n }\n },\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n }\n };\n\n return api;\n};\n","/*jshint eqnull:true, boss:true */\n\nimport _ from 'underscore';\n\n\nfunction isUndefined(val) {\n return val === \"\";\n}\n\nfunction PropertyDescription(unitDefinition, descriptionHash) {\n var u;\n\n this._descriptionHash = descriptionHash;\n this._label = descriptionHash.label || \"\";\n\n this._unitName = \"\";\n this._unitPluralName = \"\";\n this._unitAbbreviation = \"\";\n\n if (descriptionHash.unitType) {\n if (!(u = unitDefinition.units[descriptionHash.unitType])) {\n throw new Error(\"PropertyDescription: couldn't find unitType \" + descriptionHash.unitType + \" in the supplied units definition.\");\n }\n this._unitType = descriptionHash.unitType;\n this._unitName = u.name;\n this._unitPluralName = u.pluralName;\n this._unitAbbreviation = u.symbol;\n }\n\n // allow overriding the unit properties, or specifying custom ones for which there is no\n // current unit definition.\n if (descriptionHash.unitName) this._unitName = descriptionHash.unitName;\n if (descriptionHash.unitPluralName) this._unitPluralName = descriptionHash.unitPluralName;\n if (descriptionHash.unitAbbreviation) this._unitAbbreviation = descriptionHash.unitAbbreviation;\n\n this._min = descriptionHash.min;\n this._max = descriptionHash.max;\n\n this._frozen = descriptionHash.frozen;\n\n this.setFormat(descriptionHash.format);\n}\n\nPropertyDescription.prototype.getHash = function() {\n return _.extend(\n _.reject({\n unitName: this.getUnitName(),\n unitPluralName: this.getUnitPluralName(),\n unitAbbreviation: this.getUnitAbbreviation()\n }, isUndefined),\n this._descriptionHash);\n};\n\nPropertyDescription.prototype.getLabel = function() {\n return this._label;\n};\n\nPropertyDescription.prototype.getUnitType = function() {\n return this._unitType;\n};\n\nPropertyDescription.prototype.getUnitName = function() {\n return this._unitName;\n};\n\nPropertyDescription.prototype.getUnitPluralName = function() {\n return this._unitPluralName;\n};\n\nPropertyDescription.prototype.getUnitAbbreviation = function() {\n return this._unitAbbreviation;\n};\n\nPropertyDescription.prototype.getMin = function() {\n return this._min;\n};\n\nPropertyDescription.prototype.getMax = function() {\n return this._max;\n};\n\nPropertyDescription.prototype.getFrozen = function() {\n return this._frozen;\n};\n\nPropertyDescription.prototype.setFrozen = function(b) {\n this._frozen = b;\n};\n\nPropertyDescription.prototype.setFormat = function(s) {\n if (s) this._formatter = d3.format(s);\n else this._formatter = function(val) {\n return val;\n };\n};\n\nPropertyDescription.prototype.format = function(val, opts) {\n opts = opts || {};\n\n var formatter,\n formattedVal,\n plural,\n abbreviated = true;\n\n if (opts.format) {\n if (opts.format === this._lastFormat) {\n formatter = this._lastFormatter;\n } else {\n formatter = d3.format(opts.format);\n this._lastFormat = opts.format;\n this._lastFormatter = formatter;\n }\n } else {\n formatter = this._formatter;\n }\n\n formattedVal = formatter(val);\n\n if (opts && opts.abbreviated != null) abbreviated = opts.abbreviated;\n\n if (abbreviated) {\n return formattedVal + \" \" + this._unitAbbreviation;\n }\n\n plural = parseFloat(formattedVal) !== 1;\n return formattedVal + \" \" + (plural ? this._unitPluralName : this._unitName);\n};\n\nexport default PropertyDescription;\n","\nimport PropertyDescription from 'common/property-description';\n\n\nexport default function ParameterSupport(args) {\n var propertySupport = args.propertySupport,\n unitsDefinition = args.unitsDefinition || {};\n\n return {\n mixInto: function(target) {\n\n /**\n Define a property of the model to be treated as a custom parameter. Custom parameters are\n (generally, user-defined) read/write properties that trigger a setter action when set, and\n whose values are automatically persisted in the tick history.\n\n Because custom parameters are not intended to be interpreted by the engine, but instead simply\n *represent* states of the model that are otherwise fully specified by the engine state and\n other properties of the model, and because the setter function might not limit itself to a\n purely functional mapping from parameter value to model properties, but might perform any\n arbitrary stateful change, (stopping the model, etc.), the setter is NOT called when custom\n parameters are updated by the tick history.\n */\n target.defineParameter = function(key, descriptionHash, setter) {\n var descriptor = {\n type: 'parameter',\n includeInHistoryState: true,\n invokeSetterAfterBulkRestore: false,\n description: new PropertyDescription(unitsDefinition, descriptionHash),\n beforeSetCallback: propertySupport.invalidatingChangePreHook,\n afterSetCallback: propertySupport.invalidatingChangePostHook\n };\n\n // In practice, some parameters are meant only to be observed, and have no setter\n if (setter) {\n descriptor.set = function(value) {\n setter.call(target, value);\n };\n }\n propertySupport.defineProperty(key, descriptor);\n };\n }\n };\n};\n"," /*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS205: Consider reworking code to avoid use of IIFEs\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n/*\nFilter implementing running average.\nThis filter assumes that provided samples are samples of some unknown function.\nThe function is interpolated using linear interpolation. Later, integration is\nused to get mean value of the function on the given time period.\n*/\nlet RunningAverageFilter;\nexport default RunningAverageFilter = class RunningAverageFilter {\n\n /*\n Construct new Running Average Filter.\n @periodLength - length of time period, in fs, which is used to calculate averaged value.\n */\n constructor(periodLength) {\n this.periodLength = periodLength;\n this._value = [];\n this._time = [];\n this._idx = -1;\n // By default, max length of buffer is equal to periodLength.\n // You can adjust it using #setMaxBufferLength.\n this._maxBufferLength = this.periodLength;\n }\n\n /*\n Add a new sample of a function which is going to be averaged.\n Note that samples must be provided in order, sorted by time.\n @t - time\n @val - value of the sample\n */\n addSample(t, val) {\n if (this._time[this._idx] === t) {\n // Overwrite last @_value.\n this._value[this._idx] = val;\n return;\n } else if (this._time[this._idx] > t) {\n throw new Error(\"RunningAverageFilter: cannot add sample with @_time less than previous sample.\");\n }\n\n // Add new value and time.\n this._idx++;\n this._value.push(val);\n this._time.push(t);\n\n return (() => {\n const result = [];\n while (this._value.length > this._maxBufferLength) {\n // Remove first elements if buffers are too long.\n this._time.shift();\n this._value.shift();\n result.push(this._idx--);\n }\n return result;\n })();\n }\n\n /*\n Return averaged value n the specified time period (using available samples).\n */\n calculate() {\n // To get average value on [t - periodLength, t], we use\n // intuitive \"first mean value theorem for integration\". See:\n // http://en.wikipedia.org/wiki/Mean_value_theorem#Mean_value_theorems_for_integration\n\n // Limit lower bound of time period to 0.\n let timeDiff;\n const minTime = Math.max(this._time[this._idx] - this.periodLength, 0);\n\n let valSum = 0;\n let timeSum = 0;\n let i = this._idx;\n\n // Perform very simple integration.\n while ((i > 0) && (this._time[i - 1] >= minTime)) {\n timeDiff = this._time[i] - this._time[i - 1];\n timeSum += timeDiff;\n // timeDiff * avg from @_value[i-1] and @_value[i]\n valSum += (timeDiff * (this._value[i - 1] + this._value[i])) / 2.0;\n i--;\n }\n\n // Last, optional step of integration.\n // It occurs when end of integration period is between two samples.\n // Linear interpolation needs to be performed.\n // In most cases, probably it won't be performed.\n if ((i > 0) && (this._time[i] > minTime) && (this._time[i - 1] < minTime)) {\n timeDiff = this._time[i] - minTime;\n timeSum += timeDiff;\n // Linear interpolation.\n const minVal = this._value[i - 1] + (((this._value[i] - this._value[i - 1]) * (minTime - this._time[i - 1])) / (this._time[i] - this._time[i - 1]));\n valSum += (timeDiff * (this._value[i] + minVal)) / 2.0;\n }\n\n // Return mean value using mentioned theorem.\n if (timeSum) {\n return valSum / timeSum;\n } else {\n return this._value[0] || 0;\n }\n }\n\n /*\n Return current length of the buffers used to store samples.\n */\n getCurrentBufferLength() {\n return this._value.length;\n }\n\n /*\n Set limit of the buffer which stores samples.\n */\n setMaxBufferLength(maxLength) {\n return this._maxBufferLength = maxLength;\n }\n\n /*\n Return current time.\n */\n getCurrentTime() {\n return this._time[this._idx];\n }\n\n /*\n Return current step index.\n */\n getCurrentStep() {\n return this._idx;\n }\n\n /*\n Set current step to @location.\n It allows to get average value of the function in various moments in time.\n */\n setCurrentStep(location) {\n // Note that location can be -1, e.g. while reseting buffers and starting from initial state.\n if ((location < -1) || (location >= this._value.length)) {\n throw new Error(\"RunningAverageFilter: cannot seek, location outside available range.\");\n }\n return this._idx = location;\n }\n\n /*\n Remove all samples *after* @location.\n */\n invalidate(location) {\n this._value.length = location + 1;\n this._time.length = location + 1;\n return this._idx = location;\n }\n\n /*\n Reset filter\n */\n reset() {\n this._values.length = 0;\n this._time = 0;\n return this._idx = 0;\n }\n};\n\n"," /*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n/*\nFilter implementing that calculates period for a simple period data.\n*/\nlet SimplePeriodFilter;\nexport default SimplePeriodFilter = class SimplePeriodFilter {\n\n /*\n Construct new Running Average Filter.\n @periodLength - length of time period, in fs, which is used to calculate averaged value.\n */\n constructor() {\n this._values = [];\n this._time = [];\n this._idx = -1;\n this._zero_crossing_buffer = [];\n this._period_buffer = [];\n // By default, max length of buffer is equal to periodLength.\n // You can adjust it using #setMaxBufferLength.\n this._maxBufferLength = 8192;\n }\n\n /*\n Add a new sample of a function which is going to be averaged.\n Note that samples must be provided in order, sorted by time.\n @t - time\n @val - value of the sample\n */\n addSample(t, val) {\n let previous_value;\n if (this._time[this._idx] === t) {\n // Overwrite last @_values.\n this._values[this._idx] = val;\n return;\n } else if (this._time[this._idx] > t) {\n console.log(\"Error: RunningAverageFilter: cannot add sample with @_time less than previous sample.\");\n // throw new Error \"RunningAverageFilter: cannot add sample with @_time less than previous sample.\"\n return;\n }\n\n // Add new value and time.\n this._idx++;\n this._values.push(val);\n this._time.push(t);\n if (this._values.length > 1) {\n previous_value = this._values[this._values.length - 2];\n }\n\n while (this._values.length > this._maxBufferLength) {\n // Remove first elements if buffers are too long.\n this._time.shift();\n this._values.shift();\n this._idx--;\n }\n\n // save zero-crossing times and zero-to-zero times\n if (((previous_value < 0) && (val > 0)) || ((previous_value > 0) && (val < 0))) {\n this._zero_crossing_buffer.push(t);\n if (this._zero_crossing_buffer.length > 1) {\n const previous_zero_crossing = this._zero_crossing_buffer[this._zero_crossing_buffer.length - 2];\n this._period_buffer.push(t - previous_zero_crossing);\n }\n while (this._zero_crossing_buffer.length > 128) {\n this._zero_crossing_buffer.shift();\n this._period_buffer.shift();\n }\n }\n\n }\n\n /*\n Return averaged period.\n */\n calculate() {\n if (this._period_buffer.length < 1) {\n return 0;\n }\n if (this._period_buffer.length === 1) {\n return this._period_buffer[0] * 2;\n }\n const sum = this._period_buffer.reduce((x, y) => x + y);\n const average = sum / this._period_buffer.length;\n return average * 2;\n }\n\n /*\n Return current length of the buffers used to store samples.\n */\n getCurrentBufferLength() {\n return this._values.length;\n }\n\n /*\n Set limit of the buffer which stores samples.\n */\n setMaxBufferLength(maxLength) {\n return this._maxBufferLength = maxLength;\n }\n\n /*\n Return current time.\n */\n getCurrentTime() {\n return this._time[this._idx];\n }\n\n /*\n Return current step index.\n */\n getCurrentStep() {\n return this._idx;\n }\n\n /*\n Set current step to @location.\n It allows to get average value of the function in various moments in time.\n */\n setCurrentStep(location) {\n // Note that location can be -1, e.g. while reseting buffers and starting from initial state.\n if ((location < -1) || (location >= this._values.length)) {\n throw new Error(\"SimplePeriodFilter: cannot seek, location outside available range.\");\n }\n return this._idx = location;\n }\n\n /*\n Remove all samples *after* @location.\n */\n invalidate(location) {\n if (location) {\n this._values.length = location + 1;\n this._time.length = location + 1;\n return this._idx = location;\n } else {\n return this.reset();\n }\n }\n\n /*\n Reset filter\n */\n reset() {\n this._values.length = 0;\n this._time.length = 0;\n this._idx = 0;\n this._zero_crossing_buffer.length = 0;\n this._period_buffer.length = 0;\n }\n};\n\n"," \nimport PropertyDescription from 'common/property-description';\nimport RunningAverageFilter from 'common/filters/running-average-filter';\nimport SimplePeriodFilter from 'common/filters/simple-period-filter';\n\n\nexport default function OutputSupport(args) {\n var propertySupport = args.propertySupport,\n unitsDefinition = args.unitsDefinition || {},\n tickHistory = args.tickHistory || null,\n\n filteredOutputs = [];\n\n function updateFilteredOutputs() {\n filteredOutputs.forEach(function(output) {\n output.addSample();\n });\n }\n\n function resetFilteredOutputs() {\n filteredOutputs.forEach(function(output) {\n output.reset();\n });\n }\n\n // TODO: is it necessary? It follows the old solution.\n // In theory filtered outputs could be updated only on time change\n // or on filtered property value change. Check it!\n propertySupport.on(\"afterInvalidatingChange.output-support\", updateFilteredOutputs);\n\n return {\n mixInto: function(target) {\n\n /**\n Add an \"output\" property to the model. Output properties are expected to change at every\n model tick, and may also be changed indirectly, outside of a model tick, by a change to model\n properties or the atom, element, etc. properties.\n\n `key` should be the name of the output. The property value will be accessed by\n `model.get();`\n\n `description` should be a hash of metadata about the property.\n\n `getter` should be a no-arg function which calculates the property value. These values are not\n translated after getter returns because we expect that most output getters are authored\n scripts, which operate entirely with already-translated units. Therefore, getters defined\n internally in modeler.js needs to make sure to translate any \"model units\" values out of the\n model-unit domain.\n */\n target.defineOutput = function(key, descriptionHash, getter) {\n propertySupport.defineProperty(key, {\n type: 'output',\n writable: false,\n get: getter,\n includeInHistoryState: false,\n description: new PropertyDescription(unitsDefinition, descriptionHash)\n });\n };\n\n\n /**\n Add an \"filtered output\" property to the model. This is special kind of output property, which\n is filtered by one of the built-in filters based on time (like running average). Note that filtered\n outputs do not specify calculate function - instead, they specify property which should filtered.\n It can be another output, model parameter or custom parameter.\n\n Filtered output properties are extension of typical output properties. They share all features of\n output properties, so they are expected to change at every model tick, and may also be changed indirectly,\n outside of a model tick, by a change to the model parameters or to the configuration of atoms and other\n objects in the model.\n\n `key` should be the name of the parameter. The property value will be accessed by\n `target.get();`\n\n `description` should be a hash of metadata about the property. Right now, these metadata are not\n used. However, example metadata include the label and units name to be used when graphing\n this property.\n\n `filteredPropertyKey` should be name of the basic property which should be filtered.\n\n `type` should be type of filter, defined as string. For now only \"RunningAverage\" and \"SimplePeriod\"\n are supported.\n\n `period` should be number defining length of time period used for calculating filtered value. It should\n be specified in femtoseconds.\n\n */\n target.defineFilteredOutput = function(key, description, filteredPropertyKey, type, period) {\n var filter, initialValue;\n\n if (type === \"RunningAverage\") {\n filter = new RunningAverageFilter(period);\n } else if (type === \"SimplePeriod\") {\n filter = new SimplePeriodFilter();\n } else {\n throw new Error(\"FilteredOutput: unknown filter type \" + type + \".\");\n }\n\n // Add initial sample\n initialValue = target.properties[filteredPropertyKey];\n if (initialValue === undefined || isNaN(Number(initialValue))) {\n throw new Error(\"FilteredOutput: property is not a valid numeric value or it is undefined.\");\n }\n filter.addSample(target.properties.time, initialValue);\n\n if (tickHistory) {\n // Create simple adapter implementing TickHistoryCompatible Interface\n // and register it in tick history.\n tickHistory.registerExternalObject({\n push: function() {\n // Filtered outputs are updated only at the end of tick() operation,\n // during tickHistory.push() call. So they are *not* updated\n // immediately after property change, e.g. using model.set(\"prop\", 5).\n // Filtered ouput bound to \"prop\" property will reflect this change\n // in the next tick.\n filter.addSample(target.properties.time, target.properties[filteredPropertyKey]);\n },\n extract: function(idx) {\n filter.setCurrentStep(idx);\n },\n invalidate: function(idx) {\n filter.invalidate(idx);\n },\n setHistoryLength: function(length) {\n filter.setMaxBufferLength(length);\n },\n reset: function() {\n filter.reset();\n }\n });\n } else {\n filteredOutputs.push({\n addSample: function() {\n filter.addSample(target.properties.time, target.properties[filteredPropertyKey]);\n }\n });\n }\n\n // Extend description to contain information about filter\n description.property = filteredPropertyKey;\n description.type = type;\n description.period = period;\n\n target.defineOutput(key, description, function() {\n return filter.calculate();\n });\n };\n\n /**\n Call this method after moving to a different model time (e.g., after stepping the model\n forward or back, seeking to a different time, or on model initialization) to update all output\n properties and notify their listeners. This method is more efficient for that case than\n updateOutputPropertiesAfterChange because it can assume that all output properties are\n invalidated by the model step. It therefore does not need to calculate any output property\n values; it allows them to be evaluated lazily instead. Property values are calculated when and\n if listeners request them. This method also guarantees that all properties have their updated\n value when they are requested by any listener.\n\n Technically, this method first updates the 'viewAtoms' array and macrostate variables, then\n invalidates any cached output-property values, and finally notifies all output-property\n listeners.\n\n Note that this method and updateOutputPropertiesAfterChange are the only methods which can\n flush the cached value of an output property. Therefore, be sure to not to make changes\n which would invalidate a cached value without also calling one of these two methods.\n */\n target.updateAllOutputProperties = function() {\n propertySupport.deleteComputedPropertyCachedValues();\n propertySupport.notifyAllComputedProperties();\n updateFilteredOutputs();\n };\n\n target.resetAllOutputProperties = function() {\n resetFilteredOutputs();\n };\n }\n };\n};\n","\nimport console from 'common/console';\nimport performance from 'common/performance';\nimport PropertyDescription from 'common/property-description';\n\nexport default function PlaybackSupport(args) {\n // DispatchSupport instance or compatible module.\n var dispatch = args && args.dispatch || null,\n // Properties object - it can be used to define 'modelSampleRate'.\n // Instance of PropertiesSupport class is expected.\n propertySupport = args && args.propertySupport || null,\n unitsDefinition = args && args.unitsDefinition || null,\n computeActualUseDuration = args.computeActualUseDuration,\n computeActualDuration = args.computeActualDuration,\n\n eventsSupported = (function() {\n // Events support is optional. It should be provided by the\n // DispatchSupport (common/dispatch-support) or another compatible\n // module.\n if (dispatch) {\n if (dispatch.on && dispatch.addEventTypes) {\n dispatch.addEventTypes(\"play\", \"stop\", \"tickStart\", \"tickEnd\");\n return true;\n } else {\n throw new Error(\"[PlaybackSupport] Provided Dispatch object doesn't implement required interface!\");\n }\n } else {\n return false;\n }\n }()),\n\n stopped = true,\n stopRequest = false,\n restartRequest = false,\n hasPlayed = false;\n\n /**\n Repeatedly calls `f` at an interval defined by the modelSampleRate property, until f returns\n true. (This is the same signature as d3.timer.)\n\n If modelSampleRate === 'default', try to run at the \"requestAnimationFrame rate\"\n (i.e., using d3.timer(), after running f, also request to run f at the next animation frame)\n\n If modelSampleRate !== 'default', instead uses setInterval to schedule regular calls of f with\n period (1000 / sampleRate) ms, corresponding to sampleRate calls/s\n */\n function timer(f) {\n var intervalID,\n // When target support properties and it defines\n // 'modelSampleRate', it will be used.\n sampleRate = propertySupport && propertySupport.properties.modelSampleRate || 'default';\n\n if (sampleRate === 'default') {\n // use requestAnimationFrame via d3.timer\n d3.timer(f);\n } else {\n // set an interval to run the model more slowly.\n intervalID = window.setInterval(function() {\n if (f()) {\n window.clearInterval(intervalID);\n }\n }, 1000 / sampleRate);\n }\n }\n\n return {\n mixInto: function(target) {\n var timePropertyDescription;\n\n if (propertySupport && target.defineOutput) {\n\n // Define duration-related properties, indicating the time, if any, past which\n // the model should not play.\n\n // values to show, e.g., as a menu of reasonable choices for requestedDuration\n target.defineOutput('durationOptions', {}, function() {\n // Result is an array of times (in \"user-facing\" units, such as s in mks models or fs\n // in md2d models), derived from a number of ticks.\n // For mks models having 1/60 seconds per tick, this is 0.5s, 1s, 2s, 5s, 10s, 30s, 60s:\n var TICKS = [30, 60, 120, 300, 600, 1800, 3600];\n var timePerTick = propertySupport.properties.timePerTick;\n\n if (timePerTick != null) {\n return TICKS.map(function(ticks) {\n return ticks * timePerTick;\n });\n }\n return [];\n });\n\n target.defineOutput('actualUseDuration', {}, computeActualUseDuration);\n\n target.defineOutput('actualDuration', {\n label: \"Experiment duration\",\n unitType: 'time',\n format: 'f'\n }, computeActualDuration);\n }\n\n // All playable (time-based) models should have a method to return time values formatted\n // user consumption. Specific models can override this method; for example md2d internally\n // uses time values in fs but we want to display them as ps.\n\n if (!target.formatTime && unitsDefinition) {\n timePropertyDescription = new PropertyDescription(unitsDefinition, {\n unitType: 'time',\n // might want to provide a way for models to override this default format without\n // having to override the formatTime method?\n format: '.1f'\n });\n\n target.formatTime = function(time) {\n return timePropertyDescription.format(time);\n };\n }\n\n if (typeof target.tick !== \"function\") {\n target.tick = function() {\n console.warn(\"[PlaybackSupport] .tick() method should be overwritten by target!\");\n };\n }\n\n target.start = function() {\n // Cleanup stop and restart requests.\n stopRequest = false;\n restartRequest = false;\n\n if (!stopped) {\n // Do nothing, model is running.\n return target;\n }\n\n stopped = false;\n\n timer(function timerTick(elapsedTime) {\n if (eventsSupported) dispatch.tickStart();\n performance.leaveScope(\"gap\");\n // Cancel the timer and refuse to to step the model, if the model is stopped.\n // This is necessary because there is no direct way to cancel a d3 timer.\n // See: https://github.com/mbostock/d3/wiki/Transitions#wiki-d3_timer)\n if (stopRequest) {\n stopped = true;\n if (eventsSupported) dispatch.stop();\n return true;\n }\n\n if (restartRequest) {\n setTimeout(target.start, 0);\n stopped = true;\n return true;\n }\n\n if (propertySupport && propertySupport.properties.time >= propertySupport.properties.actualDuration) {\n target.stop();\n return false;\n }\n\n performance.enterScope(\"tick\");\n target.tick(elapsedTime);\n performance.leaveScope(\"tick\");\n\n performance.enterScope(\"gap\");\n return false;\n });\n\n if (eventsSupported) dispatch.play();\n\n performance.enterScope(\"gap\");\n return target;\n };\n\n target.restart = function() {\n restartRequest = true;\n return target;\n };\n\n target.stop = function() {\n stopRequest = true;\n return target;\n };\n\n target.isStopped = function() {\n return stopped || stopRequest;\n };\n\n target.on('play.playback-support', function() {\n hasPlayed = true;\n });\n\n target.on('reset.playback-support', function() {\n hasPlayed = false;\n });\n\n Object.defineProperty(target, 'hasPlayed', {\n enumerable: true,\n get: function() {\n return hasPlayed;\n }\n });\n }\n };\n};\n","\nimport PropertySupport from 'common/property-support';\nimport ParameterSupport from 'common/parameter-support';\nimport OutputSupport from 'common/output-support';\nimport DispatchSupport from 'common/dispatch-support';\nimport PlaybackSupport from 'common/playback-support';\nimport defineBuiltinProperties from 'common/define-builtin-properties';\n// it's somewhat unfortunate to have an \"upwards\" dependency on the controller layer\nimport ExportController from 'common/controllers/export-controller';\n\nexport default function LabModelerMixin(args) {\n\n var api,\n\n /**\n * Accepted arguments:\n */\n metadata = args.metadata,\n setters = args.setters,\n unitsDefinition = args.unitsDefinition,\n unitsTranslation = args.unitsTranslation,\n initialProperties = args.initialProperties,\n tickHistory = args.tickHistory,\n\n // defaults to true:\n usePlaybackSupport = args.usePlaybackSupport === undefined || !!args.usePlaybackSupport,\n\n propertySupport = new PropertySupport({\n types: [\"output\", \"parameter\", \"mainProperty\", \"viewOption\"]\n }),\n parameterSupport = new ParameterSupport({\n propertySupport: propertySupport,\n unitsDefinition: unitsDefinition\n }),\n outputSupport = new OutputSupport({\n propertySupport: propertySupport,\n unitsDefinition: unitsDefinition,\n tickHistory: tickHistory\n }),\n dispatchSupport = new DispatchSupport(),\n playbackSupport;\n\n // Make these functions available to any model that chooses to implement duration\n // related properties. PlaybackSupport mixes the duration-related property definitions\n // into models that use it, but other model types, such as sensor models, have to use\n // alternate definitions. The functions below implement some of the logic the different\n // implementations have in common.\n function computeActualDuration() {\n // changing requestedDuration will have an effect iff actualUseDuration == true\n var actualUseDuration = propertySupport.properties.actualUseDuration;\n var requestedDuration = propertySupport.properties.requestedDuration;\n var durationOptions;\n\n if (!actualUseDuration) {\n return Infinity;\n }\n\n // Only numeric values can be handled by rest of the code. Strings, {}, or nulls won't work, so in that\n // case calculate a default / fallback value will be calculated below.\n if (typeof requestedDuration === 'number') {\n return requestedDuration;\n }\n\n // need to use a default\n durationOptions = propertySupport.properties.durationOptions;\n\n if (durationOptions.length > 0) {\n return durationOptions[Math.floor(durationOptions.length / 2)];\n } else {\n // No good default; punt. Leave actualUseDuration = true, but don't actually stop.\n return Infinity;\n }\n }\n\n function computeActualUseDuration() {\n var useDuration = propertySupport.properties.useDuration;\n return useDuration === true || useDuration === 'codap' && ExportController.canExportData();\n }\n\n if (usePlaybackSupport) {\n playbackSupport = new PlaybackSupport({\n dispatch: dispatchSupport,\n propertySupport: propertySupport,\n unitsDefinition: unitsDefinition,\n computeActualDuration: computeActualDuration,\n computeActualUseDuration: computeActualUseDuration\n });\n }\n\n // Is the model setup complete, so the model is ready to be played and record to tick history?\n // \"Naked\" models are ready upon instantation, but in an interactive, a model shouldn't record\n // history or play until external code has finished setting up parameters, running onload\n // scripts; in the latter case, we wait for a call to model.ready()\n var isReady = false;\n\n // FIXME: These events have to be available as some other modules try to\n // add listeners. Probably they aren't necessary, trace it and fix.\n dispatchSupport.addEventTypes(\"reset\", \"stepForward\", \"stepBack\", \"seek\", \"invalidation\", \"willReset\", \"ready\", \"log\");\n\n api = {\n mixInto: function(target) {\n propertySupport.mixInto(target);\n parameterSupport.mixInto(target);\n outputSupport.mixInto(target);\n dispatchSupport.mixInto(target);\n\n if (playbackSupport) {\n playbackSupport.mixInto(target);\n }\n\n // This allows external code (such as the model controller) to trigger the model's\n // willReset event. This allows observers such as the export controller to observe model\n // state before it gets blown away.\n target.willReset = function() {\n dispatchSupport.willReset();\n };\n\n /**\n Indicate that the model is ready, causing it to save its current state as the initial state,\n to push the current state as the first state of the regular tick history, and to emit the\n ready event.\n\n This is a public method because we may have to wait for\n external code to indicate that setup is complete (e.g., code that defines parameters and sets\n their initial values, or manipulates the model in some other way)\n\n This method is called upon model instantiation if initializationOptions.waitForSetup is false\n Otherwise, it must be called by external code. It is an error to call it twice.\n */\n target.ready = function() {\n if (isReady) {\n throw new Error(\"ready() called on an already-ready model.\");\n }\n\n if (api.tickHistory) {\n api.tickHistory.saveInitialState();\n api.tickHistory.push();\n }\n\n propertySupport.invalidatingChangePreHook();\n isReady = true;\n propertySupport.invalidatingChangePostHook();\n\n dispatchSupport.ready();\n };\n\n Object.defineProperty(target, 'isReady', {\n enumerable: true,\n get: function() {\n return isReady;\n }\n });\n\n if (metadata) {\n defineBuiltinProperties({\n propertySupport: propertySupport,\n metadata: metadata,\n\n unitsDefinition: unitsDefinition,\n unitsTranslation: unitsTranslation,\n setters: setters,\n initialProperties: initialProperties\n });\n }\n },\n\n get propertySupport() {\n return propertySupport;\n },\n\n get parameterSupport() {\n return parameterSupport;\n },\n\n get outputSupport() {\n return outputSupport;\n },\n\n get dispatchSupport() {\n return dispatchSupport;\n },\n\n get playbackSupport() {\n return playbackSupport;\n },\n\n get computeActualDuration() {\n return computeActualDuration;\n },\n\n get computeActualUseDuration() {\n return computeActualUseDuration;\n }\n };\n\n return api;\n};\n","\nimport validator from 'common/validator';\nimport PropertyDescription from 'common/property-description';\n\n\nexport default function defineBuiltinProperties(args) {\n var propertySupport = args.propertySupport,\n metadata = args.metadata,\n // Optional:\n unitsDefinition = args.unitsDefinition || {},\n unitsTranslation = args.unitsTranslation || null,\n setters = args.setters || {},\n initialProperties = args.initialProperties || null;\n\n function defineBuiltinProperty(key, type, setter) {\n var metadataForType,\n descriptor,\n propertyChangeInvalidates,\n unitType;\n\n if (type === 'mainProperty') {\n metadataForType = metadata.mainProperties;\n } else if (type === 'viewOption') {\n metadataForType = metadata.viewOptions;\n } else {\n throw new Error(type + \" is not a supported built-in property type\");\n }\n\n propertyChangeInvalidates = validator.propertyChangeInvalidates(metadataForType[key]);\n\n descriptor = {\n type: type,\n writable: validator.propertyIsWritable(metadataForType[key]),\n set: setter,\n includeInHistoryState: !!metadataForType[key].storeInTickHistory,\n validate: function(value) {\n return validator.validateSingleProperty(metadataForType[key], key, value, false);\n },\n beforeSetCallback: propertyChangeInvalidates ? propertySupport.invalidatingChangePreHook : undefined,\n afterSetCallback: propertyChangeInvalidates ? propertySupport.invalidatingChangePostHook : undefined\n };\n\n unitType = metadataForType[key].unitType;\n descriptor.description = new PropertyDescription(unitsDefinition, {\n unitType: unitType,\n label: metadataForType[key].label || key\n });\n\n if (unitType && unitsTranslation) {\n descriptor.beforeSetTransform = function(value) {\n return unitsTranslation.translateToModelUnits(value, unitType);\n };\n descriptor.afterGetTransform = function(value) {\n return unitsTranslation.translateFromModelUnits(value, unitType);\n };\n }\n\n propertySupport.defineProperty(key, descriptor);\n }\n\n (function() {\n var mainProperties,\n viewOptions;\n\n // Define built-in properties using provided metadata.\n Object.keys(metadata.mainProperties).forEach(function(key) {\n defineBuiltinProperty(key, 'mainProperty', setters[key]);\n });\n Object.keys(metadata.viewOptions).forEach(function(key) {\n defineBuiltinProperty(key, 'viewOption', setters[key]);\n });\n\n if (initialProperties) {\n mainProperties = validator.validateCompleteness(metadata.mainProperties, initialProperties);\n propertySupport.setRawValues(mainProperties);\n\n viewOptions = validator.validateCompleteness(metadata.viewOptions, initialProperties.viewOptions || {});\n propertySupport.setRawValues(viewOptions);\n }\n }());\n};\n"," \n/**\n Class which handles tick history. It supports saving and restoring state\n of core state objects defined by the modeler and engine. However, while\n adding a new object which should also be saved in tick history, consider\n utilization of \"external objects\" - this is special object which should\n implement TickHistoryCompatible Interface:\n #setHistoryLength(number)\n #push()\n #extract(index)\n #invalidate(index)\n\n Note that index argument is *always* limited to [0, historyLength) range.\n\n \"External objects\" handle changes of the current step itself. TickHistory\n only sends requests to perform various operations. To register new\n external object use #registerExternalObject(object) method.\n\n It allows to decentralize management of tick history and tight coupling\n TickTistory with API of various objects.\n*/\nexport default function TickHistory(modelState, model, size) {\n var tickHistory = {},\n initialState,\n list,\n listState,\n defaultSize = 1000,\n // List of objects defining TickHistoryCompatible Interface.\n externalObjects = [],\n\n // Provide the \"old\" interface for models that don't use PropertySupport yet, but provide\n // a different, new interface for models using PropertySupport for their parameters, etc.\n // Such models are smart enough to send a single hash of raw property values for all the\n // properties (parameters, main properties, view properties, etc) we need to save. Older\n // models need to provide us with separate lists of \"regular\" properties and parameters,\n // with their own separate restore callbacks.\n //\n // *** Remember to remove this when all models use PropertySupport! ***\n //\n useNewInterface = !!modelState.getProperties;\n\n function newState() {\n return {\n input: {},\n state: [],\n parameters: {}\n };\n }\n\n function reset() {\n var i;\n\n list = [];\n listState = {\n // Equal to list.length:\n length: 0,\n // Drop oldest state in order to keep list no longer than this:\n maxSize: size,\n // Index into `list` of the current state:\n index: -1,\n // Total length of \"total history\" (counting valid history states that have been dropped)\n counter: -1,\n // Index in \"total history\" of the oldest state in the list.\n // Invariant: counter == index + startCounter\n startCounter: 0\n };\n // Send push request to external objects defining TickHistoryCompatible Interface.\n for (i = 0; i < externalObjects.length; i++) {\n if (externalObjects[i].reset) {\n externalObjects[i].reset();\n }\n }\n }\n\n function copyModelState(destination) {\n var i,\n prop,\n state,\n parameters,\n name;\n\n if (useNewInterface) {\n // we expect that modelState.getProperties returns us a hash we can keep\n destination.input = modelState.getProperties();\n } else {\n // save model input properties\n for (i = 0; i < modelState.input.length; i++) {\n prop = modelState.input[i];\n destination.input[prop] = modelState.getRawPropertyValue(prop);\n }\n\n // save model parameters\n parameters = modelState.parameters;\n for (name in parameters) {\n if (parameters.hasOwnProperty(name) && parameters[name].isDefined) {\n destination.parameters[name] = modelState.getRawPropertyValue(name);\n }\n }\n }\n\n // save model objects defining state\n state = modelState.state;\n for (i = 0; i < state.length; i++) {\n destination.state[i] = state[i].clone();\n }\n }\n\n /** Copy the current model state into the list at list[listState.index+1] and updates listState.\n Removes any (now-invalid) states in the list that come after the newly pushed state.\n */\n function push() {\n var lastState = newState(),\n i;\n\n copyModelState(lastState);\n list[listState.index + 1] = lastState;\n\n // Drop the oldest state if we went over the max list size\n if (list.length > listState.maxSize) {\n list.splice(0, 1);\n listState.startCounter++;\n } else {\n listState.index++;\n }\n listState.counter = listState.index + listState.startCounter;\n\n // Send push request to external objects defining TickHistoryCompatible Interface.\n for (i = 0; i < externalObjects.length; i++) {\n externalObjects[i].push();\n }\n\n invalidateFollowingState();\n listState.length = list.length;\n }\n\n /** Invalidate (remove) all history after current index. For example, after seeking backwards\n and then pushing new state */\n function invalidateFollowingState() {\n var i;\n\n list.length = listState.index + 1;\n listState.length = list.length;\n\n // Invalidate external objects defining TickHistoryCompatible Interface.\n for (i = 0; i < externalObjects.length; i++) {\n externalObjects[i].invalidate(listState.index);\n }\n }\n\n function extract(savedState) {\n var i,\n state;\n\n // restore model input properties\n modelState.restoreProperties(savedState.input);\n\n if (!useNewInterface) {\n // old interface requires restoring parameters separately\n modelState.restoreParameters(savedState.parameters);\n }\n\n // restore model objects defining state\n state = savedState.state;\n for (i = 0; i < state.length; i++) {\n modelState.state[i].restore(state[i]);\n }\n\n // Send extract request to external objects defining TickHistoryCompatible Interface.\n for (i = 0; i < externalObjects.length; i++) {\n externalObjects[i].extract(listState.index);\n }\n }\n\n function checkIndexArg(index) {\n if (index < 0) {\n throw new Error(\"TickHistory: extract index [\" + index + \"] less than 0\");\n }\n if (index >= list.length) {\n throw new Error(\"TickHistory: extract index [\" + index + \"] greater than list.length: \" + list.length);\n }\n return index;\n }\n\n //\n // Public methods\n //\n tickHistory.isEmpty = function() {\n return listState.index === 0;\n };\n\n tickHistory.push = function() {\n push();\n };\n\n tickHistory.returnTick = function(ptr) {\n var i;\n if (typeof ptr === 'number') {\n i = ptr;\n } else {\n i = listState.index;\n }\n checkIndexArg(i);\n return list[i];\n };\n\n tickHistory.extract = function(ptr) {\n var i;\n if (typeof ptr === 'number') {\n i = ptr;\n } else {\n i = listState.index;\n }\n checkIndexArg(i);\n extract(list[i]);\n };\n\n tickHistory.saveInitialState = function() {\n initialState = newState();\n copyModelState(initialState);\n };\n\n tickHistory.restoreInitialState = function() {\n reset();\n extract(initialState);\n push();\n };\n\n tickHistory.reset = reset;\n\n tickHistory.decrementExtract = function() {\n if (listState.counter > listState.startCounter) {\n listState.index--;\n listState.counter--;\n extract(list[listState.index]);\n }\n };\n\n tickHistory.incrementExtract = function() {\n listState.index++;\n listState.counter++;\n extract(list[listState.index]);\n };\n\n tickHistory.seekExtract = function(ptr) {\n if (ptr < listState.startCounter) ptr = listState.startCounter;\n if (ptr >= listState.startCounter + listState.length) ptr = listState.startCounter + listState.length - 1;\n listState.counter = ptr;\n listState.index = ptr - listState.startCounter;\n extract(list[listState.index]);\n };\n\n tickHistory.invalidateFollowingState = invalidateFollowingState;\n\n tickHistory.get = function(key) {\n return listState[key];\n };\n\n tickHistory.set = function(key, val) {\n return listState[key] = val;\n };\n\n /**\n Registers a new external object. It is a special object, which handles changes of step itself.\n TickHistory object only sends requests for various actions.\n External object should implement TickHistoryCompatible Interface:\n #setHistoryLength(number)\n #push()\n #extract(index)\n #invalidate(index)\n */\n tickHistory.registerExternalObject = function(externalObj) {\n externalObj.setHistoryLength(listState.maxSize);\n externalObjects.push(externalObj);\n };\n\n //\n // Initialization\n //\n if (size == null) size = defaultSize;\n\n reset();\n return tickHistory;\n};\n","export default [{\n \"fullName\": \"Alanine\",\n \"abbreviation\": \"Ala\",\n \"symbol\": \"A\",\n \"molWeight\": 89.09,\n \"charge\": 0,\n \"hydrophobicityRB\": 2.15,\n \"pK\": 0,\n \"surface\": 115,\n \"volume\": 88.6,\n \"solubility\": 16.65,\n \"hydrophobicity\": 1,\n \"property\": \"Total aliphatic; hydrophobic\"\n}, {\n \"fullName\": \"Arginine\",\n \"abbreviation\": \"Arg\",\n \"symbol\": \"R\",\n \"molWeight\": 174.2,\n \"charge\": 1,\n \"hydrophobicityRB\": 2.23,\n \"pK\": 12,\n \"surface\": 225,\n \"volume\": 173.4,\n \"solubility\": 15,\n \"hydrophobicity\": -2,\n \"property\": \"Acidic side chains; strongly polar; cationic\"\n}, {\n \"fullName\": \"Asparagine\",\n \"abbreviation\": \"Asn\",\n \"symbol\": \"N\",\n \"molWeight\": 132.12,\n \"charge\": 0,\n \"hydrophobicityRB\": 1.05,\n \"pK\": 0,\n \"surface\": 160,\n \"volume\": 114.1,\n \"solubility\": 3.53,\n \"hydrophobicity\": -1,\n \"property\": \"Strongly polar\"\n}, {\n \"fullName\": \"Asparticacid\",\n \"abbreviation\": \"Asp\",\n \"symbol\": \"D\",\n \"molWeight\": 133.1,\n \"charge\": -1,\n \"hydrophobicityRB\": 1.13,\n \"pK\": 4.4,\n \"surface\": 150,\n \"volume\": 111.1,\n \"solubility\": 0.778,\n \"hydrophobicity\": -2,\n \"property\": \"Acidic side chains; strongly polar; anionic\"\n}, {\n \"fullName\": \"Cysteine\",\n \"abbreviation\": \"Cys\",\n \"symbol\": \"C\",\n \"molWeight\": 121.15,\n \"charge\": 0,\n \"hydrophobicityRB\": 1.2,\n \"pK\": 8.5,\n \"surface\": 135,\n \"volume\": 108.5,\n \"solubility\": 1000,\n \"hydrophobicity\": 1,\n \"property\": \"Polar side chains; semipolar\"\n}, {\n \"fullName\": \"Glutamine\",\n \"abbreviation\": \"Gln\",\n \"symbol\": \"Q\",\n \"molWeight\": 146.15,\n \"charge\": 0,\n \"hydrophobicityRB\": 1.65,\n \"pK\": 0,\n \"surface\": 180,\n \"volume\": 143.8,\n \"solubility\": 2.5,\n \"hydrophobicity\": -1,\n \"property\": \"Strongly polar\"\n}, {\n \"fullName\": \"Glutamicacid\",\n \"abbreviation\": \"Glu\",\n \"symbol\": \"E\",\n \"molWeight\": 147.13,\n \"charge\": -1,\n \"hydrophobicityRB\": 1.73,\n \"pK\": 4.4,\n \"surface\": 190,\n \"volume\": 138.4,\n \"solubility\": 0.864,\n \"hydrophobicity\": -2,\n \"property\": \"Acidic side chains; strongly polar; anionic\"\n}, {\n \"fullName\": \"Glycine\",\n \"abbreviation\": \"Gly\",\n \"symbol\": \"G\",\n \"molWeight\": 75.07,\n \"charge\": 0,\n \"hydrophobicityRB\": 1.18,\n \"pK\": 0,\n \"surface\": 75,\n \"volume\": 60.1,\n \"solubility\": 24.99,\n \"hydrophobicity\": 1,\n \"property\": \"Semipolar\"\n}, {\n \"fullName\": \"Histidine\",\n \"abbreviation\": \"His\",\n \"symbol\": \"H\",\n \"molWeight\": 155.16,\n \"charge\": 1,\n \"hydrophobicityRB\": 2.45,\n \"pK\": 6.5,\n \"surface\": 195,\n \"volume\": 153.2,\n \"solubility\": 4.19,\n \"hydrophobicity\": -2,\n \"property\": \"Basic side chains; strongly polar; cationic\"\n}, {\n \"fullName\": \"Isoleucine\",\n \"abbreviation\": \"Ile\",\n \"symbol\": \"I\",\n \"molWeight\": 131.17,\n \"charge\": 0,\n \"hydrophobicityRB\": 3.88,\n \"pK\": 0,\n \"surface\": 175,\n \"volume\": 166.7,\n \"solubility\": 4.117,\n \"hydrophobicity\": 1,\n \"property\": \"Branched chain aliphatic; hydrophobic\"\n}, {\n \"fullName\": \"Leucine\",\n \"abbreviation\": \"Leu\",\n \"symbol\": \"L\",\n \"molWeight\": 131.17,\n \"charge\": 0,\n \"hydrophobicityRB\": 4.1,\n \"pK\": 10,\n \"surface\": 170,\n \"volume\": 166.7,\n \"solubility\": 2.426,\n \"hydrophobicity\": 1,\n \"property\": \"Branched chain aliphatic; hydrophobic\"\n}, {\n \"fullName\": \"Lysine\",\n \"abbreviation\": \"Lys\",\n \"symbol\": \"K\",\n \"molWeight\": 146.19,\n \"charge\": 1,\n \"hydrophobicityRB\": 3.05,\n \"pK\": 0,\n \"surface\": 200,\n \"volume\": 168.6,\n \"solubility\": 1000,\n \"hydrophobicity\": -2,\n \"property\": \"Acidic side chains; strongly polar; cationic\"\n}, {\n \"fullName\": \"Methionine\",\n \"abbreviation\": \"Met\",\n \"symbol\": \"M\",\n \"molWeight\": 149.21,\n \"charge\": 0,\n \"hydrophobicityRB\": 3.43,\n \"pK\": 0,\n \"surface\": 185,\n \"volume\": 162.9,\n \"solubility\": 3.81,\n \"hydrophobicity\": 1,\n \"property\": \"Totally alyphatic\"\n}, {\n \"fullName\": \"Phenylalanine\",\n \"abbreviation\": \"Phe\",\n \"symbol\": \"F\",\n \"molWeight\": 165.19,\n \"charge\": 0,\n \"hydrophobicityRB\": 3.46,\n \"pK\": 0,\n \"surface\": 210,\n \"volume\": 189.9,\n \"solubility\": 2.965,\n \"hydrophobicity\": 2,\n \"property\": \"Totally aromatic\"\n}, {\n \"fullName\": \"Proline\",\n \"abbreviation\": \"Pro\",\n \"symbol\": \"P\",\n \"molWeight\": 115.13,\n \"charge\": 0,\n \"hydrophobicityRB\": 3.1,\n \"pK\": 0,\n \"surface\": 145,\n \"volume\": 112.7,\n \"solubility\": 162.3,\n \"hydrophobicity\": 1,\n \"property\": \"Totally alyphatic\"\n}, {\n \"fullName\": \"Serine\",\n \"abbreviation\": \"Ser\",\n \"symbol\": \"S\",\n \"molWeight\": 105.09,\n \"charge\": 0,\n \"hydrophobicityRB\": 1.4,\n \"pK\": 0,\n \"surface\": 115,\n \"volume\": 89,\n \"solubility\": 5.023,\n \"hydrophobicity\": -1,\n \"property\": \"Semipolar\"\n}, {\n \"fullName\": \"Threonine\",\n \"abbreviation\": \"Thr\",\n \"symbol\": \"T\",\n \"molWeight\": 119.12,\n \"charge\": 0,\n \"hydrophobicityRB\": 2.25,\n \"pK\": 0,\n \"surface\": 140,\n \"volume\": 116.1,\n \"solubility\": 1000,\n \"hydrophobicity\": -1,\n \"property\": \"Semipolar\"\n}, {\n \"fullName\": \"Tryptophan\",\n \"abbreviation\": \"Trp\",\n \"symbol\": \"W\",\n \"molWeight\": 204.23,\n \"charge\": 0,\n \"hydrophobicityRB\": 4.11,\n \"pK\": 0,\n \"surface\": 255,\n \"volume\": 227.8,\n \"solubility\": 1.136,\n \"hydrophobicity\": 2,\n \"property\": \"Totally aromatic\"\n}, {\n \"fullName\": \"Tyrosine\",\n \"abbreviation\": \"Tyr\",\n \"symbol\": \"Y\",\n \"molWeight\": 181.19,\n \"charge\": 0,\n \"hydrophobicityRB\": 2.81,\n \"pK\": 10,\n \"surface\": 230,\n \"volume\": 193.6,\n \"solubility\": 0.045,\n \"hydrophobicity\": 1,\n \"property\": \"Hydrophobic; total aromatic\"\n}, {\n \"fullName\": \"Valine\",\n \"abbreviation\": \"Val\",\n \"symbol\": \"V\",\n \"molWeight\": 117.15,\n \"charge\": 0,\n \"hydrophobicityRB\": 3.38,\n \"pK\": 0,\n \"surface\": 155,\n \"volume\": 140,\n \"solubility\": 8.85,\n \"hydrophobicity\": 1,\n \"property\": \"Branched chain aliphatic; hydrophobic\"\n}];\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n/*\nModule which provides convenience functions related to amino acids.\n*/\nimport aminoacidsProps from 'models/md2d/models/aminoacids-props';\n\n// Elements from 0 to 4 are typical, editable elements representing atoms.\nconst FIST_ELEMENT_ID = 5;\n\nconst RNA_CODON_TABLE = {\n \"UUU\": \"Phe\",\n \"UUC\": \"Phe\",\n\n \"UUA\": \"Leu\",\n \"UUG\": \"Leu\",\n \"CUU\": \"Leu\",\n \"CUC\": \"Leu\",\n \"CUA\": \"Leu\",\n \"CUG\": \"Leu\",\n\n \"AUU\": \"Ile\",\n \"AUC\": \"Ile\",\n \"AUA\": \"Ile\",\n\n \"AUG\": \"Met\",\n\n \"GUU\": \"Val\",\n \"GUC\": \"Val\",\n \"GUA\": \"Val\",\n \"GUG\": \"Val\",\n\n \"UCU\": \"Ser\",\n \"UCC\": \"Ser\",\n \"UCA\": \"Ser\",\n \"UCG\": \"Ser\",\n \"AGU\": \"Ser\",\n \"AGC\": \"Ser\",\n\n \"CCU\": \"Pro\",\n \"CCC\": \"Pro\",\n \"CCA\": \"Pro\",\n \"CCG\": \"Pro\",\n\n \"ACU\": \"Thr\",\n \"ACC\": \"Thr\",\n \"ACA\": \"Thr\",\n \"ACG\": \"Thr\",\n\n \"GCU\": \"Ala\",\n \"GCC\": \"Ala\",\n \"GCA\": \"Ala\",\n \"GCG\": \"Ala\",\n\n \"UAU\": \"Tyr\",\n \"UAC\": \"Tyr\",\n\n \"CAU\": \"His\",\n \"CAC\": \"His\",\n\n \"CAA\": \"Gln\",\n \"CAG\": \"Gln\",\n\n \"AAU\": \"Asn\",\n \"AAC\": \"Asn\",\n\n \"AAA\": \"Lys\",\n \"AAG\": \"Lys\",\n\n \"GAU\": \"Asp\",\n \"GAC\": \"Asp\",\n\n \"GAA\": \"Glu\",\n \"GAG\": \"Glu\",\n\n \"UGU\": \"Cys\",\n \"UGC\": \"Cys\",\n\n \"UGG\": \"Trp\",\n\n \"CGU\": \"Arg\",\n \"CGC\": \"Arg\",\n \"CGA\": \"Arg\",\n \"CGG\": \"Arg\",\n \"AGA\": \"Arg\",\n \"AGG\": \"Arg\",\n\n \"GGU\": \"Gly\",\n \"GGC\": \"Gly\",\n \"GGA\": \"Gly\",\n \"GGG\": \"Gly\",\n\n \"UAA\": \"STOP\",\n \"UAG\": \"STOP\",\n \"UGA\": \"STOP\"\n};\n\nexport default {\n /*\n ID of an element representing the first amino acid in the elements collection.\n */\n firstElementID: FIST_ELEMENT_ID,\n\n /*\n ID of an element representing the last amino acid in the elements collection.\n */\n lastElementID: (FIST_ELEMENT_ID + aminoacidsProps.length) - 1,\n\n /*\n Element ID of the cysteine amino acid.\n Note that it should be stored in this class (instead of hard-coded in the engine),\n as it can be changed in the future.\n */\n cysteineElement: 9,\n\n /*\n Converts @abbreviation of amino acid to element ID.\n */\n abbrToElement(abbreviation) {\n for (let i = 0; i < aminoacidsProps.length; i++) {\n const aminoacid = aminoacidsProps[i];\n if (aminoacid.abbreviation === abbreviation) {\n return i + this.firstElementID;\n }\n }\n },\n\n /*\n Returns properties (hash) of amino acid which is represented by a given @elementID.\n */\n getAminoAcidByElement(elementID) {\n return aminoacidsProps[elementID - this.firstElementID];\n },\n\n /*\n Checks if given @elementID represents amino acid.\n */\n isAminoAcid(elementID) {\n return (elementID >= this.firstElementID) && (elementID <= this.lastElementID);\n },\n\n /*\n Returns polar amino acids (array of their element IDs).\n */\n getPolarAminoAcids() {\n // Get element IDs representing Asparagine, Glutamine, Serine, Threonine.\n // See categorization charge for AAs with polar sidechain here:\n // http://upload.wikimedia.org/wikipedia/commons/a/a9/Amino_Acids.svg\n return [\"Asn\", \"Gln\", \"Ser\", \"Thr\"].map((abbr) => this.abbrToElement(abbr));\n },\n\n /*\n Converts RNA Codon to amino acid abbreviation\n */\n codonToAbbr(codon) {\n if (codon.length !== 3) {\n return \"STOP\";\n } else {\n return RNA_CODON_TABLE[codon];\n }\n }\n};\n","import $____distributions from './distributions';\nimport $____utils from './utils';\nimport minimize from './minimizer';\n\nexport default {\n normal: $____distributions.normal,\n getWindowedAverager: $____utils.getWindowedAverager,\n getAngleBetweenVec: $____utils.getAngleBetweenVec,\n minimize: minimize\n};\n","/*jshint eqnull:true */\n/**\n Simple, good-enough minimization via gradient descent.\n*/\nimport console from 'common/console';\n// Dependencies.\n\nexport default function minimize(f, x0, opts) {\n opts = opts || {};\n\n if (opts.precision == null) opts.precision = 0.01;\n\n var // stop when the absolute difference between successive values of f is this much or less\n precision = opts.precision,\n\n // array of [min, max] boundaries for each component of x\n bounds = opts.bounds,\n\n // maximum number of iterations\n maxiter = opts.maxiter || 1000,\n\n // optionally, stop when f is less than or equal to this value\n stopval = opts.stopval || -Infinity,\n\n // maximum distance to move x between steps\n maxstep = opts.maxstep || 0.01,\n\n // multiplied by the gradient\n eps = opts.eps || 0.01,\n dim = x0.length,\n x,\n res,\n f_cur,\n f_prev,\n grad,\n maxstepsq,\n gradnormsq,\n iter,\n i,\n a;\n\n maxstepsq = maxstep * maxstep;\n\n // copy x0 into x (which we will mutate)\n x = [];\n for (i = 0; i < dim; i++) {\n x[i] = x0[i];\n }\n\n // evaluate f and get the gradient\n res = f.apply(null, x);\n f_cur = res[0];\n grad = res[1];\n\n iter = 0;\n do {\n if (f_cur <= stopval) {\n break;\n }\n\n if (iter > maxiter) {\n console.log(\"maxiter reached\");\n // don't throw on error, but return some diagnostic information\n return {\n error: \"maxiter reached\",\n f: f_cur,\n iter: maxiter,\n x: x\n };\n }\n\n // Limit gradient descent step size to maxstep\n gradnormsq = 0;\n for (i = 0; i < dim; i++) {\n gradnormsq += grad[i] * grad[i];\n }\n if (eps * eps * gradnormsq > maxstepsq) {\n a = Math.sqrt(maxstepsq / gradnormsq) / eps;\n for (i = 0; i < dim; i++) {\n grad[i] = a * grad[i];\n }\n }\n\n // Take a step in the direction opposite the gradient\n for (i = 0; i < dim; i++) {\n x[i] -= eps * grad[i];\n\n // check bounds\n if (bounds && x[i] < bounds[i][0]) {\n x[i] = bounds[i][0];\n }\n if (bounds && x[i] > bounds[i][1]) {\n x[i] = bounds[i][1];\n }\n }\n\n f_prev = f_cur;\n\n res = f.apply(null, x);\n f_cur = res[0];\n grad = res[1];\n\n iter++;\n } while (Math.abs(f_cur - f_prev) > precision);\n\n return [f_cur, x];\n};\n","import constants from 'models/md2d/models/engine/constants/index';\n\nvar unit = constants.unit,\n\n // Classic MW uses a value for Coulomb's constant that is effectively 0.346 of the real value\n CLASSIC_MW_FUDGE_FACTOR = 0.346,\n\n COULOMB_CONSTANT_IN_METERS_PER_FARAD = constants.COULOMB_CONSTANT.as(constants.unit.METERS_PER_FARAD),\n\n NANOMETERS_PER_METER = constants.ratio(unit.NANOMETER, {\n per: unit.METER\n }),\n COULOMBS_SQ_PER_ELEMENTARY_CHARGE_SQ = Math.pow(constants.ratio(unit.COULOMB, {\n per: unit.ELEMENTARY_CHARGE\n }), 2),\n\n EV_PER_JOULE = constants.ratio(unit.EV, {\n per: unit.JOULE\n }),\n MW_FORCE_UNITS_PER_NEWTON = constants.ratio(unit.MW_FORCE_UNIT, {\n per: unit.NEWTON\n }),\n\n // Coulomb constant for expressing potential in eV given elementary charges, nanometers\n k_ePotential = CLASSIC_MW_FUDGE_FACTOR *\n COULOMB_CONSTANT_IN_METERS_PER_FARAD *\n COULOMBS_SQ_PER_ELEMENTARY_CHARGE_SQ *\n NANOMETERS_PER_METER *\n EV_PER_JOULE,\n\n // Coulomb constant for expressing force in Dalton*nm/fs^2 given elementary charges, nanometers\n k_eForce = CLASSIC_MW_FUDGE_FACTOR *\n COULOMB_CONSTANT_IN_METERS_PER_FARAD *\n COULOMBS_SQ_PER_ELEMENTARY_CHARGE_SQ *\n NANOMETERS_PER_METER *\n NANOMETERS_PER_METER *\n MW_FORCE_UNITS_PER_NEWTON,\n\n // Exports\n\n /** Input:\n r: distance in nanometers,\n q1, q2: elementary charges,\n dC: dielectric constant, unitless,\n rDE: realistic dielectric effect switch, boolean.\n\n Output units: eV\n */\n potential = function(r, q1, q2, dC, rDE) {\n if (rDE && dC > 1 && r < 1.2) {\n // \"Realistic Dielectric Effect\" mode:\n // Diminish dielectric constant value using distance between particles.\n // Function based on: http://en.wikipedia.org/wiki/Generalized_logistic_curve\n // See plot for dC = 80: http://goo.gl/7zU6a\n // For optimization purposes it returns asymptotic value when r > 1.2.\n dC = 1 + (dC - 1) / (1 + Math.exp(-12 * r + 7));\n }\n return k_ePotential * ((q1 * q2) / r) / dC;\n },\n\n\n /** Input:\n rSq: squared distance in nanometers^2,\n q1, q2: elementary charges,\n dC: dielectric constant, unitless,\n rDE: realistic dielectric effect switch, boolean.\n\n Output units: \"MW Force Units\" (Dalton * nm / fs^2)\n */\n forceFromSquaredDistance = function(rSq, q1, q2, dC, rDE) {\n var r = Math.sqrt(rSq);\n if (rDE && dC > 1 && r < 1.2) {\n // \"Realistic Dielectric Effect\" mode:\n // Diminish dielectric constant value using distance between particles.\n // Function based on: http://en.wikipedia.org/wiki/Generalized_logistic_curve\n // See plot for dC = 80: http://goo.gl/7zU6a\n // For optimization purposes it returns asymptotic value when r > 1.2.\n dC = 1 + (dC - 1) / (1 + Math.exp(-12 * r + 7));\n }\n return -k_eForce * ((q1 * q2) / rSq) / dC;\n },\n\n\n forceOverDistanceFromSquaredDistance = function(rSq, q1, q2, dC, rDE) {\n return forceFromSquaredDistance(rSq, q1, q2, dC, rDE) / Math.sqrt(rSq);\n },\n\n /** Input:\n r: distance in nanometers,\n q1, q2: elementary charges,\n dC: dielectric constant, unitless,\n rDE: realistic dielectric effect switch, boolean.\n\n Output units: \"MW Force Units\" (Dalton * nm / fs^2)\n */\n force = function(r, q1, q2, dC, rDE) {\n return forceFromSquaredDistance(r * r, q1, q2, dC, rDE);\n };\n\nexport default {\n potential,\n forceFromSquaredDistance,\n forceOverDistanceFromSquaredDistance,\n force\n};\n","/*jshint eqnull:true boss:true */\nimport constants from 'models/md2d/models/engine/constants/index';\n\nvar unit = constants.unit,\n\n NANOMETERS_PER_METER = constants.ratio(unit.NANOMETER, {\n per: unit.METER\n }),\n MW_FORCE_UNITS_PER_NEWTON = constants.ratio(unit.MW_FORCE_UNIT, {\n per: unit.NEWTON\n });\n\nconst api = {};\n\n/**\n Helper function that returns the correct pairwise epsilon value to be used\n when elements each have epsilon values epsilon1, epsilon2\n*/\napi.pairwiseEpsilon = function(epsilon1, epsilon2) {\n return 0.5 * (epsilon1 + epsilon2);\n};\n\n/**\n Helper function that returns the correct pairwise sigma value to be used\n when elements each have sigma values sigma1, sigma2\n*/\napi.pairwiseSigma = function(sigma1, sigma2) {\n return Math.sqrt(sigma1 * sigma2);\n};\n\n/**\n Helper function that returns the correct rmin value for a given sigma\n*/\napi.rmin = function(sigma) {\n return Math.pow(2, 1 / 6) * sigma;\n};\n\n/**\n Helper function that returns the correct atomic radius for a given sigma\n*/\napi.radius = function(sigma) {\n // See line 637 of Atom.java (org.concord.mw2d.models.Atom)\n // This assumes the \"VdW percentage\" is 100%. In classic MW the VdW percentage is settable.\n return 0.5 * sigma;\n};\n\n/**\n Returns a new object with methods for calculating the force and potential for a Lennard-Jones\n potential with particular values of its parameters epsilon and sigma. These can be adjusted.\n\n To avoid the needing to take square roots during calculation of pairwise forces, there are\n also methods which calculate the inter-particle potential directly from a squared distance, and\n which calculate the quantity (force/distance) directly from a squared distance.\n\n This function also accepts a callback function which will be called with a hash representing\n the new coefficients, whenever the LJ coefficients are changed for the returned calculator.\n*/\napi.newLJCalculator = function(params, cb) {\n\n var epsilon, // parameter; depth of the potential well, in eV\n sigma, // parameter: characteristic distance from particle, in nm\n\n rmin, // distance from particle at which the potential is at its minimum\n alpha_Potential, // precalculated; units are eV * nm^12\n beta_Potential, // precalculated; units are eV * nm^6\n alpha_Force, // units are \"MW Force Units\" * nm^13\n beta_Force, // units are \"MW Force Units\" * nm^7\n\n initialized = false, // skip callback during initialization\n\n setCoefficients = function(e, s) {\n // Input units:\n // epsilon: eV\n // sigma: nm\n\n epsilon = e;\n sigma = s;\n rmin = api.rmin(sigma);\n\n if (epsilon != null && sigma != null) {\n alpha_Potential = 4 * epsilon * Math.pow(sigma, 12);\n beta_Potential = 4 * epsilon * Math.pow(sigma, 6);\n\n // (1 J * nm^12) = (1 N * m * nm^12)\n // (1 N * m * nm^12) * (b nm / m) * (c MWUnits / N) = (abc MWUnits nm^13)\n alpha_Force = 12 * constants.convert(alpha_Potential, {\n from: unit.EV,\n to: unit.JOULE\n }) * NANOMETERS_PER_METER * MW_FORCE_UNITS_PER_NEWTON;\n beta_Force = 6 * constants.convert(beta_Potential, {\n from: unit.EV,\n to: unit.JOULE\n }) * NANOMETERS_PER_METER * MW_FORCE_UNITS_PER_NEWTON;\n }\n\n if (initialized && typeof cb === 'function') cb(getCoefficients(), this);\n },\n\n getCoefficients = function() {\n return {\n epsilon: epsilon,\n sigma: sigma,\n rmin: rmin\n };\n },\n\n validateEpsilon = function(e) {\n if (e == null || parseFloat(e) !== e) {\n throw new Error(\"lennardJones: epsilon value \" + e + \" is invalid\");\n }\n },\n\n validateSigma = function(s) {\n if (s == null || parseFloat(s) !== s || s <= 0) {\n throw new Error(\"lennardJones: sigma value \" + s + \" is invalid\");\n }\n },\n\n // this object\n calculator;\n\n // At creation time, there must be a valid epsilon and sigma ... we're not gonna check during\n // inner-loop force calculations!\n validateEpsilon(params.epsilon);\n validateSigma(params.sigma);\n\n // Initialize coefficients to passed-in values, skipping setCoefficients callback\n setCoefficients(params.epsilon, params.sigma);\n initialized = true;\n\n return calculator = {\n\n getCoefficients: getCoefficients,\n\n setEpsilon: function(e) {\n validateEpsilon(e);\n setCoefficients(e, sigma);\n },\n\n setSigma: function(s) {\n validateSigma(s);\n setCoefficients(epsilon, s);\n },\n\n /**\n Input units: r_sq: nm^2\n Output units: eV\n\n minimum is at r=rmin, V(rmin) = 0\n */\n potentialFromSquaredDistance: function(r_sq) {\n if (!r_sq) return -Infinity;\n return alpha_Potential * Math.pow(r_sq, -6) - beta_Potential * Math.pow(r_sq, -3);\n },\n\n /**\n Input units: r: nm\n Output units: eV\n */\n potential: function(r) {\n return calculator.potentialFromSquaredDistance(r * r);\n },\n\n /**\n Input units: r_sq: nm^2\n Output units: MW Force Units / nm (= Dalton / fs^2)\n */\n forceOverDistanceFromSquaredDistance: function(r_sq) {\n // optimizing divisions actually does appear to be *slightly* faster\n var r_minus2nd = 1 / r_sq,\n r_minus6th = r_minus2nd * r_minus2nd * r_minus2nd,\n r_minus8th = r_minus6th * r_minus2nd,\n r_minus14th = r_minus8th * r_minus6th;\n\n return alpha_Force * r_minus14th - beta_Force * r_minus8th;\n },\n\n /**\n Input units: r: nm\n Output units: MW Force Units (= Dalton * nm / fs^2)\n */\n force: function(r) {\n return r * calculator.forceOverDistanceFromSquaredDistance(r * r);\n }\n };\n};\n\nexport default api;\n","import coulomb from './coulomb';\nimport lennardJones from './lennard-jones';\n\nexport default {\n coulomb,\n lennardJones\n};\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS203: Remove `|| {}` from converted for-own loops\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n/*\nCustom pairwise Lennard Jones properties.\n*/\nimport metadata from 'models/md2d/models/metadata';\nimport validator from \"common/validator\";\n\nlet PairwiseLJProperties;\n\nexport default PairwiseLJProperties = class PairwiseLJProperties {\n\n constructor(engine) {\n this._engine = engine;\n this._data = {};\n }\n\n registerChangeHooks(changePreHook, changePostHook) {\n this._changePreHook = changePreHook;\n return this._changePostHook = changePostHook;\n }\n\n set(i, j, props) {\n props = validator.validate(metadata.pairwiseLJProperties, props);\n\n this._changePreHook();\n\n if ((this._data[i] == null)) {\n this._data[i] = {};\n }\n if ((this._data[j] == null)) {\n this._data[j] = {};\n }\n if ((this._data[i][j] == null)) {\n this._data[i][j] = (this._data[j][i] = {});\n }\n\n for (let key of Object.keys(props || {})) {\n this._data[i][j][key] = props[key];\n }\n\n this._engine.setPairwiseLJProperties(i, j);\n\n return this._changePostHook();\n }\n\n remove(i, j) {\n this._changePreHook();\n\n delete this._data[i][j];\n delete this._data[j][i];\n\n this._engine.setPairwiseLJProperties(i, j);\n\n return this._changePostHook();\n }\n\n get(i, j) {\n if (this._data[i] && this._data[i][j]) {\n return this._data[i][j];\n } else {\n return undefined;\n }\n }\n\n deserialize(array) {\n for (let props of array) {\n props = validator.validateCompleteness(metadata.pairwiseLJProperties, props);\n // Save element indices and delete them from properties object. It makes no\n // sense to store this information, as it's redundant.\n const el1 = props.element1;\n const el2 = props.element2;\n delete props.element1;\n delete props.element2;\n this.set(el1, el2, props);\n }\n\n // Avoid an unwanted comprehension.\n }\n\n serialize() {\n const result = [];\n for (let key1 of Object.keys(this._data || {})) {\n const innerObj = this._data[key1];\n for (let key2 of Object.keys(innerObj || {})) {\n if (key1 < key2) {\n const props = this.get(key1, key2);\n props.element1 = Number(key1);\n props.element2 = Number(key2);\n result.push(props);\n }\n }\n }\n\n return result;\n }\n\n /*\n Clone-Restore Interface.\n */\n clone() {\n // Use jQuery extend and return a copy.\n return $.extend(true, {}, this._data);\n }\n\n restore(state) {\n // Just overwrite @_data variable.\n this._data = state;\n\n // Enforce update of engine properties.\n for (let key1 of Object.keys(this._data || {})) {\n const innerObj = this._data[key1];\n for (let key2 of Object.keys(innerObj || {})) {\n if (key1 < key2) {\n this._engine.setPairwiseLJProperties(key1, key2);\n }\n }\n }\n\n // Avoid an unwanted comprehension.\n }\n};\n","\n// Cell lists (also sometimes referred to as Cell linked-lists) are a tool for\n// finding all atom pairs within a given cut-off distance of each other in\n// Molecular dynamics simulations.\n// See: http://en.wikipedia.org/wiki/Cell_lists\n\nexport default function CellList(width, height, cellSize) {\n var api,\n colsNum,\n rowsNum,\n cellsNum,\n cell,\n\n init = function() {\n var i;\n colsNum = Math.ceil(width / cellSize);\n rowsNum = Math.ceil(height / cellSize);\n cellsNum = colsNum * rowsNum;\n cell = new Array(cellsNum);\n for (i = 0; i < cellsNum; i++) {\n cell[i] = [];\n }\n };\n\n init();\n\n // Public API.\n api = {\n reinitialize: function(newWidth, newHeight, newCellSize) {\n var change = false;\n if (newWidth !== undefined) {\n if (newWidth !== width) {\n width = newWidth;\n change = true;\n }\n }\n if (newHeight !== undefined) {\n if (newHeight !== height) {\n height = newHeight;\n change = true;\n }\n }\n if (newCellSize !== undefined) {\n if (newCellSize !== cellSize) {\n cellSize = newCellSize;\n change = true;\n }\n }\n if (change) init();\n },\n\n addToCell: function(atomIdx, x, y) {\n var cellIdx = Math.floor(y / cellSize) * colsNum + Math.floor(x / cellSize);\n cell[cellIdx].push(atomIdx);\n },\n\n getCell: function(idx) {\n return cell[idx];\n },\n\n getRowsNum: function() {\n return rowsNum;\n },\n\n getColsNum: function() {\n return colsNum;\n },\n\n getNeighboringCells: function(rowIdx, colIdx) {\n var cellIdx = rowIdx * colsNum + colIdx,\n result = [];\n\n // Upper right.\n if (colIdx + 1 < colsNum && rowIdx + 1 < rowsNum) result.push(cell[cellIdx + colsNum + 1]);\n // Right.\n if (colIdx + 1 < colsNum) result.push(cell[cellIdx + 1]);\n // Bottom right.\n if (colIdx + 1 < colsNum && rowIdx - 1 >= 0) result.push(cell[cellIdx - colsNum + 1]);\n // Bottom.\n if (rowIdx - 1 >= 0) result.push(cell[cellIdx - colsNum]);\n\n return result;\n },\n\n clear: function() {\n var i;\n for (i = 0; i < cellsNum; i++) {\n cell[i].length = 0;\n }\n }\n };\n\n return api;\n};\n","\n// A Verlet list (named after Loup Verlet) is a data structure in molecular dynamics simulations\n// to efficiently maintain a list of all particles within a given cut-off distance of each other.\n// See: http://en.wikipedia.org/wiki/Verlet_list\n\nimport arrays from 'arrays';\nimport arrayTypes from 'common/array-types';\n// Dependencies.\n\nexport default function NeighborList(atomsNum, maxDisplacement) {\n var api,\n maxAtomsNum,\n listIdx,\n listCapacity,\n list,\n head,\n tail,\n x,\n y,\n forceUpdate,\n\n init = function() {\n // Keep maximum capacity of lists bigger than actual number of atoms.\n maxAtomsNum = atomsNum + 10;\n listIdx = 0;\n listCapacity = maxAtomsNum * (maxAtomsNum - 1) / 2;\n forceUpdate = true;\n\n list = arrays.create(listCapacity, 0, arrayTypes.int16Type);\n head = arrays.create(maxAtomsNum, -1, arrayTypes.int16Type);\n tail = arrays.create(maxAtomsNum, -1, arrayTypes.int16Type);\n // Fill x and y with Infinity, so shouldUpdate(..)\n // will return true during first call after initialization.\n x = arrays.create(maxAtomsNum, Infinity, arrayTypes.floatType);\n y = arrays.create(maxAtomsNum, Infinity, arrayTypes.floatType);\n };\n\n init();\n\n // Public API.\n api = {\n reinitialize: function(newAtomsNum, newMaxDisplacement) {\n atomsNum = newAtomsNum;\n maxDisplacement = newMaxDisplacement;\n forceUpdate = true;\n\n if (atomsNum > maxAtomsNum) {\n init();\n }\n },\n clear: function() {\n var i;\n listIdx = 0;\n for (i = 0; i < atomsNum; i++) {\n head[i] = tail[i] = -1;\n }\n },\n getList: function() {\n return list;\n },\n markNeighbors: function(i, j) {\n if (head[i] < 0) {\n head[i] = listIdx;\n }\n list[listIdx] = j;\n listIdx++;\n tail[i] = listIdx;\n },\n getStartIdxFor: function(i) {\n return head[i];\n },\n getEndIdxFor: function(i) {\n return tail[i];\n },\n saveAtomPosition: function(i, xCoord, yCoord) {\n x[i] = xCoord;\n y[i] = yCoord;\n },\n invalidate: function() {\n forceUpdate = true;\n },\n shouldUpdate: function(newX, newY) {\n var maxDx = -Infinity,\n maxDy = -Infinity,\n i;\n\n if (forceUpdate) {\n forceUpdate = false;\n return true;\n }\n\n for (i = 0; i < atomsNum; i++) {\n if (Math.abs(newX[i] - x[i]) > maxDx) {\n maxDx = Math.abs(newX[i] - x[i]);\n }\n if (Math.abs(newY[i] - y[i]) > maxDy) {\n maxDy = Math.abs(newY[i] - y[i]);\n }\n }\n\n return Math.sqrt(maxDx * maxDx + maxDy * maxDy) > maxDisplacement;\n }\n };\n\n return api;\n};\n","\n// The PluginController manages an array of plugins, and can call arbitrary functions\n// on any registered plugin that responds to that function.\n\n// TODO:\n//\n// 1. Plugins should define engine component and modeler component\n// 2. Plugins should validate their own properties\n// 3. Plugin controller should handle initialization of plugins and mixing of appropriate methods\n// and properties into the modeler layer. The main modeler and engine layers should not have to\n// know details about which plugins are available, what they're named, where they are located,\n// etc.\n// 4. Plugin controller have a 'getPluginFunction' method which accepts a function name and returns\n// a function that, when called, does the same thing as callPluginFunction(,...).\n// This avoids having to look up the plugin function by name every time it is called.\n\nexport default function PluginController() {\n var plugins = [];\n\n // Public API.\n return {\n registerPlugin: function(plugin) {\n plugins.push(plugin);\n },\n\n /**\n Calls method 'funcName' of every plugin, for those plugins which have a property 'funcName',\n in the context of the plugin (i.e., 'this' value is the plugin object) and with the elements\n of the array 'args' as the argument array of the invocation.\n\n If 'callback' is defined, it will be invoked with the callback.\n\n The callback signature is callback(returnValue, index, plugin) where returnValue is the\n return value of the method called, i is the index of the plugin, and plugin is the plugin\n object itself.\n */\n callPluginFunction: function(funcName, args, callback) {\n var i, ii, func, retVal;\n\n for (i = 0, ii = plugins.length; i < ii; i++) {\n func = plugins[i][funcName];\n if (func) {\n retVal = func.apply(plugins[i], args);\n }\n if (callback) {\n callback(retVal, i, plugins[i]);\n }\n }\n }\n };\n};\n","\nimport arrays from 'arrays';\nimport arrayTypes from 'common/array-types';\nimport console from 'common/console';\nimport constants from './constants/index';\nimport aminoacidsHelper from 'models/md2d/models/aminoacids-helper';\nimport math from './math/index';\nimport potentials from './potentials/index';\nimport PairwiseLJProperties from './pairwise-lj-properties';\nimport CloneRestoreWrapper from 'common/models/engines/clone-restore-wrapper';\nimport CellList from './cell-list';\nimport NeighborList from './neighbor-list';\nimport PluginController from 'common/models/plugin-controller';\nimport utils from './utils';\n\nvar\n unit = constants.unit,\n coulomb = potentials.coulomb,\n lennardJones = potentials.lennardJones,\n\n BOLTZMANN_CONSTANT_IN_JOULES = constants.BOLTZMANN_CONSTANT.as(unit.JOULES_PER_KELVIN),\n\n cross = function(a0, a1, b0, b1) {\n return a0 * b1 - a1 * b0;\n },\n\n sumSquare = function(a, b) {\n return a * a + b * b;\n },\n\n /**\n Convert total kinetic energy in the container of N atoms to a temperature in Kelvin.\n\n Input units:\n KE: \"MW Energy Units\" (Dalton * nm^2 / fs^2)\n Output units:\n T: K\n */\n convertKEtoT = function(totalKEinMWUnits, N) {\n if (N === 0) return 0;\n var averageKEinMWUnits = totalKEinMWUnits / N,\n averageKEinJoules = constants.convert(averageKEinMWUnits, {\n from: unit.MW_ENERGY_UNIT,\n to: unit.JOULE\n });\n return averageKEinJoules / BOLTZMANN_CONSTANT_IN_JOULES;\n },\n\n /**\n Convert a temperature in Kelvin to the total kinetic energy in the container of N atoms.\n\n Input units:\n T: K\n Output units:\n KE: \"MW Energy Units\" (Dalton * nm^2 / fs^2)\n */\n convertTtoKE = function(T, N) {\n var averageKEinJoules = T * BOLTZMANN_CONSTANT_IN_JOULES,\n averageKEinMWUnits = constants.convert(averageKEinJoules, {\n from: unit.JOULE,\n to: unit.MW_ENERGY_UNIT\n }),\n totalKEinMWUnits = averageKEinMWUnits * N;\n\n return totalKEinMWUnits;\n },\n\n validateTemperature = function(t) {\n var temperature = parseFloat(t);\n\n if (isNaN(temperature)) {\n throw new Error(\"md2d: requested temperature \" + t + \" could not be understood.\");\n }\n if (temperature < 0) {\n throw new Error(\"md2d: requested temperature \" + temperature + \" was less than zero\");\n }\n if (temperature === Infinity) {\n throw new Error(\"md2d: requested temperature was Infinity!\");\n }\n };\n\nexport const createEngine = function() {\n\n var // the object to be returned\n engine,\n\n // Whether system dimensions have been set. This is only allowed to happen once.\n sizeHasBeenInitialized = false,\n\n pluginController = new PluginController(),\n\n // Whether to simulate Coulomb forces between particles.\n useCoulombInteraction = false,\n\n // Dielectric constant, it influences Coulomb interaction.\n // E.g. a dielectric of 80 means a Coulomb force 1/80th as strong.\n dielectricConst = 1,\n\n // Whether dielectric effect should be realistic or simplified. Realistic\n // version takes into account distance between charged particles and reduces\n // dielectric constant when particles are closer to each other.\n realisticDielectricEffect = true,\n\n // Parameter that reflects the watery extent of the solvent, when an effective\n // hydrophobic/hydrophilic interaction is used. A negative value represents oil environment\n // (usually -1). A positive one represents water environment (usually 1). A zero value means vacuum.\n solventForceType = 0,\n\n // State describing whether DNA translation is in progress.\n // TODO: move all functionality connected with DNA and proteins to engine plugins!\n dnaTranslationInProgress = false,\n\n // Parameter that influences strength of force applied to amino acids by water of oil (solvent).\n solventForceFactor = 1,\n\n // Additional force applied to amino acids that depends on distance from the center of mass. It affects\n // only AAs which are pulled into the center of mass (to stabilize shape of the protein).\n additionalSolventForceMult = 25,\n additionalSolventForceThreshold = 3,\n\n // Whether to simulate Lennard Jones forces between particles.\n useLennardJonesInteraction = true,\n\n // Whether to use the thermostat to maintain the system temperature near T_target.\n useThermostat = false,\n\n // A value to use in calculating if two atoms are close enough for a VDW line to be displayed\n vdwLinesRatio = 1.67,\n\n // If a numeric value include gravitational field in force calculations,\n // otherwise value should be false\n gravitationalField = false,\n\n // Desired system temperature, in Kelvin.\n T_target,\n\n // System dimensions as [x, y] in nanometers. Default value can be changed until particles are created.\n size = [10, 10],\n\n // System dimensions as minX, minY, maxX, maxY. Default value can be changed until turles are created.\n minX = 0,\n minY = 0,\n maxX = 10,\n maxY = 10,\n\n // Viscosity of the medium of the model\n viscosity,\n\n // The current model time, in femtoseconds.\n time = 0,\n\n // The current integration time step, in femtoseconds.\n dt,\n\n // Square of integration time step, in fs^2.\n dt_sq,\n\n // ####################################################################\n // Atom Properties\n\n // Individual property arrays for the atoms, indexed by atom number\n radius, px, py, x, y, vx, vy, speed, ax, ay, charge, element, friction, radical, pinned, mass, hydrophobicity,\n // Helper array, which may be used by various engine routines traversing atoms in untypical order.\n // Make sure that you reset it before use. At the moment, it's used by updateAminoAcidForces() function.\n visited,\n\n // An object that contains references to the above atom-property arrays\n atoms,\n\n // The number of atoms in the system.\n N = 0,\n\n // ####################################################################\n // Element Properties\n\n // Individual property arrays for the elements\n elementMass,\n elementEpsilon,\n elementSigma,\n elementRadius,\n elementColor,\n\n // An object that contains references to the above element-property arrays\n elements,\n\n // Number of actual elements (may be smaller than the length of the property arrays).\n N_elements = 0,\n\n // Additional structure, keeping information if given element is represented by\n // some atom in the model. Necessary for effective max cut-off distance calculation.\n elementUsed = [],\n\n // ####################################################################\n // Custom Pairwise LJ Properties\n pairwiseLJProperties,\n\n // ####################################################################\n // Radial Bond Properties\n\n // Individual property arrays for the \"radial\" bonds, indexed by bond number\n radialBondAtom1Index,\n radialBondAtom2Index,\n radialBondLength,\n radialBondStrength,\n radialBondType,\n\n // An object that contains references to the above radial-bond-property arrays.\n // Left undefined if there are no radial bonds.\n radialBonds,\n\n // Number of actual radial bonds (may be smaller than the length of the property arrays).\n N_radialBonds = 0,\n\n // Flag indicating if some radial bonds were added or removed during the integration step.\n radialBondsChanged = false,\n\n // ####################################################################\n // Restraint Properties\n\n // Individual property arrays for the \"restraint\" bonds, indexed by bond number.\n restraintAtomIndex,\n restraintK,\n restraintX0,\n restraintY0,\n\n // An object that contains references to the above restraint-property arrays.\n // Left undefined if there are no restraints.\n restraints,\n\n // Number of actual restraint bonds (may be smaller than the length of the property arrays).\n N_restraints = 0,\n\n // ####################################################################\n // Angular Bond Properties\n\n // Individual property arrays for the \"angular\" bonds, indexed by bond number.\n angularBondAtom1Index,\n angularBondAtom2Index,\n angularBondAtom3Index,\n angularBondAngle,\n angularBondStrength,\n\n // An object that contains references to the above angular-bond-property arrays.\n // Left undefined if there are no angular bonds.\n angularBonds,\n\n // Number of actual angular bonds (may be smaller than the length of the property arrays).\n N_angularBonds = 0,\n\n // ####################################################################\n // Obstacle Properties\n\n // Individual properties for the obstacles\n obstacleX,\n obstacleY,\n obstacleWidth,\n obstacleHeight,\n obstacleVX,\n obstacleVY,\n obstacleExtAX,\n obstacleExtAY,\n obstacleFriction,\n obstacleMass,\n obstacleWestProbe,\n obstacleNorthProbe,\n obstacleEastProbe,\n obstacleSouthProbe,\n obstacleColor,\n obstacleVisible,\n obstaclePermeability,\n\n // Properties used only during internal calculations (e.g. shouldn't\n // be returned during getObstacleProperties(i) call - TODO!).\n obstacleXPrev,\n obstacleYPrev,\n\n // ### Pressure calculation ###\n // Arrays containing sum of impulses 2mv/dt from atoms hitting the probe.\n // These values are later stored in pressureBuffers object, interpolated\n // (last average of last PRESSURE_BUFFERS_LEN values) and converted\n // to value in Bar by getPressureFromProbe() function.\n obstacleWProbeValue,\n obstacleNProbeValue,\n obstacleEProbeValue,\n obstacleSProbeValue,\n\n // An object that contains references to the above obstacle-property arrays.\n // Left undefined if there are no obstacles.\n obstacles,\n\n // Number of actual obstacles\n N_obstacles = 0,\n\n // ####################################################################\n // Shape Properties\n\n // Individual properties for the shapes\n shapeType,\n shapeX,\n shapeY,\n shapeWidth,\n shapeHeight,\n shapeFence,\n shapeColor,\n shapeLineColor,\n shapeLineDashes,\n shapeLineWeight,\n shapeLayer,\n shapeLayerPosition,\n shapeVisible,\n\n // An object that contains references to the above shape-property arrays.\n // Left undefined if there are no shapes.\n shapes,\n\n // Number of actual shapes\n N_shapes = 0,\n\n\n // ####################################################################\n // Line Properties\n\n // Individual properties for the lines\n lineX1,\n lineY1,\n lineX2,\n lineY2,\n lineBeginStyle,\n lineEndStyle,\n lineFence,\n lineLineColor,\n lineLineDashes,\n lineLineWeight,\n lineLayer,\n lineLayerPosition,\n lineVisible,\n\n // An object that contains references to the above line-property arrays.\n // Left undefined if there are no lines.\n lines,\n\n // Number of actual lines\n N_lines = 0,\n\n // ####################################################################\n // Electric Field Properties\n\n // Individual properties for the electric fields.\n electricFieldIntensity,\n electricFieldOrientation,\n electricFieldShapeIdx,\n\n // An object that contains references to the above shape-property arrays.\n // Left undefined if there are no electric fields.\n electricFields,\n\n // Number of actual electric fields.\n N_electricFields = 0,\n\n // ####################################################################\n // Misc Properties\n // Hash of arrays containing VdW pairs\n vdwPairs,\n\n // Number of VdW pairs\n N_vdwPairs,\n\n // Arrays of VdW pair atom #1 and atom #2 indices\n vdwPairAtom1Index,\n vdwPairAtom2Index,\n\n // Arrays for spring forces, which are forces defined between an atom and a point in space\n springForceAtomIndex,\n springForceX,\n springForceY,\n springForceStrength,\n\n // An array whose members are the above spring-force-property arrays\n springForces,\n\n // The number of spring forces currently being applied in the model.\n N_springForces = 0,\n\n // Cell list structure.\n cellList,\n\n // Neighbor (Verlet) list structure.\n neighborList,\n\n // Information whether neighbor list should be\n // recalculated in the current integration step.\n updateNeighborList,\n\n //\n // The location of the center of mass, in nanometers.\n x_CM, y_CM,\n\n // Linear momentum of the system, in Dalton * nm / fs.\n px_CM, py_CM,\n\n // Velocity of the center of mass, in nm / fs.\n vx_CM, vy_CM,\n\n // Angular momentum of the system wrt its center of mass\n L_CM,\n\n // (Instantaneous) moment of inertia of the system wrt its center of mass\n I_CM,\n\n // Angular velocity of the system about the center of mass, in radians / fs.\n // (= angular momentum about CM / instantaneous moment of inertia about CM)\n omega_CM,\n\n // instantaneous system temperature, in Kelvin\n T,\n\n // cutoff for force calculations, as a factor of sigma\n cutoff = 4,\n cutoffDistance_LJ_sq = [],\n\n // cutoff for neighbor list calculations, as a factor of sigma\n cutoffList = 4.1,\n cutoffNeighborListSquared = [],\n\n // Each object at ljCalculator[i,j] can calculate the magnitude of the Lennard-Jones force and\n // potential between elements i and j\n ljCalculator = [],\n\n // List of particles representing cysteine amino acid, which can possibly create disulphide bonds.\n // So, each cysteine in this list is NOT already connected to other cysteine.\n freeCysteinesList = [],\n\n // Initializes basic data structures.\n initialize = function() {\n createElementsArray(0);\n createAtomsArray(0);\n createAngularBondsArray(0);\n createRadialBondsArray(0);\n createRestraintsArray(0);\n createVdwPairsArray(0);\n createSpringForcesArray(0);\n createObstaclesArray(0);\n createShapesArray(0);\n createLinesArray(0);\n createElectricFieldsArray(0);\n\n // Custom pairwise properties.\n pairwiseLJProperties = new PairwiseLJProperties(engine);\n },\n\n // Throws an informative error if a developer tries to use the setCoefficients method of an\n // in-use LJ calculator. (Hint: for an interactive LJ chart, create a new LJ calculator with\n // the desired coefficients; call setElementProperties to change the LJ properties in use.)\n ljCoefficientChangeError = function() {\n throw new Error(\"md2d: Don't change the epsilon or sigma parameters of the LJ calculator being used by MD2D. Use the setElementProperties method instead.\");\n },\n\n // Initialize epsilon, sigma, cutoffDistance_LJ_sq, cutoffNeighborListSquared, and ljCalculator\n // array elements for element pair i and j\n setPairwiseLJProperties = function(i, j) {\n var epsilon_i = elementEpsilon[i],\n epsilon_j = elementEpsilon[j],\n sigma_i = elementSigma[i],\n sigma_j = elementSigma[j],\n customProps = pairwiseLJProperties.get(i, j),\n e,\n s;\n\n if (customProps && customProps.epsilon !== undefined) {\n e = customProps.epsilon;\n } else {\n e = lennardJones.pairwiseEpsilon(epsilon_i, epsilon_j);\n }\n\n if (customProps && customProps.sigma !== undefined) {\n s = customProps.sigma;\n } else {\n s = lennardJones.pairwiseSigma(sigma_i, sigma_j);\n }\n\n // Cutoff for Lennard-Jones interactions.\n cutoffDistance_LJ_sq[i][j] = cutoffDistance_LJ_sq[j][i] = (cutoff * s) * (cutoff * s);\n // Cutoff for neighbor lists calculations.\n cutoffNeighborListSquared[i][j] = cutoffNeighborListSquared[j][i] = (cutoffList * s) * (cutoffList * s);\n\n ljCalculator[i][j] = ljCalculator[j][i] = lennardJones.newLJCalculator({\n epsilon: e,\n sigma: s\n }, ljCoefficientChangeError);\n },\n\n // Calculates maximal cut-off used in the current model. Functions checks all used\n // elements at the moment. When new atom is added, maximum cut-off distance should\n // be recalculated.\n computeMaxCutoff = function() {\n var maxCutoff = 0,\n customProps,\n sigma,\n i, j;\n\n for (i = 0; i < N_elements; i++) {\n for (j = 0; j <= i; j++) {\n if (elementUsed[i] && elementUsed[j]) {\n customProps = pairwiseLJProperties.get(i, j);\n if (customProps && customProps.sigma !== undefined) {\n sigma = customProps.sigma;\n } else {\n sigma = lennardJones.pairwiseSigma(elementSigma[i], elementSigma[j]);\n }\n // Use cutoffList, as cell lists are used to calculate neighbor lists.\n if (cutoffList * sigma > maxCutoff) {\n maxCutoff = cutoffList * sigma;\n }\n }\n }\n }\n // If maxCutoff === 0, return size of the model\n // as a default cutoff distance for empty model.\n return maxCutoff || Math.max(size[0], size[1]);\n },\n\n // Returns a minimal difference between \"real\" cutoff\n // and cutoff used in neighbor list. This can be considered\n // as a minimal displacement of atom, which triggers neighbor\n // list recalculation (or maximal allowed displacement to avoid\n // recalculation).\n computeNeighborListMaxDisplacement = function() {\n var maxDisplacement = Infinity,\n customProps,\n sigma,\n i, j;\n\n for (i = 0; i < N_elements; i++) {\n for (j = 0; j <= i; j++) {\n if (elementUsed[i] && elementUsed[j]) {\n customProps = pairwiseLJProperties.get(i, j);\n if (customProps && customProps.sigma !== undefined) {\n sigma = customProps.sigma;\n } else {\n sigma = lennardJones.pairwiseSigma(elementSigma[i], elementSigma[j]);\n }\n\n if ((cutoffList - cutoff) * sigma < maxDisplacement) {\n maxDisplacement = (cutoffList - cutoff) * sigma;\n }\n }\n }\n }\n return maxDisplacement;\n },\n\n // Initializes special structure for short-range forces calculation\n // optimization. Cell lists support neighbor list.\n initializeCellList = function() {\n if (cellList === undefined) {\n cellList = new CellList(size[0], size[1], computeMaxCutoff());\n } else {\n cellList.reinitialize(size[0], size[1], computeMaxCutoff());\n }\n },\n\n // Initializes special structure for short-range forces calculation\n // optimization. Neighbor list cooperates with cell list.\n initializeNeighborList = function() {\n if (neighborList === undefined) {\n neighborList = new NeighborList(N, computeNeighborListMaxDisplacement());\n } else {\n neighborList.reinitialize(N, computeNeighborListMaxDisplacement());\n }\n },\n\n /**\n Set up \"shortcut\" references, e.g., x = atoms.x\n */\n assignShortcutReferences = {\n\n atoms: function() {\n radius = atoms.radius;\n px = atoms.px;\n py = atoms.py;\n x = atoms.x;\n y = atoms.y;\n vx = atoms.vx;\n vy = atoms.vy;\n speed = atoms.speed;\n ax = atoms.ax;\n ay = atoms.ay;\n charge = atoms.charge;\n friction = atoms.friction;\n radical = atoms.radical;\n element = atoms.element;\n pinned = atoms.pinned;\n mass = atoms.mass;\n hydrophobicity = atoms.hydrophobicity;\n visited = atoms.visited;\n },\n\n radialBonds: function() {\n radialBondAtom1Index = radialBonds.atom1;\n radialBondAtom2Index = radialBonds.atom2;\n radialBondLength = radialBonds.length;\n radialBondStrength = radialBonds.strength;\n radialBondType = radialBonds.type;\n },\n\n restraints: function() {\n restraintAtomIndex = restraints.atomIndex;\n restraintK = restraints.k;\n restraintX0 = restraints.x0;\n restraintY0 = restraints.y0;\n },\n\n angularBonds: function() {\n angularBondAtom1Index = angularBonds.atom1;\n angularBondAtom2Index = angularBonds.atom2;\n angularBondAtom3Index = angularBonds.atom3;\n angularBondAngle = angularBonds.angle;\n angularBondStrength = angularBonds.strength;\n },\n\n elements: function() {\n elementMass = elements.mass;\n elementEpsilon = elements.epsilon;\n elementSigma = elements.sigma;\n elementRadius = elements.radius;\n elementColor = elements.color;\n },\n\n obstacles: function() {\n obstacleX = obstacles.x;\n obstacleY = obstacles.y;\n obstacleWidth = obstacles.width;\n obstacleHeight = obstacles.height;\n obstacleMass = obstacles.mass;\n obstacleVX = obstacles.vx;\n obstacleVY = obstacles.vy;\n obstacleExtAX = obstacles.externalAx;\n obstacleExtAY = obstacles.externalAy;\n obstacleFriction = obstacles.friction;\n obstacleWestProbe = obstacles.westProbe;\n obstacleNorthProbe = obstacles.northProbe;\n obstacleEastProbe = obstacles.eastProbe;\n obstacleSouthProbe = obstacles.southProbe;\n obstacleWProbeValue = obstacles.westProbeValue;\n obstacleNProbeValue = obstacles.northProbeValue;\n obstacleEProbeValue = obstacles.eastProbeValue;\n obstacleSProbeValue = obstacles.southProbeValue;\n obstacleXPrev = obstacles.xPrev;\n obstacleYPrev = obstacles.yPrev;\n obstacleColor = obstacles.color;\n obstacleVisible = obstacles.visible;\n obstaclePermeability = obstacles.permeability;\n },\n\n shapes: function() {\n shapeType = shapes.type;\n shapeX = shapes.x;\n shapeY = shapes.y;\n shapeWidth = shapes.width;\n shapeHeight = shapes.height;\n shapeFence = shapes.fence;\n shapeColor = shapes.color;\n shapeLineColor = shapes.lineColor;\n shapeLineDashes = shapes.lineDashes;\n shapeLineWeight = shapes.lineWeight;\n shapeLayer = shapes.layer;\n shapeLayerPosition = shapes.layerPosition;\n shapeVisible = shapes.visible;\n },\n\n lines: function() {\n lineX1 = lines.x1;\n lineY1 = lines.y1;\n lineX2 = lines.x2;\n lineY2 = lines.y2;\n lineBeginStyle = lines.beginStyle;\n lineEndStyle = lines.endStyle;\n lineFence = lines.fence;\n lineLineColor = lines.lineColor;\n lineLineDashes = lines.lineDashes;\n lineLineWeight = lines.lineWeight;\n lineLayer = lines.layer;\n lineLayerPosition = lines.layerPosition;\n lineVisible = lines.visible;\n },\n\n electricFields: function() {\n electricFieldIntensity = electricFields.intensity;\n electricFieldOrientation = electricFields.orientation;\n electricFieldShapeIdx = electricFields.shapeIdx;\n },\n\n springForces: function() {\n springForceAtomIndex = springForces[0];\n springForceX = springForces[1];\n springForceY = springForces[2];\n springForceStrength = springForces[3];\n },\n\n vdwPairs: function() {\n vdwPairAtom1Index = vdwPairs.atom1;\n vdwPairAtom2Index = vdwPairs.atom2;\n }\n\n },\n\n createElementsArray = function(num) {\n elements = engine.elements = {};\n\n elements.mass = arrays.create(num, 0, arrayTypes.floatType);\n elements.epsilon = arrays.create(num, 0, arrayTypes.floatType);\n elements.sigma = arrays.create(num, 0, arrayTypes.floatType);\n elements.radius = arrays.create(num, 0, arrayTypes.floatType);\n elements.color = [];\n\n assignShortcutReferences.elements();\n },\n\n createAtomsArray = function(num) {\n atoms = {};\n\n // TODO. DRY this up by letting the property list say what type each array is\n atoms.radius = arrays.create(num, 0, arrayTypes.floatType);\n atoms.px = arrays.create(num, 0, arrayTypes.floatType);\n atoms.py = arrays.create(num, 0, arrayTypes.floatType);\n atoms.x = arrays.create(num, 0, arrayTypes.floatType);\n atoms.y = arrays.create(num, 0, arrayTypes.floatType);\n atoms.vx = arrays.create(num, 0, arrayTypes.floatType);\n atoms.vy = arrays.create(num, 0, arrayTypes.floatType);\n atoms.speed = arrays.create(num, 0, arrayTypes.floatType);\n atoms.ax = arrays.create(num, 0, arrayTypes.floatType);\n atoms.ay = arrays.create(num, 0, arrayTypes.floatType);\n atoms.charge = arrays.create(num, 0, arrayTypes.floatType);\n atoms.friction = arrays.create(num, 0, arrayTypes.floatType);\n atoms.radical = arrays.create(num, 0, arrayTypes.uint8Type);\n atoms.element = arrays.create(num, 0, arrayTypes.uint8Type);\n atoms.pinned = arrays.create(num, 0, arrayTypes.uint8Type);\n atoms.mass = arrays.create(num, 0, arrayTypes.floatType);\n atoms.hydrophobicity = arrays.create(num, 0, arrayTypes.int8Type);\n atoms.visited = arrays.create(num, 0, arrayTypes.uint8Type);\n // For the sake of clarity, manage all atoms properties in one\n // place (engine). In the future, think about separation of engine\n // properties and view-oriented properties like these:\n atoms.marked = arrays.create(num, 0, arrayTypes.uint8Type);\n atoms.visible = arrays.create(num, 0, arrayTypes.floatType);\n atoms.draggable = arrays.create(num, 0, arrayTypes.uint8Type);\n atoms.draggableWhenStopped = arrays.create(num, 1, arrayTypes.uint8Type);\n\n assignShortcutReferences.atoms();\n },\n\n createRadialBondsArray = function(num) {\n radialBonds = engine.radialBonds = {};\n\n radialBonds.atom1 = arrays.create(num, 0, arrayTypes.uint16Type);\n radialBonds.atom2 = arrays.create(num, 0, arrayTypes.uint16Type);\n radialBonds.length = arrays.create(num, 0, arrayTypes.floatType);\n radialBonds.strength = arrays.create(num, 0, arrayTypes.floatType);\n radialBonds.type = arrays.create(num, 0, arrayTypes.uint8Type);\n\n assignShortcutReferences.radialBonds();\n },\n\n createRestraintsArray = function(num) {\n restraints = engine.restraints = {};\n\n restraints.atomIndex = arrays.create(num, 0, arrayTypes.uint16Type);\n restraints.k = arrays.create(num, 0, arrayTypes.floatType);\n restraints.x0 = arrays.create(num, 0, arrayTypes.floatType);\n restraints.y0 = arrays.create(num, 0, arrayTypes.floatType);\n\n assignShortcutReferences.restraints();\n },\n\n createAngularBondsArray = function(num) {\n angularBonds = engine.angularBonds = {};\n\n angularBonds.atom1 = arrays.create(num, 0, arrayTypes.uint16Type);\n angularBonds.atom2 = arrays.create(num, 0, arrayTypes.uint16Type);\n angularBonds.atom3 = arrays.create(num, 0, arrayTypes.uint16Type);\n angularBonds.angle = arrays.create(num, 0, arrayTypes.floatType);\n angularBonds.strength = arrays.create(num, 0, arrayTypes.floatType);\n\n assignShortcutReferences.angularBonds();\n },\n\n createVdwPairsArray = function(num) {\n vdwPairs = engine.vdwPairs = {};\n\n vdwPairs.count = 0;\n vdwPairs.atom1 = arrays.create(num, 0, arrayTypes.uint16Type);\n vdwPairs.atom2 = arrays.create(num, 0, arrayTypes.uint16Type);\n },\n\n createSpringForcesArray = function(num) {\n springForces = engine.springForces = [];\n\n // TODO: not very descriptive. Use hash of arrays like elsewhere.\n springForces[0] = arrays.create(num, 0, arrayTypes.uint16Type);\n springForces[1] = arrays.create(num, 0, arrayTypes.floatType);\n springForces[2] = arrays.create(num, 0, arrayTypes.floatType);\n springForces[3] = arrays.create(num, 0, arrayTypes.floatType);\n\n assignShortcutReferences.springForces();\n },\n\n createObstaclesArray = function(num) {\n obstacles = engine.obstacles = {};\n\n obstacles.x = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.y = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.width = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.height = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.mass = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.vx = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.vy = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.externalAx = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.externalAy = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.friction = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.westProbe = arrays.create(num, 0, arrayTypes.uint8Type);\n obstacles.northProbe = arrays.create(num, 0, arrayTypes.uint8Type);\n obstacles.eastProbe = arrays.create(num, 0, arrayTypes.uint8Type);\n obstacles.southProbe = arrays.create(num, 0, arrayTypes.uint8Type);\n obstacles.westProbeValue = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.northProbeValue = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.eastProbeValue = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.southProbeValue = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.xPrev = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.yPrev = arrays.create(num, 0, arrayTypes.floatType);\n obstacles.color = [];\n obstacles.visible = arrays.create(num, 0, arrayTypes.uint8Type);\n obstacles.displayExternalAcceleration = arrays.create(num, 0, arrayTypes.uint8Type);\n obstacles.permeability = [];\n\n assignShortcutReferences.obstacles();\n },\n\n createShapesArray = function(num) {\n shapes = engine.shapes = {};\n\n shapes.type = [];\n shapes.x = arrays.create(num, 0, arrayTypes.floatType);\n shapes.y = arrays.create(num, 0, arrayTypes.floatType);\n shapes.width = arrays.create(num, 0, arrayTypes.floatType);\n shapes.height = arrays.create(num, 0, arrayTypes.floatType);\n shapes.color = [];\n shapes.lineColor = [];\n shapes.lineDashes = [];\n shapes.lineWeight = arrays.create(num, 0, arrayTypes.floatType);\n shapes.layer = arrays.create(num, 0, arrayTypes.uint8Type);\n shapes.layerPosition = arrays.create(num, 0, arrayTypes.uint8Type);\n shapes.visible = arrays.create(num, 0, arrayTypes.uint8Type);\n shapes.fence = arrays.create(num, 0, arrayTypes.uint8Type);\n\n assignShortcutReferences.shapes();\n },\n\n createLinesArray = function(num) {\n lines = engine.lines = {};\n\n lines.x1 = arrays.create(num, 0, arrayTypes.floatType);\n lines.y1 = arrays.create(num, 0, arrayTypes.floatType);\n lines.x2 = arrays.create(num, 0, arrayTypes.floatType);\n lines.y2 = arrays.create(num, 0, arrayTypes.floatType);\n lines.beginStyle = [];\n lines.endStyle = [];\n lines.lineColor = [];\n lines.lineDashes = [];\n lines.lineWeight = arrays.create(num, 0, arrayTypes.floatType);\n lines.layer = arrays.create(num, 0, arrayTypes.uint8Type);\n lines.layerPosition = arrays.create(num, 0, arrayTypes.uint8Type);\n lines.visible = arrays.create(num, 0, arrayTypes.uint8Type);\n lines.fence = arrays.create(num, 0, arrayTypes.uint8Type);\n\n assignShortcutReferences.lines();\n },\n\n createElectricFieldsArray = function(num) {\n electricFields = engine.electricFields = {};\n\n electricFields.intensity = arrays.create(num, 0, arrayTypes.floatType);\n electricFields.orientation = [];\n electricFields.shapeIdx = [];\n\n assignShortcutReferences.electricFields();\n },\n\n // Calculates & returns instantaneous temperature of the system.\n computeTemperature = function() {\n var twoKE = 0,\n i;\n\n // Particles.\n for (i = 0; i < N; i++) {\n twoKE += mass[i] * (vx[i] * vx[i] + vy[i] * vy[i]);\n }\n // Obstacles.\n for (i = 0; i < N_obstacles; i++) {\n if (obstacleMass[i] !== Infinity) {\n twoKE += obstacleMass[i] *\n (obstacleVX[i] * obstacleVX[i] + obstacleVY[i] * obstacleVY[i]);\n }\n }\n\n return convertKEtoT(twoKE / 2, N);\n },\n\n // Calculates & returns the instaneous temperature of a particular group of atoms\n computeTemperatureOfAtoms = function(atomIndices) {\n var twoKE = 0,\n i,\n j;\n\n // Particles.\n for (i = 0; i < atomIndices.length; i++) {\n j = atomIndices[i];\n twoKE += mass[j] * (vx[j] * vx[j] + vy[j] * vy[j]);\n }\n\n return convertKEtoT(twoKE / 2, atomIndices.length);\n },\n\n // Adds the velocity vector (vx_t, vy_t) to the velocity vector of particle i\n addVelocity = function(i, vx_t, vy_t) {\n vx[i] += vx_t;\n vy[i] += vy_t;\n\n px[i] = vx[i] * mass[i];\n py[i] = vy[i] * mass[i];\n },\n\n // Adds effect of angular velocity omega, relative to (x_CM, y_CM), to the velocity vector of particle i\n addAngularVelocity = function(i, omega) {\n vx[i] -= omega * (y[i] - y_CM);\n vy[i] += omega * (x[i] - x_CM);\n\n px[i] = vx[i] * mass[i];\n py[i] = vy[i] * mass[i];\n },\n\n // Subtracts the center-of-mass linear velocity and the system angular velocity from the velocity vectors\n removeTranslationAndRotationFromVelocities = function() {\n for (var i = 0; i < N; i++) {\n addVelocity(i, -vx_CM, -vy_CM);\n addAngularVelocity(i, -omega_CM);\n }\n },\n\n // currently unused, implementation saved here for future reference:\n\n // // Adds the center-of-mass linear velocity and the system angular velocity back into the velocity vectors\n // addTranslationAndRotationToVelocities = function() {\n // for (var i = 0; i < N; i++) {\n // addVelocity(i, vx_CM, vy_CM);\n // addAngularVelocity(i, omega_CM);\n // }\n // },\n\n // Subroutine that calculates the position and velocity of the center of mass, leaving these in x_CM, y_CM,\n // vx_CM, and vy_CM, and that then computes the system angular velocity around the center of mass, leaving it\n // in omega_CM.\n computeSystemTranslation = function() {\n var x_sum = 0,\n y_sum = 0,\n px_sum = 0,\n py_sum = 0,\n totalMass = engine.getTotalMass(),\n i;\n\n for (i = 0; i < N; i++) {\n x_sum += x[i];\n y_sum += y[i];\n px_sum += px[i];\n py_sum += py[i];\n }\n\n x_CM = x_sum / N;\n y_CM = y_sum / N;\n px_CM = px_sum;\n py_CM = py_sum;\n vx_CM = px_sum / totalMass;\n vy_CM = py_sum / totalMass;\n },\n\n // Subroutine that calculates the angular momentum and moment of inertia around the center of mass, and then\n // uses these to calculate the weighted angular velocity around the center of mass.\n // Updates I_CM, L_CM, and omega_CM.\n // Requires x_CM, y_CM, vx_CM, vy_CM to have been calculated.\n computeSystemRotation = function() {\n var L = 0,\n I = 0,\n m,\n i;\n\n for (i = 0; i < N; i++) {\n m = mass[i];\n // L_CM = sum over N of of mr_i x p_i (where r_i and p_i are position & momentum vectors relative to the CM)\n L += m * cross(x[i] - x_CM, y[i] - y_CM, vx[i] - vx_CM, vy[i] - vy_CM);\n I += m * sumSquare(x[i] - x_CM, y[i] - y_CM);\n }\n\n L_CM = L;\n I_CM = I;\n omega_CM = L_CM / I_CM;\n },\n\n computeCMMotion = function() {\n computeSystemTranslation();\n computeSystemRotation();\n },\n\n // ####################################################################\n // # Functions handling different collisions. #\n // ####################################################################\n\n // Constrain obstacle i to the area between the walls by simulating perfectly elastic collisions with the walls.\n bounceObstacleOffWalls = function(i) {\n var leftwall = 0,\n bottomwall = 0,\n width = size[0],\n height = size[1],\n rightwall = width - obstacleWidth[i],\n topwall = height - obstacleHeight[i];\n\n // Bounce off vertical walls.\n if (obstacleX[i] < leftwall) {\n while (obstacleX[i] < leftwall - width) {\n obstacleX[i] += width;\n }\n obstacleX[i] = leftwall + (leftwall - obstacleX[i]);\n obstacleVX[i] *= -1;\n } else if (obstacleX[i] > rightwall) {\n while (obstacleX[i] > rightwall + width) {\n obstacleX[i] -= width;\n }\n obstacleX[i] = rightwall - (obstacleX[i] - rightwall);\n obstacleVX[i] *= -1;\n }\n\n // Bounce off horizontal walls.\n if (obstacleY[i] < bottomwall) {\n while (obstacleY[i] < bottomwall - height) {\n obstacleY[i] += height;\n }\n obstacleY[i] = bottomwall + (bottomwall - obstacleY[i]);\n obstacleVY[i] *= -1;\n } else if (obstacleY[i] > topwall) {\n while (obstacleY[i] > topwall + width) {\n obstacleY[i] -= width;\n }\n obstacleY[i] = topwall - (obstacleY[i] - topwall);\n obstacleVY[i] *= -1;\n }\n },\n\n // Constrain particle i to the area between the walls by simulating perfectly elastic collisions with the walls.\n // Note this may change the linear and angular momentum.\n bounceParticleOffWalls = function(i) {\n var r = radius[i],\n leftwall = r,\n bottomwall = r,\n width = size[0],\n height = size[1],\n rightwall = width - r,\n topwall = height - r;\n\n // Bounce off vertical walls.\n if (x[i] < leftwall) {\n while (x[i] < leftwall - width) {\n x[i] += width;\n }\n x[i] = leftwall + (leftwall - x[i]);\n vx[i] *= -1;\n px[i] *= -1;\n } else if (x[i] > rightwall) {\n while (x[i] > rightwall + width) {\n x[i] -= width;\n }\n x[i] = rightwall - (x[i] - rightwall);\n vx[i] *= -1;\n px[i] *= -1;\n }\n\n // Bounce off horizontal walls\n if (y[i] < bottomwall) {\n while (y[i] < bottomwall - height) {\n y[i] += height;\n }\n y[i] = bottomwall + (bottomwall - y[i]);\n vy[i] *= -1;\n py[i] *= -1;\n } else if (y[i] > topwall) {\n while (y[i] > topwall + height) {\n y[i] -= height;\n }\n y[i] = topwall - (y[i] - topwall);\n vy[i] *= -1;\n py[i] *= -1;\n }\n },\n bounceParticleOffObstacles = function(i, x_prev, y_prev, updatePressure) {\n // fast path if no obstacles\n if (N_obstacles < 1) return;\n\n var r,\n xi,\n yi,\n\n j,\n\n x_left,\n x_right,\n y_top,\n y_bottom,\n x_left_prev,\n x_right_prev,\n y_top_prev,\n y_bottom_prev,\n vxPrev,\n vyPrev,\n obs_vxPrev,\n obs_vyPrev,\n atom_mass,\n obs_mass,\n atomElement,\n totalMass,\n bounceDirection;\n\n r = radius[i];\n xi = x[i];\n yi = y[i];\n atomElement = element[i];\n\n for (j = 0; j < N_obstacles; j++) {\n if (obstaclePermeability[j].indexOf(atomElement) !== -1) {\n // obstaclePermeability lists elements that are not interacting with given obstacle.\n continue;\n }\n\n x_left = obstacleX[j] - r;\n x_right = obstacleX[j] + obstacleWidth[j] + r;\n y_top = obstacleY[j] + obstacleHeight[j] + r;\n y_bottom = obstacleY[j] - r;\n\n x_left_prev = obstacleXPrev[j] - r;\n x_right_prev = obstacleXPrev[j] + obstacleWidth[j] + r;\n y_top_prev = obstacleYPrev[j] + obstacleHeight[j] + r;\n y_bottom_prev = obstacleYPrev[j] - r;\n\n // Reset bounceDirection, which indicates collision type.\n bounceDirection = 0;\n // Check all possibilities for a collision with the rectangular obstacle.\n if (xi > x_left && xi < x_right && yi > y_bottom && yi < y_top) {\n if (x_prev <= x_left_prev) {\n x[i] = x_left - (xi - x_left);\n bounceDirection = 1; // West wall collision.\n } else if (x_prev >= x_right_prev) {\n x[i] = x_right + (x_right - xi);\n bounceDirection = 2; // East wall collision.\n } else if (y_prev <= y_bottom_prev) {\n y[i] = y_bottom - (yi - y_bottom);\n bounceDirection = -1; // South wall collision.\n } else if (y_prev >= y_top_prev) {\n y[i] = y_top + (y_top - yi);\n bounceDirection = -2; // North wall collision.\n }\n }\n\n obs_mass = obstacleMass[j];\n\n if (bounceDirection !== 0) {\n if (obs_mass !== Infinity) {\n // if we have real mass, perform a perfectly-elastic collision\n atom_mass = mass[i];\n totalMass = obs_mass + atom_mass;\n if (bounceDirection > 0) {\n vxPrev = vx[i];\n obs_vxPrev = obstacleVX[j];\n\n vx[i] = (vxPrev * (atom_mass - obs_mass) + (2 * obs_mass * obs_vxPrev)) / totalMass;\n obstacleVX[j] = (obs_vxPrev * (obs_mass - atom_mass) + (2 * px[i])) / totalMass;\n } else {\n vyPrev = vy[i];\n obs_vyPrev = obstacleVY[j];\n\n vy[i] = (vyPrev * (atom_mass - obs_mass) + (2 * obs_mass * obs_vyPrev)) / totalMass;\n obstacleVY[j] = (obs_vyPrev * (obs_mass - atom_mass) + (2 * py[i])) / totalMass;\n }\n } else {\n // if we have infinite mass, just reflect (like a wall)\n if (bounceDirection > 0) {\n vx[i] *= -1;\n } else {\n vy[i] *= -1;\n }\n }\n\n if (updatePressure) {\n // Update pressure probes if there are any.\n if (obstacleWestProbe[j] && bounceDirection === 1) {\n // 1 is west wall collision.\n obstacleWProbeValue[j] += mass[i] * ((vxPrev ? vxPrev : -vx[i]) - vx[i]);\n } else if (obstacleEastProbe[j] && bounceDirection === 2) {\n // 2 is west east collision.\n obstacleEProbeValue[j] += mass[i] * (vx[i] - (vxPrev ? vxPrev : -vx[i]));\n } else if (obstacleSouthProbe[j] && bounceDirection === -1) {\n // -1 is south wall collision.\n obstacleSProbeValue[j] += mass[i] * ((vyPrev ? vyPrev : -vy[i]) - vy[i]);\n } else if (obstacleNorthProbe[j] && bounceDirection === -2) {\n // -2 is north wall collision.\n obstacleNProbeValue[j] += mass[i] * (vy[i] - (vyPrev ? vyPrev : -vy[i]));\n }\n }\n\n }\n }\n },\n\n bounceParticleOffShapes = function(i, x_prev, y_prev) {\n // fast path if no shapes\n if (N_shapes < 1) return;\n\n var r,\n xi,\n yi,\n\n j,\n\n x_inside_left,\n x_inside_right,\n y_inside_top,\n y_inside_bottom,\n x_outside_left,\n x_outside_right,\n y_outside_top,\n y_outside_bottom,\n\n shapeX_offset, shapeY_offset,\n\n tx, ty,\n tx_prev, ty_prev,\n ar, br,\n\n a, b, c,\n f1x, f1y, f1d,\n f2x, f2y, f2d,\n tvx, tvy,\n mx, my,\n nx, ny, nd;\n\n r = radius[i];\n xi = x[i];\n yi = y[i];\n\n\n for (j = 0; j < N_shapes; j++) {\n\n if (!shapeFence[j])\n continue;\n\n if (shapeType[j] === 'rectangle') {\n\n x_outside_left = shapeX[j] - r;\n x_outside_right = shapeX[j] + shapeWidth[j] + r;\n y_outside_top = shapeY[j] + shapeHeight[j] + r;\n y_outside_bottom = shapeY[j] - r;\n\n x_inside_left = shapeX[j] + r;\n x_inside_right = shapeX[j] + shapeWidth[j] - r;\n y_inside_top = shapeY[j] + shapeHeight[j] - r;\n y_inside_bottom = shapeY[j] + r;\n\n // Check all outside collisions\n if (xi > x_outside_left && xi < x_outside_right && yi > y_outside_bottom && yi < y_outside_top) {\n if (x_prev <= x_outside_left) {\n x[i] = x_outside_left - (xi - x_outside_left);\n vx[i] *= -1;\n } else if (x_prev >= x_outside_right) {\n x[i] = x_outside_right + (x_outside_right - xi);\n vx[i] *= -1;\n } else if (y_prev <= y_outside_bottom) {\n y[i] = y_outside_bottom - (yi - y_outside_bottom);\n vy[i] *= -1;\n } else if (y_prev >= y_outside_top) {\n y[i] = y_outside_top + (y_outside_top - yi);\n vy[i] *= -1;\n }\n }\n //Check all inside collisions\n if (x_prev > x_inside_left && x_prev < x_inside_right && y_prev > y_inside_bottom && y_prev < y_inside_top) {\n if (xi <= x_inside_left) {\n x[i] = x_inside_left + (x_inside_left - xi);\n vx[i] *= -1;\n } else if (xi >= x_inside_right) {\n x[i] = x_inside_right - (xi - x_inside_right);\n vx[i] *= -1;\n }\n if (yi <= y_inside_bottom) {\n y[i] = y_inside_bottom + (y_inside_bottom - yi);\n vy[i] *= -1;\n } else if (yi >= y_inside_top) {\n y[i] = y_inside_top - (yi - y_inside_top);\n vy[i] *= -1;\n }\n }\n } else if (shapeType[j] === 'ellipse') {\n a = shapeWidth[j] / 2;\n b = shapeHeight[j] / 2;\n // Transform points from model space to ellipse space\n // to facilitate collision checking\n shapeX_offset = shapeX[j] + a;\n shapeY_offset = shapeY[j] + b;\n tx = (xi - shapeX_offset) / (a + r);\n ty = (yi - shapeY_offset) / (b + r);\n tx *= tx;\n ty *= ty;\n tx_prev = (x_prev - shapeX_offset) / (a + r);\n ty_prev = (y_prev - shapeY_offset) / (b + r);\n tx_prev *= tx_prev;\n ty_prev *= ty_prev;\n ar = (a + r) / (a - r);\n br = (b + r) / (b - r);\n ar *= ar;\n br *= br;\n if (tx + ty <= 1 && tx_prev + ty_prev > 1 || tx * ar + ty * br >= 1 && tx_prev * ar + ty_prev * br < 1) {\n\n // Calculate the two foci\n if (shapeWidth[j] > shapeHeight[j]) {\n c = Math.sqrt(a * a - b * b);\n f1x = shapeX[j] + a + c;\n f2x = shapeX[j] + a - c;\n f1y = f2y = shapeY[j] + b;\n } else {\n c = Math.sqrt(b * b - a * a);\n f1x = f2x = shapeX[j] + a;\n f1y = shapeY[j] + b + c;\n f2y = shapeY[j] + b - c;\n }\n\n\n // Determine the midpoint of the atom's motion path\n // so it can be used as an approximate point of collision\n mx = (xi + x_prev) / 2;\n my = (yi + y_prev) / 2;\n\n // Determine the distance from the point of collision\n // to both foci\n f1d = Math.sqrt(sumSquare(f1x - mx, f1y - my));\n f2d = Math.sqrt(sumSquare(f2x - mx, f2x - mx));\n\n // Calculate the angle bisector which is the normal vector\n nx = mx - (f1x * f2d + f2x * f1d) / (f1d + f2d);\n ny = my - (f1y * f2d + f2y * f1d) / (f1d + f2d);\n\n // Normalize the normal vector\n nd = Math.sqrt(sumSquare(nx, ny));\n nx /= nd;\n ny /= nd;\n\n // Reflect the atom's position off the normal vector\n x[i] = (mx - x_prev) - 2 * ((mx - x_prev) * nx + (my - y_prev) * ny) * nx + mx;\n y[i] = (my - y_prev) - 2 * ((mx - x_prev) * nx + (my - y_prev) * ny) * ny + my;\n\n // Reflect the atom's velocity off the normal vector\n tvx = vx[i];\n tvy = vy[i];\n vx[i] = (tvx - 2 * (tvx * nx + tvy * ny) * nx);\n vy[i] = (tvy - 2 * (tvx * nx + tvy * ny) * ny);\n }\n }\n }\n },\n\n bounceParticleOffLines = function(i, x_prev, y_prev) {\n // fast path if no lines\n if (N_lines < 1) return;\n\n var r,\n ld,\n atom1_to_line,\n atom2_to_line,\n line1_to_atom,\n line2_to_atom,\n mx, my,\n nx, ny, nd,\n tvx, tvy,\n j,\n xi, yi;\n\n r = radius[i];\n xi = x[i];\n yi = y[i];\n\n for (j = 0; j < N_lines; j++) {\n if (!lineFence[j])\n continue;\n\n // Find a bunch of cross products to check collision\n line1_to_atom = cross(x_prev - lineX1[j], y_prev - lineY1[j], xi - lineX1[j], yi - lineY1[j]);\n line2_to_atom = cross(x_prev - lineX2[j], y_prev - lineY2[j], xi - lineX2[j], yi - lineY2[j]);\n if (line1_to_atom * line2_to_atom < 0) {\n ld = Math.sqrt(sumSquare(lineX1[j] - lineX2[j], lineY1[j] - lineY2[j]));\n atom1_to_line = cross(lineX2[j] - x_prev, lineY2[j] - y_prev, lineX1[j] - x_prev, lineY1[j] - y_prev);\n atom2_to_line = cross(lineX2[j] - xi, lineY2[j] - yi, lineX1[j] - xi, lineY1[j] - yi);\n if ((atom1_to_line < 0 && atom2_to_line > -r * ld || atom1_to_line > 0 && atom2_to_line < r * ld) &&\n atom1_to_line * line1_to_atom > 0) {\n // Collision!\n\n // Determine the midpoint of the atom's motion path\n // so it can be used as an approximate point of collision\n mx = (xi + x_prev) / 2;\n my = (yi + y_prev) / 2;\n\n // Caclulate the normal vector (just perpendicular to the line)\n nx = lineY2[j] - lineY1[j];\n ny = -(lineX2[j] - lineX1[j]);\n\n // Normalize the normal vector\n nd = Math.sqrt(sumSquare(nx, ny));\n nx /= nd;\n ny /= nd;\n\n // Reflect the atom's position off the normal vector\n x[i] = (mx - x_prev) - 2 * ((mx - x_prev) * nx + (my - y_prev) * ny) * nx + mx;\n y[i] = (my - y_prev) - 2 * ((mx - x_prev) * nx + (my - y_prev) * ny) * ny + my;\n\n // Reflect the atom's velocity off the normal vector\n tvx = vx[i];\n tvy = vy[i];\n vx[i] = (tvx - 2 * (tvx * nx + tvy * ny) * nx);\n vy[i] = (tvy - 2 * (tvx * nx + tvy * ny) * ny);\n }\n }\n }\n },\n\n // ####################################################################\n // # Functions calculating forces and accelerations. #\n // ####################################################################\n\n // Calculate distance and force (if distance < cut-off distance).\n calculateLJInteraction = function(i, j) {\n var elI = element[i],\n elJ = element[j],\n dx = x[j] - x[i],\n dy = y[j] - y[i],\n rSq = sumSquare(dx, dy),\n fOverR, fx, fy;\n\n if (updateNeighborList && rSq < cutoffNeighborListSquared[elI][elJ]) {\n neighborList.markNeighbors(i, j);\n }\n\n // Don't calculate LJ interaction between bonded atoms. However note that bonded atoms\n // will be marked as neighbors during list update - it's necessary to avoid divergence\n // when the bond is removed.\n if (radialBondMatrix && radialBondMatrix[i] && radialBondMatrix[i][j]) return;\n\n if (rSq < cutoffDistance_LJ_sq[elI][elJ]) {\n fOverR = ljCalculator[elI][elJ].forceOverDistanceFromSquaredDistance(rSq);\n fx = fOverR * dx;\n fy = fOverR * dy;\n ax[i] += fx;\n ay[i] += fy;\n ax[j] -= fx;\n ay[j] -= fy;\n }\n },\n\n updateShortRangeForces = function() {\n // Fast path if Lennard Jones interaction is disabled.\n if (!useLennardJonesInteraction) return;\n\n if (updateNeighborList) {\n console.time('cell lists');\n shortRangeForcesCellList();\n console.timeEnd('cell lists');\n } else {\n console.time('neighbor list');\n shortRangeForcesNeighborList();\n console.timeEnd('neighbor list');\n }\n },\n\n shortRangeForcesCellList = function() {\n var rows = cellList.getRowsNum(),\n cols = cellList.getColsNum(),\n i, j, temp, cellIdx, cell1, cell2,\n a, b, atom1Idx, cell1Len, cell2Len,\n n, nLen, cellNeighbors;\n\n for (i = 0; i < rows; i++) {\n temp = i * cols;\n for (j = 0; j < cols; j++) {\n cellIdx = temp + j;\n\n cell1 = cellList.getCell(cellIdx);\n cellNeighbors = cellList.getNeighboringCells(i, j);\n\n for (a = 0, cell1Len = cell1.length; a < cell1Len; a++) {\n atom1Idx = cell1[a];\n\n // Interactions inside the cell.\n for (b = 0; b < a; b++) {\n calculateLJInteraction(atom1Idx, cell1[b]);\n }\n // Interactions between neighboring cells.\n for (n = 0, nLen = cellNeighbors.length; n < nLen; n++) {\n cell2 = cellNeighbors[n];\n for (b = 0, cell2Len = cell2.length; b < cell2Len; b++) {\n calculateLJInteraction(atom1Idx, cell2[b]);\n }\n }\n }\n }\n }\n },\n\n shortRangeForcesNeighborList = function() {\n var nlist = neighborList.getList(),\n atom1Idx, atom2Idx, i, len;\n\n for (atom1Idx = 0; atom1Idx < N; atom1Idx++) {\n for (i = neighborList.getStartIdxFor(atom1Idx), len = neighborList.getEndIdxFor(atom1Idx); i < len; i++) {\n atom2Idx = nlist[i];\n calculateLJInteraction(atom1Idx, atom2Idx);\n }\n }\n },\n\n updateLongRangeForces = function() {\n // Fast path if Coulomb interaction is disabled or there are no charged atoms.\n if (!useCoulombInteraction || chargedAtomsList.length === 0) return;\n\n var i, j, len, dx, dy, rSq, fOverR, fx, fy,\n charge1, atom1Idx, atom2Idx,\n bondingPartners;\n\n for (i = 0, len = chargedAtomsList.length; i < len; i++) {\n atom1Idx = chargedAtomsList[i];\n charge1 = charge[atom1Idx];\n bondingPartners = radialBondMatrix && radialBondMatrix[atom1Idx];\n for (j = 0; j < i; j++) {\n atom2Idx = chargedAtomsList[j];\n if (bondingPartners && bondingPartners[atom2Idx]) continue;\n\n dx = x[atom2Idx] - x[atom1Idx];\n dy = y[atom2Idx] - y[atom1Idx];\n rSq = dx * dx + dy * dy;\n\n fOverR = coulomb.forceOverDistanceFromSquaredDistance(rSq, charge1, charge[atom2Idx],\n dielectricConst, realisticDielectricEffect);\n\n fx = fOverR * dx;\n fy = fOverR * dy;\n ax[atom1Idx] += fx;\n ay[atom1Idx] += fy;\n ax[atom2Idx] -= fx;\n ay[atom2Idx] -= fy;\n }\n }\n },\n\n updateFrictionForces = function() {\n if (!viscosity) return;\n\n var i,\n drag;\n\n for (i = 0; i < N; i++) {\n drag = viscosity * friction[i];\n\n ax[i] += (-vx[i] * drag);\n ay[i] += (-vy[i] * drag);\n }\n },\n\n updateRadialBondForces = function() {\n // fast path if no radial bonds have been defined\n if (N_radialBonds < 1) return;\n\n var i, i1, i2, dx, dy,\n rSq, r, k, r0,\n fOverR, fx, fy;\n\n for (i = 0; i < N_radialBonds; i++) {\n i1 = radialBondAtom1Index[i];\n i2 = radialBondAtom2Index[i];\n\n dx = x[i2] - x[i1];\n dy = y[i2] - y[i1];\n rSq = dx * dx + dy * dy;\n r = Math.sqrt(rSq);\n\n // eV/nm^2\n k = radialBondStrength[i];\n\n // nm\n r0 = radialBondLength[i];\n\n // \"natural\" Next Gen MW force units / nm\n fOverR = constants.convert(k * (r - r0), {\n from: unit.EV_PER_NM,\n to: unit.MW_FORCE_UNIT\n }) / r;\n\n fx = fOverR * dx;\n fy = fOverR * dy;\n\n ax[i1] += fx;\n ay[i1] += fy;\n ax[i2] -= fx;\n ay[i2] -= fy;\n }\n },\n\n updateAngularBondForces = function() {\n // Fast path if no angular bonds have been defined.\n if (N_angularBonds < 1) return;\n\n var i, i1, i2, i3,\n dxij, dyij, dxkj, dykj, rijSquared, rkjSquared, rij, rkj,\n k, angle, theta, cosTheta, sinTheta,\n forceInXForI, forceInYForI, forceInXForK, forceInYForK,\n commonPrefactor, temp;\n\n for (i = 0; i < N_angularBonds; i++) {\n i1 = angularBondAtom1Index[i];\n i2 = angularBondAtom2Index[i];\n i3 = angularBondAtom3Index[i];\n\n // radian\n angle = angularBondAngle[i];\n\n // (eV/nm * nm) / radian\n k = angularBondStrength[i];\n\n // Calculate angle (theta) between two vectors:\n // Atom1-Atom3 and Atom2-Atom3\n // Atom1 -> i, Atom2 -> k, Atom3 -> j\n dxij = x[i1] - x[i3];\n dxkj = x[i2] - x[i3];\n dyij = y[i1] - y[i3];\n dykj = y[i2] - y[i3];\n rijSquared = dxij * dxij + dyij * dyij;\n rkjSquared = dxkj * dxkj + dykj * dykj;\n rij = Math.sqrt(rijSquared);\n rkj = Math.sqrt(rkjSquared);\n // Calculate cos using dot product definition.\n cosTheta = (dxij * dxkj + dyij * dykj) / (rij * rkj);\n if (cosTheta > 1.0) cosTheta = 1.0;\n else if (cosTheta < -1.0) cosTheta = -1.0;\n // Pythagorean trigonometric identity.\n sinTheta = Math.sqrt(1.0 - cosTheta * cosTheta);\n // Finally:\n theta = Math.acos(cosTheta);\n\n if (sinTheta < 0.0001) sinTheta = 0.0001;\n\n // Calculate force.\n // \"natural\" Next Gen MW force units / nm\n commonPrefactor = constants.convert(k * (theta - angle) / (sinTheta * rij), {\n from: unit.EV_PER_NM,\n to: unit.MW_FORCE_UNIT\n }) / rkj;\n\n // nm^2\n temp = dxij * dxkj + dyij * dykj;\n // Terms in brackets end up with nm unit.\n // commonPrefactor is in \"natural\" Next Gen MW force units / nm,\n // so everything is correct.\n forceInXForI = commonPrefactor * (dxkj - temp * dxij / rijSquared);\n forceInYForI = commonPrefactor * (dykj - temp * dyij / rijSquared);\n forceInXForK = commonPrefactor * (dxij - temp * dxkj / rkjSquared);\n forceInYForK = commonPrefactor * (dyij - temp * dykj / rkjSquared);\n\n ax[i1] += forceInXForI;\n ay[i1] += forceInYForI;\n ax[i2] += forceInXForK;\n ay[i2] += forceInYForK;\n ax[i3] -= (forceInXForI + forceInXForK);\n ay[i3] -= (forceInYForI + forceInYForK);\n }\n },\n\n // FIXME: eliminate duplication with springForces\n updateRestraintForces = function() {\n // fast path if no restraints have been defined\n if (N_restraints < 1) return;\n\n var i,\n dx, dy,\n r, r_sq,\n k,\n f_over_r,\n fx, fy,\n a;\n\n for (i = 0; i < N_restraints; i++) {\n a = restraintAtomIndex[i];\n\n dx = restraintX0[i] - x[a];\n dy = restraintY0[i] - y[a];\n\n if (dx === 0 && dy === 0) continue; // force will be zero\n\n r_sq = dx * dx + dy * dy;\n r = Math.sqrt(r_sq);\n\n // eV/nm^2\n k = restraintK[i];\n\n f_over_r = constants.convert(k * r, {\n from: unit.EV_PER_NM,\n to: unit.MW_FORCE_UNIT\n }) / r;\n\n fx = f_over_r * dx;\n fy = f_over_r * dy;\n\n ax[a] += fx;\n ay[a] += fy;\n }\n },\n\n updateSpringForces = function() {\n if (N_springForces < 1) return;\n\n var i,\n dx, dy,\n r, r_sq,\n k,\n f_over_r,\n fx, fy,\n a;\n\n for (i = 0; i < N_springForces; i++) {\n a = springForceAtomIndex[i];\n\n dx = springForceX[i] - x[a];\n dy = springForceY[i] - y[a];\n\n if (dx === 0 && dy === 0) continue; // force will be zero\n\n r_sq = dx * dx + dy * dy;\n r = Math.sqrt(r_sq);\n\n // eV/nm^2\n k = springForceStrength[i];\n\n f_over_r = constants.convert(k * r, {\n from: unit.EV_PER_NM,\n to: unit.MW_FORCE_UNIT\n }) / r;\n\n fx = f_over_r * dx;\n fy = f_over_r * dy;\n\n ax[a] += fx;\n ay[a] += fy;\n }\n },\n\n // Returns center of mass of given atoms set (molecule).\n getMoleculeCenterOfMass = function(molecule) {\n var xcm = 0,\n ycm = 0,\n totalMass = 0,\n atomIdx, atomMass, i, len;\n\n for (i = 0, len = molecule.length; i < len; i++) {\n atomIdx = molecule[i];\n atomMass = mass[atomIdx];\n xcm += x[atomIdx] * atomMass;\n ycm += y[atomIdx] * atomMass;\n totalMass += atomMass;\n }\n xcm /= totalMass;\n ycm /= totalMass;\n return {\n x: xcm,\n y: ycm\n };\n },\n\n updateAminoAcidForces = function() {\n // Fast path if there is no solvent defined or it doesn't have impact on AAs.\n if (solventForceType === 0 || solventForceFactor === 0 || N < 2) return;\n\n var moleculeAtoms, atomIdx, cm, solventFactor,\n dx, dy, r, fx, fy, temp, i, j, len;\n\n // Reset helper array.\n for (i = 0; i < N; i++) {\n visited[i] = 0;\n }\n\n // Set multiplier of force produced by the solvent.\n // Constants used in Classic MW: 5 * 0.00001 = 0.00005.\n // Multiply it by 0.01 * 120 = 1.2 to convert from\n // 0.1A * 120amu / fs^2 to nm * amu / fs^2.\n // solventForceType is the same like in Classic MW (unitless).\n // solventForceFactor is a new variable used only in Next Gen MW.\n solventFactor = 0.00006 * solventForceType * solventForceFactor;\n\n for (i = 0; i < N; i++) {\n // Calculate forces only *once* for amino acid.\n if (visited[i] === 1) continue;\n\n moleculeAtoms = engine.getMoleculeAtoms(i);\n moleculeAtoms.push(i);\n\n cm = getMoleculeCenterOfMass(moleculeAtoms);\n\n for (j = 0, len = moleculeAtoms.length; j < len; j++) {\n atomIdx = moleculeAtoms[j];\n // Mark that atom was part of processed molecule to avoid\n // calculating its molecule again.\n visited[atomIdx] = 1;\n\n if (hydrophobicity[atomIdx] !== 0) {\n dx = x[atomIdx] - cm.x;\n dy = y[atomIdx] - cm.y;\n r = Math.sqrt(dx * dx + dy * dy);\n\n if (r > 0) {\n temp = hydrophobicity[atomIdx] * solventFactor;\n\n // AAs being pulled into the center of mass should feel an additional force factor that depends\n // on distance from the center of mass, ranging between 1 and 25, with 1 being furthest away from the CoM\n // and 25 being the max when at the CoM or within a certain radius of the CoM. In some ways this\n // is closer to nature as the core of a protein is less exposed to solvent and thus even more stable.\n if (temp > 0 && r < additionalSolventForceThreshold) {\n // Force towards the center of mass, distance from the CoM less than a given threshold.\n // Multiply force by an additional factor defined by the linear function of 'r' defined by two points:\n // (0, additionalSolventForceMult) and (additionalSolventForceThreshold, 1).\n temp *= (1 - additionalSolventForceMult) * r / additionalSolventForceThreshold + additionalSolventForceMult;\n }\n\n fx = temp * dx / r;\n fy = temp * dy / r;\n ax[atomIdx] -= fx;\n ay[atomIdx] -= fy;\n }\n }\n }\n }\n },\n\n updateGravitationalAccelerations = function() {\n // fast path if there is no gravitationalField\n if (!gravitationalField) return;\n var i;\n\n for (i = 0; i < N; i++) {\n ay[i] -= gravitationalField;\n }\n },\n\n rectContains = function(i, x, y) {\n var rx = shapeX[i],\n ry = shapeY[i];\n return rx <= x && x <= rx + shapeWidth[i] &&\n ry <= y && y <= ry + shapeHeight[i];\n },\n\n getElFieldForce = function(i) {\n var o = electricFieldOrientation[i];\n return (o === \"N\" || o === \"E\" ? 1 : -1) * electricFieldIntensity[i];\n },\n\n updateElectricFieldsAccelerations = function() {\n // fast path if there are no electric fields\n if (!electricFields) return;\n\n var i, e, o, vertical, rect, temp;\n\n for (e = 0; e < N_electricFields; e++) {\n o = electricFieldOrientation[e];\n vertical = o === \"N\" || o === \"S\";\n temp = getElFieldForce(e) / dielectricConst;\n rect = electricFieldShapeIdx[e];\n\n for (i = 0; i < N; i++) {\n if (rect != null && !rectContains(rect, x[i], y[i])) continue;\n if (vertical) {\n ay[i] += temp * charge[i] / mass[i];\n } else {\n ax[i] += temp * charge[i] / mass[i];\n }\n }\n }\n },\n\n // Push all amino acids above some Y coordinate during DNA translation.\n // TODO: this should be part of the MD2D plug-in for proteins engine!\n updateDNATranslationAccelerations = function() {\n if (!dnaTranslationInProgress) return;\n var i, diff;\n\n for (i = 0; i < N; i++) {\n diff = Math.min(1, 2.2 - y[i]);\n if (diff > 0) {\n ay[i] += 1e-4 * diff;\n ax[i] -= 3e-6;\n }\n }\n },\n\n // ####################################################################\n // # Integration main helper functions. #\n // ####################################################################\n\n // For now, calculate only structures used by proteins engine.\n // TODO: move there calculation of various optimization structures like chargedAtomLists.\n calculateOptimizationStructures = function() {\n var cysteineEl = aminoacidsHelper.cysteineElement,\n idx, i;\n\n // Reset optimization data structure.\n freeCysteinesList.length = 0;\n\n for (i = 0; i < N; i++) {\n if (element[i] === cysteineEl) {\n // At the beginning, assume that each cysteine is \"free\" (ready to create disulfide bond).\n freeCysteinesList.push(i);\n }\n }\n\n for (i = 0; i < N_radialBonds; i++) {\n if (element[radialBondAtom1Index[i]] === cysteineEl && element[radialBondAtom2Index[i]] === cysteineEl) {\n // Two cysteines are already bonded, so remove them from freeCysteinsList.\n idx = freeCysteinesList.indexOf(radialBondAtom1Index[i]);\n if (idx !== -1) arrays.remove(freeCysteinesList, idx);\n idx = freeCysteinesList.indexOf(radialBondAtom2Index[i]);\n if (idx !== -1) arrays.remove(freeCysteinesList, idx);\n }\n }\n },\n\n // Accumulate acceleration into a(t + dt) from all possible interactions, fields\n // and forces connected with atoms.\n updateParticlesAccelerations = function() {\n var i, inverseMass;\n\n if (N === 0) return;\n\n // Zero out a(t) for accumulation of forces into a(t + dt).\n for (i = 0; i < N; i++) {\n ax[i] = ay[i] = 0;\n }\n\n // Check if the neighbor list should be recalculated.\n updateNeighborList = neighborList.shouldUpdate(x, y);\n\n if (updateNeighborList) {\n // Clear both lists.\n cellList.clear();\n neighborList.clear();\n\n for (i = 0; i < N; i++) {\n // Add particle to appropriate cell.\n cellList.addToCell(i, x[i], y[i]);\n // And save its initial position\n // (\"initial\" = position during neighbor list creation).\n neighborList.saveAtomPosition(i, x[i], y[i]);\n }\n }\n\n // ######################################\n // ax and ay are FORCES below this point\n // ######################################\n\n // Accumulate forces into a(t + dt) for all pairwise interactions between\n // particles:\n // Short-range forces (Lennard-Jones interaction).\n console.time('short-range forces');\n updateShortRangeForces();\n console.timeEnd('short-range forces');\n // Long-range forces (Coulomb interaction).\n console.time('long-range forces');\n updateLongRangeForces();\n console.timeEnd('long-range forces');\n\n // Accumulate forces from radially bonded interactions into a(t + dt).\n updateRadialBondForces();\n\n // Accumulate forces from angularly bonded interactions into a(t + dt).\n updateAngularBondForces();\n\n // Accumulate forces from restraint forces into a(t + dt).\n updateRestraintForces();\n\n // Accumulate forces from spring forces into a(t + dt).\n updateSpringForces();\n\n // Accumulate drag forces into a(t + dt).\n updateFrictionForces();\n\n // Apply forces caused by the hydrophobicity.\n // Affects only amino acids in the water or oil solvent.\n updateAminoAcidForces();\n\n // Convert ax, ay from forces to accelerations!\n for (i = 0; i < N; i++) {\n inverseMass = 1 / mass[i];\n ax[i] *= inverseMass;\n ay[i] *= inverseMass;\n }\n\n // ############################################\n // ax and ay are ACCELERATIONS below this point\n // ############################################\n\n // Accumulate optional gravitational accelerations into a(t + dt).\n updateGravitationalAccelerations();\n\n // Accumulate optional accelerations coming from electric fields into a(t + dt).\n updateElectricFieldsAccelerations();\n\n // Push all amino acids above some Y coordinate during DNA translation.\n // TODO: this should be part of the MD2D plug-in for proteins engine!\n updateDNATranslationAccelerations();\n },\n\n // Half of the update of v(t + dt) and p(t + dt) using a. During a single integration loop,\n // call once when a = a(t) and once when a = a(t+dt).\n halfUpdateVelocity = function() {\n var i, m;\n for (i = 0; i < N; i++) {\n m = mass[i];\n vx[i] += 0.5 * ax[i] * dt;\n px[i] = m * vx[i];\n vy[i] += 0.5 * ay[i] * dt;\n py[i] = m * vy[i];\n }\n },\n\n // Calculate r(t + dt, i) from v(t + 0.5 * dt).\n updateParticlesPosition = function() {\n var width100 = size[0] * 100,\n height100 = size[1] * 100,\n xPrev, yPrev, i;\n\n for (i = 0; i < N; i++) {\n xPrev = x[i];\n yPrev = y[i];\n\n x[i] += vx[i] * dt;\n y[i] += vy[i] * dt;\n\n // Simple check if model has diverged. Prevents web browser from crashing.\n // isNaN tests not only x, y, but also vx, vy, ax, ay as test is done after\n // updateParticlesPosition(). If a displacement during one step is larger than width * 100\n // (or height * 100) it means that the velocity is far too big for the current time step.\n if (isNaN(x[i]) || isNaN(y[i]) ||\n Math.abs(x[i]) > width100 || Math.abs(y[i]) > height100) {\n throw new Error(\"Model has diverged!\");\n }\n\n // Bounce off walls.\n bounceParticleOffWalls(i);\n // Bounce off obstacles, update pressure probes.\n bounceParticleOffObstacles(i, xPrev, yPrev, true);\n // Bounce off shapes\n bounceParticleOffShapes(i, xPrev, yPrev);\n // Bounce off lines\n bounceParticleOffLines(i, xPrev, yPrev);\n }\n },\n\n // Removes velocity and acceleration from pinned atoms.\n pinAtoms = function() {\n var i;\n\n for (i = 0; i < N; i++) {\n if (pinned[i]) {\n vx[i] = vy[i] = ax[i] = ay[i] = 0;\n }\n }\n },\n\n // Update speed using velocities.\n updateParticlesSpeed = function() {\n var i;\n\n for (i = 0; i < N; i++) {\n speed[i] = Math.sqrt(vx[i] * vx[i] + vy[i] * vy[i]);\n }\n },\n\n // Calculate new obstacles position using simple integration method.\n updateObstaclesPosition = function() {\n var ax, ay, vx, vy,\n drag, extFx, extFy, i;\n\n for (i = 0; i < N_obstacles; i++) {\n // Fast path when obstacle isn't movable.\n if (obstacleMass[i] === Infinity) continue;\n\n vx = obstacleVX[i];\n vy = obstacleVY[i];\n // External forces are defined per mass unit!\n // So, they are accelerations in fact.\n extFx = obstacleExtAX[i];\n extFy = obstacleExtAY[i];\n\n if (vx || vy || extFx || extFy || gravitationalField) {\n drag = viscosity * obstacleFriction[i];\n ax = extFx - drag * vx;\n ay = extFy - drag * vy - gravitationalField;\n\n obstacleXPrev[i] = obstacleX[i];\n obstacleYPrev[i] = obstacleY[i];\n\n // Update positions.\n obstacleX[i] += vx * dt + 0.5 * ax * dt_sq;\n obstacleY[i] += vy * dt + 0.5 * ay * dt_sq;\n\n // Update velocities.\n obstacleVX[i] += ax * dt;\n obstacleVY[i] += ay * dt;\n\n bounceObstacleOffWalls(i);\n }\n }\n },\n\n // Sets total momentum of each molecule to zero.\n // Useful for proteins engine.\n zeroTotalMomentumOfMolecules = function() {\n var moleculeAtoms, atomIdx, sumX, sumY, invMass,\n i, j, len;\n\n for (i = 0; i < N; i++) {\n visited[i] = 0;\n }\n\n for (i = 0; i < N; i++) {\n // Process each particular atom only *once*.\n if (visited[i] === 1) continue;\n\n moleculeAtoms = engine.getMoleculeAtoms(i);\n if (moleculeAtoms.length === 0) continue;\n moleculeAtoms.push(i);\n\n sumX = sumY = invMass = 0;\n for (j = 0, len = moleculeAtoms.length; j < len; j++) {\n atomIdx = moleculeAtoms[j];\n // Mark that atom was part of processed molecule to avoid\n // calculating its molecule again.\n visited[atomIdx] = 1;\n if (!pinned[atomIdx]) {\n sumX += vx[atomIdx] * mass[atomIdx];\n sumY += vy[atomIdx] * mass[atomIdx];\n invMass += mass[atomIdx];\n }\n }\n invMass = 1.0 / invMass;\n for (j = 0, len = moleculeAtoms.length; j < len; j++) {\n atomIdx = moleculeAtoms[j];\n if (!pinned[atomIdx]) {\n vx[atomIdx] -= sumX * invMass;\n vy[atomIdx] -= sumY * invMass;\n // Update momentum.\n px[atomIdx] = vx[atomIdx] * mass[atomIdx];\n py[atomIdx] = vy[atomIdx] * mass[atomIdx];\n }\n }\n }\n },\n\n adjustTemperature = function(target, forceAdjustment) {\n var rescalingFactor, i;\n\n if (target == null) target = T_target;\n\n T = computeTemperature();\n\n if (T === 0) {\n // Special case when T is 0.\n for (i = 0; i < N; i++) {\n if (pinned[i] === false) {\n // Add some random velocity to unpinned atoms.\n vx[i] = Math.random() * 0.02 - 0.01;\n vy[i] = Math.random() * 0.02 - 0.01;\n }\n }\n // Update temperature.\n T = computeTemperature();\n\n if (T === 0) {\n // This means that all atoms are pinned. Nothing to do.\n return;\n }\n }\n\n if (forceAdjustment || useThermostat && T > 0) {\n rescalingFactor = Math.sqrt(target / T);\n\n // Scale particles velocity.\n for (i = 0; i < N; i++) {\n vx[i] *= rescalingFactor;\n vy[i] *= rescalingFactor;\n px[i] *= rescalingFactor;\n py[i] *= rescalingFactor;\n }\n\n // Scale obstacles velocity.\n for (i = 0; i < N_obstacles; i++) {\n obstacleVX[i] *= rescalingFactor;\n obstacleVY[i] *= rescalingFactor;\n }\n\n T = target;\n }\n },\n\n // Two cysteine AAs can form a covalent bond between their sulphur atoms. We could model this such that\n // when two Cys AAs come close enough a covalent bond is formed (only one between a pair of cysteines).\n createDisulfideBonds = function() {\n var cys1Idx, cys2Idx, xDiff, yDiff, rSq, i, j, len;\n\n for (i = 0, len = freeCysteinesList.length; i < len; i++) {\n cys1Idx = freeCysteinesList[i];\n for (j = i + 1; j < len; j++) {\n cys2Idx = freeCysteinesList[j];\n\n xDiff = x[cys1Idx] - x[cys2Idx];\n yDiff = y[cys1Idx] - y[cys2Idx];\n rSq = xDiff * xDiff + yDiff * yDiff;\n\n // Check whether cysteines are close enough to each other.\n // As both are in the freeCysteinesList, they are not connected.\n if (rSq < 0.07) {\n // Connect cysteines.\n engine.addRadialBond({\n atom1: cys1Idx,\n atom2: cys2Idx,\n length: Math.sqrt(rSq),\n // Default strength of bonds between amino acids.\n strength: 10000,\n // Disulfide bond type.\n type: 109\n });\n\n // Remove both cysteines from freeCysteinesList.\n arrays.remove(freeCysteinesList, i);\n arrays.remove(freeCysteinesList, j);\n\n // Update len, cys1Idx, j as freeCysteinesList has changed.\n // Not very pretty, but probably the fastest way.\n len = freeCysteinesList.length;\n cys1Idx = freeCysteinesList[i];\n j = i + 1;\n }\n }\n }\n },\n\n // ### Pressure calculation ###\n\n // Zero values of pressure probes. It should be called\n // at the beginning of the integration step.\n zeroPressureValues = function() {\n var i;\n for (i = 0; i < N_obstacles; i++) {\n if (obstacleNorthProbe[i]) {\n obstacleNProbeValue[i] = 0;\n }\n if (obstacleSouthProbe[i]) {\n obstacleSProbeValue[i] = 0;\n }\n if (obstacleEastProbe[i]) {\n obstacleEProbeValue[i] = 0;\n }\n if (obstacleWestProbe[i]) {\n obstacleWProbeValue[i] = 0;\n }\n }\n },\n\n // Update probes values so they contain final pressure value in Bar.\n // It should be called at the end of the integration step.\n calculateFinalPressureValues = function(duration) {\n var mult, i;\n // Classic MW converts impulses 2mv/dt to pressure in Bar using constant: 1666667.\n // See: the header of org.concord.mw2d.models.RectangularObstacle.\n // However, Classic MW also uses different units for mass and length:\n // - 120amu instead of 1amu,\n // - 0.1A instead of 1nm.\n // We should convert mass, velocity and obstacle height to Next Gen units.\n // Length units reduce themselves (velocity divided by height or width), only mass is left.\n // So, divide classic MW constant 1666667 by 120 - the result is 13888.89.\n // [ There is unit module available, however for reduction of computational cost,\n // include conversion in the pressure constant, especially considering the fact that\n // conversion from 120amu to amu is quite simple. ]\n mult = 13888.89 / duration;\n for (i = 0; i < N_obstacles; i++) {\n if (obstacleNorthProbe[i]) {\n obstacleNProbeValue[i] *= mult / obstacleWidth[i];\n }\n if (obstacleSouthProbe[i]) {\n obstacleSProbeValue[i] *= mult / obstacleWidth[i];\n }\n if (obstacleEastProbe[i]) {\n obstacleEProbeValue[i] *= mult / obstacleHeight[i];\n }\n if (obstacleWestProbe[i]) {\n obstacleWProbeValue[i] *= mult / obstacleHeight[i];\n }\n }\n },\n\n // Removes all angular bonds that includes atom1 and atom2 as one of the \"arms\".\n // Function is useful when e.g. radial bond is removed.\n removeAngularBondsContaining = function(atom1, atom2, conserveEnergy) {\n var i;\n // Use such \"strange\" form of loop, as while removing one bonds,\n // other change their indexing. So, after removal of bond 5, we\n // should check bond 5 again, as it would be another bond (previously\n // indexed as 6).\n i = 0;\n while (i < N_angularBonds) {\n // Remove related angular bonds.\n if ((angularBondAtom1Index[i] === atom1 && angularBondAtom3Index[i] === atom2) ||\n (angularBondAtom1Index[i] === atom2 && angularBondAtom3Index[i] === atom1) ||\n (angularBondAtom2Index[i] === atom1 && angularBondAtom3Index[i] === atom2) ||\n (angularBondAtom2Index[i] === atom2 && angularBondAtom3Index[i] === atom1))\n engine.removeAngularBond(i, conserveEnergy);\n else\n i++;\n }\n };\n\n // A list of the indices of atoms having nonzero charge.\n // (Yes, this introduces some slightly different code patterns than are used elsewhere here, as\n // it's probably time to evolve away from this-avoidance and the onevar style.)\n var chargedAtomsList = [];\n chargedAtomsList.reset = function() {\n var i, j = 0;\n for (i = 0; i < N; i++) {\n if (atoms.charge[i]) {\n this[j++] = i;\n }\n }\n this.length = j;\n };\n\n // radialBondMatrix[i][j] === true when atoms i and j are \"radially bonded\"\n // radialBondMatrix[i][j] === undefined otherwise\n var radialBondMatrix = [];\n radialBondMatrix.reset = function() {\n var i, atom1, atom2;\n\n this.length = 0;\n\n for (i = 0; i < N_radialBonds; i++) {\n atom1 = radialBondAtom1Index[i];\n atom2 = radialBondAtom2Index[i];\n this[atom1] = this[atom1] || [];\n this[atom1][atom2] = true;\n this[atom2] = this[atom2] || [];\n this[atom2][atom1] = true;\n }\n };\n\n // bondedAtoms[i] contains a list of atoms bonded to atom \"i\".\n var bondedAtoms = [];\n bondedAtoms.reset = function() {\n var i, atom1, atom2;\n\n this.length = 0;\n\n for (i = 0; i < N_radialBonds; i++) {\n atom1 = radialBondAtom1Index[i];\n atom2 = radialBondAtom2Index[i];\n this[atom1] = this[atom1] || [];\n this[atom1].push(atom2);\n this[atom2] = this[atom2] || [];\n this[atom2].push(atom1);\n }\n };\n bondedAtoms.unset = function(atom1, atom2) {\n if (this[atom1]) {\n var atom1Idx = this[atom2].indexOf(atom1);\n var atom2Idx = this[atom1].indexOf(atom2);\n if (atom1Idx !== -1) {\n this[atom1].splice(atom2Idx, 1);\n this[atom2].splice(atom1Idx, 1);\n }\n }\n };\n bondedAtoms.set = function(atom1, atom2) {\n if (this[atom1] == null) {\n this[atom1] = [];\n }\n if (this[atom2] == null) {\n this[atom2] = [];\n }\n this[atom1].push(atom2);\n this[atom2].push(atom1);\n };\n\n // ####################################################################\n // ####################################################################\n\n engine = {\n\n // Adds a new plugin. Plugin will be initialized with the object arrys, so that\n // it can add to them as necessary, and will then be registered in the controller,\n // allowing it to respond to functions passed to the controller from arbitrary\n // points in the md2d code.\n addPlugin: function(plugin) {\n if (plugin.initialize) {\n // plugins can update the data arrays as needed so we pass in the arrays.\n // we do this as an object, so we can add new arrays as needed by the plugins\n // without needing to update all existing plugins\n plugin.initialize({\n atoms: atoms,\n elements: elements,\n radialBonds: radialBonds,\n angularBonds: angularBonds\n });\n }\n\n pluginController.registerPlugin(plugin);\n },\n\n useCoulombInteraction: function(v) {\n useCoulombInteraction = !!v;\n },\n\n useLennardJonesInteraction: function(v) {\n useLennardJonesInteraction = !!v;\n },\n\n useThermostat: function(v) {\n useThermostat = !!v;\n },\n\n setVDWLinesRatio: function(vdwlr) {\n if (typeof vdwlr === \"number\" && vdwlr !== 0) {\n vdwLinesRatio = vdwlr;\n }\n },\n\n setGravitationalField: function(gf) {\n if (typeof gf === \"number\" && gf !== 0) {\n gravitationalField = gf;\n } else {\n gravitationalField = false;\n }\n },\n\n setTemperatureOfAtoms: function(atomIndices, targetT) {\n\n var i, j, vxtmp, vytmp, smallT, smallKE, scale, s, groupT,\n nGroup = atomIndices.length;\n\n // Assign a random direction and speed to atoms with velocity exactly equal to 0 (e.g.\n // cooled drastically or newly created). This ensures that we don't just rescale the\n // velocities of the (possibly small or nonexistent) group of atoms that already have some\n // velocity. After rescaling, the net effect is to transfer some velocity from moving atoms\n // to non-moving atoms.\n\n // Pick a small temperature to assign to non-moving atoms\n smallT = (computeTemperatureOfAtoms(atomIndices) || targetT) * 0.0001;\n smallKE = convertTtoKE(smallT, 1);\n\n // Assign moveable, non-moving atoms a small temperature\n for (i = 0; i < nGroup; i++) {\n j = atomIndices[i];\n if (!pinned[j] && vx[j] === 0 && vy[j] === 0) {\n vxtmp = Math.random() - 0.5;\n vytmp = Math.random() - 0.5;\n s = Math.sqrt((2 * smallKE / mass[j]) / (vxtmp * vxtmp + vytmp * vytmp));\n vx[j] = vxtmp * s;\n vy[j] = vytmp * s;\n }\n }\n\n T = computeTemperature();\n groupT = computeTemperatureOfAtoms(atomIndices);\n\n scale = Math.sqrt(targetT / groupT);\n\n for (i = 0; i < nGroup; i++) {\n j = atomIndices[i];\n engine.setAtomProperties(j, {\n vx: vx[j] * scale,\n vy: vy[j] * scale\n });\n }\n },\n\n getTemperatureOfAtoms: function(atomIndices) {\n return computeTemperatureOfAtoms(atomIndices);\n },\n\n setTargetTemperature: function(v) {\n validateTemperature(v);\n T_target = v;\n },\n\n setDielectricConstant: function(dc) {\n dielectricConst = dc;\n },\n\n setRealisticDielectricEffect: function(r) {\n realisticDielectricEffect = r;\n },\n\n setSolventForceType: function(sft) {\n solventForceType = sft;\n },\n\n setDNAState: function(s) {\n // Don't store DNAState, it's not necessary. Just\n // information whether translation is in progress is useful.\n dnaTranslationInProgress = s.indexOf(\"translation:\") === 0;\n },\n\n setSolventForceFactor: function(sff) {\n solventForceFactor = sff;\n },\n\n setAdditionalSolventForceMult: function(asfm) {\n additionalSolventForceMult = asfm;\n },\n\n setAdditionalSolventForceThreshold: function(asft) {\n additionalSolventForceThreshold = asft;\n },\n\n // Our timekeeping is really a convenience for users of this lib, so let them reset time at will\n setTime: function(t) {\n time = t;\n },\n\n setDimensions: function(v) {\n // NB. We may want to create a simple state diagram for the md engine (as well as for the 'modeler' defined in\n // lab.molecules.js)\n if (sizeHasBeenInitialized) {\n throw new Error(\"The molecular model's size has already been set, and cannot be reset.\");\n }\n minX = v[0];\n minY = v[1];\n maxX = v[2];\n maxY = v[3];\n size = [maxX - minX, maxY - minY];\n sizeHasBeenInitialized = true;\n },\n\n getDimensions: function() {\n return [minX, minY, maxX, maxY];\n },\n\n getLJCalculator: function() {\n return ljCalculator;\n },\n\n setAtomProperties: function(i, props) {\n var cysteineEl = aminoacidsHelper.cysteineElement,\n key, amino, j;\n\n if (props.element !== undefined) {\n if (props.element < 0 || props.element >= N_elements) {\n throw new Error(\"md2d: Unknown element \" + props.element + \", an atom can't be created.\");\n }\n\n // Special case when cysteine AA is morphed into other AA type,\n // which can't create disulphide bonds. Remove a connected\n // disulphide bond if it exists.\n if (element[i] === cysteineEl && props.element !== cysteineEl) {\n for (j = 0; j < N_radialBonds; j++) {\n if ((radialBondAtom1Index[j] === i || radialBondAtom2Index[j] === i) &&\n radialBondType[j] === 109) {\n // Remove the radial bond representing disulphide bond.\n engine.removeRadialBond(j);\n // One cysteine can create only one disulphide bond so there is no need to continue the loop.\n break;\n }\n }\n }\n\n // Mark element as used by some atom (used by performance optimizations).\n elementUsed[props.element] = true;\n\n // Update mass and radius when element is changed.\n props.mass = elementMass[props.element];\n props.radius = elementRadius[props.element];\n\n if (aminoacidsHelper.isAminoAcid(props.element)) {\n amino = aminoacidsHelper.getAminoAcidByElement(props.element);\n // Setup properties which are relevant to amino acids.\n props.charge = amino.charge;\n // Note that we overwrite value set explicitly in the hash.\n // So, while setting element of atom, it's impossible to set also its charge.\n props.hydrophobicity = amino.hydrophobicity;\n }\n }\n\n // Update charged atoms list (performance optimization).\n if (!charge[i] && props.charge) {\n // !charge[i] => shortcut for charge[i] === 0 || charge[i] === undefined (both cases can occur).\n // props.charge => shortcut for props.charge !== undefined && props.charge !== 0.\n // Save index of charged atom.\n chargedAtomsList.push(i);\n } else if (charge[i] && props.charge === 0) {\n // charge[i] => shortcut for charge[i] !== undefined && charge[i] !== 0 (both cases can occur).\n // Remove index from charged atoms list.\n chargedAtomsList.splice(chargedAtomsList.indexOf(i), 1);\n }\n\n // Set all properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n atoms[key][i] = props[key];\n }\n }\n\n // Update properties which depend on other properties.\n px[i] = vx[i] * mass[i];\n py[i] = vy[i] * mass[i];\n speed[i] = Math.sqrt(vx[i] * vx[i] + vy[i] * vy[i]);\n },\n\n setRadialBondProperties: function(i, props, conserveAngularBondsEnergy) {\n var key, atom1, atom2;\n\n // Unset current radial bond matrix entry.\n // Matrix will be updated when new properties are set.\n atom1 = radialBondAtom1Index[i];\n atom2 = radialBondAtom2Index[i];\n if (radialBondMatrix[atom1] && radialBondMatrix[atom1][atom2])\n radialBondMatrix[atom1][atom2] = false;\n if (radialBondMatrix[atom2] && radialBondMatrix[atom2][atom1])\n radialBondMatrix[atom2][atom1] = false;\n\n bondedAtoms.unset(atom1, atom2);\n\n // If atom1 or atom2 properties are changed, remove related angular bonds.\n if ((props.atom1 !== undefined && props.atom1 !== atom1) ||\n (props.atom2 !== undefined && props.atom2 !== atom2)) {\n removeAngularBondsContaining(atom1, atom2, conserveAngularBondsEnergy);\n }\n\n // Set all properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n radialBonds[key][i] = props[key];\n }\n }\n\n // Update radial bond matrix.\n atom1 = radialBondAtom1Index[i];\n atom2 = radialBondAtom2Index[i];\n if (!radialBondMatrix[atom1]) radialBondMatrix[atom1] = [];\n radialBondMatrix[atom1][atom2] = true;\n if (!radialBondMatrix[atom2]) radialBondMatrix[atom2] = [];\n radialBondMatrix[atom2][atom1] = true;\n\n bondedAtoms.set(atom1, atom2);\n },\n\n setAngularBondProperties: function(i, props) {\n var key;\n // Set all properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n angularBonds[key][i] = props[key];\n }\n }\n },\n\n setRestraintProperties: function(i, props) {\n var key;\n // Set all properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n restraints[key][i] = props[key];\n }\n }\n },\n\n setElementProperties: function(i, properties) {\n var j, newRadius;\n // FIXME we cached mass into its own array, which is now probably unnecessary (position-update\n // calculations have since been speeded up by batching the computation of accelerations from\n // forces.) If we remove the mass[] array we also remove the need for the loop below:\n\n if (properties.mass != null && properties.mass !== elementMass[i]) {\n elementMass[i] = properties.mass;\n for (j = 0; j < N; j++) {\n if (element[j] === i) mass[j] = properties.mass;\n }\n }\n\n if (properties.sigma != null) {\n elementSigma[i] = properties.sigma;\n newRadius = lennardJones.radius(properties.sigma);\n\n if (elementRadius[i] !== newRadius) {\n elementRadius[i] = newRadius;\n for (j = 0; j < N; j++) {\n if (element[j] === i) radius[j] = newRadius;\n }\n }\n }\n\n if (properties.epsilon != null) elementEpsilon[i] = properties.epsilon;\n\n if (properties.color != null) {\n elementColor[i] = properties.color;\n }\n\n for (j = 0; j < N_elements; j++) {\n setPairwiseLJProperties(i, j);\n }\n // Reinitialize optimization structures, as sigma can be changed.\n initializeCellList();\n initializeNeighborList();\n },\n\n setPairwiseLJProperties: function(i, j) {\n // Call private (closure) version of this funcion.\n setPairwiseLJProperties(i, j);\n // Reinitialize optimization structures, as sigma can be changed.\n initializeCellList();\n initializeNeighborList();\n },\n\n setObstacleProperties: function(i, props) {\n var key;\n\n if (!engine.canPlaceObstacle(props.x, props.y, props.width, props.height, i))\n throw new Error(\"Obstacle can't be placed at \" + props.x + \", \" + props.y);\n\n // If position is manually changed, update previous\n // position also.\n if (props.x !== undefined) {\n props.xPrev = props.x;\n }\n if (props.y !== undefined) {\n props.yPrev = props.y;\n }\n // Try to parse mass, as it may be string \"Infinity\".\n if (typeof props.mass === 'string') {\n props.mass = parseFloat(props.mass);\n }\n\n // Set properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n obstacles[key][i] = props[key];\n }\n }\n },\n\n setShapeProperties: function(i, props) {\n var key;\n // Set properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n shapes[key][i] = props[key];\n }\n }\n },\n\n setLineProperties: function(i, props) {\n var key;\n // Set properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n lines[key][i] = props[key];\n }\n }\n },\n\n setElectricFieldProperties: function(i, props) {\n var key;\n // Set properties from props hash.\n for (key in props) {\n if (props.hasOwnProperty(key)) {\n electricFields[key][i] = props[key];\n }\n }\n },\n\n /**\n The canonical method for adding an atom to the collections of atoms.\n\n If there isn't enough room in the 'atoms' array, it (somewhat inefficiently)\n extends the length of the typed arrays by ten to have room for more atoms.\n\n @returns the index of the new atom\n */\n addAtom: function(props) {\n if (N + 1 > atoms.x.length) {\n utils.extendArrays(atoms, Math.round(N * 1.5 + 10));\n assignShortcutReferences.atoms();\n }\n\n // Set acceleration of new atom to zero.\n props.ax = props.ay = 0;\n\n // Remove any stray value from charge--setAtomProperties updates chargedAtomsList based on\n // whether the atom was charged previously.\n charge[N] = 0;\n\n // Set provided properties of new atom.\n engine.setAtomProperties(N, props);\n\n // Increase number of atoms.\n N++;\n\n // Initialize helper structures for optimizations.\n initializeCellList();\n initializeNeighborList();\n },\n\n removeAtom: function(idx) {\n var i, len, prop,\n l, list, lists;\n\n if (idx >= N) {\n throw new Error(\"Atom \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n // Start from removing all bonds connected to this atom.\n // Note that we are removing only radial bonds. Angular bonds\n // will be removed while removing radial bond, not atom!\n\n // Use such \"strange\" form of loop, as while removing one bonds,\n // other change their indexing. So, after removal of bond 5, we\n // should check bond 5 again, as it would be another bond (previously\n // indexed as 6).\n i = 0;\n while (i < N_radialBonds) {\n if (radialBondAtom1Index[i] === idx || radialBondAtom2Index[i] === idx)\n engine.removeRadialBond(i);\n else\n i++;\n }\n\n // Try to remove atom from charged atoms list.\n i = chargedAtomsList.indexOf(idx);\n if (i !== -1) {\n arrays.remove(chargedAtomsList, i);\n }\n\n // Finally, remove atom.\n\n // Shift atoms properties and zero last element.\n // It can be optimized by just replacing the last\n // atom with atom 'i', however this approach\n // preserves more expectable atoms indexing.\n for (i = idx; i < N; i++) {\n for (prop in atoms) {\n if (atoms.hasOwnProperty(prop)) {\n if (i === N - 1)\n atoms[prop][i] = 0;\n else\n atoms[prop][i] = atoms[prop][i + 1];\n }\n }\n }\n\n // Update number of atoms!\n N--;\n\n // Shift indices of atoms in various lists.\n lists = [\n chargedAtomsList,\n radialBondAtom1Index, radialBondAtom2Index,\n angularBondAtom1Index, angularBondAtom2Index, angularBondAtom3Index\n ];\n\n for (l = 0; l < lists.length; l++) {\n list = lists[l];\n for (i = 0, len = list.length; i < len; i++) {\n if (list[i] > idx)\n list[i]--;\n }\n }\n\n // Recalculate radial bond matrix and bonded atoms lists, as indices have changed.\n radialBondMatrix.reset();\n bondedAtoms.reset();\n\n // (Re)initialize helper structures for optimizations.\n initializeCellList();\n initializeNeighborList();\n\n neighborList.invalidate();\n\n // Update accelerations of atoms.\n updateParticlesAccelerations();\n },\n\n /**\n The canonical method for adding an element.\n */\n addElement: function(props) {\n var i;\n\n if (N_elements >= elementEpsilon.length) {\n utils.extendArrays(elements, N_elements + 10);\n assignShortcutReferences.elements();\n }\n\n elementMass[N_elements] = props.mass;\n elementEpsilon[N_elements] = props.epsilon;\n elementSigma[N_elements] = props.sigma;\n elementRadius[N_elements] = lennardJones.radius(props.sigma);\n elementColor[N_elements] = props.color;\n\n ljCalculator[N_elements] = [];\n cutoffDistance_LJ_sq[N_elements] = [];\n cutoffNeighborListSquared[N_elements] = [];\n\n for (i = 0; i <= N_elements; i++) {\n setPairwiseLJProperties(N_elements, i);\n }\n // Note that we don't have to reinitialize optimization\n // structures (cell lists and neighbor list). They are\n // based only on the properties of *used* elements, so\n // adding a new atom should trigger reinitialization instead.\n\n N_elements++;\n },\n\n /**\n The canonical method for adding a radial bond to the collection of radial bonds.\n */\n addRadialBond: function(props) {\n if (N_radialBonds + 1 > radialBondAtom1Index.length) {\n utils.extendArrays(radialBonds, N_radialBonds + 10);\n assignShortcutReferences.radialBonds();\n }\n\n N_radialBonds++;\n\n // Set new radial bond properties.\n engine.setRadialBondProperties(N_radialBonds - 1, props);\n\n radialBondsChanged = true;\n },\n\n removeRadialBond: function(idx, conserveAngularBondsEnergy) {\n var i, prop;\n\n if (idx >= N_radialBonds) {\n throw new Error(\"Radial bond \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n // Start from removing angular bonds.\n removeAngularBondsContaining(radialBondAtom1Index[idx], radialBondAtom2Index[idx], conserveAngularBondsEnergy);\n\n // Update optimization structure.\n bondedAtoms.unset(radialBondAtom1Index[idx], radialBondAtom2Index[idx]);\n\n // Shift radial bonds properties and zero last element.\n // It can be optimized by just replacing the last\n // radial bond with radial bond 'i', however this approach\n // preserves more expectable indexing.\n // TODO: create some general function for that, as it's duplicated\n // in each removeObject method.\n for (i = idx; i < N_radialBonds; i++) {\n for (prop in radialBonds) {\n if (radialBonds.hasOwnProperty(prop)) {\n if (i === N_radialBonds - 1)\n radialBonds[prop][i] = 0;\n else\n radialBonds[prop][i] = radialBonds[prop][i + 1];\n }\n }\n }\n\n N_radialBonds--;\n\n // Recalculate radial bond matrix as bond indices have changed.\n radialBondMatrix.reset();\n\n radialBondsChanged = true;\n },\n\n /**\n The canonical method for adding an 'restraint' bond to the collection of restraints.\n\n If there isn't enough room in the 'restraints' array, it (somewhat inefficiently)\n extends the length of the typed arrays by ten to have room for more bonds.\n */\n addRestraint: function(props) {\n if (N_restraints + 1 > restraints.atomIndex.length) {\n utils.extendArrays(restraints, N_restraints + 10);\n assignShortcutReferences.restraints();\n }\n\n N_restraints++;\n\n // Set new restraint properties.\n engine.setRestraintProperties(N_restraints - 1, props);\n },\n\n /**\n The canonical method for adding an angular bond to the collection of angular bonds.\n\n If there isn't enough room in the 'angularBonds' array, it (somewhat inefficiently)\n extends the length of the typed arrays by ten to have room for more bonds.\n */\n addAngularBond: function(props) {\n if (N_angularBonds + 1 > angularBonds.atom1.length) {\n utils.extendArrays(angularBonds, N_angularBonds + 10);\n assignShortcutReferences.angularBonds();\n }\n\n N_angularBonds++;\n\n // Set new angular bond properties.\n engine.setAngularBondProperties(N_angularBonds - 1, props);\n },\n\n removeAngularBond: function(idx, conserveEnergy) {\n var i, prop, a1, a2, a3, angleDiff;\n\n if (idx >= N_angularBonds) {\n throw new Error(\"Angular bond \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n if (conserveEnergy) {\n a1 = angularBondAtom1Index[idx];\n a2 = angularBondAtom2Index[idx];\n a3 = angularBondAtom3Index[idx];\n angleDiff = angularBondAngle[idx] - math.getAngleBetweenVec(x[a1], y[a1],\n x[a2], y[a2],\n x[a3], y[a3]);\n engine.addKEToAtoms(0.5 * angularBondStrength[idx] * angleDiff * angleDiff, a1, a2, a3);\n }\n\n // Shift angular bonds properties and zero last element.\n // It can be optimized by just replacing the last\n // angular bond with angular bond 'i', however this approach\n // preserves more expectable indexing.\n // TODO: create some general function for that, as it's duplicated\n // in each removeObject method.\n for (i = idx; i < N_angularBonds; i++) {\n for (prop in angularBonds) {\n if (angularBonds.hasOwnProperty(prop)) {\n if (i === N_angularBonds - 1)\n angularBonds[prop][i] = 0;\n else\n angularBonds[prop][i] = angularBonds[prop][i + 1];\n }\n }\n }\n\n N_angularBonds--;\n },\n\n /**\n Adds a spring force between an atom and an x, y location.\n\n @returns the index of the new spring force.\n */\n addSpringForce: function(atomIndex, x, y, strength) {\n // conservatively just add one spring force\n if (N_springForces + 1 > springForces[0].length) {\n utils.extendArrays(springForces, N_springForces + 1);\n assignShortcutReferences.springForces();\n }\n\n springForceAtomIndex[N_springForces] = atomIndex;\n springForceX[N_springForces] = x;\n springForceY[N_springForces] = y;\n springForceStrength[N_springForces] = strength;\n\n return N_springForces++;\n },\n\n updateSpringForce: function(i, x, y) {\n springForceX[i] = x;\n springForceY[i] = y;\n },\n\n removeSpringForce: function(idx) {\n var i, j;\n\n if (idx >= N_springForces) {\n throw new Error(\"Spring force \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n N_springForces--;\n\n // Shift spring forces properties.\n for (i = idx; i < N_springForces; i++) {\n for (j = 0; j < 4; j++) {\n springForces[j][i] = springForces[j][i + 1];\n }\n }\n },\n\n springForceAtomIndex: function(i) {\n return springForceAtomIndex[i];\n },\n\n addObstacle: function(props) {\n if (!engine.canPlaceObstacle(props.x, props.y, props.width, props.height))\n throw new Error(\"Obstacle can't be placed at \" + props.x + \", \" + props.y + \".\");\n\n if (N_obstacles + 1 > obstacles.x.length) {\n // Extend arrays each time (as there are only\n // a few obstacles in typical model).\n utils.extendArrays(obstacles, N_obstacles + 1);\n assignShortcutReferences.obstacles();\n }\n\n N_obstacles++;\n\n // Set properties of new obstacle.\n engine.setObstacleProperties(N_obstacles - 1, props);\n },\n\n removeObstacle: function(idx) {\n var i, prop;\n\n if (idx >= N_obstacles) {\n throw new Error(\"Obstacle \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n N_obstacles--;\n\n // Shift obstacles properties.\n // It can be optimized by just replacing the last\n // obstacle with obstacle 'i', however this approach\n // preserves more expectable obstacles indexing.\n for (i = idx; i < N_obstacles; i++) {\n for (prop in obstacles) {\n if (obstacles.hasOwnProperty(prop)) {\n obstacles[prop][i] = obstacles[prop][i + 1];\n }\n }\n }\n\n // FIXME: This shouldn't be necessary, however various modules\n // (e.g. views) use obstacles.x.length as the real number of obstacles.\n utils.extendArrays(obstacles, N_obstacles);\n assignShortcutReferences.obstacles();\n },\n\n addShape: function(props) {\n if (N_shapes + 1 > shapes.x.length) {\n // Extend arrays each time (as there are only\n // a few shapes in typical model).\n utils.extendArrays(shapes, N_shapes + 1);\n assignShortcutReferences.shapes();\n }\n\n N_shapes++;\n\n // Set properties of new shape.\n engine.setShapeProperties(N_shapes - 1, props);\n },\n\n removeShape: function(idx) {\n var i, prop;\n\n if (idx >= N_shapes) {\n throw new Error(\"Shape \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n // Remove all electric fields connected with this shape.\n\n // Use such \"strange\" form of loop, as while removing one electric field,\n // other change their indexing. So, after removal of field 5, we\n // should check field 5 again, as it would be another field (previously\n // indexed as 6).\n i = 0;\n while (i < N_electricFields) {\n if (electricFieldShapeIdx[i] === idx)\n engine.removeElectricField(i);\n else\n i++;\n }\n\n N_shapes--;\n\n // Shift shapes properties.\n // It can be optimized by just replacing the last\n // shape with shape 'i', however this approach\n // preserves more expectable shapes indexing.\n for (i = idx; i < N_shapes; i++) {\n for (prop in shapes) {\n if (shapes.hasOwnProperty(prop)) {\n shapes[prop][i] = shapes[prop][i + 1];\n }\n }\n }\n\n // Shift indices of shapes referenced by electric fields.\n for (i = 0; i < N_electricFields; i++) {\n if (electricFieldShapeIdx[i] > idx)\n electricFieldShapeIdx[i]--;\n }\n\n // FIXME: This shouldn't be necessary, however various modules\n // (e.g. views) use shapes.x.length as the real number of shapes.\n utils.extendArrays(shapes, N_shapes);\n assignShortcutReferences.shapes();\n },\n\n addLine: function(props) {\n if (N_lines + 1 > lines.x1.length) {\n // Extend arrays each time (as there are only\n // a few lines in typical model).\n utils.extendArrays(lines, N_lines + 1);\n assignShortcutReferences.lines();\n }\n\n N_lines++;\n\n // Set properties of new line.\n engine.setLineProperties(N_lines - 1, props);\n },\n\n removeLine: function(idx) {\n var i, prop;\n\n if (idx >= N_lines) {\n throw new Error(\"Line \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n // Shift lines properties.\n // It can be optimized by just replacing the last\n // shape with shape 'i', however this approach\n // preserves more expectable lines indexing.\n for (i = idx; i < N_lines; i++) {\n for (prop in lines) {\n if (lines.hasOwnProperty(prop)) {\n lines[prop][i] = lines[prop][i + 1];\n }\n }\n }\n\n N_lines--;\n\n // FIXME: This shouldn't be necessary, however various modules\n // (e.g. views) use lines.x1.length as the real number of lines.\n utils.extendArrays(lines, N_lines);\n assignShortcutReferences.lines();\n },\n\n addElectricField: function(props) {\n if (N_electricFields + 1 > electricFields.intensity.length) {\n // Extend arrays each time (as there are only\n // a few electricFields in typical model).\n utils.extendArrays(electricFields, N_electricFields + 1);\n assignShortcutReferences.electricFields();\n }\n\n N_electricFields++;\n\n // Set properties of new shape.\n engine.setElectricFieldProperties(N_electricFields - 1, props);\n },\n\n removeElectricField: function(idx) {\n var i, prop;\n\n if (idx >= N_electricFields) {\n throw new Error(\"Electric field \" + idx + \" doesn't exist, so it can't be removed.\");\n }\n\n N_electricFields--;\n\n // Shift electric fields properties.\n for (i = idx; i < N_electricFields; i++) {\n for (prop in electricFields) {\n if (electricFields.hasOwnProperty(prop)) {\n electricFields[prop][i] = electricFields[prop][i + 1];\n }\n }\n }\n\n // Follow convention of other engine objects whose array is reduced after removal.\n utils.extendArrays(electricFields, N_electricFields);\n assignShortcutReferences.electricFields();\n },\n\n atomInBounds: function(_x, _y, i) {\n var r = radius[i],\n j;\n\n if (_x < r || _x > size[0] - r || _y < r || _y > size[1] - r) {\n return false;\n }\n for (j = 0; j < N_obstacles; j++) {\n if (_x > (obstacleX[j] - r) && _x < (obstacleX[j] + obstacleWidth[j] + r) &&\n _y > (obstacleY[j] - r) && _y < (obstacleY[j] + obstacleHeight[j] + r)) {\n return false;\n }\n }\n return true;\n },\n\n /**\n Checks to see if an uncharged atom could be placed at location x,y\n without increasing the PE (i.e. overlapping with another atom), and\n without being on an obstacle or past a wall.\n\n Optionally, an atom index i can be included which will tell the function\n to ignore the existance of atom i. (Used when moving i around.)\n */\n canPlaceAtom: function(element, _x, _y, i, skipPECheck) {\n var orig_x,\n orig_y,\n PEAtLocation,\n testX, testY, testXMax, testYMax,\n j;\n\n // first do the simpler check to see if we're outside the walls\n if (!engine.atomInBounds(_x, _y, i)) {\n return false;\n }\n\n // Check collision with obstacles.\n for (j = 0; j < N_obstacles; j++) {\n testX = obstacleX[j];\n testY = obstacleY[j];\n testXMax = testX + obstacleWidth[j];\n testYMax = testY + obstacleHeight[j];\n if ((_x > testX && _x < testXMax) &&\n (_y > testY && _y < testYMax)) {\n return false;\n }\n }\n\n if (skipPECheck) {\n return true;\n }\n\n // then check PE at location\n if (typeof i === \"number\") {\n orig_x = x[i];\n orig_y = y[i];\n x[i] = y[i] = Infinity; // move i atom away\n }\n\n PEAtLocation = engine.newPotentialCalculator(element, 0, false)(_x, _y);\n\n if (typeof i === \"number\") {\n x[i] = orig_x;\n y[i] = orig_y;\n }\n\n return PEAtLocation <= 0;\n },\n\n /**\n Checks to see if an obstacle could be placed at location x, y\n without being on an atom, another obstacle or past a wall.\n\n idx parameter is optional. It should be defined and equal to id\n of an existing obstacle when the existing obstacle should be checked.\n It prevents an algorithm from comparing the obstacle with itself during\n collisions detection.\n */\n canPlaceObstacle: function(obsX, obsY, obsWidth, obsHeight, idx) {\n var obsXMax = obsX + obsWidth,\n obsYMax = obsY + obsHeight,\n testX, testY, testXMax, testYMax,\n r, i;\n\n // Check collision with walls.\n if (obsX < 0 || obsXMax > size[0] || obsY < 0 || obsYMax > size[0]) {\n return false;\n }\n\n // Check collision with atoms.\n for (i = 0; i < N; i++) {\n r = radius[i];\n if (x[i] > (obsX - r) && x[i] < (obsXMax + r) &&\n y[i] > (obsY - r) && y[i] < (obsYMax + r)) {\n return false;\n }\n }\n\n // Check collision with other obstacles.\n for (i = 0; i < N_obstacles; i++) {\n if (idx !== undefined && idx === i) {\n // If we are checking existing obstacle,\n // avoid comparing it with itself.\n continue;\n }\n testX = obstacleX[i];\n testY = obstacleY[i];\n testXMax = testX + obstacleWidth[i];\n testYMax = testY + obstacleHeight[i];\n if ((obsXMax > testX && obsX < testXMax) &&\n (obsYMax > testY && obsY < testYMax)) {\n return false;\n }\n }\n\n return true;\n },\n\n setupAtomsRandomly: function(options) {\n\n var // if a temperature is not explicitly requested, we just need any nonzero number\n temperature = options.temperature || 100,\n\n nrows = Math.floor(Math.sqrt(N)),\n ncols = Math.ceil(N / nrows),\n\n i, r, c, rowSpacing, colSpacing,\n vMagnitude, vDirection, props;\n\n validateTemperature(temperature);\n\n colSpacing = size[0] / (1 + ncols);\n rowSpacing = size[1] / (1 + nrows);\n\n // Arrange molecules in a lattice. Not guaranteed to have CM exactly on center, and is an artificially low-energy\n // configuration. But it works OK for now.\n i = -1;\n\n for (r = 1; r <= nrows; r++) {\n for (c = 1; c <= ncols; c++) {\n i++;\n if (i === N) break;\n vMagnitude = math.normal(1, 1 / 4);\n vDirection = 2 * Math.random() * Math.PI;\n\n props = {\n element: Math.floor(Math.random() * options.userElements), // random element\n x: c * colSpacing,\n y: r * rowSpacing,\n vx: vMagnitude * Math.cos(vDirection),\n vy: vMagnitude * Math.sin(vDirection),\n charge: 2 * (i % 2) - 1 // alternate negative and positive charges\n };\n engine.setAtomProperties(i, props);\n }\n }\n\n // now, remove all translation of the center of mass and rotation about the center of mass\n computeCMMotion();\n removeTranslationAndRotationFromVelocities();\n\n // Scale randomized velocities to match the desired initial temperature.\n //\n // Note that although the instantaneous temperature will be 'temperature' exactly, the temperature will quickly\n // settle to a lower value because we are initializing the atoms spaced far apart, in an artificially low-energy\n // configuration.\n //\n adjustTemperature(temperature, true);\n },\n\n getVdwPairsArray: function() {\n var i,\n j,\n dx,\n dy,\n r_sq,\n x_i,\n y_i,\n sigma_i,\n epsilon_i,\n sigma_j,\n epsilon_j,\n index_i,\n index_j,\n sig,\n eps,\n distanceCutoff_sq = vdwLinesRatio * vdwLinesRatio;\n\n N_vdwPairs = 0;\n\n for (i = 0; i < N; i++) {\n // pairwise interactions\n index_i = element[i];\n sigma_i = elementSigma[index_i];\n epsilon_i = elementSigma[index_i];\n x_i = x[i];\n y_i = y[i];\n\n for (j = i + 1; j < N; j++) {\n if (N_radialBonds !== 0 && (radialBondMatrix[i] && radialBondMatrix[i][j])) continue;\n\n index_j = element[j];\n sigma_j = elementSigma[index_j];\n epsilon_j = elementSigma[index_j];\n\n if (charge[i] * charge[j] <= 0) {\n dx = x[j] - x_i;\n dy = y[j] - y_i;\n r_sq = dx * dx + dy * dy;\n\n\n sig = 0.5 * (sigma_i + sigma_j);\n sig *= sig;\n eps = epsilon_i * epsilon_j;\n\n if (r_sq < sig * distanceCutoff_sq && eps > 0) {\n if (N_vdwPairs + 1 > vdwPairs.atom1.length) {\n utils.extendArrays(vdwPairs, (N_vdwPairs + 1) * 2);\n assignShortcutReferences.vdwPairs();\n }\n vdwPairAtom1Index[N_vdwPairs] = i;\n vdwPairAtom2Index[N_vdwPairs] = j;\n N_vdwPairs++;\n }\n }\n }\n }\n\n vdwPairs.count = N_vdwPairs;\n return vdwPairs;\n },\n\n // Velocity Verlet integration scheme.\n // See: http://en.wikipedia.org/wiki/Verlet_integration#Velocity_Verlet\n // The current implementation is:\n // 1. Calculate: v(t + 0.5 * dt) = v(t) + 0.5 * a(t) * dt\n // 2. Calculate: r(t + dt) = r(t) + v(t + 0.5 * dt) * dt\n // 3. Derive a(t + dt) from the interaction potential using r(t + dt)\n // 4. Calculate: v(t + dt) = v(t + 0.5 * dt) + 0.5 * a(t + dt) * dt\n integrate: function(duration, _dt) {\n var steps, iloop, tStart = time;\n\n // How much time to integrate over, in fs.\n if (duration === undefined) duration = 100;\n\n // The length of an integration timestep, in fs.\n if (_dt === undefined) _dt = 1;\n\n dt = _dt; // dt is a closure variable that helpers need access to\n dt_sq = dt * dt; // the squared time step is also needed by some helpers.\n\n // Clear flag indicating if some radial bonds were added or removed during the integration\n // step.\n radialBondsChanged = false;\n\n // Prepare optimization structures to ensure that they are valid during integration.\n // Note that when user adds or removes various objects (like atoms, bonds), such structures\n // can become invalid. That's why we update them each time before integration.\n // It's also safer and easier to do recalculate each structure than to modify it while\n // engine state is changed by user.\n calculateOptimizationStructures();\n\n // Calculate accelerations a(t), where t = 0.\n // Later this is not necessary, as a(t + dt) from\n // previous step is used as a(t) in the current step.\n if (time === 0) {\n updateParticlesAccelerations();\n }\n\n // Number of steps.\n steps = Math.floor(duration / dt);\n\n // Zero values of pressure probes at the beginning of\n // each integration step.\n zeroPressureValues();\n\n // Clear the acceleration and velocity for pinned atoms, as we may have updated\n // acceleration prior to entering integrate() (e.g. in readModelState).\n pinAtoms();\n\n for (iloop = 1; iloop <= steps; iloop++) {\n time = tStart + iloop * dt;\n\n // Calculate v(t + 0.5 * dt) using v(t) and a(t).\n halfUpdateVelocity();\n\n // Update r(t + dt) using v(t + 0.5 * dt).\n updateParticlesPosition();\n\n // Accumulate accelerations into a(t + dt) from all possible interactions, fields\n // and forces connected with atoms.\n updateParticlesAccelerations();\n\n // Clear the acceleration and velocity for pinned atoms before moving them.\n pinAtoms();\n\n // Calculate v(t + dt) using v(t + 0.5 * dt) and a(t + dt).\n halfUpdateVelocity();\n\n // Now that we have velocity v(t + dt), update speed.\n updateParticlesSpeed();\n\n // Move obstacles using very simple integration.\n updateObstaclesPosition();\n\n // If solvent is different from vacuum (water or oil), ensure that\n // the total momentum of each molecule is equal to zero. This\n // prevents amino acids chains from drifting towards one boundary of\n // the model. Don't do it during translation process to let the protein\n // freely fold.\n if (solventForceType !== 0 && !dnaTranslationInProgress) {\n zeroTotalMomentumOfMolecules();\n }\n\n pluginController.callPluginFunction('performActionWithinIntegrationLoop', [neighborList, dt, time]);\n\n // Adjust temperature, e.g. when heat bath is enabled.\n adjustTemperature();\n } // end of integration loop\n\n // Collisions between particles and obstacles are collected during\n // updateParticlesPosition() execution. This function takes into account\n // time which passed and converts raw data from pressure probes to value\n // in Bars.\n calculateFinalPressureValues(duration);\n\n // After each integration loop try to create new disulfide bonds between cysteines.\n // It's enough to do it outside the inner integration loop (performance).\n createDisulfideBonds();\n },\n\n updateParticlesAccelerations: updateParticlesAccelerations,\n\n // Minimize energy using steepest descend method.\n minimizeEnergy: function() {\n // Maximal length of displacement during one step of minimization.\n var stepLength = 1e-3,\n // Maximal acceleration allowed.\n accThreshold = 1e-4,\n // Maximal number of iterations allowed.\n iterLimit = 3000,\n maxAcc, delta, xPrev, yPrev, i, iter;\n\n // Calculate accelerations.\n updateParticlesAccelerations();\n pinAtoms();\n // Get maximum value.\n maxAcc = 0;\n for (i = 0; i < N; i++) {\n if (maxAcc < Math.abs(ax[i]))\n maxAcc = Math.abs(ax[i]);\n if (maxAcc < Math.abs(ay[i]))\n maxAcc = Math.abs(ay[i]);\n }\n\n iter = 0;\n while (maxAcc > accThreshold && iter < iterLimit) {\n iter++;\n\n delta = stepLength / maxAcc;\n for (i = 0; i < N; i++) {\n xPrev = x[i];\n yPrev = y[i];\n x[i] += ax[i] * delta;\n y[i] += ay[i] * delta;\n\n // Keep atoms in bounds.\n bounceParticleOffWalls(i);\n // Bounce off obstacles, but DO NOT update pressure probes.\n bounceParticleOffObstacles(i, xPrev, yPrev, false);\n // Bounce off shapes\n bounceParticleOffShapes(i, xPrev, yPrev);\n // Bounce off lines\n bounceParticleOffLines(i, xPrev, yPrev);\n }\n\n // Calculate accelerations.\n updateParticlesAccelerations();\n pinAtoms();\n // Get maximum value.\n maxAcc = 0;\n for (i = 0; i < N; i++) {\n if (maxAcc < Math.abs(ax[i]))\n maxAcc = Math.abs(ax[i]);\n if (maxAcc < Math.abs(ay[i]))\n maxAcc = Math.abs(ay[i]);\n }\n }\n },\n\n getRadialBondsForAtom: function(index) {\n var rbonds = [],\n i,\n i1,\n i2;\n\n for (i = 0; i < N_radialBonds; i++) {\n i1 = radialBondAtom1Index[i];\n i2 = radialBondAtom2Index[i];\n if (index === i1 || index === i2) {\n rbonds.push(i);\n }\n }\n return rbonds;\n },\n\n getAngularBondsForAtom: function(index) {\n var abonds = [],\n i,\n i1,\n i2,\n i3;\n\n for (i = 0; i < N_angularBonds; i++) {\n i1 = angularBondAtom1Index[i];\n i2 = angularBondAtom2Index[i];\n i3 = angularBondAtom3Index[i];\n if (index === i1 || index === i2 || index === i3) {\n abonds.push(i);\n }\n }\n return abonds;\n },\n\n // Total mass of all particles in the system, in Dalton (atomic mass units).\n getTotalMass: function() {\n var totalMass = 0,\n i;\n for (i = 0; i < N; i++) {\n totalMass += mass[i];\n }\n return totalMass;\n },\n\n getRadiusOfElement: function(el) {\n return elementRadius[el];\n },\n\n getNumberOfAtoms: function() {\n return N;\n },\n\n getNumberOfElements: function() {\n return N_elements;\n },\n\n getNumberOfObstacles: function() {\n return N_obstacles;\n },\n\n getNumberOfShapes: function() {\n return N_shapes;\n },\n\n getNumberOfLines: function() {\n return N_lines;\n },\n\n getNumberOfRadialBonds: function() {\n return N_radialBonds;\n },\n\n getNumberOfAngularBonds: function() {\n return N_angularBonds;\n },\n\n getNumberOfRestraints: function() {\n return N_restraints;\n },\n\n getNumberOfSpringForces: function() {\n return N_springForces;\n },\n\n getNumberOfElectricFields: function() {\n return N_electricFields;\n },\n\n /**\n Compute the model state and store into the passed-in 'state' object.\n (Avoids GC hit of throwaway object creation.)\n */\n // TODO: [refactoring] divide this function into smaller chunks?\n computeOutputState: function(state) {\n var i, j, e,\n i1, i2, i3,\n el1, el2,\n dx, dy,\n dxij, dyij, dxkj, dykj,\n cosTheta, theta, rect,\n r_sq, rij, rkj,\n k, dr, angleDiff,\n elInMWUnits,\n gravPEInMWUnits,\n // Total kinetic energy, in MW units.\n KEinMWUnits,\n // Potential energy, in eV.\n PE;\n\n // Calculate potentials in eV. Note that we only want to do this once per call to integrate(), not once per\n // integration loop!\n PE = 0;\n KEinMWUnits = 0;\n\n for (i = 0; i < N; i++) {\n\n // gravitational PE\n if (gravitationalField) {\n gravPEInMWUnits = mass[i] * gravitationalField * y[i];\n PE += constants.convert(gravPEInMWUnits, {\n from: unit.MW_ENERGY_UNIT,\n to: unit.EV\n });\n }\n\n // electric field PE\n for (e = 0; e < N_electricFields; e++) {\n rect = electricFieldShapeIdx[e];\n if (rect != null && !rectContains(rect, x[i], y[i])) continue;\n elInMWUnits = charge[i] * getElFieldForce(e);\n switch (electricFieldOrientation[e]) {\n case \"N\":\n case \"S\":\n elInMWUnits *= (rect != null ? shapeY[rect] : minY) - y[i];\n break;\n case \"W\":\n case \"E\":\n elInMWUnits *= (rect != null ? shapeX[rect] : minX) - x[i];\n break;\n }\n PE += constants.convert(elInMWUnits, {\n from: unit.MW_ENERGY_UNIT,\n to: unit.EV\n });\n }\n\n KEinMWUnits += 0.5 * mass[i] * (vx[i] * vx[i] + vy[i] * vy[i]);\n\n // pairwise interactions\n for (j = i + 1; j < N; j++) {\n dx = x[j] - x[i];\n dy = y[j] - y[i];\n\n r_sq = dx * dx + dy * dy;\n\n // FIXME the signs here don't really make sense\n if (useLennardJonesInteraction) {\n PE -= ljCalculator[element[i]][element[j]].potentialFromSquaredDistance(r_sq);\n }\n if (useCoulombInteraction && chargedAtomsList.length > 0) {\n PE += coulomb.potential(Math.sqrt(r_sq), charge[i], charge[j], dielectricConst, realisticDielectricEffect);\n }\n }\n }\n\n // radial bonds\n for (i = 0; i < N_radialBonds; i++) {\n i1 = radialBondAtom1Index[i];\n i2 = radialBondAtom2Index[i];\n el1 = element[i1];\n el2 = element[i2];\n\n dx = x[i2] - x[i1];\n dy = y[i2] - y[i1];\n r_sq = dx * dx + dy * dy;\n\n // eV/nm^2\n k = radialBondStrength[i];\n\n // nm\n dr = Math.sqrt(r_sq) - radialBondLength[i];\n\n PE += 0.5 * k * dr * dr;\n\n // Remove the Lennard Jones potential for the bonded pair\n if (useLennardJonesInteraction) {\n PE += ljCalculator[el1][el2].potentialFromSquaredDistance(r_sq);\n }\n if (useCoulombInteraction && charge[i1] && charge[i2]) {\n PE -= coulomb.potential(Math.sqrt(r_sq), charge[i1], charge[i2], dielectricConst, realisticDielectricEffect);\n }\n }\n\n // Angular bonds.\n for (i = 0; i < N_angularBonds; i++) {\n i1 = angularBondAtom1Index[i];\n i2 = angularBondAtom2Index[i];\n i3 = angularBondAtom3Index[i];\n\n // Calculate angle (theta) between two vectors:\n // Atom1-Atom3 and Atom2-Atom3\n // Atom1 -> i, Atom2 -> k, Atom3 -> j\n dxij = x[i1] - x[i3];\n dxkj = x[i2] - x[i3];\n dyij = y[i1] - y[i3];\n dykj = y[i2] - y[i3];\n rij = Math.sqrt(dxij * dxij + dyij * dyij);\n rkj = Math.sqrt(dxkj * dxkj + dykj * dykj);\n // Calculate cos using dot product definition.\n cosTheta = (dxij * dxkj + dyij * dykj) / (rij * rkj);\n if (cosTheta > 1.0) cosTheta = 1.0;\n else if (cosTheta < -1.0) cosTheta = -1.0;\n theta = Math.acos(cosTheta);\n\n // Finally, update PE.\n // radian\n angleDiff = theta - angularBondAngle[i];\n // angularBondStrength unit: eV/radian^2\n PE += 0.5 * angularBondStrength[i] * angleDiff * angleDiff;\n }\n\n // update PE for 'restraint' bonds\n for (i = 0; i < N_restraints; i++) {\n i1 = restraintAtomIndex[i];\n el1 = element[i1];\n\n dx = restraintX0[i] - x[i1];\n dy = restraintY0[i] - y[i1];\n r_sq = dx * dx + dy * dy;\n\n // eV/nm^2\n k = restraintK[i];\n\n // nm\n dr = Math.sqrt(r_sq);\n\n PE += 0.5 * k * dr * dr;\n }\n\n // Process all obstacles.\n for (i = 0; i < N_obstacles; i++) {\n\n if (obstacleMass[i] !== Infinity) {\n // Gravitational potential energy.\n if (gravitationalField) {\n gravPEInMWUnits = obstacleMass[i] * gravitationalField * obstacleY[i];\n PE += constants.convert(gravPEInMWUnits, {\n from: unit.MW_ENERGY_UNIT,\n to: unit.EV\n });\n }\n // Kinetic energy.\n KEinMWUnits += 0.5 * obstacleMass[i] *\n (obstacleVX[i] * obstacleVX[i] + obstacleVY[i] * obstacleVY[i]);\n }\n }\n\n // Update temperature.\n T = convertKEtoT(KEinMWUnits, N);\n\n // \"macro\" state\n state.time = time;\n state.PE = PE;\n state.KE = constants.convert(KEinMWUnits, {\n from: unit.MW_ENERGY_UNIT,\n to: unit.EV\n });\n state.temperature = T;\n state.pCM = [px_CM, py_CM]; // TODO: GC optimization? New array created each time.\n state.CM = [x_CM, y_CM];\n state.vCM = [vx_CM, vy_CM];\n state.omega_CM = omega_CM;\n\n // \"micro\" state. TODO: put radial bonds, etc here.\n // TODO2: do we really need to put all objects here? Can't modeler ask about interesting\n // arrays using just some getter or property, e.g.: engine.getAtoms() or engine.atoms?\n state.atoms = atoms;\n state.radialBonds = radialBonds;\n\n // Let plugins modify output state, e.g. PE, KE etc.\n pluginController.callPluginFunction('processOutputState', [state]);\n },\n\n\n /**\n Given a test element and charge, returns a function that returns for a location (x, y) in nm:\n * the potential energy, in eV, of an atom of that element and charge at location (x, y)\n * optionally, if calculateGradient is true, the gradient of the potential as an\n array [gradX, gradY]. (units: eV/nm)\n */\n newPotentialCalculator: function(testElement, testCharge, calculateGradient) {\n\n return function(testX, testY) {\n var PE = 0,\n fx = 0,\n fy = 0,\n gradX,\n gradY,\n ljTest = ljCalculator[testElement],\n i,\n dx,\n dy,\n r_sq,\n r,\n f_over_r,\n lj;\n\n for (i = 0; i < N; i++) {\n dx = testX - x[i];\n dy = testY - y[i];\n r_sq = dx * dx + dy * dy;\n f_over_r = 0;\n\n if (useLennardJonesInteraction) {\n lj = ljTest[element[i]];\n PE += -lj.potentialFromSquaredDistance(r_sq, testElement, element[i]);\n if (calculateGradient) {\n f_over_r += lj.forceOverDistanceFromSquaredDistance(r_sq);\n }\n }\n\n if (useCoulombInteraction && chargedAtomsList.length > 0 && testCharge) {\n r = Math.sqrt(r_sq);\n PE += -coulomb.potential(r, testCharge, charge[i], dielectricConst, realisticDielectricEffect);\n if (calculateGradient) {\n f_over_r += coulomb.forceOverDistanceFromSquaredDistance(r_sq, testCharge, charge[i],\n dielectricConst, realisticDielectricEffect);\n }\n }\n\n if (f_over_r) {\n fx += f_over_r * dx;\n fy += f_over_r * dy;\n }\n }\n\n if (calculateGradient) {\n gradX = constants.convert(fx, {\n from: unit.MW_FORCE_UNIT,\n to: unit.EV_PER_NM\n });\n gradY = constants.convert(fy, {\n from: unit.MW_FORCE_UNIT,\n to: unit.EV_PER_NM\n });\n return [PE, [gradX, gradY]];\n }\n\n return PE;\n };\n },\n\n\n // Adds a kinetic energy (defined in eV) to a group of atoms defined as optional arguments.\n // e.g. .addKEToAtoms(2, 1, 2, 3) will add 2eV to atoms 1, 2 and 3. When no atom index is\n // specified, the function will use all available atoms.\n // Returns false when it's impossible (e.g. it can happen when provided energy is negative\n // and atoms can't be cooled down more), true otherwise.\n addKEToAtoms: function(energyChange) {\n var atoms = Array.prototype.slice.call(arguments, 1),\n oldKE = 0,\n newKE,\n ratio,\n i, len, idx;\n\n if (atoms.length === 0) {\n for (i = 0; i < N; i++) {\n atoms.push(i);\n }\n }\n\n for (i = 0, len = atoms.length; i < len; i++) {\n oldKE += engine.getAtomKineticEnergy(atoms[i]);\n }\n\n newKE = oldKE + energyChange;\n\n if (newKE <= 0) {\n // Energy can't be conserved using a given set of atoms.\n return false;\n }\n if (oldKE === 0) {\n idx = atoms[0];\n vx[idx] = Math.random() * 2 - 1 * 1e-5;\n vy[idx] = Math.random() * 2 - 1 * 1e-5;\n oldKE = engine.getAtomKineticEnergy(idx);\n }\n\n ratio = Math.sqrt(newKE / oldKE);\n\n for (i = 0, len = atoms.length; i < len; i++) {\n idx = atoms[i];\n vx[idx] *= ratio;\n vy[idx] *= ratio;\n // TODO: probably we shouldn't store (px, py) at all, but calculate it when needed.\n px[idx] *= ratio;\n py[idx] *= ratio;\n }\n\n return true;\n },\n\n addKEToAtomPairAndConserveMomentum: function(deltaKE, atom1, atom2) {\n\n // rotate into x-axis to simplify the quadratic equation below and to avoid numerical\n // problems when dx is small\n\n var dx = x[atom2] - x[atom1];\n var dy = y[atom2] - y[atom1];\n var theta = -Math.atan2(dy, dx);\n var cosTheta = Math.cos(theta);\n var sinTheta = Math.sin(theta);\n\n var v1x = cosTheta * vx[atom1] - sinTheta * vy[atom1];\n var v2x = cosTheta * vx[atom2] - sinTheta * vy[atom2];\n var v1y = sinTheta * vx[atom1] + cosTheta * vy[atom1];\n var v2y = sinTheta * vx[atom2] + cosTheta * vy[atom2];\n\n var m1 = mass[atom1];\n var m2 = mass[atom2];\n\n // use MW units here\n var oldKE = 0.5 * m1 * (v1x * v1x + v1y * v1y) + 0.5 * m2 * (v2x * v2x + v2y * v2y);\n var newKE = oldKE + constants.convert(deltaKE, {\n from: unit.EV,\n to: unit.MW_ENERGY_UNIT\n });\n\n if (newKE < 0) {\n return false;\n }\n\n // We require m1 * dv1x = -m2 * dv2x (momentum conservation)\n // and m1 * ((v1x + dv1)^2 + v1y^2) + m2 * ((v2x + dv2x)^2 + v2y^2) = 2 * newKE\n // This results in a quadratic equation in dv1x; solve it:\n var a = m1 + m1 * m1 / m2;\n var b = 2 * m1 * (v1x - v2x);\n var c = 2 * (oldKE - newKE);\n var disc = b * b - 4 * a * c;\n\n if (disc < 0) {\n // Momentum can't be conserved.\n return false;\n }\n\n // Of the two roots, choose the solution that minimizes the changes to the individual\n // momenta (which are equal and opposite, so we only need to check v1x)\n disc = Math.sqrt(disc);\n var dv1xPlus = (-b + disc) / (2 * a);\n var dv1xMinus = (-b - disc) / (2 * a);\n var dv1x = Math.abs(dv1xPlus) < Math.abs(dv1xMinus) ? dv1xPlus : dv1xMinus;\n\n v1x += dv1x;\n v2x += (-m1 / m2 * dv1x);\n\n // reverse sign of rotation\n sinTheta *= -1;\n\n vx[atom1] = v1x * cosTheta - v1y * sinTheta;\n px[atom1] = m1 * vx[atom1];\n vy[atom1] = v1x * sinTheta + v1y * cosTheta;\n py[atom1] = m1 * vy[atom1];\n\n vx[atom2] = v2x * cosTheta - v2y * sinTheta;\n px[atom2] = m2 * vx[atom2];\n vy[atom2] = v2x * sinTheta + v2y * cosTheta;\n py[atom2] = m2 * vy[atom2];\n\n return true;\n },\n\n /**\n Starting at (x,y), try to find a position which minimizes the potential energy change caused\n by adding at atom of element el.\n */\n findMinimumPELocation: function(el, x, y, charge) {\n var pot = engine.newPotentialCalculator(el, charge, true),\n radius = elementRadius[el],\n\n res = math.minimize(pot, [x, y], {\n bounds: [\n [radius, size[0] - radius],\n [radius, size[1] - radius]\n ]\n });\n\n if (res.error) return false;\n return res[1];\n },\n\n /**\n Starting at (x,y), try to find a position which minimizes the square of the potential energy\n change caused by adding at atom of element el, i.e., find a \"farthest from everything\"\n position.\n */\n findMinimumPESquaredLocation: function(el, x, y, charge) {\n var pot = engine.newPotentialCalculator(el, charge, true),\n\n // squared potential energy, with gradient\n potsq = function(x, y) {\n var res, f, grad;\n\n res = pot(x, y);\n f = res[0];\n grad = res[1];\n\n // chain rule\n grad[0] *= (2 * f);\n grad[1] *= (2 * f);\n\n return [f * f, grad];\n },\n\n radius = elementRadius[el],\n\n res = math.minimize(potsq, [x, y], {\n bounds: [\n [radius, size[0] - radius],\n [radius, size[1] - radius]\n ],\n stopval: 1e-4,\n precision: 1e-6\n });\n\n if (res.error) return false;\n return res[1];\n },\n\n /**\n Returns all atoms in the same molecule as atom idx\n (not including idx itself)\n */\n getMoleculeAtoms: function(idx) {\n // Use simple DFS algorithm.\n var result = [];\n var stack = [];\n var visited = {};\n var bondedAtoms, bondedAtom, i, len;\n\n stack.push(idx);\n visited[idx] = true;\n while (stack.length > 0) {\n bondedAtoms = engine.getBondedAtoms(stack.pop());\n for (i = 0, len = bondedAtoms.length; i < len; i++) {\n bondedAtom = bondedAtoms[i];\n if (!visited[bondedAtom]) {\n visited[bondedAtom] = true;\n stack.push(bondedAtom);\n result.push(bondedAtom);\n }\n }\n }\n return result;\n },\n\n /**\n Returns all atoms directly bonded to atom idx\n */\n getBondedAtoms: function(idx) {\n return bondedAtoms[idx] || [];\n },\n\n getCoulombForceAt: function(testX, testY, resultObj) {\n // Let client code reuse objects.\n resultObj = resultObj || {};\n // Fast path if Coulomb interaction is disabled or there are no charged atoms.\n if (!useCoulombInteraction || chargedAtomsList.length === 0) {\n resultObj.fx = resultObj.fy = 0;\n return resultObj;\n }\n\n var fx = 0,\n fy = 0,\n i, len, dx, dy, rSq, fOverR, atomCharge, atomIdx, rect, o;\n\n for (i = 0, len = chargedAtomsList.length; i < len; i++) {\n atomIdx = chargedAtomsList[i];\n atomCharge = charge[atomIdx];\n\n dx = x[atomIdx] - testX;\n dy = y[atomIdx] - testY;\n rSq = dx * dx + dy * dy;\n\n fOverR = coulomb.forceOverDistanceFromSquaredDistance(rSq, 1, atomCharge,\n dielectricConst, realisticDielectricEffect);\n\n fx += fOverR * dx;\n fy += fOverR * dy;\n }\n\n for (i = 0; i < N_electricFields; i++) {\n rect = electricFieldShapeIdx[i];\n if (rect != null && !rectContains(rect, testX, testY)) continue;\n o = electricFieldOrientation[i];\n if (o === \"N\" || o === \"S\") {\n fy += getElFieldForce(i); // * 1 Coulomb (test charge)\n } else {\n fx += getElFieldForce(i); // * 1 Coulomb (test charge)\n }\n }\n\n\n resultObj.fx = constants.convert(fx, {\n from: unit.MW_FORCE_UNIT,\n to: unit.EV_PER_NM\n });\n resultObj.fy = constants.convert(fy, {\n from: unit.MW_FORCE_UNIT,\n to: unit.EV_PER_NM\n });\n return resultObj;\n },\n\n /**\n Returns Kinetic Energy of single atom i, in eV.\n */\n getAtomKineticEnergy: function(i) {\n var KEinMWUnits = 0.5 * mass[i] * (vx[i] * vx[i] + vy[i] * vy[i]);\n return constants.convert(KEinMWUnits, {\n from: unit.MW_ENERGY_UNIT,\n to: unit.EV\n });\n },\n\n getAtomNeighbors: function(idx) {\n var res = [],\n list = neighborList.getList(),\n i, len;\n\n for (i = neighborList.getStartIdxFor(idx), len = neighborList.getEndIdxFor(idx); i < len; i++) {\n res.push(list[i]);\n }\n return res;\n },\n\n getNeighborList: function() {\n return neighborList;\n },\n\n setViscosity: function(v) {\n viscosity = v;\n },\n\n get ljCalculator() {\n return ljCalculator;\n },\n\n /**\n Indicates whether some radial bonds were added or removed during the last integration step.\n This flag is cleared at the beginning of the integration.\n */\n get radialBondsChanged() {\n return radialBondsChanged;\n },\n\n /**\n * Returns true when atoms i and j are \"radially bonded\", false otherwise.\n */\n atomsBonded: function(i, j) {\n return !!(radialBondMatrix && radialBondMatrix[i] && radialBondMatrix[i][j]);\n },\n\n // ######################################################################\n // State definition of the engine\n\n // Return array of objects defining state of the engine.\n // Each object in this list should implement following interface:\n // * .clone() - returning complete state of that object.\n // * .restore(state) - restoring state of the object, using 'state'\n // as input (returned by clone()).\n getState: function() {\n var state = [\n // Use wrapper providing clone-restore interface to save the hashes-of-arrays\n // that represent model state.\n new CloneRestoreWrapper(elements),\n new CloneRestoreWrapper(atoms),\n new CloneRestoreWrapper(obstacles),\n new CloneRestoreWrapper(shapes),\n new CloneRestoreWrapper(lines),\n new CloneRestoreWrapper(radialBonds),\n new CloneRestoreWrapper(angularBonds),\n new CloneRestoreWrapper(restraints),\n new CloneRestoreWrapper(springForces),\n // PairwiseLJProperties class implements Clone-Restore Interface.\n pairwiseLJProperties,\n\n // Also save toplevel state (time, number of atoms, etc):\n {\n clone: function() {\n return {\n time: time,\n N: N,\n N_elements: N_elements,\n N_obstacles: N_obstacles,\n N_shapes: N_shapes,\n N_lines: N_lines,\n N_radialBonds: N_radialBonds,\n N_angularBonds: N_angularBonds,\n N_restraints: N_restraints,\n N_springForces: N_springForces\n };\n },\n restore: function(state) {\n time = state.time;\n N = state.N;\n N_elements = state.N_elements;\n N_shapes = state.N_shapes;\n N_lines = state.N_lines;\n N_radialBonds = state.N_radialBonds;\n N_angularBonds = state.N_angularBonds;\n N_restraints = state.N_restraints;\n N_springForces = state.N_springForces;\n\n neighborList.invalidate();\n radialBondMatrix.reset();\n bondedAtoms.reset();\n chargedAtomsList.reset();\n }\n }\n ];\n\n pluginController.callPluginFunction('getState', [], function(pluginState) {\n state = state.concat(pluginState);\n });\n\n return state;\n },\n\n // FIXME. Not a sustainable pattern. This is just a temporary pass-through of modeler-level\n // methods that are implemented in the quantumDynamics plugin, because for now the plugin is\n // only callable from the engine.\n callPluginAccessor: function(accessorMethodName, args) {\n var returnValue;\n args = args || [];\n pluginController.callPluginFunction(accessorMethodName, args, function(_) {\n returnValue = _;\n });\n return returnValue;\n }\n };\n\n\n\n // Initialization\n initialize();\n\n // Export initialized objects to Public API.\n // To ensure that client code always has access to these public properties,\n // they should be initialized only once during the engine lifetime (in the initialize method).\n engine.pairwiseLJProperties = pairwiseLJProperties;\n\n // Finally, return Public API.\n return engine;\n};\n","import md2dUnits from \"models/md2d/models/unit-definitions/md2d\";\nimport mksUnits from \"models/md2d/models/unit-definitions/mks\";\nimport _ from \"underscore\";\n\nvar defs = {\n md2d: md2dUnits,\n mks: mksUnits\n};\n\nexport default {\n get: function (name) {\n var ret;\n if (name === \"md2d\") return defs.md2d;\n\n // For any unit type not in defs[name].units (e.g., temperature does not need to be redefined\n // in MKS), fall back to the MD2D unit definition.\n ret = _.extend({}, defs[name]);\n ret.units = _.extend({}, defs.md2d.units, defs[name].units);\n return ret;\n }\n};\n","\n// Definitions of the default MD2D units. Every model property exposed by md2d/models/modeler.js is\n// in one of the unit types below.\n\n// This particular set of definitions is for reference and for generating the correct labels on\n// output properties; it's not used for computation. Unit conversions that need to happen during\n// calculations in the MD2D engine itself are \"baked in\" using the engine's internal constants and\n// units module 'md2d/models/engine/constants/index.js')\n\n// Additionally, since we don't yet offer user-facing methods which do unit conversions (e.g.,\n// allowing a property setter to accept an argument containing a value and a unit) there is no\n// need for quantitative information in this definition.\n\nexport default {\n name: \"md2d\",\n translated: false,\n units: {\n\n length: {\n name: \"nanometer\",\n pluralName: \"nanometers\",\n symbol: \"nm\"\n },\n\n // Internally, we've referred to \"Dalton\" but amu is probably more common. Dalton is\n // officially more correct but it still seems mostly to be used for protein masses, etc.\n mass: {\n name: \"atomic mass unit\",\n pluralName: \"atomic mass units\",\n symbol: \"amu\"\n },\n\n time: {\n name: \"femtosecond\",\n pluralName: \"femtoseconds\",\n symbol: \"fs\",\n displayValue: {\n unitsPerBaseUnit: 1e-3,\n pluralName: \"picoseconds\",\n name: \"picosecond\",\n symbol: \"ps\"\n }\n },\n\n // For unclear reasons, Classic MW scales the damping coefficient of obstacles linearly with\n // the obstacle's mass, so the acceleration due to friction is a constant times the velocity:\n // a(friction) = -cv\n // For compatibility, MD2D does the same.\n // The units of the constant c (called \"obstacle friction\") are therefore 1 / time.\n inverseTime: {\n name: \"1/femtosecond\",\n pluralName: \"1/femtoseconds\",\n symbol: \"1/fs\"\n },\n\n velocity: {\n name: \"nanometer per femtosecond\",\n pluralName: \"nanometers per second\",\n symbol: \"nm/s\"\n },\n\n acceleration: {\n name: \"nanometer per femtosecond squared\",\n pluralName: \"nanometers per femtosecond squared\",\n symbol: \"nm/fs²\"\n },\n\n momentum: {\n name: \"amu nanometer per femtosecond\",\n pluralName: \"amu nanometers per femtosecond\",\n symbol: \"amu⋅nm/fs\"\n },\n\n // Forces haven't typically been exposed to Classic MW users in a quantitative way, and indeed\n // they aren't yet exposed in Next Gen MW, so MD2D doesn't try to translate the\n // (computationally convenient) amu nm/fs² to \"user friendly\" units. That said, Classic MW\n // could be said to use eV/nm implicitly, since spring constants are in eV/nm².\n force: {\n name: \"amu nanometer per femtosecond squared\",\n pluralName: \"amu nanometers per femtosecond squared\",\n symbol: \"amu⋅nm/fs²\"\n },\n\n energy: {\n name: \"electron volt\",\n pluralName: \"electron volts\",\n symbol: \"eV\"\n },\n\n // force / velocity = mass / time; given the composite force unit we use, this is much simpler\n // to write as amu/fs than anything else.\n dampingCoefficient: {\n name: \"amu per femtosecond\",\n pluralName: \"amu per femtoseconds\",\n symbol: \"amu/fs\"\n },\n\n // aka spring constant (= eV/nm per nm)\n stiffness: {\n name: \"electron volt per nanometer squared\",\n pluralName: \"electron volts per nanometer squared\",\n symbol: \"eV/nm²\"\n },\n\n // aka torsional spring constant.\n // Dimensions are torque / angle = force (eV/nm) x lever arm (nm) / angle (radians). This is\n // dimensionally equivalent to energy / angle (eV/radians) but the interpretation of force x\n // distance is different for energy than it is for torque.\n rotationalStiffness: {\n name: \"electron volt per radian\",\n pluralName: \"electron volts per radian\",\n symbol: \"eV/rad\"\n },\n\n charge: {\n name: \"elementary charge\",\n pluralName: \"elementary charges\",\n symbol: \"e\"\n },\n\n temperature: {\n // Not \"degrees Kelvin\", just \"Kelvin\".\n name: \"Kelvin\",\n // Not \"Kelvins\", just \"Kelvin\".\n pluralName: \"Kelvin\",\n symbol: \"K\"\n },\n\n pressure: {\n name: \"bar\",\n // e.g., \"50 bar\"\n pluralName: \"bar\",\n symbol: \"bar\"\n },\n\n angle: {\n name: \"radian\",\n pluralName: \"radians\",\n symbol: \"rad\"\n }\n }\n};\n","\n// Definitions of the MKS units used for macroscopic models. We simulate macroscopic models by\n// declaring that some value in (microscopic) MD2D units actually represents one macroscopic-scale\n// unit of the same type, e.g., we choose 1 nm (a value of 1 in any MD2D property that has unitType\n// \"length\") to represent 1 m.\n//\n// Such microscopic:macroscopic ratios as 1nm:1m can only be freely chosen for three unit types:\n// length, mass, and time. The remaining unit ratios are computed by the UnitsTranslation module.\n// See http://lab.dev.concord.org/doc/models/md2d/macroscopic-units/ for an overview of the\n// calculations.\n//\n// In order to compute these ratios, the UnitsTranslation requires two pieces of\n// data about each unit:\n//\n// (1) for mass, length, and time only, the \"representationInMD2DUnits\" property, which tells\n// how many MD2D units of the same type represent 1 macroscopic unit.\n// (2) for each unit type, the \"valueInSIUnits\" property, which tells the value of that unit in\n// SI units. This is required, for example, if we wanted to have a unit system that represented\n// acceleration in g (multiples of Earth gravity.) We can automatically translate from the MD2D\n// system of units (nm/fs²) to SI/MKS, but without further information relating the value of 1g\n// to units of m/s² we cannot translate MD2D units to g.\n//\n// Additionally, angle, pressure, and temperature are not included below. That is because angle\n// units require no translation, and temperature, while nominally applicable to macroscale models,\n// is computed from kinetic energy in a way that is not really applicable to, e.g., a macroscopic\n// mass-spring model. Moreover pressure units in Classic MW are somewhat fake, and we don't really\n// anticipate trying to compute the pressure exerted by a box of bouncing macroscopic balls.\n\nexport default {\n name: \"mks\",\n translated: true,\n units: {\n\n length: {\n name: \"meter\",\n pluralName: \"meters\",\n symbol: \"m\",\n representationInMD2DUnits: 1,\n valueInSIUnits: 1\n },\n\n mass: {\n name: \"kilogram\",\n pluralName: \"kilograms\",\n symbol: \"kg\",\n representationInMD2DUnits: 1,\n valueInSIUnits: 1\n },\n\n time: {\n name: \"second\",\n pluralName: \"seconds\",\n symbol: \"s\",\n representationInMD2DUnits: 1e4,\n valueInSIUnits: 1\n },\n\n inverseTime: {\n name: \"1/second\",\n pluralName: \"1/seconds\",\n symbol: \"1/s\",\n valueInSIUnits: 1\n },\n\n velocity: {\n name: \"meter per second\",\n pluralName: \"meters per second\",\n symbol: \"m/s\",\n valueInSIUnits: 1\n },\n\n acceleration: {\n name: \"meter per second squared\",\n pluralName: \"meters per second squared\",\n symbol: \"m/s²\",\n valueInSIUnits: 1\n },\n\n force: {\n name: \"Newton\",\n pluralName: \"Newtons\",\n symbol: \"N\",\n valueInSIUnits: 1\n },\n\n energy: {\n name: \"Joule\",\n pluralName: \"Joules\",\n symbol: \"J\",\n valueInSIUnits: 1\n },\n\n dampingCoefficient: {\n name: \"Newton second per meter\",\n pluralName: \"Newton seconds per meter\",\n symbol: \"N⋅s/m\",\n valueInSIUnits: 1\n },\n\n // aka spring constant\n stiffness: {\n name: \"Newton per meter\",\n pluralName: \"Newtons per meter\",\n symbol: \"N/m\",\n valueInSIUnits: 1\n },\n\n // aka torsional spring constant\n rotationalStiffness: {\n name: \"Newton-meter per radian\",\n pluralName: \"Newton-meters per radian\",\n symbol: \"N⋅m/rad\",\n valueInSIUnits: 1\n },\n\n charge: {\n name: \"Coulomb\",\n pluralName: \"Coulombs\",\n symbol: \"C\",\n valueInSIUnits: 1\n }\n }\n};\n","/*jshint eqnull: true*/\n\nimport _ from 'underscore';\nimport constants from 'models/md2d/models/engine/constants/index';\nimport coulomb from 'models/md2d/models/engine/potentials/coulomb';\n\nvar COULOMB_CONSTANT = constants.COULOMB_CONSTANT.as(constants.unit.METERS_PER_FARAD),\n baseUnitTypes = ['length', 'mass', 'time'];\n\nexport default function UnitsTranslation(unitsDefinition) {\n\n var // multiply MD2D-units value by this to get the value in SI units\n siFactor = {},\n\n // multiply MD2D-units value by this to get the value in translated (macroscopic) units\n factor = {},\n\n force;\n\n _.each(baseUnitTypes, function(unitType) {\n var u = unitsDefinition.units[unitType];\n siFactor[unitType] = u.valueInSIUnits / u.representationInMD2DUnits;\n });\n\n siFactor.inverseTime = 1 / siFactor.time;\n siFactor.velocity = siFactor.length / siFactor.time;\n siFactor.acceleration = siFactor.velocity / siFactor.time;\n siFactor.force = siFactor.mass * siFactor.acceleration;\n\n // The factor should first convert an MD2D value, which is in *eV*, to amu nm/fs^2:\n siFactor.energy = constants.ratio(constants.unit.MW_ENERGY_UNIT, {\n per: constants.unit.EV\n });\n // Then it should convert amu/fs^2 to N and nm to m, yielding Joules:\n siFactor.energy *= siFactor.force * siFactor.length;\n\n siFactor.dampingCoefficient = siFactor.force / siFactor.velocity;\n // stiffness is eV/nm^2; convert eV -> J and 1/nm^2 -> 1/m^2 (yielding N/m)\n siFactor.stiffness = siFactor.energy / siFactor.length / siFactor.length;\n // rotational stiffness is in eV/rad; convert eV -> N⋅m -- no need to convert radians\n siFactor.rotationalStiffness = siFactor.energy / siFactor.length;\n\n // Force between charge +1 and -1, 1 distance unit apart, with dielectric constant 1\n force = coulomb.force(1, -1, 1, 1);\n // See disdcussion at http://lab.dev.concord.org/doc/models/md2d/macroscopic-units/\n siFactor.charge = Math.sqrt(force * siFactor.force * siFactor.length * siFactor.length / COULOMB_CONSTANT);\n\n _.each(_.keys(siFactor), function(unitType) {\n factor[unitType] = siFactor[unitType] / unitsDefinition.units[unitType].valueInSIUnits;\n });\n\n return {\n translateToModelUnits: function(translatedUnitsValue, unitType) {\n if (factor[unitType] == null) {\n return translatedUnitsValue;\n }\n return translatedUnitsValue / factor[unitType];\n },\n\n translateFromModelUnits: function(md2dUnitsValue, unitType) {\n if (factor[unitType] == null) {\n return md2dUnitsValue;\n }\n return md2dUnitsValue * factor[unitType];\n }\n };\n};\n","import aminoacidsHelper from 'models/md2d/models/aminoacids-helper';\nimport alert from 'common/alert';\n\nvar\n STATES = [\n \"undefined\",\n \"intro-cells\",\n \"intro-zoom1\",\n \"intro-zoom2\",\n \"intro-zoom3\",\n \"intro-polymerase\",\n \"dna\",\n \"transcription\",\n \"transcription-end\",\n \"after-transcription\",\n \"before-translation\",\n \"translation\",\n \"translation-end\"\n ],\n STATE_INDEX = {},\n\n NUCLEO_LAST_ID = 0,\n\n PROMOTER_SEQ = \"TGACCTCTCCGCGCCATCTATAAACCGAAGCGCTAGCTACA\",\n TERMINATOR_SEQ = \"ACCACAGGCCGCCAGTTCCGCTGGCGGCATTTT\",\n PROMOTER_COMP_SEQ = complementarySequence(PROMOTER_SEQ),\n TERMINATOR_COMP_SEQ = complementarySequence(TERMINATOR_SEQ),\n JUNK_SEQ,\n JUNK_COMP_SEQ,\n\n DEF_EVENT = \"change\";\n\nfunction complementarySequence(DNA) {\n // A-T (A-U)\n // G-C\n // T-A (U-A)\n // C-G\n\n // Use lower case during conversion to\n // avoid situation when you change A->T,\n // and later T->A again.\n return DNA\n .replace(/A/g, \"t\")\n .replace(/G/g, \"c\")\n .replace(/T/g, \"a\")\n .replace(/C/g, \"g\")\n .toUpperCase();\n}\n// Generates junk DNA sequence.\nfunction junkSequence(len) {\n var letters = [\"A\", \"G\", \"T\", \"C\"],\n lettersLen = letters.length,\n seq = \"\",\n i;\n for (i = 0; i < len; i++) {\n seq += letters[Math.floor(Math.random() * lettersLen)];\n }\n return seq;\n}\n\nfunction getNucleoID() {\n return NUCLEO_LAST_ID++;\n}\n\n(function() {\n var i, len;\n for (i = 0, len = STATES.length; i < len; i++) {\n STATE_INDEX[STATES[i]] = i;\n }\n JUNK_SEQ = junkSequence(50);\n JUNK_COMP_SEQ = complementarySequence(JUNK_SEQ);\n}());\n\nexport default function GeneticProperties(model) {\n var api,\n // Do not change this variable manually. It's changed in set() private\n // function. It decides what type of event should be dispatched when\n // DNA or DNAState is updated.\n eventMode = DEF_EVENT,\n // List of transitions, which are currently ongoing (index 0)\n // or scheduled (index > 0).\n ongoingTransitions = [],\n // DNA complementary sequence.\n DNAComp = \"\",\n // Complete mRNA based on current DNA. Useful for codon() method,\n // which needs to know the whole sequence in advance.\n mRNA = \"\",\n // Stop codons.\n stopCodonsHash,\n // Index of the first stop codon.\n lastTranslationStep,\n\n dispatch = d3.dispatch(\"change\", \"transition\"),\n\n calculatemRNA = function() {\n var newCode = mRNACode(0),\n mRNA = \"\";\n while (newCode) {\n mRNA += newCode;\n newCode = mRNACode(mRNA.length);\n }\n return mRNA;\n },\n\n calculateStopCodonsHash = function() {\n var codon, i, len;\n\n stopCodonsHash = {};\n lastTranslationStep = null;\n for (i = 0, len = mRNA.length; i < len; i += 3) {\n codon = mRNA.substr(i, 3);\n if (aminoacidsHelper.codonToAbbr(codon) === \"STOP\") {\n if (lastTranslationStep === null) {\n lastTranslationStep = i / 3;\n }\n // Note that codonToAbbr returns \"STOP\" also when codon length is\n // smaller than 3. In this case, we want to mark only codons which\n // are a \"real\" STOP codons, so check their length.\n if (codon.length === 3) {\n stopCodonsHash[i] = stopCodonsHash[i + 1] = stopCodonsHash[i + 2] = true;\n }\n }\n }\n if (lastTranslationStep === null) {\n // No stop codon found.\n lastTranslationStep = Math.floor(mRNA.length / 3);\n }\n },\n\n mRNACode = function(index) {\n if (index >= DNAComp.length) {\n // No more DNA to transcribe, return null.\n return null;\n }\n switch (DNAComp[index]) {\n case \"A\":\n return \"U\";\n case \"G\":\n return \"C\";\n case \"T\":\n return \"A\";\n case \"C\":\n return \"G\";\n }\n },\n\n generateMRNAViewModel = function(array, sequence) {\n var i, len, nucleo;\n // Set size of the existing array to the size of new DNA sequence.\n array.length = sequence.length;\n for (i = 0, len = sequence.length; i < len; i++) {\n nucleo = array[i] || {}; // reuse existing objects.\n nucleo.idx = i;\n // Note that only nucleotides whose type doesn't match sequence\n // will receive new ID. It lets you to update this array manually,\n // so the ID as prevented in case of need (e.g. single insertion\n // or deletion during mutation).\n if (nucleo.type !== sequence[i]) {\n nucleo.type = sequence[i];\n nucleo.id = getNucleoID();\n // This block will be also executed when we insert objects for\n // the first time so update the array[i] reference.\n array[i] = nucleo;\n }\n }\n return array;\n },\n\n generateDNAViewModel = function(array, DNA, comp) {\n var sequence = !comp ? JUNK_SEQ + PROMOTER_SEQ + DNA + TERMINATOR_SEQ + JUNK_SEQ :\n JUNK_COMP_SEQ + PROMOTER_COMP_SEQ + DNA + TERMINATOR_COMP_SEQ + JUNK_COMP_SEQ,\n junkBound = JUNK_SEQ.length,\n promoterBound = junkBound + PROMOTER_SEQ.length,\n codingBound = promoterBound + DNA.length,\n terminatorBound = codingBound + TERMINATOR_SEQ.length,\n i, len, nucleo;\n\n // Set size of the existing array to the size of new DNA sequence.\n array.length = sequence.length;\n for (i = 0, len = sequence.length; i < len; i++) {\n nucleo = array[i] || {}; // reuse existing objects.\n nucleo.idx = i;\n if (i < junkBound) nucleo.region = \"j\";\n else if (i < promoterBound) nucleo.region = \"p\";\n else if (i < codingBound) nucleo.region = \"c\";\n else if (i < terminatorBound) nucleo.region = \"t\";\n else nucleo.region = \"j\";\n // Note that only nucleotides whose type doesn't match sequence\n // will receive new ID. It lets you to update this array manually,\n // so the ID as prevented in case of need (e.g. single insertion\n // or deletion during mutation).\n if (nucleo.type !== sequence[i]) {\n nucleo.type = sequence[i];\n nucleo.id = getNucleoID();\n // This block will be also executed when we insert objects for\n // the first time so update the array[i] reference.\n array[i] = nucleo;\n }\n }\n return array;\n },\n\n updateGeneticProperties = function() {\n var DNA = model.get(\"DNA\");\n\n generateDNAViewModel(api.viewModel.DNA, DNA, false);\n\n DNAComp = complementarySequence(DNA);\n generateDNAViewModel(api.viewModel.DNAComp, DNAComp, true);\n\n mRNA = calculatemRNA();\n calculateStopCodonsHash();\n // mRNA view array is also based on the current state.\n if (api.stateBefore(\"transcription:0\")) {\n generateMRNAViewModel(api.viewModel.mRNA, \"\");\n } else if (api.state().name === \"transcription\") {\n generateMRNAViewModel(api.viewModel.mRNA, mRNA.substr(0, api.state().step));\n } else if (api.stateAfter(\"transcription\")) {\n // So, the first state which triggers it is \"transcription-end\".\n generateMRNAViewModel(api.viewModel.mRNA, mRNA);\n }\n\n if (eventMode !== \"transition\") {\n // While jumping between states, ensure that user can see a valid\n // number of amino acids.\n if (api.stateBefore(\"translation:1\")) {\n removeAminoAcids();\n } else if (api.stateEqual(\"translation-end\")) {\n generateFinalProtein();\n }\n }\n },\n\n removeAminoAcids = function() {\n var aaCount;\n\n aaCount = model.getNumberOfAtoms();\n if (aaCount > 0) {\n model.startBatch();\n while (aaCount > 0) {\n model.removeAtom(aaCount - 1);\n aaCount--;\n }\n model.endBatch();\n }\n model.stop();\n },\n\n generateFinalProtein = function() {\n var aaSequenece = [],\n i = 0,\n abbr = aminoacidsHelper.codonToAbbr(api.codon(0));\n\n while (abbr !== \"STOP\") {\n aaSequenece.push(abbr);\n abbr = aminoacidsHelper.codonToAbbr(api.codon(++i));\n }\n api.generateProtein(aaSequenece, undefined, 2.3, 0.3);\n api.centerProtein();\n model.start();\n },\n\n nextState = function(state) {\n var name = state.name,\n next, abbr;\n\n if (name === \"transcription\") {\n if (state.step < model.get(\"DNA\").length - 1) {\n return \"transcription:\" + (state.step + 1);\n } else {\n return \"transcription-end\";\n }\n } else if (name === \"translation\") {\n abbr = aminoacidsHelper.codonToAbbr(api.codon(state.step));\n if (abbr !== \"STOP\") {\n return \"translation:\" + (state.step + 1);\n } else {\n return \"translation-end\";\n }\n } else {\n // \"Typical\" state.\n next = STATES[STATE_INDEX[state.name] + 1];\n if (next === \"transcription\" || next === \"translation\") {\n next += \":0\";\n }\n return next;\n }\n },\n\n prevState = function(state) {\n var name = state.name,\n step = state.step;\n\n if (name === \"transcription\" && step > 0) {\n return \"transcription:\" + (step - 1);\n } else if (name === \"transcription-end\") {\n return \"transcription:\" + (model.get(\"DNA\").length - 1);\n } else if (name === \"translation-end\" || (name === \"translation\" && step > 0)) {\n // Note that we always return state translation:0,\n // as jumping between translation steps is not allowed.\n return \"translation:0\";\n } else {\n return STATES[STATE_INDEX[name] - 1];\n }\n },\n\n // DNA states comparator.\n stateComp = function(stateA, stateB) {\n if (stateA === stateB) {\n return 0;\n }\n stateA = api.parseState(stateA);\n stateB = api.parseState(stateB);\n if (stateA.name === stateB.name) {\n if (isNaN(stateA.step) || isNaN(stateB.step)) {\n // Note that when you compare e.g. \"translate\"\n // and \"translate:5\" these steps are considered to be equal.\n return 0;\n }\n return stateA.step < stateB.step ? -1 : 1;\n }\n return STATE_INDEX[stateA.name] < STATE_INDEX[stateB.name] ? -1 : 1;\n },\n\n transitionToState = function(name) {\n if (typeof name === \"undefined\") return;\n if (ongoingTransitions.length > 0) {\n // Some transition are in progress, so only enqueue a new state.\n ongoingTransitions.push(name);\n } else {\n // Mark transition as ongoing (by adding it to the list)\n // and do transition.\n ongoingTransitions.push(name);\n doStateTransition(name);\n }\n },\n\n doStateTransition = function(name) {\n set(\"DNAState\", name, \"transition\");\n },\n\n doDNATransition = function(newDNA) {\n set(\"DNA\", newDNA, \"transition\");\n },\n\n dispatchChange = function(suppressViewportUpdate) {\n // Cancel transitions when we are going to dispatch \"change\" event.\n ongoingTransitions.length = 0;\n model.cancelTransitions();\n\n dispatch.change(suppressViewportUpdate);\n },\n\n // Use this function if you want to change DNA or DNAState\n // and dispatch event different than \"change\" (which causes immediate\n // rendering). Options are:\n // - \"change\",\n // - \"transition\",\n // - \"suppress\".\n set = function(name, value, eventType) {\n eventMode = eventType || DEF_EVENT;\n model.properties[name] = value;\n eventMode = DEF_EVENT;\n },\n\n stateUpdated = function() {\n var state = model.get(\"DNAState\");\n\n if (eventMode === \"suppress\") {\n return;\n }\n\n updateGeneticProperties();\n\n if (eventMode === \"transition\") {\n dispatch.transition(state);\n } else {\n\n if (api.stateAfter(\"translation:0\") && api.stateBefore(\"translation-end\")) {\n // It means that state was set to 'translation:x', where x > 0.\n // Use the last safe state ('translation:0') instead.\n alert(\"'\" + state + \"' cannot be set explicitly. \" +\n \"'translation:0' should be set and then animation to '\" +\n state + \"' should be triggered.\");\n set(\"DNAState\", \"translation:0\");\n return;\n }\n\n dispatchChange();\n }\n },\n\n DNAUpdated = function() {\n if (eventMode === \"suppress\") {\n return;\n }\n\n if (api.stateAfter(\"translation:0\") && api.stateBefore(\"translation-end\")) {\n // Reset translation if DNA is changed. This will remove all\n // existing amino acids and notify renderer (via stateUpdated\n // callback).\n set(\"DNAState\", \"translation:0\");\n return;\n }\n\n updateGeneticProperties();\n\n if (eventMode === \"transition\") {\n dispatch.transition(\"dna-updated\", true);\n } else {\n dispatchChange(true);\n }\n };\n\n // Public API.\n api = {\n /**\n * Number of nucleotides before coding region (so, in junk and promoter regions).\n * @type {number}\n */\n PRECODING_LEN: JUNK_SEQ.length + PROMOTER_SEQ.length,\n\n /**\n * Hash of arrays containing nucleotides objects. Each array can be\n * consumed by the view. References to arrays are guaranteed to be\n * untouched during whole life cycle of the GeneticEngine instance.\n * Only arrays' lengths and content can be changed.\n *\n * Each nucleotide is defined by:\n * type - letter (\"A\", \"T\", \"U\", \"G\" or \"C\"),\n * idx - its position,\n * id - unique id,\n * coding - true if nucleotide is a part of coding region (not junk, terminator or promoter).\n */\n viewModel: {\n mRNA: [],\n DNA: [],\n DNAComp: []\n },\n\n /**\n * Registers listener for given event type. Supported events\n * are: \"change\" and \"transition\".\n * @param {string} type\n * @param {function} listener\n */\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n /**\n * Performs substitution mutation on DNA coding region.\n * @param {number} idx position in DNA.\n * @param {string} newType \"A\", \"T\", \"G\" or \"C\".\n * @param {boolean} DNAComplement if true, mutation is performed\n * on DNA complementary strand.\n */\n mutate: function(idx, newType, DNAComplement) {\n var DNA = model.get(\"DNA\"),\n pos = idx - api.PRECODING_LEN;\n\n if (pos < 0 || pos >= DNA.length) {\n throw new Error(\"Mutation can be performed only on DNA coding region.\");\n }\n\n DNA = DNA.substr(0, pos) +\n (DNAComplement ? complementarySequence(newType) : newType) +\n DNA.substr(pos + 1);\n // Update DNA. This will also call updateGeneticProperties(), so\n // other, related properties will be also updated.\n set(\"DNA\", DNA);\n },\n\n /**\n * Performs insertion mutation on DNA coding region.\n * @param {number} idx position in DNA.\n * @param {string} type \"A\", \"T\", \"G\" or \"C\".\n * @param {boolean} DNAComplement if true, mutation is performed\n * on DNA complementary strand.\n */\n insert: function(idx, type, DNAComplement) {\n var newDNANucleo = {\n type: DNAComplement ? complementarySequence(type) : type,\n id: getNucleoID(),\n region: \"c\"\n },\n newDNACompNucleo = {\n type: DNAComplement ? type : complementarySequence(type),\n id: getNucleoID(),\n region: \"c\"\n },\n newMRNANucleo = {\n type: DNAComplement ? complementarySequence(type) : type,\n id: getNucleoID(),\n region: \"c\"\n },\n DNA = model.get(\"DNA\"),\n state = api.state(),\n pos = idx - api.PRECODING_LEN;\n\n if (pos < 0 || pos >= DNA.length) {\n throw new Error(\"Mutation can be performed only on DNA coding region.\");\n }\n\n // Update view model arrays. It isn't necessary, but as we update them\n // correctly, nucleotides will preserve their IDs and view will know\n // exactly what part of DNA have been changed.\n api.viewModel.DNA.splice(idx, 0, newDNANucleo);\n api.viewModel.DNAComp.splice(idx, 0, newDNACompNucleo);\n api.viewModel.mRNA.splice(pos, 0, newMRNANucleo);\n\n // Update DNA. This will also call updateGeneticProperties(), so\n // other, related properties will be also updated.\n DNA = DNA.substr(0, pos) + newDNANucleo.type + DNA.substr(pos);\n\n // Special case for transcription process (and state):\n // If we keep the same DNAState and we insert something\n // before state.step position, it would cause that the last\n // transcribed nucleotide would be removed. Avoid that, as this can be\n // confusing for users.\n if (state.name === \"transcription\" && pos < state.step) {\n // Note that we can't use nextState(state), as in that case, as\n // state can be changed to transcription-end too fast (as DNA isn't\n // updated yet).\n set(\"DNAState\", state.name + \":\" + (state.step + 1), \"suppress\");\n }\n doDNATransition(DNA);\n },\n\n /**\n * Performs deletion mutation on DNA coding region.\n * @param {number} idx position in DNA.\n */\n delete: function(idx) {\n var DNA = model.get(\"DNA\"),\n state = api.state(),\n pos = idx - api.PRECODING_LEN;\n\n if (pos < 0 || pos >= DNA.length) {\n throw new Error(\"Mutation can be performed only on DNA coding region.\");\n }\n\n // Update view model arrays. It isn't necessary, but as we update them\n // correctly, nucleotides will preserve their IDs and view will know\n // exactly what part of DNA have been changed.\n api.viewModel.DNA.splice(idx, 1);\n api.viewModel.DNAComp.splice(idx, 1);\n api.viewModel.mRNA.splice(pos, 1);\n\n // Update DNA. This will also call updateGeneticProperties(), so\n // other, related properties will be also updated.\n DNA = DNA.substr(0, pos) + DNA.substr(pos + 1);\n\n // Special case for transcription process (and state):\n // If we keep the same DNAState and we delete something\n // before state.step position, it would cause that new transcribed\n // mRNA nucleotide will be added. Avoid that, as this can be\n // confusing for users.\n if (state.name === \"transcription\" && pos < state.step) {\n set(\"DNAState\", prevState(state), \"suppress\");\n }\n doDNATransition(DNA);\n },\n\n /**\n * Triggers transition to the next DNA state.\n *\n * If any transition was ongoing, it's canceled.\n */\n transitionToNextState: function() {\n api.stopTransition();\n if (ongoingTransitions.length === 0) {\n transitionToState(nextState(api.lastState()));\n }\n },\n\n /**\n * Stops current animation.\n * @return {boolean} true when some transitions are canceled, false otherwise.\n */\n stopTransition: function() {\n if (ongoingTransitions.length > 1) {\n // Cleanup queue of waiting transitions. ongoingTransitions[0] is\n // the current transition, don't remove it.\n ongoingTransitions.length = 1;\n }\n },\n\n jumpToNextState: function() {\n if (api.stateBefore(\"translation:0\")) {\n set(\"DNAState\", nextState(api.state()));\n } else if (api.stateBefore(\"translation-end\")) {\n set(\"DNAState\", \"translation-end\");\n }\n },\n\n jumpToPrevState: function() {\n if (api.stateAfter(\"intro-cells\")) {\n set(\"DNAState\", prevState(api.state()));\n }\n },\n\n /**\n * Triggers transition to the given DNA state.\n * e.g. transitionTo(\"transcription-end\")\n *\n * @param {string} stateName name of the state.\n */\n transitionTo: function(stateName) {\n while (api.lastStateBefore(stateName)) {\n transitionToState(nextState(api.lastState()));\n }\n },\n\n /**\n * Triggers only one step of DNA transcription.\n * This method also accepts optional parameter - expected nucleotide.\n * When it's available, transcription step will be performed only\n * when passed nucleotide code matches nucleotide, which should\n * be actually joined to mRNA in this transcription step. When\n * expected nucleotide code is wrong, this method does nothing.\n *\n * e.g.\n * transcribeStep(\"A\") will perform transcription step only\n * if \"A\" nucleotide should be added to mRNA in this step.\n *\n * @param {string} expectedNucleotide code of the expected nucleotide (\"U\", \"C\", \"A\" or \"G\").\n */\n transcribeStep: function(expectedNucleotide) {\n var state, newCode;\n\n state = api.state();\n if (state.name === \"dna\" && typeof expectedNucleotide === \"undefined\") {\n api.transitionToNextState();\n } else if (state.name === \"transcription\") {\n newCode = mRNACode(state.step);\n if (expectedNucleotide && expectedNucleotide.toUpperCase() !== newCode) {\n // Expected nucleotide is wrong, so simply do nothing.\n return;\n }\n api.transitionToNextState();\n }\n },\n\n // Helper methods used mainly by the genetic renderer.\n\n /**\n * Returns parsed *current* DNA state.\n * e.g.\n * {\n * name: \"translation\",\n * step: 5\n * }\n *\n * @return {Object} current state object (see above).\n */\n state: function() {\n return api.parseState(model.get(\"DNAState\"));\n },\n\n stateBefore: function(name) {\n return stateComp(model.get(\"DNAState\"), name) === -1;\n },\n\n stateEqual: function(name) {\n return stateComp(model.get(\"DNAState\"), name) === 0;\n },\n\n stateAfter: function(name) {\n return stateComp(model.get(\"DNAState\"), name) === 1;\n },\n\n /**\n * Returns parsed *last* enqueued state.\n * When there is no state enqueued or in progress,\n * it returns simply current state.\n *\n * e.g.\n * {\n * name: \"translation\",\n * step: 5\n * }\n *\n * @return {Object} last enqueued state object (see above).\n */\n lastState: function() {\n var queueLen = ongoingTransitions.length;\n if (queueLen > 0) {\n return api.parseState(ongoingTransitions[queueLen - 1]);\n }\n return api.state();\n },\n\n lastStateBefore: function(name) {\n var queueLen = ongoingTransitions.length,\n lastStateName = queueLen ? ongoingTransitions[queueLen - 1] : model.get(\"DNAState\");\n return stateComp(lastStateName, name) === -1 ? true : false;\n },\n\n lastStateAfter: function(name) {\n var queueLen = ongoingTransitions.length,\n lastStateName = queueLen ? ongoingTransitions[queueLen - 1] : model.get(\"DNAState\");\n return stateComp(lastStateName, name) === 1 ? true : false;\n },\n\n parseState: function(state) {\n // State can contain \":\" and info about step.\n // e.g. translation:0, translation:1 etc.\n state = state.split(\":\");\n return {\n name: state[0],\n step: Number(state[1]) // can be NaN when step is undefined.\n };\n },\n\n codon: function(index) {\n return mRNA.substr(3 * index, 3);\n },\n\n codonComplement: function(index) {\n return api.codon(index)\n .replace(/A/g, \"u\")\n .replace(/G/g, \"c\")\n .replace(/U/g, \"a\")\n .replace(/C/g, \"g\")\n .toUpperCase();\n },\n\n translationStepStarted: function(codonIdx, x, y, xEnd, yEnd, duration) {\n var abbr = aminoacidsHelper.codonToAbbr(api.codon(codonIdx)),\n elID = aminoacidsHelper.abbrToElement(abbr);\n\n // Add some entropy to y position to avoid perfectly straight line of\n // amino acids what can affect folding process.\n yEnd += Math.random() * 0.02 - 0.01;\n model.addAtom({\n x: x,\n y: y,\n element: elID,\n visible: true,\n pinned: true\n }, {\n suppressCheck: true\n });\n // Transition new amino acid to its final position.\n model.atomTransition().id(codonIdx).duration(duration).prop(\"x\", xEnd);\n model.atomTransition().id(codonIdx).duration(duration).prop(\"y\", yEnd);\n // Ensure that the simulation is started.\n model.start();\n },\n\n shiftAminoAcids: function(count, xShift, duration) {\n if (count < 1) return;\n var i, x, y;\n // Shift amino acids to the right.\n for (i = 0; i < count; i++) {\n x = model.getAtomProperties(i).x + xShift;\n y = model.getAtomProperties(i).y;\n model.atomTransition().id(i).duration(duration).prop(\"x\", x);\n // This is required to keep Y coordinate constant during this\n // transition, some forces applied by the MD2D engine can\n // change trajectory of the particle.\n model.atomTransition().id(i).duration(duration).prop(\"y\", y);\n }\n },\n\n centerProtein: function(duration) {\n model.batch(function() {\n var cm = api.proteinCenterOfMass(),\n xDiff = model.properties.viewPortX +\n model.properties.viewPortWidth / 2 - cm.x,\n yDiff = model.properties.viewPortY +\n model.properties.viewPortHeight / 2 - cm.y,\n minX = model.properties.minX + 0.1,\n maxX = model.properties.maxX - 0.1,\n minY = model.properties.minY + 0.1,\n maxY = model.properties.maxY - 0.1,\n len = model.getNumberOfAtoms(),\n i, x, y;\n\n for (i = 0; i < len; i++) {\n x = model.getAtomProperties(i).x;\n y = model.getAtomProperties(i).y;\n if (x + xDiff > maxX) xDiff = maxX - x;\n if (x + xDiff < minX) xDiff = minX - x;\n if (y + yDiff > maxY) yDiff = maxY - y;\n if (y + yDiff < minY) yDiff = minY - y;\n }\n for (i = 0; i < len; i++) {\n x = model.getAtomProperties(i).x + xDiff;\n y = model.getAtomProperties(i).y + yDiff;\n if (duration) {\n model.atomTransition().id(i).duration(duration).prop(\"x\", x);\n model.atomTransition().id(i).duration(duration).prop(\"y\", y);\n } else {\n model.setAtomProperties(i, {\n x: x,\n y: y\n });\n }\n }\n });\n model.tickInPlace();\n },\n\n connectAminoAcid: function(codonIdx) {\n if (codonIdx < 1) return;\n var r1 = model.getAtomProperties(codonIdx - 1).radius,\n r2 = model.getAtomProperties(codonIdx).radius,\n // Length of bond is based on the radii of AAs.\n bondLen = (r1 + r2) * 1.25;\n // 10000 is a typical strength for bonds between AAs.\n model.addRadialBond({\n atom1: codonIdx,\n atom2: codonIdx - 1,\n length: bondLen,\n strength: 10000\n });\n model.setAtomProperties(codonIdx - 1, {\n pinned: false\n });\n },\n\n translationCompleted: function() {\n var atomsCount = model.getNumberOfAtoms();\n if (atomsCount > 0) {\n // Unpin the last atom. Note that sometimes translation\n // can end without any atom.\n model.setAtomProperties(atomsCount - 1, {\n pinned: false\n });\n }\n },\n\n transitionEnded: function() {\n // Transition has just ended so remove it\n // from transitions list.\n ongoingTransitions.shift();\n if (ongoingTransitions.length > 0) {\n doStateTransition(ongoingTransitions[0]);\n }\n },\n\n stopCodonsHash: function() {\n return stopCodonsHash;\n },\n\n lastTranslationStep: function() {\n return lastTranslationStep;\n },\n\n /**\n * Returns center of mass coridantes of the whole protein.\n * When there are no amino acids, returns null.\n *\n * @return {Object|null} protein's center of mass, e.g. {x: 1, y: 2}\n * or null when there are no amino acids.\n */\n proteinCenterOfMass: function() {\n var totalMass = 0,\n xcm = 0,\n ycm = 0,\n len = model.getNumberOfAtoms(),\n atom, i;\n\n if (len === 0) {\n return null;\n }\n\n // Note that there is a strong asumption that there are *only* amino\n // acids in the model.\n for (i = 0, len = model.getNumberOfAtoms(); i < len; i++) {\n atom = model.getAtomProperties(i);\n xcm += atom.x * atom.mass;\n ycm += atom.y * atom.mass;\n totalMass += atom.mass;\n }\n xcm /= totalMass;\n ycm /= totalMass;\n return {\n x: xcm,\n y: ycm\n };\n },\n\n /**\n * Generates a new protein (and removes all existing atoms before).\n *\n * @param {array} aaSequence defines expected sequence of amino acids. Pass undefined and provide\n * 'expectedLength' if you want to generate a random protein.\n * @param {Number} expectedLength controls the maximum (and expected) number of amino\n * acids of the resulting protein. Provide this parameter only when 'aaSequence'\n * is undefined. When expected length is too big (due to limited area of the model),\n * the protein will be truncated and its real length returned.\n * @return {Number} number of created amino acids (<= expectedLength).\n */\n generateProtein: function(aaSequence, expectedLength, paddingTop, paddingBottom) {\n // Process arguments.\n expectedLength = aaSequence ? aaSequence.length : expectedLength;\n paddingTop = paddingTop || 0;\n paddingBottom = paddingBottom || 0;\n\n var minX = model.properties.minX,\n minY = model.properties.minY + paddingBottom,\n maxX = model.properties.maxX,\n maxY = model.properties.maxY - paddingTop,\n createdAA = 0;\n\n // First, make sure that model is empty.\n removeAminoAcids();\n\n model.batch(function() {\n // Options for .addAtom modeler's method.\n var opt = {\n suppressCheck: true\n },\n width = maxX - minX,\n height = maxY - minY,\n aaCount = aminoacidsHelper.lastElementID - aminoacidsHelper.firstElementID + 1,\n xPos, yPos, xStep, yStep, el, props, radius, prevRadius, bondLen, i,\n\n // This function controls how X coordinate is updated,\n // using current Y coordinate as input.\n turnHeight = 0.6,\n xStepFunc = function(y) {\n if (y > height - turnHeight || y < turnHeight) {\n // Close to the boundary increase X step.\n return 0.1;\n }\n return 0.02 - Math.random() * 0.04;\n },\n\n // This function controls how Y coordinate is updated,\n // using current Y coordinate and previous result as input.\n changeHeight = 0.3,\n yStepFunc = function(y, prev) {\n if (prev === 0) {\n // When previously 0 was returned,\n // now it's time to switch direction of Y step.\n if (y > 0.5 * maxY) {\n return -0.1;\n }\n return 0.1;\n }\n if (yPos > maxY - changeHeight || yPos < changeHeight) {\n // Close to the boundary return 0 to make smoother turn.\n return 0;\n }\n // In a typical situation, just return previous value.\n return prev;\n },\n\n getRandomAA = function() {\n return Math.floor(aaCount * Math.random()) + aminoacidsHelper.firstElementID;\n };\n\n // Add the first amino acid. Start from the lower-left corner of\n // model area.\n xPos = minX + 0.1;\n yPos = minY + 0.1;\n xStep = 0;\n yStep = 0;\n el = aaSequence ? aminoacidsHelper.abbrToElement(aaSequence[0]) : getRandomAA();\n radius = model.getElementProperties(el).radius;\n props = {\n x: xPos,\n y: yPos,\n element: el,\n visible: true\n };\n\n model.addAtom(props, opt);\n createdAA += 1;\n\n // Add remaining amino acids.\n for (i = 1; i < expectedLength; i++) {\n xPos = props.x;\n yPos = props.y;\n\n // Update step.\n xStep = xStepFunc(yPos);\n yStep = yStepFunc(yPos, yStep);\n\n // Update coordinates of new AA.\n xPos += xStep * 1.7;\n yPos += yStep * 1.7;\n\n if (xPos > width - 0.1) {\n // No space left for new AA.\n return;\n }\n\n el = aaSequence ? aminoacidsHelper.abbrToElement(aaSequence[i]) : getRandomAA();\n props = {\n x: xPos,\n y: yPos,\n element: el,\n visible: true\n };\n model.addAtom(props, opt);\n createdAA += 1;\n\n // Length of bond is based on the radii of AAs.\n prevRadius = radius;\n radius = model.getElementProperties(el).radius;\n bondLen = (radius + prevRadius) * 1.25;\n // 10000 is a typical strength for bonds between AAs.\n model.addRadialBond({\n atom1: i,\n atom2: i - 1,\n length: bondLen,\n strength: 10000\n });\n }\n });\n // We have to use a new batch so atoms array will be updated and we\n // can use getAtomProperties for recently added atoms.\n model.batch(function() {\n // Center protein (X coords only) in the viewport. Make sure\n // that we don't exceed model boundaries.\n var proteinsMaxX = model.getAtomProperties(createdAA - 1).x,\n proteinsCenter = (proteinsMaxX - minX) / 2,\n viewPortCenter = model.properties.viewPortX + model.properties.viewPortWidth / 2,\n spaceOnRight = maxX - proteinsMaxX,\n shift = Math.max(0, Math.min(viewPortCenter - proteinsCenter, spaceOnRight)),\n i;\n\n // Shift all AAs.\n for (i = 0; i < expectedLength; i++) {\n model.setAtomProperties(i, {\n x: model.getAtomProperties(i).x + shift\n });\n }\n });\n\n // Minize energy so the protein will look better.\n model.minimizeEnergy();\n\n // Return number of created AA.\n return createdAA;\n }\n };\n\n model.addPropertiesListener([\"DNA\"], DNAUpdated);\n model.addPropertiesListener([\"DNAState\"], stateUpdated);\n updateGeneticProperties();\n return api;\n}\n","\nvar MIN_FPS = 2.5;\n\nfunction PerformanceOptimizer(model) {\n /** @private */\n this._model = model;\n /** @private */\n this._initialTimeStep = this._model.get('timeStep');\n /** @private */\n this._maxTimeStep = this._initialTimeStep * 2;\n /** @private */\n this._targetProgressRate = this._initialTimeStep * this._model.get('timeStepsPerTick') * 60; // 60fps\n /**\n * Indicates whether performance optimizer is enabled or not.\n * @type {Boolean}\n */\n this.enabled = false;\n}\n\nPerformanceOptimizer.prototype._assessPerformance = function() {\n if (!this.enabled || this._model.isStopped()) {\n return;\n }\n\n var progressRate = this._model.getSimulationProgressRate(),\n fps = this._model.getFPS(),\n timeStep = this._model.get('timeStep'),\n timeStepsPerTick = this._model.get('timeStepsPerTick'),\n currentMaxTimeStep = this._model.get('temperatureControl') ? this._maxTimeStep * 2.5 : this._maxTimeStep;\n\n if (progressRate < 0.9 * this._targetProgressRate) {\n // Try to increase timeStep and if it's impossible,\n // touch timeStepsPerTick (what probably decrease FPS and\n // animation smoothness).\n if (1.1 * timeStep < currentMaxTimeStep) {\n this._model.set('timeStep', 1.1 * timeStep);\n } else if (fps > MIN_FPS) {\n this._model.set('timeStepsPerTick', Math.round(1.1 * timeStepsPerTick + 0.5));\n }\n } else if (progressRate > 1.1 * this._targetProgressRate) {\n // If simulation is going to fast, decrease timeStepsPerTick\n // what should make animations smoother.\n this._model.set('timeStepsPerTick', Math.round(0.9 * timeStepsPerTick - 0.5));\n }\n setTimeout($.proxy(this._assessPerformance, this), 250);\n};\n\nPerformanceOptimizer.prototype.enable = function() {\n if (this.enabled) {\n return;\n }\n this._model.start();\n this.enabled = true;\n this._model.set('timeStepsPerTick', 5);\n setTimeout($.proxy(this._assessPerformance, this), 250);\n};\n\nPerformanceOptimizer.prototype.disable = function() {\n this.enabled = false;\n};\n\nexport default PerformanceOptimizer;\n","\n/**\n * Abstract class, which defines basic interface for property transition.\n * It allows to smoothly change property over desired time period.\n *\n * Note that this class *can't* be instantiated. It should be used\n * as a base class for other classes, which should implement following\n * interface:\n * - getObjectProperties(id)\n * - setObjectProperties(id, props)\n *\n * Note that under the hood D3 ease and interpolate methods are used.\n * Also interface is similar to D3 transitions.\n */\nfunction PropertyTransition() {\n this.isFinished = false;\n this._duration = 0;\n this._easeFunc = d3.ease(\"cubic-in-out\"); // also default in d3\n this._elapsedTime = 0;\n this._id = null;\n this._propName = null;\n this._endValue = null;\n this._interpolator = null;\n\n // Check whether required methods are implemented.\n // This class can't be instantiated, only subclasses\n // implementing specified interface:\n if (this.getObjectProperties == null) {\n throw new Error(\"getObjectProperties method must be implemented by descendant!\");\n }\n if (this.setObjectProperties == null) {\n throw new Error(\"setObjectProperties method must be implemented by descendant!\");\n }\n}\n\n/**\n * Sets ID of processed object. It will be passed to\n * getObjectProperties and setObjectProperties.\n * @param {*} id\n * @return {PropertyTransition} this (method chaining).\n */\nPropertyTransition.prototype.id = function(id) {\n this._id = id;\n return this;\n};\n\n/**\n * Sets property name and its final value.\n * @param {String} propName\n * @param {*} endValue\n * @return {PropertyTransition} this (method chaining).\n */\nPropertyTransition.prototype.prop = function(propName, endValue) {\n this._propName = propName;\n this._endValue = endValue;\n return this;\n};\n\n/**\n * Sets transition duration.\n * @param {number} duration Transition duration.\n * @return {PropertyTransition} this (method chaining).\n */\nPropertyTransition.prototype.duration = function(duration) {\n this._duration = duration;\n return this;\n};\n\n/**\n * Sets transition delay.\n * @param {number} delay Transition delay.\n * @return {PropertyTransition} this (method chaining).\n */\nPropertyTransition.prototype.delay = function(delay) {\n this._elapsedTime = -delay;\n return this;\n};\n\n/**\n * Sets easing function duration. Note that under the hood\n * d3.ease function is used to generate easing function.\n * Please see:\n * https://github.com/mbostock/d3/wiki/Transitions#wiki-d3_ease\n *\n * @param {string} funcName Function name.\n * @return {PropertyTransition} this (method chaining).\n */\nPropertyTransition.prototype.ease = function(funcName) {\n this._easeFunc = d3.ease(funcName);\n return this;\n};\n\n/**\n * Processes the transition. This should be used by the model\n * implementing transitions support. When transition is finished,\n * isFinished field will be set to true.\n * @param {number} elapsedTime elapsed time, units have to be\n * consistent with duration time.\n */\nPropertyTransition.prototype.process = function(elapsedTime) {\n if (this.isFinished || this._incompleteSpec()) {\n return;\n }\n var t, props;\n\n this._elapsedTime += elapsedTime;\n if (this._elapsedTime < 0) {\n // Elapsed time can be negative when there was a delay specified (which\n // sets elapsedTime to -delay).\n return;\n }\n if (this._interpolator == null) {\n this._interpolator = d3.interpolate(this.getObjectProperties(this._id)[this._propName], this._endValue);\n }\n t = Math.min(1, this._elapsedTime / this._duration);\n t = this._easeFunc(t);\n props = {};\n props[this._propName] = this._interpolator(t);\n // Update object properties.\n this.setObjectProperties(this._id, props);\n if (t >= 1) {\n // This ensures that 1 value is always reached.\n this.isFinished = true;\n }\n};\n\n/**\n * getObjectProperties method must be implemented by descendant!\n * Required interface:\n * @param {*} id Object ID, value passed\n * to .id() method will be used.\n * @return {Object} Properties hash.\n */\nPropertyTransition.prototype.getObjectProperties = null;\n\n/**\n * setObjectProperties method must be implemented by descendant!\n * Required interface:\n * @param {*} id Object ID, value passed\n * to .id() method will be used.\n * @param {Object} props Properties hash.\n */\nPropertyTransition.prototype.setObjectProperties = null;\n\n/**\n * @private\n * @return {boolean} true when transition specification is incomplete.\n */\nPropertyTransition.prototype._incompleteSpec = function() {\n return this._id == null || this._propName == null || this._endValue == null;\n};\n\nexport default PropertyTransition;","\nimport inherit from \"common/inherit\";\nimport PropertyTransition from \"common/models/property-transition\";\n\n\nfunction AtomTransition(model) {\n // Call super constructor.\n PropertyTransition.call(this);\n this._model = model;\n}\ninherit(AtomTransition, PropertyTransition);\n\n\nAtomTransition.prototype.setObjectProperties = function(id, props) {\n this._model.setAtomProperties(id, props);\n};\n\nAtomTransition.prototype.getObjectProperties = function(id) {\n return this._model.getAtomProperties(id);\n};\n\nexport default AtomTransition;\n","/**\n This plugin adds chemical reactions functionality to the MD2D engine.\n\n Datatable changes:\n atoms:\n sharedElectrons: an int representing the number of valence electrons currently shared\n with other atom. When sharedElectrons + valenceElectrons == 8 (or == 2 for helium), atom\n will no longer participate in chemical reactions.\n*/\n\nimport arrays from 'arrays';\nimport arrayTypes from 'common/array-types';\nimport metadata from 'models/md2d/models/metadata';\nimport validator from 'common/validator';\nimport constants from 'models/md2d/models/engine/constants/index';\nimport { getAngleBetweenVec } from 'models/md2d/models/engine/math/utils';\n\nvar\n unit = constants.unit,\n\n BOND_LEN_RATIO = 0.6, // follows Classic MW constant.\n // Based on the Classic MW constants defining bond style.\n BOND_TYPE = {\n 1: 101, // single bond\n 2: 107, // double bond\n 3: 108 // tripe bond\n },\n BOND_TYPE_INV = (function() {\n var result = {};\n Object.keys(BOND_TYPE).forEach(function(key) {\n result[BOND_TYPE[key]] = key;\n });\n return result;\n }()),\n\n ANGULAR_BOND_STRENGTH = 50; // follows Classic MW default value.\n\n// Dot product of [x1, y1] and [x2, y2] vectors.\nfunction dot(x1, y1, x2, y2) {\n return x1 * x2 + y1 * y2;\n}\n\n// Returns true if array1 and array2 have at least one common element, false otherwise.\nfunction commonElement(array1, array2) {\n var len1 = array1.length,\n len2 = array2.length,\n i, j, el1;\n // It's a brutal force approach, but note that maximum length of the array is 4. We use that\n // function to compare if two atoms have a common bonded atom. In chemical reactions, only\n // 4 bonds can be formed per atom.\n for (i = 0; i < len1; i++) {\n el1 = array1[i];\n for (j = 0; j < len2; j++) {\n if (el1 === array2[j]) return true;\n }\n }\n return false;\n}\n\nexport default function ChemicalReactions(engine, _properties) {\n var api,\n\n properties = validator.validateCompleteness(metadata.chemicalReactions, _properties),\n updateInterval = properties.updateInterval,\n createAngularBonds = properties.createAngularBonds,\n noLoops = properties.noLoops,\n valenceElectrons = properties.valenceElectrons,\n bondEnergy = properties.bondEnergy,\n activationEnergy = properties.activationEnergy,\n bondProbability = properties.bondProbability,\n\n // Helper array used only during bonds exchange process. When atom has radial bonds (one or\n // more), one of them (random) will be stored in this array. It will be exchanged with\n // free radical in case of collision.\n bondToExchange = [],\n\n // Flag indicating whether bonds were changed during last calculations. If so, forces\n // recalculation should be triggered.\n bondsChanged = false,\n\n // Set of modified atoms, so atoms that have bonds added or removed.\n modifiedAtoms = {},\n\n atoms,\n elements,\n radialBonds,\n angularBonds;\n\n function updateAtomsTable() {\n var length = atoms.x.length;\n atoms.sharedElectrons = arrays.create(length, 0, arrayTypes.int8Type);\n }\n\n function updateRadialBondsTable() {\n var length = radialBonds.atom1.length;\n radialBonds.creationPotential = arrays.create(length, 0, arrayTypes.floatType);\n }\n\n function isRadical(i) {\n var v = valenceElectrons[atoms.element[i]],\n s = atoms.sharedElectrons[i];\n return (s < v) && (v + s < 8);\n }\n\n // Returns length of bond between elements i and j.\n function getBondLength(i, j) {\n return BOND_LEN_RATIO * (elements.sigma[i] + elements.sigma[j]);\n }\n\n // Returns strength of bond between elements i and j.\n function getBondStrength(i, j) {\n // In Classic MW bond strength is in units of eV per 0.01 nm. Convert to eV/nm (x 1e4) and use\n // the same method to calculate bond strength.\n return 2e4 * Math.sqrt(elements.epsilon[i] * elements.epsilon[j]);\n }\n\n function getUnpairedElectrons(i) {\n // Don't support quadruple bonds, as they are unrealistic and can cause problems\n // (e.g. there is :C=C:, but not C==C).\n var v = valenceElectrons[atoms.element[i]];\n return Math.min(Math.min(8 - v, v) - atoms.sharedElectrons[i]);\n }\n\n // Returns a number indicating whether a bond between atoms atom1 and atom2 would be\n // a single (1), double (2) or triple (3) bond.\n // Bond type will be based on two factors:\n // - available electron slots,\n // - probability, e.g. it's more likely than single bond will be formed instead of double or\n // triple (see: bondProbability option)\n function getPossibleBondType(atom1, atom2, atom2Mod) {\n if (atom2Mod === undefined) atom2Mod = 0;\n var maxType = Math.min(3, getUnpairedElectrons(atom1), getUnpairedElectrons(atom2) + atom2Mod);\n // Only single bond is possible or no bond at all.\n if (maxType <= 1) {\n return maxType;\n } else {\n // Use probabilistic approach to choose a bond type.\n var prob = getBondTypeProbability(atoms.element[atom1], atoms.element[atom2]),\n randomValue = Math.random();\n\n if (maxType === 3) {\n if (randomValue < prob[0]) {\n return 1;\n } else if (randomValue < prob[0] + prob[1]) {\n return 2;\n } else {\n return 3;\n }\n } else { // maxType === 2\n // Note that when only single or double bond can be created, we add triple bond\n // likelihood to single bond likelihood! So for default 80% - 15% - 5% configuration,\n // we will end up with 85% for single bond and 15% for double bond.\n if (randomValue < prob[0] + prob[2]) {\n return 1;\n } else {\n return 2;\n }\n }\n }\n }\n\n // Returns a number indicating type of existing radial bond.\n function getBondType(bondIdx) {\n // Convert 101, 107, 108 into 1, 2, 3.\n var type = radialBonds.type[bondIdx] - 105;\n // We will get -4 for 101 and 2, 3 for 107, 108.\n return type < 0 ? 1 : type;\n }\n\n // TODO: (micro-)optimize functions below (?). They can be more elegant and require less work.\n\n // Returns bond chemical energy between elements i and j. Type indicates whether it's a single\n // (1 or undefined), double (2) or triple (3) bond.\n function getBondEnergy(i, j, type) {\n if (type === undefined) type = 1;\n switch (type) {\n case 1:\n return bondEnergy[i + \"-\" + j] != null ? bondEnergy[i + \"-\" + j] :\n bondEnergy[j + \"-\" + i] != null ? bondEnergy[j + \"-\" + i] :\n bondEnergy[\"default\"];\n case 2:\n return bondEnergy[i + \"=\" + j] != null ? bondEnergy[i + \"=\" + j] :\n bondEnergy[j + \"=\" + i] != null ? bondEnergy[j + \"=\" + i] :\n getBondEnergy(i, j, 1) * 2;\n case 3:\n return bondEnergy[i + \"#\" + j] != null ? bondEnergy[i + \"#\" + j] :\n bondEnergy[j + \"#\" + i] != null ? bondEnergy[j + \"#\" + i] :\n getBondEnergy(i, j, 1) * 3;\n }\n }\n\n // Returns activation energy when element i collides with j-k pair.\n function getActivationEnergy(i, j, k) {\n // order of j-k pair doesn't matter.\n return activationEnergy[i + \"+\" + j + \"-\" + k] != null ? activationEnergy[i + \"+\" + j + \"-\" + k] :\n activationEnergy[i + \"+\" + k + \"-\" + j] != null ? activationEnergy[i + \"+\" + k + \"-\" + j] :\n activationEnergy[\"default\"];\n }\n\n // Returns bond probability when element i collides with j.\n function getBondTypeProbability(i, j) {\n // order of j-k pair doesn't matter.\n return bondProbability[i + \"-\" + j] != null ? bondProbability[i + \"-\" + j] :\n bondProbability[j + \"-\" + i] != null ? bondProbability[j + \"+\" + i] :\n bondProbability[\"default\"];\n }\n\n\n // Returns energy needed to exchange bond between element i and j-k pair. So when collision\n // has bigger energy than returned value, bond should transform from j-k to i-j.\n function getEnergyForBondExchange(i, j, k, oldType, newType) {\n var oldEnergy = getBondEnergy(j, k, oldType),\n newEnergy = getBondEnergy(i, j, newType);\n\n if (newEnergy > oldEnergy) {\n // The final state is more stable, i-j bond (new) has more chemical energy than j-k (old).\n // Such transition should be easy, return just activation energy.\n return getActivationEnergy(i, j, k);\n } else {\n // The final state is less stable, i-j bond (new) is has less chemical energy than j-k (old).\n // Such transition should be harder, return activation energy and chemical energies\n // difference.\n return getActivationEnergy(i, j, k) + oldEnergy - newEnergy;\n }\n }\n\n function addRadialBond(props, a1, a2, bondType) {\n props.atom1 = a1;\n props.atom2 = a2;\n props.type = BOND_TYPE[bondType];\n engine.addRadialBond(props);\n bondsChanged = true;\n modifiedAtoms[a1] = true;\n modifiedAtoms[a2] = true;\n // Update shared electrons count.\n atoms.sharedElectrons[a1] += bondType;\n atoms.sharedElectrons[a2] += bondType;\n // In theory we can update bondToExchange with the newly created bond. However if we don't\n // do it, we won't exchange the bond in the same step we created it. It makes sense - things\n // will be clearer when e.g. user observes simulation in slow motion and tries to analyze\n // single step of chemical reaction.\n }\n\n function removeRadialBond(i, a1, a2, bondType) {\n engine.removeRadialBond(i, true);\n bondsChanged = true;\n modifiedAtoms[a1] = true;\n modifiedAtoms[a2] = true;\n // Update shared electrons count.\n atoms.sharedElectrons[a1] -= bondType;\n atoms.sharedElectrons[a2] -= bondType;\n }\n\n function transferRadialBond(i, props, a1, a2, a3, newType, oldType) {\n props.atom1 = a1;\n props.atom2 = a2;\n props.type = BOND_TYPE[newType];\n engine.setRadialBondProperties(i, props, true);\n bondsChanged = true;\n modifiedAtoms[a1] = true;\n modifiedAtoms[a2] = true;\n modifiedAtoms[a3] = true;\n // Update shared electrons count.\n atoms.sharedElectrons[a1] += newType;\n atoms.sharedElectrons[a2] += newType - oldType;\n atoms.sharedElectrons[a3] -= oldType;\n // a3 is no longer connected to bond with ID = bondIdx.\n if (bondToExchange[a3] === i) bondToExchange[a3] = undefined;\n // a2 is still connected to bond with ID = bondIdx, however if we set bondToExchange[a2]\n // to undefined, the same bond won't be transfered again during this step. It's not\n // necessary, but it will limit number of reactions during single step, making things\n // easier to observe and follow (otherwise the bond can exchanged multiple times during\n // one step, what can be confusing for users that will see only the final result).\n bondToExchange[a2] = undefined;\n }\n\n function addAngularBond(props) {\n engine.addAngularBond(props);\n bondsChanged = true;\n }\n\n function setAngularBondProperties(i, props) {\n engine.setAngularBondProperties(i, props);\n bondsChanged = true;\n }\n\n function cleanupModifiedAtomsAndFlags() {\n bondsChanged = false;\n Object.keys(modifiedAtoms).forEach(function(key) {\n delete modifiedAtoms[key];\n });\n }\n\n // TODO: we shouldn't have to do it explicitely at each step. Perhaps we should just modify add\n // and remove radial bond operations to make sure that sharedElectron count is always correct\n // (e.g. listen on approprieate events, but it's impossible at the moment).\n function validateSharedElectronsCount() {\n var type, i, len;\n for (i = 0, len = engine.getNumberOfAtoms(); i < len; i++) {\n atoms.sharedElectrons[i] = 0;\n }\n for (i = 0, len = engine.getNumberOfRadialBonds(); i < len; i++) {\n type = getBondType(i);\n atoms.sharedElectrons[radialBonds.atom1[i]] += type;\n atoms.sharedElectrons[radialBonds.atom2[i]] += type;\n }\n }\n\n function updateBondToExchangeArray() {\n var i, len;\n bondToExchange.length = 0;\n for (i = 0, len = engine.getNumberOfRadialBonds(); i < len; i++) {\n // Of course when a1 or a2 has more than one radial bond, only one will be saved.\n // However that's perfectly fine, as it's enough for bonds exchange mechanism.\n bondToExchange[radialBonds.atom1[i]] = bondToExchange[radialBonds.atom2[i]] = i;\n }\n }\n\n // When forcedCleanup equals to true, all bonds will be removed.\n function destroyBonds(forcedCleanup) {\n var i, a1, a2, el1, el2, dpot,\n xij, yij, ijsq, bondLen, bondType, chemEnergy,\n ljAdjustment,\n bondRemoved;\n\n i = 0;\n while (i < engine.getNumberOfRadialBonds()) {\n bondRemoved = false;\n\n a1 = radialBonds.atom1[i];\n a2 = radialBonds.atom2[i];\n bondLen = radialBonds.length[i];\n\n xij = atoms.x[a1] - atoms.x[a2];\n yij = atoms.y[a1] - atoms.y[a2];\n ijsq = xij * xij + yij * yij;\n\n dpot = Math.sqrt(ijsq) - bondLen;\n if (dpot > 0 || forcedCleanup) {\n // Bond is longer than its basic length, there is potential energy.\n dpot = 0.5 * radialBonds.strength[i] * dpot * dpot;\n // Bond chemical energy.\n el1 = atoms.element[a1];\n el2 = atoms.element[a2];\n bondType = getBondType(i);\n\n // increase in LJ potential energy caused by moving from (spot where bond formed)\n // to (spot where bond broken)\n ljAdjustment = -radialBonds.creationPotential[i] - engine.ljCalculator[el1][el2].potentialFromSquaredDistance(ijsq);\n chemEnergy = getBondEnergy(el1, el2, bondType);\n\n if (dpot - ljAdjustment > chemEnergy || forcedCleanup) {\n // Potential energy is larger than chemical energy, destroy bond.\n dpot -= chemEnergy;\n // LJ potential will now be calculated, take it into account.\n dpot -= ljAdjustment;\n\n if (engine.addKEToAtomPairAndConserveMomentum(dpot, a1, a2)) {\n removeRadialBond(i, a1, a2, bondType);\n bondRemoved = true;\n } else if (forcedCleanup) {\n // If it is impossible to add given amount of KE to just two atoms, try to add it\n // to all atoms. It's best what we can do to try to conserve energy during forced\n // cleanup.\n engine.addKEToAtoms(dpot);\n removeRadialBond(i, a1, a2, bondType);\n bondRemoved = true;\n }\n }\n }\n // After bond removal, all other bonds are re-indexed!\n if (!bondRemoved) i++;\n }\n }\n\n function createBonds(neighborList) {\n var N = engine.getNumberOfAtoms(),\n nlist = neighborList.getList(),\n i, len,\n a1, a2,\n el1, el2,\n xi, yi, xij, yij, ijsq, bondLen;\n\n // Get all proximal pairs of atoms, using neighborList.\n for (a1 = 0; a1 < N; a1++) {\n el1 = atoms.element[a1];\n xi = atoms.x[a1];\n yi = atoms.y[a1];\n\n for (i = neighborList.getStartIdxFor(a1), len = neighborList.getEndIdxFor(a1); i < len; i++) {\n a2 = nlist[i];\n\n // Ignore bonded atoms.\n if (engine.atomsBonded(a1, a2)) continue;\n\n el2 = atoms.element[a2];\n xij = xi - atoms.x[a2];\n yij = yi - atoms.y[a2];\n\n ijsq = xij * xij + yij * yij;\n bondLen = BOND_LEN_RATIO * (elements.sigma[el1] + elements.sigma[el2]);\n\n if (ijsq < bondLen * bondLen) {\n // Distance is less than possible bond length, check if there will be a collision.\n collide(a1, a2, xij, yij, ijsq);\n }\n }\n }\n }\n\n function willCollide(a1, a2, xij, yij) {\n // Dot product is used to calculate cosinus of angle. Atoms are considered to be colliding\n // when they are going towards each other and angle between velocity vectors and vector that\n // connects both atoms is less than 90 degrees.\n return !(dot(atoms.vx[a1], atoms.vy[a1], xij, yij) >= 0.0 &&\n dot(atoms.vx[a2], atoms.vy[a2], xij, yij) <= 0.0);\n }\n\n function collide(a1, a2, xij, yij, ijsq) {\n var a1Radical, a2Radical, bothRadical, a1a2Exchange, a2a1Exchange;\n\n if (willCollide(a1, a2, xij, yij)) {\n a1Radical = isRadical(a1);\n a2Radical = isRadical(a2);\n bothRadical = a1Radical && a2Radical;\n a1a2Exchange = a1Radical && bondToExchange[a2] !== undefined;\n a2a1Exchange = a2Radical && bondToExchange[a1] !== undefined;\n\n if (bothRadical || a1a2Exchange || a2a1Exchange) {\n // Check if there is a common element in directly bonded atoms. If so, don't let the\n // chemical reaction happen, as we don't want to form triangles. Note that we defer\n // this check as much as it's possible, as it can be little bit expensive.\n if (commonElement(engine.getBondedAtoms(a1), engine.getBondedAtoms(a2))) return;\n // If \"noLoops\" mode is enabled, check whether a1 is a part of the same molecule as a2.\n if (noLoops && engine.getMoleculeAtoms(a2).indexOf(a1) !== -1) return;\n\n if (bothRadical) {\n // Simple case, two radicals, just create a new bond.\n makeBond(a1, a2, ijsq);\n } else if (a1a2Exchange) {\n tryToExchangeBond(a1, a2, bondToExchange[a2], xij, yij, ijsq);\n } else if (a2a1Exchange) {\n tryToExchangeBond(a2, a1, bondToExchange[a1], xij, yij, ijsq);\n }\n }\n }\n }\n\n function makeBond(a1, a2, ijsq) {\n var el1 = atoms.element[a1],\n el2 = atoms.element[a2],\n bondType = getPossibleBondType(a1, a2),\n en = getBondEnergy(el1, el2, bondType),\n length, strength, dpot, creationPotential;\n\n if (en <= 0) return; // Fast path when bond energy is less than 0.\n\n length = getBondLength(el1, el2);\n strength = getBondStrength(el1, el2);\n\n // Energy conservation:\n // 1. Radial bond potential energy.\n dpot = Math.sqrt(ijsq) - length;\n dpot = -0.5 * strength * dpot * dpot;\n // 2. Bond chemical energy.\n dpot += en;\n\n // Account for LJ potential \"removed\" from the system by bond creation (because the engine\n // doesn't compute LJ force between bonded pairs)\n creationPotential = -engine.ljCalculator[el1][el2].potentialFromSquaredDistance(ijsq);\n\n if (creationPotential > 0) {\n // If creationPotential is > 0, a1 and a2 are impinging on the \"LJ core\". If we create\n // the bond, then when the bond breaks that potential will be released all at once via\n // addKEToAtoms and this eventually leads to model divergence.\n return;\n }\n\n if (engine.addKEToAtomPairAndConserveMomentum(dpot, a1, a2)) {\n addRadialBond({\n length: length,\n strength: strength,\n creationPotential: creationPotential\n }, a1, a2, bondType);\n }\n }\n\n function tryToExchangeBond(a1, a2, bondIdx, xij, yij, ijsq) {\n var el1 = atoms.element[a1],\n el2 = atoms.element[a2],\n a1Old = radialBonds.atom1[bondIdx],\n a2Old = radialBonds.atom2[bondIdx],\n el1Old = atoms.element[a1Old],\n el2Old = atoms.element[a2Old],\n // Atom that can lose the bond, it has to be different from a1 and a2.\n a3 = a1Old !== a1 && a1Old !== a2 ? a1Old : a2Old,\n el3 = atoms.element[a3],\n\n oldType = getBondType(bondIdx),\n // Take into account that a2 shared electron count is now affected by old bond!\n newType = getPossibleBondType(a1, a2, oldType),\n\n minCollisionEnergy = getEnergyForBondExchange(el1, el2, el3, oldType, newType),\n\n // Calculate the line-of-centers energy.\n ijsr = 1.0 / Math.sqrt(ijsq),\n vxij = atoms.vx[a1] - atoms.vx[a2],\n vyij = atoms.vy[a1] - atoms.vy[a2],\n vxy = vxij * xij * ijsr + vyij * yij * ijsr,\n\n a1Mass = atoms.mass[a1],\n a2Mass = atoms.mass[a2],\n\n collisionEnergy = constants.convert(a1Mass * a2Mass / (a1Mass + a2Mass) * vxy * vxy, {\n from: unit.MW_ENERGY_UNIT,\n to: unit.EV\n }),\n\n newLength, newStrength, oldLength, oldStrength,\n lenDiff, dpot,\n ljAdjustment, creationPotential;\n\n // Use reduced mass to compute head-on kinetic energy.\n if (collisionEnergy > minCollisionEnergy) {\n // Kinetic energy is big enough to transfer radial bond.\n\n newLength = getBondLength(el1, el2);\n newStrength = getBondStrength(el1, el2);\n oldLength = radialBonds.length[bondIdx];\n oldStrength = radialBonds.strength[bondIdx];\n\n // Conserve energy.\n // New bond configuration.\n // 1. Radial bond potential energy.\n lenDiff = Math.sqrt(ijsq) - newLength;\n dpot = -0.5 * newStrength * lenDiff * lenDiff;\n // 2. Bond chemical energy.\n dpot += getBondEnergy(el1, el2, newType);\n creationPotential = -engine.ljCalculator[el1][el2].potentialFromSquaredDistance(ijsq);\n\n if (creationPotential > 0) {\n // as noted in makeBond, allowing the bond to be created now would cause trouble later\n return;\n }\n\n // Old bond configuration.\n xij = atoms.x[a1Old] - atoms.x[a2Old];\n yij = atoms.y[a1Old] - atoms.y[a2Old];\n ijsq = xij * xij + yij * yij;\n // 1. Radial bond potential energy.\n lenDiff = Math.sqrt(ijsq) - oldLength;\n dpot += 0.5 * oldStrength * lenDiff * lenDiff;\n // 2. Bond chemical energy.\n dpot -= getBondEnergy(el1Old, el2Old, oldType);\n\n // Account for difference in LJ potential between creation and release of old bond\n // (remember LJ force is not calculated between bonded pair)\n ljAdjustment = -radialBonds.creationPotential[bondIdx] - engine.ljCalculator[el1Old][el2Old].potentialFromSquaredDistance(ijsq);\n dpot -= ljAdjustment;\n\n if (engine.addKEToAtoms(dpot, a1, a2, a3)) {\n // Update bond, change it from a2-d3 to a1-a2.\n transferRadialBond(bondIdx, {\n length: newLength,\n strength: newStrength,\n creationPotential: creationPotential\n }, a1, a2, a3, newType, oldType);\n }\n }\n }\n\n function removeAngularBondOfModfiedAtoms() {\n // Remove all angular bonds that have modified atoms as a central atom (atom3 prop).\n // Use such \"strange\" form of loop, as while removing one bonds, other change their indexing.\n // So, after removal of bond 5, we should check bond 5 again, as it would be another bond\n // (previously indexed as 6).\n var i = 0;\n while (i < engine.getNumberOfAngularBonds()) {\n if (modifiedAtoms[angularBonds.atom3[i]]) {\n engine.removeAngularBond(i, true);\n } else {\n i++;\n }\n }\n }\n\n function tryToMakeAngularBondsStronger() {\n var i, len, a1, a2, a3, dpot;\n // Try to make angular bonds with strength equal to 0 stronger (if we can conserve energy).\n // Such bonds were added earlier when kinetic energy of atoms was too small to compensate\n // potential energy of angular bond. It's very likely to happen when bond between atoms is\n // much smaller or bigger than expected.\n for (i = 0, len = engine.getNumberOfAngularBonds(); i < len; i++) {\n if (angularBonds.strength[i] === 0) {\n a1 = angularBonds.atom1[i];\n a2 = angularBonds.atom2[i];\n a3 = angularBonds.atom3[i];\n dpot = angularBonds.angle[i] - getAngleBetweenAtoms(a1, a2, a3);\n dpot = -0.5 * ANGULAR_BOND_STRENGTH * dpot * dpot;\n\n if (engine.addKEToAtoms(dpot, a1, a2, a3)) {\n setAngularBondProperties(i, {\n strength: ANGULAR_BOND_STRENGTH\n });\n }\n }\n }\n }\n\n // Returns angle between a1-a3 and a2-a3 vectors.\n function getAngleBetweenAtoms(a1, a2, a3) {\n return getAngleBetweenVec(atoms.x[a1], atoms.y[a1],\n atoms.x[a2], atoms.y[a2],\n atoms.x[a3], atoms.y[a3]);\n }\n\n function getMoleculeAngle(valenceElectrons, sharedElectrons, bondsCount) {\n // Angle depends on number of regions of electric charge around atom. A region of electric\n // charge could be either an unshared pair of electrons or a shared pair (in a bond).\n // The regions of electron density will repel each other to minimize energy, so the following\n // angles are associated with regions of electron density:\n //\n // 4 regions = 90 degree angle\n // 3 regions = 120 degree angle\n // 2 regions = 180 degree angle\n //\n // There calculation about regions of electron density needs to consider the valence setting\n // for the central atom in a triplet grouping. Assuming single bonds this is what we get:\n // valence 1 = n/a (can't be a central atom in a triplet)\n // valence 2 = 2 regions\n // valence 3 = 3 regions\n // valence 4 = 4 regions\n // valence 5 = 4 regions (Two electrons will pair to become a shared pair and not bond. Three bonds possible.)\n // valence 6 = 4 regions (Two pairs of unshared electrons will occur. Two bonds possible.)\n // valence 7 = n/a (can't be a central atom in a triplet)\n // valence 8 = n/a (no bonds can form - this is a noble gas element)\n //\n // If double or triple bonds form then regions of electron density become merged, reducing\n // the total number of regions. Only atoms with valence 3 - 5 could be central atoms and\n // form double or triple bonds.\n // valence 3 with one double bond = 2 regions of electron density\n // valence 4 with one double bond = 3 regions of electron density\n // valence 4 with two double bonds = 2 regions of electron density\n // valence 4 with one triple bond = 2 regions of electron density\n // valence 5 with one double bond = 3 regions of electron density\n //\n // See related PT story: https://www.pivotaltracker.com/story/show/58090710\n //\n // Actually we can implement the whole algorithm using this simple formula:\n return 2 * Math.PI / (Math.min(4, valenceElectrons) - (sharedElectrons - bondsCount));\n }\n\n function setupNewAngularBonds() {\n var i, len, a1, a2, type, angle, ba, possibleBonds;\n // Construct helper structure containing bonded atoms.\n var bondedAtoms = [];\n for (i = 0, len = engine.getNumberOfRadialBonds(); i < len; i++) {\n a1 = radialBonds.atom1[i];\n a2 = radialBonds.atom2[i];\n type = BOND_TYPE_INV[radialBonds.type];\n if (modifiedAtoms[a1]) {\n if (!bondedAtoms[a1]) {\n bondedAtoms[a1] = [a2];\n } else {\n bondedAtoms[a1].push(a2);\n }\n }\n if (modifiedAtoms[a2]) {\n if (!bondedAtoms[a2]) {\n bondedAtoms[a2] = [a1];\n } else {\n bondedAtoms[a2].push(a1);\n }\n }\n }\n\n // Finally construct new angular bonds.\n for (i = 0, len = bondedAtoms.length; i < len; i++) {\n ba = bondedAtoms[i];\n if (!ba || ba.length < 2) continue;\n\n angle = getMoleculeAngle(valenceElectrons[atoms.element[i]], atoms.sharedElectrons[i], ba.length);\n\n if (ba.length === 2) {\n // e.g. A -- B -- A\n a1 = ba[0];\n a2 = ba[1];\n addAngularBondBetween(a1, a2, i, angle);\n } else {\n possibleBonds = [];\n if (ba.length === 3) {\n // e.g. A -- B -- A\n // |\n // A\n pushPossibleBond(possibleBonds, ba[0], ba[1], i);\n pushPossibleBond(possibleBonds, ba[0], ba[2], i);\n pushPossibleBond(possibleBonds, ba[1], ba[2], i);\n } else if (ba.length === 4) {\n // e.g. A\n // |\n // A -- B -- A\n // |\n // A\n pushPossibleBond(possibleBonds, ba[0], ba[1], i);\n pushPossibleBond(possibleBonds, ba[0], ba[2], i);\n pushPossibleBond(possibleBonds, ba[0], ba[3], i);\n pushPossibleBond(possibleBonds, ba[1], ba[2], i);\n pushPossibleBond(possibleBonds, ba[1], ba[3], i);\n pushPossibleBond(possibleBonds, ba[2], ba[3], i);\n }\n possibleBonds.sort(comparePossibleBonds);\n createFirstNPossibleBonds(possibleBonds, ba.length - 1, angle);\n }\n }\n }\n\n function pushPossibleBond(arr, a1, a2, aCentral) {\n arr.push({\n angle: getAngleBetweenAtoms(a1, a2, aCentral),\n a1: a1,\n a2: a2,\n aCentral: aCentral\n });\n }\n\n function comparePossibleBonds(a, b) {\n if (a.angle < b.angle) return -1;\n if (a.angle > b.angle) return 1;\n return 0;\n }\n\n function createFirstNPossibleBonds(array, N, bondAngle) {\n var i, bondDef;\n for (i = 0; i < N; i++) {\n bondDef = array[i];\n addAngularBondBetween(bondDef.a1, bondDef.a2, bondDef.aCentral, bondAngle, bondDef.angle);\n }\n }\n\n function addAngularBondBetween(a1, a2, aCentral, bondAngle, currentAngle) {\n if (!currentAngle) {\n currentAngle = getAngleBetweenAtoms(a1, a2, aCentral);\n }\n var props = {\n atom1: a1,\n atom2: a2,\n atom3: aCentral,\n angle: bondAngle\n };\n // Calculate potential energy of angular bond.\n var dpot = bondAngle - currentAngle;\n dpot = -0.5 * ANGULAR_BOND_STRENGTH * dpot * dpot;\n // If we can't conserve energy, add a \"fake\" angular bond with strength equal to 0.\n // During next steps we will try to make it stronger when the angular bond potential\n // energy will be smaller of kinetic energy of atoms bigger.\n if (engine.addKEToAtoms(dpot, a1, a2, aCentral)) {\n props.strength = ANGULAR_BOND_STRENGTH;\n } else {\n props.strength = 0;\n }\n addAngularBond(props);\n }\n\n // Gets chemical potential energy stored in radial bonds.\n function getBondsChemicalPE() {\n var PE = 0,\n i, len;\n\n for (i = 0, len = engine.getNumberOfRadialBonds(); i < len; ++i) {\n PE -= (getBondEnergy(atoms.element[radialBonds.atom1[i]],\n atoms.element[radialBonds.atom2[i]],\n getBondType(i)) - radialBonds.creationPotential[i]);\n }\n\n return PE;\n }\n\n // Public API.\n api = {\n initialize: function(dataTables) {\n atoms = dataTables.atoms;\n elements = dataTables.elements;\n radialBonds = dataTables.radialBonds;\n angularBonds = dataTables.angularBonds;\n updateAtomsTable();\n updateRadialBondsTable();\n },\n\n performActionWithinIntegrationLoop: function(neighborList, dt, time) {\n // Below there is a stateless way to check if we should perform calculations or not.\n // Calculations should be performed every femtoseconds. In theory we could just\n // remember the last time we did calculations and then check if the current time is larger\n // (or equal) than the last + . However, due to tick history seeking, we can't make\n // an assumption that time value will be always bigger than during the previous function\n // execution.\n var mod = time % updateInterval;\n if (mod === 0 || (mod < dt && Math.floor(time / updateInterval) === Math.round(time / updateInterval))) {\n cleanupModifiedAtomsAndFlags();\n validateSharedElectronsCount();\n destroyBonds();\n // Update bondToExchange array after .destroyBonds() call! bondToExchange array is used\n // only by .createBonds() function anyway.\n updateBondToExchangeArray();\n createBonds(neighborList);\n\n if (createAngularBonds) {\n if (Object.keys(modifiedAtoms).length > 0) {\n // Some reaction took place, update angular bonds.\n removeAngularBondOfModfiedAtoms();\n tryToMakeAngularBondsStronger();\n setupNewAngularBonds();\n } else {\n // In fact this call can be placed before the whole if-else statement. However this\n // is a small optimization, as we can setup optimal order of function calls.\n tryToMakeAngularBondsStronger();\n }\n }\n\n if (bondsChanged) {\n // Update forces coming from new bonds configuration (!).\n engine.updateParticlesAccelerations();\n }\n }\n },\n\n // This function is required by the MD2D engine, so return empty array as\n // nothing has to be serialized in this plugin.\n getState: function() {\n return [];\n },\n\n processOutputState: function(state) {\n state.PE += getBondsChemicalPE();\n },\n\n /**\n * Sets bond energy (dissociation energy) of a bond.\n * @param {string} bondDescription e.g. \"1-1\" means single bond between element 1 and 1,\n * \"1=2\" means double bond between element 1 and 2 etc.\n * @param {number} value bond energy in eV..\n */\n setBondEnergy: function(bondDescription, value) {\n bondEnergy[bondDescription] = value;\n },\n\n /**\n * Sets valence electrons count of the given element.\n * @param {number} element\n * @param {number} value\n */\n setValenceElectrons: function(element, value) {\n valenceElectrons[element] = value;\n // Cleanup all bonds.\n destroyBonds(true);\n validateSharedElectronsCount();\n }\n };\n\n return api;\n};\n"," import performance from 'common/performance';\nimport serialize from 'common/serialize';\nimport validator from 'common/validator';\nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport OutputSupport from 'common/output-support';\nimport TickHistory from 'common/models/tick-history';\nimport { createEngine } from 'models/md2d/models/engine/md2d';\nimport metadata from 'models/md2d/models/metadata';\nimport units from 'models/md2d/models/engine/constants/units';\nimport unitDefinitions from 'models/md2d/models/unit-definitions/index';\nimport UnitsTranslation from 'models/md2d/models/units-translation';\nimport PropertyDescription from 'common/property-description';\nimport Solvent from 'models/md2d/models/solvent';\nimport aminoacids from 'models/md2d/models/aminoacids-props';\nimport aminoacidsHelper from 'models/md2d/models/aminoacids-helper';\nimport GeneticEngine from 'models/md2d/models/engine/genetic-engine';\nimport PerformanceOptimizer from 'models/md2d/models/performance-optimizer';\nimport AtomTransition from 'models/md2d/models/atom-transition';\nimport _ from 'underscore';\nimport QuantumDynamics from 'models/md2d/models/engine/plugins/quantum-dynamics';\nimport ChemicalReactions from 'models/md2d/models/engine/plugins/chemical-reactions';\n// Dependencies.\nvar // plugins\n \n \n\n md2dModelCount = 0;\n\nexport default function Model(initialProperties, initializationOptions, i18n) {\n\n // all models created with this constructor will be of type: \"md2d\"\n this.constructor.type = \"md2d\";\n\n initializationOptions = initializationOptions || {};\n\n var model = {},\n namespace = \"md2dModel\" + (++md2dModelCount),\n\n customSetters = {\n targetTemperature: function(value) {\n engine.setTargetTemperature(value);\n },\n\n temperatureControl: function(value) {\n engine.useThermostat(value);\n },\n\n lennardJonesForces: function(value) {\n engine.useLennardJonesInteraction(value);\n },\n\n coulombForces: function(value) {\n engine.useCoulombInteraction(value);\n },\n\n solventForceType: function(value) {\n engine.setSolventForceType(value);\n },\n\n DNAState: function(value) {\n engine.setDNAState(value);\n },\n\n solventForceFactor: function(value) {\n engine.setSolventForceFactor(value);\n },\n\n additionalSolventForceMult: function(value) {\n engine.setAdditionalSolventForceMult(value);\n },\n\n additionalSolventForceThreshold: function(value) {\n engine.setAdditionalSolventForceThreshold(value);\n },\n\n dielectricConstant: function(value) {\n engine.setDielectricConstant(value);\n },\n\n realisticDielectricEffect: function(value) {\n engine.setRealisticDielectricEffect(value);\n },\n\n VDWLinesCutoff: function(value) {\n var ratio = VDWLinesCutoffMap[value];\n if (ratio) {\n engine.setVDWLinesRatio(ratio);\n }\n },\n\n gravitationalField: function(value) {\n engine.setGravitationalField(value);\n },\n\n modelSampleRate: function() {\n if (!model.isStopped()) model.restart();\n },\n\n viscosity: function(value) {\n engine.setViscosity(value);\n },\n\n polarAAEpsilon: function(value) {\n var polarAAs, element1, element2,\n i, j, len;\n\n // Set custom pairwise LJ properties for polar amino acids.\n // They should attract stronger to better mimic nature.\n polarAAs = aminoacidsHelper.getPolarAminoAcids();\n for (i = 0, len = polarAAs.length; i < len; i++) {\n element1 = polarAAs[i];\n for (j = i + 1; j < len; j++) {\n element2 = polarAAs[j];\n // Set custom pairwise LJ epsilon (default one for AA is -0.1).\n engine.pairwiseLJProperties.set(element1, element2, {\n epsilon: value\n });\n }\n }\n },\n\n electricFieldDensity: function(value) {\n electricField.length = 0; // reuse existing array!\n if (!value) return;\n var minX = 0,\n minY = 0,\n maxX = model.properties.width,\n maxY = model.properties.height,\n diff = model.properties.width / value,\n yOffset = ((maxY / diff) % 1) * diff,\n y = minY + 0.5 * (yOffset + (diff <= maxY ? diff : 0)),\n x;\n while (y < maxY) {\n x = minX + 0.5 * diff;\n while (x < maxX) {\n electricField.push({\n x: x,\n y: y\n });\n x += diff;\n }\n y += diff;\n }\n }\n },\n\n // The set of units currently in effect. (Determined by the 'unitsScheme' property of the\n // model; default value is 'md2d')\n unitsDefinition = unitDefinitions.get(initialProperties.unitsScheme || 'md2d'),\n\n // Object that translates between 'native' md2d units and the units defined\n // by unitsDefinition.\n unitsTranslation = (function() {\n var scheme = initialProperties.unitsScheme || 'md2d';\n // If we're not using MD2D units, we need a translation (which, for each unit type, allows some\n // number of \"native\" MD2D units to stand for 1 translated unit, e.g., 1 nm represents 1m, with\n // the relationships between these ratios set up so that the calculations reamin physically\n // consistent.\n if (scheme !== 'md2d') {\n return new UnitsTranslation(unitsDefinition);\n }\n return undefined;\n }()),\n\n labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n setters: customSetters,\n unitsDefinition: unitsDefinition,\n unitsTranslation: unitsTranslation,\n initialProperties: initialProperties\n }),\n\n dispatch = (function() {\n var d = labModelerMixin.dispatchSupport;\n d.addEventTypes(\"tick\",\n \"addAtom\", \"removeAtom\", \"addRadialBond\", \"removeRadialBond\",\n \"addElectricField\", \"removeElectricField\", \"changeElectricField\",\n \"removeAngularBond\", \"textBoxesChanged\", \"imagesChanged\");\n return d;\n }()),\n\n propertySupport = labModelerMixin.propertySupport,\n\n outputSupport,\n\n VDWLinesCutoffMap = {\n \"short\": 1.33,\n \"medium\": 1.67,\n \"long\": 2.0\n },\n defaultMaxTickHistory = 1000,\n newStep = false,\n lastSampleTime,\n sampleTimes = [],\n\n // FIXME: do we need global reference?\n modelState = window.state = {},\n tickHistory,\n\n // Transitions list.\n transitions = [],\n\n // Molecular Dynamics engine.\n engine = (function() {\n var e = createEngine();\n // Register invalidating change hooks.\n // pairwiseLJProperties object allows to change state which defines state of the whole simulation.\n e.pairwiseLJProperties.registerChangeHooks(propertySupport.invalidatingChangePreHook, propertySupport.invalidatingChangePostHook);\n return e;\n }()),\n\n // Genetic engine.\n geneticEngine,\n\n // An array of elements object.\n editableElements,\n\n // ######################### Main Data Structures #####################\n // They are initialized at the end of this function. These data strucutres\n // are mainly managed by the engine.\n\n // A hash of arrays consisting of arrays of element property values\n elements,\n\n // A hash of arrays consisting of arrays of obstacle property values\n obstacles,\n\n // A hash of arrays consisting of arrays of shape property values\n shapes,\n\n // A hash of arrays consisting of arrays of line property values\n lines,\n\n // A hash of arrays consisting of arrays of electric field property values\n electricFields,\n\n // A hash of arrays consisting of arrays of radial bond property values\n radialBonds,\n\n // A hash of arrays consisting of arrays of angular bond property values\n angularBonds,\n\n // A hash of arrays consisting of arrays of restraint property values\n // (currently atom-only)\n restraints,\n\n // ####################################################################\n\n // An array of objects consisting of atom index numbers and atom property values, for easy\n // consumption by the view. It is updated conservatively from the \"unrolled\" form used for\n // speedy computation by the engine.\n viewAtoms = [],\n\n // An array of objects consisting of radial bond index numbers and radial bond property\n // values, for easy consumption by the view.\n viewRadialBonds = [],\n\n // An array of objects consisting of photon index numbers and property values, for easy\n // consumption by the view. Only defined if the quantum dynamics plugin is used.\n viewPhotons,\n\n // An array of objects consisting of point coordinates and electric field force at that point\n // (e.g. [{ x: 1, y: 2, fx: 0.1, fy: 0.3 }, ...]).\n electricField = [],\n\n // The index of the \"spring force\" used to implement dragging of atoms in a running model\n liveDragSpringForceIndex = null,\n\n // Cached value of the 'friction' property of the atom being dragged in a running model\n liveDragSavedFriction,\n\n // Properties hashes for use by plugins\n pluginProperties;\n\n function processTransitions(timeDiff) {\n var i, len;\n model.startBatch();\n for (i = 0, len = transitions.length; i < len; i++) {\n transitions[i].process(timeDiff);\n }\n // Cleanup finished transitions.\n i = 0;\n while (i < transitions.length) {\n if (transitions[i].isFinished) {\n transitions.splice(i, 1);\n } else {\n i++;\n }\n }\n model.endBatch();\n }\n\n // Returns a copy of 'obj' with value replaced by fn(key, value) for every (key, value) pair.\n // (Underscore doesn't do this: https://github.com/documentcloud/underscore/issues/220)\n function mapValues(obj, fn) {\n obj = _.extend({}, obj);\n for (var k in obj) {\n if (obj.hasOwnProperty(k)) obj[k] = fn(k, obj[k]);\n }\n return obj;\n }\n\n // Modifies a properties hash which has translated units to have MD2D units. Leaves properties\n // without a unitType (or with an unrecognized unitType) unmodified.\n // Returns 'properties' unmodified (not a copy) if there is no units translation in effect.\n function translateToMD2DUnits(properties, metadata) {\n if (!unitsTranslation) return properties;\n return mapValues(properties, function(key, value) {\n return unitsTranslation.translateToModelUnits(value, metadata[key] && metadata[key].unitType);\n });\n }\n\n // Modifies a properties hash which has MD2D units to have translated units. Leaves properties\n // without a unitType (or with an unrecognized unitType) unmodified.\n // Returns 'properties' unmodified (not a copy) if there is no units translation in effect.\n function translateFromMD2DUnits(properties, metadata) {\n if (!unitsTranslation) return properties;\n return mapValues(properties, function(key, value) {\n return unitsTranslation.translateFromModelUnits(value, metadata[key] && metadata[key].unitType);\n });\n }\n\n /**\n Executes the closure 'extract' which extracts from the tick history, then dispatches\n addAtom/removeAtom, etc, events as needed.\n\n This prevents unneessary creation and removal of atoms.\n */\n var runAndDispatchObjectNumberChanges = (function() {\n var objects = [{\n getNum: 'getNumberOfAtoms',\n addEvent: 'addAtom',\n removeEvent: 'removeAtom'\n }, {\n getNum: 'getNumberOfRadialBonds',\n addEvent: 'addRadialBond',\n removeEvent: 'removeRadialBond'\n }];\n\n return function(extract) {\n var i, o, newNum;\n for (i = 0; i < objects.length; i++) {\n o = objects[i];\n o.num = engine[o.getNum]();\n }\n\n extract();\n\n for (i = 0; i < objects.length; i++) {\n o = objects[i];\n newNum = engine[o.getNum]();\n if (newNum > o.num) {\n dispatch[o.addEvent]();\n } else if (newNum < o.num) {\n dispatch[o.removeEvent]();\n }\n }\n };\n })();\n\n /**\n This method is called to refresh the viewAtoms array and macrostate variables (KE, PE,\n temperature) whenever an engine integration occurs or the model state is otherwise changed.\n\n Normally, you should call the methods updateOutputPropertiesAfterChange or\n updateAllOutputProperties rather than calling this method. Calling this method directly does\n not cause output-property listeners to be notified, and calling it prematurely will confuse\n the detection of changed properties.\n */\n function readModelState() {\n engine.updateParticlesAccelerations();\n engine.computeOutputState(modelState);\n // remember that getViewPhotons will eventually be a modeler-layer method that ingests a raw\n // representation provided by modelState.photons\n viewPhotons = engine.callPluginAccessor('getViewPhotons');\n updateViewAtoms(modelState.atoms);\n updateViewRadialBonds(modelState.radialBonds, modelState.atoms);\n updateViewElectricField();\n }\n\n // Transpose 'atoms' object into 'viewAtoms' for consumption by view code\n function updateViewAtoms(atoms) {\n var n = engine.getNumberOfAtoms(),\n i,\n prop,\n amino,\n viewAtom;\n\n // TODO: refactor whole approach to creation of objects from flat arrays.\n // Think about more general way of detecting and representing amino acids.\n // However it would be reasonable to perform such refactoring later, when all requirements\n // related to proteins engine are clearer.\n\n viewAtoms.length = n;\n\n for (i = 0, n; i < n; i++) {\n if (!viewAtoms[i]) {\n viewAtoms[i] = {\n idx: i\n };\n }\n viewAtom = viewAtoms[i];\n\n for (prop in atoms) {\n if (atoms.hasOwnProperty(prop)) {\n viewAtom[prop] = atoms[prop][i];\n }\n }\n\n viewAtom.aminoAcid = aminoacidsHelper.isAminoAcid(atoms.element[i]);\n if (viewAtom.aminoAcid) {\n amino = aminoacidsHelper.getAminoAcidByElement(atoms.element[i]);\n viewAtom.symbol = amino.symbol;\n viewAtom.label = amino.abbreviation;\n }\n }\n }\n\n function updateViewRadialBonds(radialBonds, atoms) {\n var n = engine.getNumberOfRadialBonds(),\n viewBond, prop, i;\n\n viewRadialBonds.length = n;\n\n for (i = 0; i < n; i++) {\n if (!viewRadialBonds[i]) {\n viewRadialBonds[i] = {\n idx: i\n };\n }\n viewBond = viewRadialBonds[i];\n\n for (prop in radialBonds) {\n viewBond[prop] = radialBonds[prop][i];\n }\n\n // Additionally calculate x1, y1, x2, y2 properties that are useful for view.\n viewBond.x1 = atoms.x[viewBond.atom1];\n viewBond.y1 = atoms.y[viewBond.atom1];\n viewBond.x2 = atoms.x[viewBond.atom2];\n viewBond.y2 = atoms.y[viewBond.atom2];\n }\n }\n\n function updateViewElectricField() {\n // It may seem strange that model reads \"viewOption\"\n // (\"showElectricField\"), but this is definitely reasonable\n // optimization.\n if (!electricField.length || !model.properties.showElectricField) return;\n var i, len, p;\n for (i = 0, len = electricField.length; i < len; i++) {\n p = electricField[i];\n engine.getCoulombForceAt(p.x, p.y, p);\n }\n }\n\n /**\n return a random element index ... which is *not* an amino acid element\n */\n function randomElement() {\n var len = engine.getNumberOfElements(),\n el = Math.floor(Math.random() * len);\n while (aminoacidsHelper.isAminoAcid(el)) {\n el = Math.floor(Math.random() * len);\n }\n return el;\n }\n\n /**\n Create set of amino acids elements. Use descriptions\n provided in 'aminoacids' array.\n */\n function createAminoAcids() {\n var sigmaIn01Angstroms,\n sigmaInNm,\n i, len;\n\n // Note that amino acids ALWAYS have IDs from\n // AMINO_ELEMENT_FIRST_IDX (= 5) to AMINO_ELEMENT_LAST_IDX (= 24).\n // This is enforced by backward compatibility with Classic MW.\n\n // At the beginning, ensure that elements from 0 to 24 exists.\n for (i = engine.getNumberOfElements(); i <= aminoacidsHelper.lastElementID; i++) {\n model.addElement({\n id: i\n });\n }\n\n // Set amino acids properties using elements from 5 to 24.\n for (i = 0, len = aminoacids.length; i < len; i++) {\n // Note that sigma is calculated using Classic MW approach.\n // See: org.concord.mw2d.models.AminoAcidAdapter\n // Basic length unit in Classic MW is 0.1 Angstrom.\n sigmaIn01Angstroms = 18 * Math.pow(aminoacids[i].volume / aminoacids[0].volume, 0.3333333333333);\n sigmaInNm = units.convert(sigmaIn01Angstroms / 10, {\n from: units.unit.ANGSTROM,\n to: units.unit.NANOMETER\n });\n // Use engine's method instead of modeler's method to avoid validation.\n // Modeler's wrapper ensures that amino acid is immutable, so it won't allow\n // to set properties of amino acid.\n engine.setElementProperties(aminoacidsHelper.firstElementID + i, {\n mass: aminoacids[i].molWeight,\n sigma: sigmaInNm\n // Don't provide epsilon, as default value should be used.\n // Classic MW uses epsilon 0.1 for all amino acids, which is default one.\n // See: org.concord.mw2d.models.AtomicModel.resetElements()\n });\n }\n }\n\n // ------------------------------------------------------------\n //\n // Public functions\n //\n // ------------------------------------------------------------\n\n /**\n Current seek position\n */\n model.stepCounter = function() {\n return tickHistory.get(\"counter\");\n };\n\n /**\n Current position of first value in tick history, normally this will be 0.\n This will be greater than 0 if maximum size of tick history has been exceeded.\n */\n model.stepStartCounter = function() {\n return tickHistory.get(\"startCounter\");\n };\n\n /** Total number of ticks that have been run & are stored, regardless of seek\n position\n */\n model.steps = function() {\n return tickHistory.get(\"length\");\n };\n\n model.isNewStep = function() {\n return newStep;\n };\n\n model.seek = function(location) {\n if (!arguments.length) {\n location = 0;\n }\n if (!model.isStopped()) {\n model.stop();\n }\n newStep = false;\n runAndDispatchObjectNumberChanges(function() {\n tickHistory.seekExtract(location);\n readModelState();\n model.updateAllOutputProperties();\n dispatch.seek();\n });\n return tickHistory.get(\"counter\");\n };\n\n model.stepBack = function(num) {\n if (!arguments.length) {\n num = 1;\n }\n if (!model.isStopped()) {\n model.stop();\n }\n newStep = false;\n runAndDispatchObjectNumberChanges(function() {\n var i, index;\n i = -1;\n while (++i < num) {\n index = tickHistory.get(\"index\");\n if (index > 0) {\n tickHistory.decrementExtract();\n readModelState();\n model.updateAllOutputProperties();\n dispatch.stepBack();\n }\n }\n });\n return tickHistory.get(\"counter\");\n };\n\n model.stepForward = function(num) {\n if (!arguments.length) {\n num = 1;\n }\n if (!model.isStopped()) {\n model.stop();\n }\n runAndDispatchObjectNumberChanges(function() {\n var i, index, size;\n i = -1;\n while (++i < num) {\n index = tickHistory.get(\"index\");\n size = tickHistory.get(\"length\");\n if (index < size - 1) {\n tickHistory.incrementExtract();\n readModelState();\n model.updateAllOutputProperties();\n dispatch.stepForward();\n } else {\n model.tick();\n }\n }\n });\n return tickHistory.get(\"counter\");\n };\n\n /**\n Initialize minX, minYm, maxX, maxY from width and height\n when these options are undefined.\n */\n function initializeDimensions(properties) {\n var minX = properties.minX,\n minY = properties.minY,\n maxX = properties.maxX,\n maxY = properties.maxY;\n\n properties.minX = minX != null ? minX : 0;\n properties.maxX = maxX != null ? maxX : properties.width;\n properties.minY = minY != null ? minY : 0;\n properties.maxY = maxY != null ? maxY : properties.height;\n }\n\n /**\n Creates a new md2d engine and leaves it in 'engine'.\n */\n function initializeEngine(properties, pluginProperties) {\n engine.setDimensions([properties.minX, properties.minY, properties.maxX, properties.maxY]);\n\n if (pluginProperties.quantumDynamics) {\n properties.useQuantumDynamics = true;\n engine.addPlugin(new QuantumDynamics(engine, pluginProperties.quantumDynamics));\n } else {\n properties.useQuantumDynamics = false;\n }\n\n if (pluginProperties.chemicalReactions) {\n properties.useChemicalReactions = true;\n engine.addPlugin(new ChemicalReactions(engine, pluginProperties.chemicalReactions));\n } else {\n properties.useChemicalReactions = false;\n }\n\n // Copy reference to basic properties.\n // FIXME. This should go away. https://www.pivotaltracker.com/story/show/50086079\n elements = engine.elements;\n radialBonds = engine.radialBonds;\n angularBonds = engine.angularBonds;\n restraints = engine.restraints;\n obstacles = engine.obstacles;\n shapes = engine.shapes;\n lines = engine.lines;\n electricFields = engine.electricFields;\n }\n\n model.createElements = function(_elements) {\n var i, num, prop, elementProps;\n\n // Start batch process\n model.startBatch();\n\n if (_elements === undefined) {\n // Special case when elements are not defined.\n // Empty object will be filled with default values.\n model.addElement({\n id: 0\n });\n model.endBatch();\n return;\n }\n\n // _elements is hash of arrays (as specified in JSON model).\n // So, for each index, create object containing properties of\n // element 'i'. Later, use these properties to add element\n // using basic addElement method.\n for (i = 0, num = _elements.mass.length; i < num; i++) {\n elementProps = {};\n for (prop in _elements) {\n if (_elements.hasOwnProperty(prop)) {\n elementProps[prop] = _elements[prop][i];\n }\n }\n model.addElement(elementProps);\n }\n\n // End batch process\n model.endBatch();\n\n return model;\n };\n\n /**\n Creates a new set of atoms.\n\n config: a hash specifying the x,y,vx,vy properties of the atoms\n */\n model.createAtoms = function(config) {\n // Options for addAtom method.\n var options = {\n // Do not check the position of atom, assume that it's valid.\n suppressCheck: true\n },\n i, num, prop, atomProps;\n\n dispatch.willReset();\n\n // Start batch process\n model.startBatch();\n\n num = config.x.length;\n\n // config is hash of arrays (as specified in JSON model). So, for each index, create object\n // containing properties of atom 'i'. Later, use these properties to add atom using basic\n // addAtom method.\n for (i = 0; i < num; i++) {\n atomProps = {};\n for (prop in config) {\n if (config.hasOwnProperty(prop)) {\n atomProps[prop] = config[prop][i];\n }\n }\n model.addAtom(atomProps, options);\n }\n\n // End batch process\n model.endBatch();\n\n // Listeners should consider resetting the atoms a 'reset' event\n dispatch.reset();\n };\n\n model.createRadialBonds = function(_radialBonds) {\n var num = _radialBonds.strength.length,\n i, prop, radialBondProps;\n\n // Start batch process\n model.startBatch();\n\n // _radialBonds is hash of arrays (as specified in JSON model).\n // So, for each index, create object containing properties of\n // radial bond 'i'. Later, use these properties to add radial bond\n // using basic addRadialBond method.\n for (i = 0; i < num; i++) {\n radialBondProps = {};\n for (prop in _radialBonds) {\n if (_radialBonds.hasOwnProperty(prop)) {\n radialBondProps[prop] = _radialBonds[prop][i];\n }\n }\n model.addRadialBond(radialBondProps);\n }\n\n // End batch process\n model.endBatch();\n\n return model;\n };\n\n model.createAngularBonds = function(_angularBonds) {\n var num = _angularBonds.strength.length,\n i, prop, angularBondProps;\n\n // Start batch process\n model.startBatch();\n\n // _angularBonds is hash of arrays (as specified in JSON model).\n // So, for each index, create object containing properties of\n // angular bond 'i'. Later, use these properties to add angular bond\n // using basic addAngularBond method.\n for (i = 0; i < num; i++) {\n angularBondProps = {};\n for (prop in _angularBonds) {\n if (_angularBonds.hasOwnProperty(prop)) {\n angularBondProps[prop] = _angularBonds[prop][i];\n }\n }\n model.addAngularBond(angularBondProps);\n }\n\n // End batch process\n model.endBatch();\n\n return model;\n };\n\n model.createRestraints = function(_restraints) {\n var num = _restraints.atomIndex.length,\n i, prop, restraintsProps;\n\n // _restraints is hash of arrays (as specified in JSON model).\n // So, for each index, create object containing properties of\n // restraint 'i'. Later, use these properties to add restraint\n // using basic addRestraint method.\n for (i = 0; i < num; i++) {\n restraintsProps = {};\n for (prop in _restraints) {\n if (_restraints.hasOwnProperty(prop)) {\n restraintsProps[prop] = _restraints[prop][i];\n }\n }\n model.addRestraint(restraintsProps);\n }\n\n return model;\n };\n\n model.createObstacles = function(_obstacles) {\n var numObstacles = _obstacles.x.length,\n i, prop, obstacleProps;\n\n // _obstacles is hash of arrays (as specified in JSON model).\n // So, for each index, create object containing properties of\n // obstacle 'i'. Later, use these properties to add obstacle\n // using basic addObstacle method.\n for (i = 0; i < numObstacles; i++) {\n obstacleProps = {};\n for (prop in _obstacles) {\n if (_obstacles.hasOwnProperty(prop)) {\n obstacleProps[prop] = _obstacles[prop][i];\n }\n }\n model.addObstacle(obstacleProps);\n }\n\n return model;\n };\n\n model.createShapes = function(_shapes) {\n var numShapes = _shapes.x.length,\n i, prop, shapeProps;\n\n // See function above\n for (i = 0; i < numShapes; i++) {\n shapeProps = {};\n for (prop in _shapes) {\n if (_shapes.hasOwnProperty(prop)) {\n shapeProps[prop] = _shapes[prop][i];\n }\n }\n model.addShape(shapeProps);\n }\n\n return model;\n };\n\n model.createLines = function(_lines) {\n var numLines = _lines.x1.length,\n i, prop, lineProps;\n\n // See function above\n for (i = 0; i < numLines; i++) {\n lineProps = {};\n for (prop in _lines) {\n if (_lines.hasOwnProperty(prop)) {\n lineProps[prop] = _lines[prop][i];\n }\n }\n model.addLine(lineProps);\n }\n\n return model;\n };\n\n model.createElectricFields = function(_eFields) {\n model.batch(function() {\n var count = _eFields.intensity.length,\n i, prop, eFieldProps;\n\n for (i = 0; i < count; i++) {\n eFieldProps = {};\n for (prop in _eFields) {\n if (_eFields.hasOwnProperty(prop)) {\n eFieldProps[prop] = _eFields[prop][i];\n }\n }\n model.addElectricField(eFieldProps);\n }\n });\n return model;\n };\n\n // Beware. The \"reset\" button in Lab interactives do not call this method. Instead they \"reload\"\n // the model, discarding this model object and creating a new one from the model JSON.\n model.reset = function() {\n dispatch.willReset();\n propertySupport.invalidatingChangePreHook();\n engine.setTime(0);\n tickHistory.restoreInitialState();\n propertySupport.invalidatingChangePostHook();\n model.resetAllOutputProperties();\n dispatch.reset();\n };\n\n model.getTotalMass = function() {\n return engine.getTotalMass();\n };\n\n model.getAtomKineticEnergy = function(i) {\n return engine.getAtomKineticEnergy(i);\n };\n\n /**\n Attempts to add an 0-velocity atom to a random location. Returns false if after 10 tries it\n can't find a location. (Intended to be exposed as a script API method.)\n\n Optionally allows specifying the element (default is to randomly select from all editableElements) and\n charge (default is neutral).\n */\n model.addRandomAtom = function(el, charge) {\n if (el == null) el = randomElement();\n if (charge == null) charge = 0;\n\n var width = model.get('width'),\n height = model.get('height'),\n minX = model.get('minX'),\n minY = model.get('minY'),\n radius = engine.getRadiusOfElement(el),\n x,\n y,\n loc,\n numTries = 0,\n // try at most ten times.\n maxTries = 10;\n\n do {\n x = minX + Math.random() * width - 2 * radius;\n y = minY + Math.random() * height - 2 * radius;\n\n // findMinimimuPELocation will return false if minimization doesn't converge, in which case\n // try again from a different x, y\n loc = engine.findMinimumPELocation(el, x, y, 0, 0, charge);\n if (loc && model.addAtom({\n element: el,\n x: loc[0],\n y: loc[1],\n charge: charge\n })) return true;\n } while (++numTries < maxTries);\n\n return false;\n };\n\n /**\n Adds a new atom defined by properties.\n Intended to be exposed as a script API method also.\n\n Adjusts (x,y) if needed so that the whole atom is within the walls of the container.\n\n Returns false and does not add the atom if the potential energy change of adding an *uncharged*\n atom of the specified element to the specified location would be positive (i.e, if the atom\n intrudes into the repulsive region of another atom), or if atom is placed inside an obstacle\n\n Otherwise, returns true.\n\n silent = true disables this check.\n */\n model.addAtom = function(props, options) {\n var minX = model.get('minX'),\n minY = model.get('minY'),\n maxX = model.get('maxX'),\n maxY = model.get('maxY'),\n radius;\n\n options = options || {};\n\n // Validate properties, provide default values.\n props = validator.validateCompleteness(metadata.atom, props);\n\n // As a convenience to script authors, bump the atom within bounds\n radius = engine.getRadiusOfElement(props.element);\n if (props.x < (minX + radius)) props.x = minX + radius;\n if (props.x > (maxX - radius)) props.x = maxX - radius;\n if (props.y < (minY + radius)) props.y = minY + radius;\n if (props.y > (maxY - radius)) props.y = maxY - radius;\n\n // check the potential energy change caused by adding an *uncharged* atom at (x,y)\n if (!options.suppressCheck && !engine.canPlaceAtom(props.element, props.x, props.y, null, model.get('skipPECheckOnAddAtom'))) {\n // return false on failure\n return false;\n }\n\n propertySupport.invalidatingChangePreHook();\n\n engine.addAtom(props);\n\n propertySupport.invalidatingChangePostHook();\n\n dispatch.addAtom();\n\n return true;\n };\n\n model.removeAtom = function(i) {\n var prevRadBondsCount = engine.getNumberOfRadialBonds(),\n prevAngBondsCount = engine.getNumberOfAngularBonds();\n\n propertySupport.invalidatingChangePreHook();\n engine.removeAtom(i);\n // Enforce modeler to recalculate viewAtoms array.\n viewAtoms.length = 0;\n propertySupport.invalidatingChangePostHook();\n\n // Notify listeners that atoms is removed.\n dispatch.removeAtom();\n\n // Removing of an atom can also cause removing of\n // the connected radial bond. Detect it and notify listeners.\n if (engine.getNumberOfRadialBonds() !== prevRadBondsCount) {\n dispatch.removeRadialBond();\n }\n if (engine.getNumberOfAngularBonds() !== prevAngBondsCount) {\n dispatch.removeAngularBond();\n }\n };\n\n model.addElement = function(props) {\n // Validate properties, use default values if there is such need.\n props = validator.validateCompleteness(metadata.element, props);\n // Finally, add radial bond.\n engine.addElement(props);\n };\n\n model.addObstacle = function(props) {\n var validatedProps;\n // Validate properties, use default values if there is such need.\n validatedProps = validator.validateCompleteness(metadata.obstacle, props);\n // Finally, add obstacle.\n propertySupport.invalidatingChangePreHook();\n engine.addObstacle(validatedProps);\n propertySupport.invalidatingChangePostHook();\n };\n\n model.removeObstacle = function(idx) {\n propertySupport.invalidatingChangePreHook();\n engine.removeObstacle(idx);\n propertySupport.invalidatingChangePostHook();\n };\n\n model.addShape = function(props) {\n var validatedProps;\n // Validate properties, use default values if there is such need.\n validatedProps = validator.validateCompleteness(metadata.shape, props);\n // Finally, add shape.\n propertySupport.invalidatingChangePreHook();\n engine.addShape(validatedProps);\n propertySupport.invalidatingChangePostHook();\n };\n\n model.removeShape = function(idx) {\n var prevElFieldsCount = engine.getNumberOfElectricFields();\n\n propertySupport.invalidatingChangePreHook();\n engine.removeShape(idx);\n propertySupport.invalidatingChangePostHook();\n\n if (engine.getNumberOfElectricFields() !== prevElFieldsCount) {\n dispatch.removeElectricField();\n }\n //TODO FIXME: also .removeShape() event should be dispatched.\n };\n\n model.addLine = function(props) {\n var validatedProps;\n // Validate properties, use default values if there is such need.\n validatedProps = validator.validateCompleteness(metadata.line, props);\n // Finally, add line.\n propertySupport.invalidatingChangePreHook();\n engine.addLine(validatedProps);\n propertySupport.invalidatingChangePostHook();\n };\n\n model.removeLine = function(idx) {\n //var prevElFieldsCount = engine.getNumberOfElectricFields();\n\n propertySupport.invalidatingChangePreHook();\n engine.removeLine(idx);\n propertySupport.invalidatingChangePostHook();\n //TODO FIXME: also .removeLine() event should be dispatched.\n };\n\n model.addElectricField = function(props) {\n var validatedProps;\n // Validate properties, use default values if there is such need.\n validatedProps = validator.validateCompleteness(metadata.electricField, props);\n // Finally, add shape.\n propertySupport.invalidatingChangePreHook();\n engine.addElectricField(validatedProps);\n propertySupport.invalidatingChangePostHook();\n dispatch.addElectricField();\n };\n\n model.removeElectricField = function(idx) {\n propertySupport.invalidatingChangePreHook();\n engine.removeElectricField(idx);\n propertySupport.invalidatingChangePostHook();\n dispatch.removeElectricField();\n };\n\n model.addRadialBond = function(props) {\n props = validator.validateCompleteness(metadata.radialBond, props);\n propertySupport.invalidatingChangePreHook();\n engine.addRadialBond(props);\n propertySupport.invalidatingChangePostHook();\n dispatch.addRadialBond();\n };\n\n model.removeRadialBond = function(idx) {\n propertySupport.invalidatingChangePreHook();\n engine.removeRadialBond(idx);\n propertySupport.invalidatingChangePostHook();\n dispatch.removeRadialBond();\n };\n\n model.addAngularBond = function(props) {\n props = validator.validateCompleteness(metadata.angularBond, props);\n propertySupport.invalidatingChangePreHook();\n engine.addAngularBond(props);\n propertySupport.invalidatingChangePostHook();\n };\n\n model.removeAngularBond = function(idx) {\n propertySupport.invalidatingChangePreHook();\n engine.removeAngularBond(idx);\n propertySupport.invalidatingChangePostHook();\n dispatch.removeAngularBond();\n };\n\n model.addRestraint = function(props) {\n // Validate properties, use default values if there is such need.\n props = validator.validateCompleteness(metadata.restraint, props);\n // Finally, add restraint.\n propertySupport.invalidatingChangePreHook();\n engine.addRestraint(props);\n propertySupport.invalidatingChangePostHook();\n };\n\n /** Return the bounding box of the molecule containing atom 'atomIndex', with atomic radii taken\n into account.\n\n @returns an object with properties 'left', 'right', 'top', and 'bottom'. These are translated\n relative to the center of atom 'atomIndex', so that 'left' represents (-) the distance in nm\n between the leftmost edge and the center of atom 'atomIndex'.\n */\n model.getMoleculeBoundingBox = function(atomIndex) {\n\n var atoms = modelState.atoms,\n moleculeAtoms,\n i,\n x,\n y,\n r,\n top = -Infinity,\n left = Infinity,\n bottom = Infinity,\n right = -Infinity,\n cx,\n cy;\n\n moleculeAtoms = engine.getMoleculeAtoms(atomIndex);\n moleculeAtoms.push(atomIndex);\n\n for (i = 0; i < moleculeAtoms.length; i++) {\n x = atoms.x[moleculeAtoms[i]];\n y = atoms.y[moleculeAtoms[i]];\n r = atoms.radius[moleculeAtoms[i]];\n\n if (x - r < left) left = x - r;\n if (x + r > right) right = x + r;\n if (y - r < bottom) bottom = y - r;\n if (y + r > top) top = y + r;\n }\n\n cx = atoms.x[atomIndex];\n cy = atoms.y[atomIndex];\n\n return {\n top: top - cy,\n left: left - cx,\n bottom: bottom - cy,\n right: right - cx\n };\n };\n\n model.setTemperatureOfAtoms = function(atomIndices, T) {\n propertySupport.invalidatingChangePreHook();\n engine.setTemperatureOfAtoms(atomIndices, T);\n propertySupport.invalidatingChangePostHook();\n };\n\n model.addKEToAtoms = function(energy, atomIndices) {\n propertySupport.invalidatingChangePreHook();\n\n if (atomIndices == null) {\n engine.addKEToAtoms(energy);\n } else {\n // This function inside engine has a slightly different API.\n engine.addKEToAtoms.apply(engine, [energy].concat(atomIndices));\n }\n\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getTemperatureOfAtoms = function(atomIndices) {\n return engine.getTemperatureOfAtoms(atomIndices);\n };\n\n /**\n A generic method to set properties on a single existing atom.\n\n Example: setAtomProperties(3, {x: 5, y: 8, px: 0.5, charge: -1})\n\n This can optionally check the new location of the atom to see if it would\n overlap with another another atom (i.e. if it would increase the PE).\n\n This can also optionally apply the same dx, dy to any atoms in the same\n molecule (if x and y are being changed), and check the location of all\n the bonded atoms together.\n */\n model.setAtomProperties = function(i, props, checkLocation, moveMolecule, skipPECheck) {\n var atoms = modelState.atoms,\n moleculeAtoms,\n dx, dy,\n new_x, new_y,\n j, jj;\n\n // Validate properties.\n props = validator.validate(metadata.atom, props);\n\n if (moveMolecule) {\n moleculeAtoms = engine.getMoleculeAtoms(i);\n if (moleculeAtoms.length > 0) {\n dx = typeof props.x === \"number\" ? props.x - atoms.x[i] : 0;\n dy = typeof props.y === \"number\" ? props.y - atoms.y[i] : 0;\n for (j = 0, jj = moleculeAtoms.length; j < jj; j++) {\n new_x = atoms.x[moleculeAtoms[j]] + dx;\n new_y = atoms.y[moleculeAtoms[j]] + dy;\n if (!model.setAtomProperties(moleculeAtoms[j], {\n x: new_x,\n y: new_y\n }, checkLocation, false)) {\n return false;\n }\n }\n }\n }\n\n if (checkLocation) {\n var x = typeof props.x === \"number\" ? props.x : atoms.x[i],\n y = typeof props.y === \"number\" ? props.y : atoms.y[i],\n el = typeof props.element === \"number\" ? props.y : atoms.element[i];\n\n if (!engine.canPlaceAtom(el, x, y, i, skipPECheck)) {\n return false;\n }\n }\n\n propertySupport.invalidatingChangePreHook();\n engine.setAtomProperties(i, translateToMD2DUnits(props, metadata.atom));\n propertySupport.invalidatingChangePostHook();\n return true;\n };\n\n model.getAtomProperties = function(i) {\n var atoms = modelState.atoms,\n atomMetaData = metadata.atom,\n props = {},\n propName;\n\n for (propName in atomMetaData) {\n if (atomMetaData.hasOwnProperty(propName) && atoms[propName]) {\n props[propName] = atoms[propName][i];\n }\n }\n return translateFromMD2DUnits(props, atomMetaData);\n };\n\n model.getRadialBondsForAtom = function(i) {\n return engine.getRadialBondsForAtom(i);\n };\n\n model.getBondedAtoms = function(i) {\n return engine.getBondedAtoms(i);\n };\n\n model.getAngularBondsForAtom = function(i) {\n return engine.getAngularBondsForAtom(i);\n };\n\n model.getMoleculeAtoms = function(i) {\n return engine.getMoleculeAtoms(i);\n };\n\n model.setElementProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.element, props);\n if (aminoacidsHelper.isAminoAcid(i)) {\n throw new Error(\"Elements: elements with ID \" + i + \" cannot be edited, as they define amino acids.\");\n }\n propertySupport.invalidatingChangePreHook();\n engine.setElementProperties(i, translateToMD2DUnits(props, metadata.element));\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getElementProperties = function(i) {\n var elementMetaData = metadata.element,\n props = {},\n propName;\n for (propName in elementMetaData) {\n if (elementMetaData.hasOwnProperty(propName)) {\n props[propName] = elements[propName][i];\n }\n }\n return translateFromMD2DUnits(props, elementMetaData);\n };\n\n model.getAminoAcidByElement = function(i) {\n if (aminoacidsHelper.isAminoAcid(i)) {\n return aminoacidsHelper.getAminoAcidByElement(i);\n } else {\n return undefined;\n }\n }\n\n model.setObstacleProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.obstacle, props);\n propertySupport.invalidatingChangePreHook();\n engine.setObstacleProperties(i, translateToMD2DUnits(props, metadata.obstacle));\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getObstacleProperties = function(i) {\n var obstacleMetaData = metadata.obstacle,\n props = {},\n propName;\n for (propName in obstacleMetaData) {\n if (obstacleMetaData.hasOwnProperty(propName)) {\n props[propName] = obstacles[propName][i];\n }\n }\n return translateFromMD2DUnits(props, obstacleMetaData);\n };\n\n model.setShapeProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.shape, props);\n propertySupport.invalidatingChangePreHook();\n engine.setShapeProperties(i, translateToMD2DUnits(props, metadata.shape));\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getShapeProperties = function(i) {\n var shapeMetaData = metadata.shape,\n props = {},\n propName;\n for (propName in shapeMetaData) {\n if (shapeMetaData.hasOwnProperty(propName)) {\n props[propName] = shapes[propName][i];\n }\n }\n return translateFromMD2DUnits(props, shapeMetaData);\n };\n\n model.setLineProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.line, props);\n propertySupport.invalidatingChangePreHook();\n engine.setLineProperties(i, translateToMD2DUnits(props, metadata.line));\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getLineProperties = function(i) {\n var lineMetaData = metadata.line,\n props = {},\n propName;\n for (propName in lineMetaData) {\n if (lineMetaData.hasOwnProperty(propName)) {\n props[propName] = lines[propName][i];\n }\n }\n return translateFromMD2DUnits(props, lineMetaData);\n };\n\n model.setElectricFieldProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.electricField, props);\n propertySupport.invalidatingChangePreHook();\n engine.setElectricFieldProperties(i, translateToMD2DUnits(props, metadata.electricField));\n propertySupport.invalidatingChangePostHook();\n dispatch.changeElectricField();\n };\n\n model.getElectricFieldProperties = function(i) {\n var elFieldMetaData = metadata.electricField,\n props = {},\n propName;\n for (propName in elFieldMetaData) {\n if (elFieldMetaData.hasOwnProperty(propName)) {\n props[propName] = electricFields[propName][i];\n }\n }\n return translateFromMD2DUnits(props, elFieldMetaData);\n };\n\n model.setRadialBondProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.radialBond, props);\n propertySupport.invalidatingChangePreHook();\n engine.setRadialBondProperties(i, translateToMD2DUnits(props, metadata.radialBond));\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getRadialBondProperties = function(i) {\n var radialBondMetaData = metadata.radialBond,\n props = {},\n propName;\n for (propName in radialBondMetaData) {\n if (radialBondMetaData.hasOwnProperty(propName)) {\n props[propName] = radialBonds[propName][i];\n }\n }\n return translateFromMD2DUnits(props, radialBondMetaData);\n };\n\n model.setRestraintProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.restraint, props);\n propertySupport.invalidatingChangePreHook();\n engine.setRestraintProperties(i, translateToMD2DUnits(props, metadata.restraint));\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getRestraintProperties = function(i) {\n var restraintMetaData = metadata.restraint,\n props = {},\n propName;\n for (propName in restraintMetaData) {\n if (restraintMetaData.hasOwnProperty(propName)) {\n props[propName] = restraints[propName][i];\n }\n }\n return translateFromMD2DUnits(props, restraintMetaData);\n };\n\n model.setAngularBondProperties = function(i, props) {\n // Validate properties.\n props = validator.validate(metadata.angularBond, props);\n propertySupport.invalidatingChangePreHook();\n engine.setAngularBondProperties(i, translateToMD2DUnits(props, metadata.angularBond));\n propertySupport.invalidatingChangePostHook();\n };\n\n model.getAngularBondProperties = function(i) {\n var angularBondMetaData = metadata.angularBond,\n props = {},\n propName;\n for (propName in angularBondMetaData) {\n if (angularBondMetaData.hasOwnProperty(propName)) {\n props[propName] = angularBonds[propName][i];\n }\n }\n return translateFromMD2DUnits(props, angularBondMetaData);\n };\n\n model.setSolvent = function(solventName) {\n var solvent = new Solvent(solventName),\n props = {\n solventForceType: solvent.forceType,\n dielectricConstant: solvent.dielectricConstant,\n backgroundColor: solvent.color\n };\n model.set(props);\n };\n\n /** A \"spring force\" is used to pull atom `atomIndex` towards (x, y). We expect this to be used\n to drag atoms interactively using the mouse cursor (in which case (x,y) is the mouse cursor\n location.) In these cases, use the liveDragStart, liveDrag, and liveDragEnd methods instead\n of this one.\n\n The optional springConstant parameter (measured in eV/nm^2) is used to adjust the strength\n of the \"spring\" pulling the atom toward (x, y)\n\n @returns ID (index) of the spring force among all spring forces\n */\n model.addSpringForce = function(atomIndex, x, y, springConstant) {\n if (springConstant == null) springConstant = 500;\n\n if (unitsTranslation) {\n springConstant = unitsTranslation.translateToModelUnits(springConstant, 'stiffness');\n }\n return engine.addSpringForce(atomIndex, x, y, springConstant);\n };\n\n /**\n Update the (x, y) position of a spring force.\n */\n model.updateSpringForce = function(springForceIndex, x, y) {\n engine.updateSpringForce(springForceIndex, x, y);\n };\n\n /**\n Remove a spring force.\n */\n model.removeSpringForce = function(springForceIndex) {\n engine.removeSpringForce(springForceIndex);\n };\n\n model.addTextBox = function(props) {\n props = validator.validateCompleteness(metadata.textBox, props);\n model.get('textBoxes').push(props);\n dispatch.textBoxesChanged();\n };\n\n model.removeTextBox = function(i) {\n var text = model.get('textBoxes');\n if (i >= 0 && i < text.length) {\n model.set('textBoxes', text.slice(0, i).concat(text.slice(i + 1)));\n dispatch.textBoxesChanged();\n } else {\n throw new Error(\"Text box \\\"\" + i + \"\\\" does not exist, so it cannot be removed.\");\n }\n };\n\n model.setTextBoxProperties = function(i, props) {\n var textBox = model.get('textBoxes')[i],\n prop;\n\n if (textBox) {\n props = validator.validate(metadata.textBox, props);\n for (prop in props) {\n if (props.hasOwnProperty(prop)) {\n textBox[prop] = props[prop];\n }\n }\n dispatch.textBoxesChanged();\n } else {\n throw new Error(\"Text box \\\"\" + i + \"\\\" does not exist, so it cannot have properties set.\");\n }\n };\n\n model.addImage = function(props) {\n props = validator.validateCompleteness(metadata.image, props);\n model.get('images').push(props);\n dispatch.imagesChanged();\n };\n\n model.removeImage = function(i) {\n var images = model.get('images');\n if (i >= 0 && i < images.length) {\n model.set('images', images.slice(0, i).concat(images.slice(i + 1)));\n dispatch.imagesChanged();\n } else {\n throw new Error(\"Image \\\"\" + i + \"\\\" does not exist, so it cannot be removed.\");\n }\n };\n\n model.setImageProperties = function(i, props) {\n var image = model.get('images')[i],\n prop;\n\n if (image) {\n props = validator.validate(metadata.image, props);\n for (prop in props) {\n if (props.hasOwnProperty(prop)) {\n image[prop] = props[prop];\n }\n }\n dispatch.imagesChanged();\n } else {\n throw new Error(\"Image \\\"\" + i + \"\\\" does not exist, so it cannot have properties set.\");\n }\n };\n\n model.getTextBoxProperties = function(i) {\n return model.get('textBoxes')[i];\n };\n\n model.getImageProperties = function(i) {\n return model.get('images')[i];\n };\n\n /**\n Implements dragging of an atom in a running model, by creating a spring force that pulls the\n atom towards the mouse cursor position (x, y) and damping the resulting motion by temporarily\n adjusting the friction of the dragged atom.\n */\n model.liveDragStart = function(atomIndex, x, y) {\n if (liveDragSpringForceIndex != null) return; // don't add a second liveDrag force\n\n if (x == null) x = modelState.atoms.x[atomIndex];\n if (y == null) y = modelState.atoms.y[atomIndex];\n\n liveDragSavedFriction = model.getAtomProperties(atomIndex).friction;\n\n // Use setAtomProperties so that we handle things correctly if a web worker is integrating\n // the model. (Here we follow the rule that we must assume that an integration might change\n // any property of an atom, and therefore cause changes to atom properties in the main thread\n // to be be lost. This is true even though common sense tells us that the friction property\n // won't change during an integration.)\n\n model.setAtomProperties(atomIndex, {\n friction: model.LIVE_DRAG_FRICTION\n });\n\n liveDragSpringForceIndex = model.addSpringForce(atomIndex, x, y, 500);\n };\n\n /**\n Updates the drag location after liveDragStart\n */\n model.liveDrag = function(x, y) {\n model.updateSpringForce(liveDragSpringForceIndex, x, y);\n };\n\n /**\n Cancels a live drag by removing the spring force that is pulling the atom, and restoring its\n original friction property.\n */\n model.liveDragEnd = function() {\n var atomIndex = engine.springForceAtomIndex(liveDragSpringForceIndex);\n\n model.setAtomProperties(atomIndex, {\n friction: liveDragSavedFriction\n });\n model.removeSpringForce(liveDragSpringForceIndex);\n liveDragSpringForceIndex = null;\n };\n\n /**\n * Returns number of frames per second.\n * @return {number} frames per second.\n */\n model.getFPS = function() {\n var s = 0,\n n = sampleTimes.length,\n i = -1;\n\n while (++i < n) {\n s += sampleTimes[i];\n }\n s /= n;\n return (s ? 1 / s * 1000 : 0);\n };\n\n /**\n * Returns \"simulation progress rate\".\n * It indicates how much of simulation time is calculated for\n * one second of real time.\n * @return {number} simulation progress rate.\n */\n model.getSimulationProgressRate = function() {\n return model.getFPS() * model.get('timeStep') * model.get('timeStepsPerTick');\n };\n\n model.get_elements = function() {\n return elements;\n };\n\n model.getAtoms = function() {\n return viewAtoms;\n };\n\n model.getRadialBonds = function() {\n return viewRadialBonds;\n };\n\n model.getElectricField = function() {\n return electricField;\n };\n\n model.getPhotons = function() {\n return viewPhotons;\n };\n\n // *really* need a way for the QD plugin to add these methods to modeler-layer\n model.turnOnLightSource = function() {\n // Note the current, very temporary, implementation ignores index and isn't an\n // accessor. But this is for prototyping.\n engine.callPluginAccessor('turnOnLightSource');\n };\n\n model.turnOffLightSource = function() {\n engine.callPluginAccessor('turnOffLightSource');\n };\n\n model.setLightSourceAngle = function(angle) {\n engine.callPluginAccessor('setLightSourceAngle', [angle]);\n };\n\n model.setLightSourceFrequency = function(freq) {\n engine.callPluginAccessor('setLightSourceFrequency', [freq]);\n };\n\n model.setLightSourcePeriod = function(period) {\n engine.callPluginAccessor('setLightSourcePeriod', [period]);\n };\n\n model.setLightSourceNumber = function(number) {\n engine.callPluginAccessor('setLightSourceNumber', [number]);\n };\n\n model.setBondEnergy = function(bondDescription, value) {\n engine.callPluginAccessor('setBondEnergy', [bondDescription, value]);\n };\n\n model.setValenceElectrons = function(element, value) {\n engine.callPluginAccessor('setValenceElectrons', [element, value]);\n };\n\n var _photonAbsorbedHandlersCount = 0;\n model.onPhotonAbsorbed = function(handler) {\n // Lab's DispatchSupport requires unique namespace for each different handler.\n engine.callPluginAccessor('on', ['photonAbsorbed.external-handler-' + _photonAbsorbedHandlersCount, handler]);\n };\n\n /**\n Returns the total number of atoms, or else the number of atoms matching some criterion.\n\n If the argument 'f' is present, it is called once for each atom, passing the atom as the\n argument to f. The number of atoms for which f evaluates to true is returned.\n\n Example\n\n model.getNumberOfAtoms(function(atom) { return atom.mass < 50; })\n\n returns the number of atoms having mass < 50\n */\n model.getNumberOfAtoms = function(f) {\n if (!f) {\n return viewAtoms.length;\n }\n return viewAtoms.reduce(function(total, atom) {\n return f(atom) ? total + 1 : total;\n }, 0);\n };\n\n model.get_obstacles = function() {\n return obstacles;\n };\n\n model.get_shapes = function() {\n return shapes;\n };\n\n model.get_lines = function() {\n return lines;\n };\n\n // FIXME. Should be an output property.\n model.getNumberOfElements = function() {\n return engine.getNumberOfElements();\n };\n\n // FIXME. Should be an output property.\n model.getNumberOfObstacles = function() {\n return engine.getNumberOfObstacles();\n };\n\n model.getNumberOfShapes = function() {\n return engine.getNumberOfShapes();\n };\n\n model.getNumberOfLines = function() {\n return engine.getNumberOfLines();\n };\n\n // FIXME. Should be an output property.\n model.getNumberOfRadialBonds = function() {\n return engine.getNumberOfRadialBonds();\n };\n\n // FIXME. Should be an output property.\n model.getNumberOfAngularBonds = function() {\n return engine.getNumberOfAngularBonds();\n };\n\n // FIXME. Should be an output property.\n model.getNumberOfSpringForces = function() {\n return engine.getNumberOfSpringForces();\n };\n\n // FIXME. Should be an output property.\n model.getNumberOfElectricFields = function() {\n return engine.getNumberOfElectricFields();\n };\n\n model.getNumberOfTextBoxes = function() {\n return model.get('textBoxes').length;\n };\n\n model.get_restraints = function() {\n return restraints;\n };\n\n model.getPairwiseLJProperties = function() {\n return engine.pairwiseLJProperties;\n };\n\n model.geneticEngine = function() {\n return geneticEngine;\n };\n\n model.get_vdw_pairs = function() {\n return engine.getVdwPairsArray();\n };\n\n model.tickInPlace = function() {\n dispatch.tick();\n return model;\n };\n\n model.tick = function() {\n var timeStep = model.get('timeStep'),\n t, sampleTime;\n\n if (unitsTranslation) {\n timeStep = unitsTranslation.translateToModelUnits(timeStep, 'time');\n }\n\n if (!model.isStopped()) {\n t = performance.now();\n if (lastSampleTime) {\n sampleTime = t - lastSampleTime;\n lastSampleTime = t;\n sampleTimes.push(sampleTime);\n sampleTimes.splice(0, sampleTimes.length - 64);\n\n // Process all transitions which are in progress\n // and remove finished.\n processTransitions(sampleTime);\n } else {\n lastSampleTime = t;\n }\n }\n\n performance.enterScope(\"engine\");\n // timeStepsPerTick is defined in Classic MW as the number of timesteps per view update.\n // However, in MD2D we prefer the more physical notion of integrating for a particular\n // length of time.\n engine.integrate(model.get('timeStepsPerTick') * timeStep, timeStep);\n performance.leaveScope(\"engine\");\n\n readModelState();\n model.updateAllOutputProperties();\n tickHistory.push();\n\n newStep = true;\n\n // TODO: we should just dispatch \"radialBondsChanged\" event, as there is no code interested\n // whether we really added or removed radial bond.\n if (engine.radialBondsChanged) dispatch.addRadialBond();\n\n dispatch.tick();\n };\n\n model.minimizeEnergy = function() {\n propertySupport.invalidatingChangePreHook();\n engine.minimizeEnergy();\n propertySupport.invalidatingChangePostHook();\n // Positions of atoms could change, so\n // dispatch tick event.\n dispatch.tick();\n return model;\n };\n\n model.dimensions = function() {\n return engine.getDimensions();\n };\n\n model.format = function(property, opts) {\n opts = opts || {};\n\n var desc = model.getPropertyDescription(property);\n if (desc) {\n return desc.format(model.get(property), opts);\n }\n return d3.format(opts.format || 'g')(model.get(property));\n };\n\n /**\n Return a unitDefinition in the current unitScheme for a quantity\n such as 'length', 'mass', etc.\n */\n model.getUnitDefinition = function(name) {\n return unitsDefinition.units[name];\n };\n\n /**\n * Returns atom transition object. It can be used to smoothly change\n * atom properties over specified time. It's similar to D3 transitions.\n *\n * Atom transition object provides following methods:\n * id(id) - sets ID of the atom (required!).\n * duration(d) - sets duration in ms (required!).\n * prop(name, val) - sets property name and its final value (required!).\n * delay(d) - sets delay in ms (default is 0).\n * ease(name) - sets easing function (default is \"cubic-in-out\").\n * Please see:\n * https://github.com/mbostock/d3/wiki/Transitions#wiki-d3_ease\n *\n * e.g.\n * atomTransition().id(0).duration(1000).ease(\"linear\").prop(\"x\", 10);\n *\n * This will change \"x\" property of the atom with ID=0\n * to value 10 over 1000ms using linear easing function.\n *\n * @return {AtomTransition} AtomTransition instance.\n */\n model.atomTransition = function() {\n var t = new AtomTransition(model);\n transitions.push(t);\n return t;\n };\n\n /**\n * Cancels all transitions which are currently in progress.\n */\n model.cancelTransitions = function() {\n transitions.length = 0;\n };\n\n /**\n Call before running a function that would otherwise trigger a number\n of invalidatingChangePre/PostHooks, which would slow down the model when\n each change causes a recalculation. This can be used whenever you can\n safely assume that all actions executed between startBatch and endBatch\n will not depend on triggered property changes.\n\n endBatch() *must* be called after the actions are complete, or output\n properties will no longer be updated.\n */\n model.startBatch = function() {\n propertySupport.startBatch();\n // Suppress events dispatching. They will be dispatched during\n // .endBatch() execution.\n dispatch.startBatch();\n };\n\n model.endBatch = function() {\n propertySupport.endBatch();\n // All events will be dispatched now (but just once per event type).\n dispatch.endBatch();\n };\n\n /**\n * Executes function between .startBatch() and .endBatch() calls.\n * @param {Function} action function that should be executed.\n */\n model.batch = function(action) {\n model.startBatch();\n action();\n model.endBatch();\n };\n\n // Convert array of hashes to a hash of arrays\n // TODO. Move to a new utils module, share with mml parser\n function unroll(array) {\n var ret = {};\n\n if (array.length === 0) {\n return {};\n }\n\n Object.keys(array[0]).forEach(function(key) {\n ret[key] = [];\n });\n\n array.forEach(function(object) {\n Object.keys(object).forEach(function(key) {\n ret[key].push(object[key]);\n });\n });\n return ret;\n }\n\n function serializeQuantumDynamics() {\n var photons = model.getPhotons(),\n data = {\n photons: serialize(metadata.photon, unroll(photons), photons.length),\n elementEnergyLevels: engine.callPluginAccessor('getElementEnergyLevels'),\n radiationlessEmissionProbability: engine.callPluginAccessor('getRadiationlessEmissionProbability'),\n lightSource: engine.callPluginAccessor('getLightSource')\n };\n\n if (!data.lightSource) delete data.lightSource;\n\n return data;\n }\n\n function serializeChemicalReactions() {\n return {};\n }\n\n model.serialize = function() {\n var propCopy = {},\n ljProps, i, len,\n rawProperties = propertySupport.rawValues,\n\n removeAtomsArrayIfDefault = function(name, defaultVal) {\n if (propCopy.atoms[name].every(function(i) {\n return i === defaultVal;\n })) {\n delete propCopy.atoms[name];\n }\n };\n\n propCopy = serialize(metadata.mainProperties, rawProperties);\n propCopy.viewOptions = serialize(metadata.viewOptions, rawProperties);\n propCopy.atoms = serialize(metadata.atom, modelState.atoms, engine.getNumberOfAtoms());\n\n if (engine.getNumberOfRadialBonds()) {\n propCopy.radialBonds = serialize(metadata.radialBond, radialBonds, engine.getNumberOfRadialBonds());\n }\n if (engine.getNumberOfAngularBonds()) {\n propCopy.angularBonds = serialize(metadata.angularBond, angularBonds, engine.getNumberOfAngularBonds());\n }\n if (engine.getNumberOfObstacles()) {\n propCopy.obstacles = serialize(metadata.obstacle, obstacles, engine.getNumberOfObstacles());\n for (i = 0, len = propCopy.obstacles.x.length; i < len; i++) {\n // Silly, but allows to pass current serialization tests.\n // FIXME: try to create more flexible tests for serialization.\n propCopy.obstacles.westProbe[i] = Boolean(propCopy.obstacles.westProbe[i]);\n propCopy.obstacles.northProbe[i] = Boolean(propCopy.obstacles.northProbe[i]);\n propCopy.obstacles.eastProbe[i] = Boolean(propCopy.obstacles.eastProbe[i]);\n propCopy.obstacles.southProbe[i] = Boolean(propCopy.obstacles.southProbe[i]);\n }\n }\n if (engine.getNumberOfShapes()) {\n propCopy.shapes = serialize(metadata.shape, shapes, engine.getNumberOfShapes());\n }\n if (engine.getNumberOfLines()) {\n propCopy.lines = serialize(metadata.line, lines, engine.getNumberOfLines());\n }\n if (engine.getNumberOfElectricFields()) {\n propCopy.electricFields = serialize(metadata.electricField, electricFields, engine.getNumberOfElectricFields());\n }\n if (engine.getNumberOfRestraints()) {\n propCopy.restraints = serialize(metadata.restraint, restraints, engine.getNumberOfRestraints());\n }\n\n // FIXME: for now Amino Acid elements are *not* editable and should not be serialized\n // -- only copy first five elements\n propCopy.elements = serialize(metadata.element, elements, 5);\n\n // The same situation for Custom LJ Properties. Do not serialize properties for amino acids.\n propCopy.pairwiseLJProperties = [];\n ljProps = engine.pairwiseLJProperties.serialize();\n for (i = 0, len = ljProps.length; i < len; i++) {\n if (ljProps[i].element1 <= 5 && ljProps[i].element2 <= 5) {\n propCopy.pairwiseLJProperties.push(ljProps[i]);\n }\n }\n\n // Do the weird post processing of the JSON, which is also done by MML parser.\n // Remove targetTemperature when heat-bath is disabled.\n if (propCopy.temperatureControl === false) {\n delete propCopy.targetTemperature;\n }\n // Remove atomTraceId when atom tracing is disabled.\n if (propCopy.viewOptions.showAtomTrace === false) {\n delete propCopy.viewOptions.atomTraceId;\n }\n if (propCopy.modelSampleRate === \"default\") {\n delete propCopy.modelSampleRate;\n }\n\n // TODO. Should be able to ask plugins to serialize their data.\n if (model.properties.useQuantumDynamics) {\n propCopy.quantumDynamics = serializeQuantumDynamics();\n }\n\n if (model.properties.useChemicalReactions) {\n propCopy.chemicalReactions = serializeChemicalReactions();\n } else {\n delete propCopy.atoms.radical;\n }\n\n ['marked', 'visible', 'draggable', 'draggableWhenStopped'].forEach(function(prop) {\n removeAtomsArrayIfDefault(prop, metadata.atom[prop].defaultValue);\n });\n\n return propCopy;\n };\n\n // ------------------------------\n // finish setting up the model\n // ------------------------------\n\n // Friction parameter temporarily applied to the live-dragged atom.\n model.LIVE_DRAG_FRICTION = 10;\n\n // ------------------------------\n // Process initialProperties before setting properties on the model\n // ------------------------------\n\n // Ensure that model, which includes DNA (=> so DNA animation too) has\n // correct, constant dimensions. This is very significant, as if model\n // dimensions are too big or too small, DNA elements can be unreadable. It\n // also ensures that aspect ratio of the model is reasonable for\n // animation.\n // TODO: move this to better place.\n if (initialProperties.DNA) {\n // Overwrite width and height options.\n initialProperties.width = 200;\n initialProperties.height = 5;\n // View options are optional, make sure that they are defined.\n initialProperties.viewOptions = initialProperties.viewOptions || {};\n initialProperties.viewOptions.viewPortX = 0;\n initialProperties.viewOptions.viewPortY = 0;\n initialProperties.viewOptions.viewPortWidth = 5;\n initialProperties.viewOptions.viewPortHeight = 3;\n }\n\n (function() {\n if (!initialProperties.viewOptions) {\n return;\n }\n\n // Temporal workaround to provide text boxes and images validation.\n // Note that text boxes and images are handled completely different from other objects\n // like atoms or obstacles. There is much of inconsistency and probably\n // it should be refactored anyway.\n var textBoxes = initialProperties.viewOptions.textBoxes || [],\n images = initialProperties.viewOptions.images || [],\n i, len;\n\n for (i = 0, len = textBoxes.length; i < len; i++) {\n textBoxes[i] = validator.validateCompleteness(metadata.textBox, textBoxes[i]);\n }\n for (i = 0, len = images.length; i < len; i++) {\n images[i] = validator.validateCompleteness(metadata.image, images[i]);\n }\n }());\n\n // TODO. Implement a pattern whereby the pluginController lets each plugins examine the initial\n // properties and extract the relevant plugin properties. *However*, don't do it in a way that\n // requires changing the model JSON schema when functionality is moved out of the main engine\n // and into a plugin, or vice-versa.\n pluginProperties = {\n quantumDynamics: initialProperties.quantumDynamics,\n chemicalReactions: initialProperties.chemicalReactions\n };\n\n // TODO: Elements are stored and treated different from other objects. This was enforced by\n // createNewAtoms() method which has been removed. Change also editableElements handling.\n editableElements = initialProperties.elements;\n // Create editable elements.\n model.createElements(editableElements);\n // Create elements which specify amino acids also.\n createAminoAcids();\n\n // This will extend model API to support standard Lab model features. We\n // have to do it know, as this will also set initial properties, so the\n // engine has to be already defined (see custom setters).\n labModelerMixin.mixInto(model);\n\n // Initialize minX, minY, maxX, maxY from model width and height if they are undefined.\n initializeDimensions(model.properties);\n\n model.on(\"stop.last-sample-time-reset\", function() {\n // This has to be done, as otherwise if user stops and then starts the\n // model, there will be an incorrect sample time reported (equal to time\n // period between starting and stopping the model).\n lastSampleTime = null;\n });\n propertySupport.on(\"afterInvalidatingChange.read-model-state\", readModelState);\n propertySupport.on(\"afterInvalidatingChangeSequence.tick-history\", function() {\n if (tickHistory) tickHistory.invalidateFollowingState();\n dispatch.invalidation();\n });\n\n // Setup MD2D engine object.\n initializeEngine(model.properties, pluginProperties);\n\n // Setup genetic engine.\n geneticEngine = new GeneticEngine(model);\n\n // Finally, if provided, set up the model objects (elements, atoms, bonds, obstacles and the rest).\n // However if these are not provided, client code can create atoms, etc piecemeal.\n\n // Trigger setter of polarAAEpsilon again when engine is initialized and\n // amino acids crated.\n // TODO: initialize engine before set_properties calls, so properties\n // will be injected to engine automatically.\n model.set({\n polarAAEpsilon: model.get('polarAAEpsilon')\n });\n\n if (initialProperties.atoms) model.createAtoms(initialProperties.atoms);\n if (initialProperties.radialBonds) model.createRadialBonds(initialProperties.radialBonds);\n if (initialProperties.angularBonds) model.createAngularBonds(initialProperties.angularBonds);\n if (initialProperties.restraints) model.createRestraints(initialProperties.restraints);\n if (initialProperties.obstacles) model.createObstacles(initialProperties.obstacles);\n if (initialProperties.shapes) model.createShapes(initialProperties.shapes);\n if (initialProperties.lines) model.createLines(initialProperties.lines);\n if (initialProperties.electricFields) model.createElectricFields(initialProperties.electricFields);\n // Basically, this #deserialize method is more or less similar to other #create... methods used\n // above. However, this is the first step to delegate some functionality from modeler to smaller classes.\n if (initialProperties.pairwiseLJProperties)\n engine.pairwiseLJProperties.deserialize(initialProperties.pairwiseLJProperties);\n\n // Initialize tick history.\n tickHistory = new TickHistory({\n getProperties: function() {\n return propertySupport.historyStateRawValues;\n },\n restoreProperties: propertySupport.setRawValues,\n state: engine.getState()\n }, model, defaultMaxTickHistory);\n\n // Since we can't provide tickHistory to the mixed-in methods at the time we create\n // labModelerMixin (see below comment), provide it now.\n labModelerMixin.tickHistory = tickHistory;\n\n // FIXME: ugly workaround - mixin OutputSupport again, this time providing\n // tickHistory, so filtered outputs will use it. We couldn't pass\n // tickHistory directly to LabModelerMixin, as tickHistory depends on\n // propertySupport ...returned by LabModelrMixin. It has to be cleaned up.\n outputSupport = new OutputSupport({\n propertySupport: propertySupport,\n unitsDefinition: unitsDefinition,\n tickHistory: tickHistory\n });\n outputSupport.mixInto(model);\n\n newStep = true;\n\n // Define some default output properties.\n model.defineOutput('time', {\n label: \"Time\",\n unitType: 'time',\n format: 'f'\n }, function() {\n // Output getters are expected to return values in translated units, since authored outputs\n // can only read values already in translated units to start with.\n var value = modelState.time;\n if (unitsTranslation) {\n value = unitsTranslation.translateFromModelUnits(value, 'time');\n }\n return value;\n });\n\n model.defineOutput('timePerTick', {\n label: \"Model time per tick\",\n unitType: 'time',\n format: 'f'\n }, function() {\n return model.get('timeStep') * model.get('timeStepsPerTick');\n });\n\n (function() {\n var displayTimeUnits;\n var displayTimePropertyDescription;\n\n // Allow units definition to declare a \"Display time\"; specifically, let MD2D units definition\n // define a \"displayValue\" section in the time unit that returns ps instead of fs.\n\n if (unitsDefinition.units.time.displayValue) {\n displayTimeUnits = unitsDefinition.units.time.displayValue;\n } else {\n displayTimeUnits = _.extend({}, unitsDefinition.units.time);\n displayTimeUnits.unitsPerBaseUnit = 1;\n }\n\n displayTimePropertyDescription = new PropertyDescription(displayTimeUnits, {\n unitName: displayTimeUnits.name,\n unitPluralName: displayTimeUnits.pluralName,\n unitAbbreviation: displayTimeUnits.symbol,\n format: '.1f'\n });\n\n model.defineOutput('displayTime', {\n label: \"Time\",\n unitName: displayTimeUnits.name,\n unitPluralName: displayTimeUnits.pluralName,\n unitAbbreviation: displayTimeUnits.symbol,\n format: '.1f'\n }, function() {\n return model.get('time') * displayTimeUnits.unitsPerBaseUnit;\n });\n\n model.defineOutput('displayTimePerTick', {\n label: \"Model time per tick\",\n unitName: displayTimeUnits.name,\n unitPluralName: displayTimeUnits.pluralName,\n unitAbbreviation: displayTimeUnits.symbol,\n format: '.3f'\n }, function() {\n return model.get('timePerTick') * displayTimeUnits.unitsPerBaseUnit;\n });\n\n model.formatTime = function(time) {\n return displayTimePropertyDescription.format(time * displayTimeUnits.unitsPerBaseUnit);\n };\n }());\n\n model.defineOutput('tickCounter', {\n label: \"Tick Counter\",\n unitType: '',\n format: '4g'\n }, function() {\n return tickHistory.get('counter');\n });\n\n model.defineOutput('newStep', {\n label: \"New Step\",\n unitType: '',\n format: ''\n }, function() {\n return newStep;\n });\n\n model.defineOutput('kineticEnergy', {\n label: \"Kinetic Energy\",\n unitType: 'energy',\n format: '.4g'\n }, function() {\n var value = modelState.KE;\n if (unitsTranslation) {\n value = unitsTranslation.translateFromModelUnits(value, 'energy');\n }\n return value;\n });\n\n model.defineOutput('potentialEnergy', {\n label: \"Potential Energy\",\n unitType: 'energy',\n format: '.4g'\n }, function() {\n var value = modelState.PE;\n if (unitsTranslation) {\n value = unitsTranslation.translateFromModelUnits(value, 'energy');\n }\n return value;\n });\n\n model.defineOutput('totalEnergy', {\n label: \"Total Energy\",\n unitType: 'energy',\n format: '.4g'\n }, function() {\n var value = modelState.KE + modelState.PE;\n if (unitsTranslation) {\n value = unitsTranslation.translateFromModelUnits(value, 'energy');\n }\n return value;\n });\n\n model.defineOutput('temperature', {\n label: \"Temperature\",\n unitType: 'temperature',\n format: 'f'\n }, function() {\n var value = modelState.temperature;\n if (unitsTranslation) {\n value = unitsTranslation.translateFromModelUnits(value, 'temperature');\n }\n return value;\n });\n\n // FIXME. More yuck: We still need a pattern for recompute model properties which don't depend\n // on physics (and which therefore can be recomputed without invalidating and recomputing all\n // the physics based properties) while still making them (1) observable and (2) read-only.\n\n // used to triggers recomputation of isPlayable property based on isStopped and isReady:\n model.on('play.model', recomputeProperties);\n model.on('stop.model', recomputeProperties);\n\n function recomputeProperties() {\n propertySupport.invalidatingChangePreHook();\n propertySupport.invalidatingChangePostHook();\n }\n\n model.defineOutput('isPlayable', {\n label: \"Playable\"\n }, function() {\n // FIXME: isStopped predates the use of ES5 getters, therefore it must be invoked\n return model.isReady && model.isStopped();\n });\n\n model.defineOutput('hasPlayed', {\n label: \"has Played\"\n }, function() {\n return model.hasPlayed;\n });\n\n model.defineOutput('isStopped', {\n label: \"Stopped?\"\n }, function() {\n return model.isStopped();\n });\n\n readModelState();\n model.updateAllOutputProperties();\n\n if (!initializationOptions.waitForSetup) {\n model.ready();\n }\n\n model.performanceOptimizer = new PerformanceOptimizer(model);\n\n model.namespace = namespace;\n\n return model;\n};\n","/**\n * Views can require this function to get next available tab index.\n */\nvar tabIndex = 0;\n\nexport default function getNextTabIndex() {\n return tabIndex++;\n};\n","\n// Cache results of feature tests, as e.g. two different modules can ask about the same thing.\nvar CACHE = {};\n\nexport default {\n /**\n * Returns true if CSS pointer-events: none style can be used to make an element transparent\n * for mouse events and document.elementFromPoint() function.\n */\n get cssPointerEvents() {\n if (CACHE.cssPointerEvents === undefined) {\n CACHE.cssPointerEvents = (function() {\n var $div1, $div2, $svg, result;\n // Using \"fixed\" positioning we can avoid thinking about scrollTop / scrollLeft values,\n // test elements will be always inside the current viewport.\n $div1 = $(\"
\").css({\n \"position\": \"fixed\",\n \"left\": 0,\n \"top\": 0,\n \"width\": \"10px\",\n \"height\": \"10px\"\n }).appendTo(\"body\");\n $div2 = $(\"
\").css({\n \"position\": \"fixed\",\n \"left\": 0,\n \"top\": 0,\n \"width\": \"10px\",\n \"height\": \"10px\",\n \"pointer-events\": \"none\" // !!!\n }).appendTo(\"body\");\n $svg = $(\"\").css({\n \"position\": \"fixed\",\n \"left\": 0,\n \"top\": 0,\n \"width\": \"10px\",\n \"height\": \"10px\",\n \"pointer-events\": \"none\" // !!!\n }).appendTo(\"body\");\n\n result = $(document.elementFromPoint(5, 5)).attr(\"class\");\n\n $svg.remove();\n $div2.remove();\n $div1.remove();\n\n switch (result) {\n case \"supported\":\n return true;\n case \"unsupported\":\n return false;\n default:\n console.warn(\"CSS pointer-events feature test failed\");\n return false;\n }\n }());\n }\n return CACHE.cssPointerEvents;\n }\n};\n","/**\n Forward mouse events to the view's stack of overlaid visual layers to simulate the \"hit\n testing\" that would occur natively if the visual layers were all implemented as descendants of\n a single, common svg element.\n\n In that scenario, native hit-testing is used: a mouse event at any point is forwarded to the\n topmost visible element at that point; the layers above it are effectively transparent to the\n event. This is subject to control by the 'pointer-events' property. See\n http://www.w3.org/TR/SVG/interact.html#pointer-processing\n\n However, in order to allow some layers to be implemented as elements (or perhaps\n or rootmost elements, to which hardware-accelerated css transforms apply), and to\n allow those layers to be above some layers and below others, our layers cannot in fact be\n children of a common svg element.\n\n This means that the topmost layer always becomes the target of any mouseevent on the view,\n regardless of whether it has an element at that point, and it hides the event from the layers\n below.\n\n What we need, therefore, is to simulate svg's hit testing. This can be achieved by listening\n to events that bubble to the topmost layer and successively hiding the layers below, applying\n document.elementFromPoint to determine whether there is an element within that layer at that\n event's coordinates. (Where the layer in question is a with its own hit testing\n implemented in Javascript, we must defer to the layer's own hit-testing algorithm instead\n of using elementFromPoint.)\n\n CSS pointer-events (as distinct from SVG pointer events) cannot completely capture the\n semantics we need because they simply turn pointer \"transparency\" on or off rather than\n responding to the presence or absence of an element inside the layer at the event coordinates;\n and besides they do not work in IE9 or IE10.\n\n Note that to the extent we do use CSS pointer-events, document.elementFromPoint correctly\n respects the \"none\" value.\n\n What this means for event handling:\n\n * Mousedown, mouseup, and any custom mouse events such as those created by the jQuery\n ContextMenu plugin, are captured by a click shield element and prevented from bubbling.\n However, a clone event is dispatched to the element that passed the hit test and allowed\n to bubble to the window.\n\n * Click events on the click shield are captured and canceled because they are inherently not\n meaningful--the browser cannot tell if the mouseup and mousedown targets are \"really\" the\n same so it dispatches click events anytime a mousedown and mouseup occur on the view.\n Instead, if the mousedown and mouseup occur on the same element or sprite (e.g., same\n atom) we dispatch a synthetic click event targeted at the element. In the case that the\n mouseup occurs on a sprite in the canvas layer, the click event is only emitted if the\n same sprite was under the previous mousedown. Additionally, the target of a click on a\n sprite is the canvas layer itself since to DOM gives us no way to be any more specific.\n (Notice this means the same canvas can successfully hit test a mousedown followed by a\n mouseup, but still not cause a click to be issued, if the mousedown and mouseup were over\n two different sprites.)\n\n * Canvas elements should not listen for click events. They are responsible instead for\n performing a click action, if appropriate, when they receive a mouseup, and notifying the\n parent whether a DOM click event should be issued. (This prevents them from having to\n hit-test the same coordinates twice, once for the mouseup and then once for a click.)\n\n * Single-touch containing touch events will be captured and canceled, and synthetic mouse\n events corresponding to the touches will be issued and routed through the above-discussed\n hit test exactly as if they were mouse events. This is a reasonable choice because we do\n not use any multitouch gestures and must retain compatibility with desktop browsers.\n\n * Note that mouseover/mouseout/mousenter/mouseleave events are not handled in any way!\n*/\nimport featureTests from 'common/feature-tests';\n// Dependencies.\nvar EVENT_TYPES = ['mousedown', 'mouseup', 'contextmenu'],\n\n // Keep track of window listeners, so helper can cleanup previous listeners. Note that it\n // means that only one event translation per window is allowed for now!\n windowListeners = [];\n\nfunction addWindowEventListener(type, listener, useCapture) {\n window.addEventListener(type, listener, useCapture);\n\n windowListeners.push({\n type: type,\n func: listener,\n capture: useCapture\n });\n}\n\nfunction cleanupWindowListeners() {\n var l;\n while (windowListeners.length > 0) {\n l = windowListeners.pop();\n window.removeEventListener(l.type, l.func, l.capture);\n }\n}\n\nfunction noop() {}\n\n/**\n * @param {Element} foregroundNode the top-most layer.\n */\nexport default function HitTestingHelper(foregroundNode) {\n var api;\n\n // A list of all outermost svg/canvas/div containers which may have clickable or touchable child\n // elements, ordered from topmost to bottom-most. Because the layers are siblings, not\n // ancestors, the upper layers prevent mouse and touch events from reaching the lower layers\n // even when no element within the upper layers is actually being clicked/touched.\n var layersToHitTest;\n\n // We need to hide HTML layers from mouse events. It can be achieved by setting\n // \"pointer-events\" style to \"none\", however it isn't supported by all browsers\n // (e.g. IE9, IE10, Safari 5). The fallback method is to set layer's visibility to \"hidden\".\n var propName = featureTests.cssPointerEvents ? \"pointerEvents\" : \"visibility\";\n var propHidden = featureTests.cssPointerEvents ? \"none\" : \"hidden\";\n var propBackup;\n\n var mousedownTarget;\n var targetForCreatedClick;\n var defaultPreventedFlag;\n var cancelClickFlag;\n\n // Return a cloned version of 'e' having 'target' as its target property; cancel the original\n // event.\n function retargetMouseEvent(e, target) {\n var clonedEvent = document.createEvent(\"MouseEvent\");\n clonedEvent.initMouseEvent(e.type, e.bubbles, e.cancelable, e.view, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget);\n // Object.defineProperty(clonedEvent, \"target\", {value: target});\n clonedEvent.forwardedTouchEvent = e.forwardedTouchEvent;\n // IE 9+ creates events with pageX and pageY set to 0.\n // Trying to modify the properties throws an error,\n // so we define getters to return the correct values.\n // Solution based on the approach used in: https://github.com/jquery/jquery-simulate\n if (clonedEvent.pageX === 0 && clonedEvent.pageY === 0 && Object.defineProperty) {\n var doc = document.documentElement;\n var body = document.body;\n var clientX = e.clientX;\n var clientY = e.clientY;\n\n Object.defineProperty(clonedEvent, \"pageX\", {\n get: function() {\n return clientX +\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\n (doc && doc.clientLeft || body && body.clientLeft || 0);\n }\n });\n Object.defineProperty(clonedEvent, \"pageY\", {\n get: function() {\n return clientY +\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\n (doc && doc.clientTop || body && body.clientTop || 0);\n }\n });\n }\n return clonedEvent;\n }\n\n // Create a click event from a mouse event (presumably mouseup). Leaves original event as-is.\n function createClick(e) {\n // TODO. Does copying the properties adequately capture all the semantics of the click event?\n var clonedEvent = document.createEvent(\"MouseEvent\");\n clonedEvent.initMouseEvent('click', true, e.cancelable, e.view, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget);\n return clonedEvent;\n }\n\n // Hide layer from mouse events using visibility or pointer-events styles.\n function hideLayer(i) {\n var layer = layersToHitTest[i];\n propBackup[i] = layer.style[propName];\n layer.style[propName] = propHidden;\n }\n\n // Restore original visibility or pointer-events styles of layers n to 0, inclusive.\n function unhideLayers(n) {\n for (var i = n; i >= 0; i--) {\n layersToHitTest[i].style[propName] = propBackup[i];\n }\n }\n\n function hitTest(e) {\n // Remember style rules of the layers we peel back\n propBackup = [];\n\n var layer;\n var target;\n var mouseEvent;\n var hitTestSucceeded;\n var isCanvasObjectClick;\n var layerBgColor;\n\n // Must be set, as we test it after calling hitTest()\n targetForCreatedClick = null;\n\n for (var i = 0, len = layersToHitTest.length; i < len; i++) {\n layer = layersToHitTest[i];\n\n if (i > 0) {\n hideLayer(i - 1);\n }\n\n if (layer.tagName.toLowerCase() === \"canvas\") {\n // For now we have to dispatch an event first, *then* see if the Canvas-based view\n // considered it a hit -- we stopPropagation and keep going if it does not report a hit.\n mouseEvent = retargetMouseEvent(e, layer);\n\n // Need to ask the Canvas-based view to perform custom hit-testing.\n // TODO: make this a static function rather than rebinding to closure each time.\n api.hitTestCallback = function(isHit) {\n hitTestSucceeded = isHit;\n if (!isHit) {\n mouseEvent.stopPropagation();\n mouseEvent.preventDefault();\n }\n };\n api.mouseupCallback = function(isClick) {\n isCanvasObjectClick = isClick;\n };\n\n layer.dispatchEvent(mouseEvent);\n\n // Restore safe noop functions. It ensures that even if client code calls one of them\n // unnecessarily, it won't have unwanted, side effects like .preventDefault() or\n // .stopPropagation() calls.\n api.hitTestCallback = noop;\n api.mouseupCallback = noop;\n\n if (isCanvasObjectClick) {\n // The canvas view itself won't listen to this click, but let the click bubble.\n targetForCreatedClick = layer;\n }\n\n if (hitTestSucceeded) {\n unhideLayers(i - 1);\n defaultPreventedFlag = mouseEvent.defaultPrevented;\n return layer;\n }\n } else {\n // IE bug: without background color layer will be transparent for .elementFromPoint(),\n // underlying canvas (if any) will become a target. See:\n // https://www.pivotaltracker.com/story/show/58418116\n layerBgColor = layer.style.backgroundColor;\n layer.style.backgroundColor = \"rgba(0,0,0,0)\";\n\n // clientX and clientY report the event coords in CSS pixels relative to the viewport\n // (ie they aubtract the x, y the page is scrolled to). This is what elementFromPoint\n // requires in Chrome, Safari 5+, IE 8+, and Firefox 3+.\n // http://www.quirksmode.org/dom/tests/elementfrompoint.html\n // http://www.quirksmode.org/blog/archives/2010/06/new_webkit_test.html\n // http://www.quirksmode.org/mobile/tableViewport_desktop.html\n target = document.elementFromPoint(e.clientX, e.clientY);\n\n // Restore original background color.\n layer.style.backgroundColor = layerBgColor;\n\n // FIXME? Since we nominally allow target layers to be hidden or have pointer-events: none\n // we would have to replace this simplistic test. In the case that the layer is\n // transparent to events even before we hide it, target !== layer not because target is an\n // element in the layer that received the hit but because the target is below the layer.\n if (target !== layer) {\n unhideLayers(i - 1);\n mouseEvent = retargetMouseEvent(e, target);\n target.dispatchEvent(mouseEvent);\n defaultPreventedFlag = mouseEvent.defaultPrevented;\n // There was an element in the layer at the event target. This hides the event from all\n // layers below, so we're done.\n return target;\n }\n }\n }\n // If no element is hit, make sure that all layer properties are restored.\n unhideLayers(layersToHitTest.length - 2); // -2 because the last layer is never hidden\n }\n\n // Translate any touch events on the foreground which have only a single touch point (\"finger\")\n // when started, to the corresponding mouse events. Does not attempt to initiate a cancel action\n // for touchcancel; just issues mouseup stops tracking the touch.\n function setupTouchEventTranslation(foregroundNode) {\n // Identifier of the touch point we are tracking; set to null when touch not in progress.\n var touchId = null;\n var touchStartX;\n var touchStartY;\n\n function createMouseEvent(touch, type) {\n var mouseEvent = document.createEvent(\"MouseEvent\");\n mouseEvent.initMouseEvent(type, true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);\n // This flag prevents FastClick from trying to pre-emptively cancel the event\n mouseEvent.forwardedTouchEvent = true;\n return mouseEvent;\n }\n\n // Detect whether the touch was moved >10 device pixels between start and end; if the touch\n // moved we may infer that the user performed a scroll.\n //\n // Contra @ppk (http://www.quirksmode.org/mobile/viewports2.html), screenX and screenY *are*\n // useful here because we're in an iframe. clientX/Y and pageX/Y are relative to our page and\n // visual viewport, respectively, *but those both move in rough synchrony with the touch* (and\n // we can't detect the scroll itself because the iframe's page and visual viewport offsets\n // don't change! The *outer* page changes but we may not be allowed to measure that.)\n // Fortunately, screenX and screenY are relative to the device, which lets us know if the\n // viewport moved \"physically\" (bonus: measurements in device pixels correspond to actual\n // physical distances in the user's world, and don't change with zoom).\n function didTouchMove(touch) {\n return Math.abs(touch.screenX - touchStartX) > 10 || Math.abs(touch.screenY - touchStartY) > 10;\n }\n\n // listener for touchstart\n function touchStarted(e) {\n var touch = e.changedTouches[0];\n\n if (e.touches.length > 1 || touch.target !== foregroundNode) {\n return;\n }\n\n cancelClickFlag = false;\n touchStartX = touch.screenX;\n touchStartY = touch.screenY;\n\n // Remember which touch point--later touch events may or may not include this touch point\n // but we have to listen to them all to make sure we update dragging state correctly.\n touchId = touch.identifier;\n foregroundNode.dispatchEvent(createMouseEvent(touch, 'mousedown'));\n\n if (defaultPreventedFlag) {\n e.preventDefault();\n }\n e.stopPropagation();\n }\n\n // Listener for touchmove, touchend, and touchcancel:\n function touchChanged(e) {\n\n if (touchId === null) {\n return;\n }\n\n // Don't translate touch events to mouse events when there are more than two fingers\n // on the screen. This lets us to support pinch-zoom even if user started gesture only\n // with one finger and added second later.\n if (e.type === \"touchmove\" && e.touches.length > 1) {\n // User added a second finger, perhaps he wants to do pinch-zoom or pan rather than\n // trigger \"click\" action at the end.\n cancelClickFlag = true;\n // In theory this isn't 100% correct, but... it ensures that no handler will be able\n // to call .preventDefault() on this event (e.q. D3 does that for touch events), so we\n // will always native browser behavior like panning or pinch-zoom. This is reasonable\n // assumption that 2-finger gestures are always used for navigation.\n e.stopPropagation();\n return;\n }\n\n var i;\n var len;\n var touch;\n var target;\n var mouseMoveEvent;\n\n for (i = 0, len = e.changedTouches.length; i < len; i++) {\n touch = e.changedTouches[i];\n\n if (touch.identifier !== touchId) {\n continue;\n }\n\n if (len === 1) {\n e.stopPropagation();\n }\n\n // touch's target will always be the element that received the touchstart. But since\n // we're creating a pretend mousemove, let its target be the target the browser would\n // report for an actual mousemove/mouseup (Remember that the--expensive--hitTest() is not\n // called for mousemove, though; drag handlers should and do listen for mousemove on the\n // window). Note that clientX can be off the document, so report window in that case!\n target = document.elementFromPoint(touch.clientX, touch.clientY) || window;\n\n if (e.type === 'touchmove') {\n if (!cancelClickFlag) {\n // Cancel \"click\" event when finger has moved (> 10px at the moment).\n cancelClickFlag = didTouchMove(touch);\n }\n mouseMoveEvent = createMouseEvent(touch, 'mousemove');\n target.dispatchEvent(mouseMoveEvent);\n // mousemove events can be captured and replaced by synthetic events (see .passMouseMove\n // method). In such case 'defaultPreventedFlag' will be automatically set to correct\n // value. However when event isn't captured and replaced by synthetic one, we have to\n // check .defaultPrevented property manually.\n if (!mouseMoveEvent.replacedBySynthetic) {\n defaultPreventedFlag = mouseMoveEvent.defaultPrevented;\n }\n } else if (e.type === 'touchend') {\n target.dispatchEvent(createMouseEvent(touch, 'mouseup'));\n touchId = null;\n } else if (e.type === 'touchcancel') {\n // Do not dispatch click event on touchcancel.\n cancelClickFlag = true;\n target.dispatchEvent(createMouseEvent(touch, 'mouseup'));\n touchId = null;\n }\n\n // .preventDefault() on touchend will prevent the browser from generating a events like\n // mousedown, mouseup and click. It's necessary as we already translated touchstart\n // to mousedown and touchend to mouseup. Our hit testing intentionally ignores\n // browser-generated click events anyway, and generates its own when appropriate.\n if (e.type === 'touchend' || defaultPreventedFlag) {\n e.preventDefault();\n }\n\n return;\n }\n }\n\n addWindowEventListener('touchstart', touchStarted, true);\n ['touchmove', 'touchend', 'touchcancel'].forEach(function(eventType) {\n addWindowEventListener(eventType, touchChanged, true);\n });\n\n // TODO implement cancel semantics for atom dragging?\n // see http://alxgbsn.co.uk/2011/12/23/different-ways-to-trigger-touchcancel-in-mobile-browsers/\n // until then we have to observe touchcancel to stop in-progress drags.\n }\n\n function init() {\n cleanupWindowListeners();\n\n layersToHitTest = [foregroundNode];\n\n EVENT_TYPES.forEach(function(eventType) {\n // Use a capturing handler on window so we can swallow the event\n addWindowEventListener(eventType, function(e) {\n var target;\n\n if (e.target !== foregroundNode) {\n return;\n }\n\n e.stopPropagation();\n // Chrome (and Safari?) bug: http://crbug.com/269917\n // If we call .preventDefault() on the original mousedown event, it will break handling of\n // events outside the iframe. It can cause issues like this one:\n // https://www.pivotaltracker.com/story/show/58446862\n if (e.type !== 'mousedown') {\n e.preventDefault();\n }\n\n target = hitTest(e);\n\n if (e.type === 'mousedown') {\n mousedownTarget = target;\n } else if (e.type === 'mouseup') {\n // Note that cancelClickFlag can be set to true if e.g. there was significant\n // touchmove between touchstart (mousedown) and touchend (mouseup). It means that\n // user was panning the viewport rather than trying to perform \"click\". Other case can\n // be when second finger was added between touchstart and touchend what can be used to\n // perform pinch-zoom rather than click.\n if (target && target === mousedownTarget &&\n target.tagName.toLowerCase() !== 'canvas' && !cancelClickFlag) {\n target.dispatchEvent(createClick(e));\n }\n if (targetForCreatedClick && !cancelClickFlag) {\n targetForCreatedClick.dispatchEvent(createClick(e));\n }\n }\n }, true);\n });\n\n // Completely swallow \"click\" events on the foregroundNode. The browser can't issue these\n // correctly; we have to issue them ourselves after a mouseup.\n addWindowEventListener('click', function(e) {\n if (e.target === foregroundNode) {\n e.stopPropagation();\n e.preventDefault();\n }\n }, true);\n\n setupTouchEventTranslation(foregroundNode);\n }\n\n api = {\n /**\n * Setups fast, simplified hit testing for mousemove events. 'mousemove' will be dispatched\n * only to the specified target element. Because of that we can avoid very expensive\n * .elementFromPoint() calls. Target will receive mouseover and mouseout events too.\n * @param {Element} mmoveSource\n * @param {Element} mmoveTarget\n */\n passMouseMove: function(mmoveSource, mmoveTarget) {\n var prevTarget;\n\n // Return a cloned version of 'e' but with a different 'type', and 'relatedTarget'.\n function createMouseEvent(e, type, relatedTarget) {\n var clonedEvent = document.createEvent(\"MouseEvent\");\n clonedEvent.initMouseEvent(type, e.bubbles, e.cancelable, e.view, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, relatedTarget || e.relatedTarget);\n return clonedEvent;\n }\n\n addWindowEventListener('mousemove', function(e) {\n // Note that we have to check if 'e' is not a synthetic event that can be be dispatched by\n // this handler. Otherwise we will enter infinite loop.\n if (!e.synthetic) {\n var target, mouseEvent;\n if (e.target !== mmoveSource) {\n // Target is different from desired source, we can only dispatch mouseout and return.\n if (prevTarget === mmoveTarget) {\n mmoveTarget.dispatchEvent(createMouseEvent(e, \"mouseout\", e.target));\n }\n prevTarget = e.target;\n return;\n }\n target = mmoveTarget;\n if (target !== prevTarget) {\n mmoveTarget.dispatchEvent(createMouseEvent(e, \"mouseover\", prevTarget));\n }\n e.stopPropagation();\n e.preventDefault();\n e.replacedBySynthetic = true;\n mouseEvent = retargetMouseEvent(e, target);\n mouseEvent.synthetic = true; // !!!\n // We don't support more sophisticated mousemove event passing, e.g. based on the hit\n // test results (yet?), so just set noop callback.\n api.hitTestCallback = noop;\n target.dispatchEvent(mouseEvent);\n // Set the defaultPreventedFlag.\n defaultPreventedFlag = mouseEvent.defaultPrevented;\n prevTarget = target;\n }\n }, true);\n },\n\n /**\n * Registers a new layer that will receive mouse events.\n * @param {Element} element\n */\n addLayer: function(element) {\n // Add new element *after* foreground element.\n layersToHitTest.splice(1, 0, element);\n },\n\n /**\n * Lets the code responsible for interaction inside canvas notify this helper whether a hit\n * really occurred inside canvas (e.g. some drawn element was hit or not). If this callback\n * isn't called (or is called with false argument), an event will be passed to the layers\n * below canvas.\n * @param {Boolean} isHit\n */\n hitTestCallback: noop,\n\n /**\n * Lets canvas notify this helper whether 'click' event should be dispatched.\n * @param {Boolean} isClick\n */\n mouseupCallback: noop\n };\n\n init();\n\n return api;\n}\n"," // ------------------------------------------------------------\n//\n// SVG View Container\n//\n// ------------------------------------------------------------\nimport performance from 'common/performance';\nimport benchmark from 'common/benchmark/benchmark';\nimport getNextTabIndex from 'common/views/tab-index';\nimport HitTestingHelper from 'common/views/hit-testing-helper';\nimport console from 'common/console';\nimport PIXI from 'pixi.js';\n// Dependencies.\nvar CANVAS_OVERSAMPLING = 2,\n\n MAX_Z_INDEX = 1000;\n\n// Assume that we can have *only one* Pixi renderer.\n// This is caused by the Pixi bug: https://github.com/GoodBoyDigital/pixi.js/issues/181\nfunction getPixiRenderer(w, h) {\n if (getPixiRenderer.instance == null) {\n var browser = benchmark.browser;\n var newRenderer;\n if (browser.browser === 'Firefox' && browser.oscpu.match(/Mac OS X 10.6/)) {\n // Work around GPU driver brokenness on some hardware running OS X 10.6 by not using\n // WebGL. Note Chrome automatically disables WebGL when using the problematic driver.\n // (Note that sometimes the separator between 10 and 6 is a '.' and sometimes a '_' so\n // use of the '.' matcher works is required)\n newRenderer = function(w, h, view, transparent) {\n return new PIXI.CanvasRenderer(w, h, view, transparent);\n };\n } else {\n newRenderer = PIXI.autoDetectRenderer;\n }\n getPixiRenderer.instance = newRenderer(w * CANVAS_OVERSAMPLING, h * CANVAS_OVERSAMPLING, null, true);\n } else {\n getPixiRenderer.instance.resize(w, h);\n }\n return getPixiRenderer.instance;\n}\ngetPixiRenderer.instance = null;\n\nexport default function SVGContainer(model, modelUrl, Renderer, opt) {\n // Public API object to be returned.\n var api,\n\n i18n = opt && opt.i18n || null,\n\n // Coordinate system origin. Supported values are 'bottom-left' and 'top-left'.\n origin = opt && opt.origin || 'bottom-left',\n\n $el,\n node,\n\n plotContainer, backgroundContainer, foregroundContainer,\n\n backgroundRect, backgroundGroup, foregroundGroup, brushContainer,\n\n pixiRenderers, pixiStages, pixiContainers,\n\n hitTestingHelper,\n viewportZIndex = 0,\n\n cx, cy,\n viewport, viewPortZoom,\n\n model2canvas = d3.scale.linear(),\n model2canvasInv = d3.scale.linear(),\n\n // Basic scaling functions for position, it transforms model units to \"pixels\".\n // Use it for positions of objects rendered inside the view.\n //\n // This function is exposed in public API. Never ever recreated it, as\n // renderers and sub-renders will loose reference to valid scale\n // function.\n model2px = d3.scale.linear(),\n\n // Inverted scaling function for position transforming model units to \"pixels\".\n // Use it for Y coordinates, as Y axis in model coordinate system increases\n // from bottom to top, while but SVG has increases from top to bottom.\n //\n // This function is exposed in public API. Never ever recreated it, as\n // renderers and sub-renders will loose reference to valid scale\n // function.\n model2pxInv = d3.scale.linear(),\n\n clickHandler,\n dragHandler,\n // d3.svg.brush object used to implement select action. It should be\n // updated each time model2px and model2pxInv functions are changed!\n selectBrush,\n\n dispatch = d3.dispatch(\"viewportDrag\"),\n\n renderer;\n\n function nextViewportZIndex() {\n return viewportZIndex++;\n }\n\n function getFontSizeInPixels() {\n return parseFloat($el.css('font-size')) || 18;\n }\n\n function scale() {\n var viewPortWidth = model.get(\"viewPortWidth\"),\n viewPortHeight = model.get(\"viewPortHeight\"),\n viewPortX = model.get(\"viewPortX\"),\n viewPortY = model.get(\"viewPortY\"),\n aspectRatio, modelSize;\n\n viewPortZoom = model.get(\"viewPortZoom\") || 1;\n\n // Model size in model units.\n modelSize = {\n \"minX\": model.get('minX'),\n \"minY\": model.get('minY'),\n \"maxX\": model.get('maxX'),\n \"maxY\": model.get('maxY')\n };\n\n // Note that viewPort specification can be undefined and then viewport\n // should fit the model.\n viewport = {\n width: viewPortWidth != null ? viewPortWidth : modelSize.maxX - modelSize.minX,\n height: viewPortHeight != null ? viewPortHeight : modelSize.maxY - modelSize.minY,\n x: viewPortX != null ? viewPortX : modelSize.minX,\n y: viewPortY != null ? viewPortY : modelSize.minY\n };\n\n viewport.scaledWidth = viewport.width / viewPortZoom;\n viewport.scaledHeight = viewport.height / viewPortZoom;\n if (origin === 'bottom-left') {\n viewport.y += viewport.scaledHeight;\n }\n\n aspectRatio = viewport.width / viewport.height;\n\n cx = $el.width();\n cy = cx / aspectRatio;\n node.style.height = cy + \"px\";\n\n // Basic model2px scaling function for position.\n model2px\n .domain([0, viewport.width])\n .range([0, cx]);\n\n model2canvas\n .domain([0, viewport.scaledWidth])\n .range([0, cx * CANVAS_OVERSAMPLING]);\n\n // Inverted model2px scaling function for position (for y-coordinates, domain can be inverted).\n model2pxInv\n .domain([viewport.height, 0])\n .range(origin === 'bottom-left' ? [0, cy] : [cy, 0]);\n\n model2canvasInv\n .domain([viewport.scaledHeight, 0])\n .range(origin === 'bottom-left' ? [0, cy * CANVAS_OVERSAMPLING] : [cy * CANVAS_OVERSAMPLING, 0]);\n\n if (selectBrush) {\n // Update brush to use new scaling functions.\n selectBrush\n .x(model2px)\n .y(model2pxInv);\n }\n }\n\n function redrawGridLinesAndLabels() {\n var fsize = 0.7 * getFontSizeInPixels(),\n // Overwrite default model2px and model2pxInv to display correct units.\n model2px = d3.scale.linear().domain([viewport.x + 0.07 * viewport.scaledWidth, viewport.x + viewport.scaledWidth]).range([0.07 * cx, cx]),\n model2pxInv = d3.scale.linear().domain([viewport.y, viewport.y - 0.93 * viewport.scaledHeight]).range([0, 0.93 * cy]),\n tx = function(d) {\n return \"translate(\" + model2px(d) + \",0)\";\n },\n ty = function(d) {\n return \"translate(0,\" + model2pxInv(d) + \")\";\n },\n stroke = function(d) {\n return d ? \"#ccc\" : \"#666\";\n },\n fx = model2px.tickFormat(5),\n fy = model2pxInv.tickFormat(5),\n lengthUnits = model.getUnitDefinition ? model.getUnitDefinition('length') : \"\",\n drawXunits = model.get(\"xunits\"),\n drawYunits = model.get(\"yunits\"),\n drawXLabel = model.get(\"xlabel\"),\n drawYLabel = model.get(\"ylabel\"),\n xlabel,\n ylabel;\n\n if (d3.event && d3.event.transform) {\n d3.event.transform(model2px, model2pxInv);\n }\n\n plotContainer.selectAll(\"g.x, g.y\").remove();\n\n // Regenerate x-ticks…\n var gx = plotContainer.selectAll(\"g.x\")\n .data(model2px.ticks(5), String)\n .attr(\"transform\", tx)\n .classed(\"axes\", true);\n\n gx.select(\"text\").text(fx);\n\n var gxe = gx.enter().append(\"g\")\n .attr(\"class\", \"x\")\n .attr(\"transform\", tx);\n\n if (model.get(\"gridLines\")) {\n gxe.append(\"line\")\n .attr(\"stroke\", stroke)\n .attr(\"y1\", 0)\n .attr(\"y2\", cy - (drawXLabel ? fsize : 0) - (drawXunits ? fsize : 0));\n } else {\n gxe.selectAll(\"line\").remove();\n }\n\n // x-axis label\n xlabel = plotContainer.selectAll(\"text.xlabel\").data(drawXLabel ? [lengthUnits.pluralName] : []);\n xlabel.enter().append(\"text\");\n xlabel\n .attr(\"class\", \"axis\")\n .attr(\"class\", \"xlabel\")\n .attr(\"x\", cx / 2)\n .attr(\"y\", cy)\n .attr(\"dy\", \"-0.1em\")\n .style(\"text-anchor\", \"middle\")\n .text(String);\n xlabel.exit().remove();\n\n // x-axis units\n if (drawXunits) {\n gxe.append(\"text\")\n .attr(\"class\", \"xunits\")\n .attr(\"y\", cy)\n .attr(\"dy\", model.get(\"xlabel\") ? \"-1em\" : \"-0.1em\")\n .attr(\"text-anchor\", \"middle\")\n .text(fx);\n } else {\n gxe.select(\"text.xunits\").remove();\n }\n\n // Regenerate y-ticks…\n var gy = plotContainer.selectAll(\"g.y\")\n .data(model2pxInv.ticks(5), String)\n .attr(\"transform\", ty)\n .classed(\"axes\", true);\n\n gy.select(\"text\")\n .text(fy);\n\n var gye = gy.enter().append(\"g\")\n .attr(\"class\", \"y\")\n .attr(\"transform\", ty)\n .attr(\"background-fill\", \"#FFEEB6\");\n\n if (model.get(\"gridLines\")) {\n gye.append(\"line\")\n .attr(\"stroke\", stroke)\n .attr(\"x1\", (drawYLabel ? fsize : 0) + (drawYunits ? 2 * fsize : 0))\n .attr(\"x2\", cx);\n } else {\n gye.selectAll(\"line\").remove();\n }\n\n // y-axis label\n ylabel = plotContainer.selectAll(\"text.ylabel\").data(drawYLabel ? [lengthUnits.pluralName] : []);\n ylabel.enter().append(\"text\");\n ylabel\n .attr(\"class\", \"axis\")\n .attr(\"class\", \"ylabel\")\n .attr(\"transform\", \"translate(0 \" + (cy * 0.5) + \") rotate(-90)\")\n .attr(\"dy\", \"0.75em\")\n .style(\"text-anchor\", \"middle\")\n .text(String);\n ylabel.exit().remove();\n\n // y-axis units\n if (drawYunits) {\n gye.append(\"text\")\n .attr(\"class\", \"yunits\")\n .attr(\"dy\", \"0.34em\")\n .attr(\"dx\", model.get(\"ylabel\") ? \"1em\" : \"0.1em\")\n .text(fy);\n } else {\n gxe.select(\"text.yunits\").remove();\n }\n }\n\n // Setup background.\n function setupBackground() {\n var color = model.get(\"backgroundColor\") || \"rgba(0, 0, 0, 0)\";\n backgroundRect.attr(\"fill\", color);\n // Set color of PIXI.Stage to fix an issue with outlines around the objects that are visible\n // when WebGL renderer is being used. It only happens when PIXI.Stage background is different\n // from model container background. It's necessary to convert color into number, as PIXI\n // accepts only numbers. D3 helps us handle color names like \"red\", \"green\" etc. It doesn't\n // support rgba values, so ingore alpha channel.\n pixiStages.forEach(function(pixiStage) {\n pixiStage.setBackgroundColor(parseInt(d3.rgb(color.replace(\"rgba\", \"rgb\")).toString().substr(1), 16));\n });\n }\n\n function mousedown() {\n setFocus();\n }\n\n function setFocus() {\n if (model.get(\"enableKeyboardHandlers\")) {\n node.focus();\n }\n }\n\n function basicSVGAttrs() {\n return this.attr({\n // TODO confirm xmlns def is required?\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'xmlns:xmlns:xlink': 'http://www.w3.org/1999/xlink', // hack: doubling xmlns: so it doesn't disappear once in the DOM\n 'overflow': 'hidden' // Important in IE! Otherwise content won't be clipped by SVG container\n });\n }\n\n function layeredOnTop() {\n return this.style({\n position: \"absolute\",\n top: 0,\n left: 0\n });\n }\n\n function renderContainer() {\n var viewBox;\n\n // Create container, or update properties if it already exists.\n if (plotContainer === undefined) {\n\n plotContainer = d3.select(node).append(\"svg\")\n .attr(\"class\", \"root-layer container plot-container\")\n .style(\"z-index\", nextViewportZIndex())\n .call(basicSVGAttrs);\n\n backgroundRect = plotContainer.append(\"rect\")\n .attr(\"class\", \"container-background background\");\n\n backgroundContainer = d3.select(node).append(\"svg\")\n .attr(\"class\", \"root-layer container background-container svg-viewport\")\n .style(\"z-index\", nextViewportZIndex())\n .call(basicSVGAttrs);\n\n backgroundGroup = backgroundContainer.append(\"g\");\n\n foregroundContainer = d3.select(node).append(\"svg\")\n .attr(\"class\", \"root-layer container foreground-container svg-viewport\")\n .style(\"z-index\", MAX_Z_INDEX)\n // IE bug: without background color the layer will be transparent for mouse events\n // when there is some underlying canvas. See:\n // https://www.pivotaltracker.com/story/show/58418116\n .style(\"background-color\", \"rgba(0,0,0,0)\")\n .on(\"contextmenu\", function() {\n // Disable default context menu on foreground container, as otherwise it covers all\n // possible context menu that can be used by layers beneath.\n d3.event.preventDefault();\n })\n .call(basicSVGAttrs);\n\n foregroundGroup = foregroundContainer.append(\"g\");\n\n brushContainer = foregroundContainer.append(\"g\")\n .attr(\"class\", \"brush-container\");\n\n // Root layers should overlap each other.\n d3.select(node).selectAll(\".root-layer\").call(layeredOnTop);\n\n if (model.get(\"enableKeyboardHandlers\")) {\n d3.select(node)\n .attr(\"tabindex\", 0)\n .on(\"mousedown\", mousedown);\n }\n\n pixiRenderers = [];\n pixiStages = [];\n pixiContainers = [];\n\n // Setup custom hit testing similar to one provided natively by SVG. So layers can overlap,\n // but only real objects (elements inside layer) will block mouse events.\n hitTestingHelper = new HitTestingHelper(foregroundContainer.node());\n hitTestingHelper.addLayer(plotContainer.node());\n hitTestingHelper.addLayer(backgroundContainer.node());\n }\n\n // Update cx, cy, size, viewport and modelSize variables.\n scale();\n\n // Dimension/position of all the root layers\n d3.select(node).selectAll('.root-layer')\n .attr({\n width: cx,\n height: cy\n })\n // Update style values too, as otherwise SVG isn't clipped correctly e.g. in Safari.\n .style({\n width: cx + \"px\",\n height: cy + \"px\"\n });\n\n pixiRenderers.forEach(function(pixiRenderer) {\n pixiRenderer.resize(cx * CANVAS_OVERSAMPLING, cy * CANVAS_OVERSAMPLING);\n $(pixiRenderer.view).css({\n width: cx,\n height: cy\n });\n });\n\n viewBox = model2px(viewport.x) + \" \" +\n model2pxInv(viewport.y) + \" \" +\n model2px(viewport.scaledWidth) + \" \" +\n model2px(viewport.scaledHeight);\n\n // Apply the viewbox to all \"viewport\" layers we have created\n d3.select(node).selectAll(\".svg-viewport\").attr({\n viewBox: viewBox,\n x: 0,\n y: 0,\n width: model2px(viewport.width),\n height: model2px(viewport.height)\n });\n\n pixiContainers.forEach(function(pixiContainer) {\n // It would be nice to set position of PIXI.Stage object, but it doesn't work. We have\n // to use nested PIXI.DisplayObjectContainer:\n pixiContainer.pivot.x = model2canvas(viewport.x);\n pixiContainer.pivot.y = model2canvasInv(viewport.y);\n // This would also work:\n // pixiContainer.scale.x = pixiContainer.scale.y = (modelSize.maxX - modelSize.minX) /\n // viewport.scaledWidth;\n // and would be pretty fast, however sprites will be pixelated. To ensure that quality isn't\n // affected it's better to modify .model2canvas() functions.\n });\n\n // Update padding, as it can be changed after rescaling.\n // TODO move this up to where other attrs are set on 'layers'. It doesn't look like 'padding'\n // is changed between here and there (and if it *is*, that needs to be made more explicit.)\n\n // Rescale main plot.\n backgroundRect\n .attr({\n width: model2px(viewport.width),\n height: model2px(viewport.height),\n x: 0,\n y: 0\n });\n\n redrawGridLinesAndLabels();\n api.renderCanvas();\n }\n\n // Support viewport dragging behavior.\n function viewportDragging() {\n var xs = [],\n ys = [],\n ts = [],\n samples = 8,\n newDrag = false,\n dragOpt = model.properties.viewPortDrag || false,\n vx, vy, t,\n dragBehavior;\n\n if (dragOpt === false) {\n // This causes that drag behavior will be removed and dragging of\n // other nodes will work again. It's based on the d3 implementation,\n // please see drag() function here:\n // https://github.com/mbostock/d3/blob/master/src/behavior/drag.js\n plotContainer.on(\"mousedown.drag\", null)\n .on(\"touchstart.drag\", null)\n .classed(\"draggable\", false);\n return;\n }\n\n dragBehavior = d3.behavior.drag();\n dragBehavior.on(\"dragstart\", function() {\n newDrag = true;\n xs.length = 0;\n ys.length = 0;\n ts.length = 0;\n updateArrays();\n\n // Prevent default on mousemove. It's necessary when we deal with synthetic mouse\n // events translated from touch events. Then we have to prevent default action (panning,\n // zooming etc.).\n d3.select(window).on(\"mousemove.viewport-drag\", function() {\n d3.event.preventDefault();\n });\n }).on(\"drag\", function() {\n var dx = dragOpt === \"y\" ? 0 : model2px.invert(d3.event.dx),\n dy = dragOpt === \"x\" ? 0 : model2px.invert(d3.event.dy);\n model.properties.viewPortX -= dx;\n model.properties.viewPortY += dy;\n dispatch.viewportDrag();\n updateArrays();\n }).on(\"dragend\", function() {\n d3.select(window).on(\"mousemove.viewport-drag\", null);\n\n updateArrays();\n var last = xs.length - 1,\n dt = ts[last] - ts[0];\n // Prevent from division by 0.\n if (dt < 1e-5) return;\n // When time difference between last 'drag' and 'dragend' events is\n // bigger than 100ms assume that there should be no interia (it means\n // that pointer was staying in one place > 100ms just before 'mouseup').\n if (ts[last] - ts[last - 1] > 100) return;\n vx = (xs[last] - xs[0]) / dt;\n vy = (ys[last] - ys[0]) / dt;\n t = ts[last];\n newDrag = false;\n d3.timer(step);\n });\n\n plotContainer.call(dragBehavior).classed(\"draggable\", true);\n\n function updateArrays() {\n xs.push(model.properties.viewPortX);\n ys.push(model.properties.viewPortY);\n ts.push(performance.now());\n if (xs.length > samples) {\n xs.shift();\n ys.shift();\n ts.shift();\n }\n }\n\n function step() {\n if (newDrag) return true;\n\n var now = performance.now(),\n dt = now - t,\n ax = -0.003 * vx,\n ay = -0.003 * vy;\n\n // Update positions.\n model.properties.viewPortX += vx * dt + 0.5 * ax * dt * dt;\n model.properties.viewPortY += vy * dt + 0.5 * ay * dt * dt;\n dispatch.viewportDrag();\n // Update velocities.\n vx += ax * dt;\n vy += ay * dt;\n // Update last time.\n t = now;\n\n if (Math.abs(vx) < 1e-5 && Math.abs(vy) < 1e-5) {\n return true;\n }\n return false;\n }\n }\n\n function removeClickHandlers() {\n var selector;\n for (selector in clickHandler) {\n if (clickHandler.hasOwnProperty(selector)) {\n plotContainer.selectAll(selector).on(\"click.custom\", null);\n }\n }\n }\n\n function init() {\n // Setup model view state.\n renderContainer();\n viewportDragging();\n\n clickHandler = {};\n dragHandler = {};\n\n // Register listeners.\n // Redraw container each time when some visual-related property is changed.\n model.addPropertiesListener([\"backgroundColor\"], api.repaint);\n model.addPropertiesListener([\"gridLines\", \"xunits\", \"yunits\", \"xlabel\", \"ylabel\",\n \"viewPortX\", \"viewPortY\", \"viewPortZoom\"\n ],\n renderContainer);\n model.addPropertiesListener([\"viewPortDrag\"],\n viewportDragging);\n\n }\n\n api = {\n get $el() {\n return $el;\n },\n get node() {\n return node;\n },\n get foregroundContainer() {\n return foregroundContainer;\n },\n get model2px() {\n return model2px;\n },\n get model2canvas() {\n return model2canvas;\n },\n get model2pxInv() {\n return model2pxInv;\n },\n get model2canvasInv() {\n return model2canvasInv;\n },\n get i18n() {\n return i18n;\n },\n get setFocus() {\n return setFocus;\n },\n get fontFamily() {\n // Note that we intentionally return font-family of the model container instead of\n // the interactive container. Custom theme may apply some font to interactive container,\n // but it may want to keep fonts inside model unchanged.\n return this.$el.css('font-family');\n },\n get getFontSizeInPixels() {\n return getFontSizeInPixels;\n },\n get url() {\n return modelUrl;\n },\n get clickHandler() {\n return clickHandler;\n },\n get dragHandler() {\n return dragHandler;\n },\n\n get hitTestCallback() {\n return hitTestingHelper.hitTestCallback;\n },\n\n get mouseupCallback() {\n return hitTestingHelper.mouseupCallback;\n },\n\n repaint: function() {\n setupBackground();\n if (renderer.repaint) renderer.repaint();\n\n api.updateClickHandlers();\n\n api.renderCanvas();\n },\n\n /**\n Renderers call this method to append a \"viewport\" svg element on behalf of a renderer.\n\n Viewport svgs are drawn to the exact same dimensions at the exact same screen coordinates\n (they overlap each other exactly.) Viewports added later are drawn above viewports added\n earlier, but are transparent.\n\n Viewports can contain layering elements;\n\n What makes the viewports special is that their viewBox attribute is automatically adjusted\n when the model viewport (visible part of the model) is adjusted. Renderers can just draw to\n the viewport element without needing to think about\n\n Viewports are added in front of all viewports previously added. At the moment, they cannot\n be reordered.\n */\n appendViewport: function() {\n var parent = pixiRenderers.length > 0 ? foregroundGroup : backgroundGroup;\n return parent.append(\"g\");\n },\n\n /**\n Please see .appendViewport() docs.\n The main difference is that it returns PIXI.DisplayObjectContainer object and related\n canvas (where container will be rendered) instead of SVG group element.\n\n Note that mousemove events will be always passed to this viewport.\n */\n appendPixiViewport: function() {\n var pixiRenderer, pixiStage;\n var browser;\n var newRenderer;\n\n if (pixiRenderers.length === 0) {\n pixiRenderer = getPixiRenderer(cx, cy);\n pixiStage = new PIXI.Stage(null);\n\n node.appendChild(pixiRenderer.view);\n d3.select(pixiRenderer.view)\n .attr(\"class\", \"pixi-viewport\")\n .style(\"z-index\", nextViewportZIndex())\n .call(layeredOnTop);\n\n pixiRenderers.push(pixiRenderer);\n pixiStages.push(pixiStage);\n\n // Cascade events into this viewport.\n hitTestingHelper.addLayer(pixiRenderer.view);\n hitTestingHelper.passMouseMove(foregroundContainer.node(), pixiRenderers[0].view);\n }\n\n var pixiContainer = new PIXI.DisplayObjectContainer();\n pixiStages[0].addChild(pixiContainer);\n pixiContainers.push(pixiContainer);\n\n // We return container instead of stage, as we can apply view port transformations to it.\n // Stage transformations seem to be ignored by the PIXI renderer.\n return {\n pixiContainer: pixiContainer,\n canvas: pixiRenderers[0].view\n };\n },\n\n resize: function() {\n renderContainer();\n api.repaint();\n\n if (selectBrush) {\n brushContainer.select(\"g.select-area\").call(selectBrush);\n }\n\n if (renderer.resize) renderer.resize();\n\n api.renderCanvas();\n },\n\n setup: function() {\n if (renderer.setup) renderer.setup(model);\n\n api.renderCanvas();\n },\n\n update: function() {\n if (renderer.update) renderer.update();\n\n api.renderCanvas();\n },\n\n renderCanvas: function() {\n var i, len;\n // For now we follow that each Pixi viewport has just one PIXI.Stage.\n for (i = 0, len = pixiRenderers.length; i < len; i++) {\n pixiRenderers[i].render(pixiStages[i]);\n }\n },\n\n getHeightForWidth: function(width) {\n var aspectRatio = viewport.width / viewport.height;\n return width / aspectRatio;\n },\n\n bindModel: function(newModel, newModelUrl) {\n modelUrl = newModelUrl || modelUrl;\n model = newModel || model;\n removeClickHandlers();\n api.setSelectHandler(null);\n init();\n\n if (renderer.bindModel) renderer.bindModel(newModel, newModelUrl);\n },\n\n pos: function() {\n // Add a pos() function so the model renderer can more easily\n // manipulate absolutely positioned dom elements it may create or\n // manage.\n var rect = {\n bottom: 0,\n top: 0,\n height: 0,\n left: 0,\n right: 0,\n width: 0\n };\n if ($el) {\n rect.top = $el.position().top;\n rect.left = $el.position().left;\n rect.width = $el.width();\n rect.height = $el.height();\n rect.bottom = rect.top + rect.height;\n rect.right = rect.left + rect.width;\n }\n return rect;\n },\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n /**\n * Sets custom click handler.\n *\n * @param {string} selector Selector string defining clickable objects.\n * @param {Function} handler Custom click handler. It will be called\n * when object is clicked with (x, y, d, i) arguments:\n * x - x coordinate in model units,\n * y - y coordinate in model units,\n * d - data associated with a given object (can be undefined!),\n * i - ID of clicked object (usually its value makes sense if d is defined).\n */\n setClickHandler: function(selector, handler) {\n if (typeof handler !== \"function\") {\n throw new Error(\"Click handler should be a function.\");\n }\n clickHandler[selector] = handler;\n api.updateClickHandlers();\n },\n\n /**\n * Applies all custom click handlers to objects matching selector\n * Note that this function should be called each time when possibly\n * clickable object is added or repainted!\n */\n updateClickHandlers: function() {\n var selector;\n\n function getClickHandler(handler) {\n return function(d, i) {\n if (d3.event.defaultPrevented) return;\n // Get current coordinates relative to the plot area!\n var coords = d3.mouse(backgroundRect.node()),\n x = model2px.invert(coords[0]),\n y = model2pxInv.invert(coords[1]);\n console.log(\"[view] click at (\" + x.toFixed(3) + \", \" + y.toFixed(3) + \")\");\n handler(x, y, d, i);\n };\n }\n\n for (selector in clickHandler) {\n if (clickHandler.hasOwnProperty(selector)) {\n // Use 'custom' namespace to don't overwrite other click handlers which\n // can be added by default.\n d3.selectAll(selector).on(\"click.custom\", getClickHandler(clickHandler[selector]));\n }\n }\n },\n\n /**\n * Sets custom select handler. When you provide function as a handler, select action\n * is enabled and the provided handler executed when select action is finished.\n * To disable select action, pass 'null' as an argument.\n *\n * @param {Function} handler Custom select handler. It will be called\n * when select action is finished with (x, y, w, h) arguments:\n * x - x coordinate of lower left selection corner (in model units),\n * y - y coordinate of lower left selection corner (in model units),\n * width - width of selection rectangle (in model units),\n * height - height of selection rectangle (in model units).\n *\n * Pass 'null' to disable select action.\n */\n setSelectHandler: function(handler) {\n if (typeof handler !== \"function\" && handler !== null) {\n throw new Error(\"Select handler should be a function or null.\");\n }\n // Remove previous select handler.\n brushContainer.select(\"g.select-area\").remove();\n if (handler === null) {\n // Previous handler removed, so just return.\n selectBrush = null;\n return;\n }\n selectBrush = d3.svg.brush()\n .x(model2px)\n .y(model2pxInv)\n .on(\"brushstart.select\", function() {\n // Prevent default on mousemove. It's necessary when we deal with synthetic mouse\n // events translated from touch events. Then we have to prevent default action (panning,\n // zooming etc.).\n d3.select(window).on(\"mousemove.select\", function() {\n d3.event.preventDefault();\n });\n })\n .on(\"brushend.select\", function() {\n d3.select(window).on(\"mousemove.select\", null);\n\n var r = selectBrush.extent(),\n x = r[0][0],\n y = r[0][1],\n width = r[1][0] - x,\n height = r[1][1] - y;\n\n console.log(\"[view] selection area (\" + x.toFixed(3) + \", \" +\n y.toFixed(3) + \"), width: \" + width + \", height: \" + height);\n\n // Call the user defined callback, passing selected area, as\n // rectangle defined by:\n // x, y, width, height\n // where (x, y) defines its lower left corner in model units.\n handler(x, y, width, height);\n // Clear and hide the brush.\n selectBrush.clear();\n // Redraw brush (which is now empty).\n brushContainer.select(\"g.select-area\").call(selectBrush);\n });\n // Add a new \"g\" to easily remove it while\n // disabling / reseting select action.\n brushContainer.append(\"g\").classed(\"select-area\", true).call(selectBrush);\n },\n /**\n * Sets custom drag handler. Note that dragging behavior is very specific for implementation\n * and it's done in the particular renderers. That's why this functions only provides handler\n * for renderers in .dragHandler property (plain object). Renderers that implement dragging\n * behavior can tests whether drag handler for a given object type is available, e.g.:\n * if (svgContainer.dragHandler.someObject) {\n * svgContainer.dragHandler.someObject(x, y, d, i);\n * }\n * This method is mostly about convention, it doesn't provide any special behavior.\n *\n * @param {string} selector String defining draggable objects.\n * @param {Function} handler Custom drag handler. It will be called\n * when object is dragged with (x, y, d, i) arguments:\n * x - x coordinate in model units,\n * y - y coordinate in model units,\n * d - data associated with a given object (can be undefined!),\n * i - ID of an object (usually its value makes sense if d is defined).\n */\n setDragHandler: function(type, handler) {\n dragHandler[type] = handler;\n }\n };\n\n // Initialization.\n // jQuery object with model container.\n $el = $(\"
\")\n .attr({\n \"id\": \"model-container\",\n \"class\": \"container\",\n \"tabindex\": getNextTabIndex\n })\n // Set initial dimensions.\n .css({\n \"width\": \"50px\",\n \"height\": \"50px\"\n });\n // DOM element.\n node = $el[0];\n\n // REF TODO ugly\n if (model) {\n init();\n }\n renderer = new Renderer(api, model);\n\n return api;\n};\n","\n/**\n * Tiny module providing useful functions for color manipulation.\n */\nfunction d3rgba(color) {\n // Use regexp to parse rgba if it's necessary.\n var rgba = color.match(/rgba\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\)/i);\n if (rgba !== null) {\n return {\n rgb: d3.rgb(rgba[1], rgba[2], rgba[3]),\n a: Number(rgba[4])\n };\n } else {\n return {\n rgb: d3.rgb(color),\n a: 1\n };\n }\n}\n\nexport default {\n /**\n * d3.rgb is handy, however it cannot parse RGBA colors.\n * @param {string} color Web-compatible color definition (e.g. \"red\", \"#ff0012\", \"#000\", rgba(10,10,10,0.5).\n * @return {object} Object containing two properties: `rgb` - d3.rgb color and `a` - alpha value.\n */\n d3rgba: d3rgba,\n\n /**\n * Returns color contrasting to specified background color (black or white).\n * Note that if background color specifies alpha channel (e.g. rgba(0,0,0,0.5)),\n * it will be ignored!\n * @param {string} bg Web-compatible color definition (e.g. \"red\", \"#ff0012\", \"#000\").\n * @return {string} Contrasting color - \"#000\" or \"#fff\".\n */\n contrastingColor: function(bg) {\n bg = d3rgba(bg).rgb;\n // Calculate luminance in YIQ color space.\n // This ensures that color will be visible on background.\n // This simple algorithm is described here:\n // http://www.w3.org/TR/AERT#color-contrast\n return (bg.r * 299 + bg.g * 587 + bg.b * 114) / 1000 >= 128 ? '#000' : '#fff';\n },\n\n /**\n * Converts color string to number.\n * @param {string} colorString Web-compatible color definition (e.g. \"red\", \"#ff0012\", \"#000\").\n * @return {number} Numeric value, e.g. 0xff000 when argument is \"#f00\", \"#ff0000\" or \"red\".\n */\n color2number: function(colorString) {\n return parseInt(d3rgba(colorString).rgb.toString().substr(1), 16);\n }\n};\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n/*\nSimple module which provides context menu for amino acids. It allows\nto dynamically change type of amino acids in a convenient way.\nIt uses jQuery.contextMenu plug-in.\n\nCSS style definition: sass/lab/_context-menu.sass\n*/\nimport aminoacids from 'models/md2d/models/aminoacids-helper';\n\n// Classes for styling. Note that CSS is used for styling, see header.\nconst MENU_CLASS = \"aminoacids-menu\";\nconst HYDROPHOBIC_CLASS = \"hydrophobic\";\nconst HYDROPHOBIC_CAT_CLASS = \"hydrophobic-category\";\nconst HYDROPHILIC_CLASS = \"hydrophilic\";\nconst HYDROPHILIC_CAT_CLASS = \"hydrophilic-category\";\nconst POS_CHARGE_CLASS = \"pos-charge\";\nconst NEG_CHARGE_CLASS = \"neg-charge\";\nconst MARKED_CLASS = \"marked\";\n\n// Shows given category.\nconst showCategory = function(type, animate) {\n const func = {\n show: animate ? \"slideDown\" : \"show\",\n hide: animate ? \"slideUp\" : \"hide\"\n };\n if (type === \"hydrophobic\") {\n $(`.${HYDROPHOBIC_CLASS}`)[func.show]();\n $(`.${HYDROPHILIC_CLASS}`)[func.hide]();\n $(`.${HYDROPHOBIC_CAT_CLASS}`).addClass(\"expanded\");\n return $(`.${HYDROPHILIC_CAT_CLASS}`).removeClass(\"expanded\");\n } else {\n $(`.${HYDROPHOBIC_CLASS}`)[func.hide]();\n $(`.${HYDROPHILIC_CLASS}`)[func.show]();\n $(`.${HYDROPHOBIC_CAT_CLASS}`).removeClass(\"expanded\");\n return $(`.${HYDROPHILIC_CAT_CLASS}`).addClass(\"expanded\");\n }\n};\n\nexport default {\n /*\n Register context menu for DOM elements defined by @selector.\n @model, @view are associated model and view, used to set\n properties and redraw view. @getClickedAtom should return data\n of the clicked atom.\n */\n register(model, view, selector, getClickedAtom) {\n const {\n i18n\n } = view;\n // Unregister the same menu first.\n $.contextMenu(\"destroy\", selector);\n // Register new one.\n $.contextMenu({\n // Selector defines DOM elements which can trigger this menu.\n selector,\n // Append to \".lab-responsive-content\" to enable dynamic font-scaling.\n appendTo: \".lab-responsive-content\",\n // Class of the menu.\n className: MENU_CLASS,\n // Disable animation of the whole menu. Use standard show/hide instead\n // of slideDown/slideUp.\n animation: {\n show: \"show\",\n hide: \"hide\"\n },\n // Left click.\n trigger: \"left\",\n // Default callback for every item.\n callback(key, options) {\n // Get properties of atom representing amino acid.\n const props = getClickedAtom();\n // Remove current selection. It won't be handled by events.#hide callback defined below,\n // because we modify element property. Also, do not setup new selection, as it makes\n // no sense - after click the menu is hidden.\n const marked = aminoacids.getAminoAcidByElement(props.element).abbreviation;\n options.items[marked].$node.removeClass(MARKED_CLASS);\n // Translate abbreviation to element ID.\n const elemId = aminoacids.abbrToElement(key);\n // Set amino acid type.\n model.setAtomProperties(props.idx, {\n element: elemId\n });\n // Redraw view.\n // TODO: model should dispatch appropriate event, which should trigger repaint automatically.\n return view.repaint();\n },\n\n // Note that this function is almost the same as the default implementation\n // in jQuery.contextMenu. However, there is a small fix. Very often the height of menu was\n // reported incorrectly what was causing incorrect positioning.\n // For example menu was rendered at the bottom of the screen and truncated or scrollbars were needed,\n // when there was a lot of free place above.\n position(opt, x, y) {\n let offset;\n const $win = $(window);\n // determine contextMenu position\n if (!x && !y) {\n opt.determinePosition.call(this, opt.$menu);\n return;\n } else if ((x === \"maintain\") && (y === \"maintain\")) {\n // x and y must not be changed (after re-show on command click)\n offset = opt.$menu.position();\n } else {\n // x and y are given (by mouse event)\n const triggerIsFixed = opt.$trigger.parents().andSelf()\n .filter(function() {\n return $(this).css('position') === \"fixed\";\n }).length;\n\n if (triggerIsFixed) {\n y -= $win.scrollTop();\n x -= $win.scrollLeft();\n }\n\n offset = {\n top: y,\n left: x\n };\n }\n\n // correct offset if viewport demands it\n const bottom = $win.scrollTop() + $win.height();\n const right = $win.scrollLeft() + $win.width();\n\n /*\n !!! Workaround for the correct positioning:\n Use scrollHeight / scrollWidth as these functions return correct height / width\n in contrast to opt.$menu.height() / opt.$menu.width().\n */\n const height = opt.$menu[0].scrollHeight;\n const width = opt.$menu[0].scrollWidth;\n\n if ((offset.top + height) > bottom) {\n offset.top -= height;\n }\n\n if ((offset.left + width) > right) {\n offset.left -= width;\n }\n\n // Increase offset to prevent accidental clicks.\n offset.left += 1;\n return opt.$menu.css(offset);\n },\n\n events: {\n // Mark currently selected AA type.\n show(options) {\n const atom = getClickedAtom();\n const aminoAcidProps = atom && aminoacids.getAminoAcidByElement(atom.element);\n if (!atom || !aminoAcidProps) {\n return false;\n }\n\n const key = aminoAcidProps.abbreviation;\n const {\n $node\n } = options.items[key];\n $node.addClass(MARKED_CLASS);\n if ($node.hasClass(HYDROPHOBIC_CLASS)) {\n showCategory(\"hydrophobic\");\n } else {\n showCategory(\"hydrophilic\");\n }\n // Ensure that this callback returns true (required to show menu).\n return true;\n },\n\n // Remove marker added above.\n hide(options) {\n const props = getClickedAtom();\n const key = aminoacids.getAminoAcidByElement(props.element).abbreviation;\n options.items[key].$node.removeClass(MARKED_CLASS);\n // Ensure that this callback returns true (required to hide menu).\n return true;\n }\n },\n\n items: {\n // Category header.\n \"Hydrophobic\": {\n name: i18n.t(\"md2d.aminoacid_menu.hydrophobic\"),\n className: `${HYDROPHOBIC_CAT_CLASS}`,\n callback() {\n showCategory(\"hydrophobic\", true);\n // Return false to prevent menu from being hidden.\n return false;\n }\n },\n // Items below use default callback.\n \"Gly\": {\n name: i18n.t(\"md2d.aminoacid_menu.glycine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Ala\": {\n name: i18n.t(\"md2d.aminoacid_menu.alanine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Val\": {\n name: i18n.t(\"md2d.aminoacid_menu.valine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Leu\": {\n name: i18n.t(\"md2d.aminoacid_menu.leucine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Ile\": {\n name: i18n.t(\"md2d.aminoacid_menu.isoleucine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Phe\": {\n name: i18n.t(\"md2d.aminoacid_menu.phenylalanine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Pro\": {\n name: i18n.t(\"md2d.aminoacid_menu.proline\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Trp\": {\n name: i18n.t(\"md2d.aminoacid_menu.tryptophan\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Met\": {\n name: i18n.t(\"md2d.aminoacid_menu.methionine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Cys\": {\n name: i18n.t(\"md2d.aminoacid_menu.cysteine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n \"Tyr\": {\n name: i18n.t(\"md2d.aminoacid_menu.tyrosine\"),\n className: `${HYDROPHOBIC_CLASS}`\n },\n // Category header.\n \"Hydrophilic\": {\n name: i18n.t(\"md2d.aminoacid_menu.hydrophilic\"),\n className: `${HYDROPHILIC_CAT_CLASS}`,\n callback() {\n showCategory(\"hydrophilic\", true);\n // Return false to prevent menu from being hidden.\n return false;\n }\n },\n // Items below use default callback.\n \"Asn\": {\n name: i18n.t(\"md2d.aminoacid_menu.asparagine\"),\n className: `${HYDROPHILIC_CLASS}`\n },\n \"Gln\": {\n name: i18n.t(\"md2d.aminoacid_menu.glutamine\"),\n className: `${HYDROPHILIC_CLASS}`\n },\n \"Ser\": {\n name: i18n.t(\"md2d.aminoacid_menu.serine\"),\n className: `${HYDROPHILIC_CLASS}`\n },\n \"Thr\": {\n name: i18n.t(\"md2d.aminoacid_menu.threonine\"),\n className: `${HYDROPHILIC_CLASS}`\n },\n \"Asp\": {\n name: i18n.t(\"md2d.aminoacid_menu.asparticacid\"),\n className: `${HYDROPHILIC_CLASS} ${NEG_CHARGE_CLASS}`\n },\n \"Glu\": {\n name: i18n.t(\"md2d.aminoacid_menu.glutamicacid\"),\n className: `${HYDROPHILIC_CLASS} ${NEG_CHARGE_CLASS}`\n },\n \"Lys\": {\n name: i18n.t(\"md2d.aminoacid_menu.lysine\"),\n className: `${HYDROPHILIC_CLASS} ${POS_CHARGE_CLASS}`\n },\n \"Arg\": {\n name: i18n.t(\"md2d.aminoacid_menu.arginine\"),\n className: `${HYDROPHILIC_CLASS} ${POS_CHARGE_CLASS}`\n },\n \"His\": {\n name: i18n.t(\"md2d.aminoacid_menu.histidine\"),\n className: `${HYDROPHILIC_CLASS} ${POS_CHARGE_CLASS}`\n }\n }\n });\n\n // Initially show only one category (longer) to ensure that menu has a real-life height.\n // It can be useful for determining of position.\n return showCategory(\"hydrophobic\");\n }\n};\n","\nimport alert from 'common/alert';\nimport amniacidContextMenu from 'models/md2d/views/aminoacid-context-menu';\n// Dependencies.\nvar POINT_CACHE = {},\n\n TRANSLATE = 'translate',\n ROTATE = 'rotate';\n\nfunction getAngle(cx, cy, x, y) {\n return Math.atan2(x - cx, y - cy);\n}\n\nfunction rotate(x, y, angle) {\n return {\n x: x * Math.cos(angle) - y * Math.sin(angle),\n y: x * Math.sin(angle) + y * Math.cos(angle)\n };\n}\n\nexport default function AtomsInteractions(modelView, model, target) {\n var api,\n\n m2px,\n m2pxInv,\n\n atoms,\n modelWidth,\n modelHeight,\n\n $target,\n targetOffset,\n targetOversampling,\n viewportX,\n viewportY,\n\n downAtom,\n contextMenuAtom,\n dragging, dragged;\n\n //**********************************************************************************************\n // Event handlers related to particular atom:\n function mouseDownHandler(x, y, atom, e) {\n // Dragging is only allowed when user touches an atom or uses *left* mouse button (== 0).\n // Right mouse button can interfere with context menus.\n if (e.button === 0) {\n var mode = null;\n if (isAtomRotatable(atom)) {\n // When atom can be rotated (which means it's part of the molecule) we have more options.\n // 'onAtomDrag' model property defines preferred drag behavior.\n var modes = model.get('onAtomDrag') === TRANSLATE ? [TRANSLATE, ROTATE] : [ROTATE, TRANSLATE];\n // Option key can activate non-default drag behavior.\n mode = e.altKey ? modes[1] : modes[0];\n } else if (isAtomDraggable(atom)) {\n mode = TRANSLATE;\n }\n if (mode !== null) {\n dragBehavior(downAtom, mode);\n }\n }\n }\n\n function mouseOverHandler(x, y, atom, e) {\n // noop\n }\n\n function mouseOutHandler(x, y, e) {\n // noop\n }\n\n function mouseUpHandler(x, y, atom, e) {\n // noop\n }\n\n function clickHandler(x, y, atom, e) {\n // Custom click handlers for atoms are not supposed to be triggered if the atom was dragged\n if (!dragged && modelView.clickHandler[\".atom\"]) {\n modelView.clickHandler[\".atom\"](x, y, atom, atom.idx);\n }\n }\n\n function contextMenuHandler(x, y, atom, e) {\n // noop\n }\n\n //**********************************************************************************************\n // Event handlers related to whole target element (canvas):\n function mouseDownCanvas(e) {\n var p = getClickCoords(e);\n\n downAtom = getAtomUnder(p.x, p.y);\n contextMenuAtom = null;\n dragged = false;\n\n modelView.hitTestCallback(!!downAtom);\n if (downAtom) {\n mouseDownHandler(p.x, p.y, downAtom, e);\n }\n }\n\n function mouseMoveCanvas(e) {\n var p = getClickCoords(e),\n atom = getAtomUnder(p.x, p.y);\n\n modelView.hitTestCallback(!!atom);\n if (atom) {\n mouseOverHandler(p.x, p.y, atom, e);\n } else {\n mouseOutHandler(p.x, p.y, e);\n }\n if (!dragging) {\n setCursorForAtom(atom);\n }\n }\n\n function mouseUpCanvas(e) {\n var p = getClickCoords(e),\n upAtom = getAtomUnder(p.x, p.y),\n isDOMClick = false;\n\n modelView.hitTestCallback(!!upAtom);\n\n if (upAtom) {\n mouseUpHandler(p.x, p.y, upAtom, e);\n if (upAtom === downAtom) {\n // Regardless of whether or not the atom was dragged, if mouseup target == mousedown\n // target we should issue a DOM click event.\n isDOMClick = true;\n clickHandler(p.x, p.y, downAtom);\n }\n }\n\n modelView.mouseupCallback(isDOMClick);\n downAtom = null;\n }\n\n function mouseOverCanvas(e) {\n // noop\n }\n\n function mouseOutCanvas(e) {\n var p = getClickCoords(e);\n mouseOutHandler(p.x, p.y, e);\n setCursor(\"auto\");\n }\n\n function contextMenuCanvas(e) {\n var p = getClickCoords(e);\n\n contextMenuAtom = !dragged && getAtomUnder(p.x, p.y);\n\n modelView.hitTestCallback(!!contextMenuAtom);\n if (contextMenuAtom) {\n contextMenuHandler(p.x, p.y, contextMenuAtom);\n }\n }\n //**********************************************************************************************\n\n function setCursorFromEvent(e) {\n // If pointer is over some other element just restore the \"auto\" pointer.\n if (e.target !== target) {\n setCursor(\"auto\");\n return;\n }\n var p = getClickCoords(e);\n setCursorForAtom(getAtomUnder(p.x, p.y));\n }\n\n function isAtomDraggable(atom) {\n if (!atom) {\n return false;\n }\n if (model.isStopped()) {\n return atom.draggableWhenStopped || model.properties.isBeingEdited;\n }\n return atom.draggable;\n }\n\n function isAtomRotatable(atom) {\n if (!atom) {\n return false;\n }\n // Note that getMoleculeAtoms doesn't include atom index that we provide, so > 0 means it's part of the molecule.\n // We also require atom to be draggable since the rotation is triggered by dragging.\n return isAtomDraggable(atom) && model.isStopped() && model.getMoleculeAtoms(atom.idx).length > 0;\n }\n\n function setCursorForAtom(atom) {\n if (isAtomDraggable(atom)) {\n setCursor(\"move\");\n } else {\n setCursor(\"auto\");\n }\n }\n\n var cursorVal;\n\n function setCursor(name) {\n if (cursorVal !== name) {\n cursorVal = name;\n document.documentElement.style.cursor = name;\n }\n }\n\n function init() {\n m2px = modelView.model2canvas;\n m2pxInv = modelView.model2canvasInv;\n\n $target = $(target);\n $target.addClass(\"atoms-interaction-layer\");\n\n $target.on(\"mousedown.atoms-interactions\", mouseDownCanvas);\n $target.on(\"mouseup.atoms-interactions\", mouseUpCanvas);\n $target.on(\"mousemove.atoms-interactions\", mouseMoveCanvas);\n $target.on(\"mouseover.atoms-interactions\", mouseOverCanvas);\n $target.on(\"mouseout.atoms-interactions\", mouseOutCanvas);\n $target.on(\"contextmenu.atoms-interactions\", contextMenuCanvas);\n\n api.bindModel(model);\n }\n\n function getAtomUnder(x, y) {\n var atom, ax, ay, ar;\n // Very important - start from the last atom. Order of atoms defines order of rendering.\n for (var i = atoms.length - 1; i >= 0; i--) {\n atom = atoms[i];\n ax = atom.x;\n ay = atom.y;\n ar = atom.radius;\n // Optimization: hit area is square.\n if (x > ax - ar && x < ax + ar && y > ay - ar && y < ay + ar) {\n return atom;\n }\n }\n return null;\n }\n\n function getClickCoords(e, useCachedDimensionsAndViewport) {\n if (!useCachedDimensionsAndViewport) {\n // Sometimes we can risk and assume that model view wasn't resized or view port properties\n // changed (e.g. during atom dragging).\n targetOffset = $target.offset();\n targetOversampling = $target.attr(\"width\") / $target.width();\n // Undefined is a perfectly correct value for view port coords, it means that the whole\n // model area is being displayed.\n viewportX = model.get(\"viewPortX\") || 0;\n viewportY = model.get(\"viewPortY\") || 0;\n }\n\n POINT_CACHE.x = m2px.invert((e.pageX - targetOffset.left) * targetOversampling) + viewportX;\n POINT_CACHE.y = m2pxInv.invert((e.pageY - targetOffset.top) * targetOversampling) + viewportY;\n return POINT_CACHE;\n }\n\n function dragBehavior(atom, mode) {\n var translate = mode === TRANSLATE,\n originalPositions, prevAngle, molecule, cx, cy;\n\n $(window).on(\"mousemove.lab-drag\", function(e) {\n // Prevent accidental text selection or another unwanted action while dragging.\n e.preventDefault();\n\n // We can use cached canvas dimensions, as they rather don't change between mousedown\n // and mousemove.\n var p = getClickCoords(e, true);\n var x = p.x;\n var y = p.y;\n\n if (!dragged) {\n // Lazily initialize drag process when user really drags an atom (not only clicks it).\n originalPositions = getMoleculePositions(atom);\n if (translate) {\n if (!model.isStopped() && atom.draggable) {\n model.liveDragStart(atom.idx);\n }\n } else { // rotate\n molecule = model.getMoleculeAtoms(atom.idx).concat(atom.idx);\n var bbox = model.getMoleculeBoundingBox(atom.idx);\n // A bit confusing, but bounding box returns values relative to the center of provided atom.\n cx = (atom.x + bbox.left + atom.x + bbox.right) * 0.5;\n cy = (atom.y + bbox.top + atom.y + bbox.bottom) * 0.5;\n prevAngle = getAngle(cx, cy, x, y);\n }\n dragging = true;\n dragged = true;\n }\n\n if (translate) {\n translateMolecule(atom, x, y);\n } else { // rotate\n var newAngle = getAngle(cx, cy, x, y);\n rotateMolecule(molecule, cx, cy, prevAngle - newAngle);\n prevAngle = newAngle;\n }\n setCursor(\"move\");\n // Custom drag handler. Note that it works both for translation and rotation.\n if (modelView.dragHandler.atom) {\n modelView.dragHandler.atom(x, y, atom, atom.idx);\n }\n modelView.update();\n }).on(\"selectstart.lab-drag\", function(e) {\n // Disable selection behavior while dragging an atom. It's supported and required in IE and\n // Safari. In Chrome it's enough to call .preventDefault() on mousemove event.\n e.preventDefault();\n }).one(\"mouseup.lab-drag\", function(e) {\n $(window).off(\".lab-drag\");\n // If user only clicked an atom (mousedown + mouseup, no mousemove), nothing to do.\n if (!dragged) return;\n dragging = false;\n // Prevent accidental text selection or another unwanted action while dragging.\n e.preventDefault();\n // Pointer can be over atom or not (e.g. when user finished dragging below other object).\n setCursorFromEvent(e);\n\n if (translate && !model.isStopped()) {\n model.liveDragEnd();\n }\n\n // Validate final position.\n if (model.isStopped()) {\n if (!isPositionValid(atom.idx)) {\n alert(modelView.i18n.t('md2d.invalid_object_position_alert'));\n restoreMoleculePositions(originalPositions);\n modelView.update();\n }\n }\n });\n }\n\n function getMoleculePositions(atom) {\n var molecule = model.getMoleculeAtoms(atom.idx).concat(atom.idx);\n return molecule.map(function(idx) {\n var atom = model.getAtomProperties(idx);\n return {\n idx: idx,\n x: atom.x,\n y: atom.y\n }\n });\n }\n\n function restoreMoleculePositions(moleculePositions) {\n moleculePositions.forEach(function(data) {\n setAtomPosition(data.idx, data.x, data.y);\n });\n }\n\n function translateMolecule(atom, x, y) {\n var bbox = model.getMoleculeBoundingBox(atom.idx);\n if (bbox.left + x < 0) x = 0 - bbox.left;\n if (bbox.right + x > modelWidth) x = modelWidth - bbox.right;\n if (bbox.bottom + y < 0) y = 0 - bbox.bottom;\n if (bbox.top + y > modelHeight) y = modelHeight - bbox.top;\n\n if (model.isStopped()) {\n setMoleculePosition(atom.idx, x, y);\n } else {\n model.liveDrag(x, y);\n }\n }\n\n function setAtomPosition(i, xpos, ypos) {\n return model.setAtomProperties(i, {\n x: xpos,\n y: ypos\n });\n }\n\n function setMoleculePosition(i, xpos, ypos) {\n // The last argument ensures that the whole molecule will be moved.\n return model.setAtomProperties(i, {\n x: xpos,\n y: ypos\n }, false, true);\n }\n\n function isPositionValid(atomIdx) {\n // To validate position it's enough to set properties (even empty set) and make sure that \"checkLocation\"\n // and \"moveMolecule\" arguments are set to true.\n return model.setAtomProperties(atomIdx, {}, true, true);\n }\n\n function rotateMolecule(molecule, cx, cy, angle) {\n if (angle === 0) return;\n\n var rotationAllowed = true;\n for (var i = 0, len = molecule.length; i < len; i++) {\n var idx = molecule[i];\n var atom = model.getAtomProperties(idx);\n var newCoords = rotate(atom.x - cx, atom.y - cy, angle);\n var posAllowed = setAtomPosition(idx, newCoords.x + cx, newCoords.y + cy);\n rotationAllowed = rotationAllowed && posAllowed;\n }\n return rotationAllowed;\n }\n\n api = {\n bindModel: function(newModel) {\n model = newModel;\n\n atoms = model.getAtoms();\n modelWidth = model.get(\"width\");\n modelHeight = model.get(\"height\");\n\n // .register method destroys old menu instances first, so it's safe to call it each time we bind a new model.\n amniacidContextMenu.register(model, modelView, \".atoms-interaction-layer\", function() {\n return contextMenuAtom;\n });\n }\n };\n\n init();\n\n return api;\n};\n","import PIXI from 'pixi.js';\nimport canvg from 'canvg';\nimport mustache from 'mustache';\nimport colorLib from 'common/views/color';\nimport AtomsInteractions from 'models/md2d/views/atoms-interactions';\nimport detectFontChange from 'common/layout/detect-font-change';\n\nvar\n FONT_WEIGHT = 'bold',\n // font-family needs to be unescaped to support fonts wrapped in '' (e.g. 'Comic Sans MS').\n ATOM_SVG_TPL =\n ' \\\n \\\n \\\n \\\n \\\n \\\n \\\n \\\n \\\n \\\n \\\n {{#excited}} \\\n \\\n \\\n \\\n {{/excited}} \\\n {{^excited}} \\\n \\\n \\\n {{/excited}} \\\n {{ label }} \\\n {{ label }} \\\n \\\n ',\n\n KE_SHADING_MIN_COLORS = [\"#FFFFFF\", \"#F2F2F2\", \"#A4A4A4\"],\n KE_SHADING_MAX_COLORS = [\"#FFFFFF\", \"#FF8080\", \"#FF2020\"],\n\n // Scales used for Charge Shading gradients.\n CHARGE_SHADING_STEPS = 25,\n NEUTRAL_COLORS = [\"#FFFFFF\", \"#f2f2f2\", \"#A4A4A4\"],\n chargeBlueLightColor = d3.scale.linear()\n .interpolate(d3.interpolateRgb)\n .range([\"#FFFFFF\", \"#ffefff\"]),\n chargeBlueMedColor = d3.scale.linear()\n .interpolate(d3.interpolateRgb)\n .range([\"#f2f2f2\", \"#9090FF\"]),\n chargeBlueDarkColor = d3.scale.linear()\n .interpolate(d3.interpolateRgb)\n .range([\"#A4A4A4\", \"#3030FF\"]),\n chargeRedLightColor = d3.scale.linear()\n .interpolate(d3.interpolateRgb)\n .range([\"#FFFFFF\", \"#dfffff\"]),\n chargeRedMedColor = d3.scale.linear()\n .interpolate(d3.interpolateRgb)\n .range([\"#f2f2f2\", \"#FF8080\"]),\n chargeRedDarkColor = d3.scale.linear()\n .interpolate(d3.interpolateRgb)\n .range([\"#A4A4A4\", \"#FF2020\"]),\n\n getChargeShadingColors = function(charge, style) {\n var chargeIndex = Math.round(Math.min(Math.abs(charge) / 3, 1) * CHARGE_SHADING_STEPS);\n chargeIndex /= CHARGE_SHADING_STEPS;\n if (style === 'biology' && charge > 0 || style === 'chemistry' && charge < 0) {\n return [chargeBlueLightColor(chargeIndex), chargeBlueMedColor(chargeIndex), chargeBlueDarkColor(chargeIndex)];\n } else if (style === 'biology' && charge < 0 || style === 'chemistry' && charge > 0) {\n return [chargeRedLightColor(chargeIndex), chargeRedMedColor(chargeIndex), chargeRedDarkColor(chargeIndex)];\n }\n return NEUTRAL_COLORS;\n },\n\n getHydrophobicityColors = function(h) {\n return h > 0 ? [\"#F0E6D1\", \"#E0A21B\", \"#AD7F1C\"] : [\"#dfffef\", \"#75a643\", \"#2a7216\"];\n },\n\n RENDERING_OPTIONS = [\"keShading\", \"chargeShading\", \"chargeShadingStyle\", \"atomNumbers\", \"showChargeSymbols\",\n \"atomRadiusScale\", \"aminoAcidColorScheme\", \"aminoAcidLabels\", \"useThreeLetterCode\", \"viewPortZoom\"\n ];\n\nexport default function AtomsRenderer(modelView, model, pixiContainer, canvas) {\n // Public API object to be returned.\n var api,\n\n container,\n\n m2px,\n m2pxInv,\n\n modelAtoms,\n viewAtoms,\n\n elementTex = {},\n\n modelWidth,\n modelHeight,\n\n // Rendering options:\n renderMode = {},\n\n interactions = new AtomsInteractions(modelView, model, canvas);\n\n function init() {\n modelWidth = model.get(\"width\");\n modelHeight = model.get(\"height\");\n readRenderingOptions();\n // Modes require .setup() call:\n model.addPropertiesListener(RENDERING_OPTIONS, function() {\n readRenderingOptions();\n api.setup();\n // TODO: we shouldn't call .renderCanvas() here. E.g. when keShading is toggled, rendering\n // will be triggered both by bonds renderer and atoms renderer.\n modelView.renderCanvas();\n });\n }\n\n function readRenderingOptions() {\n RENDERING_OPTIONS.forEach(function(name) {\n renderMode[name] = model.get(name);\n });\n }\n\n function getAtomColors(i) {\n var atom = modelAtoms[i],\n elID = atom.element,\n props = model.getElementProperties(elID),\n colorStr, color;\n\n if (atom.marked) {\n colorStr = model.get(\"markColor\");\n color = d3.rgb(colorStr);\n return [color.brighter(1).toString(), color.toString(), color.darker(1).toString()];\n }\n\n if (atom.aminoAcid) {\n switch (renderMode.aminoAcidColorScheme) {\n case \"charge\":\n return getChargeShadingColors(atom.charge, renderMode.chargeShadingStyle);\n case \"hydrophobicity\":\n return getHydrophobicityColors(atom.hydrophobicity);\n case \"chargeAndHydro\":\n if (atom.charge !== 0) {\n return getChargeShadingColors(atom.charge, renderMode.chargeShadingStyle);\n }\n return getHydrophobicityColors(atom.hydrophobicity);\n // case \"none\":\n // Do nothing, default rendering will be used.\n }\n }\n\n if (renderMode.keShading) {\n return KE_SHADING_MIN_COLORS;\n } else if (renderMode.chargeShading) {\n return getChargeShadingColors(atom.charge, renderMode.chargeShadingStyle);\n } else {\n if (typeof props.color === \"number\") {\n // Weird conversion, as we use color values literally imported from Classic MW. Perhaps we\n // should do that in MML -> JSON converter.\n colorStr = (props.color + Math.pow(2, 24)).toString(16);\n colorStr = \"000000\".substr(0, 6 - colorStr.length) + colorStr;\n color = d3.rgb(\"#\" + colorStr);\n } else {\n // Use custom helper, as d3.rgb cannot parse rgba strings.\n color = colorLib.d3rgba(props.color).rgb; // d3.rgb\n }\n return [color.brighter(1).toString(), color.toString(), color.darker(1).toString()];\n }\n }\n\n function getAtomOpacity(i) {\n var atom = modelAtoms[i],\n elID = atom.element,\n props = model.getElementProperties(elID);\n if (atom.marked || atom.aminoAcid || renderMode.keShading || renderMode.chargeShading) {\n // Special render modes, ignore atom's color.\n return atom.visible;\n }\n if (typeof props.color === \"number\") {\n // Colors specified in Classic MW format don't support alpha channel.\n return atom.visible;\n }\n // Color defined in HTML format can define alpha channel too (e.g. rgba(...)).\n return colorLib.d3rgba(props.color).a * atom.visible;\n }\n\n function getAtomTexture(i, colors) {\n var elID = modelAtoms[i].element,\n radius = m2px(model.getElementProperties(elID).radius) * renderMode.atomRadiusScale,\n excitation = modelAtoms[i].excitation,\n label = getAtomLabel(i),\n opacity = getAtomOpacity(i),\n key;\n\n colors = colors || getAtomColors(i);\n key = opacity > 0 ? (elID + \"-\" + radius + \"-\" + colors.join(\"\") + \"-\" + opacity + \"-\" + label.text + \"-\" + excitation + \"-\" + label.fontSize) :\n (radius + \"-invisible\");\n\n if (elementTex[key] === undefined) {\n var canv = document.createElement(\"canvas\"),\n tplData;\n\n watchFont(modelView.fontFamily);\n\n tplData = {\n width: excitation ? 4 * radius : 2 * radius,\n height: excitation ? 4 * radius : 2 * radius,\n lightCol: colors[0],\n medCol: colors[1],\n darkCol: colors[2],\n opacity: opacity,\n label: label.text,\n fontSize: label.fontSize,\n fontFamily: modelView.fontFamily,\n excited: excitation\n };\n\n canvg(canv, mustache.render(ATOM_SVG_TPL, tplData));\n\n // WebGL complains if the texture size is < 2px x 2px\n if (canv.width < 2) canv.width = 2;\n if (canv.height < 2) canv.height = 2;\n\n elementTex[key] = new PIXI.Texture.fromCanvas(canv);\n // canvg starts a timer, we don't need or want that timer\n canv.svg.stop();\n }\n return elementTex[key];\n }\n\n // TODO rename?\n function clearTextureCacheAndRedraw() {\n elementTex = {};\n viewAtoms.forEach(function(atom, i) {\n atom.setTexture(getAtomTexture(i));\n });\n modelView.renderCanvas();\n }\n\n function watchFont(font) {\n detectFontChange({\n font: font,\n weight: FONT_WEIGHT, // so it matches weight used in ATOM_SVG_TPL\n onchange: clearTextureCacheAndRedraw\n });\n }\n\n function getAtomLabel(i) {\n var textVal = \"\",\n sizeRatio = 0;\n\n if (renderMode.atomNumbers) {\n textVal = i;\n sizeRatio = 1.2;\n } else if (renderMode.aminoAcidLabels && renderMode.useThreeLetterCode && modelAtoms[i].label) {\n textVal = modelAtoms[i].label;\n sizeRatio = 1;\n } else if (renderMode.aminoAcidLabels && !renderMode.useThreeLetterCode && modelAtoms[i].symbol) {\n textVal = modelAtoms[i].symbol;\n sizeRatio = 1.4;\n } else if (renderMode.showChargeSymbols) {\n if (modelAtoms[i].charge > 0) {\n textVal = \"+\";\n } else if (modelAtoms[i].charge < 0) {\n textVal = \"-\";\n }\n sizeRatio = 1.6;\n }\n\n return {\n text: textVal,\n fontSize: sizeRatio * 16 // In fact: sizeRatio * atom radius. The value 16 is based on the\n // current SVG viewBox and \"r\" property.\n };\n }\n\n api = {\n setup: function() {\n var i, len, atom, keSprite;\n\n if (container) {\n pixiContainer.removeChild(container);\n }\n container = new PIXI.DisplayObjectContainer();\n pixiContainer.addChild(container);\n\n m2px = modelView.model2canvas;\n m2pxInv = modelView.model2canvasInv;\n\n viewAtoms = [];\n modelAtoms = model.getAtoms();\n\n for (i = 0, len = modelAtoms.length; i < len; ++i) {\n atom = new PIXI.Sprite(getAtomTexture(i));\n atom.anchor.x = 0.5;\n atom.anchor.y = 0.5;\n atom.i = i;\n atom.marked = modelAtoms[i].marked;\n viewAtoms.push(atom);\n container.addChild(atom);\n }\n\n if (renderMode.keShading) {\n for (i = 0, len = modelAtoms.length; i < len; ++i) {\n keSprite = new PIXI.Sprite(getAtomTexture(i, KE_SHADING_MAX_COLORS));\n keSprite.anchor.x = 0.5;\n keSprite.anchor.y = 0.5;\n viewAtoms[i].keSprite = keSprite;\n container.addChild(keSprite);\n }\n }\n\n api.update();\n },\n\n bindModel: function(newModel) {\n model = newModel;\n init();\n\n interactions.bindModel(newModel);\n },\n\n update: function() {\n var i, len, viewAtom, modelAtom, x, y, minKE, maxKE;\n\n for (i = 0, len = viewAtoms.length; i < len; ++i) {\n viewAtom = viewAtoms[i];\n modelAtom = modelAtoms[i];\n x = m2px(modelAtom.x);\n y = m2pxInv(modelAtom.y);\n\n viewAtom.position.x = x;\n viewAtom.position.y = y;\n\n if (modelAtom.marked !== viewAtom.marked) {\n // Make sure that marked state is always reflected by the view.\n viewAtom.setTexture(getAtomTexture(i));\n viewAtom.marked = modelAtoms[i].marked;\n }\n\n if (renderMode.keShading) {\n minKE = model.get('keShadingMinEnergy');\n maxKE = model.get('keShadingMaxEnergy');\n viewAtom.keSprite.alpha = Math.min((model.getAtomKineticEnergy(i) - minKE) / (maxKE - minKE), 1);\n viewAtom.keSprite.position.x = x;\n viewAtom.keSprite.position.y = y;\n }\n\n if (model.properties.useQuantumDynamics) {\n viewAtom.setTexture(getAtomTexture(i));\n }\n }\n },\n\n getAtomColors: getAtomColors,\n\n getAtomOpacity: getAtomOpacity\n };\n\n init();\n\n return api;\n};\n"," \nimport PIXI from 'pixi.js';\n// Dependencies.\nvar RADIAL_BOND_TYPES = {\n STANDARD_STICK: 101,\n LONG_SPRING: 102,\n BOND_SOLID_LINE: 103,\n GHOST: 104,\n UNICOLOR_STICK: 105,\n SHORT_SPRING: 106,\n DOUBLE_BOND: 107,\n TRIPLE_BOND: 108,\n DISULPHIDE_BOND: 109\n },\n\n RENDERING_OPTIONS = [\"keShading\", \"chargeShading\", \"chargeShadingStyle\", \"aminoAcidColorScheme\"];\n\nexport default function BondsRenderer(modelView, model, pixiContainer, atomsRenderer) {\n // Public API object to be returned.\n var api,\n\n m2px,\n m2pxInv,\n\n modelBonds,\n modelAtoms,\n\n graphics = new PIXI.Graphics();\n\n function init() {\n model.addPropertiesListener(RENDERING_OPTIONS, function() {\n api.setup();\n // TODO: we shouldn't call .renderCanvas() here. E.g. when keShading is toggled, rendering\n // will be triggered both by bonds renderer and atoms renderer.\n modelView.renderCanvas();\n });\n }\n\n function renderSpring(d) {\n var x1 = m2px(d.x1),\n y1 = m2pxInv(d.y1),\n x2 = m2px(d.x2),\n y2 = m2pxInv(d.y2),\n dx = x2 - x1,\n dy = y2 - y1,\n\n length = Math.sqrt(dx * dx + dy * dy) / m2px(0.01),\n\n numTurns = Math.floor(d.length * 24),\n springDiameter = length / numTurns,\n\n costheta = dx / length,\n sintheta = dy / length,\n cosThetaDiameter = costheta * springDiameter,\n sinThetaDiameter = sintheta * springDiameter,\n cosThetaSpikes = costheta * numTurns,\n sinThetaSpikes = sintheta * numTurns,\n pointX, pointY, i;\n\n graphics.lineStyle(getBondWidth(d), getBondColor(d, 1), getBondOpacity(d, 1));\n graphics.moveTo(x1, y1);\n for (i = 0; i < numTurns; i++) {\n if (i % 2 === 0) {\n pointX = x1 + (i + 0.5) * cosThetaDiameter - 0.5 * sinThetaSpikes;\n pointY = y1 + (i + 0.5) * sinThetaDiameter + 0.5 * cosThetaSpikes;\n } else {\n pointX = x1 + (i + 0.5) * cosThetaDiameter + 0.5 * sinThetaSpikes;\n pointY = y1 + (i + 0.5) * sinThetaDiameter - 0.5 * cosThetaSpikes;\n }\n graphics.lineTo(pointX, pointY);\n }\n graphics.lineTo(x2, y2);\n }\n\n function renderBond(d) {\n var x1 = m2px(d.x1),\n y1 = m2pxInv(d.y1),\n x2 = m2px(d.x2),\n y2 = m2pxInv(d.y2),\n r1 = m2px(modelAtoms[d.atom1].radius),\n r2 = m2px(modelAtoms[d.atom2].radius),\n dx = x2 - x1,\n dy = y2 - y1,\n len = Math.sqrt(dx * dx + dy * dy);\n\n // Fast path if bond is invisible anyway. Use 2 ratio, because when length is exactly equal\n // to r1 and r2 sum, double and triple bonds can be still visible (they are wide enough).\n if (2 * len - r1 - r2 <= 0) return;\n\n var midRatio = 0.5 * (len + r1 - r2) / len,\n xMid = x1 + midRatio * dx,\n yMid = y1 + midRatio * dy,\n\n bondWidth = getBondWidth(d),\n bondColor1 = getBondColor(d, 1),\n bondColor2 = getBondColor(d, 2),\n bondOpacity1 = getBondOpacity(d, 1),\n bondOpacity2 = getBondOpacity(d, 2),\n bondShift, bondAngle, xs, ys;\n\n if (d.type === RADIAL_BOND_TYPES.DOUBLE_BOND) {\n bondShift = m2px(Math.min(modelAtoms[d.atom1].radius, modelAtoms[d.atom2].radius)) * 0.4;\n bondAngle = Math.atan2(dy, dx);\n xs = Math.sin(bondAngle) * bondShift;\n ys = -Math.cos(bondAngle) * bondShift;\n\n graphics.lineStyle(bondWidth, bondColor1, bondOpacity1);\n graphics.moveTo(x1 + xs, y1 + ys);\n graphics.lineTo(xMid + xs, yMid + ys);\n graphics.moveTo(x1 - xs, y1 - ys);\n graphics.lineTo(xMid - xs, yMid - ys);\n\n graphics.lineStyle(bondWidth, bondColor2, bondOpacity2);\n graphics.moveTo(xMid + xs, yMid + ys);\n graphics.lineTo(x2 + xs, y2 + ys);\n graphics.moveTo(xMid - xs, yMid - ys);\n graphics.lineTo(x2 - xs, y2 - ys);\n } else if (d.type === RADIAL_BOND_TYPES.TRIPLE_BOND) {\n bondShift = m2px(Math.min(modelAtoms[d.atom1].radius, modelAtoms[d.atom2].radius)) * 0.52;\n bondAngle = Math.atan2(dy, dx);\n xs = Math.sin(bondAngle) * bondShift;\n ys = -Math.cos(bondAngle) * bondShift;\n\n graphics.lineStyle(bondWidth, bondColor1, bondOpacity1);\n graphics.moveTo(x1, y1);\n graphics.lineTo(xMid, yMid);\n graphics.moveTo(x1 + xs, y1 + ys);\n graphics.lineTo(xMid + xs, yMid + ys);\n graphics.moveTo(x1 - xs, y1 - ys);\n graphics.lineTo(xMid - xs, yMid - ys);\n\n graphics.lineStyle(bondWidth, bondColor2, bondOpacity2);\n graphics.moveTo(xMid, yMid);\n graphics.lineTo(x2, y2);\n graphics.moveTo(xMid + xs, yMid + ys);\n graphics.lineTo(x2 + xs, y2 + ys);\n graphics.moveTo(xMid - xs, yMid - ys);\n graphics.lineTo(x2 - xs, y2 - ys);\n } else if (d.type !== RADIAL_BOND_TYPES.GHOST) {\n // STANDARD_STICK and other types that are not yet supported.\n // However, GHOST bonds will not be drawn.\n graphics.lineStyle(bondWidth, bondColor1, bondOpacity1);\n graphics.moveTo(x1, y1);\n graphics.lineTo(xMid, yMid);\n\n graphics.lineStyle(bondWidth, bondColor2, bondOpacity2);\n graphics.moveTo(xMid, yMid);\n graphics.lineTo(x2, y2);\n }\n }\n\n function getBondColor(d, num) {\n if (d.type === RADIAL_BOND_TYPES.SHORT_SPRING) {\n return 0x888888;\n } else if (d.type === RADIAL_BOND_TYPES.DISULPHIDE_BOND) {\n return 0xffe95a;\n } else if (num === 1) {\n return parseInt(atomsRenderer.getAtomColors(d.atom1)[2].substr(1), 16);\n } else if (num === 2) {\n return parseInt(atomsRenderer.getAtomColors(d.atom2)[2].substr(1), 16);\n }\n }\n\n function getBondOpacity(d, num) {\n if (num === 1) {\n return atomsRenderer.getAtomOpacity(d.atom1);\n } else if (num === 2) {\n return atomsRenderer.getAtomOpacity(d.atom2);\n }\n }\n\n function getBondWidth(bond) {\n if (bond.type === RADIAL_BOND_TYPES.SHORT_SPRING) {\n return m2px(0.012);\n // The following code is intended to use a thicker stroke-width when\n // the spring constant is larger ... but to work properly in models with\n // both MD2D and MKS units schemes the model would need to supply\n // an appropriately scaled default spring constant.\n // For example in the Spring and Mass Interactive which uses an MKS unit\n // scheme the spring constant is varied between 0.001 and 0.003 ... while in\n // the Comparing Dipole atom-pulling Interactive that uses an MD2D unit\n // scheme the spring constant is 10.\n // return (1 + Math.log(1+bond.strength*1000)) * 0.25;;\n }\n var result = m2px(Math.min(modelAtoms[bond.atom1].radius, modelAtoms[bond.atom2].radius));\n if (bond.type === RADIAL_BOND_TYPES.DOUBLE_BOND) {\n return result * 0.50;\n } else if (bond.type === RADIAL_BOND_TYPES.TRIPLE_BOND) {\n return result * 0.35;\n } else { // STANDARD_STICK and other types that are not yet implemented.\n return result * 0.75;\n }\n }\n\n api = {\n setup: function() {\n modelBonds = model.getRadialBonds();\n modelAtoms = model.getAtoms();\n\n m2px = modelView.model2canvas;\n m2pxInv = modelView.model2canvasInv;\n\n api.update();\n },\n\n bindModel: function(newModel) {\n model = newModel;\n\n init();\n },\n\n update: function() {\n var i, len, bond;\n\n graphics.clear();\n for (i = 0, len = modelBonds.length; i < len; ++i) {\n bond = modelBonds[i];\n if (bond.type === RADIAL_BOND_TYPES.SHORT_SPRING) {\n renderSpring(bond);\n } else {\n renderBond(bond);\n }\n }\n }\n };\n\n init();\n pixiContainer.addChild(graphics);\n\n return api;\n};\n","\nimport PIXI from 'pixi.js';\n// Dependencies.\n\nexport default function VectorsRenderer(pixiContainer, config) {\n // Public API object to be returned.\n var api,\n\n m2px,\n m2pxInv,\n\n container,\n viewVectors,\n\n // Vectors rendering enabled or disabled.\n show,\n // Number of vectors to render.\n count,\n // Physical vector properties (functions!).\n xFunc, yFunc, vxFunc, vyFunc,\n // Visual vector properties.\n alphaFunc, length, width, color, dirOnly;\n\n function readOptions() {\n count = config.count;\n\n xFunc = config.x;\n yFunc = config.y;\n vxFunc = config.vx;\n vyFunc = config.vy;\n alphaFunc = config.alpha;\n\n show = config.show;\n length = config.length;\n width = config.width;\n color = config.color;\n dirOnly = config.dirOnly;\n\n m2px = config.m2px;\n m2pxInv = config.m2pxInv;\n }\n\n function getVectorTexture() {\n var canv = document.createElement(\"canvas\"),\n ctx = canv.getContext(\"2d\");\n canv.width = 1;\n canv.height = 1;\n ctx.fillStyle = color;\n ctx.fillRect(0, 0, 1, 1);\n\n return new PIXI.Texture.fromCanvas(canv);\n }\n\n function getVectorArrowheadTexture() {\n var canv = document.createElement(\"canvas\"),\n ctx = canv.getContext(\"2d\"),\n dim = m2px(3.5 * width);\n canv.width = dim;\n canv.height = dim;\n ctx.fillStyle = color;\n\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(dim, 0);\n ctx.lineTo(dim * 0.5, dim);\n ctx.closePath();\n ctx.fill();\n\n return new PIXI.Texture.fromCanvas(canv);\n }\n\n function renderVector(i) {\n var vec = viewVectors[i],\n x = xFunc(i),\n y = yFunc(i),\n vx = vxFunc(i) * length,\n vy = vyFunc(i) * length,\n len = Math.sqrt(vx * vx + vy * vy),\n rot = Math.PI + Math.atan2(vx, vy),\n arrowHead = vec.arrowHead;\n if (dirOnly) {\n // 0.15 is a bit random, empirically set value to match previous rendering done by SVG.\n vx = 0.15 * length * vx / len;\n vy = 0.15 * length * vy / len;\n len = 0.15 * length;\n }\n var lenInPx = m2px(len);\n if (lenInPx < 1) {\n // Hide completely tiny vectors (< 1px).\n vec.alpha = 0;\n arrowHead.alpha = 0;\n return;\n } else if (alphaFunc) {\n vec.alpha = alphaFunc(i);\n arrowHead.alpha = alphaFunc(i);\n } else {\n vec.alpha = 1;\n arrowHead.alpha = 1;\n }\n if (lenInPx > 1e6) {\n // When vectors has enormous size, it can cause rendering artifacts. Limit it.\n var s = lenInPx / 1e6;\n vx /= s;\n vy /= s;\n len /= s;\n lenInPx /= s;\n }\n // Vector.\n vec.position.x = m2px(x);\n vec.position.y = m2pxInv(y);\n vec.scale.y = lenInPx;\n vec.rotation = rot;\n // Arrowhead.\n arrowHead.position.x = m2px(x + vx);\n arrowHead.position.y = m2pxInv(y + vy);\n arrowHead.rotation = rot;\n }\n\n\n api = {\n setup: function() {\n readOptions();\n\n if (container) {\n pixiContainer.removeChild(container);\n container = null;\n }\n if (!show || count === 0) return;\n\n container = new PIXI.DisplayObjectContainer();\n pixiContainer.addChild(container);\n\n var i, vec, arrowHead, tex;\n\n viewVectors = [];\n\n tex = getVectorTexture();\n for (i = 0; i < count; ++i) {\n vec = new PIXI.Sprite(tex);\n vec.anchor.x = 0.5;\n vec.scale.x = m2px(width);\n vec.i = i;\n viewVectors.push(vec);\n container.addChild(vec);\n }\n tex = getVectorArrowheadTexture();\n for (i = 0; i < count; ++i) {\n arrowHead = new PIXI.Sprite(tex);\n arrowHead.anchor.x = 0.5;\n viewVectors[i].arrowHead = arrowHead;\n container.addChild(arrowHead);\n }\n\n api.update();\n },\n\n update: function() {\n if (!show || count === 0) return;\n for (var i = 0; i < count; ++i) {\n renderVector(i);\n }\n }\n };\n\n return api;\n};\n","\nimport PIXI from 'pixi.js';\n// Dependencies.\n\nfunction logistic(x) {\n return 1 / (1 + Math.exp(-x));\n}\n\nexport default function FieldRenderer(pixiContainer, config) {\n\n var api,\n\n container,\n sprites,\n\n m2px,\n m2pxInv,\n\n // Rendering enabled or disabled?\n show,\n\n // Number of needles to render.\n count,\n\n // Functions that return x, y, vx, vy of field for grid position i\n xFunc, yFunc, vxFunc, vyFunc,\n\n // Function that returns alpha value to use for grid position i\n alphaFunc,\n\n // Needle length in nm\n length,\n\n // Need color, less alpha\n color;\n\n function readOptions() {\n count = config.count;\n\n xFunc = config.x;\n yFunc = config.y;\n vxFunc = config.vx;\n vyFunc = config.vy;\n alphaFunc = config.alpha;\n\n show = config.show;\n length = config.length;\n color = config.color;\n\n m2px = config.m2px;\n m2pxInv = config.m2pxInv;\n }\n\n function getTexture() {\n var canv = document.createElement(\"canvas\");\n var ctx = canv.getContext(\"2d\");\n\n // Smoothly range the needle's aspect ratio from 5:1 when width is ~60px to 3:1 when width is\n // ~30px. Needle doesn't look good \"fat\" when long, and shouldn't be too narrow when short.\n var MIN_FRACTION = 1 / 5;\n var MAX_FRACTION = 1 / 3;\n var LOW_LENGTH_THRESHOLD = 30;\n var HIGH_LENGTH_THRESHOLD = 60;\n\n var l = m2px(length);\n var x = (l - LOW_LENGTH_THRESHOLD) / (HIGH_LENGTH_THRESHOLD - LOW_LENGTH_THRESHOLD);\n var fraction = MIN_FRACTION + logistic(-8 * (x - 0.5)) * (MAX_FRACTION - MIN_FRACTION);\n var w = l * fraction;\n\n canv.height = l;\n canv.width = w;\n\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(w * 0.5, l);\n ctx.lineTo(w, 0);\n ctx.fillStyle = color;\n ctx.fill();\n\n return new PIXI.Texture.fromCanvas(canv);\n }\n\n function renderSprite(i) {\n var sprite = sprites[i];\n var x = xFunc(i);\n var y = yFunc(i);\n\n sprite.position.x = m2px(x);\n sprite.position.y = m2pxInv(y);\n sprite.rotation = Math.PI + Math.atan2(vxFunc(i), vyFunc(i));\n sprite.alpha = alphaFunc(i);\n }\n\n\n api = {\n setup: function() {\n var i, sprite, texture;\n\n readOptions();\n\n if (container) {\n pixiContainer.removeChild(container);\n container = null;\n }\n if (!show || count === 0) return;\n\n container = new PIXI.DisplayObjectContainer();\n pixiContainer.addChild(container);\n\n sprites = [];\n\n texture = getTexture();\n for (i = 0; i < count; ++i) {\n sprite = new PIXI.Sprite(texture);\n // Should pivot on center\n sprite.anchor.x = 0.5;\n sprite.anchor.y = 0.5;\n sprite.i = i;\n sprites.push(sprite);\n container.addChild(sprite);\n }\n\n api.update();\n },\n\n update: function() {\n if (!show || count === 0) return;\n for (var i = 0; i < count; ++i) {\n renderSprite(i);\n }\n }\n };\n\n return api;\n};\n","import PIXI from 'pixi.js';\n\n\nvar NUMBER_OF_SEGMENTS = 5;\n\nexport default function VdwLinesRenderer(modelView, model, pixiContainer) {\n\n // Pixi container where our sprites go.\n var container;\n\n // Pixi texture of a VdW Line\n var texture;\n\n // Width of VdW lines in pixels\n var strokeWidth;\n\n // Length of VdW line texture in pixels\n var texLength;\n\n // Pixi sprites for each line\n var sprites = [];\n\n /**\n Return a PIXI.Texture from which the VdW sprites will be drawn. We want the height of this\n texture to be the actual on-canvas width of a VdW line in pixels, as represented by\n 'strokeWidth', so that the boundaries between the line's segments and gaps are sharp. (Leaving\n the height at say 1px and scaling sprites up to the correct linewidth would likely introduce\n blurred edges).\n */\n function getLineTexture(strokeWidth) {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n\n var gapLength = modelView.model2canvas(0.02);\n var segmentLength = modelView.model2canvas(0.03);\n var halfStroke = strokeWidth / 2;\n\n texLength = NUMBER_OF_SEGMENTS * (segmentLength + gapLength) + segmentLength;\n\n canvas.width = texLength;\n canvas.height = strokeWidth;\n ctx.strokeStyle = \"#aaa\";\n ctx.lineWidth = strokeWidth;\n\n var x = 0;\n for (var i = 0; i < NUMBER_OF_SEGMENTS; i++) {\n ctx.moveTo(x, halfStroke);\n ctx.lineTo(x + segmentLength, halfStroke);\n ctx.stroke();\n x += segmentLength + gapLength;\n }\n\n return PIXI.Texture.fromCanvas(canvas);\n }\n\n function removeContainerAndSprites() {\n if (container) {\n pixiContainer.removeChild(container);\n container = null;\n }\n sprites = [];\n }\n\n function createContainerAndSprites() {\n container = new PIXI.DisplayObjectContainer();\n pixiContainer.addChild(container);\n sprites = [];\n }\n\n /**\n Call before calling update() for the first time and after any change to the model or canvas\n dimensions; resets the display container and texture, then calls update().\n */\n function setup() {\n var newStrokeWidth;\n\n if (!model.properties.showVDWLines) {\n removeContainerAndSprites();\n return;\n }\n\n // Some interactives' scripts call repaint a lot, which calls this method. However, if there\n // is a container and the model dimensions have not changed, there is no setup to do. The\n // update method will ensure that the correct VdW lines are added or removed.\n newStrokeWidth = modelView.model2canvas(0.02);\n if (newStrokeWidth !== strokeWidth) {\n strokeWidth = newStrokeWidth;\n\n texture = getLineTexture(strokeWidth);\n removeContainerAndSprites();\n createContainerAndSprites();\n }\n\n if (!container) {\n createContainerAndSprites();\n }\n\n update();\n }\n\n /**\n Call whenever the VdW lines need to be repainted; however, be sure to call setup() before the\n first time this is called and thereafter whenever a scale change is made.\n\n Note that, because VdW lines by their nature need to be added or removed at each tick, this\n method adds or removes VdW lines as necessary. (Many of the other renderers require that setup\n be called when the number of items to draw is changed.)\n */\n function update() {\n\n if (!model.properties.showVDWLines) {\n return;\n }\n\n var vdwPairs = model.get_vdw_pairs();\n var atoms = model.getAtoms();\n var i;\n var atom1, atom2;\n var dx, dy;\n var x1, y1, x2, y2;\n\n for (i = sprites.length; i < vdwPairs.count; i++) {\n sprites[i] = new PIXI.Sprite(texture);\n sprites[i].anchor.y = 0.5;\n container.addChild(sprites[i]);\n }\n\n for (i = 0; i < vdwPairs.count; i++) {\n atom1 = atoms[vdwPairs.atom1[i]];\n atom2 = atoms[vdwPairs.atom2[i]];\n\n x1 = modelView.model2canvas(atom1.x);\n y1 = modelView.model2canvasInv(atom1.y);\n x2 = modelView.model2canvas(atom2.x);\n y2 = modelView.model2canvasInv(atom2.y);\n\n dx = x2 - x1;\n dy = y2 - y1;\n\n sprites[i].visible = true;\n // stretches/shrinks the sprite to the desired length; appears to be just fine visually.\n sprites[i].scale.x = Math.ceil(Math.sqrt(dx * dx + dy * dy)) / texLength;\n // Make sure the midpoint of the left edge is at (x1, y1); sprite.position.{x|t} refer to\n // the upper left corner instead. A little bit of math is required because Pixi appears to\n // apply the rotation before the translation.\n sprites[i].position.x = x1;\n sprites[i].position.y = y1;\n sprites[i].rotation = Math.atan2(dy, dx);\n }\n\n // hide unused sprites, but don't delete them -- VdW lines come and go on each tick!\n for (; i < sprites.length; i++) {\n sprites[i].visible = false;\n }\n }\n\n function bindModel(_model) {\n model = _model;\n }\n\n return {\n setup: setup,\n update: update,\n bindModel: bindModel\n };\n};\n","/*jshint multistr: true */\n\nexport default {\n \"outline\": {\n \"A\": \"M20.7,0.4l-0.075-0.075C20.672,0.273,20.73,0.231,20.8,0.2 \\\n c0.122-0.049,0.247-0.058,0.375-0.025c0.031,0.002,0.064,0.011,0.1,0.025c0.151,0.054,0.26,0.154,0.325,0.3l6.35,14.15 \\\n c0.026,0.065,0.043,0.132,0.05,0.2c0.092,0.104,0.142,0.229,0.15,0.375c0.01,0.163-0.041,0.304-0.15,0.425l-9.025,9.85 \\\n c-1.65,1.667-3.292,3.55-4.925,5.65L0.2,15.65c-0.11-0.121-0.16-0.262-0.15-0.425c0.008-0.146,0.058-0.271,0.15-0.375 \\\n c0.005-0.068,0.021-0.134,0.05-0.2L6.6,0.5c0.074-0.146,0.19-0.246,0.35-0.3c0.151-0.064,0.301-0.064,0.45,0 \\\n c0.038,0.019,0.071,0.043,0.1,0.075C7.593,0.339,7.66,0.431,7.7,0.55c0.047,0.112-0.012,0.154-0.175,0.125 \\\n C7.461,0.656,7.386,0.63,7.3,0.6L1.65,15.125l12.4,13.625l12.6-13.725L20.7,0.4z\",\n \"C\": \"M12.45,0c2.167,0.5,4.066,1.95,5.7,4.35 \\\n c2.033,2.967,3.05,6.533,3.05,10.7c0,3.8-0.867,7.117-2.6,9.95c-0.067,0.133-0.167,0.217-0.3,0.25c-0.133,0.067-0.267,0.067-0.4,0 \\\n c-0.133-0.033-0.233-0.117-0.3-0.25c-0.133-0.233-0.283-0.45-0.45-0.65V24.3c-1.8-2.667-3.983-4-6.55-4 \\\n c-2.567,0.034-4.767,1.383-6.6,4.05c-0.167,0.2-0.3,0.417-0.4,0.65c-0.1,0.133-0.217,0.217-0.35,0.25 \\\n c-0.133,0.067-0.267,0.067-0.4,0c-0.133-0.033-0.233-0.117-0.3-0.25C0.85,22.167,0,18.85,0,15.05c0-4.167,1-7.733,3-10.7 \\\n C4.633,1.95,6.55,0.5,8.75,0H12.45z M4,5.05V5C3.991,5.016,3.982,5.033,3.975,5.05C2.289,7.935,1.431,11.126,1.4,14.625 \\\n c-0.03,3.519,0.536,6.477,1.7,8.875c2.066-3.39,4.566-5.064,7.5-5.025c2.933,0.04,5.433,1.731,7.5,5.075 \\\n c1.088-2.518,1.605-5.559,1.55-9.125c-0.055-3.565-0.888-6.69-2.5-9.375V5c-1.8-2.397-3.983-3.589-6.55-3.575 \\\n C8.033,1.439,5.833,2.647,4,5.05z\",\n \"G\": \"M8.75,0h3.675c2.191,0.504,4.1,1.963,5.725,4.375V4.35 \\\n c2.035,2.963,3.052,6.53,3.05,10.7c0.001,4.17-1.015,7.737-3.05,10.7v-0.025c-2.066,3.065-4.583,4.59-7.55,4.575 \\\n c-2.966,0.023-5.5-1.494-7.6-4.55v-0.025C0.999,22.77-0.001,19.211,0,15.05c-0.001-4.161,0.999-7.72,3-10.675V4.35 \\\n C4.647,1.953,6.564,0.503,8.75,0z M17.15,25.05c1.754-2.938,2.621-6.354,2.6-10.25c-0.022-3.895-0.889-7.145-2.6-9.75V5.025 \\\n c-1.8-2.269-3.984-3.402-6.55-3.4C8.033,1.63,5.833,2.771,4,5.05V5.025c-1.646,2.778-2.496,6.12-2.55,10.025 \\\n C1.396,18.955,2.246,22.297,4,25.075V25.05c1.583,2.593,3.667,3.985,6.25,4.175c2.583,0.189,4.883-1.194,6.9-4.15V25.05z\",\n \"T\": \"M7.45,0.2H7.9C7.794,0.442,7.677,0.709,7.55,1 \\\n C6.388,3.721,4.504,8.396,1.9,15.025l6.9,8.35l1.025-1.35c1.258-1.424,2.55-2.816,3.875-4.175l0.025-0.025 \\\n c0.148-0.186,0.314-0.336,0.5-0.45c0.046-0.028,0.096-0.036,0.15-0.025c0.059,0.007,0.109,0.032,0.15,0.075l5.325,5.95l6.95-8.35 \\\n C24.252,8.584,22.369,3.909,21.15,1c-0.127-0.284-0.243-0.551-0.35-0.8h0.6h0.575c0.041,0.045,0.075,0.095,0.1,0.15l6.35,14.15 \\\n c0.028,0.066,0.053,0.133,0.075,0.2c0.087,0.129,0.137,0.279,0.15,0.45c0.01,0.238-0.065,0.447-0.225,0.625l-8.2,8.95 \\\n c-0.102,0.12-0.227,0.204-0.375,0.25c-0.167,0.043-0.334,0.043-0.5,0c-0.147-0.046-0.272-0.129-0.375-0.25l-4.675-5.1l-4.625,5.1 \\\n c-0.101,0.121-0.226,0.204-0.375,0.25c-0.167,0.043-0.334,0.043-0.5,0c-0.147-0.046-0.272-0.129-0.375-0.25l-8.15-8.95 \\\n c-0.16-0.178-0.235-0.387-0.225-0.625c0.014-0.168,0.063-0.318,0.15-0.45c0.019-0.066,0.044-0.133,0.075-0.2l6.35-14.15V0.325 \\\n C6.649,0.28,6.674,0.238,6.7,0.2H7.45z\",\n \"U\": \"M20.8,0.2h0.6h0.575c0.041,0.045,0.075,0.095,0.1,0.15 \\\n l6.35,14.15c0.028,0.066,0.053,0.133,0.075,0.2c0.087,0.129,0.137,0.279,0.15,0.45c0.01,0.238-0.065,0.447-0.225,0.625l-8.2,8.95 \\\n c-0.102,0.12-0.227,0.204-0.375,0.25c-0.167,0.043-0.334,0.043-0.5,0c-0.147-0.046-0.272-0.129-0.375-0.25l-4.675-5.1l-4.625,5.1 \\\n c-0.101,0.121-0.226,0.204-0.375,0.25c-0.167,0.043-0.334,0.043-0.5,0c-0.147-0.046-0.272-0.129-0.375-0.25l-8.15-8.95 \\\n c-0.16-0.178-0.235-0.387-0.225-0.625c0.014-0.168,0.063-0.318,0.15-0.45c0.019-0.066,0.044-0.133,0.075-0.2l6.35-14.15V0.325 \\\n C6.649,0.28,6.674,0.238,6.7,0.2h0.75H7.9C7.794,0.442,7.677,0.709,7.55,1C6.388,3.721,4.504,8.396,1.9,15.025l6.9,8.35 \\\n l1.025-1.35c1.258-1.424,2.55-2.816,3.875-4.175l0.025-0.025c0.148-0.186,0.314-0.336,0.5-0.45 \\\n c0.046-0.028,0.096-0.036,0.15-0.025c0.059,0.007,0.109,0.032,0.15,0.075l5.325,5.95l6.95-8.35C24.252,8.584,22.369,3.909,21.15,1 \\\n C21.023,0.716,20.907,0.449,20.8,0.2z\"\n },\n \"interior\": {\n \"A\": \"M21.175,0.175C21.046,0.143,20.921,0.151,20.8,0.2 \\\n c-0.069,0.031-0.128,0.073-0.175,0.125c-0.055,0.054-0.097,0.121-0.125,0.2c-0.063,0.16,0.003,0.118,0.2-0.125l5.95,14.625 \\\n L14.05,28.75L1.65,15.125L7.3,0.6c0.086,0.03,0.161,0.056,0.225,0.075C7.688,0.704,7.747,0.662,7.7,0.55 \\\n C7.66,0.431,7.593,0.339,7.5,0.275L7.6,0.2c4.8-0.067,7.283-0.1,7.45-0.1l6.1,0.05L21.175,0.175z\",\n \"C\": \"M3.975,5.05H4c1.833-2.402,4.033-3.611,6.6-3.625 \\\n C13.167,1.411,15.35,2.603,17.15,5v0.05c1.612,2.685,2.445,5.81,2.5,9.375c0.055,3.566-0.461,6.607-1.55,9.125 \\\n c-2.067-3.344-4.567-5.035-7.5-5.075c-2.934-0.04-5.434,1.635-7.5,5.025c-1.164-2.398-1.73-5.356-1.7-8.875 \\\n C1.431,11.126,2.289,7.935,3.975,5.05z\",\n \"G\": \"M17.15,25.05v0.025c-2.017,2.956-4.317,4.339-6.9,4.15 \\\n C7.667,29.035,5.583,27.643,4,25.05v0.025c-1.754-2.778-2.604-6.12-2.55-10.025C1.504,11.145,2.354,7.803,4,5.025V5.05 \\\n c1.833-2.278,4.033-3.42,6.6-3.425c2.566-0.002,4.75,1.131,6.55,3.4V5.05c1.711,2.605,2.578,5.855,2.6,9.75 \\\n C19.771,18.695,18.904,22.112,17.15,25.05z\",\n \"T\": \"M21.4,0.2h-0.6c0.107,0.249,0.223,0.516,0.35,0.8 \\\n c1.219,2.909,3.103,7.584,5.65,14.025l-6.95,8.35l-5.325-5.95c-0.041-0.042-0.091-0.067-0.15-0.075 \\\n c-0.054-0.011-0.104-0.003-0.15,0.025c-0.186,0.114-0.352,0.264-0.5,0.45L13.7,17.85c-1.325,1.358-2.617,2.75-3.875,4.175 \\\n L8.8,23.375l-6.9-8.35C4.504,8.396,6.388,3.721,7.55,1C7.677,0.709,7.794,0.442,7.9,0.2H7.45c0.133-0.067,0.333-0.1,0.6-0.1 \\\n c0.406,0,1.606-0.008,3.6-0.025l-1.375,0.05C17.28,0.048,20.955,0.056,21.3,0.15C21.334,0.164,21.368,0.181,21.4,0.2z\",\n \"U\": \"M7.9,0.2l0.15-0.1c0.406,0,1.606-0.008,3.6-0.025l-1.375,0.05 \\\n c6.009-0.066,9.568-0.066,10.675,0L20.8,0.2c0.107,0.249,0.223,0.516,0.35,0.8c1.219,2.909,3.103,7.584,5.65,14.025l-6.95,8.35 \\\n l-5.325-5.95c-0.041-0.042-0.091-0.067-0.15-0.075c-0.054-0.011-0.104-0.003-0.15,0.025c-0.186,0.114-0.352,0.264-0.5,0.45 \\\n L13.7,17.85c-1.325,1.358-2.617,2.75-3.875,4.175L8.8,23.375l-6.9-8.35C4.504,8.396,6.388,3.721,7.55,1 \\\n C7.677,0.709,7.794,0.442,7.9,0.2z\"\n },\n \"letter\": {\n \"A\": {\n \"1\": \"M12.85,12.55h2.6l-1.3-3.95L12.85,12.55z M13,6.25h2.4l3.55,10.1 \\\n h-2.3L16,14.3h-3.7l-0.7,2.05H9.4L13,6.25z\",\n \"2\": \"M18.7,5.95l-3.55,10.1h-2.4l-3.6-10.1h2.2L12.05,8h3.7l0.65-2.05 \\\n H18.7z M12.6,9.75l1.3,3.95l1.3-3.95H12.6z\"\n },\n \"C\": {\n \"1\": \"M10.45,6.4c1.667,0,2.883,0.55,3.65,1.65 \\\n c0.433,0.633,0.667,1.267,0.7,1.9h-2.1c-0.133-0.5-0.3-0.867-0.5-1.1c-0.4-0.434-0.967-0.65-1.7-0.65S9.183,8.5,8.75,9.1 \\\n C8.317,9.733,8.1,10.617,8.1,11.75c0,1.1,0.217,1.933,0.65,2.5c0.467,0.567,1.05,0.85,1.75,0.85c0.733,0,1.283-0.233,1.65-0.7 \\\n c0.233-0.267,0.417-0.667,0.55-1.2h2.05c-0.167,1.1-0.617,2-1.35,2.7c-0.733,0.7-1.683,1.05-2.85,1.05 \\\n c-1.433,0-2.566-0.467-3.4-1.4c-0.8-0.933-1.2-2.216-1.2-3.85c0-1.767,0.466-3.117,1.4-4.05C8.15,6.817,9.183,6.4,10.45,6.4z\",\n \"2\": \"M15,12.35c-0.033,0.633-0.267,1.267-0.7,1.9 \\\n c-0.767,1.1-1.983,1.65-3.65,1.65c-1.267,0-2.3-0.417-3.1-1.25c-0.933-0.933-1.4-2.283-1.4-4.05c0-1.633,0.4-2.917,1.2-3.85 \\\n c0.833-0.933,1.967-1.4,3.4-1.4c1.167,0,2.117,0.35,2.85,1.05c0.733,0.7,1.183,1.6,1.35,2.7H12.9 \\\n c-0.133-0.533-0.316-0.934-0.55-1.2c-0.367-0.467-0.917-0.7-1.65-0.7c-0.7,0-1.284,0.283-1.75,0.85 \\\n c-0.434,0.567-0.65,1.4-0.65,2.5c0,1.133,0.217,2.017,0.65,2.65c0.433,0.6,1.017,0.9,1.75,0.9c0.733,0,1.3-0.217,1.7-0.65 \\\n c0.2-0.233,0.367-0.6,0.5-1.1H15z\"\n },\n \"G\": {\n \"1\": \"M14.8,10.8h-2.05c-0.167-0.667-0.567-1.133-1.2-1.4 \\\n c-0.333-0.167-0.716-0.25-1.15-0.25c-0.8,0-1.467,0.3-2,0.9c-0.5,0.633-0.75,1.567-0.75,2.8s0.283,2.1,0.85,2.6 \\\n c0.567,0.533,1.2,0.8,1.9,0.8c0.7,0,1.283-0.217,1.75-0.65c0.434-0.4,0.717-0.934,0.85-1.6h-2.35v-1.65h4.2v5.4h-1.4l-0.2-1.25 \\\n c-0.4,0.467-0.767,0.8-1.1,1C11.583,17.833,10.9,18,10.1,18c-1.333,0-2.434-0.467-3.3-1.4c-0.867-0.9-1.3-2.167-1.3-3.8 \\\n s0.45-2.933,1.35-3.9c0.867-1,2.05-1.5,3.55-1.5c1.267,0,2.3,0.333,3.1,1C14.267,9.033,14.7,9.833,14.8,10.8z\",\n \"2\": \"M10.65,9.65c-0.7,0-1.333,0.267-1.9,0.8 \\\n c-0.567,0.5-0.85,1.367-0.85,2.6c0,1.233,0.25,2.167,0.75,2.8c0.533,0.6,1.2,0.9,2,0.9c0.434,0,0.817-0.083,1.15-0.25 \\\n c0.633-0.267,1.034-0.733,1.2-1.4h2.05c-0.1,0.967-0.533,1.767-1.3,2.4c-0.8,0.667-1.833,1-3.1,1c-1.5,0-2.683-0.5-3.55-1.5 \\\n c-0.9-0.967-1.35-2.267-1.35-3.9s0.433-2.9,1.3-3.8c0.867-0.933,1.967-1.4,3.3-1.4c0.8,0,1.483,0.167,2.05,0.5 \\\n c0.333,0.2,0.7,0.533,1.1,1l0.2-1.25h1.4v5.4h-4.2V11.9h2.35c-0.133-0.667-0.417-1.2-0.85-1.6C11.933,9.867,11.35,9.65,10.65,9.65z\"\n },\n \"T\": {\n \"1\": \"M10.3,5 L18.45,5 L18.45,6.8 L15.4,6.8 L15.4,15.1 L13.3,15.1 \\\n L13.3,6.8 L10.3,6.8z\",\n \"2\": \"M10.2,14.65 L10.2,12.85 L13.2,12.85 L13.2,4.55 L15.3,4.55 \\\n L15.3,12.85 L18.35,12.85 L18.35,14.65z\"\n },\n \"U\": {\n \"1\": \"M10.15,10.8V4.6h2.15v6.2c0,0.7,0.083,1.217,0.25,1.55 \\\n c0.267,0.566,0.817,0.85,1.65,0.85c0.867,0,1.417-0.284,1.65-0.85c0.167-0.333,0.25-0.85,0.25-1.55V4.6h2.15v6.2 \\\n c0,1.067-0.167,1.9-0.5,2.5c-0.633,1.1-1.817,1.65-3.55,1.65c-1.733,0-2.917-0.55-3.55-1.65C10.317,12.7,10.15,11.867,10.15,10.8z\",\n \"2\": \"M12.45,8.4v6.2H10.3V8.4c0-1.066,0.167-1.9,0.5-2.5 \\\n c0.633-1.1,1.817-1.65,3.55-1.65S17.267,4.8,17.9,5.9c0.333,0.6,0.5,1.434,0.5,2.5v6.2h-2.15V8.4c0-0.7-0.083-1.217-0.25-1.55 \\\n C15.767,6.283,15.217,6,14.35,6c-0.833,0-1.383,0.283-1.65,0.85C12.533,7.183,12.45,7.7,12.45,8.4z\"\n }\n }\n};\n","\nimport nucleotidePaths from 'models/md2d/views/nucleotide-paths';\nimport resourcesUrl from 'common/resources-url';\nvar SCALE = 0.007,\n W = {\n \"BACKB\": 52,\n \"A\": 28.151,\n \"C\": 21.2,\n \"G\": 21.2,\n \"T\": 28.651,\n \"U\": 28.651,\n \"A_GLOW\": 44.125,\n \"C_GLOW\": 37.2,\n \"G_GLOW\": 36.2,\n \"T_GLOW\": 45.566\n },\n H = {\n \"BACKB\": 14,\n \"A\": 31.15,\n \"C\": 25.3,\n \"G\": 30.3,\n \"T\": 25.007,\n \"U\": 25.007,\n \"A_GLOW\": 44.55,\n \"C_GLOW\": 41.417,\n \"G_GLOW\": 45.3,\n \"T_GLOW\": 40.65\n };\n\n(function() {\n var name;\n for (name in W) {\n if (W.hasOwnProperty(name)) {\n W[name] *= SCALE;\n }\n }\n for (name in H) {\n if (H.hasOwnProperty(name)) {\n H[name] *= SCALE;\n }\n }\n}());\n\nfunction nucleotides() {\n var m2px = null,\n sequence = \"\",\n direction = 1,\n bonds = 1,\n backbone = \"DNA\", // if enabled, \"RNA\" or \"DNA\" is expected.\n stopCodonsHash = null,\n randomEnter = true,\n glow = false,\n enterExitOnly = false,\n\n xShift = 0,\n yShift = 0;\n\n function shift(enabled) {\n var t, r;\n if (enabled) {\n // While adding a new mRNA segment, choose a random starting point along a\n // circle with a certain radius that extends beyond the top DNA strand.\n // Use parametric circle equation: x = r cos(t), y = r sin(t)\n // Limit range of the \"t\" parameter to: [0.25 * PI, 0.75 * PI) and [1.25 * PI, 1.75 * PI),\n // so new mRNA segments will come only from the top or bottom side of the container.\n t = Math.random() >= 0.5 ? Math.PI * 0.25 : Math.PI * 1.25;\n t += Math.random() * Math.PI * 0.5;\n r = nucleotides.HEIGHT * 6;\n xShift = r * Math.cos(t);\n yShift = r * Math.sin(t);\n } else {\n xShift = yShift = 0;\n }\n }\n\n function translate(d) {\n return \"translate(\" + m2px(xShift + nucleotides.WIDTH * (d.idx)) + \" \" + m2px(yShift) + \")\";\n }\n\n function nucleo(g) {\n g.each(function(d, i) {\n var g = d3.select(this),\n\n yOffset = backbone ? 0.9 * H.BACKB : 0,\n yStart = m2px(yOffset + 0.5 * H.A),\n yEnd = m2px(yOffset + H.A * 0.97),\n\n seq = typeof sequence === \"function\" ? sequence(d, i) : sequence,\n\n nucleo, nucleoEnter, nucleoExit, nucleoGEnter, backboneEnter,\n nucleoShape, nucleoSVG, nucleoSVGUpdate, nucleoTrans, targetScale;\n\n if (typeof seq === \"string\") {\n // seq is a string, generate data array. Change it to array of objects.\n // e.g. \"AG\" will be change to [{idx: 0, type: \"A\"}, {idx: 1, type: \"G\"}].\n seq = seq.split(\"\");\n seq.forEach(function(val, i) {\n seq[i] = {\n id: i,\n idx: i,\n type: val\n };\n });\n }\n\n // Join data by ID.\n nucleo = g.selectAll(\".nucleotide\").data(seq, function(d) {\n return d.id;\n });\n nucleoEnter = nucleo.enter();\n nucleoExit = nucleo.exit();\n\n // Enter.\n // Random initial positions of the new mRNAs.\n shift(randomEnter);\n nucleoEnter = nucleoEnter.append(\"g\").attr({\n \"transform\": translate\n }).style({\n \"opacity\": randomEnter ? 0 : 1\n });\n // Additional container for scaling.\n nucleoGEnter = nucleoEnter.append(\"g\").attr({\n \"class\": \"scale\",\n \"transform\": \"scale(1, \" + (direction === 1 ? 1 : -1) + \")\",\n });\n // Bonds.\n nucleoGEnter.append(\"path\").attr(\"class\", \"bonds\")\n .style({\n \"stroke-width\": m2px(0.01),\n \"stroke\": \"#fff\"\n });\n // Main shape.\n nucleoShape = nucleoGEnter.append(\"g\")\n .classed(\"nucleo-shape\", true)\n .classed(\"clickable-nucleo\", function(d) {\n return d.region === \"c\" && glow;\n }).on(\"click\", function() {\n // Mobile Safari will only produce mouse events when the user taps\n // on a clickable element, like a link. You can make an element\n // clickable by adding an onClick event handler to it, even if that\n // handler does nothing. It's necessary, as nucleotides should be\n // clickable, e.g. to show context menu.\n });\n // Optional glow image.\n if (glow) {\n nucleoShape.append(\"image\").attr({\n \"class\": \"glow\",\n \"y\": m2px(yOffset - 0.17 * W.G_GLOW), // move glow closer to the backbone\n \"preserveAspectRatio\": \"none\"\n });\n }\n // Parts of nucleotide shape (outline, interior, letter).\n nucleoSVG = nucleoShape.append(\"svg\").attr({\n \"y\": m2px(yOffset),\n \"preserveAspectRatio\": \"none\",\n });\n nucleoSVG.append(\"path\").attr({\n \"class\": \"outline\",\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\"\n });\n nucleoSVG.append(\"path\").attr({\n \"class\": \"interior\",\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\"\n });\n nucleoSVG.append(\"path\").attr({\n \"class\": \"letter\",\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n \"d\": function(d) {\n return nucleotidePaths.letter[d.type][direction];\n }\n });\n // Optional backbone.\n if (backbone) {\n backboneEnter = nucleoGEnter.append(\"image\").attr({\n \"class\": \"backbone\",\n \"x\": 0,\n \"y\": 0,\n \"width\": m2px(W.BACKB),\n \"height\": m2px(H.BACKB),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(\"dna/Backbone_\" + backbone + \".svg\")\n });\n }\n\n // Update.\n if (enterExitOnly) {\n // Special mode when we update ONLY nucleotides from enter and exit\n // subselections. It's useful to add new nucleotides while other\n // are being modified by transition at the same time, so it won't\n // be affected.\n nucleo = nucleoEnter;\n }\n\n // Update without transition.\n nucleo.attr(\"class\", function(d) {\n var regionClass = \"\";\n switch (d.region) {\n case \"c\":\n regionClass = \"coding-region\";\n break;\n case \"j\":\n regionClass = \"junk-region\";\n break;\n case \"p\":\n regionClass = \"promoter-region\";\n break;\n case \"t\":\n regionClass = \"terminator-region\";\n break;\n }\n return \"nucleotide \" + regionClass;\n });\n nucleo.select(\".bonds\").attr(\"d\", function(d) {\n if (d.type === \"C\" || d.type === \"G\") {\n return \"M\" + m2px(SCALE * 20) + \" \" + yStart + \" L \" + m2px(SCALE * 20) + \" \" + yEnd +\n \"M\" + m2px(SCALE * 26) + \" \" + yStart + \" L \" + m2px(SCALE * 26) + \" \" + yEnd +\n \"M\" + m2px(SCALE * 32) + \" \" + yStart + \" L \" + m2px(SCALE * 32) + \" \" + yEnd;\n } else {\n return \"M\" + m2px(SCALE * 22) + \" \" + yStart + \" L \" + m2px(SCALE * 22) + \" \" + yEnd +\n \"M\" + m2px(SCALE * 30) + \" \" + yStart + \" L \" + m2px(SCALE * 30) + \" \" + yEnd;\n }\n });\n nucleo.select(\".glow\").attr({\n \"x\": function(d) {\n return m2px(W.BACKB) / 2 - m2px(W[d.type + \"_GLOW\"]) / 2;\n },\n \"width\": function(d) {\n return m2px(W[d.type + \"_GLOW\"]);\n },\n \"height\": function(d) {\n return m2px(H[d.type + \"_GLOW\"]);\n },\n \"xlink:href\": function(d) {\n return resourcesUrl(\"dna/NucleotideGlow_\" + d.type + \".svg\");\n }\n });\n nucleoSVGUpdate = nucleo.select(\".nucleo-shape > svg\");\n nucleoSVGUpdate.attr({\n \"class\": function(d) {\n var className = \"type-\" + d.type;\n if (stopCodonsHash && stopCodonsHash[d.idx]) {\n className += \" stop-codon\";\n }\n return className;\n },\n \"viewBox\": function(d) {\n return \"0 0 \" + (W[d.type] / SCALE) + \" \" + (H[d.type] / SCALE);\n },\n \"x\": function(d) {\n return m2px(W.BACKB) / 2 - m2px(W[d.type]) / 2;\n },\n \"width\": function(d) {\n return m2px(W[d.type]);\n },\n \"height\": function(d) {\n return m2px(H[d.type]);\n }\n });\n nucleoSVGUpdate.select(\"path.interior\").attr(\"d\", function(d) {\n return nucleotidePaths.interior[d.type];\n });\n nucleoSVGUpdate.select(\"path.outline\").attr(\"d\", function(d) {\n return nucleotidePaths.outline[d.type];\n });\n\n // Update with transition.\n shift(false);\n nucleoTrans = d3.transition(nucleo)\n .attr(\"transform\", translate)\n .style(\"opacity\", 1);\n\n // Animate also bonds opacity.\n nucleoTrans.select(\".bonds\").style(\"opacity\", bonds);\n\n // Duck test whether nucleoTrans is really translation. See D3 API\n // Reference - d3.transition(selection) returns transition only when\n // called in the context of other transition. Otherwise it returns\n // selection.\n if (nucleoTrans.attrTween) {\n // Scale. We can't simply use .attr, as rotation is used (to make\n // scale change fancier?). attrTween enforces simple change from\n // scale(1,1) to scale(1,-1) without using rotation.\n targetScale = \"scale(1, \" + (direction === 1 ? 1 : -1) + \")\";\n nucleoTrans.select(\"g.scale\").attrTween(\"transform\", function(d, i, a) {\n return d3.interpolateString(a, targetScale);\n });\n // Letters. Default d3 interpolator creates some\n // results which can't be parsed. Use custom interpolator,\n // which changes letters in the middle of transition.\n nucleoTrans.select(\"path.letter\").attrTween(\"d\", function(d, i, a) {\n return function(t) {\n return t < 0.5 ? a : nucleotidePaths.letter[d.type][direction];\n };\n });\n } else {\n // The same operations, but without using transition.\n nucleo.select(\"g.scale\").attr(\"transform\", \"scale(1, \" + (direction === 1 ? 1 : -1) + \")\");\n nucleo.select(\"path.letter\")\n .attr(\"d\", function(d) {\n return nucleotidePaths.letter[d.type][direction];\n });\n }\n\n // Exit.\n shift(true);\n d3.transition(nucleoExit)\n .attr(\"transform\", translate)\n .style(\"opacity\", 0)\n .remove();\n });\n }\n\n nucleo.sequence = function(s) {\n if (!arguments.length) return sequence;\n sequence = s;\n return nucleo;\n };\n\n nucleo.model2px = function(m) {\n if (!arguments.length) return m2px;\n m2px = m;\n return nucleo;\n };\n\n nucleo.direction = function(d) {\n if (!arguments.length) return direction;\n direction = d;\n return nucleo;\n };\n\n nucleo.bonds = function(b) {\n if (!arguments.length) return bonds;\n bonds = b;\n return nucleo;\n };\n\n nucleo.randomEnter = function(r) {\n if (!arguments.length) return randomEnter;\n randomEnter = r;\n return nucleo;\n };\n\n /**\n * Enables or disables nucleotide glowing on hover.\n * @param {boolean} g\n */\n nucleo.glow = function(g) {\n if (!arguments.length) return glow;\n glow = g;\n return nucleo;\n };\n\n /**\n * @param {String} b \"DNA\" or \"RNA\".\n */\n nucleo.backbone = function(b) {\n if (!arguments.length) return backbone;\n backbone = b;\n return nucleo;\n };\n\n nucleo.stopCodonsHash = function(s) {\n if (!arguments.length) return stopCodonsHash;\n stopCodonsHash = s;\n return nucleo;\n };\n\n /**\n * Special mode for quick update of rendered nucleotides number.\n * When this option is set to true, only new nucleotides will be\n * added and other possibly removed. None of existing\n * nucleotides will be updated. It's useful to add new nucleotides\n * while there is an ongoing transition on existing nucleoties.\n * @param {boolean} ee\n */\n nucleo.enterExitOnly = function(ee) {\n if (!arguments.length) return enterExitOnly;\n enterExitOnly = ee;\n return nucleo;\n };\n\n return nucleo;\n}\n\n// Width of the nucleotide is width of the DNA backbone.\n// * 0.92 to ensure that DNA backbone doesn't contain any visual discontinuities.\n// There are two bugs connected with it. First is in Chrome, where preserveAspectRatio\n// is ignored for images, the second one is in Safari, which has problems with correct\n// width of the images. Please see:\n// https://www.pivotaltracker.com/story/show/48453261\nnucleotides.WIDTH = W.BACKB * 0.92;\n// Height of the nucleotide is height of the DNA backbone + A nucleotide (tallest one).\n// * 0.96 because it simply... looks better. This value is used to determine distance\n// between two strands of DNA and this multiplier causes that they are closer to each other.\nnucleotides.HEIGHT = (H.BACKB * 0.9 + H.A) * 0.96;\n\nexport default nucleotides;\n","\nimport nucleotides from 'models/md2d/views/nucleotides';\nimport resourcesUrl from 'common/resources-url';\nimport labConfig from 'lab.config';\nvar SCALE = 0.007,\n W = {\n \"CELLS\": 720,\n \"DNA1\": 661,\n \"DNA2\": 720,\n \"DNA3\": 337.4,\n \"POLY_UNDER\": 426.15,\n \"POLY_OVER\": 402.525,\n \"NUCLEUS\": 729.45,\n \"RIBO_TOP\": 550.7,\n \"RIBO_BOTTOM\": 509.031,\n \"RIBO_UNDER\": 550.55,\n \"RIBO_OVER\": 550.7,\n \"TRNA\": 117.325,\n \"TRNA_NECK\": 15.925\n },\n H = {\n \"CELLS\": 500,\n \"DNA1\": 550,\n \"DNA2\": 414.263,\n \"DNA3\": 89.824,\n \"POLY_UNDER\": 368.6,\n \"POLY_OVER\": 368.6,\n \"NUCLEUS\": 543.199,\n \"RIBO_TOP\": 250,\n \"RIBO_BOTTOM\": 147.15,\n \"RIBO_UNDER\": 311.6,\n \"RIBO_OVER\": 311.6,\n \"TRNA\": 67.9,\n \"TRNA_NECK\": 21.14,\n \"A\": 31.15\n },\n\n OBJECT_NAMES = [\n \"background\",\n \"cells\", \"dna1\", \"dna2\", \"dna3\",\n \"polymeraseUnder\", \"polymeraseOver\",\n \"polymeraseUnder\", \"polymeraseOver\",\n \"dna\", \"dnaComp\", \"mrna\", \"nucleus\",\n \"ribosomeBottom\", \"ribosomeTop\",\n \"ribosomeUnder\", \"ribosomeOver\",\n \"trna\", \"viewPort\"\n ];\n\n(function() {\n var name;\n for (name in W) {\n if (W.hasOwnProperty(name)) {\n W[name] *= SCALE;\n }\n }\n for (name in H) {\n if (H.hasOwnProperty(name)) {\n H[name] *= SCALE;\n }\n }\n}());\n\nfunction getDefs(parent) {\n var defs = parent.select(\"defs\");\n if (defs.empty()) {\n defs = parent.append(\"defs\");\n }\n return defs;\n}\n\nfunction appendTranscriptionBg(parent) {\n var defs = getDefs(parent),\n gradient;\n\n if (defs.select(\"#transcription-bg\").empty()) {\n gradient = defs.append(\"linearGradient\")\n .attr(\"id\", \"transcription-bg\")\n .attr(\"x1\", \"0%\")\n .attr(\"y1\", \"0%\")\n .attr(\"x2\", \"0%\")\n .attr(\"y2\", \"100%\");\n gradient.append(\"stop\")\n .attr(\"stop-color\", \"#C8DD69\")\n .attr(\"offset\", \"0%\");\n gradient.append(\"stop\")\n .attr(\"stop-color\", \"#778B3D\")\n .attr(\"offset\", \"100%\");\n }\n}\n\nfunction GeneticElementsRenderer(node, model2px, model2pxInv, model) {\n\n function scaleFunc(d) {\n return \"scale(\" + d.scale + \")\";\n }\n\n function opacityFunc(d) {\n return d.opacity;\n }\n\n function translateFuncInv(d) {\n var x = d.translateX || 0,\n y = d.translateY || 0;\n return \"translate(\" + model2px(x) + \" \" + model2pxInv(y) + \")\";\n }\n\n function translateScaleFuncInv(d) {\n return translateFuncInv(d) + \" \" + scaleFunc(d);\n }\n // Returns optimal (minimal) boundaries of the DNA or mRNA view array.\n // They are based on the current vieport position, size and knowledge\n // about single nucleotide size.\n function getOptBoundaries(dna) {\n var shift = dna ? model.geneticEngine().PRECODING_LEN : 0,\n lowIdx = Math.floor(model.properties.viewPortX / nucleotides.WIDTH) - 2,\n highIdx = Math.ceil((model.properties.viewPortX + model.properties.viewPortWidth) / nucleotides.WIDTH) + 4;\n return [Math.max(0, lowIdx + shift), highIdx + shift];\n }\n\n function imagePath() {\n var dnaEngineImagesPath = model.properties.dnaEngineImagesPath;\n var imagePath = \"\";\n\n if (dnaEngineImagesPath && dnaEngineImagesPath.length > 0) {\n if (labConfig.modelsRootUrl && labConfig.modelsRootUrl.length > 0) {\n imagePath = labConfig.modelsRootUrl + dnaEngineImagesPath;\n } else {\n imagePath = dnaEngineImagesPath;\n }\n } else {\n // this should ensure all original interactives render as intended\n imagePath = \"dna\";\n }\n return imagePath;\n }\n\n return {\n cells: function(parent, data) {\n var cells = parent.select(\".background-layer\").selectAll(\".cells\").data(data.cells);\n cells.enter().append(\"image\").attr({\n \"class\": \"cells\",\n \"x\": model2px(W.CELLS * -0.567),\n \"y\": model2px(H.CELLS * -0.445),\n \"width\": model2px(W.CELLS),\n \"height\": model2px(H.CELLS),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/Cells.svg\"),\n \"transform\": translateScaleFuncInv\n }).style(\"opacity\", opacityFunc);\n d3.transition(cells)\n .attr(\"transform\", translateScaleFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(cells.exit()).remove();\n },\n\n dna1: function(parent, data) {\n var dna1 = parent.select(\".dna-layer\").selectAll(\".dna1\").data(data.dna1);\n dna1.enter().append(\"image\").attr({\n \"class\": \"dna1\",\n \"x\": model2px(W.DNA1 * -0.5),\n \"y\": model2px(H.DNA1 * -0.5),\n \"width\": model2px(W.DNA1),\n \"height\": model2px(H.DNA1),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/DNA_InsideNucleus_1.svg\"),\n \"transform\": translateScaleFuncInv\n }).style(\"opacity\", opacityFunc);\n d3.transition(dna1)\n .attr(\"transform\", translateScaleFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(dna1.exit()).remove();\n },\n\n dna2: function(parent, data) {\n var dna2 = parent.select(\".dna-layer\").selectAll(\".dna2\").data(data.dna2);\n dna2.enter().append(\"image\").attr({\n \"class\": \"dna2\",\n \"x\": model2px(W.DNA2 * -0.5),\n \"y\": model2px(H.DNA2 * -0.404),\n \"width\": model2px(W.DNA2),\n \"height\": model2px(H.DNA2),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/DNA_InsideNucleus_2.svg\"),\n \"transform\": translateScaleFuncInv\n }).style(\"opacity\", opacityFunc);\n d3.transition(dna2)\n .attr(\"transform\", translateScaleFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(dna2.exit()).remove();\n },\n\n dna3: function(parent, data) {\n var dna3units = 14,\n dna3, dna3Enter;\n dna3 = parent.select(\".dna-layer\").selectAll(\".dna3\").data(data.dna3);\n dna3Enter = dna3.enter().append(\"g\").attr({\n \"class\": \"dna3 main-dna\",\n \"transform\": translateScaleFuncInv\n }).style(\"opacity\", opacityFunc);\n dna3Enter.selectAll(\"dna3-unit\").data(new Array(dna3units)).enter().append(\"image\").attr({\n \"class\": \"dna3-unit\",\n \"x\": function(d, i) {\n return (i - dna3units * 0.5) * model2px(W.DNA3) * 0.98;\n },\n \"y\": model2px(H.DNA3 * -0.5),\n \"width\": model2px(W.DNA3),\n \"height\": model2px(H.DNA3),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/DoubleHelix_Unit.svg\")\n });\n d3.transition(dna3)\n .attr(\"transform\", translateScaleFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(dna3.exit()).remove();\n },\n\n dna: function(parent, data, enterExitOnly) {\n var viewModel = model.geneticEngine().viewModel,\n boundaries = getOptBoundaries(true),\n bonds = data.dna[0] ? data.dna[0].bonds : 0,\n n = nucleotides(),\n dna = parent.select(\".dna-layer\").selectAll(\".dna\");\n\n // Configure nucleotides.\n n.model2px(model2px)\n .sequence(viewModel.DNA.slice(boundaries[0], boundaries[1]))\n .glow(model.get(\"DNAMutations\"))\n .bonds(bonds);\n\n if (enterExitOnly) {\n dna.call(n.enterExitOnly(true));\n return;\n }\n\n dna = dna.data(data.dna);\n\n // DNA enter:\n dna.enter().append(\"g\").attr({\n \"class\": \"dna\",\n \"transform\": translateFuncInv\n });\n // DNA update:\n dna.call(n);\n d3.transition(dna).attr(\"transform\", translateFuncInv);\n // DNA exit:\n d3.transition(dna.exit()).remove();\n },\n\n dnaComp: function(parent, data, enterExitOnly) {\n var viewModel = model.geneticEngine().viewModel,\n boundaries = getOptBoundaries(true),\n bonds = data.dnaComp[0] ? data.dnaComp[0].bonds : 0,\n n = nucleotides(),\n dnaComp = parent.select(\".dna-layer\").selectAll(\".dna-comp\");\n\n // Configure nucleotides.\n n.model2px(model2px)\n .sequence(viewModel.DNAComp.slice(boundaries[0], boundaries[1]))\n .direction(2)\n .glow(model.get(\"DNAMutations\"))\n .bonds(bonds);\n\n if (enterExitOnly) {\n dnaComp.call(n.enterExitOnly(true));\n return;\n }\n\n dnaComp = dnaComp.data(data.dnaComp);\n\n // DNA Comp enter:\n dnaComp.enter().append(\"g\").attr({\n \"class\": \"dna-comp\",\n \"transform\": translateFuncInv\n });\n // DNA Comp update:\n dnaComp.call(n);\n d3.transition(dnaComp).attr(\"transform\", translateFuncInv);\n // DNA Comp exit:\n d3.transition(dnaComp.exit()).remove();\n },\n\n mrna: function(parent, data, enterExitOnly) {\n var geneticEngine = model.geneticEngine(),\n mrnaSequence = geneticEngine.viewModel.mRNA,\n boundaries = getOptBoundaries(),\n stopCodons = geneticEngine.stopCodonsHash(),\n bonds = data.mrna[0] ? data.mrna[0].bonds : 0,\n dir = data.mrna[0] ? data.mrna[0].direction : 1,\n n = nucleotides(),\n mrna = parent.select(\".dna-layer\").selectAll(\".mrna\");\n\n // Configure nucleotides.\n n.model2px(model2px)\n .sequence(mrnaSequence.slice(boundaries[0], boundaries[1]))\n .backbone(\"RNA\")\n .direction(dir)\n .bonds(bonds)\n .stopCodonsHash(stopCodons);\n\n if (enterExitOnly) {\n mrna.call(n.enterExitOnly(true));\n return;\n }\n\n mrna = mrna.data(data.mrna);\n\n // mRNA enter:\n mrna.enter().append(\"g\").attr({\n \"class\": \"mrna\",\n \"transform\": translateFuncInv\n });\n // mRNA update:\n mrna.call(n);\n d3.transition(mrna).attr(\"transform\", translateFuncInv);\n // mRNA exit:\n d3.transition(mrna.exit()).remove();\n },\n\n polymeraseUnder: function(parent, data) {\n var polyUnder = parent.select(\".under-dna-layer\").selectAll(\".polymerase-under\").data(data.polymeraseUnder);\n polyUnder.enter().append(\"image\").attr({\n \"class\": \"polymerase-under\",\n \"x\": model2px(W.POLY_UNDER * -0.5),\n \"y\": model2px(H.POLY_UNDER * -0.5),\n \"width\": model2px(W.POLY_UNDER),\n \"height\": model2px(H.POLY_UNDER),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/Polymerase_Under.svg\"),\n \"transform\": translateScaleFuncInv\n }).style(\"opacity\", opacityFunc);\n d3.transition(polyUnder)\n .attr(\"transform\", translateScaleFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(polyUnder.exit()).remove();\n },\n\n polymeraseOver: function(parent, data) {\n var polyOver = parent.select(\".over-dna-layer\").selectAll(\".polymerase-over\").data(data.polymeraseOver);\n polyOver.enter().append(\"image\").attr({\n \"class\": \"polymerase-over\",\n \"x\": model2px(W.POLY_OVER * -0.5),\n \"y\": model2px(H.POLY_OVER * -0.5),\n \"width\": model2px(W.POLY_OVER),\n \"height\": model2px(H.POLY_OVER),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/Polymerase_Over.svg\"),\n \"transform\": translateScaleFuncInv\n }).style(\"opacity\", opacityFunc);\n d3.transition(polyOver)\n .attr(\"transform\", translateScaleFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(polyOver.exit()).remove();\n },\n\n nucleus: function(parent, data) {\n var nucleus = parent.select(\".background-layer\").selectAll(\".nucleus\").data(data.nucleus);\n nucleus.enter().append(\"image\").attr({\n \"class\": \"nucleus\",\n \"x\": model2px(W.NUCLEUS * -0.5),\n \"y\": model2px(H.NUCLEUS * -0.5),\n \"width\": model2px(W.NUCLEUS),\n \"height\": model2px(H.NUCLEUS),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/BG_Nucleus.svg\"),\n \"transform\": translateFuncInv\n }).style(\"opacity\", opacityFunc);\n d3.transition(nucleus)\n .attr(\"transform\", translateFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(nucleus.exit()).remove();\n },\n\n ribosomeBottom: function(parent, data) {\n var selection = parent.select(\".over-dna-layer\").selectAll(\".ribosome-bottom\").data(data.ribosomeBottom);\n selection.enter().append(\"image\").attr({\n \"class\": \"ribosome-bottom\",\n \"x\": model2px(W.RIBO_BOTTOM * -0.5),\n \"y\": model2px(H.RIBO_BOTTOM * -0.5),\n \"width\": model2px(W.RIBO_BOTTOM),\n \"height\": model2px(H.RIBO_BOTTOM),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/Ribosome_bottom1.svg\"),\n \"transform\": translateFuncInv\n }).style(\"opacity\", 0);\n d3.transition(selection)\n .attr(\"transform\", translateFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(selection.exit())\n .style(\"opacity\", 0)\n .remove();\n },\n\n ribosomeTop: function(parent, data) {\n var selection = parent.select(\".over-dna-layer\").selectAll(\".ribosome-top\").data(data.ribosomeTop);\n selection.enter().append(\"image\").attr({\n \"class\": \"ribosome-top\",\n \"x\": model2px(W.RIBO_TOP * -0.5),\n \"y\": model2px(H.RIBO_TOP * -0.5),\n \"width\": model2px(W.RIBO_TOP),\n \"height\": model2px(H.RIBO_TOP),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/Ribosome_top1.svg\"),\n \"transform\": translateFuncInv\n }).style(\"opacity\", 0);\n d3.transition(selection)\n .attr(\"transform\", translateFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(selection.exit())\n .style(\"opacity\", 0)\n .remove();\n },\n\n ribosomeUnder: function(parent, data) {\n var selection = parent.select(\".under-dna-layer\").selectAll(\".ribosome-under\").data(data.ribosomeUnder);\n selection.enter().append(\"image\").attr({\n \"class\": \"ribosome-under\",\n \"x\": model2px(W.RIBO_UNDER * -0.5),\n \"y\": model2px(H.RIBO_UNDER * -0.5),\n \"width\": model2px(W.RIBO_UNDER),\n \"height\": model2px(H.RIBO_UNDER),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/Ribosome_under.png\"),\n \"transform\": translateFuncInv\n }).style({\n \"opacity\": opacityFunc\n });\n d3.transition(selection)\n .attr(\"transform\", translateFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(selection.exit()).remove();\n },\n\n ribosomeOver: function(parent, data) {\n var selection = parent.select(\".over-dna-layer\").selectAll(\".ribosome-over\").data(data.ribosomeOver);\n selection.enter().append(\"image\").attr({\n \"class\": \"ribosome-over\",\n \"x\": model2px(W.RIBO_OVER * -0.5),\n \"y\": model2px(H.RIBO_OVER * -0.5),\n \"width\": model2px(W.RIBO_OVER),\n \"height\": model2px(H.RIBO_OVER),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/Ribosome_over.png\"),\n \"transform\": translateFuncInv\n }).style(\"opacity\", opacityFunc);\n d3.transition(selection)\n .attr(\"transform\", translateFuncInv)\n .style(\"opacity\", opacityFunc);\n d3.transition(selection.exit()).remove();\n },\n\n trna: function(parent, data) {\n var geneticEngine = model.geneticEngine(),\n\n codonWidth = 3 * nucleotides.WIDTH,\n offset = (codonWidth - W.TRNA) * 0.55,\n\n selection, enter, update, exit;\n\n selection = parent.select(\".top-layer\").selectAll(\".trna\")\n .data(data.trna, function(d) {\n return d.index;\n });\n // The most outer container can be used to set easily position offset.\n // While the inner g elements provides translation for \"ideal\" tRNA position\n // close to the mRNA and optional rotation.\n enter = selection.enter().append(\"g\").attr({\n \"class\": \"trna\",\n \"display\": function(d) {\n return d.index < 0 ? \"none\" : \"inline\";\n },\n \"transform\": function(d, i) {\n return \"translate(\" + model2px(nucleotides.HEIGHT * 2) + \", \" + model2px(-2.78) + \") \" +\n translateFuncInv(d, i) + \" rotate(30)\";\n }\n }).style(\"opacity\", opacityFunc);\n\n enter.append(\"g\")\n .attr(\"transform\", \"translate(0, \" + model2px(-H.A) + \")\")\n .call(nucleotides()\n .model2px(model2px)\n .sequence(function(d) {\n return geneticEngine.codonComplement(d.index);\n })\n .backbone(false)\n .randomEnter(false));\n\n enter.append(\"image\").attr({\n \"class\": \"trna-neck\",\n \"x\": model2px(0.52 * (codonWidth - W.TRNA_NECK)),\n \"y\": model2px(-H.TRNA_NECK - H.TRNA * 0.95 - H.A * 0.92),\n \"width\": model2px(W.TRNA_NECK),\n \"height\": model2px(H.TRNA_NECK),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/tRNA_neck.png\")\n });\n enter.append(\"image\").attr({\n \"class\": \"trna-base\",\n \"x\": model2px(offset),\n \"y\": model2px(-H.TRNA - H.A * 0.92),\n \"width\": model2px(W.TRNA),\n \"height\": model2px(H.TRNA),\n \"preserveAspectRatio\": \"none\",\n \"xlink:href\": resourcesUrl(imagePath() + \"/tRNA_base.png\")\n });\n\n update = d3.transition(selection)\n .attr(\"transform\", translateFuncInv)\n .style(\"opacity\", opacityFunc);\n update.select(\".trna-neck\").style(\"opacity\", function(d) {\n return d.neck;\n });\n\n exit = d3.transition(selection.exit())\n .attr(\"transform\", function(d, i) {\n return \"translate(\" + model2px(nucleotides.HEIGHT * -5) + \", \" + model2px(nucleotides.HEIGHT * -4) + \") \" +\n translateFuncInv(d, i) + \" rotate(-30)\";\n })\n .style(\"opacity\", 0);\n exit.selectAll(\".bonds\").style(\"opacity\", 0);\n exit.remove();\n },\n\n viewPort: function(parent, data) {\n var position = data.viewPort[0].position,\n ease = data.viewPort[0].ease,\n drag = data.viewPort[0].drag,\n viewport = d3.transition(d3.select(node));\n\n // This is a bit hacky. In fact we use d3 transitions to modify model,\n // not the SVG element! It could be implemented also as a MD2D modeler\n // transition (see atom transitions), but this approach fits well our\n // needs and we reuse a lot of nice d3.transition features. We could\n // also consider removing atom transitions completely and use similar\n // approach for them. As this is just one exception, leave it for now,\n // but in the future it could be useful to chose only one approach\n // (d3.transitions vs custom transitions handled by MD2D modeler).\n\n // Update dragging behavior. Limit dragging to X axis.\n model.set(\"viewPortDrag\", drag ? \"x\" : false);\n // Duck test whether viewportUpdate is a transition or selection.\n // See D3 API Reference - d3.transition(selection) returns transition\n // only when called in the context of other transition. Otherwise it\n // returns selection.\n if (viewport.duration) {\n // Transition!\n viewport.ease(ease);\n viewport.tween(\"model-update\", function() {\n var i = d3.interpolate(Number(model.properties.viewPortX), position * nucleotides.WIDTH);\n return function(t) {\n var newVal = i(t);\n if (Math.abs(model.properties.viewPortX - newVal) > 1e-3) {\n model.properties.viewPortX = newVal;\n }\n };\n });\n } else {\n // Selection! Immediate update of the model.\n model.set(\"viewPortX\", position * nucleotides.WIDTH);\n }\n },\n\n background: function(parent, data) {\n appendTranscriptionBg(parent);\n d3.transition(d3.select(node).select(\".container-background\")).attr(\"fill\", data.background[0].color);\n }\n };\n}\n\nGeneticElementsRenderer.W = W;\nGeneticElementsRenderer.H = H;\nGeneticElementsRenderer.OBJECT_NAMES = OBJECT_NAMES;\n\nexport default GeneticElementsRenderer;\n","\nexport default function StateManager(names) {\n var api,\n states = [],\n stateByName = {};\n\n api = {\n newState: function(stateName, stateDef) {\n var state = $.extend(true, {}, stateDef);\n names.forEach(function(n) {\n if (typeof state[n] === \"undefined\") {\n state[n] = [];\n }\n });\n states.push(state);\n stateByName[stateName] = state;\n },\n extendLastState: function(stateName, stateDef) {\n var prevState = states[states.length - 1],\n state = {};\n\n names.forEach(function(n) {\n state[n] = [];\n if (typeof stateDef[n] !== \"undefined\") {\n // Array expected!\n stateDef[n].forEach(function(objDef, idx) {\n state[n].push($.extend(true, {}, prevState[n][idx], objDef));\n });\n }\n });\n states.push(state);\n stateByName[stateName] = state;\n },\n getState: function(name) {\n var orgState = stateByName[name],\n state = $.extend(true, {}, orgState),\n objName;\n for (objName in state) {\n if (state.hasOwnProperty(objName)) {\n state[objName].forEach(function(d, i) {\n var value;\n for (value in d) {\n if (typeof d[value] === \"function\") {\n // Very important - evaluate function from original state\n // object, not from copy! It can be important where two\n // functions call each other. It should still work.\n d[value] = orgState[objName][i][value]();\n }\n }\n });\n }\n }\n return state;\n }\n };\n return api;\n};\n","\nimport nucleotides from 'models/md2d/views/nucleotides';\nimport GeneticElementsRenderer from 'models/md2d/views/genetic-elements-renderer';\nimport StateManager from 'common/views/state-manager';\nvar H = GeneticElementsRenderer.H,\n OBJECT_NAMES = GeneticElementsRenderer.OBJECT_NAMES;\n\n/**\n * Returns StateManager with definitions of DNA / genetic animations states.\n */\nexport default function geneticAnimStates(model) {\n var stateMgr = new StateManager(OBJECT_NAMES),\n geneticEngine = model.geneticEngine(),\n // Viewport dimensions are immutable, so save them once.\n viewPortWidth = model.get(\"viewPortWidth\"),\n viewPortHeight = model.get(\"viewPortHeight\"),\n vx = viewPortWidth * 0.5,\n vy = viewPortHeight * 0.5,\n\n lastStep;\n\n function getStep() {\n var state = geneticEngine.state();\n if (state.name === \"translation-end\") {\n return model.geneticEngine().lastTranslationStep();\n }\n lastStep = !isNaN(state.step) ? state.step : lastStep;\n return lastStep;\n }\n\n function ribosomeX() {\n return (1.65 + Math.max(0, getStep() - 2) * 3) * nucleotides.WIDTH;\n }\n\n function trnaX() {\n return this.index() * 3 * nucleotides.WIDTH;\n }\n\n stateMgr.newState(\"intro-cells\", {\n cells: [{\n translateX: vx + 0.33,\n translateY: vy,\n scale: 1\n }],\n dna1: [{\n translateX: vx + 0.33,\n translateY: vy,\n scale: 0.13,\n opacity: 0\n }],\n viewPort: [{\n position: 0,\n ease: \"cubic-in-out\",\n drag: false\n }],\n background: [{\n color: \"#55b7b2\"\n }]\n });\n stateMgr.extendLastState(\"intro-zoom1\", {\n cells: [{\n translateX: vx,\n scale: 6\n }],\n dna1: [{\n translateX: vx,\n scale: 0.78,\n opacity: 5\n }],\n dna2: [{\n translateX: vx,\n translateY: vy,\n scale: 0.5,\n opacity: 0\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"intro-zoom2\", {\n cells: [{\n scale: 24\n }],\n dna1: [{\n scale: 3.12,\n opacity: 0\n }],\n dna2: [{\n scale: 2,\n opacity: 1\n }],\n dna3: [{\n translateX: vx,\n translateY: vy,\n scale: 0.2,\n opacity: 0\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"intro-zoom3-s0\", {\n cells: [{}],\n dna2: [{\n scale: 3.8,\n opacity: 0\n }],\n dna3: [{\n scale: 0.4,\n opacity: 1\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"intro-zoom3\", {\n cells: [{}],\n dna3: [{\n scale: 0.6\n }],\n polymeraseUnder: [{\n scale: 0.2,\n translateX: -2,\n translateY: 4,\n opacity: 1\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"intro-polymerase-s0\", {\n cells: [{}],\n dna3: [{}],\n polymeraseUnder: [{\n scale: 0.8,\n translateX: vx,\n translateY: vy,\n opacity: 1\n }],\n polymeraseOver: [{\n translateX: vx,\n translateY: vy,\n scale: 0.8,\n opacity: 0\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"intro-polymerase\", {\n cells: [{}],\n dna3: [{}],\n polymeraseUnder: [{\n scale: 1,\n }],\n polymeraseOver: [{\n scale: 1,\n opacity: 1\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"dna-s0\", {\n cells: [{\n opacity: 0\n }],\n dna3: [{\n scale: 1.5\n }],\n polymeraseUnder: [{\n scale: 2.5\n }],\n polymeraseOver: [{\n scale: 2.5\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"dna\", {\n polymeraseUnder: [{\n opacity: 0\n }],\n polymeraseOver: [{\n opacity: 0\n }],\n dna3: [{\n opacity: 0\n }],\n dna: [{\n translateX: -model.geneticEngine().PRECODING_LEN * nucleotides.WIDTH,\n translateY: viewPortHeight / 2 + nucleotides.HEIGHT,\n bonds: 1\n }],\n dnaComp: [{\n translateX: -model.geneticEngine().PRECODING_LEN * nucleotides.WIDTH,\n translateY: viewPortHeight / 2 - nucleotides.HEIGHT,\n bonds: 1\n }],\n viewPort: [{\n position: -2,\n drag: true\n }],\n background: [{\n color: \"url(#transcription-bg)\"\n }]\n });\n stateMgr.extendLastState(\"transcription\", {\n dna: [{\n translateY: viewPortHeight / 2 + 2.5 * nucleotides.HEIGHT,\n bonds: 0\n }],\n dnaComp: [{\n translateY: viewPortHeight / 2 - 2.5 * nucleotides.HEIGHT,\n bonds: function() {\n var limit = getStep() + model.geneticEngine().PRECODING_LEN;\n return function(d) {\n return d.region === \"c\" && d.idx < limit ? 1 : 0;\n };\n }\n }],\n mrna: [{\n translateY: viewPortHeight / 2 - 0.5 * nucleotides.HEIGHT,\n bonds: 1,\n direction: 1\n }],\n viewPort: [{\n position: function() {\n return Math.max(0, Math.min(model.get(\"DNA\").length - 10, getStep() - 6)) - 2;\n },\n ease: \"linear\"\n }],\n background: [{}]\n });\n stateMgr.extendLastState(\"transcription-end\", {\n dna: [{}],\n dnaComp: [{\n bonds: function() {\n return function(d) {\n return d.region === \"c\" ? 1 : 0;\n };\n }\n }],\n mrna: [{}],\n polymeraseUnder: [{\n translateX: function() {\n return model.get(\"DNA\").length * nucleotides.WIDTH;\n },\n translateY: 0.5 * viewPortHeight,\n scale: 3.5,\n opacity: 0\n }],\n polymeraseOver: [{\n translateX: function() {\n return model.get(\"DNA\").length * nucleotides.WIDTH;\n },\n translateY: 0.5 * viewPortHeight,\n scale: 3.5,\n opacity: 0\n }],\n viewPort: [{\n position: function() {\n return Math.max(0, model.get(\"DNA\").length - 10) - 2;\n }\n }],\n background: [{}]\n });\n stateMgr.extendLastState(\"after-transcription\", {\n dna: [{}],\n dnaComp: [{}],\n mrna: [{}],\n polymeraseUnder: [{\n opacity: 1\n }],\n polymeraseOver: [{\n opacity: 1\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"before-translation-s0\", {\n dna: [{}],\n dnaComp: [{}],\n mrna: [{}],\n polymeraseUnder: [{\n scale: 1.4\n }],\n polymeraseOver: [{\n scale: 1.4,\n opacity: 0\n }],\n viewPort: [{}],\n background: [{\n color: \"#55b7b2\"\n }]\n });\n stateMgr.extendLastState(\"before-translation-s1\", {\n dna: [{}],\n dnaComp: [{}],\n mrna: [{}],\n polymeraseUnder: [{\n translateX: function() {\n return model.get(\"viewPortX\") + 0.5 * viewPortWidth + 5;\n }, // + 5!\n translateY: 0.5 * viewPortHeight - 2,\n scale: 0.7\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"before-translation-s2\", {\n dna: [{}],\n dnaComp: [{}],\n mrna: [{}],\n nucleus: [{\n translateX: 0.5 * viewPortWidth - 2 * nucleotides.WIDTH,\n translateY: 0.5 * viewPortHeight\n }],\n viewPort: [{\n position: -2,\n ease: \"cubic-in-out\"\n }],\n background: [{}]\n });\n stateMgr.extendLastState(\"before-translation-s3\", {\n dna: [{\n translateY: 4 * nucleotides.HEIGHT\n }],\n dnaComp: [{\n translateY: 2 * nucleotides.HEIGHT,\n bonds: 0\n }],\n mrna: [{\n bonds: 0\n }],\n nucleus: [{\n translateY: 0\n }],\n viewPort: [{}],\n background: [{\n color: function() {\n return model.get(\"backgroundColor\");\n }\n }]\n });\n stateMgr.extendLastState(\"before-translation-s4\", {\n dna: [{\n translateY: -1 * nucleotides.HEIGHT\n }],\n dnaComp: [{\n translateY: -3 * nucleotides.HEIGHT,\n }],\n mrna: [{\n translateY: 2.5 * nucleotides.HEIGHT\n }],\n nucleus: [{\n translateY: H.NUCLEUS * -0.5\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"before-translation\", {\n mrna: [{\n translateY: 1.5 * nucleotides.HEIGHT,\n direction: 2,\n bonds: 0\n }],\n ribosomeBottom: [{\n translateX: -3,\n translateY: vy,\n opacity: 0\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-s0\", {\n mrna: [{}],\n ribosomeBottom: [{\n translateX: ribosomeX,\n translateY: 1.75 * nucleotides.HEIGHT,\n opacity: 1\n }],\n ribosomeTop: [{\n translateX: -3,\n translateY: 6,\n opacity: 0\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-s1\", {\n mrna: [{}],\n ribosomeBottom: [{}],\n ribosomeTop: [{\n translateX: ribosomeX,\n translateY: 4.52 * nucleotides.HEIGHT,\n opacity: 1\n }],\n ribosomeUnder: [{\n translateX: ribosomeX,\n translateY: 3.7 * nucleotides.HEIGHT,\n opacity: 0\n }],\n ribosomeOver: [{\n translateX: ribosomeX,\n translateY: 3.7 * nucleotides.HEIGHT,\n opacity: 0\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation\", {\n mrna: [{\n bonds: function() {\n var step = getStep();\n return function(d) {\n return d.idx < 3 * (step - 2) || d.idx >= 3 * step ? 0 : 1;\n };\n }\n }],\n ribosomeUnder: [{\n opacity: 1\n }],\n ribosomeOver: [{\n opacity: 1\n }],\n trna: [{\n index: function() {\n return getStep() - 2;\n },\n translateX: trnaX,\n translateY: 2.5 * nucleotides.HEIGHT,\n neck: 0\n }, {\n index: function() {\n return getStep() - 1;\n },\n translateX: trnaX,\n translateY: 2.5 * nucleotides.HEIGHT,\n neck: 1\n }],\n viewPort: [{\n position: function() {\n return Math.max(0, 3 * (getStep() - 3)) - 2;\n },\n ease: \"linear\"\n }],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-step0\", {\n mrna: [{\n bonds: function() {\n var step = getStep();\n return function(d) {\n return d.idx < 3 * (step - 3) || d.idx >= 3 * step ? 0 : 1;\n };\n }\n }],\n ribosomeUnder: [{}],\n ribosomeOver: [{}],\n trna: [{\n index: function() {\n return getStep() - 3;\n },\n }, {\n index: function() {\n return getStep() - 2;\n },\n }, {\n index: function() {\n return getStep() - 1;\n },\n translateX: trnaX,\n translateY: 2.5 * nucleotides.HEIGHT,\n neck: 1\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-step1\", {\n mrna: [{}],\n ribosomeUnder: [{}],\n ribosomeOver: [{}],\n trna: [{}, {\n neck: 0\n }, {}],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-end-s0\", {\n mrna: [{}],\n ribosomeUnder: [{}],\n ribosomeOver: [{}],\n trna: [{\n index: function() {\n return getStep() - 2;\n }\n }, {\n index: function() {\n return getStep() - 1;\n },\n neck: 0\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-end-s1\", {\n mrna: [{\n bonds: function() {\n var step = getStep();\n return function(d) {\n return d.idx < 3 * (step - 1) || d.idx >= 3 * step ? 0 : 1;\n };\n }\n }],\n ribosomeUnder: [{}],\n ribosomeOver: [{}],\n trna: [{\n index: function() {\n return getStep() - 1;\n },\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-end-s2\", {\n mrna: [{\n bonds: 0\n }],\n ribosomeUnder: [{}],\n ribosomeOver: [{}],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-end-s3\", {\n mrna: [{}],\n ribosomeBottom: [{\n translateX: ribosomeX,\n translateY: 1.75 * nucleotides.HEIGHT,\n opacity: 1\n }],\n ribosomeTop: [{\n translateX: ribosomeX,\n translateY: 4.52 * nucleotides.HEIGHT,\n opacity: 1\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-end-s4\", {\n mrna: [{}],\n ribosomeBottom: [{\n translateY: 1.75 * nucleotides.HEIGHT - 0.3,\n }],\n ribosomeTop: [{\n translateY: 4.52 * nucleotides.HEIGHT + 0.5,\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-end-s5\", {\n mrna: [{}],\n ribosomeBottom: [{\n translateX: function() {\n return ribosomeX() + 8;\n },\n translateY: 1.75 * nucleotides.HEIGHT - 0.5,\n }],\n ribosomeTop: [{\n translateX: function() {\n return ribosomeX() + 8;\n },\n translateY: 4.52 * nucleotides.HEIGHT + 5,\n }],\n viewPort: [{}],\n background: [{}]\n });\n stateMgr.extendLastState(\"translation-end\", {\n mrna: [{}],\n viewPort: [{}],\n background: [{}]\n });\n\n return stateMgr;\n};\n"," /*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS203: Remove `|| {}` from converted for-own loops\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n/*\nSimple module which provides mutations context menu for DNA nucleotides.\n\nCSS style definition: sass/lab/_context-menu.sass\n*/\nimport $__common_jquery_svg_class from 'common/jquery-svg-class';\n// jQuery Context Menu uses jQuery functions like .addClass(), .hasClass() and .removeClass()\n// on context menu trigger elements. In our case they are SVG elements which are not supported\n// by jQuery. Include a special plugin that adds support of SVG elements to these jQuery functions.\n$__common_jquery_svg_class;\n\nexport default {\n /*\n Registers context menu for DOM elements defined by @selector.\n @model should be an instance of Modeler class (MD2D Modeler).\n @DNAComplement indicates whether this menu is registered for\n DNA or DNA complementary strand.\n */\n register(selector, model, DNAComplement, i18n) {\n // Define handler for menu show and hide events. They setup classes of\n // substitution sub-menu items. One item is hidden (X-to-X - as such\n // mutation is useless), other items receive correct classes dynamically\n // (e.g. A-to-G, A-to-C, A-to-T). They are used to set appropriate icons.\n let clickedNucleoType = null;\n const onMenuShow = function(options) {\n // Update closure variable containing current nucleotide type. As it can\n // be changed by the mutation, it's important to save it.\n clickedNucleoType = d3.select(options.$trigger[0]).datum().type;\n const subsItems = options.items[\"Substitution\"].items;\n for (let key of Object.keys(subsItems || {})) {\n const item = subsItems[key];\n key = key.split(\":\")[1];\n item.$node.addClass(`${clickedNucleoType}-to-${key}`);\n }\n // Nucleotide should glow as long as menu is open. The trigger is SVG\n // element, so use d3 to add class, jQuery won't work.\n d3.select(options.$trigger[0]).classed(\"glowing\", true);\n // Ensure that this callback returns true (required to show menu).\n return true;\n };\n const onMenuHide = function(options) {\n // Note that we can't read d3 data again and check nucleotide type, as it\n // could be changed by the mutation. The function relies on closure\n // variable set by the onMenuShow function.\n const subsItems = options.items[\"Substitution\"].items;\n for (let key of Object.keys(subsItems || {})) {\n const item = subsItems[key];\n key = key.split(\":\")[1];\n item.$node.removeClass(`${clickedNucleoType}-to-${key}`);\n }\n // Make sure that clicked nucleotide is no longer glowing. The trigger is\n // SVG element, so use d3 to remove class, jQuery won't work.\n d3.select(options.$trigger[0]).classed(\"glowing\", false);\n // Ensure that this callback returns true (required to hide menu).\n return true;\n };\n\n // Unregister the same menu first.\n $.contextMenu(\"destroy\", selector);\n // Register new one.\n $.contextMenu({\n // Selector defines DOM elements which can trigger this menu.\n selector,\n // Append to \".lab-responsive-content\" to enable dynamic font-scaling.\n appendTo: \".lab-responsive-content\",\n // Class of the menu.\n className: \"mutations-menu\",\n // Left click.\n trigger: \"left\",\n\n events: {\n show: onMenuShow,\n hide: onMenuHide\n },\n\n callback(key, options) {\n key = key.split(\":\");\n // Get nucleotide.\n const d = d3.select(options.$trigger[0]).datum();\n switch (key[0]) {\n case \"substitute\":\n return model.geneticEngine().mutate(d.idx, key[1], DNAComplement);\n case \"insert\":\n return model.geneticEngine().insert(d.idx, key[1], DNAComplement);\n case \"delete\":\n return model.geneticEngine().delete(d.idx);\n }\n },\n\n items: {\n \"Substitution\": {\n name: i18n.t(\"md2d.mutations_menu.substitution_mutation\"),\n className: \"substitution-submenu\",\n items: {\n \"substitute:A\": {\n name: \"\"\n },\n \"substitute:T\": {\n name: \"\"\n },\n \"substitute:G\": {\n name: \"\"\n },\n \"substitute:C\": {\n name: \"\"\n }\n }\n },\n \"Insertion\": {\n name: i18n.t(\"md2d.mutations_menu.insertion_mutation\"),\n className: \"insertion-submenu\",\n items: {\n \"insert:A\": {\n name: i18n.t(\"md2d.mutations_menu.insert\"),\n className: \"A\"\n },\n \"insert:T\": {\n name: i18n.t(\"md2d.mutations_menu.insert\"),\n className: \"T\"\n },\n \"insert:G\": {\n name: i18n.t(\"md2d.mutations_menu.insert\"),\n className: \"G\"\n },\n \"insert:C\": {\n name: i18n.t(\"md2d.mutations_menu.insert\"),\n className: \"C\"\n }\n }\n },\n \"delete\": {\n name: i18n.t(\"md2d.mutations_menu.deletion_mutation\")\n }\n }\n });\n // Don't return anything.\n }\n};\n"," \nimport nucleotides from 'models/md2d/views/nucleotides';\nimport GeneticElementsRenderer from 'models/md2d/views/genetic-elements-renderer';\nimport GeneticAnimStates from 'models/md2d/views/genetic-anim-states';\nimport mutationsContextMenu from 'models/md2d/views/mutations-context-menu';\nvar OBJECT_NAMES = GeneticElementsRenderer.OBJECT_NAMES;\n\n// Implement .interrupt() method that cancels all currently scheduled\n// transitions. Based on Mike's idea:\n// https://github.com/mbostock/d3/issues/1410#issuecomment-21251284\nd3.selection.prototype.interrupt = function() {\n return this.each(function() {\n var lock = this.__transition__;\n if (lock) {\n var active = -1;\n for (var id in lock)\n if ((id = +id) > active) active = id;\n lock.active = active + 1;\n }\n });\n};\n\nfunction GeneticRenderer(modelView, model) {\n var api,\n node = modelView.node,\n model2px = modelView.model2px,\n model2pxInv = modelView.model2pxInv,\n viewportG = d3.select(node).select(\".below-atoms\"),\n\n g = null,\n currentTrans = null,\n state = null,\n prevAnimState = null,\n prevAnimStep = null,\n suppressViewport = false,\n transitionInProgress = false,\n animStateInProgress = null,\n\n stateMgr = new GeneticAnimStates(model),\n objectRenderer = new GeneticElementsRenderer(node, model2px, model2pxInv, model),\n\n transitionFunction;\n\n function init() {\n // Redraw DNA / mRNA when DNA state is changed.\n model.geneticEngine().on(\"change\", render);\n // Play animation when there is a \"transition\" event.\n model.geneticEngine().on(\"transition\", transition);\n\n // When DNAMutations is changed, cleanup & render again.\n model.addPropertiesListener([\"DNAMutations\"], setup);\n\n // When viewPortX is changed render DNA and mRNA again. Also center\n // protein while in 'translation-end' state.\n model.addPropertiesListener([\"viewPortX\"], function() {\n // state.name === \"transcription\" && transitionInProgress is an icky\n // workaround for the problem with transitions when new nucleotide is\n // entering. Rendering performed by this function breaks the\n // animation. However, when state === \"transcription\", we actually doesn't\n // have to render DNA and mRNA, as it will be rendered anyway.\n if (!g || !model.get(\"DNA\") || (state.name === \"transcription\" && transitionInProgress)) return;\n\n // state.name values are subset of all animation states. We define\n // more animation states than we publish for author / users\n // (animations with -s0, -s1, (...) suffixes).\n var data = stateMgr.getState(animStateInProgress || state.name);\n\n objectRenderer.mrna(g, data, true);\n objectRenderer.dna(g, data, true);\n objectRenderer.dnaComp(g, data, true);\n\n if (!transitionInProgress &&\n state.name === \"translation-end\" &&\n model.getNumberOfAtoms() > 0) {\n model.geneticEngine().centerProtein();\n }\n });\n\n // Register mutation menus for DNA and DNA complement. Note that\n // jQuery.contextMenu uses event delegation, so it's fully enough to\n // register this menu only once, even before these elements exists.\n mutationsContextMenu.register('[class~=\"dna\"] [class~=\"clickable-nucleo\"]', model, false, modelView.i18n);\n mutationsContextMenu.register('[class~=\"dna-comp\"] [class~=\"clickable-nucleo\"]', model, true, modelView.i18n);\n }\n\n /**\n * Setups genetic renderer. It will be called when new parent view is created\n * or reseted.\n *\n * @private\n */\n function setup() {\n state = model.geneticEngine().state();\n\n // Cleanup.\n cancelTransitions();\n viewportG.selectAll(\"g.genetics\").remove();\n g = null;\n\n if (!model.get(\"DNA\")) {\n // When DNA is not defined (=== \"\", undefined or null) genetic\n // renderer has nothing to do.\n return;\n }\n\n // Create a new container.\n g = viewportG.insert(\"g\", \".image-container-below\").attr(\"class\", \"genetics\");\n g.append(\"g\").attr(\"class\", \"background-layer\");\n g.append(\"g\").attr(\"class\", \"under-dna-layer\");\n g.append(\"g\").attr(\"class\", \"dna-layer\");\n g.append(\"g\").attr(\"class\", \"over-dna-layer\");\n g.append(\"g\").attr(\"class\", \"top-layer\");\n\n render();\n }\n\n /**\n * Renders DNA-related graphics using \"DNA\" and \"DNAState\"\n * options of the model.\n */\n function render(suppressViewportUpdate) {\n suppressViewport = suppressViewportUpdate;\n\n // Update DNA state.\n state = model.geneticEngine().state();\n\n cancelTransitions();\n\n // Force rendering of all objects when render was called before previous\n // transition ended. This means that we can be somewhere between states\n // and it's impossible to detect which objects should be rendered using\n // previous and current animation state.\n renderState(g, state.name, null, transitionInProgress);\n\n transitionInProgress = false;\n }\n\n /**\n * Renders animation state. It updates all objects from previous and new state.\n *\n * You can pass d3.selection or d3.transition as \"parent\" argument to decide whether\n * new state should be rendered immediately or using transition.\n *\n * @private\n * @param {d3.selection OR d3.transition} parent d3.selection or d3.transition object.\n * @param {String} animState animation state name.\n * @param {function} onStartCallback callback executed at the beginning of transition\n * or immediately if parent isn't a transition (optional).\n * @param {boolean} forceAll forces re-rendering of all scene objects (optional).\n */\n function renderState(parent, animState, onStartCallback, forceAll) {\n var data = stateMgr.getState(animState),\n prevAnimStateData = prevAnimState ? stateMgr.getState(prevAnimState) : null;\n\n // TODO: make it simpler.\n function shouldRenderObj(name) {\n var inData = !!data[name].length,\n inPrevData = !!(prevAnimStateData && prevAnimStateData[name].length);\n\n if (suppressViewport && name === \"viewPort\") {\n // Viewport update can be disabled using special variable.\n return false;\n } else if (forceAll || inData || inPrevData) {\n // Render all objects from current and previous states.\n return true;\n }\n return false;\n }\n\n function render() {\n parent.each(function() {\n var parent = d3.select(this);\n OBJECT_NAMES.forEach(function(name) {\n if (shouldRenderObj(name)) {\n objectRenderer[name](parent, data);\n }\n });\n });\n if (onStartCallback) onStartCallback(parent);\n }\n\n if (parent.duration) {\n // Transition.\n parent.each(\"start.transition-name\", function() {\n animStateInProgress = animState;\n render();\n });\n parent.each(\"end.transition-name\", function() {\n animStateInProgress = null;\n });\n } else {\n render();\n }\n\n prevAnimState = animState;\n prevAnimStep = state.step || 0; // when undefined or NaN\n }\n\n /**\n * Returns a new, chained transition.\n * This transition will be executed when previous one ends.\n *\n * @private\n * @return {d3 transtion} d3 transtion object.\n */\n function nextTrans(forceNew) {\n var newTrans;\n // TODO: this first check is a workaround.\n // Ideal scenario would be to call always:\n // currentTrans[name] = currentTrans[name].transition();\n // but it seems to fail when transition has already ended.\n if (!forceNew && currentTrans && currentTrans.node().__transition__) {\n // Some transition is currently in progress, chain a new transition.\n newTrans = currentTrans.transition();\n } else {\n // All transitions ended, just create a new one.\n newTrans = g.transition();\n }\n currentTrans = newTrans;\n return newTrans;\n }\n\n function cancelTransitions() {\n var d3node = d3.select(node);\n var g = d3node.select(\"g.genetics\");\n if (!g.empty() && g.node().__transition__) {\n // Note that some transitions can be applied to elements that live outside g.genetics\n // element, e.g. background. So, it isn't enough to use d3.selectAll(\"g.genetics *\").\n d3node.selectAll(\"g.genetics, g.genetics *\").interrupt();\n d3node.select(\".container-background\").interrupt(); // background changes\n currentTrans = null;\n animStateInProgress = null;\n }\n }\n\n /**\n * Triggers animation state transition.\n */\n function transition(transitionName, suppressViewportUpdate) {\n transitionInProgress = true;\n suppressViewport = suppressViewportUpdate;\n\n // Update DNA state.\n state = model.geneticEngine().state();\n\n if (Number(transitionName.split(\":\")[1]) > 0) {\n // e.g. translation:5 or transcription:7\n // We have one common transition function for all \"transcription:1\" to\n // \"transcription:N\" transitions called \"transcription\", as well as\n // one common transition function for all \"translation:1\" to\n // \"translation:N\" transitions called \"translation\".\n transitionName = transitionName.split(\":\")[0];\n }\n\n transitionFunction[transitionName]();\n\n currentTrans.each(\"end.trans-end\", function() {\n transitionInProgress = false;\n // Notify engine that transition has ended.\n model.geneticEngine().transitionEnded();\n });\n }\n\n /**\n * Definition of all transition functions.\n * @private\n * @type {Object}\n */\n transitionFunction = {\n \"dna-updated\": function dnaUpdated() {\n // Special state - render current animation state again,\n // as model was updated.\n var t = nextTrans(true).ease(\"cubic-in-out\").duration(800);\n renderState(t, state.name, null, true);\n },\n\n \"intro-zoom1\": function introZoom1() {\n var t = nextTrans(true).ease(\"cubic\").duration(3000);\n renderState(t, \"intro-zoom1\");\n },\n\n \"intro-zoom2\": function introZoom2() {\n var t = nextTrans(true).ease(\"linear\").duration(3000);\n renderState(t, \"intro-zoom2\");\n },\n\n \"intro-zoom3\": function introZoom3() {\n var t = nextTrans(true).ease(\"linear\").duration(2000);\n renderState(t, \"intro-zoom3-s0\");\n\n t = nextTrans().ease(\"quad-out\").duration(3300);\n renderState(t, \"intro-zoom3\");\n },\n\n \"intro-polymerase\": function introPolymerase() {\n var t = nextTrans(true).ease(\"quad-out\").duration(3000);\n renderState(t, \"intro-polymerase-s0\");\n\n t = nextTrans().ease(\"cubic-in-out\").duration(1000);\n renderState(t, \"intro-polymerase\");\n },\n\n \"dna\": function dna() {\n var t = nextTrans(true).duration(2000);\n renderState(t, \"dna-s0\");\n\n\n t = nextTrans().duration(1000);\n renderState(t, \"dna\", function(t) {\n // Make some transitions almost immediate.\n t.selectAll(\".nucleotide\").duration(5);\n t.selectAll(\".container-background\").duration(5);\n });\n },\n\n \"transcription:0\": function transcription0() {\n var t = nextTrans(true).duration(1500);\n renderState(t, \"transcription\", function(t) {\n // Reselect bonds transition, change duration to 250.\n t.selectAll(\".bonds\").duration(250);\n });\n },\n\n \"transcription\": function transcription() {\n var t = nextTrans(true).duration(500);\n renderState(t, \"transcription\", function(t) {\n // Reselect bonds transition, change duration to ease to cubic.\n t.selectAll(\".bonds\").ease(\"cubic\");\n });\n },\n\n \"transcription-end\": function transcriptionEnd() {\n var t = nextTrans(true).duration(500);\n renderState(t, \"transcription-end\", function(t) {\n // Reselect bonds transition, change duration to ease to cubic.\n t.selectAll(\".bonds\").ease(\"cubic\");\n });\n },\n\n \"after-transcription\": function afterTranscription() {\n var t = nextTrans(true).ease(\"cubic-in-out\").duration(700);\n renderState(t, \"after-transcription\");\n },\n\n \"before-translation\": function beforeTranslation() {\n var t = nextTrans(true).ease(\"cubic-in-out\").duration(1000);\n renderState(t, \"before-translation-s0\", function(t) {\n t.selectAll(\".container-background\").duration(1);\n });\n\n t = nextTrans().ease(\"cubic-in-out\").duration(1500);\n renderState(t, \"before-translation-s1\");\n\n t = nextTrans().ease(\"cubic-in-out\").duration(1500);\n renderState(t, \"before-translation-s2\");\n\n t = nextTrans().ease(\"cubic\").duration(1000);\n renderState(t, \"before-translation-s3\", function(t) {\n t.selectAll(\".bonds\").duration(250);\n t.selectAll(\".container-background\").duration(1);\n });\n\n t = nextTrans().ease(\"cubic-out\").duration(1000);\n renderState(t, \"before-translation-s4\");\n\n t = nextTrans().ease(\"cubic-out\").duration(500);\n renderState(t, \"before-translation\");\n },\n\n \"translation:0\": function translation0() {\n var t = nextTrans(true).ease(\"cubic-in-out\").duration(1000);\n renderState(t, \"translation-s0\");\n\n t = nextTrans().ease(\"cubic-in-out\").duration(1000);\n renderState(t, \"translation-s1\");\n\n t = nextTrans().ease(\"cubic-in-out\").duration(500);\n renderState(t, \"translation\");\n },\n\n \"translation\": function translation() {\n var geneticEngine = model.geneticEngine(),\n codonIdx = state.step - 1,\n newAADuration = 1000,\n shiftDuration = 500,\n t;\n\n t = nextTrans(true).duration(newAADuration);\n renderState(t, \"translation-step0\", function(t) {\n t.selectAll(\".bonds\").ease(\"cubic\");\n geneticEngine.translationStepStarted(codonIdx, 1.45 + codonIdx * 3 * nucleotides.WIDTH, 3.95,\n 0.53 + codonIdx * 3 * nucleotides.WIDTH, 1.57, newAADuration);\n });\n\n t = nextTrans().duration(shiftDuration);\n renderState(t, \"translation-step1\", function(t) {\n t.selectAll(\".trna-neck\").duration(150);\n geneticEngine.shiftAminoAcids(codonIdx, 2 * nucleotides.WIDTH, shiftDuration);\n });\n\n // This will remove 3rd tRNA.\n if (codonIdx > 0) {\n t = nextTrans().duration(900);\n renderState(t, \"translation\", function(t) {\n geneticEngine.connectAminoAcid(codonIdx);\n t.selectAll(\".bonds\").duration(150);\n });\n }\n },\n\n \"translation-end\": function translationEnd() {\n var geneticEngine = model.geneticEngine(),\n aaCount = model.getNumberOfAtoms(),\n t;\n\n if (aaCount >= 1) {\n t = nextTrans(true).duration(150);\n renderState(t, \"translation-end-s0\");\n\n t = nextTrans().duration(800);\n renderState(t, \"translation-end-s1\", function(t) {\n geneticEngine.translationCompleted();\n t.selectAll(\".bonds\").duration(150);\n });\n\n t = nextTrans().duration(800);\n renderState(t, \"translation-end-s2\", function(t) {\n t.selectAll(\".bonds\").duration(150);\n });\n\n t = nextTrans().duration(500);\n renderState(t, \"translation-end-s3\");\n } else {\n t = nextTrans(true).duration(500);\n renderState(t, \"translation-end-s3\");\n }\n\n t = nextTrans().duration(300);\n renderState(t, \"translation-end-s4\");\n\n t = nextTrans().duration(1000);\n renderState(t, \"translation-end-s5\");\n\n t = nextTrans().duration(700);\n renderState(t, \"translation-end\", function() {\n geneticEngine.centerProtein(700);\n });\n }\n };\n\n api = {\n setup: setup,\n render: render\n };\n\n init();\n return api;\n}\n\nexport default GeneticRenderer;\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS205: Consider reworking code to avoid use of IIFEs\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n/*\n A simple function to wrap a string of text into an SVG text node of a given width\n by creating tspans and adding words to them until the computedTextLength of the\n tspan is greater than the desired width. Returns the number of lines.\n\n If no wrapping is desired, use maxWidth=-1\n*/\n\nlet wrapSVGText;\nconst svgUrl = \"http://www.w3.org/2000/svg\";\n\nexport default wrapSVGText = (window.wrapSVGText = function(text, svgTextNode, maxWidth, x, dy) {\n // collect dashes\n let dashArray, newlinemode, width, words;\n const dashes = /-/gi;\n\n // if text contains newlines\n if (text.search(\"\\n\") > 0) {\n // then split on newlines\n words = text.split(\"\\n\");\n newlinemode = true;\n dashArray = [];\n } else {\n // else split on spaces or dashes\n words = text.split(/[\\s-]/);\n newlinemode = false;\n dashArray = (() => {\n let result;\n const result1 = [];\n while ((result = dashes.exec(text))) {\n result1.push(result.index);\n }\n return result1;\n })();\n }\n\n let curLineLength = 0;\n let computedTextLength = 0;\n let numLines = 1;\n let widestWidth = 0;\n\n // maxWidth = Infinity if maxWidth is -1\n\n for (let i = 0; i < words.length; i++) {\n var line, tempText, textNode, tspanNode;\n const word = words[i];\n curLineLength += word.length + 1;\n\n if ((i === 0) || newlinemode || ((maxWidth > 0) && (computedTextLength > maxWidth))) { // create new tspan\n var lastWord;\n if (i > 0) {\n if (newlinemode) {\n widestWidth = Math.max(tspanNode.getComputedTextLength(), widestWidth);\n numLines++;\n } else {\n tempText = tspanNode.firstChild.nodeValue;\n if (tempText.length > (words[i - 1].length + 1)) {\n // remove the last word added and place it on the next line\n lastWord = tempText.slice(tempText.length - words[i - 1].length - 1);\n tspanNode.firstChild.nodeValue = tempText.slice(0, (tempText.length - words[i - 1].length - 1));\n } else if (tempText.length === (words[i - 1].length + 1)) {\n tspanNode.firstChild.nodeValue = tempText.slice(0, (tempText.length - 1));\n }\n widestWidth = Math.max(tspanNode.getComputedTextLength(), widestWidth);\n numLines++;\n }\n }\n\n tspanNode = document.createElementNS(svgUrl, \"tspan\");\n tspanNode.setAttributeNS(null, \"x\", x);\n tspanNode.setAttributeNS(null, \"dy\", i === 0 ? 0 : dy);\n\n textNode = document.createTextNode(line);\n tspanNode.appendChild(textNode);\n svgTextNode.appendChild(tspanNode);\n\n if (~dashArray.indexOf(curLineLength - 1)) {\n line = word + \"-\";\n } else {\n line = word + \" \";\n }\n\n if (i && lastWord) {\n line = lastWord + line;\n }\n\n } else {\n if (~dashArray.indexOf(curLineLength - 1)) {\n line += word + \"-\";\n } else {\n line += word + \" \";\n }\n }\n\n // Set text node value to current sentence, and work out the length\n tspanNode.firstChild.nodeValue = line;\n computedTextLength = tspanNode.getComputedTextLength();\n if (newlinemode) {\n widestWidth = Math.max(tspanNode.getComputedTextLength(), widestWidth);\n }\n\n if (!newlinemode) {\n // awkward, have to do this one last time for the last word\n if (i && (i === (words.length - 1)) && (maxWidth > 0) && (computedTextLength > maxWidth)) {\n tempText = tspanNode.firstChild.nodeValue;\n tspanNode.firstChild.nodeValue = tempText.slice(0, (tempText.length - words[i].length - 1));\n\n tspanNode = document.createElementNS(svgUrl, \"tspan\");\n tspanNode.setAttributeNS(null, \"x\", x);\n tspanNode.setAttributeNS(null, \"dy\", dy);\n\n textNode = document.createTextNode(words[i]);\n tspanNode.appendChild(textNode);\n svgTextNode.appendChild(tspanNode);\n numLines++;\n }\n }\n }\n\n if (widestWidth === 0) {\n widestWidth = svgTextNode.childNodes[0].getComputedTextLength();\n }\n if (maxWidth > widestWidth) {\n width = maxWidth;\n } else {\n width = widestWidth;\n }\n\n return {\n lines: numLines,\n width,\n textWidth: widestWidth\n };\n});","\nexport default {\n /**\n * Creates a new radial gradient or updates existing one.\n *\n * @param {[type]} id\n * @param {[type]} lightColor\n * @param {[type]} medColor\n * @param {[type]} darkColor\n * @param {[type]} container SVG container which will be used to store gradients definitions.\n * @return {string} Gradient URL string, e.g. \"url(#green-gradient)\"\n */\n createRadialGradient: function(id, lightColor, medColor, darkColor, container) {\n var gradientUrl, defs, gradient;\n defs = container.select(\"defs\");\n if (defs.empty()) {\n // Store gradients in 'defs' element.\n defs = container.append(\"defs\");\n }\n\n gradient = defs.select(\"#\" + id);\n\n if (gradient.empty()) {\n // Create a new gradient.\n gradient = defs.append(\"radialGradient\").attr(\"id\", id).attr(\"cx\", \"50%\").attr(\"cy\", \"47%\").attr(\"r\", \"53%\").attr(\"fx\", \"35%\").attr(\"fy\", \"30%\");\n } else {\n gradient.selectAll(\"stop\").remove()\n }\n\n gradient.append(\"stop\").attr(\"stop-color\", lightColor).attr(\"offset\", \"0%\");\n gradient.append(\"stop\").attr(\"stop-color\", medColor).attr(\"offset\", \"40%\");\n gradient.append(\"stop\").attr(\"stop-color\", darkColor).attr(\"offset\", \"80%\");\n gradient.append(\"stop\").attr(\"stop-color\", medColor).attr(\"offset\", \"100%\");\n\n gradientUrl = \"url(#\" + id + \")\";\n // Store main color (for now - dark color) of the gradient.\n // Useful for radial bonds. Keys are URLs for convenience.\n this.mainColorOfGradient[gradientUrl] = darkColor;\n return gradientUrl;\n },\n\n /**\n * Hash which defines the main color of a given gradient.\n * Note that for convenience, keys are in forms of URLs (e.g. url(#some-gradient)).\n * e.g. useful for MD2D radial bonds, which can adjust their color to gradient.\n */\n mainColorOfGradient: {},\n /**\n * NOT INTENDED FOR INDEPENDENT USE\n * Resolves mismatched parentheses in a string.\n * Optionally, removes or \"peels\" the outermost pair of parenthesis\n *\n * @param {string} string String to resolve\n * @param {boolean} peel Whether or not to \"peel\" the outermost parenthesis pair.\n * @return {string} Resolved string\n */\n settleParens: function(string, peel) {\n var end, inparens, firstparen;\n inparens = false;\n string = string.split(\"\")\n for (end = 0; end < string.length; end++) {\n if (inparens) {\n if (string[end] == \")\") {\n inparens = false;\n } else if (string[end] == \"(\") {\n string[firstparen] = \" \";\n firstparen = end;\n }\n } else {\n if (string[end] == \"(\") {\n if (peel) {\n string[end] = \" \"\n peel = false\n } else {\n inparens = true;\n firstparen = end;\n }\n } else if (string[end] == \")\") {\n string[end] = \" \";\n }\n }\n }\n return string.join(\"\").replace(/\\s+/, \" \").trim()\n },\n /**\n * NOT INTENDED FOR INDEPENDENT USE\n * Splits a string by space or comma, keeping parentheses intact\n * Then, parses each \"word\" for possible meanings\n * Optionally, removes or \"peels\" the outermost pair of parenthesis before splitting\n *\n * @param {string} string String to split\n * @param {boolean} peel Whether or not to \"peel\" the outermost parenthesis pair.\n * @return {Array.} Array of \"words\"\n */\n smartSplit: function(string, peel) {\n var start, end, result, inparens, temp;\n string = this.settleParens(string, peel);\n inparens = false;\n result = [];\n for (end = 1; end < string.length; end++) {\n if (inparens) {\n if (string[end] == \")\") {\n inparens = false;\n }\n continue;\n }\n if (string[end] == \",\" || string[end] == \" \") {\n temp = string.slice(start, end).trim()\n if (temp.length > 0) {\n result.push(this.parseWord(temp));\n }\n start = end + 1;\n } else if (string[end] == \"(\") {\n inparens = true;\n }\n }\n if (end == string.length) {\n result.push(this.parseWord(string.slice(start, end).trim()));\n }\n return result;\n },\n /**\n * NOT INTENDED FOR INDEPENDENT USE\n * Finds all possible meanings of a given word, storing those\n * as properties into a String representation of the word\n *\n * @param {string} word Word to find the meaning of\n * @return {Object.} Word as a String object and properties set\n */\n parseWord: function(word) {\n var result, temp;\n result = new String(word);\n if (word.search(/(^|[^a-zA-Z])li?n?e?a?r?($|[^a-zA-Z])/) != -1) {\n result.isLinear = true;\n }\n if (word.search(/(^|[^a-zA-Z])ra?d?i?a?l?($|[^a-zA-Z])/) != -1) {\n result.isRadial = true;\n }\n if (word.search(/(^|[^a-zA-Z])gr?a?d?i?e?n?t?($|[^a-zA-Z])/) != -1) {\n result.isGradient = true;\n }\n if (word.search(/(\\(|\\))/) != -1) {\n result.isParens = true;\n return result;\n }\n temp = parseFloat(word);\n if (!isNaN(temp)) {\n result.asNumber = temp;\n }\n if (word.search(/(^|[^a-zA-Z])de?g?r?e?e?s?($|[^a-zA-Z])/) != -1) {\n result.isDegrees = true;\n }\n if (word.search(/(^|[^a-zA-Z])ri?g?h?t?($|[^a-zA-Z])/) != -1) {\n result.isRight = true;\n }\n if (word.search(/(^|[^a-zA-Z])le?f?t?($|[^a-zA-Z])/) != -1) {\n result.isLeft = true;\n }\n if (word.search(/(^|[^a-zA-Z])(t|u)o?p?($|[^a-zA-Z])/) != -1) {\n result.isTop = true;\n }\n if (word.search(/(^|[^a-zA-Z])bo?t?t?o?m?($|[^a-zA-Z])/) != -1) {\n result.isBottom = true;\n }\n if (word.search(/(^|[^a-zA-Z])re?pe?a?t?($|[^a-zA-Z])/) != -1) {\n result.isRepeat = true;\n }\n if (word.search(/(^|[^a-zA-Z])re?fl?e?c?t?($|[^a-zA-Z])/) != -1) {\n result.isReflect = true;\n }\n return result;\n },\n /**\n * NOT INTENDED FOR INDEPENDENT USE\n * Given an array containing stop objects of color data and optionally offset data,\n * interpolate values for stops without offsets.\n * e.g.\n * [{\"color\":\"red\",\"offset\":0},{\"color\":\"yellow\"},{\"color\":\"blue\",\"offset\":100}]\n * would return\n * [{\"color\":\"red\",\"offset\":0},{\"color\":\"yellow\",\"offset\":50},{\"color\":\"blue\",\"offset\":100}]\n *\n * @param {Array.>} stops Array of objects containing color data and optionally offset data\n * @return {Array.>} Array of objects containing both color and offset data\n */\n interpolateStops: function(stops) {\n var i, j, k, start, end, step;\n if (stops.length == 0) {\n return stops;\n }\n if (!(\"offset\" in stops[0])) {\n stops[0].offset = 0;\n }\n if (stops.length == 1) {\n return stops;\n }\n if (!(\"offset\" in stops[stops.length - 1])) {\n stops[stops.length - 1].offset = 100;\n }\n for (i = 2; i < stops.length; i++) {\n if (\"offset\" in stops[i] && !(\"offset\" in stops[i - 1])) {\n start = 0;\n end = stops[i].offset;\n for (j = i - 2; j >= 0; j--) {\n if (\"offset\" in stops[j]) {\n start = stops[j].offset;\n break;\n }\n }\n step = (end - start) / (i - j)\n for (var k = j + 1; k < i; k++) {\n stops[k].offset = start + step * (k - j);\n }\n }\n }\n return stops\n },\n /**\n * NOT INTENDED FOR INDEPENDENT USE: use gradients.parse instead\n * Parses and returns any color or gradient that a given string contains\n * as a gradient/color object of the form\n * {\"color\":\"red\"}\n * or\n * {\"gradient\":\"linear\",\"direction\":0,\"stops\":[{\"color\":\"red\",\"offset\":0}, ... ]}\n *\n * @param {string} string String\n * @return {Object} Gradient/color object\n */\n fullParse: function(string) {\n //Preliminary gradient verification\n string = string.trim().toLowerCase();\n if (string.search(/[^#0-9a-zA-Z-]/) == -1) {\n return {\n \"color\": string\n };\n }\n var stops, words, direction, linear, radial, i, gradient, remove, x_direction, y_direction, repeat;\n\n //String preprocessing\n string = string.replace(/[\\n\\r:;]/g, \" \").replace(/\\/\\*.*\\*\\/$/, \"\").replace(/\\{\\[/, \"(\").replace(/\\}\\]/, \")\").replace(/[^a-zA-Z0-9%#\\-\\(\\)\\., ]*/g, \"\").replace(/\\s*-\\s+/g, \"-\").replace(/\\s*\\(/g, \"(\").replace(/\\s+/g, \" \");\n words = this.smartSplit(string, false);\n gradient = {};\n\n //Remove any irrelevant parentheses\n for (i = 0; i < words.length; i++) {\n if (words[i].isParens === true && (words[i].isGradient === true || words[i].isLinear === true || words[i].isRadial === true)) {\n words.splice.apply(words, [i, 1].concat(this.smartSplit(words[i], true)))\n }\n }\n\n //Parse gradient metadata\n direction = false;\n radial = false;\n linear = false;\n repeat = false;\n x_direction = 0;\n y_direction = 0;\n for (i = 0; i < words.length; i++) {\n remove = false\n if (words[i].isLeft === true) {\n x_direction -= 1;\n remove = true;\n } else if (words[i].isRight === true) {\n x_direction += 1;\n remove = true;\n }\n if (words[i].isTop === true) {\n y_direction += 1;\n remove = true;\n } else if (words[i].isBottom === true) {\n y_direction -= 1;\n remove = true;\n }\n if (words[i].isRadial === true && !(words[i].isRight === true)) {\n radial = true;\n remove = true;\n }\n if (words[i].isLinear === true && !(words[i].isLeft === true)) {\n linear = true;\n remove = true;\n }\n if (\"asNumber\" in words[i]) {\n if (words[i].isDegrees === true || i + 1 < words.length && words[i + 1].isDegrees === true) {\n if (direction === false) {\n direction = words[i].asNumber;\n }\n remove = true;\n }\n }\n if (words[i].isRepeat === true) {\n repeat = \"repeat\";\n remove = true;\n } else if (words[i].isReflect === true) {\n repeat = \"reflect\";\n remove = true;\n }\n if (remove || words[i].isDegrees === true || words[i].isGradient === true) {\n words.splice(i, 1);\n i--;\n }\n }\n if (direction === false && (x_direction != 0 || y_direction != 0)) {\n direction = (180 * Math.atan2(y_direction, x_direction) / Math.PI % 360);\n }\n\n //Parse the stops\n stops = [];\n for (i = 0; i < words.length; i++) {\n if (!(\"asNumber\" in words[i])) {\n if (i + 1 < words.length && (\"asNumber\" in words[i + 1])) {\n stops.push({\n color: words[i],\n offset: words[i + 1].asNumber\n })\n words.splice(i, 2)\n } else {\n stops.push({\n color: words[i]\n })\n words.splice(i, 1)\n }\n i--\n }\n }\n if (stops.length == 1) {\n return {\n \"color\": stops[0].color\n };\n }\n if (stops.length == 0) {\n return {\n \"color\": \"none\"\n };\n }\n this.interpolateStops(stops);\n\n //Parse leftover words\n for (i = 0; i < words.length; i++) {\n if (words[i].isNumber === true) {\n if (direction === false) {\n direction = words[i].asNumber;\n }\n }\n }\n\n //Build and return gradient object\n if (radial && !linear) {\n direction = false\n gradient.gradient = \"radial\"\n } else {\n if (direction === false) {\n direction = 0\n }\n direction %= 360;\n if (direction < 0) {\n direction += 360;\n }\n gradient.gradient = \"linear\"\n gradient.direction = direction\n }\n if (repeat !== false) {\n gradient.repeat = repeat\n }\n gradient.stops = stops;\n gradient.standard = this.toStandardForm(gradient);\n return gradient;\n },\n /**\n * Parses and returns any color or gradient that a given string contains\n * as a gradient/color object of the form\n * {\"color\":\"red\"}\n * or\n * {\"gradient\":\"linear\",\"direction\":0,\"stops\":[{\"color\":\"red\",\"offset\":0}, ... ]}\n *\n * A string given in standard form is faster to parse. An arbitrary string will use gradient.fullParse.\n *\n * @param {string} string String\n * @return {Object} Gradient/color object\n */\n parse: function(string) {\n string = string.trim().toLowerCase().replace(/\\s+/g, \" \")\n if (string.search(/ /) == -1) {\n return {\n \"color\": string,\n \"standard\": string\n };\n }\n var stops, direction, gradient, type, s, offset, restandardize;\n stops = string.split(\" \");\n gradient = {}\n type = stops.shift()\n if (type == \"linear\" || type == \"radial\") {\n gradient.gradient = type;\n } else {\n return this.fullParse(string);\n }\n if (type == \"linear\") {\n direction = parseFloat(stops.shift());\n if (isNaN(direction)) {\n return this.fullParse(string);\n }\n direction %= 360;\n if (direction < 0) {\n direction += 360;\n }\n gradient.direction = direction;\n restandardize = true;\n }\n gradient.stops = []\n if (stops.length % 2 == 0) {\n for (s = 0; s < stops.length; s += 2) {\n offset = parseFloat(stops[s + 1])\n if (isNaN(offset)) {\n return this.fullParse(string);\n }\n gradient.stops.push({\n \"color\": stops[s],\n \"offset\": offset\n });\n }\n } else {\n return this.fullParse(string);\n }\n if (restandardize) {\n gradient.standard = this.toStandardForm(gradient);\n } else {\n gradient.standard = string;\n }\n return gradient;\n },\n /**\n * Applies a given gradient/color to the background of a given element\n *\n * @param {Object} color A gradient/color object created by gradients.parse\n * @param {Object} element The specified DOM element to apply the background to\n */\n toCSS: function(color, element) {\n var temp, i;\n if (\"color\" in color) {\n element.style.backgroundColor = color.color.length ? color.color : \"inherit\"\n element.style.backgroundImage = \"none\"\n } else {\n temp = (color.gradient == \"radial\" ? \"-webkit-radial-gradient(ellipse,\" : \"-webkit-linear-gradient(\" + color.direction + \"deg, \");\n for (i = 0; i < color.stops.length; i++) {\n temp += color.stops[i].color + \" \" + color.stops[i].offset + \"%\";\n if (i < color.stops.length - 1) {\n temp += \",\";\n }\n }\n temp += \")\";\n element.style.backgroundColor = \"none\";\n element.style.backgroundImage = temp;\n }\n },\n /**\n * Converts a given gradient/color to standard form\n *\n * @param {Object} color A gradient/color object created by gradients.parse\n * @return {string} The converted standard form string\n */\n toStandardForm: function(color) {\n var temp, i;\n if (\"color\" in color) {\n color.standard = color.color;\n return color.color;\n } else {\n temp = color.gradient + \" \" + (color.gradient == \"linear\" ? color.direction + \"deg \" : \"\");\n for (i = 0; i < color.stops.length; i++) {\n temp += color.stops[i].color + \" \" + color.stops[i].offset + \"%\";\n if (i < color.stops.length - 1) {\n temp += \" \";\n }\n }\n color.standard = temp;\n return temp;\n }\n },\n /**\n * Converts a given gradient/color to an SVG fill, creating a gradient definition if necessary\n *\n * @param {Object} color A gradient/color object created by gradients.parse\n * @param {Object} continer The container to append the gradient definitions to\n * @return {string} The converted string for use in SVG fill\n */\n toSVG: function(color, container) {\n if (color.color) {\n return color.color;\n }\n var gradientUrl, defs, gradient, id, c, x0, y0, xt, yt, args, stop;\n defs = container.select(\"defs\");\n if (defs.empty()) {\n // Store gradients in \"defs\" element.\n defs = container.append(\"defs\");\n }\n\n id = color.standard.replace(/[^a-z0-9]/g, \"\");\n gradient = defs.select(\"#\" + id);\n\n if (gradient.empty()) {\n // Create a new gradient.\n if (color.gradient == \"linear\") {\n xt = -Math.cos(Math.PI * color.direction / 180);\n yt = -Math.sin(Math.PI * color.direction / 180);\n if (Math.abs(yt) > Math.abs(xt)) {\n x0 = xt * Math.abs(50 / yt);\n y0 = (yt < 0 ? -1 : 1) * 50;\n } else {\n x0 = (xt < 0 ? -1 : 1) * 50;\n y0 = yt * Math.abs(50 / xt);\n }\n gradient = defs.append(\"linearGradient\").attr(\"id\", id).attr(\"x1\", (50 + x0) + \"%\").attr(\"y1\", (50 + y0) + \"%\").attr(\"x2\", (50 - x0) + \"%\").attr(\"y2\", (50 - y0) + \"%\");\n } else {\n gradient = defs.append(\"radialGradient\").attr(\"id\", id).attr(\"cx\", \"50%\").attr(\"cy\", \"50%\").attr(\"r\", \"50%\").attr(\"fx\", \"50%\").attr(\"fy\", \"50%\");\n }\n } else {\n // Gradient exists. Using it.\n return \"url(#\" + id + \")\";\n }\n\n for (c = 0; c < color.stops.length; c++) {\n stop = gradient.append(\"stop\").attr(\"stop-color\", color.stops[c].color).attr(\"offset\", color.stops[c].offset + \"%\");\n args = color.stops[c].color.split(\",\");\n if (args.length == 4 && !isNaN(args = parseFloat(args[3]))) {\n stop.attr(\"stop-opacity\", args)\n }\n };\n\n return \"url(#\" + id + \")\";\n }\n};","import labConfig from 'lab.config';\n\nvar UPPER_LEFT = 0;\nvar CENTER = 1;\n\nexport default function ImagesRenderer(modelView, model) {\n // A collection of image dimensions for each src that has been seen by the renderer.\n var imgDimBySrc = {};\n\n // Nested arrays of data about the requested images, ready to be joined to the d3 selection.\n var imageData;\n\n // In order to center and scale images correctly, we need their actual width and height.\n // However, this information loads asynchronously, so the width and height adjustments may need\n // to happen after we have completed setting up images.\n // Therefore, call this method before creating an element with the given src.\n // It will create an Image object with that src, if we do not already have one, and when the\n // Image finishes loading it will update the width and height of any images in the image\n // container which have the same src.\n function loadImage(src, scale) {\n if (imgDimBySrc[src]) {\n return;\n }\n\n // Create placeholder, it will be updated when image is loaded.\n imgDimBySrc[src] = {\n width: 0,\n height: 0\n };\n\n var image = new Image();\n image.src = src;\n image.onload = function() {\n // IE11 workaround - without adding an image to DOM, we can't get its correct dimensions.\n // When image src refers to an SVG image, its width and height will be always reported as 0.\n // See: https://www.pivotaltracker.com/story/show/66376534\n var $image = $(image).appendTo(\"body\");\n var imageDim = imgDimBySrc[src];\n imageDim.width = $image.width() * scale;\n imageDim.height = $image.height() * scale;\n $image.remove();\n // Resize and recenter any instances of this image currently in the DOM.\n d3.select(modelView.node)\n .selectAll('image').each(function() {\n if (d3.select(this).attr('xlink:href') === src) {\n d3.select(this)\n .attr('width', scaleImageLength(imageDim.width))\n .attr('height', scaleImageLength(imageDim.height))\n .attr('transform', transform);\n }\n });\n\n // This selector-based alternative to the .each() above actually works in Chrome, but other\n // (conforming!) browsers require that 'src' be CSS escaped first\n // (see http://mathiasbynens.be/notes/css-escapes)\n //\n // d3.select(modelView.node)\n // .selectAll('image[*|href=\"' + src + '\"')\n // .attr(...)\n };\n }\n\n // Images prepared for Classic MW have 1 pixel == 0.1 Angstrom (0.01 nm). Therefore, convert\n // image dimension from \"Classic MW pixels\", to nm, to onscreen pixels.\n function scaleImageLength(l) {\n return modelView.model2px(0.01 * l);\n }\n\n // Sets 'imageData' to a nested array of information about the requested images which can be\n // joined to the nested d3 selection in setup() in order to append the actual elements.\n function setupImageData() {\n var countsBySrc = [{}, {}];\n imageData = [\n [],\n []\n ];\n\n (model.properties.images || []).forEach(function(desc) {\n var layerIndex = desc.imageLayer === 1 ? 1 : 0;\n var layer = imageData[layerIndex];\n var countBySrc = countsBySrc[layerIndex];\n var src = getImagePath(desc);\n var referencePoint;\n var capturesPointer;\n var x;\n var y;\n\n if (desc.imageHostType) {\n // imageHostType => image is \"attached\" to an atom or obstacle, and x and y specify the\n // model coordinates of its center.\n referencePoint = CENTER;\n // Images attached to objects still allow the underlying object to be dragged.\n capturesPointer = false;\n } else {\n // no imageHostType => image is at a fixed coordinate in the model space, and x and y\n // specify the model coordinates of its upper left corner.\n referencePoint = UPPER_LEFT;\n // Unattached images prevent dragging of whatever is beneath them, in the usual way.\n capturesPointer = true;\n // Update x and y now; updateImageCoordinates will be a noop.\n x = modelView.model2px(desc.imageX);\n y = modelView.model2pxInv(desc.imageY);\n }\n\n loadImage(src, desc.scale);\n\n layer.push({\n imageDescription: desc,\n src: src,\n // Use src + srcIndex to create a unique key for images. This allows us to use a\n // conservative data join and thereby avoid having to modify the href of elements.\n // That prevents the browser from issuing unnecessary requests.\n srcIndex: countBySrc[src] === undefined ? (countBySrc[src] = 0) : ++countBySrc[src],\n x: x,\n y: y,\n rotation: desc.rotation,\n scale: desc.scale,\n opacity: desc.opacity,\n referencePoint: referencePoint,\n capturesPointer: capturesPointer,\n zOrder: desc.imageLayerPosition || 0,\n visible: desc.visible\n });\n });\n\n // Finally, because imageData for each layer is 1:1 with svg image elements, sort the\n // imageData for each layer by the intended z order of the images.\n imageData.forEach(function(layer) {\n layer.sort(function(a, b) {\n return d3.ascending(a.zOrder, b.zOrder);\n });\n });\n\n updateImageCoordinates();\n }\n\n // Update just the x, y of each element in imageData (except for fixed elements)\n function updateImageCoordinates() {\n imageData.forEach(function(layer) {\n layer.forEach(function(datum) {\n\n var imageDescription = datum.imageDescription;\n var hostType = imageDescription.imageHostType;\n var index = imageDescription.imageHostIndex;\n var rotation = imageDescription.rotation || 0;\n var atoms;\n var obstacles;\n var radialBond;\n var x, y;\n\n if (hostType === 'Atom') {\n atoms = model.getAtoms();\n x = atoms[index].x;\n y = atoms[index].y;\n } else if (hostType === 'RectangularObstacle') {\n obstacles = model.get_obstacles();\n x = obstacles.x[index] + obstacles.width[index] / 2;\n y = obstacles.y[index] + obstacles.height[index] / 2;\n } else if (hostType === 'RadialBond') {\n radialBond = model.getRadialBonds()[index];\n x = (radialBond.x1 + radialBond.x2) / 2;\n y = (radialBond.y1 + radialBond.y2) / 2;\n rotation += 180 * Math.atan2(radialBond.y1 - radialBond.y2, radialBond.x1 - radialBond.x2) / Math.PI;\n }\n if (x !== undefined) {\n datum.x = modelView.model2px(x);\n datum.y = modelView.model2pxInv(y);\n }\n datum.rotation = rotation;\n });\n });\n }\n\n function getImagePath(imageDescription) {\n var imageMapping = model.properties.imageMapping;\n var basePath = \"\";\n\n if (model.properties.imagePath) {\n basePath = labConfig.modelsRootUrl + model.properties.imagePath;\n } else if (modelView.url) {\n basePath = labConfig.modelsRootUrl + modelView.url.slice(0, modelView.url.lastIndexOf(\"/\") + 1);\n }\n\n return basePath + (imageMapping[imageDescription.imageUri] || imageDescription.imageUri);\n }\n\n // Rotate and translate the image according to x, y, width, height, and rotation\n function transform(d) {\n var dim = imgDimBySrc[d.src];\n var halfWidth = scaleImageLength(dim.width / 2);\n var halfHeight = scaleImageLength(dim.height / 2);\n var x;\n var y;\n var t;\n\n if (d.referencePoint === UPPER_LEFT) {\n x = d.x;\n y = d.y;\n } else {\n // center of object should be at (d.x, d.y), so upper left corner needs to be translated by\n // a half-width and a half-length less.\n x = d.x - halfWidth;\n y = d.y - halfHeight;\n }\n\n if (d.rotation === 0) {\n t = [\"translate(\", x, \", \", y, \")\"];\n } else {\n // invert sign of rotation so that rotations occur in standard (counterclockwise) direction\n t = [\"translate(\", x, \", \", y, \") rotate(\", -d.rotation, \",\", halfWidth, \",\", halfHeight, \")\"];\n }\n return t.join('');\n }\n\n // Called whenever the set of images or their ordering change in some way.\n function setup() {\n setupImageData();\n\n d3.select(modelView.node).selectAll('.image-container')\n .data(imageData)\n .each(function(data) {\n var images = d3.select(this)\n .selectAll('image')\n .data(data, function(d) {\n return d.src + '-' + d.srcIndex;\n });\n\n images.enter()\n .append('image')\n .attr('xlink:href', function(d) {\n return d.src;\n });\n\n images.attr({\n height: function(d) {\n return scaleImageLength(imgDimBySrc[d.src].height);\n },\n width: function(d) {\n return scaleImageLength(imgDimBySrc[d.src].width);\n },\n opacity: function(d) {\n return d.opacity;\n },\n 'pointer-events': function(d) {\n return d.capturesPointer ? 'auto' : 'none';\n },\n transform: transform\n }).style('display', function(d) {\n return d.visible ? '' : 'none';\n });\n\n images.exit().remove();\n });\n }\n\n // Called for every tick; just updates image coordinates.\n function update() {\n updateImageCoordinates();\n\n // No need for a nested selection as all images are already bound to the correct data items.\n // Just need to let d3 know it should reapply x, y because the data items have been updated.\n d3.select(modelView.node).selectAll('.image-container image')\n .attr('transform', transform);\n }\n\n function bindModel(_model) {\n model = _model;\n }\n\n return {\n setup: setup,\n update: update,\n bindModel: bindModel\n };\n};\n","// ------------------------------------------------------------\n//\n// MD2D View Renderer\n//\n// ------------------------------------------------------------\nimport labConfig from 'lab.config';\nimport console from 'common/console';\nimport benchmark from 'common/benchmark/benchmark';\nimport AtomsRenderer from 'models/md2d/views/atoms-renderer';\nimport BondsRenderer from 'models/md2d/views/bonds-renderer';\nimport VectorsRenderer from 'models/md2d/views/vectors-renderer';\nimport FieldRenderer from 'models/md2d/views/field-renderer';\nimport VdwLinesRenderer from './vdw-lines-renderer';\nimport GeneticRenderer from 'models/md2d/views/genetic-renderer';\nimport wrapSVGText from 'common/layout/wrap-svg-text';\nimport gradients from 'common/views/gradients';\nimport colorLib from 'common/views/color';\nimport ImagesRenderer from './images-renderer';\n\nvar\n // Constants used by photon renderer:\n // Reference implementation:\n // https://github.com/concord-consortium/mw/blob/3c54e37cbfe98b8d3c6f9e5397eda4308dfafecb/src/org/concord/mw2d/models/Photon.java#L32-L35\n MIN_VISIBLE_FREQ = 5,\n MAX_VISIBLE_FREQ = 12,\n PHOTON_COLORS = [\n [255, 0, 0],\n [255, 200, 0],\n [255, 255, 0],\n [0, 255, 0],\n [0, 255, 255],\n [0, 0, 255],\n [139, 0, 255]\n ];\n\nexport default function MD2DView(modelView, model) {\n // Public API object to be returned.\n var api = {},\n\n i18n = modelView.i18n,\n\n // Allows us to defer running actual renderer setup until layout system has determined oursize.\n isSetup = false,\n\n // The model function getAtoms() returns a 2 dimensional array\n // of particle indices and properties that is updated every model tick.\n // This array is not garbage-collected so the view can be assured that\n // the latest modelAtoms will be in this array when the view is executing\n modelAtoms,\n modelElectricField,\n modelElements,\n modelWidth,\n modelHeight,\n aspectRatio,\n\n // Basic scaling functions for position, it transforms model units to \"pixels\".\n // Use it for positions of objects rendered inside the view.\n model2px,\n\n // Inverted scaling function for position transforming model units to \"pixels\".\n // Use it for Y coordinates, as Y axis in model coordinate system increases\n // from bottom to top, while but SVG has increases from top to bottom\n model2pxInv,\n\n // \"Viewports\" - SVG elements whose viewbox is automatically adjusted appropriately by the\n // container (called modelView here although it's a generic container, *not* the modelView)\n belowAtomsViewport = modelView.appendViewport().classed(\"below-atoms\", true),\n\n // \"Containers\" - G elements used to position layers of the final visualization.\n shapeContainerBelow = belowAtomsViewport.append(\"g\").attr(\"class\", \"shape-container-below\"),\n imageContainerBelow = belowAtomsViewport.append(\"g\").attr(\"class\", \"image-container image-container-below\"),\n textContainerBelow = belowAtomsViewport.append(\"g\").attr(\"class\", \"text-container-below\"),\n\n // TODO: remove it, as well as legacy code responsible for SVG atoms rendering.\n atomsViewport = modelView.appendViewport().classed(\"atoms\", true),\n atomsContainer = atomsViewport.append(\"g\").attr(\"class\", \"atoms-container\"),\n\n vectorsBelowPixi = modelView.appendPixiViewport(),\n vdwLinesPixi = modelView.appendPixiViewport(),\n bondsPixi = modelView.appendPixiViewport(),\n atomsPixi = modelView.appendPixiViewport(),\n vectorsAbovePixi = modelView.appendPixiViewport(),\n\n aboveAtomsViewport = modelView.appendViewport().classed(\"above-atoms\", true),\n shapeContainerTop = aboveAtomsViewport.append(\"g\").attr(\"class\", \"shape-container-top\"),\n lineContainerTop = aboveAtomsViewport.append(\"g\").attr(\"class\", \"line-container-top\"),\n imageContainerTop = aboveAtomsViewport.append(\"g\").attr(\"class\", \"image-container image-container-top\"),\n textContainerTop = aboveAtomsViewport.append(\"g\").attr(\"class\", \"text-container-top\"),\n\n iconContainer = modelView.foregroundContainer.append(\"g\").attr(\"class\", \"icon-container\"),\n\n // Renderers specific for MD2D\n // TODO: try to create new renderers in separate files for clarity and easier testing.\n atomsRenderer = new AtomsRenderer(modelView, model, atomsPixi.pixiContainer, atomsPixi.canvas),\n bondsRenderer = new BondsRenderer(modelView, model, bondsPixi.pixiContainer, atomsRenderer),\n vdwLinesRenderer = new VdwLinesRenderer(modelView, model, vdwLinesPixi.pixiContainer),\n velocityVectorsRenderer = new VectorsRenderer(vectorsAbovePixi.pixiContainer, {\n get show() {\n return model.get(\"showVelocityVectors\");\n },\n get length() {\n return model.get(\"velocityVectors\").length;\n },\n get width() {\n return model.get(\"velocityVectors\").width;\n },\n get color() {\n return model.get(\"velocityVectors\").color;\n },\n get dirOnly() {\n return false;\n },\n get count() {\n return modelAtoms.length;\n },\n x: function(i) {\n return modelAtoms[i].x;\n },\n y: function(i) {\n return modelAtoms[i].y;\n },\n vx: function(i) {\n return modelAtoms[i].vx * 100;\n },\n vy: function(i) {\n return modelAtoms[i].vy * 100;\n },\n m2px: modelView.model2canvas,\n m2pxInv: modelView.model2canvasInv\n }),\n forceVectorsRenderer = new VectorsRenderer(vectorsAbovePixi.pixiContainer, {\n get show() {\n return model.get(\"showForceVectors\");\n },\n get length() {\n return model.get(\"forceVectors\").length;\n },\n get width() {\n return model.get(\"forceVectors\").width;\n },\n get color() {\n return model.get(\"forceVectors\").color;\n },\n get dirOnly() {\n return model.get(\"forceVectorsDirectionOnly\");\n },\n get count() {\n return modelAtoms.length;\n },\n x: function(i) {\n return modelAtoms[i].x;\n },\n y: function(i) {\n return modelAtoms[i].y;\n },\n vx: function(i) {\n var a = modelAtoms[i];\n return a.ax * a.mass * 100;\n },\n vy: function(i) {\n var a = modelAtoms[i];\n return a.ay * a.mass * 100;\n },\n m2px: modelView.model2canvas,\n m2pxInv: modelView.model2canvasInv\n }),\n electricFieldRenderer = new FieldRenderer(vectorsBelowPixi.pixiContainer, {\n get show() {\n return model.get(\"showElectricField\");\n },\n get length() {\n return 0.8 * model.get(\"width\") / model.get(\"electricFieldDensity\");\n },\n get color() {\n var c = model.get(\"electricFieldColor\");\n return c !== \"auto\" ? c : colorLib.contrastingColor(model.get(\"backgroundColor\"));\n },\n get count() {\n return modelElectricField.length;\n },\n x: function(i) {\n return modelElectricField[i].x;\n },\n y: function(i) {\n return modelElectricField[i].y;\n },\n vx: function(i) {\n return modelElectricField[i].fx;\n },\n vy: function(i) {\n return modelElectricField[i].fy;\n },\n alpha: function(i) {\n var d = modelElectricField[i];\n return Math.min(1, Math.pow(d.fx * d.fx + d.fy * d.fy, 0.2) * 0.3);\n },\n m2px: modelView.model2canvas,\n m2pxInv: modelView.model2canvasInv\n }),\n imagesRenderer = new ImagesRenderer(modelView, model),\n geneticRenderer,\n\n arrowHeadsCache,\n fontSizeInPixels,\n obstacle,\n obstacles,\n mockObstaclesArray = [],\n shapes,\n shapeTop,\n shapeBelow,\n mockShapesTop = [],\n mockShapesBelow = [],\n lines,\n lineTop,\n mockLinesTop = [],\n useQuantumDynamics,\n forceVectorColor,\n forceVectorWidth,\n textBoxes,\n // Flag indicating whether there are some movable text boxes or not (e.g. attached to an atom\n // or obstacle). Used for optimization.\n onlyStaticTextBoxes = true,\n drawAtomTrace,\n atomTraceId,\n atomTraceColor,\n atomTrace,\n atomTracePath,\n\n browser = benchmark.what_browser(),\n\n // pre-calculations\n halfPi = Math.PI / 2,\n\n // this is a hack put in place to temporarily deal with a IE 10 bug which\n // does not update line markers when svg lines are moved\n // see https://connect.microsoft.com/IE/feedback/details/781964/\n hideLineMarkers = browser.browser === \"MSIE\" && Number(browser.version) >= 10;\n\n function createCustomArrowHead(i, path, start) {\n if (!path || path === \"none\") {\n return \"none\";\n }\n\n var id = \"arrowhead-path\" + path.toLowerCase().replace(/[^a-z0-9]/g, '') +\n (start ? \"start\" : \"\") + lines.lineColor[i].toLowerCase().replace(/[^a-z0-9]/g, '');\n\n if (!arrowHeadsCache[id]) {\n var defs, arrowHead;\n defs = atomsContainer.select(\"defs\");\n if (defs.empty()) {\n defs = atomsContainer.append(\"defs\");\n }\n arrowHead = defs.select(\"#\" + id);\n arrowHead = atomsContainer.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"class\", \"custom-arrow-head\")\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", \"5\")\n .attr(\"refY\", \"5\")\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", \"4\")\n .attr(\"markerHeight\", \"4\")\n .attr(\"orient\", \"auto\");\n arrowHead.append(\"path\")\n .attr(\"d\", path)\n .attr(\"fill\", lines.lineColor[i])\n .attr(\"transform\", start ? \"translate(10, 10) rotate(180)\" : \"\");\n arrowHeadsCache[id] = true;\n }\n return \"url(#\" + id + \")\";\n }\n\n function createVectorArrowHeads(color, name) {\n var defs,\n id = \"Triangle-\" + name,\n arrowHead;\n defs = atomsContainer.select(\"defs\");\n if (defs.empty()) {\n defs = atomsContainer.append(\"defs\");\n }\n arrowHead = defs.select(\"#\" + id).remove();\n arrowHead = defs.append(\"marker\")\n .attr(\"id\", \"Triangle-\" + name)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", \"0\")\n .attr(\"refY\", \"5\")\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", \"4\")\n .attr(\"markerHeight\", \"3\")\n .attr(\"orient\", \"auto\")\n .attr(\"stroke\", color)\n .attr(\"fill\", color);\n arrowHead.append(\"path\")\n .attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\");\n }\n\n function createExcitationGlow() {\n var defs,\n glow;\n\n defs = atomsContainer.select(\"defs\");\n if (defs.empty()) {\n defs = atomsContainer.append(\"defs\");\n }\n glow = defs.select(\"#glow\");\n if (glow.empty()) {\n glow = defs.append(\"filter\")\n .attr(\"id\", \"glow\")\n .attr(\"x\", \"-2\")\n .attr(\"y\", \"-2\")\n .attr(\"width\", \"800%\")\n .attr(\"height\", \"800%\");\n glow.append(\"feMorphology\")\n .attr(\"result\", \"bigger\")\n .attr(\"in\", \"SourceGraphic\")\n .attr(\"operator\", \"dilate\")\n .attr(\"radius\", \"6\");\n glow.append(\"feGaussianBlur\")\n .attr(\"result\", \"blurOut\")\n .attr(\"in\", \"bigger\")\n .attr(\"stdDeviation\", \"10\");\n glow.append(\"feBlend\")\n .attr(\"in\", \"SourceGraphic\")\n .attr(\"in2\", \"blurOut\")\n .attr(\"mode\", \"normal\");\n }\n }\n\n // Create key images which can be shown in the\n // upper left corner in different situations.\n // IMPORTANT: The height attribute must be set,\n // it will allow to properly calculate images\n // placement in drawSymbolImages() function.\n function createSymbolImages() {\n var xMargin = \"1%\",\n fSize = Math.max(fontSizeInPixels, 12);\n\n // only add these images if they don't already exist\n if (iconContainer.select(\"#heat-bath\").empty()) {\n // Heat bath key image.\n iconContainer.append(\"image\")\n .attr({\n \"id\": \"heat-bath\",\n \"x\": xMargin,\n \"width\": fSize * 2,\n \"height\": fSize * 2,\n \"preserveAspectRatio\": \"xMinYMin\",\n // base64 of lab/resources/upstatement/heatbath.svg\n \"xlink:href\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNC4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDQzMzYzKSAgLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9Ijk2LjIzNnB4IiBoZWlnaHQ9IjUzLjMyMXB4IiB2aWV3Qm94PSIxLjc2NCAxMy44MSA5Ni4yMzYgNTMuMzIxIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDEuNzY0IDEzLjgxIDk2LjIzNiA1My4zMjEiDQoJIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSItNjIyIiB5MT0iOTQ1LjU2MSIgeDI9Ii02MjIiIHkyPSI5MjYuNDM5OSI+DQoJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzU1NTU1NSIvPg0KCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRkZGRkYiLz4NCjwvbGluZWFyR3JhZGllbnQ+DQo8cGF0aCBmaWxsPSIjRTZFN0U4IiBzdHJva2U9InVybCgjU1ZHSURfMV8pIiBzdHJva2Utd2lkdGg9IjAuNSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJNNzEuMzMsMTQuMzg0DQoJYy04Ljk0MiwwLTE2LjgyNyw0LjQ1OS0yMS41OTYsMTEuMjY1Yy00Ljc3LTYuODAzLTEyLjY1NS0xMS4yNjUtMjEuNTk4LTExLjI2NWMtMTQuNTY0LDAtMjYuMzczLDExLjgwNi0yNi4zNzMsMjYuMzczDQoJYzAsMTQuNTY4LDExLjgwNSwyNi4zNzQsMjYuMzczLDI2LjM3NGM4Ljk0MiwwLDE2LjgyOC00LjQ2LDIxLjU5OC0xMS4yNjZjNC43NjksNi44MDIsMTIuNjUzLDExLjI2NiwyMS41OTYsMTEuMjY2DQoJYzE0LjU2NiwwLDI2LjM3Mi0xMS44MDYsMjYuMzcyLTI2LjM3NEM5Ny43MDIsMjYuMTksODUuODk2LDE0LjM4NCw3MS4zMywxNC4zODR6Ii8+DQo8cGF0aCBmaWxsPSIjNTU1NTU1IiBkPSJNMzEuNDQ4LDQ3LjcxOVYyNy4xMzNjMC0xLjE2LTAuOTQxLTIuMS0yLjEwMi0yLjFjLTEuMTU3LDAtMi4wOTUsMC45NC0yLjA5NSwyLjF2MjAuNTg2DQoJYy0xLjM4NSwwLjc1Mi0yLjMzOCwyLjE5Ni0yLjMzOCwzLjg4MWMwLDIuNDQ3LDEuOTg2LDQuNDI4LDQuNDMzLDQuNDI4YzIuNDUxLDAsNC40MzQtMS45OCw0LjQzNC00LjQyOA0KCUMzMy43ODMsNDkuOTE2LDMyLjgzLDQ4LjQ3MSwzMS40NDgsNDcuNzE5eiIvPg0KPHBhdGggZmlsbD0iIzU1NTU1NSIgZD0iTTgwLjIwOSwzNy42NjN2LTMuOTc0YzAtNC43NzUtMy44ODItOC42NTktOC42NTMtOC42NTlTNjIuOSwyOC45MTUsNjIuOSwzMy42ODl2My45NzRoLTIuMDY3djE1Ljk3M2gyMS43Mg0KCVYzNy42NjNIODAuMjA5eiBNNjYuMjM5LDMzLjY4OWMwLTIuOTMsMi4zODQtNS4zMTYsNS4zMTMtNS4zMTZjMi45MzEsMCw1LjMxNiwyLjM4Niw1LjMxNiw1LjMxNnYzLjk3NGgtMTAuNjNWMzMuNjg5eiIvPg0KPC9zdmc+DQo=\",\n \"class\": \"opaque-on-hover\"\n })\n .append(\"title\")\n .text(i18n.t(\"md2d.heatbath_icon_tooltip\"));\n }\n if (iconContainer.select(\"#ke-gradient\").empty()) {\n // Kinetic Energy Shading gradient image.\n iconContainer.append(\"image\")\n .attr({\n \"id\": \"ke-gradient\",\n \"x\": \"0\",\n \"width\": fSize * 2.2,\n \"height\": fSize * 6,\n \"preserveAspectRatio\": \"xMinYMin\",\n // base64 of lab/resources/upstatement/ke-gradient.svg\n \"xlink:href\": \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNC4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDQzMzYzKSAgLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9IjM5cHgiIGhlaWdodD0iMTExcHgiIHZpZXdCb3g9IjI1LjUgNC4wOTMgMzkgMTExIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDI1LjUgNC4wOTMgMzkgMTExIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGZpbGw9IiNFNkU3RTgiIGQ9Ik02MC45MTUsMTA2LjAzOGMwLDYuODEtMS4wNTMsNy45Mi03LjY4LDcuOTJsLTE0LjQ0NSwwLjI3M2MtNi42MjcsMC03LjYyNS0xLjM4NC03LjYyNS04LjE5M1YxMy41NjMNCgljMC02LjgxLDAuOTk4LTguMjIsNy42MjUtOC4yMmgxNC40NDVjNi42MjcsMCw3LjY4LDEuNDEsNy42OCw4LjIyVjEwNi4wMzh6Ii8+DQo8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ijk4Ni4wNDQ5IiB5MT0iMTI5MC41MjY2IiB4Mj0iOTg2LjA0NDkiIHkyPSIxMjI2LjEzMjEiPg0KCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiNBN0E5QUMiLz4NCgk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojRkZGRkZGIi8+DQo8L2xpbmVhckdyYWRpZW50Pg0KPHBhdGggZmlsbD0iI0U2RTdFOCIgc3Ryb2tlPSJ1cmwoI1NWR0lEXzFfKSIgc3Ryb2tlLXdpZHRoPSIwLjUiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTM2Ljk3MSwyNC43NjMNCgljMC0yLjAwNSwxLjYyNC0zLjYyOCwzLjYyOC0zLjYyOGgxMC45MzdjMi4wMDQsMCwzLjYyOCwxLjYyMiwzLjYyOCwzLjYyOHY2OC40NThjMCwyLjAwMy0xLjYyNCwzLjYyOS0zLjYyOCwzLjYyOUg0MC41OTkNCgljLTIuMDA0LDAtMy42MjgtMS42MjUtMy42MjgtMy42MjlWMjQuNzYzeiIvPg0KPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8yXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMjQ1LjU4ODkiIHkxPSI4OTAuMDQ1MiIgeDI9IjEyNDUuNTg4OSIgeTI9Ijk2Mi4yNiIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSAxMjkxLjYyODkgLTg2Ny4yMzgzKSI+DQoJPHN0b3AgIG9mZnNldD0iMC4wMDQzIiBzdHlsZT0ic3RvcC1jb2xvcjojRUY0MTM2Ii8+DQoJPHN0b3AgIG9mZnNldD0iMC4xNjUzIiBzdHlsZT0ic3RvcC1jb2xvcjojRjE2MDRCIi8+DQoJPHN0b3AgIG9mZnNldD0iMC41MTg5IiBzdHlsZT0ic3RvcC1jb2xvcjojRjc5RTg1Ii8+DQoJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRkZGRiIvPg0KPC9saW5lYXJHcmFkaWVudD4NCjxwYXRoIGZpbGw9InVybCgjU1ZHSURfMl8pIiBkPSJNNDIuODI3LDk1LjAyM2MtMi4yMTUsMC00LjAwOS0xLjc5Ni00LjAwOS00LjAxMVYyNi44OTNjMC0yLjI1NywxLjgyOC00LjA4Niw0LjA4NS00LjA4Nmg2LjI3NA0KCWMyLjI1NywwLDQuMDg2LDEuODI5LDQuMDg2LDQuMDg2djY0LjExOWMwLDIuMjE1LTEuNzk1LDQuMDExLTQuMDExLDQuMDExSDQyLjgyN3oiLz4NCjxyZWN0IHg9IjE0LjM5NyIgeT0iOS42MDciIGZpbGw9Im5vbmUiIHdpZHRoPSI2MS4zNiIgaGVpZ2h0PSIxNC44MTIiLz4NCjx0ZXh0IHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgMzQuNjA2IDE3LjAxMjkpIiBmb250LWZhbWlseT0iJ0FyaWFsTVQnIiBmb250LXNpemU9IjkuNDc5OCI+SElHSDwvdGV4dD4NCjxyZWN0IHg9IjE0LjM5NyIgeT0iMTAzLjAzMyIgZmlsbD0ibm9uZSIgd2lkdGg9IjYxLjM2IiBoZWlnaHQ9IjE0LjgxMiIvPg0KPHRleHQgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSAzNS4yOTMgMTA4LjY2OTIpIiBmb250LWZhbWlseT0iJ0FyaWFsTVQnIiBmb250LXNpemU9IjkuNDc5OCI+TE9XPC90ZXh0Pg0KPC9zdmc+DQo=\",\n \"class\": \"opaque-on-hover\"\n })\n .append(\"title\")\n .text(i18n.t(\"md2d.ke_icon_tooltip\"));\n }\n }\n\n // Draw key images in the upper left corner.\n // Place them in one row, dynamically calculate\n // y position.\n\n function drawSymbolImages() {\n var heatBath = model.get('temperatureControl'),\n keShadingMode = model.get('keShading'),\n imageSelect, imageHeight,\n // Variables used for calculating proper y positions.\n yPos = 0,\n yMargin = 1,\n fSize = Math.max(fontSizeInPixels, 12);\n\n // Heat bath symbol.\n if (heatBath) {\n yPos += yMargin;\n imageSelect = iconContainer.select(\"#heat-bath\")\n .attr({\n \"y\": yPos,\n \"width\": fSize * 2,\n \"height\": fSize * 2\n })\n .style(\"display\", \"\");\n\n imageHeight = parseInt(imageSelect.attr(\"height\"), 10);\n yPos += imageHeight;\n } else {\n iconContainer.select(\"#heat-bath\").style(\"display\", \"none\");\n }\n\n // Kinetic Energy shading gradient.\n // Put it under heat bath symbol.\n if (keShadingMode) {\n yPos += yMargin;\n iconContainer.select(\"#ke-gradient\")\n .attr({\n \"y\": yPos,\n \"width\": fSize * 2.2,\n \"height\": fSize * 6\n })\n .style(\"display\", \"\");\n } else {\n iconContainer.select(\"#ke-gradient\").style(\"display\", \"none\");\n }\n }\n\n function atomTraceEnter() {\n atomTrace.enter().append(\"path\")\n .attr({\n \"class\": \"atomTrace\",\n \"d\": getAtomTracePath,\n \"stroke-width\": model2px(0.01),\n \"stroke\": atomTraceColor,\n \"fill\": \"none\",\n \"stroke-dasharray\": \"6, 6\"\n });\n }\n\n function obstacleEnter() {\n var obstacleGroup = obstacle.enter().append(\"g\");\n\n obstacleGroup\n .attr(\"class\", \"obstacle\")\n .attr(\"transform\",\n function(d, i) {\n return \"translate(\" + model2px(obstacles.x[i]) + \" \" + model2pxInv(obstacles.y[i] + obstacles.height[i]) + \")\";\n }\n );\n obstacleGroup.append(\"rect\")\n .attr({\n \"class\": \"obstacle-shape\",\n \"x\": 0,\n \"y\": 0,\n \"width\": function(d, i) {\n return model2px(obstacles.width[i]);\n },\n \"height\": function(d, i) {\n return model2px(obstacles.height[i]);\n },\n \"fill\": function(d, i) {\n return obstacles.visible[i] ? gradients.toSVG(gradients.parse(obstacles.color[i]), atomsContainer) : \"transparent\";\n },\n \"stroke-width\": function(d, i) {\n return obstacles.visible[i] ? 0.2 : 0.0;\n },\n \"stroke\": function(d, i) {\n return obstacles.visible[i] ? gradients.toSVG(gradients.parse(obstacles.color[i]), atomsContainer) : \"transparent\";\n }\n });\n\n // Append external force markers.\n obstacleGroup.each(function(d, i) {\n // Fast path\n if (!obstacles.displayExternalAcceleration[i] ||\n (!obstacles.externalAx[i] && !obstacles.externalAy[i])) {\n return;\n }\n\n // Note that arrows indicating obstacle external force use\n // the same options for styling like arrows indicating atom force.\n // Only their length is fixed.\n var obstacleGroupEl = d3.select(this),\n obsHeight = obstacles.height[i],\n obsWidth = obstacles.width[i],\n obsAx = obstacles.externalAx[i],\n obsAy = obstacles.externalAy[i],\n // Use fixed length of force vectors (in nm).\n vecLen = 0.06,\n space = 0.06,\n step, coords;\n\n // Set arrows indicating horizontal force.\n if (obsAx) {\n // Make sure that arrows keep constant distance between both ends of an obstacle.\n step = (obsHeight - 2 * space) / Math.round((obsHeight - 2 * space) / 0.2);\n coords = d3.range(space, obsHeight, step);\n obstacleGroupEl.selectAll(\"path.obstacle-force-hor\").data(coords).enter().append(\"path\")\n .attr({\n \"class\": \"obstacle-force-hor\",\n \"d\": function(d) {\n if (obsAx < 0)\n return \"M \" + model2px(obsWidth + vecLen + space) +\n \",\" + model2px(d) +\n \" L \" + model2px(obsWidth + space) +\n \",\" + model2px(d);\n else\n return \"M \" + model2px(-vecLen - space) +\n \",\" + model2px(d) +\n \" L \" + model2px(-space) +\n \",\" + model2px(d);\n }\n });\n }\n // Later set arrows indicating vertical force.\n if (obsAy) {\n // Make sure that arrows keep constant distance between both ends of an obstacle.\n step = (obsWidth - 2 * space) / Math.round((obsWidth - 2 * space) / 0.2);\n coords = d3.range(space, obsWidth, step);\n obstacleGroupEl.selectAll(\"path.obstacle-force-vert\").data(coords).enter().append(\"path\")\n .attr({\n \"class\": \"obstacle-force-vert\",\n \"d\": function(d) {\n if (obsAy < 0)\n return \"M \" + model2px(d) +\n \",\" + model2px(-vecLen - space) +\n \" L \" + model2px(d) +\n \",\" + model2px(-space);\n else\n return \"M \" + model2px(d) +\n \",\" + model2px(obsHeight + vecLen + space) +\n \" L \" + model2px(d) +\n \",\" + model2px(obsHeight + space);\n }\n });\n }\n // Finally, set common attributes and stying for both vertical and horizontal forces.\n obstacleGroupEl.selectAll(\"path.obstacle-force-hor, path.obstacle-force-vert\")\n .attr({\n \"marker-end\": hideLineMarkers ? \"\" : \"url(#Triangle-force)\",\n \"stroke-width\": model2px(forceVectorWidth),\n \"stroke\": forceVectorColor,\n \"fill\": \"none\"\n });\n });\n }\n\n\n function shapeEnter() {\n var layers = [shapeTop, shapeBelow],\n i;\n for (i = 0; i < layers.length; i++) {\n var shapeGroup = layers[i].enter().append(\"g\");\n shapeGroup.attr(\"class\", \"shape\").attr(\"transform\", function(d) {\n return \"translate(\" + model2px(shapes.x[d.index]) + \" \" + model2pxInv(shapes.y[d.index] + shapes.height[d.index]) + \")\";\n });\n shapeGroup.append(\"rect\").attr({\n \"class\": \"shape-rectangle\",\n \"x\": 0,\n \"y\": 0,\n \"width\": function(d) {\n return model2px(shapes.width[d.index]);\n },\n \"height\": function(d) {\n return model2px(shapes.height[d.index]);\n },\n \"fill\": function(d) {\n return shapes.visible[d.index] && shapes.type[d.index] === 'rectangle' ? gradients.toSVG(gradients.parse(shapes.color[d.index]), atomsContainer) : \"transparent\";\n },\n \"stroke-width\": function(d) {\n return shapes.lineWeight[d.index];\n },\n \"stroke-dasharray\": function(d) {\n return shapes.lineDashes[d.index];\n },\n \"stroke\": function(d) {\n return shapes.visible[d.index] && shapes.type[d.index] === 'rectangle' ? shapes.lineColor[d.index] : \"transparent\";\n }\n });\n shapeGroup.append(\"ellipse\").attr({\n \"class\": \"shape-ellipse\",\n \"cx\": function(d) {\n return model2px(shapes.width[d.index]) / 2;\n },\n \"cy\": function(d) {\n return model2px(shapes.height[d.index]) / 2;\n },\n \"rx\": function(d) {\n return model2px(shapes.width[d.index]) / 2;\n },\n \"ry\": function(d) {\n return model2px(shapes.height[d.index]) / 2;\n },\n \"fill\": function(d) {\n return shapes.visible[d.index] && shapes.type[d.index] === 'ellipse' ? gradients.toSVG(gradients.parse(shapes.color[d.index]), atomsContainer) : \"transparent\";\n },\n \"stroke-width\": function(d) {\n return shapes.lineWeight[d.index];\n },\n \"stroke-dasharray\": function(d) {\n return shapes.lineDashes[d.index];\n },\n \"stroke\": function(d) {\n return shapes.visible[d.index] && shapes.type[d.index] === 'ellipse' ? shapes.lineColor[d.index] : \"transparent\";\n }\n });\n }\n }\n\n function getTextBoxCoords(d) {\n var x, y, hostX, hostY, textX, textY, frameX, frameY, calloutX, calloutY,\n pixelScale = model2px(d.fontSize);\n\n x = d.x;\n y = d.y;\n\n if (d.hostType) {\n // Mark that at least one text box has a host - it means that we have to update text boxes\n // each tick. Otherwise, we can follow a fast path and don't update them after creation.\n onlyStaticTextBoxes = false;\n if (d.hostType === \"Atom\") {\n hostX = modelAtoms[d.hostIndex].x;\n hostY = modelAtoms[d.hostIndex].y;\n } else {\n hostX = obstacles.x[d.hostIndex] + (obstacles.width[d.hostIndex] / 2);\n hostY = obstacles.y[d.hostIndex] + (obstacles.height[d.hostIndex] / 2);\n }\n }\n\n if (d.hostType && !d.calloutPoint) {\n x = hostX;\n y = hostY;\n }\n\n if (d.calloutPoint) {\n if (!d.hostType) {\n calloutX = d.calloutPoint[0];\n calloutY = d.calloutPoint[1];\n } else {\n calloutX = hostX;\n calloutY = hostY;\n }\n }\n\n frameX = model2px(x);\n frameY = model2pxInv(y);\n\n textX = frameX + pixelScale * 0.75;\n textY = frameY + pixelScale * 1.2;\n\n calloutX = model2px(calloutX);\n calloutY = model2pxInv(calloutY);\n\n return [textX, textY, frameX, frameY, calloutX, calloutY];\n }\n\n function getCalloutPath(location, frame, fullWidth, fullHeight, fontSize) {\n var calloutLocation = [\n parseFloat(location[0]),\n parseFloat(location[1])\n ],\n center = [\n parseFloat(frame.getAttribute(\"x\")) + (fullWidth / 2),\n parseFloat(frame.getAttribute(\"y\")) + (fullHeight / 2)\n ],\n angle = halfPi - Math.atan((calloutLocation[0] - center[0]) / (calloutLocation[1] - center[1])),\n baseSize = Math.min(fontSize, fullHeight / 2),\n\n dcx = Math.sin(angle) * baseSize,\n dcy = Math.cos(angle) * baseSize;\n\n return (center[0] + dcx) + \", \" + (center[1] - dcy) + \" \" + (center[0] - dcx) + \", \" + (center[1] + dcy) + \" \" + calloutLocation;\n }\n\n function updateTextBoxes() {\n var layers = [textContainerTop, textContainerBelow],\n updateText;\n\n updateText = function(layerNum) {\n var layer = layers[layerNum - 1],\n layerTextBoxes = textBoxes.filter(function(t) {\n return t.layer === layerNum;\n });\n\n layer.selectAll(\"g.textBoxWrapper rect\")\n .data(layerTextBoxes.filter(function(d) {\n return d.frame;\n }))\n .attr({\n \"x\": function(d) {\n return getTextBoxCoords(d)[2];\n },\n \"y\": function(d) {\n return getTextBoxCoords(d)[3];\n },\n \"transform\": function(d) {\n var rotate = d.rotate,\n pos = getTextBoxCoords(d);\n return \"rotate(\" + rotate + \" \" + pos[0] + \" \" + pos[1] + \")\";\n }\n });\n\n layer.selectAll(\"g.textBoxWrapper text\")\n .data(layerTextBoxes)\n .attr({\n \"y\": function(d) {\n $(this).find(\"tspan\").attr(\"x\", getTextBoxCoords(d)[0]);\n return getTextBoxCoords(d)[1];\n }\n });\n\n layer.selectAll(\"g.textBoxWrapper polygon\")\n .data(layerTextBoxes.filter(function(d) {\n return d.calloutPoint;\n }))\n .attr({\n \"callout-location-data\": function(d) {\n var pos = getTextBoxCoords(d);\n return pos[4] + \", \" + pos[5];\n }\n });\n };\n\n updateText(1);\n updateText(2);\n\n // update callouts\n $(\".textBox\").each(function() {\n var $parentNode = $(this.parentNode),\n callout = $parentNode.find(\"polygon\"),\n frame = $parentNode.find(\"rect\")[0],\n fontSize, width, height, calloutLocation;\n\n if (!frame || callout.length === 0) return;\n\n fontSize = parseFloat(this.getAttributeNS(null, \"font-size\"));\n width = frame.getAttribute(\"width\");\n height = frame.getAttribute(\"height\");\n calloutLocation = callout.attr(\"callout-location-data\").split(\", \");\n\n callout.attr(\"points\", getCalloutPath(calloutLocation, frame, width, height, fontSize));\n });\n }\n\n function drawTextBoxes() {\n var size, layers, appendTextBoxes;\n // Workaround for a rendering bug in Chrome on OS X and Windows (but not Linux or Android);\n // see http://crbug.com/309740\n var shouldRoundTextBoxStrokeWidth =\n browser.browser === 'Chrome' && !!browser.oscpu.match(/Windows|Mac OS X/);\n\n textBoxes = model.get('textBoxes');\n\n size = [model.get('width'), model.get('height')];\n\n layers = [textContainerTop, textContainerBelow];\n\n // Append to either top or bottom layer depending on item's layer #.\n appendTextBoxes = function(layerNum) {\n var layer = layers[layerNum - 1],\n text, layerTextBoxes, selection;\n\n layer.selectAll(\"g.textBoxWrapper\").remove();\n\n layerTextBoxes = textBoxes.filter(function(t) {\n return t.layer === layerNum;\n });\n\n selection = layer.selectAll(\"g.textBoxWrapper\")\n .data(layerTextBoxes);\n text = selection.enter().append(\"svg:g\")\n .attr(\"class\", \"textBoxWrapper\");\n\n text.filter(function(d) {\n return d.calloutPoint;\n })\n .append(\"polygon\")\n .attr({\n \"points\": \"0,0 0,0 0,0\",\n \"style\": function(d) {\n var backgroundColor = d.backgroundColor,\n strokeWidth = d.strokeWidthEms * fontSizeInPixels,\n strokeOpacity = d.strokeOpacity,\n strokeColor = d.strokeColor;\n return \"fill:\" + backgroundColor + \";opacity:1.0;fill-opacity:1;stroke:\" + strokeColor + \";stroke-width:\" + (strokeWidth * 2) + \";stroke-opacity:\" + strokeOpacity;\n },\n \"callout-location-data\": function(d) {\n var pos = getTextBoxCoords(d);\n return pos[4] + \", \" + pos[5];\n }\n });\n\n text.filter(function(d) {\n return d.frame;\n })\n .append(\"rect\")\n .attr({\n \"class\": function(d, i) {\n return \"textBoxFrame text-\" + i;\n },\n \"id\": function(d, i) {\n return \"text-\" + i;\n },\n \"transform\": function(d) {\n var rotate = d.rotate,\n pos = getTextBoxCoords(d);\n return \"rotate(\" + rotate + \" \" + pos[0] + \" \" + pos[1] + \")\";\n },\n \"style\": function(d) {\n var backgroundColor = d.backgroundColor,\n strokeWidth = d.strokeWidthEms * fontSizeInPixels,\n strokeOpacity = d.strokeOpacity,\n strokeColor = d.strokeColor;\n\n if (shouldRoundTextBoxStrokeWidth && strokeWidth < 1) {\n // Workaround for ghosting artifact left when stroke-width < 1 in Chrome on OS X.\n // Try to adjust opacity to compensate for increased width:\n strokeOpacity *= strokeWidth;\n strokeWidth = 1;\n }\n\n return \"fill:\" + backgroundColor + \";opacity:1.0;fill-opacity:1;stroke:\" + strokeColor + \";stroke-width:\" + strokeWidth + \";stroke-opacity:\" + strokeOpacity;\n },\n \"width\": 0,\n \"height\": 0,\n \"rx\": function(d) {\n return d.frame === \"rounded rectangle\" ? model2px(d.fontSize) / 2.5 : 0;\n },\n \"ry\": function(d) {\n return d.frame === \"rounded rectangle\" ? model2px(d.fontSize) / 2 : 0;\n },\n \"x\": function(d) {\n return getTextBoxCoords(d)[2];\n },\n \"y\": function(d) {\n return getTextBoxCoords(d)[3];\n }\n });\n\n text.filter(function(d) {\n return d.calloutPoint;\n })\n .append(\"polygon\")\n .attr({\n \"points\": \"0,0 0,0 0,0\",\n \"style\": function(d) {\n var backgroundColor = d.backgroundColor;\n return \"fill:\" + backgroundColor + \";opacity:1.0;fill-opacity:1;stroke:#000000;stroke-width:0;\";\n }\n });\n\n text.append(\"text\")\n .attr({\n \"class\": function() {\n return \"textBox\" + (AUTHORING ? \" draggable\" : \"\");\n },\n \"transform\": function(d) {\n var rotate = d.rotate,\n pos = getTextBoxCoords(d);\n return \"rotate(\" + rotate + \" \" + pos[0] + \" \" + pos[1] + \")\";\n },\n \"x-data\": function(d) {\n return getTextBoxCoords(d)[0];\n },\n \"y\": function(d) {\n return getTextBoxCoords(d)[1];\n },\n \"width-data\": function(d) {\n return d.width;\n },\n \"height-data\": function(d) {\n return d.height;\n },\n \"width\": model2px(size[0]),\n \"height\": model2px(size[1]),\n \"xml:space\": \"preserve\",\n \"font-family\": \"'\" + labConfig.fontface + \"', sans-serif\",\n \"font-size\": function(d) {\n return model2px(d.fontSize) + \"px\";\n },\n \"fill\": function(d) {\n return d.color || \"black\";\n },\n \"text-data\": function(d) {\n return d.text;\n },\n \"text-anchor\": function(d) {\n var align = d.textAlign || \"left\";\n if (align === \"center\") align = \"middle\";\n return align;\n },\n \"has-host\": function(d) {\n return !!d.hostType;\n },\n \"pointer-events\": function(d) {\n return !d.hostType ? 'auto' : 'none';\n },\n })\n .call(d3.behavior.drag()\n .on(\"drag\", textDrag)\n .on(\"dragend\", function(d) {\n // simple output to console for now, eventually should just get\n // serialized back to interactive (or model?) JSON on author save\n console.log('\"x\": ' + d.x + \",\");\n console.log('\"y\": ' + d.y + \",\");\n })\n );\n selection.exit().remove();\n };\n\n appendTextBoxes(1);\n appendTextBoxes(2);\n\n // wrap text, set callouts\n $(\".textBox\").each(function() {\n var text = this.getAttributeNS(null, \"text-data\"),\n x = this.getAttributeNS(null, \"x-data\"),\n width = this.getAttributeNS(null, \"width-data\"),\n height = this.getAttributeNS(null, \"height-data\"),\n fontSize = parseFloat(this.getAttributeNS(null, \"font-size\")),\n transform = this.getAttributeNS(null, \"transform\"),\n hasHost = this.getAttributeNS(null, \"has-host\"),\n textAlign = this.getAttributeNS(null, \"text-anchor\"),\n $parentNode = $(this.parentNode),\n horizontalPadding, verticalPadding,\n result, fullWidth, fullHeight, frame, dy, tx, ty,\n callout, calloutLocation;\n\n dy = fontSize * 1.2;\n horizontalPadding = +fontSize * 1.5;\n verticalPadding = fontSize / 1.8;\n\n if (width === '') {\n width = -1;\n } else {\n width = model2px(width);\n }\n\n if (height === '') {\n height = -1;\n } else {\n height = model2px(height);\n }\n\n while (this.firstChild) { // clear element first\n this.removeChild(this.firstChild);\n }\n\n result = wrapSVGText(text, this, width, x, dy);\n\n if ($parentNode.find(\"rect\").length > 0) {\n frame = $parentNode.find(\"rect\")[0];\n fullWidth = result.width + horizontalPadding;\n frame.setAttributeNS(null, \"width\", fullWidth);\n if (height > 0) {\n fullHeight = height;\n } else {\n fullHeight = (result.lines * dy) + verticalPadding;\n }\n frame.setAttributeNS(null, \"height\", fullHeight);\n }\n\n // if we have a callout\n callout = $parentNode.find(\"polygon\");\n if (frame && callout.length > 0) {\n calloutLocation = callout.attr(\"callout-location-data\").split(\", \");\n callout.attr(\"points\", getCalloutPath(calloutLocation, frame, fullWidth, fullHeight, fontSize));\n }\n\n // center all hosted labels simply by tweaking the g.transform\n if (textAlign === \"middle\") {\n tx = result.width / 2;\n if (height > 0) {\n ty = height / 2 - verticalPadding * 1.5 - (result.lines - 1) * dy / 2;\n } else {\n ty = 0;\n }\n transform = transform + \" translate(\" + tx + \",\" + ty + \")\";\n $(this).attr(\"transform\", transform);\n }\n if (hasHost === \"true\" && callout.length === 0) {\n tx = result.width / -2 - horizontalPadding / 2;\n ty = result.lines * dy / -2 - verticalPadding / 2;\n $parentNode.attr(\"transform\", \"translate(\" + tx + \",\" + ty + \")\");\n }\n });\n }\n\n function setupObstacles() {\n obstacles = model.get_obstacles();\n atomsContainer.selectAll(\"g.obstacle\").remove();\n if (obstacles) {\n mockObstaclesArray.length = obstacles.x.length;\n obstacle = atomsContainer.selectAll(\"g.obstacle\").data(mockObstaclesArray);\n obstacleEnter();\n }\n }\n\n function setupShapes() {\n shapes = model.get_shapes();\n shapeContainerTop.selectAll(\".shape\").remove();\n shapeContainerBelow.selectAll(\".shape\").remove();\n if (shapes) {\n mockShapesTop = [];\n mockShapesBelow = [];\n for (var i = 0; i < shapes.x.length; i++) {\n if (shapes.layer[i] === 1) {\n mockShapesTop.push({\n index: i,\n layerPosition: shapes.layerPosition[i]\n });\n } else {\n mockShapesBelow.push({\n index: i,\n layerPosition: shapes.layerPosition[i]\n });\n }\n }\n mockShapesTop.sort(function(a, b) {\n return a.layerPosition - b.layerPosition;\n });\n mockShapesBelow.sort(function(a, b) {\n return a.layerPosition - b.layerPosition;\n });\n shapeTop = shapeContainerTop.selectAll(\".shape\").data(mockShapesTop);\n shapeBelow = shapeContainerBelow.selectAll(\".shape\").data(mockShapesBelow);\n shapeEnter();\n }\n }\n\n function setupLines() {\n lines = model.get_lines();\n mockLinesTop.length = lines.x1.length;\n lineTop = lineContainerTop.selectAll(\".line\").data(mockLinesTop);\n lineTop.exit().remove();\n if (lines) {\n lineTop.enter().append(\"line\");\n lineTop.attr({\n \"class\": \"line\",\n \"x1\": function(d, i) {\n return model2px(lines.x1[i]);\n },\n \"y1\": function(d, i) {\n return model2pxInv(lines.y1[i]);\n },\n \"x2\": function(d, i) {\n return model2px(lines.x2[i]);\n },\n \"y2\": function(d, i) {\n return model2pxInv(lines.y2[i]);\n },\n \"stroke-width\": function(d, i) {\n return lines.lineWeight[i];\n },\n \"stroke-dasharray\": function(d, i) {\n return lines.lineDashes[i];\n },\n \"stroke\": function(d, i) {\n return lines.lineColor[i];\n },\n \"marker-start\": function(d, i) {\n return createCustomArrowHead(i, lines.beginStyle[i], true);\n },\n \"marker-end\": function(d, i) {\n return createCustomArrowHead(i, lines.endStyle[i]);\n },\n \"visibility\": function(d, i) {\n return lines.visible[i] ? \"visible\" : \"hidden\";\n }\n });\n }\n }\n\n function setupAtomTrace() {\n atomsContainer.selectAll(\"path.atomTrace\").remove();\n atomTracePath = \"\";\n\n drawAtomTrace = model.get(\"showAtomTrace\");\n atomTraceId = model.get(\"atomTraceId\");\n if (drawAtomTrace) {\n atomTrace = atomsContainer.selectAll(\"path.atomTrace\").data([modelAtoms[atomTraceId]]);\n atomTraceEnter();\n }\n }\n\n function getAtomTracePath(d) {\n // until we implement buffered array model output properties,\n // we just keep the path history in the path string\n var dx = Math.floor(model2px(d.x) * 100) / 100,\n dy = Math.floor(model2pxInv(d.y) * 100) / 100,\n lIndex, sIndex;\n if (!atomTracePath) {\n atomTracePath = \"M\" + dx + \",\" + dy + \"L\";\n return \"M \" + dx + \",\" + dy;\n } else {\n atomTracePath += dx + \",\" + dy + \" \";\n }\n\n // fake buffered array functionality by knocking out the first\n // element of the string when we get too big\n if (atomTracePath.length > 4000) {\n lIndex = atomTracePath.indexOf(\"L\");\n sIndex = atomTracePath.indexOf(\" \");\n atomTracePath = \"M\" + atomTracePath.slice(lIndex + 1, sIndex) + \"L\" + atomTracePath.slice(sIndex + 1);\n }\n return atomTracePath;\n }\n\n function updateAtomTrace() {\n atomTrace.attr({\n \"d\": getAtomTracePath\n });\n }\n\n function textDrag(d) {\n var dragDx = model2px.invert(d3.event.dx),\n dragDy = model2px.invert(d3.event.dy);\n\n if (!(AUTHORING && model.isStopped())) {\n // for now we don't have user-draggable textBoxes\n return;\n } else {\n d.x = d.x + dragDx;\n d.y = d.y - dragDy;\n updateTextBoxes();\n }\n }\n\n function setupBrowserWarning() {\n var b = benchmark.what_browser(); // we need to recalc this for FF, for some reason\n\n function setupWarningPane(testFunc, id, htmlContent) {\n if (!testFunc()) return;\n var $warning = modelView.$el.parent().find(\"#\" + id);\n if ($warning.length === 0) {\n $warning = $(\"
\" + htmlContent + \"
\");\n $warning.on(\"click\", function() {\n $(this).fadeOut();\n });\n $warning.appendTo(modelView.$el.parent());\n }\n var pos = modelView.pos();\n $warning.css({\n width: pos.width - 20,\n top: pos.bottom - $warning.height() - 10,\n left: pos.left + 10\n });\n }\n\n // Firefox 18-23 warning:\n setupWarningPane(function() {\n return b.browser === \"Firefox\" &&\n b.version >= \"18\" && b.version < \"23\";\n }, \"ff1823warning\", \"\" +\n \"Firefox v18-22 performance issue...)\");\n\n // Firefox 27 + Windows warning:\n setupWarningPane(function() {\n return b.browser === \"Firefox\" &&\n b.oscpu.indexOf(\"Windows\") !== -1 &&\n b.version >= \"27\" && b.version < \"28\";\n }, \"ff27warning\", \"Because of a problem in \" +\n \"Firefox 27 with certain types of graphics (SVG), you may see minor \" +\n \"visual problems with some models. We recommend using another browser \" +\n \"until Firefox 28 becomes available.\");\n\n // Safari 6.1 + DNA models warning:\n setupWarningPane(function() {\n return model.get(\"DNA\") &&\n b.browser === \"Safari\" &&\n b.version.indexOf(\"6.1\") === 0;\n }, \"saf61DNAwarning\", \"This model may have visual problems on Safari 6. We recommend \" +\n \"upgrading Safari, or using another browser.\");\n }\n\n function setupMiscOptions() {\n // These options are still used by the obstacle force arrows.\n forceVectorColor = model.get(\"forceVectors\").color;\n forceVectorWidth = model.get(\"forceVectors\").width;\n createVectorArrowHeads(forceVectorColor, \"force\");\n\n // Reset custom arrow heads.\n arrowHeadsCache = {};\n atomsContainer.selectAll(\".custom-arrow-head\").remove();\n\n atomTraceColor = model.get(\"atomTraceColor\");\n }\n\n function setupRendererOptions() {\n useQuantumDynamics = model.properties.useQuantumDynamics;\n if (useQuantumDynamics) {\n createExcitationGlow();\n }\n\n createSymbolImages();\n\n // Initialize renderers.\n geneticRenderer = new GeneticRenderer(modelView, model);\n }\n\n function photonPath(d) {\n var lineData = [],\n nPoints = 40,\n line = d3.svg.line()\n .x(function(d) {\n return model2px(0.5 / nPoints * d.x);\n })\n .y(function(d) {\n return model2px(0.1 * d.y);\n }),\n\n t = d.angularFrequency * 2 * Math.PI / nPoints,\n i;\n\n // Reference implementation:\n // https://github.com/concord-consortium/mw/blob/6e2f2d4630323b8e993fcfb531a3e7cb06644fef/src/org/concord/mw2d/models/Photon.java#L74-L79\n for (i = 0; i < nPoints; i++) {\n lineData.push({\n x: i - nPoints / 2,\n y: Math.sin(i * t) / (1 + 0.01 * (i - 0.5 * nPoints) * (i - 0.5 * nPoints))\n });\n }\n\n return line(lineData);\n }\n\n function photonColor(data) {\n // Reference implementation:\n // https://github.com/concord-consortium/mw/blob/6e2f2d4630323b8e993fcfb531a3e7cb06644fef/src/org/concord/mw2d/models/Photon.java#L185-L205\n var freq = data.angularFrequency;\n if (freq <= MIN_VISIBLE_FREQ || freq >= MAX_VISIBLE_FREQ) {\n return \"rgba(0,0,0,0.8)\"\n } else {\n var d = (MAX_VISIBLE_FREQ - MIN_VISIBLE_FREQ) / 7.0;\n var i = Math.floor((freq - MIN_VISIBLE_FREQ) / d);\n if (i === 6) {\n return \"rgb(\" + PHOTON_COLORS[i].join(',') + \")\";\n } else {\n var remainder = (freq - MIN_VISIBLE_FREQ - i * d) / d;\n var r1 = PHOTON_COLORS[i][0]; // red\n var r2 = PHOTON_COLORS[i + 1][0];\n var g1 = PHOTON_COLORS[i][1]; // green\n var g2 = PHOTON_COLORS[i + 1][1];\n var b1 = PHOTON_COLORS[i][2]; // blue\n var b2 = PHOTON_COLORS[i + 1][2];\n return \"rgb(\" + Math.floor(r1 + remainder * (r2 - r1)) + \",\" + Math.floor(g1 + remainder * (g2 - g1)) + \",\" + Math.floor(b1 + remainder * (b2 - b1)) + \")\";\n }\n }\n }\n\n function photonDashArray(data) {\n var freq = data.angularFrequency;\n if (freq <= MIN_VISIBLE_FREQ || freq >= MAX_VISIBLE_FREQ) {\n // SVG \"stroke-dasharray\" property value.\n return \"4,2\"\n } else {\n return null;\n }\n }\n\n function enterAndUpdatePhotons() {\n var photons = atomsContainer\n .selectAll(\".photon\")\n .data(model.getPhotons(), function(d) {\n return d.id;\n });\n\n photons.enter().append(\"path\")\n .attr({\n \"class\": \"photon\",\n \"d\": photonPath,\n \"stroke\": photonColor,\n \"stroke-dasharray\": photonDashArray,\n \"stroke-width\": model2px(0.011),\n \"fill-opacity\": 0\n });\n\n photons.exit().remove();\n\n photons.attr(\"transform\", function(d) {\n return \"translate(\" + model2px(d.x) + \", \" + model2pxInv(d.y) + \") \" +\n \"rotate(\" + d.angle + \")\";\n });\n\n }\n\n //\n // *** Main Renderer functions ***\n //\n\n //\n // MD2D Renderer: setup\n //\n\n function setup() {\n model2px = modelView.model2px;\n model2pxInv = modelView.model2pxInv;\n\n fontSizeInPixels = modelView.getFontSizeInPixels();\n\n modelAtoms = model.getAtoms();\n modelElectricField = model.getElectricField();\n modelElements = model.get_elements();\n modelWidth = model.get('width');\n modelHeight = model.get('height');\n aspectRatio = modelWidth / modelHeight;\n\n setupRendererOptions();\n\n // Subscribe for model events.\n model.addPropertiesListener([\"temperatureControl\", \"keShading\"], drawSymbolImages);\n\n function redrawClickableObjects(redrawOperation) {\n return function() {\n redrawOperation();\n // All objects where repainted (probably removed and added again), so\n // it's necessary to apply click handlers again.\n modelView.updateClickHandlers();\n };\n }\n\n function setupElectricField() {\n electricFieldRenderer.setup();\n modelView.renderCanvas();\n }\n\n // Redraw container each time when some visual-related property is changed.\n model.addPropertiesListener([\n \"chargeShading\", \"chargeShadingStyle\", \"showChargeSymbols\", \"useThreeLetterCode\",\n \"showAtomTrace\", \"atomTraceId\", \"aminoAcidColorScheme\",\n \"backgroundColor\", \"markColor\", \"forceVectorsDirectionOnly\"\n ],\n redrawClickableObjects(repaint));\n\n // Vectors:\n model.addPropertiesListener([\"electricFieldDensity\", \"showElectricField\", \"electricFieldColor\"],\n setupElectricField);\n model.addPropertiesListener([\"showVelocityVectors\", \"velocityVectors\"], function() {\n velocityVectorsRenderer.setup();\n modelView.renderCanvas();\n });\n model.addPropertiesListener([\"showForceVectors\", \"forceVectors\", \"forceVectorsDirectionOnly\"], function() {\n forceVectorsRenderer.setup();\n modelView.renderCanvas();\n });\n model.addPropertiesListener([\"showVDWLines\", \"VDWLinesCutoff\"], function() {\n vdwLinesRenderer.setup();\n modelView.renderCanvas();\n });\n\n model.on('addAtom', redrawClickableObjects(function() {\n atomsRenderer.setup();\n velocityVectorsRenderer.setup();\n forceVectorsRenderer.setup();\n electricFieldRenderer.update();\n modelView.renderCanvas();\n }));\n model.on('removeAtom', redrawClickableObjects(function() {\n atomsRenderer.setup();\n velocityVectorsRenderer.setup();\n forceVectorsRenderer.setup();\n electricFieldRenderer.update();\n modelView.renderCanvas();\n }));\n model.on('addRadialBond', redrawClickableObjects(function() {\n bondsRenderer.setup();\n modelView.renderCanvas();\n }));\n model.on('removeRadialBond', redrawClickableObjects(function() {\n bondsRenderer.setup();\n modelView.renderCanvas();\n }));\n model.on('textBoxesChanged', redrawClickableObjects(drawTextBoxes));\n model.on('imagesChanged', redrawClickableObjects(imagesRenderer.setup));\n model.on('addElectricField', setupElectricField);\n model.on('removeElectricField', setupElectricField);\n model.on('changeElectricField', setupElectricField);\n\n setupBrowserWarning();\n\n isSetup = true;\n }\n\n // Call when model is reset or reloaded.\n\n function bindModel(newModel) {\n model = newModel;\n atomsRenderer.bindModel(newModel);\n bondsRenderer.bindModel(newModel);\n vdwLinesRenderer.bindModel(newModel);\n imagesRenderer.bindModel(newModel);\n setup();\n }\n\n //\n // MD2D Renderer: repaint\n //\n // Call when container being rendered into changes size, in that case\n // pass in new D3 scales for model2px transformations.\n //\n // Also call when the number of objects changes such that the container\n // must be setup again.\n //\n\n function repaint(m2px, m2pxInv) {\n if (arguments.length) {\n model2px = m2px;\n model2pxInv = m2pxInv;\n }\n fontSizeInPixels = modelView.getFontSizeInPixels();\n\n setupMiscOptions();\n setupObstacles();\n atomsRenderer.setup();\n bondsRenderer.setup();\n vdwLinesRenderer.setup();\n setupShapes();\n setupLines();\n geneticRenderer.setup();\n velocityVectorsRenderer.setup();\n forceVectorsRenderer.setup();\n electricFieldRenderer.setup();\n setupAtomTrace();\n imagesRenderer.setup();\n drawTextBoxes();\n drawSymbolImages();\n setupBrowserWarning();\n if (useQuantumDynamics) {\n enterAndUpdatePhotons();\n }\n }\n\n //\n // MD2D Renderer: update\n //\n // Call to update visualization when model result state changes.\n // Normally called on every model tick.\n //\n\n function update() {\n console.time('view update');\n if (obstacles) {\n obstacle.attr(\"transform\", function(d, i) {\n return \"translate(\" + model2px(obstacles.x[i]) + \" \" + model2pxInv(obstacles.y[i] + obstacles.height[i]) + \")\";\n });\n }\n\n if (shapes) {\n shapeTop.attr(\"transform\", function(d) {\n return \"translate(\" + model2px(shapes.x[d.index]) + \" \" + model2pxInv(shapes.y[d.index] + shapes.height[d.index]) + \")\";\n });\n shapeBelow.attr(\"transform\", function(d) {\n return \"translate(\" + model2px(shapes.x[d.index]) + \" \" + model2pxInv(shapes.y[d.index] + shapes.height[d.index]) + \")\";\n });\n }\n\n atomsRenderer.update();\n bondsRenderer.update();\n vdwLinesRenderer.update();\n velocityVectorsRenderer.update();\n forceVectorsRenderer.update();\n electricFieldRenderer.update();\n\n if (drawAtomTrace) {\n updateAtomTrace();\n }\n if (model.properties.images && model.properties.images.length !== 0) {\n imagesRenderer.update();\n }\n if (textBoxes && textBoxes.length > 0 && !onlyStaticTextBoxes) {\n // Update text boxes properties only when at least one of them is attached to some movable\n // object like atom or obstacle.\n updateTextBoxes();\n }\n if (useQuantumDynamics) {\n enterAndUpdatePhotons();\n }\n console.timeEnd('view update');\n }\n\n //\n // Public API to instantiated Renderer\n //\n api = {\n // Expose private methods.\n setup: function() {\n if (!isSetup) {\n setup();\n }\n },\n\n update: function() {\n if (isSetup) {\n update();\n }\n },\n\n repaint: function() {\n if (isSetup) {\n repaint();\n }\n },\n\n bindModel: bindModel\n };\n\n return api;\n};\n","\nimport SVGContainer from 'common/views/svg-container';\nimport Renderer from 'models/md2d/views/renderer';\n\nexport default function(model, modelUrl, i18n) {\n return new SVGContainer(model, modelUrl, Renderer, {\n i18n: i18n\n });\n};\n","\nexport default function DNAEditDialog(model) {\n var api,\n $dialogDiv,\n $dnaTextInput,\n $originalDnaInput,\n $errorMsg,\n $submitButton,\n originalDNA = model.get(\"DNA\"),\n\n init = function() {\n // Basic dialog elements.\n $dialogDiv = $('
');\n $('
Enter DNA sequence below
').appendTo($dialogDiv);\n $('
 
').appendTo($dialogDiv);\n $originalDnaInput = $('');\n $originalDnaInput.val(originalDNA);\n $('
Original sequence
').append($originalDnaInput).appendTo($dialogDiv);\n $dnaTextInput = $('');\n $('
Edited sequence
').prepend($dnaTextInput).appendTo($dialogDiv);\n $errorMsg = $('

');\n $errorMsg.appendTo($dialogDiv);\n\n // jQuery UI Dialog.\n $dialogDiv.dialog({\n dialogClass: \"dna-edit-dialog\",\n // Ensure that font is being scaled dynamically.\n appendTo: \".lab-responsive-content\",\n title: \"DNA Sequence\",\n autoOpen: false,\n width: \"35em\",\n buttons: {\n \"Apply\": function() {\n model.set({\n DNA: $dnaTextInput.val()\n });\n $(this).dialog(\"close\");\n }\n }\n });\n\n // Dynamic validation on input.\n $submitButton = $(\".dna-edit-dialog button:contains('Apply')\");\n $dnaTextInput.on(\"input\", function() {\n try {\n model.getPropertyValidateFunc(\"DNA\")($dnaTextInput.val());\n $submitButton.button(\"enable\");\n $errorMsg.text(\"\");\n } catch (e) {\n $submitButton.button(\"disable\");\n $errorMsg.text(e.message);\n }\n });\n };\n\n api = {\n open: function() {\n // Clear previous errors.\n $errorMsg.text(\"\");\n $submitButton.removeAttr(\"disabled\");\n // Set current value of DNA code.\n $dnaTextInput.val(model.get(\"DNA\"));\n $dialogDiv.dialog(\"open\");\n },\n bindModel: function(newModel) {\n if (newModel !== model) {\n model = newModel;\n // Model has changed, so update original DNA too.\n originalDNA = model.get(\"DNA\");\n $originalDnaInput.val(originalDNA);\n }\n }\n };\n\n init();\n\n return api;\n};\n"," \nimport DNAEditDialog from 'models/md2d/views/dna-edit-dialog';\n\n\n/**\n Define the model-specific MD2D scripting API used by 'action' scripts on interactive elements.\n\n The universal Interactive scripting API is extended with the properties of the\n object below which will be exposed to the interactive's 'action' scripts as if\n they were local vars. All other names (including all globals, but excluding\n Javascript builtins) will be unavailable in the script context; and scripts\n are run in strict mode so they don't accidentally expose or read globals.\n\n @param: parent Scripting API\n*/\nexport default function MD2DScriptingAPI(parent) {\n\n var dnaEditDialog = null,\n // whether we are currently processing a batch command, suppresses repaint\n batchDepth = 0;\n\n var setProperty = function() {\n var setter = arguments[0],\n i = arguments[1],\n args;\n\n if (Array.isArray(i)) {\n args = Array.prototype.slice.call(arguments, 2, arguments.length);\n parent.api.batch(function() {\n for (var j = 0, jj = i[0]; j < i.length; jj = i[++j]) {\n setter.apply(null, Array.prototype.concat(jj, args));\n }\n });\n } else {\n args = Array.prototype.slice.call(arguments, 1, arguments.length);\n setter.apply(null, args);\n }\n parent.api.repaintIfReady();\n };\n\n function createModelAdder(methodName) {\n return function modelAdder(props, options) {\n try {\n parent.model[methodName].call(parent.model, props);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n parent.api.repaintIfReady();\n };\n }\n\n return {\n\n getCurrentComputerTime: function() {\n return Date.now();\n },\n\n /* Returns number of atoms in the system. */\n getNumberOfAtoms: function getNumberOfAtoms(f) {\n return parent.model.getNumberOfAtoms(f);\n },\n\n /* Returns number of obstacles in the system. */\n getNumberOfObstacles: function getNumberOfObstacles() {\n return parent.model.getNumberOfObstacles();\n },\n\n /* Returns number of elements in the system. */\n getNumberOfElements: function getNumberOfElements() {\n return parent.model.getNumberOfElements();\n },\n\n /* Returns number of radial bonds in the system. */\n getNumberOfRadialBonds: function getNumberOfRadialBonds() {\n return parent.model.getNumberOfRadialBonds();\n },\n\n /* Returns number of angular bonds in the system. */\n getNumberOfAngularBonds: function getNumberOfAngularBonds() {\n return parent.model.getNumberOfAngularBonds();\n },\n\n addAtom: function addAtom(props) {\n return parent.model.addAtom(props);\n },\n\n /*\n Removes atom 'i'.\n */\n removeAtom: function removeAtom(i, options) {\n try {\n parent.model.removeAtom(i, options);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n },\n\n /*\n Removes radial bond 'i'.\n */\n removeRadialBond: function removeRadialBond(i, options) {\n try {\n parent.model.removeRadialBond(i);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n\n parent.api.repaintIfReady();\n },\n\n /*\n Removes angular bond 'i'.\n */\n removeAngularBond: function removeAngularBond(i, options) {\n try {\n parent.model.removeAngularBond(i);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n\n parent.api.repaintIfReady();\n },\n\n /*\n Adds radial bond with properties 'props'.\n */\n addRadialBond: function addRadialBond(props) {\n parent.model.addRadialBond(props);\n\n parent.api.repaintIfReady();\n },\n\n addRestraint: function addRestraint(props) {\n parent.model.addRestraint(props);\n parent.api.repaintIfReady();\n },\n\n setRestraintProperties: function setRestraintProperties(i, props) {\n parent.model.setRestraintProperties(i, props);\n parent.api.repaintIfReady();\n },\n\n /*\n Adds angular bond with properties 'props'.\n */\n addAngularBond: function addAngularBond(props) {\n parent.model.addAngularBond(props);\n\n parent.api.repaintIfReady();\n },\n\n addRandomAtom: function addRandomAtom() {\n return parent.model.addRandomAtom.apply(parent.model, arguments);\n },\n\n adjustTemperature: function adjustTemperature(fraction) {\n parent.model.set({\n targetTemperature: fraction * parent.model.get('targetTemperature')\n });\n },\n\n /**\n * Scales the velocity of all atoms to the desired temperature T.\n * @param {number} T defined in K\n */\n setTemperatureOfAllAtoms: function setTemperatureOfAllAtoms(T) {\n var atomIndices = [];\n for (var i = 0; i < parent.model.getNumberOfAtoms(); i++) {\n atomIndices.push(i);\n }\n parent.model.setTemperatureOfAtoms(atomIndices, T);\n },\n\n /**\n * Scales the velocity of a group of atoms to the desired temperature T.\n * @param {array} atomIndices\n * @param {number} T defined in K\n */\n setTemperatureOfAtoms: function setTemperatureOfAtoms(atomIndices, T) {\n parent.model.setTemperatureOfAtoms(atomIndices, T);\n },\n\n /**\n * Adds energy defined in eV to a group of atoms.\n * @param {number} energy defined in eV\n * @param {array} atomIndices optional, if undefined, KE will be added to all atoms\n */\n addKEToAtoms: function addKEToAtoms(energy, atomIndices) {\n parent.model.addKEToAtoms(energy, atomIndices);\n },\n\n getTemperatureOfAllAtoms: function getTemperatureOfAllAtoms() {\n var atomIndices = [];\n for (var i = 0; i < parent.model.getNumberOfAtoms(); i++) {\n atomIndices.push(i);\n }\n return parent.model.getTemperatureOfAtoms(atomIndices);\n },\n\n getTemperatureOfAtoms: function getTemperatureOfAtoms(atomIndices) {\n return parent.model.getTemperatureOfAtoms(atomIndices);\n },\n\n limitHighTemperature: function limitHighTemperature(t) {\n if (parent.model.get('targetTemperature') > t) parent.model.set({\n targetTemperature: t\n });\n },\n\n /** returns a list of integers corresponding to atoms in the system */\n randomAtoms: function randomAtoms(n) {\n var numAtoms = parent.model.getNumberOfAtoms();\n\n if (n === null) n = 1 + parent.api.randomInteger(numAtoms - 1);\n\n if (!parent.api.isInteger(n)) throw new Error(\"randomAtoms: number of atoms requested, \" + n + \", is not an integer.\");\n if (n < 0) throw new Error(\"randomAtoms: number of atoms requested, \" + n + \", was less be greater than zero.\");\n\n if (n > numAtoms) n = numAtoms;\n return parent.api.choose(n, numAtoms);\n },\n\n /**\n Quantum Dynamics\n */\n\n /** Turn on quantum dynamics light source. */\n turnOnLightSource: function turnOnLightSource() {\n parent.model.turnOnLightSource();\n },\n\n turnOffLightSource: function turnOffLightSource() {\n parent.model.turnOffLightSource();\n },\n\n setLightSourceAngle: function setLightSourceAngle(angle) {\n parent.model.setLightSourceAngle(angle);\n },\n\n setLightSourceFrequency: function setLightSourceFrequency(freq) {\n parent.model.setLightSourceFrequency(freq);\n },\n\n setLightSourcePeriod: function setLightSourcePeriod(period) {\n parent.model.setLightSourcePeriod(period);\n },\n\n setLightSourceNumber: function setLightSourceNumber(number) {\n parent.model.setLightSourceNumber(number);\n },\n\n /**\n * Chemical Reactions\n */\n\n /**\n * Sets bond energy (dissociation energy) of a bond.\n * @param {string} bondDescription e.g. \"1-1\" means single bond between element 1 and 1,\n * \"1=2\" means double bond between element 1 and 2 etc.\n * @param {number} value bond energy in eV\n */\n setBondEnergy: function setBondEnergy(bondDescription, value) {\n parent.model.setBondEnergy(bondDescription, value);\n },\n\n /**\n * Sets valence electrons count of the given element.\n * @param {number} element\n * @param {number} value\n */\n setValenceElectrons: function setVelenceElectrons(element, value) {\n parent.model.setValenceElectrons(element, value);\n parent.api.repaintIfReady();\n },\n\n /**\n * Returns array of atom indices within circular area,\n * optionally specifying an element of interest.\n * e.g. atomsWithinCircle(1, 1, 0.5) returns all atoms within 0.5 nm of position (1nm, 1nm).\n * @param {number} x X coordinate of the circle center.\n * @param {number} y Y coordinate of the circle center.\n * @param {number} w Radius of the circle.\n * @param {number} element Optional ID of the desired element type.\n * @return {Array} Array of atoms indices within a given area.\n */\n atomsWithinCircle: function(x, y, r, element) {\n var result = [],\n props, dist, i, len;\n\n for (i = 0, len = parent.model.getNumberOfAtoms(); i < len; i++) {\n props = parent.model.getAtomProperties(i);\n if (typeof element !== 'undefined' && props.element !== element) continue;\n dist = Math.sqrt(Math.pow(x - props.x, 2) + Math.pow(y - props.y, 2));\n if (dist <= r) {\n result.push(i);\n }\n }\n return result;\n },\n\n /**\n * Returns array of atom indices within rectangular area,\n * optionally specifying an element of interest.\n * e.g. atomsWithinRect(1, 1, 0.2, 0.3) returns all atoms within a rectangle of width 0.2nm\n * by height 0.3nm, with the bottom-left corner specified by the postion (1nm, 1nm).\n * @param {number} x X coordinate of the bottom-left rectangle corner.\n * @param {number} y Y coordinate of the bottom-left rectangle corner.\n * @param {number} w Width of the rectangle.\n * @param {number} h Height of the rectangle.\n * @param {number} element Optional ID of the desired element type.\n * @return {Array} Array of atoms indices within a given area.\n */\n atomsWithinRect: function(x, y, w, h, element) {\n var result = [],\n props, dist, inX, inY, i, len;\n\n for (i = 0, len = parent.model.getNumberOfAtoms(); i < len; i++) {\n props = parent.model.getAtomProperties(i);\n if (typeof element !== 'undefined' && props.element !== element) continue;\n if (typeof h === 'undefined') {\n dist = Math.sqrt(Math.pow(x - props.x, 2) + Math.pow(y - props.y, 2));\n if (dist <= w) {\n result.push(i);\n }\n } else {\n inX = ((props.x >= x) && (props.x <= (x + w)));\n inY = ((props.y >= y) && (props.y <= (y + h)));\n if (inX && inY) {\n result.push(i);\n }\n }\n }\n return result;\n },\n\n /**\n * Returns an array of atom indices within triangular area,\n * optionally specifying an element ID of interest.\n *\n * @param {number} ax X coordinate of 1st triangle vertex.\n * @param {number} ay Y coordinate of 1st triangle vertex.\n * @param {number} bx X coordinate of 2nd triangle vertex.\n * @param {number} by Y coordinate of 2nd triangle vertex.\n * @param {number} cx X coordinate of 3rd triangle vertex.\n * @param {number} cy Y coordinate of 3rd triangle vertex.\n * @param {number} element Optional ID of the desired element type.\n * @return {Array} Array of atoms indices within a given area.\n */\n atomsWithinTriangle: function(ax, ay, bx, by, cx, cy, element) {\n var result = [],\n props, i, len;\n\n function isInTriangle(px, py) {\n // See: http://www.blackpawn.com/texts/pointinpoly/default.html\n var v0 = [cx - ax, cy - ay],\n v1 = [bx - ax, by - ay],\n v2 = [px - ax, py - ay],\n\n dot00 = (v0[0] * v0[0]) + (v0[1] * v0[1]),\n dot01 = (v0[0] * v1[0]) + (v0[1] * v1[1]),\n dot02 = (v0[0] * v2[0]) + (v0[1] * v2[1]),\n dot11 = (v1[0] * v1[0]) + (v1[1] * v1[1]),\n dot12 = (v1[0] * v2[0]) + (v1[1] * v2[1]),\n\n invDenom = 1 / (dot00 * dot11 - dot01 * dot01),\n\n u = (dot11 * dot02 - dot01 * dot12) * invDenom,\n v = (dot00 * dot12 - dot01 * dot02) * invDenom;\n\n return ((u >= 0) && (v >= 0) && (u + v < 1));\n }\n\n for (i = 0, len = parent.model.getNumberOfAtoms(); i < len; i++) {\n props = parent.model.getAtomProperties(i);\n if (typeof element !== 'undefined' && props.element !== element) continue;\n if (isInTriangle(props.x, props.y)) {\n result.push(i);\n }\n }\n return result;\n },\n\n /**\n Accepts atom indices as arguments, or an array containing atom indices.\n Unmarks all atoms, then marks the requested atom indices.\n Repaints the screen to make the marks visible.\n */\n markAtoms: function markAtoms(indices) {\n var i,\n len;\n\n if (arguments.length === 0) return;\n\n // allow passing a list of arguments instead of an array of atom indices\n if (!parent.api.isArray(arguments[0])) {\n indices = arguments;\n }\n\n parent.api.unmarkAllAtoms();\n\n // mark the requested atoms\n for (i = 0, len = indices.length; i < len; i++) {\n parent.model.setAtomProperties(indices[i], {\n marked: 1\n });\n }\n parent.api.repaintIfReady();\n },\n\n unmarkAllAtoms: function unmarkAllAtoms() {\n for (var i = 0, len = parent.model.getNumberOfAtoms(); i < len; i++) {\n parent.model.setAtomProperties(i, {\n marked: 0\n });\n }\n parent.api.repaintIfReady();\n },\n\n traceAtom: function traceAtom(i) {\n if (i === null) return;\n\n parent.model.set({\n atomTraceId: i\n });\n parent.model.set({\n showAtomTrace: true\n });\n },\n\n untraceAtom: function untraceAtom() {\n parent.model.set({\n showAtomTrace: false\n });\n },\n\n /**\n Sets individual atom properties using human-readable hash.\n e.g. setAtomProperties(5, {x: 1, y: 0.5, charge: 1})\n */\n setAtomProperties: function setAtomProperties(i, props, checkLocation, moveMolecule) {\n setProperty(parent.model.setAtomProperties, i, props, checkLocation, moveMolecule);\n },\n\n /**\n * Returns atom transition object. It can be used to smoothly change\n * atom properties over specified time. It's similar to D3 transitions.\n *\n * Atom transition object provides following methods:\n * id(id) - sets ID of the atom (required!).\n * duration(d) - sets duration in ms (required!).\n * prop(name, val) - sets property name and its final value (required!).\n * delay(d) - sets delay in ms (default is 0).\n * ease(name) - sets easing function (default is \"cubic-in-out\").\n * Please see:\n * https://github.com/mbostock/d3/wiki/Transitions#wiki-d3_ease\n *\n * e.g.\n * atomTransition().id(0).duration(1000).ease(\"linear\").prop(\"x\", 10);\n *\n * This will change \"x\" property of the atom with ID=0\n * to value 10 over 1000ms using linear easing function.\n *\n * @return {AtomTransition} AtomTransition instance.\n */\n atomTransition: function atomTransition() {\n return parent.model.atomTransition();\n },\n\n /**\n Returns atom properties as a human-readable hash.\n e.g. getAtomProperties(5) --> {x: 1, y: 0.5, charge: 1, ... }\n */\n getAtomProperties: function getAtomProperties(i) {\n return parent.model.getAtomProperties(i);\n },\n\n /**\n Returns an array consisting of radial bonds indices for the atom\n e.g. getRadialBondsForAtom(5) --> [2]\n */\n getRadialBondsForAtom: function getRadialBondsForAtom(i) {\n return parent.model.getRadialBondsForAtom(i);\n },\n\n /**\n Returns an array consisting of the angular bonds indices for the atom\n e.g. getAngularBondsForAtom(5) --> [6, 8]\n */\n getAngularBondsForAtom: function getAngularBondsForAtom(i) {\n return parent.model.getAngularBondsForAtom(i);\n },\n\n /**\n Returns all atoms in the same molecule as atom i\n (not including i itself)\n */\n getMoleculeAtoms: function getMoleculeAtoms(i) {\n return parent.model.getMoleculeAtoms(i);\n },\n\n setElementProperties: function setElementProperties(i, props) {\n setProperty(parent.model.setElementProperties, i, props);\n },\n\n /**\n Sets custom pairwise LJ properties (epsilon or sigma), which will\n be used instead of the mean values of appropriate element properties.\n i, j - IDs of the elements which should have custom pairwise LJ properties.\n props - object containing sigma, epsilon or both.\n e.g. setPairwiseLJProperties(0, 1, {epsilon: -0.2})\n */\n setPairwiseLJProperties: function setPairwiseLJProperties(i, j, props) {\n parent.model.getPairwiseLJProperties().set(i, j, props);\n },\n\n /**\n Removes custom pairwise LJ properties, reverting it to the default calculation.\n */\n removePairwiseLJProperties: function removePairwiseLJProperties(i, j) {\n parent.model.getPairwiseLJProperties().remove(i, j);\n },\n\n getElementProperties: function getElementProperties(i) {\n return parent.model.getElementProperties(i);\n },\n\n getAminoAcid: function getAminoAcidByElement(i) {\n return parent.model.getAminoAcidByElement(i);\n },\n\n /**\n Adds an obstacle/shape/line using human-readable hash of properties.\n e.g. addObstacle({x: 1, y: 0.5, width: 1, height: 1})\n */\n addObstacle: createModelAdder(\"addObstacle\"),\n addShape: createModelAdder(\"addShape\"),\n addLine: createModelAdder(\"addLine\"),\n\n /**\n Sets individual obstacle properties using human-readable hash.\n e.g. setObstacleProperties(0, {x: 1, y: 0.5, externalAx: 0.00001})\n */\n setObstacleProperties: function setObstacleProperties(i, props) {\n setProperty(parent.model.setObstacleProperties, i, props);\n },\n\n /**\n Returns obstacle properties as a human-readable hash.\n e.g. getObstacleProperties(0) --> {x: 1, y: 0.5, externalAx: 0.00001, ... }\n */\n getObstacleProperties: function getObstacleProperties(i) {\n return parent.model.getObstacleProperties(i);\n },\n\n /**\n Removes obstacle 'i'.\n */\n removeObstacle: function removeObstacle(i, options) {\n try {\n parent.model.removeObstacle(i);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n\n parent.api.repaintIfReady();\n },\n\n setShapeProperties: function setShapeProperties(i, props) {\n setProperty(parent.model.setShapeProperties, i, props);\n },\n\n getShapeProperties: function getShapeProperties(i) {\n return parent.model.getShapeProperties(i);\n },\n\n setLineProperties: function setLineProperties(i, props) {\n setProperty(parent.model.setLineProperties, i, props);\n },\n\n getLineProperties: function getLineProperties(i) {\n return parent.model.getLineProperties(i);\n },\n\n addElectricField: function addElectricField(props, options) {\n try {\n parent.model.addElectricField(props);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n },\n\n removeElectricField: function removeElectricField(i, options) {\n try {\n parent.model.removeElectricField(i);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n },\n\n setElectricFieldProperties: function setElectricFieldProperties(i, props) {\n parent.model.setElectricFieldProperties(i, props);\n },\n\n getElectricFieldProperties: function getElectricFieldProperties(i) {\n return parent.model.getElectricFieldProperties(i);\n },\n\n getAtomsWithinShape: function getAtomsInsideShape(i) {\n var props = parent.model.getShapeProperties(i);\n return this.atomsWithinRect(props.x, props.y, props.width, props.height);\n },\n\n removeShape: function removeShape(i, options) {\n try {\n parent.model.removeShape(i);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n parent.api.repaintIfReady();\n },\n\n removeLine: function removeLine(i, options) {\n try {\n parent.model.removeLine(i);\n } catch (e) {\n if (!options || !options.silent)\n throw e;\n }\n parent.api.repaintIfReady();\n },\n\n setRadialBondProperties: function setRadialBondProperties(i, props) {\n parent.model.setRadialBondProperties(i, props);\n parent.api.repaintIfReady();\n },\n\n getRadialBondProperties: function getRadialBondProperties(i) {\n return parent.model.getRadialBondProperties(i);\n },\n\n setAngularBondProperties: function setAngularBondProperties(i, props) {\n parent.model.setAngularBondProperties(i, props);\n parent.api.repaintIfReady();\n },\n\n getAngularBondProperties: function getAngularBondProperties(i) {\n return parent.model.getAngularBondProperties(i);\n },\n\n /**\n Opens DNA properties dialog, which allows to set DNA code.\n */\n openDNADialog: function openDNADialog() {\n if (dnaEditDialog == null) {\n dnaEditDialog = new DNAEditDialog(parent.model);\n }\n dnaEditDialog.bindModel(parent.model);\n dnaEditDialog.open();\n },\n\n /**\n * Jumps to the next DNA state.\n *\n * Note that jumping between translation states is not supported!\n * Please use animateToNextDNAState if you need to change state\n * from translation:x to translation:x+1.\n */\n jumpToNextDNAState: function jumpToNextDNAState() {\n parent.model.geneticEngine().jumpToNextState();\n },\n\n /**\n * Jumps to the next DNA state.\n *\n * Note that jumping between translation states is not supported!\n * When current state is translation:x, where x > 0, this functions\n * will cause jump to translation:0 state.\n */\n jumpToPrevDNAState: function jumpToPrevDNAState() {\n parent.model.geneticEngine().jumpToPrevState();\n },\n\n /**\n * Tests whether *current* DNA state is before state\n * passed as an argument.\n * @param {String} state DNA state name, e.g. \"translation:5\".\n * @return {boolean} true if current state is before 'state',\n * false otherwise.\n */\n DNAStateBefore: function DNAStateBefore(state) {\n return parent.model.geneticEngine().stateBefore(state);\n },\n\n /**\n * Tests whether *current* DNA state is after state\n * passed as an argument.\n * @param {String} state DNA state name, e.g. \"translation:5\".\n * @return {boolean} true if current state is after 'state',\n * false otherwise.\n */\n DNAStateAfter: function DNAStateAfter(state) {\n return parent.model.geneticEngine().stateAfter(state);\n },\n\n /**\n * Triggers animation to the next DNA state.\n *\n * Note that this is the only possible way to change state\n * from translation:x to translation:x+1. Jumping between\n * translation states is not supported!\n */\n animateToNextDNAState: function animateToNextDNAState() {\n parent.model.geneticEngine().transitionToNextState();\n },\n\n /**\n * Triggers animation to the given DNA state.\n * If current DNA state is after the desired state,\n * nothing happens.\n * e.g.\n * get('DNAState'); // transcription:0\n * animateToDNAState(\"transcription-end\") // triggers animation\n * However:\n * get('DNAState'); // translation-end\n * animateToDNAState(\"transcription-end\") // nothing happens\n *\n * @param {string} stateName name of the state.\n */\n animateToDNAState: function animateToDNAState(stateName) {\n parent.model.geneticEngine().transitionTo(stateName);\n },\n\n /**\n * Stops current DNA animation.\n */\n stopDNAAnimation: function stopDNAAnimation() {\n // Jumping to previous state will cancel current animation\n // and cleanup transitions queue.\n parent.model.geneticEngine().stopTransition();\n },\n\n /**\n * Triggers only one step of DNA transcription.\n * This method also accepts optional parameter - expected nucleotide.\n * When it's available, transcription step will be performed only\n * when passed nucleotide code matches nucleotide, which should\n * be actually joined to mRNA in this transcription step. When\n * expected nucleotide code is wrong, this method does nothing.\n *\n * e.g.\n * transcribeDNAStep(\"A\") will perform transcription step only\n * if \"A\" nucleotide should be added to mRNA in this step.\n *\n * @param {string} expectedNucleotide code of the expected nucleotide (\"U\", \"C\", \"A\" or \"G\").\n */\n transcribeDNAStep: function transcribeDNAStep(expectedNucleotide) {\n var ge = parent.model.geneticEngine();\n if (ge.stateBefore(\"dna\") || ge.stateAfter(\"transcription-end\")) {\n // Jump to beginning of DNA transcription if current state is before\n // or after transcrption process (so, state is different from:\n // \"dna\", \"transcription:0\", ..., \"transcription-end\").\n parent.model.set(\"DNAState\", \"dna\");\n ge.transitionTo(\"transcription:0\");\n ge.transcribeStep(expectedNucleotide);\n } else if (parent.model.get(\"DNAState\") !== \"transcription-end\") {\n // Proceed to the next step.\n ge.transcribeStep(expectedNucleotide);\n }\n },\n\n /**\n * Triggers only one step of DNA translation.\n */\n translateDNAStep: function translateDNAStep() {\n var ge = parent.model.geneticEngine();\n if (ge.stateBefore(\"translation:0\") || ge.stateAfter(\"translation-end\")) {\n // Animate directly to the translation:0, merge a few shorter\n // animations.\n parent.model.set(\"DNAState\", \"translation:0\");\n ge.transitionTo(\"translation:1\");\n } else if (parent.model.get(\"DNAState\") !== \"translation-end\") {\n // Proceed to the next step.\n ge.transitionToNextState();\n }\n },\n\n /**\n * Generates a random protein. It removes all existing atoms before.\n *\n * @param {[type]} expectedLength controls the maximum (and expected) number of amino acids of\n * the resulting protein. When expected length is too big\n * (due to limited area of the model), protein will be truncated\n * and warning shown.\n */\n generateRandomProtein: function(expectedLength) {\n var realLength = parent.model.geneticEngine().generateProtein(undefined, expectedLength);\n\n if (realLength !== expectedLength) {\n throw new Error(\"Generated protein was truncated due to limited area of the parent.model. Only\" +\n realLength + \" amino acids were generated.\");\n }\n },\n\n /**\n Sets solvent. You can use three predefined solvents: \"water\", \"oil\" or \"vacuum\".\n This is only a convenience method. The same effect can be achieved by manual setting\n of 'solventForceFactor', 'dielectricConstant' and 'backgroundColor' properties.\n */\n setSolvent: function setSolvent(type) {\n parent.model.setSolvent(type);\n },\n\n pe: function pe() {\n return parent.model.get('potentialEnergy');\n },\n\n ke: function ke() {\n return parent.model.get('kineticEnergy');\n },\n\n atomsKe: function atomsKe(atomsList) {\n var sum = 0,\n i;\n for (i = 0; i < atomsList.length; i++) {\n sum += parent.model.getAtomKineticEnergy(atomsList[i]);\n }\n return sum;\n },\n\n minimizeEnergy: function minimizeEnergy() {\n parent.model.minimizeEnergy();\n parent.api.repaintIfReady();\n },\n\n addTextBox: function(props) {\n parent.model.addTextBox(props);\n },\n\n removeTextBox: function(i) {\n parent.model.removeTextBox(i);\n },\n\n setTextBoxProperties: function(i, props) {\n parent.model.setTextBoxProperties(i, props);\n },\n\n getTextBoxProperties: function(i) {\n return parent.model.getTextBoxProperties(i);\n },\n\n getNumberOfTextBoxes: function() {\n return parent.model.getNumberOfTextBoxes();\n },\n\n getNumberOfLines: function() {\n return parent.model.getNumberOfLines();\n },\n\n getNumberOfShapes: function() {\n return parent.model.getNumberOfShapes();\n },\n\n addImage: function(props) {\n parent.model.addImage(props);\n },\n\n removeImage: function(i) {\n parent.model.removeImage(i);\n },\n\n getImageProperties: function(i) {\n return parent.model.getImageProperties(i);\n },\n\n setImageProperties: function(i, props) {\n setProperty(parent.model.setImageProperties, i, props);\n },\n\n repaintIfReady: function() {\n if (batchDepth === 0) {\n parent.api.repaint();\n }\n },\n\n batch: function(func) {\n ++batchDepth;\n\n parent.model.startBatch();\n func();\n parent.model.endBatch();\n\n --batchDepth;\n\n // call repaint manually\n parent.api.repaintIfReady();\n }\n\n };\n\n};\n","\nimport performance from \"common/performance\";\n\nvar TEST_TIME = 5000,\n WARMUP_TIME = 1000;\n\nexport default function Benchmarks(controller) {\n var startCounter;\n\n return [{\n name: \"atoms\",\n numeric: true,\n run: function(done) {\n done(controller.model.getNumberOfAtoms());\n }\n }, {\n name: \"temperature\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(controller.model.get(\"temperature\"));\n }\n }, {\n name: \"engine (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n // warmup\n controller.model.start();\n setTimeout(function() {\n controller.model.stop();\n\n performance.collectData(true);\n startCounter = controller.model.stepCounter();\n\n setTimeout(function() {\n // actual fps calculation\n controller.model.start();\n setTimeout(function() {\n controller.model.stop();\n\n performance.collectData(false);\n done(performance.getAvgTime(\"engine\"));\n\n }, TEST_TIME);\n }, 100);\n }, WARMUP_TIME);\n }\n }, {\n name: \"JS rendering (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"js-rendering\"));\n }\n }, {\n name: \"tick (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"tick\"));\n }\n }, {\n name: \"gap b/w frames (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"gap\"));\n }\n }, {\n name: \"fps\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done((controller.model.stepCounter() - startCounter) * 1000 / TEST_TIME);\n }\n }];\n};\n","import ModelController from \"common/controllers/model-controller\";\nimport Model from 'models/md2d/models/modeler';\nimport ModelContainer from 'models/md2d/views/view';\nimport ScriptingAPI from 'models/md2d/controllers/scripting-api';\nimport Benchmarks from 'models/md2d/benchmarks/benchmarks';\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n return new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI, Benchmarks);\n}\n","\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"signal-generator\",\n immutable: true\n },\n frequency: {\n defaultValue: 1,\n unitType: \"frequency\",\n propertyChangeInvalidates: true\n },\n modelSampleRate: {\n defaultValue: 60,\n propertyChangeInvalidates: true\n },\n timeScale: {\n defaultValue: 1,\n unitType: \"time\",\n propertyChangeInvalidates: true\n },\n sampleBatchLength: {\n defaultValue: 1,\n propertyChangeInvalidates: false\n },\n useDuration: {\n defaultValue: 'codap',\n storeInTickHistory: false,\n validate: function(value) {\n if (value === true || value === false || value === 'codap') {\n return value;\n }\n throw new Error(\"Invalid 'useDuration' value: \" + value);\n },\n },\n requestedDuration: {\n defaultValue: null,\n storeInTickHistory: false\n }\n },\n viewOptions: {\n showClock: {\n defaultValue: true,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"play_reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n }\n }\n};\n","\nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport metadata from 'models/signal-generator/metadata';\n\nvar unitsDefinition = {\n units: {\n time: {\n name: \"second\",\n pluralName: \"seconds\",\n symbol: \"s\"\n },\n frequency: {\n name: \"Hertz\",\n pluralName: \"Hertz\",\n symbol: \"Hz\"\n },\n angle: {\n name: \"radian\",\n pluralName: \"radians\",\n symbol: \"rad\"\n }\n }\n };\n\nexport default function Model(initialProperties) {\n var customSetters = {\n // Ensure that phase + (time * angular frequency) remains unchanged when the frequency changes.\n // This makes for continuous signals.\n frequency: function(newFrequency) {\n if (lastFrequency !== undefined) {\n phase = constrain(phase + 2 * Math.PI * (lastFrequency - newFrequency) * model.properties.time);\n }\n lastFrequency = newFrequency;\n }\n },\n\n labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n setters: customSetters,\n unitsDefinition: unitsDefinition,\n initialProperties: initialProperties\n }),\n dispatch = labModelerMixin.dispatchSupport,\n\n lastFrequency,\n phase = 0,\n times = [],\n stepCounter = 0,\n timesIndex = -1,\n model;\n\n function constrain(angle) {\n return angle - 2 * Math.PI * Math.floor(angle / (2 * Math.PI));\n }\n\n function angle(time) {\n return constrain(phase + 2 * Math.PI * model.properties.frequency * time);\n }\n\n function getIndexWithDefault(array, index, defaultValue) {\n return index < 0 ? defaultValue : array[index];\n }\n\n model = {\n\n tick: function() {\n var intervalLength = 1000 / model.properties.modelSampleRate;\n var lastTime = getIndexWithDefault(times, times.length - 1, 0);\n\n times.push(lastTime + 0.001 * intervalLength * model.properties.timeScale);\n\n stepCounter++;\n\n if (stepCounter % model.properties.sampleBatchLength === 0) {\n while (timesIndex < times.length - 1) {\n timesIndex++;\n model.updateAllOutputProperties();\n dispatch.tick();\n }\n }\n },\n\n stepCounter: function() {\n return stepCounter;\n },\n\n reset: function() {\n dispatch.reset();\n // TODO\n }\n\n };\n\n dispatch.addEventTypes(\"tick\");\n dispatch.addEventTypes('reset');\n\n labModelerMixin.mixInto(model);\n\n model.on('play.model', model.makeInvalidatingChange);\n model.on('stop.model', model.makeInvalidatingChange);\n\n model.defineOutput('isPlayable', {\n label: \"Playable\"\n }, function() {\n return model.isReady && model.isStopped();\n });\n\n model.defineOutput('hasPlayed', {\n label: \"has Played\"\n }, function() {\n return model.hasPlayed;\n });\n\n model.defineOutput('timePerTick', {\n label: \"Model time per tick\",\n unitType: 'time',\n format: '.2f'\n }, function() {\n return 1 / model.properties.modelSampleRate * model.properties.timeScale;\n });\n\n model.defineOutput('time', {\n label: \"Time\",\n unitType: 'time',\n format: '.2f'\n }, function() {\n return getIndexWithDefault(times, timesIndex, 0);\n });\n\n model.defineOutput('displayTime', {\n label: \"Time\",\n unitType: 'time',\n format: '.2f'\n }, function() {\n return getIndexWithDefault(times, timesIndex, 0);\n });\n\n model.defineOutput('signalValue', {\n label: \"Signal Value\",\n format: '.2f'\n }, function() {\n var time = getIndexWithDefault(times, timesIndex, 0);\n return Math.cos(angle(time));\n });\n\n model.defineOutput('angle', {\n label: \"Angle\",\n unitType: 'angle',\n format: '.2f'\n }, function() {\n var time = getIndexWithDefault(times, timesIndex, 0);\n return angle(time);\n });\n\n return model;\n};\n","\n/**\n For use with models that do not need an associated view, but which (at least for now) are required\n by the common ModelController to have a ModelContainer which has an $el property and which\n responds to certain methods.\n*/\n\nexport default function() {\n return {\n $el: $(\"
\"),\n getHeightForWidth: function() {\n return 0;\n },\n resize: function() {},\n repaint: function() {},\n bindModel: function() {},\n setup: function() {},\n update: function() {}\n };\n};\n","\nimport ModelController from 'common/controllers/model-controller';\nimport Model from 'models/signal-generator/modeler';\nimport ModelContainer from 'common/views/null-model-view';\n// Dependencies.\nvar ScriptingAPI = function() {};\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n return new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI);\n};\n","\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"iframe-model\",\n immutable: true\n },\n url: {\n immutable: true\n }\n },\n viewOptions: {\n aspectRatio: {\n defaultValue: 1.55\n },\n showClock: {\n defaultValue: false,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n }\n }\n};\n","\n/*\n Options for starting on property support:\n - add a hard-coded outputProperty that reads from a cached value, and start a timer to trigger\n the method that notifies all outputProperty listereners\n - add a hard-coded parameter, that we update based on a property listener\n\n Possible next steps:\n - make paramaters, outputProperties, or mainProperties be more dynamic so they are 'defined'\n in the iframe-model json definition.\n - create a way for the iframe'd html to send the property definition, which the model then uses\n to add the properties to itself. This will keep the properties in the same place as the model\n and possible enable the model to more easily be used in a different container other than Lab.\n\n Possible problems:\n - properites will need to be 'cached' in the interactive window, so that getters will work. the\n property system already has support for caching. But it means that all properties are going to\n have to be sent 'over the wire' whenever they are changed inorder for getters to work. If\n the model json or interactive defines which properties are needed then this might not be a problem,\n but if the properties are provided by the iframe'd html, it won't know what is needed so it will\n send all properties.\n*/\nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport metadata from 'models/iframe/metadata';\n\n\nfunction IFrameModel(initialProperties) {\n var labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n initialProperties: initialProperties,\n usePlaybackSupport: false\n });\n\n labModelerMixin.mixInto(this);\n // Use custom .set() instead of one provided by property support module.\n // Custom version is also a bit looser, it lets you define properties dynamically.\n // Setter of newly added property will post message to iframe model.\n this.set = customSet;\n\n this._phone = null;\n this._stopped = true;\n this._hasPlayed = false;\n this._initialProperties = initialProperties;\n this._propertySupport = labModelerMixin.propertySupport;\n this._dispatch = labModelerMixin.dispatchSupport;\n this._stepCounter = 0;\n // Special flag that makes sure we do not end up in an infinite loop\n // of \"set\" -> \"properties\" -> \"set\" -> ... calls.\n this._propertyUpdateComingFromIframe = false;\n\n // Custom properties defined by the model in the iframe; values are passed using 'outputs'\n // or 'tick' messages.\n this._iframeOutputs = {};\n\n // The default model controller asumes 'tick' is a defined event\n // the playback controller assumes 'play' and 'stop' are defined even if the viewOptions\n // disable these buttons\n // the outer iframe in the interactives browser expects a 'reset', 'stepForward', 'stepBack' event type\n this._dispatch.addEventTypes('tick', 'tickStart', 'tickEnd', 'play', 'stop', 'reset', 'stepForward', 'stepBack', 'log');\n\n this.defineOutput('hasPlayed', {\n label: \"has Played\"\n }, function() {\n return this._hasPlayed;\n }.bind(this));\n}\n\nfunction customSet(key, value) {\n var context = this;\n // Multiple keys provided.\n if (typeof key !== 'string') {\n var hash = key;\n Object.keys(hash).forEach(function(key) {\n context.set(key, hash[key]);\n });\n return;\n }\n // Single key provided.\n if (!this.hasProperty(key)) {\n this._propertySupport.defineProperty(key, {\n type: \"mainProperty\",\n writable: true,\n set: function(value) {\n if (!context._propertyUpdateComingFromIframe) {\n // Make sure that it's not a result of 'properties' message sent by iframe model.\n // Otherwise, we could end up in an infinite loop of property updates.\n context._phone.post(\"set\", {\n name: key,\n value: value\n });\n }\n },\n includeInHistoryState: false,\n beforeSetCallback: this._propertySupport.invalidatingChangePreHook,\n afterSetCallback: this._propertySupport.invalidatingChangePostHook\n });\n }\n\n // This will call setter defined above and post message to iframe.\n this.properties[key] = value;\n}\n\n// If property is not defined in metadata, it means it's a custom property related\n// to specific iframe model. Use custom set method to define it and send message to iframe.\n// labModelerMixin will automatically define and set only properties that are present in metadata.\nIFrameModel.prototype._defineModelSpecificProperties = function() {\n var initialProperties = this._initialProperties;\n var context = this;\n Object.keys(initialProperties).forEach(function(name) {\n if (!metadata.mainProperties[name] && !metadata.viewOptions[name]) {\n context.set(name, initialProperties[name]);\n }\n });\n};\n\n/**************** public methods ****************/\n\nIFrameModel.prototype.start = function() {\n this._phone.post({\n type: 'play'\n });\n this._hasPlayed = true;\n return this;\n};\n\nIFrameModel.prototype.stop = function() {\n // stop the iframe'd model\n // TODO #1 we might want to set stopped to true here.\n // in the playback-support for other models isStopped checks for 'stopRequest'\n // which is set as soon as stop is called.\n // TODO #2 we are not notifying about the stop event until we hear from\n // the model that it is stopped. We should check if that is best approach.\n // It is possible that some data events will be sent out even after stop\n // is called so it might be best to leave this as is. Because of javascript single\n // threading it seems unlikely this would be a problem in a regular model.\n this._phone.post({\n type: 'stop'\n });\n return this;\n};\n\nIFrameModel.prototype.restart = function() {\n this.stop();\n this.start();\n return this;\n};\n\nIFrameModel.prototype.isStopped = function() {\n return this._stopped;\n};\n\nIFrameModel.prototype.serialize = function() {\n // TODO: obviously it's not a real serialization.\n return this._initialProperties;\n};\n\nObject.defineProperty(IFrameModel.prototype, \"iframePhone\", {\n set: function(val) {\n this._phone = val;\n this._addListeners();\n this._defineModelSpecificProperties();\n },\n get: function() {\n return this._phone;\n }\n});\n\nIFrameModel.prototype.stepCounter = function() {\n return this._stepCounter;\n};\n\nIFrameModel.prototype.iframeOutput = function(name) {\n return this._iframeOutputs[name];\n};\n\n/**************** private methods ****************/\n\nIFrameModel.prototype._updateOutputs = function(outputs) {\n var context = this;\n this.makeInvalidatingChange(function() {\n Object.keys(outputs).forEach(function(key) {\n context._iframeOutputs[key] = outputs[key];\n });\n });\n};\n\nIFrameModel.prototype._updatePropertiesFromIframe = function(propertiesHash) {\n this._propertyUpdateComingFromIframe = true;\n this.set(propertiesHash);\n this._propertyUpdateComingFromIframe = false;\n};\n\nIFrameModel.prototype._addListeners = function() {\n var context = this;\n this._phone.addListener('play.iframe-model', function() {\n context._stopped = false;\n // notify that we are playing\n context._dispatch.play();\n });\n this._phone.addListener('stop.iframe-model', function() {\n context._stopped = true;\n // notify that we are stopped\n context._dispatch.stop();\n });\n\n this._phone.addListener('properties', function(content) {\n context._updatePropertiesFromIframe(content);\n });\n\n this._phone.addListener('outputs', function(content) {\n context._updateOutputs(content);\n });\n\n this._phone.addListener('tick', function(content) {\n context._stepCounter++;\n // Support outputs and/or properties update within 'tick' message.\n if (content && content.outputs) {\n context._updateOutputs(content.outputs);\n }\n if (content && content.properties) {\n context._updatePropertiesFromIframe(content.properties);\n }\n context._dispatch.tick();\n });\n\n // Support logging provided by inner frame. Dispatch 'log' event,\n // as LogController listens to this event type.\n this._phone.addListener('log', function(content) {\n context._dispatch.log(content.action, content.data);\n });\n};\n\nexport default IFrameModel;\n"," import iframePhone from 'iframe-phone';\n\nexport default function IFrameContainer(model) {\n var _model = model,\n $el = $(\"
\");\n\n function addIFrame(model) {\n $el.find('#iframe-model').remove();\n var $iframe = $(\"\");\n $el.append($iframe);\n\n var phone = new iframePhone.ParentEndpoint($el.find('#iframe-model')[0]);\n // Simply assume that when iframe is removed from DOM (e.g. due to model reload or\n // interactive reload), we should also disconnect iframe phone.\n // If we leave it connected, handler will be still trying to process all incoming messages\n // and it would fail, as its iframe wouldn't be attached to DOM anymore (so its\n // .contentWindow will be equal to null).\n // Note that 'destroyed' is a custom event specified in jquery-plugins.js!\n $iframe.on('destroyed', function() {\n phone.disconnect();\n });\n\n model.iframePhone = phone;\n }\n\n addIFrame(model);\n\n return {\n $el: $el,\n getHeightForWidth: function(width) {\n return width / _model.get('aspectRatio');\n },\n resize: function() {},\n\n // This method is called in a few different cases:\n // - when a interactive is loaded and the same modelController is reused\n // - when scriptAPI.reset is called\n // Note: it is _not_ called the first time the modelController is created\n // Whether the element is actually in the page's DOM varies depending on how\n // this is called. However, the $el object will be reused in all cases so\n // manipulating this seems to work.\n // currently the safest thing is to remove and add a new iframe each time\n // this causes the iframe to reload even if the url is the same.\n // This can make the reset be slow, so in the reset case it would be better to optimize\n // this to send some reset event to the iframe instead.\n bindModel: function(newModel) {\n addIFrame(newModel);\n _model = newModel;\n },\n\n // this is called after the element has been added to the DOM\n // the element is not re-added to the DOM during a scriptAPI.reset()\n setup: function() {},\n update: function() {},\n repaint: function() {}\n };\n};\n"," /**\n Define the model-specific Sensor scripting API used by 'action' scripts on interactive elements.\n\n The universal Interactive scripting API is extended with the properties of the\n object below which will be exposed to the interactive's 'action' scripts as if\n they were local vars. All other names (including all globals, but excluding\n Javascript builtins) will be unavailable in the script context; and scripts\n are run in strict mode so they don't accidentally expose or read globals.\n\n @param: parent Common Scripting API\n*/\nexport default function IframeScriptingAPI(parent) {\n\n // Overwrite original .bindModel method of parent Scripting API.\n // Iframe model can send a \"registerScriptingAPIFunc\" message to register new Scripting API\n // function that in fact would be a shortcut for .post() call.\n var orgBindModel = parent.bindModel;\n parent.bindModel = function() {\n orgBindModel.apply(parent, arguments);\n\n parent.model.iframePhone.addListener(\"registerScriptingAPIFunc\", function(name) {\n if (parent.api[name] != null) return;\n parent.api[name] = function(content) {\n parent.model.iframePhone.post(name, content);\n };\n });\n };\n\n return {\n /**\n * Posts a custom message to iframe model.\n * @param {string} type message type\n * @param {any} content message content\n */\n post: function resetModel(type, content) {\n parent.model.iframePhone.post(type, content);\n },\n\n /**\n * Returns value of an output defined by iframe model.\n * Note that iframe model decides how often output is updated.\n * This function doesn't ask iframe about current value, but just immediately returns\n * the last value which is stored.\n * @param {string} name output name\n */\n iframeOutput: function iframeOutput(name) {\n return parent.model.iframeOutput(name);\n }\n };\n};\n","\nimport ModelController from 'common/controllers/model-controller';\nimport Model from 'models/iframe/modeler';\nimport ModelContainer from 'models/iframe/iframe-container';\nimport ScriptingAPI from 'models/iframe/scripting-api';\n// Dependencies.\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n return new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI);\n};\n","\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"sensor\",\n immutable: true\n },\n sensorType: {\n defaultValue: null\n },\n samplesPerSecond: {\n readOnly: true\n },\n collectionTime: {\n defaultValue: null\n },\n tareValue: {\n defaultValue: 0\n }\n },\n viewOptions: {\n showClock: {\n defaultValue: true,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"play_reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n }\n }\n};\n","import sensorApplet from 'sensor-applet';\nconst sensorDefinitions = sensorApplet.sensorDefinitions;\n\nexport default function getTranslatedSensorDefinitions(i18n) {\n sensorDefinitions.goMotion.measurementName = i18n.t(\"sensor.measurements.distance\");\n sensorDefinitions.goMotion.sensorName = i18n.t(\"sensor.names.goMotion\");\n\n sensorDefinitions.goTemp.measurementName = i18n.t(\"sensor.measurements.temperature\");\n sensorDefinitions.goTemp.sensorName = i18n.t(\"sensor.names.goTemp\");\n\n sensorDefinitions.goLinkTemperature.measurementName = i18n.t(\"sensor.measurements.temperature\");\n sensorDefinitions.goLinkTemperature.sensorName = i18n.t(\"sensor.names.goLinkTemperature\");\n\n sensorDefinitions.goLinkLight.measurementName = i18n.t(\"sensor.measurements.light_intensity\");\n sensorDefinitions.goLinkLight.sensorName = i18n.t(\"sensor.names.goLinkLight\");\n\n sensorDefinitions.goLinkForce.measurementName = i18n.t(\"sensor.measurements.force\");\n sensorDefinitions.goLinkForce.sensorName = i18n.t(\"sensor.names.goLinkForce\");\n\n sensorDefinitions.goLinkPH.measurementName = i18n.t(\"sensor.measurements.acidity\");\n sensorDefinitions.goLinkPH.sensorName = i18n.t(\"sensor.names.goLinkPH\");\n\n sensorDefinitions.goLinkCO2.measurementName = i18n.t(\"sensor.measurements.CO2_concentration\");\n sensorDefinitions.goLinkCO2.sensorName = i18n.t(\"sensor.names.goLinkCO2\");\n\n sensorDefinitions.goLinkO2.measurementName = i18n.t(\"sensor.measurements.O2_concentration\");\n sensorDefinitions.goLinkO2.sensorName = i18n.t(\"sensor.names.goLinkO2\");\n\n sensorDefinitions.labQuestMotion.measurementName = i18n.t(\"sensor.measurements.distance\");\n sensorDefinitions.labQuestMotion.sensorName = i18n.t(\"sensor.names.labQuestMotion\");\n\n sensorDefinitions.labQuestTemperature.measurementName = i18n.t(\"sensor.measurements.temperature\");\n sensorDefinitions.labQuestTemperature.sensorName = i18n.t(\"sensor.names.labQuestTemperature\");\n\n sensorDefinitions.labQuestLight.measurementName = i18n.t(\"sensor.measurements.light_intensity\");\n sensorDefinitions.labQuestLight.sensorName = i18n.t(\"sensor.names.labQuestLight\");\n\n sensorDefinitions.labQuestForce.measurementName = i18n.t(\"sensor.measurements.force\");\n sensorDefinitions.labQuestForce.sensorName = i18n.t(\"sensor.names.labQuestForce\");\n\n sensorDefinitions.labQuestPH.measurementName = i18n.t(\"sensor.measurements.acidity\");\n sensorDefinitions.labQuestPH.sensorName = i18n.t(\"sensor.names.labQuestPH\");\n\n sensorDefinitions.labQuestCO2.measurementName = i18n.t(\"sensor.measurements.CO2_concentration\");\n sensorDefinitions.labQuestCO2.sensorName = i18n.t(\"sensor.names.labQuestCO2\");\n\n sensorDefinitions.labQuestO2.measurementName = i18n.t(\"sensor.measurements.O2_concentration\");\n sensorDefinitions.labQuestO2.sensorName = i18n.t(\"sensor.names.labQuestO2\");\n\n return sensorDefinitions;\n}\n","import BasicDialog from 'common/controllers/basic-dialog';\n\nfunction Notifier(i18n) {\n this._i18n = i18n;\n}\n\nNotifier.prototype.alert = function(message, buttons, options) {\n var opts = $.extend({\n width: \"60%\",\n buttons: buttons,\n closeOnEscape: false\n }, options);\n var dialog = new BasicDialog(opts, this._i18n);\n\n dialog.setContent(\"
\" + message + \"
\");\n dialog.open();\n};\n\nNotifier.prototype.status = function(message, options) {\n var opts = $.extend({\n width: \"60%\",\n closeOnEscape: false,\n modal: true\n }, options);\n var dialog = new BasicDialog(opts, this._i18n);\n\n dialog.setContent(\"
\" + message + \"
\");\n dialog.open();\n return dialog;\n};\n\nexport default Notifier;\n","import labConfig from 'lab.config';\nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport PropertyDescription from 'common/property-description';\nimport metadata from './metadata';\nimport sensorApplet from 'sensor-applet';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions';\nimport Notifier from 'models/sensor-common/notifier';\nimport ExportController from 'common/controllers/export-controller';\n\nvar unitsDefinition = sensorApplet.unitsDefinition;\n\nexport default function Model(initialProperties, opt) {\n var i18n = opt.i18n,\n notifier = new Notifier(i18n),\n\n labModelerMixin,\n propertySupport,\n dispatch,\n isStopped = true,\n needsReload = false,\n initialSensorType,\n sensorType,\n applet,\n isSensorReady = false,\n isSensorInitializing = false,\n sensorPollsPerSecond = 1,\n sensorPollingIntervalID,\n samplesPerSecond,\n time,\n rawSensorValue,\n stepCounter,\n didCollectData,\n isTaring,\n isSensorTareable,\n initialTareValue,\n model;\n\n var defaultSensorReadingDescriptionHash = {\n label: i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: \"-\",\n format: '.2f',\n min: 0,\n max: 1\n };\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n function updatePropertyRange(property, min, max) {\n var descriptionHash;\n var description;\n\n descriptionHash = model.getPropertyDescription(property).getHash();\n descriptionHash.min = min;\n descriptionHash.max = max;\n\n description = new PropertyDescription(unitsDefinition, descriptionHash);\n propertySupport.setPropertyDescription(property, description);\n }\n\n // Updates min, max of displayTime to be [0..collectionTime]\n function updateDisplayTimeRange() {\n if (model.properties.collectionTime == null) {\n return;\n }\n updatePropertyRange('displayTime', 0, model.properties.collectionTime);\n }\n\n function removeApplet() {\n if (applet) {\n applet.removeListeners('data');\n applet.removeListeners('deviceUnplugged');\n applet.removeListeners('sensorUnplugged');\n\n applet.remove();\n }\n\n model.makeInvalidatingChange(function() {\n isSensorReady = false;\n isSensorInitializing = false;\n });\n }\n\n function appendApplet() {\n model.makeInvalidatingChange(function() {\n isSensorInitializing = true;\n });\n\n // Wrapped in a setTimeout to allow all property observers to finish their work before\n // actually firing up the applet, which freezes the UI and possibly blocks until the user\n // clicks through security dialogs to allow the applet to run.\n // TODO: A setImmediate shim (using window.postMessage) would be useful here.\n setTimeout(function() {\n applet.on('data', appletDataCallback);\n applet.on('deviceUnplugged', function() {\n handleUnplugged('device');\n });\n applet.on('sensorUnplugged', function() {\n handleUnplugged('sensor');\n });\n\n applet.append($('body'), function(error) {\n\n if (error) {\n if (error instanceof sensorApplet.JavaLoadError) {\n handleLoadingFailure(i18n.t(\"sensor.messages.java_applet_error\"));\n } else if (error instanceof sensorApplet.AppletInitializationError) {\n handleLoadingFailure(i18n.t(\"sensor.messages.java_applet_not_loading\"));\n } else if (error instanceof sensorApplet.SensorConnectionError) {\n handleSensorConnectionError();\n } else {\n handleLoadingFailure(i18n.t(\"sensor.messages.unexpected_error\"));\n }\n model.makeInvalidatingChange(function() {\n isSensorInitializing = false;\n });\n return;\n }\n\n model.makeInvalidatingChange(function() {\n isSensorReady = true;\n isSensorInitializing = false;\n });\n });\n }, 10);\n }\n\n function handleSensorConnectionError() {\n removeApplet();\n var buttons = {};\n buttons[i18n.t(\"sensor.messages.try_again\")] = function() {\n $(this).dialog(\"close\");\n // This is a workaround: currently, the applet itself does not appear to respond to its\n // initialization methods if the sensor was not connected when the applet started up.\n appendApplet();\n };\n buttons[i18n.t(\"sensor.messages.cancel\")] = function() {\n $(this).remove();\n model.reload();\n };\n notifier.alert(i18n.t(\"sensor.messages.sensor_not_attached\", {\n sensor_name: model.properties.sensorName\n }), buttons);\n }\n\n function handleLoadingFailure(message) {\n removeApplet();\n notifier.alert(message, {\n OK: function() {\n $(this).remove();\n model.reload();\n }\n });\n }\n\n function handleUnplugged(what) {\n removeApplet();\n model.stop();\n ExportController.logAction(\"Unplugged\" + model.properties[what + 'Name']);\n var buttons = {};\n buttons[i18n.t(\"sensor.messages.try_again\")] = function() {\n $(this).dialog(\"close\");\n appendApplet();\n };\n buttons[i18n.t(\"sensor.messages.cancel\")] = function() {\n $(this).dialog(\"close\");\n };\n notifier.alert(i18n.t(\"sensor.messages.sensor_or_device_unplugged\", {\n sensor_or_device_name: model.properties[what + 'Name']\n }), buttons);\n }\n\n function startPollingSensor() {\n if (sensorPollingIntervalID) {\n clearInterval(sensorPollingIntervalID);\n }\n var handleSensorValues = function(error, values) {\n if (error) {\n if (error instanceof sensorApplet.AlreadyReadingError) {\n // Don't worry about it -- we just overlapped another call to readSensor\n } else if (error instanceof sensorApplet.SensorConnectionError) {\n clearInterval(sensorPollingIntervalID);\n handleSensorConnectionError();\n } else {\n clearInterval(sensorPollingIntervalID);\n throw error;\n }\n } else {\n model.makeInvalidatingChange(function() {\n rawSensorValue = values[0];\n if (isTaring) {\n model.properties.tareValue = rawSensorValue;\n isTaring = false;\n }\n });\n }\n };\n sensorPollingIntervalID = setInterval(function() {\n applet.readSensor(handleSensorValues);\n }, 1000 / sensorPollsPerSecond);\n }\n\n function stopPollingSensor() {\n if (sensorPollingIntervalID) {\n clearInterval(sensorPollingIntervalID);\n sensorPollingIntervalID = null;\n }\n }\n\n function initializeStateVariables() {\n stepCounter = 0;\n time = 0;\n rawSensorValue = undefined;\n didCollectData = false;\n isSensorTareable = false;\n isTaring = false;\n }\n\n function setSensorType(_sensorType) {\n var AppletClass;\n var sensorDefinition;\n var description;\n var measurementType;\n\n if (sensorType === _sensorType) {\n return;\n }\n\n if (sensorType) {\n // drop the tare value if we're changing from one sensor type to another!\n model.properties.tareValue = 0;\n }\n\n sensorType = _sensorType;\n rawSensorValue = undefined;\n\n if (applet) {\n removeApplet();\n }\n\n if (sensorType) {\n sensorDefinition = sensorDefinitions[sensorType];\n samplesPerSecond = sensorDefinition.samplesPerSecond;\n measurementType = sensorDefinition.measurementType;\n AppletClass = sensorApplet[sensorDefinition.appletClass];\n isSensorTareable = sensorDefinition.tareable;\n\n applet = window.Lab.sensor[sensorType] = new AppletClass({\n listenerPath: 'Lab.sensor.' + sensorType,\n sensorDefinitions: [sensorDefinition],\n appletId: sensorType + '-sensor',\n codebase: labConfig.rootUrl + \"/jars/lab-sensor-applet-interface-dist\"\n });\n\n appendApplet();\n\n // Update the description of the main 'sensorReading' output\n description = new PropertyDescription(unitsDefinition, {\n label: sensorDefinition.measurementName,\n unitType: measurementType,\n min: sensorDefinition.minReading,\n max: sensorDefinition.maxReading\n });\n\n propertySupport.setPropertyDescription('sensorReading', description);\n\n // Override collectionTime only if it wasn't set on the model definition\n if (model.properties.collectionTime == null) {\n model.properties.collectionTime = sensorDefinition.maxSeconds;\n }\n } else if (model.properties.hasOwnProperty('sensorReading')) {\n // no sensor type\n description = new PropertyDescription(unitsDefinition, defaultSensorReadingDescriptionHash);\n propertySupport.setPropertyDescription('sensorReading', description);\n }\n }\n\n function appletDataCallback(d) {\n stepCounter++;\n\n time += (1 / samplesPerSecond);\n\n // Whaaa? Accessing 'window' seems to prevent a strange bug in which Safari 6.0 stops updating\n // time after 3.7s. Hard to debug because accessing console, window, or Web Inspector makes\n // the problem go away!\n window.__bizarreSafariFix = 1;\n\n rawSensorValue = d[0];\n // Once we collect data for a given sensor, don't allow changingn the sensor typea\n if (!didCollectData) {\n model.freeze('sensorType');\n }\n\n didCollectData = true;\n model.updateAllOutputProperties();\n dispatch.tick();\n }\n\n model = {\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n start: function() {\n if (!model.properties.isPlayable) {\n return;\n }\n\n applet.start(function(error, isStarted) {\n if (error) {\n if (error instanceof sensorApplet.SensorConnectionError) {\n handleSensorConnectionError();\n }\n } else if (isStarted) {\n model.makeInvalidatingChange(function() {\n isStopped = false;\n });\n dispatch.play();\n }\n });\n },\n\n stop: function() {\n\n if (applet) {\n applet.stop();\n }\n model.makeInvalidatingChange(function() {\n isStopped = true;\n });\n dispatch.stop();\n },\n\n tare: function() {\n if (!isStopped) {\n throw new Error(\"Sensor model: tare() called on a non-stopped model.\");\n }\n if (sensorPollingIntervalID != null && rawSensorValue != null) {\n model.properties.tareValue = rawSensorValue;\n } else {\n model.makeInvalidatingChange(function() {\n isTaring = true;\n });\n }\n },\n\n willReset: function() {\n dispatch.willReset();\n },\n\n reset: function() {\n model.stop();\n removeApplet();\n\n initializeStateVariables();\n model.properties.tareValue = initialTareValue;\n model.unfreeze('sensorType');\n model.properties.sensorType = initialSensorType;\n\n dispatch.reset();\n },\n\n reload: function() {\n model.stop();\n model.makeInvalidatingChange(function() {\n needsReload = true;\n });\n },\n\n isStopped: function() {\n return isStopped;\n },\n\n stepCounter: function() {\n return stepCounter;\n },\n\n serialize: function() {\n return \"\";\n }\n };\n\n initializeStateVariables();\n\n // Need to define a globally-accessible 'listenerPath' for the sensor to evaluate\n if (window.Lab === undefined) {\n window.Lab = {};\n }\n window.Lab.sensor = {};\n\n labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n setters: {\n sensorType: setSensorType\n },\n unitsDefinition: unitsDefinition,\n initialProperties: initialProperties,\n usePlaybackSupport: false\n });\n\n labModelerMixin.mixInto(model);\n propertySupport = labModelerMixin.propertySupport;\n dispatch = labModelerMixin.dispatchSupport;\n dispatch.addEventTypes(\"tick\", \"play\", \"stop\", \"tickStart\", \"tickEnd\");\n\n // Remember thse values so that the model can be reset properly\n initialSensorType = model.properties.sensorType;\n initialTareValue = model.properties.tareValue;\n\n model.defineOutput('time', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('displayTime', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('sensorReading', defaultSensorReadingDescriptionHash, function() {\n if (rawSensorValue == null) {\n return rawSensorValue;\n }\n return rawSensorValue - model.properties.tareValue;\n });\n\n // TODO. Need a better way for the model to be able to have a property which it can set the\n // value of at arbitrary times, but which is read-only to client code. Outputs aren't quite\n // the right solution because the invalidation stuff is really about time and physics-based\n // invalidation.\n\n model.defineOutput('sensorName', {\n label: \"Sensor Name\"\n }, function() {\n return sensorDefinitions[sensorType].sensorName;\n });\n\n model.defineOutput('deviceName', {\n label: \"Sensor Interface Device Name\"\n }, function() {\n return sensorDefinitions[sensorType].deviceName;\n });\n\n model.defineOutput('isStopped', {\n label: \"Stopped?\"\n }, function() {\n return isStopped;\n });\n\n // TODO. We need a way to make \"model-writable\" read only properties.\n model.defineOutput('isPlayable', {\n label: \"Startable?\"\n }, function() {\n return isSensorReady && !didCollectData;\n });\n\n model.defineOutput('hasPlayed', {\n label: \"Has successfully collected data?\"\n }, function() {\n return didCollectData;\n });\n\n model.defineOutput('shouldPollSensor', {\n label: \"Polling Sensor?\"\n }, function() {\n return model.properties.isPlayable && isStopped;\n });\n\n model.defineOutput('isSensorInitializing', {\n label: \"Loading Sensor?\"\n }, function() {\n return isSensorInitializing;\n });\n\n model.defineOutput('isTaring', {\n label: \"Waiting for a tare value?\"\n }, function() {\n return isTaring;\n });\n\n model.defineOutput('canTare', {\n label: \"Can set a tare value?\"\n }, function() {\n return isStopped && !didCollectData && isSensorTareable && !isTaring;\n });\n\n model.defineOutput('needsReload', {\n label: \"Needs Reload?\"\n }, function() {\n return needsReload;\n });\n\n // Clean up state before we go -- failing to remove the applet from the page before switching\n // between 2 sensor types that use the same interface causes an applet exception.\n model.on('willReset.model', removeApplet);\n\n model.addObserver('shouldPollSensor', function() {\n if (model.properties.shouldPollSensor) {\n startPollingSensor();\n } else {\n stopPollingSensor();\n }\n });\n\n model.addObserver('collectionTime', updateDisplayTimeRange);\n updateDisplayTimeRange();\n\n // Kick things off by doing this explicitly:\n setSensorType(model.properties.sensorType);\n\n return model;\n};\n","import SelectBoxView from 'common/views/select-box-view';\nimport NumericOutputView from 'common/views/numeric-output-view';\nimport sensorApplet from 'sensor-applet';\nimport viewState from 'common/views/view-state';\n\nconst sensorDefinitions = sensorApplet.sensorDefinitions;\n\nexport default function(model, modelUrl, i18n) {\n\n var sensorTypeView = new SelectBoxView({\n id: 'sensor-type-view',\n options: [{\n value: null,\n text: i18n.t(\"sensor.select_sensor_type\"),\n selected: model.properties.sensorType == null,\n disabled: true\n }].concat(Object.keys(sensorDefinitions).map(function(key) {\n return {\n value: key,\n text: sensorDefinitions[key].sensorName,\n selected: key === model.properties.sensorType,\n disabled: false\n };\n })),\n onChange: function(option) {\n model.properties.sensorType = option.value;\n }\n });\n\n // TODO use the formatter from the property description. Right now, it automatically adds\n // units to the returned string (which we don't want here).\n var format = d3.format('.2f');\n var sensorReadingView;\n var view;\n\n function setIsTaringState() {\n if (model.properties.isTaring) {\n view.$zeroButton.find('button').html(i18n.t(\"sensor.zeroing\"));\n } else {\n view.$zeroButton.find('button').html(i18n.t(\"sensor.zero\"));\n }\n }\n\n function setCanTareState() {\n if (model.properties.canTare) {\n viewState.enableView(view.$zeroButton);\n } else {\n viewState.disableView(view.$zeroButton);\n }\n }\n\n function setSensorTypeDisabledState() {\n var description = model.getPropertyDescription('sensorType');\n if (description.getFrozen()) {\n viewState.disableView(view.$selectBox);\n } else {\n viewState.enableView(view.$selectBox);\n }\n }\n\n function setupModelObservers() {\n model.addObserver('isTaring', setIsTaringState);\n setIsTaringState();\n\n model.addObserver('canTare', setCanTareState);\n setCanTareState();\n\n model.addPropertyDescriptionObserver('sensorType', setSensorTypeDisabledState);\n setSensorTypeDisabledState();\n }\n\n return view = {\n $el: $(\"
\"),\n\n bindModel: function(newModel, newModelUrl) {\n modelUrl = newModelUrl || modelUrl;\n model = newModel || model;\n\n setupModelObservers();\n },\n\n getHeightForWidth: function() {\n return \"2.6em\";\n },\n\n // called once we're in the DOM\n setup: function() {\n\n this.$el.empty();\n\n sensorReadingView = new NumericOutputView({\n id: 'sensor-value-view',\n label: i18n.t(\"sensor.reading\"),\n units: model.getPropertyDescription('sensorReading').getUnitAbbreviation()\n });\n\n var $selectBox = sensorTypeView.render(this.$el),\n $zeroButton = $(\"
\"),\n $sensorReading = sensorReadingView.render();\n\n $selectBox.addClass('interactive-pulldown component component-spacing');\n $zeroButton.addClass('interactive-button component component-spacing');\n $sensorReading.addClass('numeric-output component horizontal component-spacing');\n\n this.$el.css('zIndex', 4);\n this.$el.append($selectBox);\n this.$el.append($sensorReading);\n this.$el.append($zeroButton);\n\n this.$zeroButton = $zeroButton;\n this.$selectBox = $selectBox;\n\n sensorReadingView.resize();\n setupModelObservers();\n\n $zeroButton.on('click', 'button', function() {\n model.tare();\n });\n },\n\n showInitializationProgress: function() {\n var $progressbar;\n\n if (!this.$progressbarContainer) {\n $progressbar = $('
')\n .attr('id', 'sensor-progressbar');\n\n this.$progressbarContainer = $('
')\n .attr('id', 'sensor-progressbar-container')\n .css('bottom', $('body').height() / 2 + 75 + $('.lab-responsive-content').offset().top)\n .append('
' + i18n.t('sensor.loading_sensor') + '
')\n .append($progressbar)\n .appendTo('.lab-responsive-content');\n\n $progressbar.progressbar({\n value: false\n });\n }\n\n this.$progressbarContainer.show();\n },\n\n hideInitializationProgress: function() {\n this.$progressbarContainer.hide();\n },\n\n resize: function() {\n if (sensorReadingView) {\n sensorReadingView.resize();\n }\n },\n\n repaint: function() {},\n\n setFocus: function() {},\n\n updateUnits: function(units) {\n sensorReadingView.updateUnits(units);\n if (model.properties.sensorReading == null) {\n sensorReadingView.hideUnits();\n }\n },\n\n update: function() {\n if (model.properties.sensorReading == null) {\n sensorReadingView.update(\"\");\n sensorReadingView.hideUnits();\n } else {\n sensorReadingView.update(format(model.properties.sensorReading));\n sensorReadingView.showUnits();\n }\n }\n };\n};\n"," /**\n Define the model-specific Sensor scripting API used by 'action' scripts on interactive elements.\n\n The universal Interactive scripting API is extended with the properties of the\n object below which will be exposed to the interactive's 'action' scripts as if\n they were local vars. All other names (including all globals, but excluding\n Javascript builtins) will be unavailable in the script context; and scripts\n are run in strict mode so they don't accidentally expose or read globals.\n\n @param: parent Common Scripting API\n*/\nexport default function SensorScriptingAPI(parent) {\n return {\n /**\n * Reset the model. The interactives controller will emit a 'willResetModel'.\n * The willResetModel observers can ask to wait for asynchronous confirmation before\n * the model is actually reset.\n * Note that the effect would be almost the same like after reload operation. However\n * the mechanism under the hood is completely different. The biggest difference for\n * authoring is that when .resetModel() is called, the \"onLoad\" script won't be\n * executed again. It may be also faster than reload.\n * @param {object} options hash of options, supported properties:\n * * propertiesToRetain - a list of properties to save before\n * the model reset and restore after reset.\n * * cause - cause of the reset action.\n */\n resetModel: function resetModel(options) {\n parent.intController.resetModel(options);\n }\n };\n};\n","\nimport ModelController from 'common/controllers/model-controller';\nimport Model from './modeler';\nimport ModelContainer from './view';\nimport ScriptingAPI from './scripting-api';\n// Dependencies.\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n var controller = new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI);\n\n // Note to self: modelController doesn't emit modelLoaded when the model first loads.\n // This was unexpected...\n\n function setupModelObservers() {\n var model = controller.model;\n\n model.addObserver('isSensorInitializing', function() {\n var view = controller.modelContainer;\n\n if (model.properties.isSensorInitializing) {\n view.showInitializationProgress();\n } else {\n view.hideInitializationProgress();\n }\n });\n\n model.addObserver('sensorReading', function() {\n // if the model is running, the tick handler will take care of it\n if (model.isStopped()) {\n controller.updateView();\n }\n });\n\n model.addObserver('needsReload', function() {\n if (model.properties.needsReload) {\n interactiveController.reloadModel();\n }\n });\n\n model.addPropertyDescriptionObserver('sensorReading', function() {\n var description = model.getPropertyDescription('sensorReading');\n var view = controller.modelContainer;\n\n view.updateUnits(description.getUnitAbbreviation());\n });\n }\n\n interactiveController.on('modelLoaded.sensor-model-controller', setupModelObservers);\n\n interactiveController.on('modelReset.sensor-model-controller', function() {\n controller.model.set('isNewRunInProgress', false);\n });\n\n interactiveController.on('willResetModel', function() {\n controller.model.set('isNewRunInProgress', true);\n });\n\n return controller;\n};\n","\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"dual-sensor\",\n immutable: true\n },\n sensorType: {\n defaultValue: null\n },\n sensorType2: {\n defaultValue: null\n },\n samplesPerSecond: {\n readOnly: true\n },\n collectionTime: {\n defaultValue: null\n },\n tareValue: {\n defaultValue: 0\n },\n tareValue2: {\n defaultValue: 0\n },\n clientId: {\n defaultValue: null\n },\n useRandomClientId: {\n defaultValue: false\n }\n },\n viewOptions: {\n showClock: {\n defaultValue: true,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"play_reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n }\n }\n};\n","import PropertySupport from 'common/property-support';\nimport PropertyDescription from 'common/property-description';\nimport RunningAverageFilter from 'common/filters/running-average-filter';\nimport validator from 'common/validator';\nimport metadata from './metadata';\nimport sensorApplet from 'sensor-applet';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions';\nimport labConfig from 'lab.config';\nimport Notifier from 'models/sensor-common/notifier';\nimport ExportController from 'common/controllers/export-controller';\n\nvar unitsDefinition = sensorApplet.unitsDefinition;\n\nexport default function Model(initialProperties, opt) {\n var propertySupport = new PropertySupport({\n types: ['mainProperty', 'viewOption', 'parameter', 'output']\n }),\n\n i18n = opt.i18n,\n notifier = new Notifier(i18n),\n\n viewOptions,\n mainProperties,\n isStopped = true,\n needsReload = false,\n dispatch = d3.dispatch('play', 'stop', 'tick', 'tickStart', 'willReset', 'reset', 'stepForward',\n 'stepBack', 'seek', 'invalidation'),\n initialSensorType,\n sensorType,\n sensorType2,\n applet,\n isSensorReady = false,\n isSensorInitializing = false,\n sensorPollsPerSecond = 1,\n sensorPollingIntervalID,\n samplesPerSecond = 10,\n time,\n rawSensorValue,\n rawSensorValue2,\n stepCounter,\n didCollectData,\n isTaring,\n isTaring2,\n isSensorTareable,\n isSensorTareable2,\n initialTareValue,\n invalidatingChangeNestingLevel = 0,\n filteredOutputs = [],\n customSetters,\n model;\n\n var defaultSensorReadingDescriptionHash = {\n label: i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: \"-\",\n format: '.2f',\n min: 0,\n max: 1\n };\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n //\n // The following function is essentially copied from MD2D modeler, and should moved to a common\n // module\n //\n function defineBuiltinProperty(key, type, setter) {\n var metadataForType,\n descriptor,\n propertyChangeInvalidates,\n unitType;\n\n if (type === 'mainProperty') {\n metadataForType = metadata.mainProperties;\n } else if (type === 'viewOption') {\n metadataForType = metadata.viewOptions;\n } else {\n throw new Error(type + \" is not a supported built-in property type\");\n }\n\n propertyChangeInvalidates = validator.propertyChangeInvalidates(metadataForType[key]);\n\n descriptor = {\n type: type,\n writable: validator.propertyIsWritable(metadataForType[key]),\n set: setter,\n includeInHistoryState: !!metadataForType[key].storeInTickHistory,\n validate: function(value) {\n return validator.validateSingleProperty(metadataForType[key], key, value, false);\n },\n beforeSetCallback: propertyChangeInvalidates ? invalidatingChangePreHook : undefined,\n afterSetCallback: propertyChangeInvalidates ? invalidatingChangePostHook : undefined\n };\n\n unitType = metadataForType[key].unitType;\n if (unitType) {\n descriptor.description = new PropertyDescription(unitsDefinition, {\n unitType: unitType\n });\n } else {\n // A property with no units should at least have a label\n descriptor.description = new PropertyDescription(null, {\n label: metadataForType.label || key\n });\n }\n\n propertySupport.defineProperty(key, descriptor);\n }\n\n function invalidatingChangePreHook() {\n if (invalidatingChangeNestingLevel === 0) {\n propertySupport.storeComputedProperties();\n propertySupport.deleteComputedPropertyCachedValues();\n propertySupport.enableCaching = false;\n }\n invalidatingChangeNestingLevel++;\n }\n\n function invalidatingChangePostHook() {\n invalidatingChangeNestingLevel--;\n updateFilteredOutputs();\n if (invalidatingChangeNestingLevel === 0) {\n propertySupport.enableCaching = true;\n propertySupport.notifyChangedComputedProperties();\n }\n }\n\n function makeInvalidatingChange(closure) {\n invalidatingChangePreHook();\n closure();\n invalidatingChangePostHook();\n }\n\n function updateFilteredOutputs() {\n filteredOutputs.forEach(function(output) {\n output.addSample();\n });\n }\n\n function updatePropertyRange(property, min, max) {\n var descriptionHash;\n var description;\n\n descriptionHash = model.getPropertyDescription(property).getHash();\n descriptionHash.min = min;\n descriptionHash.max = max;\n\n description = new PropertyDescription(unitsDefinition, descriptionHash);\n propertySupport.setPropertyDescription(property, description);\n }\n\n // Updates min, max of displayTime to be [0..collectionTime]\n function updateDisplayTimeRange() {\n if (model.properties.collectionTime == null) {\n return;\n }\n updatePropertyRange('displayTime', 0, model.properties.collectionTime);\n }\n\n function removeApplet() {\n if (applet) {\n applet.removeListeners('data');\n applet.removeListeners('deviceUnplugged');\n applet.removeListeners('sensorUnplugged');\n\n applet.remove();\n }\n\n makeInvalidatingChange(function() {\n isSensorReady = false;\n isSensorInitializing = false;\n });\n }\n\n function appendApplet() {\n makeInvalidatingChange(function() {\n isSensorInitializing = true;\n });\n\n // Wrapped in a setTimeout to allow all property observers to finish their work before\n // actually firing up the applet, which freezes the UI and possibly blocks until the user\n // clicks through security dialogs to allow the applet to run.\n // TODO: A setImmediate shim (using window.postMessage) would be useful here.\n setTimeout(function() {\n applet.on('data', appletDataCallback);\n applet.on('deviceUnplugged', function() {\n handleUnplugged('device');\n });\n applet.on('sensorUnplugged', function() {\n handleUnplugged('sensor');\n });\n\n applet.append($('body'), function(error) {\n\n if (error) {\n if (error instanceof sensorApplet.JavaLoadError) {\n handleLoadingFailure(i18n.t(\"sensor.messages.java_applet_error\"));\n } else if (error instanceof sensorApplet.AppletInitializationError) {\n handleLoadingFailure(i18n.t(\"sensor.messages.java_applet_not_loading\"));\n } else if (error instanceof sensorApplet.SensorConnectionError) {\n handleSensorConnectionError();\n } else {\n handleLoadingFailure(i18n.t(\"sensor.messages.unexpected_error\"));\n }\n makeInvalidatingChange(function() {\n isSensorInitializing = false;\n });\n return;\n }\n\n makeInvalidatingChange(function() {\n isSensorReady = true;\n isSensorInitializing = false;\n });\n });\n }, 10);\n }\n\n function handleSensorConnectionError() {\n removeApplet();\n var buttons = {};\n buttons[i18n.t(\"sensor.messages.try_again\")] = function() {\n $(this).dialog(\"close\");\n // This is a workaround: currently, the applet itself does not appear to respond to its\n // initialization methods if the sensor was not connected when the applet started up.\n appendApplet();\n };\n buttons[i18n.t(\"sensor.messages.cancel\")] = function() {\n $(this).remove();\n model.reload();\n };\n notifier.alert(i18n.t(\"sensor.messages.sensor_not_attached\", {\n sensor_name: model.properties.sensorName\n }), buttons);\n }\n\n function handleLoadingFailure(message) {\n removeApplet();\n notifier.alert(message, {\n OK: function() {\n $(this).remove();\n model.reload();\n }\n });\n }\n\n function handleUnplugged(what) {\n removeApplet();\n model.stop();\n ExportController.logAction(\"Unplugged\" + model.properties[what + 'Name']);\n var buttons = {};\n buttons[i18n.t(\"sensor.messages.try_again\")] = function() {\n $(this).dialog(\"close\");\n appendApplet();\n };\n buttons[i18n.t(\"sensor.messages.cancel\")] = function() {\n $(this).dialog(\"close\");\n };\n notifier.alert(i18n.t(\"sensor.messages.sensor_or_device_unplugged\", {\n sensor_or_device_name: model.properties[what + 'Name']\n }), buttons);\n }\n\n function startPollingSensor() {\n if (sensorPollingIntervalID) {\n clearInterval(sensorPollingIntervalID);\n }\n var handleSensorValues = function(error, values) {\n if (error) {\n if (error instanceof sensorApplet.AlreadyReadingError) {\n // Don't worry about it -- we just overlapped another call to readSensor\n } else if (error instanceof sensorApplet.SensorConnectionError) {\n clearInterval(sensorPollingIntervalID);\n handleSensorConnectionError();\n } else {\n clearInterval(sensorPollingIntervalID);\n throw error;\n }\n } else {\n makeInvalidatingChange(function() {\n rawSensorValue = values[0];\n rawSensorValue2 = values[1];\n if (isTaring) {\n model.properties.tareValue = rawSensorValue;\n isTaring = false;\n }\n if (isTaring2) {\n model.properties.tareValue2 = rawSensorValue2;\n isTaring2 = false;\n }\n });\n }\n };\n sensorPollingIntervalID = setInterval(function() {\n applet.readSensor(handleSensorValues);\n }, 1000 / sensorPollsPerSecond);\n }\n\n function stopPollingSensor() {\n if (sensorPollingIntervalID) {\n clearInterval(sensorPollingIntervalID);\n sensorPollingIntervalID = null;\n }\n }\n\n function initializeStateVariables() {\n stepCounter = 0;\n time = 0;\n rawSensorValue = undefined;\n rawSensorValue2 = undefined;\n didCollectData = false;\n isSensorTareable = false;\n isSensorTareable2 = false;\n isTaring = false;\n isTaring2 = false;\n }\n\n function setupApplet() {\n if (sensorType && sensorType2) {\n var sensorDefinition = sensorDefinitions[sensorType],\n sensorDefinition2 = sensorDefinitions[sensorType2],\n AppletClass = sensorApplet[sensorDefinition.appletClass];\n\n applet = window.Lab.sensor[sensorType + sensorType2] = new AppletClass({\n listenerPath: 'Lab.sensor.' + sensorType + sensorType2,\n sensorDefinitions: [sensorDefinition, sensorDefinition2],\n appletId: sensorType + sensorType2 + '-sensor',\n codebase: labConfig.rootUrl + \"/jars/lab-sensor-applet-interface-dist\"\n });\n\n appendApplet();\n }\n\n }\n\n function updateSamplesPerSecond() {\n if (sensorType && sensorType2) {\n var sensorDefinition = sensorDefinitions[sensorType],\n sensorDefinition2 = sensorDefinitions[sensorType2];\n\n samplesPerSecond = Math.max(sensorDefinition.samplesPerSecond, sensorDefinition2.samplesPerSecond);\n }\n }\n\n function setSensorType(_sensorType) {\n var sensorDefinition;\n var description;\n var measurementType;\n\n if (sensorType === _sensorType) {\n return;\n }\n\n if (sensorType) {\n // drop the tare value if we're changing from one sensor type to another!\n model.properties.tareValue = 0;\n }\n\n sensorType = _sensorType;\n rawSensorValue = undefined;\n\n if (applet) {\n removeApplet();\n }\n\n if (sensorType) {\n sensorDefinition = sensorDefinitions[sensorType];\n measurementType = sensorDefinition.measurementType;\n isSensorTareable = sensorDefinition.tareable;\n updateSamplesPerSecond();\n\n setupApplet();\n\n // Update the description of the main 'sensorReading' output\n description = new PropertyDescription(unitsDefinition, {\n label: sensorDefinition.measurementName,\n unitType: measurementType,\n min: sensorDefinition.minReading,\n max: sensorDefinition.maxReading\n });\n\n propertySupport.setPropertyDescription('sensorReading', description);\n\n // Override collectionTime only if it wasn't set on the model definition\n if (model.properties.collectionTime == null) {\n model.properties.collectionTime = sensorDefinition.maxSeconds;\n }\n } else if (model.properties.hasOwnProperty('sensorReading')) {\n // no sensor type\n description = new PropertyDescription(unitsDefinition, defaultSensorReadingDescriptionHash);\n propertySupport.setPropertyDescription('sensorReading', description);\n }\n }\n\n function setSensorType2(_sensorType) {\n var sensorDefinition;\n var description;\n var measurementType;\n\n if (sensorType2 === _sensorType) {\n return;\n }\n\n if (sensorType2) {\n // drop the tare value if we're changing from one sensor type to another!\n model.properties.tareValue2 = 0;\n }\n\n sensorType2 = _sensorType;\n rawSensorValue2 = undefined;\n\n if (applet) {\n removeApplet();\n }\n\n if (sensorType2) {\n sensorDefinition = sensorDefinitions[sensorType2];\n measurementType = sensorDefinition.measurementType;\n isSensorTareable2 = sensorDefinition.tareable;\n updateSamplesPerSecond();\n\n setupApplet();\n\n // Update the description of the main 'sensorReading' output\n description = new PropertyDescription(unitsDefinition, {\n label: sensorDefinition.measurementName,\n unitType: measurementType,\n min: sensorDefinition.minReading,\n max: sensorDefinition.maxReading\n });\n\n propertySupport.setPropertyDescription('sensorReading2', description);\n\n // Override collectionTime only if it wasn't set on the model definition\n if (model.properties.collectionTime == null) {\n model.properties.collectionTime = sensorDefinition.maxSeconds;\n }\n } else if (model.properties.hasOwnProperty('sensorReading2')) {\n // no sensor type\n description = new PropertyDescription(unitsDefinition, defaultSensorReadingDescriptionHash);\n propertySupport.setPropertyDescription('sensorReading2', description);\n }\n }\n\n function appletDataCallback(d) {\n stepCounter++;\n\n time += (1 / samplesPerSecond);\n\n // Whaaa? Accessing 'window' seems to prevent a strange bug in which Safari 6.0 stops updating\n // time after 3.7s. Hard to debug because accessing console, window, or Web Inspector makes\n // the problem go away!\n window.__bizarreSafariFix = 1;\n\n rawSensorValue = d[0];\n rawSensorValue2 = d[1];\n // Once we collect data for a given sensor, don't allow changingn the sensor typea\n if (!didCollectData) {\n model.freeze('sensorType');\n model.freeze('sensorType2');\n }\n\n didCollectData = true;\n\n propertySupport.deleteComputedPropertyCachedValues();\n propertySupport.notifyAllComputedProperties();\n updateFilteredOutputs();\n\n dispatch.tick();\n }\n\n model = {\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n start: function() {\n if (!model.properties.isPlayable) {\n return;\n }\n\n applet.start(function(error, isStarted) {\n if (error) {\n if (error instanceof sensorApplet.SensorConnectionError) {\n handleSensorConnectionError();\n }\n } else if (isStarted) {\n makeInvalidatingChange(function() {\n isStopped = false;\n });\n dispatch.play();\n }\n });\n },\n\n stop: function() {\n\n if (applet) {\n applet.stop();\n }\n makeInvalidatingChange(function() {\n isStopped = true;\n });\n dispatch.stop();\n },\n\n tare: function() {\n if (!isStopped) {\n throw new Error(\"Sensor model: tare() called on a non-stopped model.\");\n }\n if (sensorPollingIntervalID != null && rawSensorValue != null) {\n model.properties.tareValue = rawSensorValue;\n } else {\n makeInvalidatingChange(function() {\n isTaring = true;\n });\n }\n },\n\n tare2: function() {\n if (!isStopped) {\n throw new Error(\"Sensor model: tare() called on a non-stopped model.\");\n }\n if (sensorPollingIntervalID != null && rawSensorValue2 != null) {\n model.properties.tareValue2 = rawSensorValue2;\n } else {\n makeInvalidatingChange(function() {\n isTaring2 = true;\n });\n }\n },\n\n willReset: function() {\n dispatch.willReset();\n },\n\n reset: function() {\n model.stop();\n removeApplet();\n\n initializeStateVariables();\n model.unfreeze('sensorType');\n model.unfreeze('sensorType2');\n model.properties.sensorType = initialSensorType;\n model.properties.sensorType2 = initialSensorType;\n\n dispatch.reset();\n },\n\n reload: function() {\n model.stop();\n makeInvalidatingChange(function() {\n needsReload = true;\n });\n },\n\n isStopped: function() {\n return isStopped;\n },\n\n stepCounter: function() {\n return stepCounter;\n },\n\n //\n // The following are essentially copied from MD2D modeler, and should moved to a common module\n //\n\n addPropertiesListener: function(properties, callback) {\n if (typeof properties === 'string') {\n model.addObserver(properties, callback);\n } else {\n properties.forEach(function(property) {\n model.addObserver(property, callback);\n });\n }\n },\n\n defineParameter: function(key, descriptionHash, setter) {\n var descriptor = {\n type: 'parameter',\n includeInHistoryState: true,\n invokeSetterAfterBulkRestore: false,\n description: new PropertyDescription(unitsDefinition, descriptionHash),\n beforeSetCallback: invalidatingChangePreHook,\n afterSetCallback: invalidatingChangePostHook\n };\n\n // In practice, some parameters are meant only to be observed, and have no setter\n if (setter) {\n descriptor.set = function(value) {\n setter.call(model, value);\n };\n }\n propertySupport.defineProperty(key, descriptor);\n },\n\n defineOutput: function(key, descriptionHash, getter) {\n propertySupport.defineProperty(key, {\n type: 'output',\n writable: false,\n get: getter,\n includeInHistoryState: false,\n description: new PropertyDescription(unitsDefinition, descriptionHash)\n });\n },\n\n defineFilteredOutput: function(key, description, filteredPropertyKey, type, period) {\n var filter, initialValue;\n\n if (type === \"RunningAverage\") {\n filter = new RunningAverageFilter(period);\n } else {\n throw new Error(\"FilteredOutput: unknown filter type \" + type + \".\");\n }\n\n // Add initial sample\n initialValue = model.properties[key];\n if (initialValue === undefined || isNaN(Number(initialValue))) {\n throw new Error(\"FilteredOutput: property is not a valid numeric value or it is undefined.\");\n }\n filter.addSample(model.properties.time, initialValue);\n\n filteredOutputs.push({\n addSample: function() {\n filter.addSample(model.properties.time, model.properties[filteredPropertyKey]);\n }\n });\n\n // Extend description to contain information about filter\n description.property = filteredPropertyKey;\n description.type = type;\n description.period = period;\n\n model.defineOutput(key, description, function() {\n return filter.calculate();\n });\n },\n\n serialize: function() {\n return \"\";\n }\n };\n\n initializeStateVariables();\n\n // Need to define a globally-accessible 'listenerPath' for the sensor to evaluate\n if (window.Lab === undefined) {\n window.Lab = {};\n }\n window.Lab.sensor = {};\n\n propertySupport.mixInto(model);\n\n customSetters = {\n sensorType: setSensorType,\n sensorType2: setSensorType2\n };\n\n mainProperties = validator.validateCompleteness(metadata.mainProperties, initialProperties);\n Object.keys(mainProperties).forEach(function(key) {\n defineBuiltinProperty(key, 'mainProperty', customSetters[key]);\n });\n propertySupport.setRawValues(mainProperties);\n\n // Remember thse values so that the model can be reset properly\n initialSensorType = model.properties.sensorType;\n initialTareValue = model.properties.tareValue;\n\n viewOptions = validator.validateCompleteness(metadata.viewOptions, initialProperties.viewOptions || {});\n Object.keys(viewOptions).forEach(function(key) {\n defineBuiltinProperty(key, 'viewOption');\n });\n propertySupport.setRawValues(viewOptions);\n\n model.defineOutput('time', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('displayTime', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('sensorReading', defaultSensorReadingDescriptionHash, function() {\n if (rawSensorValue == null) {\n return rawSensorValue;\n }\n return rawSensorValue - model.properties.tareValue;\n });\n\n model.defineOutput('sensorReading2', defaultSensorReadingDescriptionHash, function() {\n if (rawSensorValue2 == null) {\n return rawSensorValue2;\n }\n return rawSensorValue2 - model.properties.tareValue2;\n });\n\n // TODO. Need a better way for the model to be able to have a property which it can set the\n // value of at arbitrary times, but which is read-only to client code. Outputs aren't quite\n // the right solution because the invalidation stuff is really about time and physics-based\n // invalidation.\n\n model.defineOutput('sensorName', {\n label: \"Sensor Name\"\n }, function() {\n return sensorDefinitions[sensorType].sensorName;\n });\n\n model.defineOutput('sensorName2', {\n label: \"Sensor Name\"\n }, function() {\n return sensorDefinitions[sensorType2].sensorName;\n });\n\n model.defineOutput('deviceName', {\n label: \"Sensor Interface Device Name\"\n }, function() {\n return sensorDefinitions[sensorType].deviceName;\n });\n\n model.defineOutput('deviceName2', {\n label: \"Sensor Interface Device Name\"\n }, function() {\n return sensorDefinitions[sensorType2].deviceName;\n });\n\n model.defineOutput('isStopped', {\n label: \"Stopped?\"\n }, function() {\n return isStopped;\n });\n\n // TODO. We need a way to make \"model-writable\" read only properties.\n model.defineOutput('isPlayable', {\n label: \"Startable?\"\n }, function() {\n return isSensorReady && !didCollectData;\n });\n\n model.defineOutput('hasPlayed', {\n label: \"Has successfully collected data?\"\n }, function() {\n return didCollectData;\n });\n\n model.defineOutput('shouldPollSensor', {\n label: \"Polling Sensor?\"\n }, function() {\n return model.properties.isPlayable && isStopped;\n });\n\n model.defineOutput('isSensorInitializing', {\n label: \"Loading Sensor?\"\n }, function() {\n return isSensorInitializing;\n });\n\n model.defineOutput('isTaring', {\n label: \"Waiting for a tare value?\"\n }, function() {\n return isTaring;\n });\n\n model.defineOutput('isTaring2', {\n label: \"Waiting for a tare value?\"\n }, function() {\n return isTaring2;\n });\n\n model.defineOutput('canTare', {\n label: \"Can set a tare value?\"\n }, function() {\n return isStopped && !didCollectData && isSensorTareable && !isTaring;\n });\n\n model.defineOutput('canTare2', {\n label: \"Can set a tare value?\"\n }, function() {\n return isStopped && !didCollectData && isSensorTareable2 && !isTaring2;\n });\n\n model.defineOutput('needsReload', {\n label: \"Needs Reload?\"\n }, function() {\n return needsReload;\n });\n\n // Clean up state before we go -- failing to remove the applet from the page before switching\n // between 2 sensor types that use the same interface causes an applet exception.\n model.on('willReset.model', removeApplet);\n\n model.addObserver('shouldPollSensor', function() {\n if (model.properties.shouldPollSensor) {\n startPollingSensor();\n } else {\n stopPollingSensor();\n }\n });\n\n model.addObserver('collectionTime', updateDisplayTimeRange);\n updateDisplayTimeRange();\n\n // Kick things off by doing this explicitly:\n setSensorType(model.properties.sensorType);\n setSensorType2(model.properties.sensorType2);\n\n return model;\n};\n","import SelectBoxView from 'common/views/select-box-view';\nimport NumericOutputView from 'common/views/numeric-output-view';\nimport sensorApplet from 'sensor-applet';\nimport viewState from 'common/views/view-state';\nconst sensorDefinitions = sensorApplet.sensorDefinitions;\n\nexport default function(model, modelUrl, i18n) {\n\n var sensorTypeView = new SelectBoxView({\n id: 'sensor-type-view',\n options: [{\n value: null,\n text: i18n.t(\"sensor.select_sensor_type\"),\n selected: model.properties.sensorType == null,\n disabled: true\n }].concat(Object.keys(sensorDefinitions).filter(function(key) {\n return sensorDefinitions[key].appletClass === \"LabQuest\";\n }).map(function(key) {\n return {\n value: key,\n text: sensorDefinitions[key].sensorName,\n selected: key === model.properties.sensorType,\n disabled: false\n };\n })),\n onChange: function(option) {\n model.properties.sensorType = option.value;\n }\n });\n\n var sensorType2View = new SelectBoxView({\n id: 'sensor-type2-view',\n options: [{\n value: null,\n text: i18n.t(\"sensor.select_sensor_type\"),\n selected: model.properties.sensorType2 == null,\n disabled: true\n }].concat(Object.keys(sensorDefinitions).filter(function(key) {\n return sensorDefinitions[key].appletClass === \"LabQuest\";\n }).map(function(key) {\n return {\n value: key,\n text: sensorDefinitions[key].sensorName,\n selected: key === model.properties.sensorType2,\n disabled: false\n };\n })),\n onChange: function(option) {\n model.properties.sensorType2 = option.value;\n }\n });\n\n // TODO use the formatter from the property description. Right now, it automatically adds\n // units to the returned string (which we don't want here).\n var format = d3.format('.2f');\n var sensorReadingView, sensorReading2View;\n var view;\n\n function setIsTaringState() {\n if (model.properties.isTaring) {\n view.$zeroButton.find('button').html(i18n.t(\"sensor.zeroing\"));\n } else {\n view.$zeroButton.find('button').html(i18n.t(\"sensor.zero\"));\n }\n }\n\n function setCanTareState() {\n if (model.properties.canTare) {\n viewState.enableView(view.$zeroButton);\n } else {\n viewState.disableView(view.$zeroButton);\n }\n }\n\n function setIsTaringState2() {\n if (model.properties.isTaring2) {\n view.$zeroButton2.find('button').html(i18n.t(\"sensor.zeroing\"));\n } else {\n view.$zeroButton2.find('button').html(i18n.t(\"sensor.zero\"));\n }\n }\n\n function setCanTareState2() {\n if (model.properties.canTare2) {\n viewState.enableView(view.$zeroButton2);\n } else {\n viewState.disableView(view.$zeroButton2);\n }\n }\n\n function setSensorTypeDisabledState() {\n var description = model.getPropertyDescription('sensorType');\n if (description.getFrozen()) {\n viewState.disableView(view.$selectBox);\n } else {\n viewState.enableView(view.$selectBox);\n }\n }\n\n function setSensorType2DisabledState() {\n var description = model.getPropertyDescription('sensorType2');\n if (description.getFrozen()) {\n viewState.disableView(view.$selectBox2);\n } else {\n viewState.enableView(view.$selectBox2);\n }\n }\n\n function setupModelObservers() {\n model.addObserver('isTaring', setIsTaringState);\n model.addObserver('isTaring2', setIsTaringState2);\n setIsTaringState();\n setIsTaringState2();\n\n model.addObserver('canTare', setCanTareState);\n model.addObserver('canTare2', setCanTareState2);\n setCanTareState();\n setCanTareState2();\n\n model.addPropertyDescriptionObserver('sensorType', setSensorTypeDisabledState);\n setSensorTypeDisabledState();\n model.addPropertyDescriptionObserver('sensorType2', setSensorType2DisabledState);\n setSensorType2DisabledState();\n }\n\n return view = {\n $el: $(\"
\"),\n\n bindModel: function(newModel, newModelUrl) {\n modelUrl = newModelUrl || modelUrl;\n model = newModel || model;\n\n setupModelObservers();\n },\n\n getHeightForWidth: function() {\n return \"4.8em\";\n },\n\n // called once we're in the DOM\n setup: function() {\n\n this.$el.empty();\n\n sensorReadingView = new NumericOutputView({\n id: 'sensor-value-view',\n label: i18n.t(\"sensor.reading\"),\n units: model.getPropertyDescription('sensorReading').getUnitAbbreviation()\n });\n\n sensorReading2View = new NumericOutputView({\n id: 'sensor-value-2-view',\n label: i18n.t(\"sensor.reading\"),\n units: model.getPropertyDescription('sensorReading2').getUnitAbbreviation()\n });\n\n var $row1 = $(\"
\"),\n $row2 = $(\"
\"),\n $selectBox = sensorTypeView.render(this.$el),\n $selectBox2 = sensorType2View.render(this.$el),\n $zeroButton = $(\"
\"),\n $zeroButton2 = $(\"
\"),\n $sensorReading = sensorReadingView.render(),\n $sensorReading2 = sensorReading2View.render();\n\n $selectBox.addClass('interactive-pulldown component component-spacing');\n $selectBox2.addClass('interactive-pulldown component component-spacing');\n $zeroButton.addClass('interactive-button component component-spacing');\n $zeroButton2.addClass('interactive-button component component-spacing');\n $sensorReading.addClass('numeric-output component horizontal component-spacing');\n $sensorReading2.addClass('numeric-output component horizontal component-spacing');\n\n this.$el.css('zIndex', 4);\n this.$el.append($row1);\n this.$el.append($row2);\n $row1.append($selectBox);\n $row1.append($sensorReading);\n $row1.append($zeroButton);\n $row2.append($selectBox2);\n $row2.append($sensorReading2);\n $row2.append($zeroButton2);\n\n this.$zeroButton = $zeroButton;\n this.$zeroButton2 = $zeroButton2;\n this.$selectBox = $selectBox;\n this.$selectBox2 = $selectBox2;\n\n sensorReadingView.resize();\n sensorReading2View.resize();\n\n setupModelObservers();\n\n $zeroButton.on('click', 'button', function() {\n model.tare();\n });\n $zeroButton2.on('click', 'button', function() {\n model.tare2();\n });\n },\n\n showInitializationProgress: function() {\n var $progressbar;\n\n if (!this.$progressbarContainer) {\n $progressbar = $('
')\n .attr('id', 'sensor-progressbar');\n\n this.$progressbarContainer = $('
')\n .attr('id', 'sensor-progressbar-container')\n .css('bottom', $('body').height() / 2 + 75 + $('.lab-responsive-content').offset().top)\n .append('
' + i18n.t('sensor.loading_sensor') + '
')\n .append($progressbar)\n .appendTo('.lab-responsive-content');\n\n $progressbar.progressbar({\n value: false\n });\n }\n\n this.$progressbarContainer.show();\n },\n\n hideInitializationProgress: function() {\n this.$progressbarContainer.hide();\n },\n\n resize: function() {\n if (sensorReadingView) {\n sensorReadingView.resize();\n }\n\n if (sensorReading2View) {\n sensorReading2View.resize();\n }\n },\n\n repaint: function() {},\n\n setFocus: function() {},\n\n updateUnits: function(units) {\n sensorReadingView.updateUnits(units);\n if (model.properties.sensorReading == null) {\n sensorReadingView.hideUnits();\n }\n },\n\n updateUnits2: function(units) {\n sensorReading2View.updateUnits(units);\n if (model.properties.sensorReading2 == null) {\n sensorReading2View.hideUnits();\n }\n },\n\n update: function() {\n if (model.properties.sensorReading == null) {\n sensorReadingView.update(\"\");\n sensorReadingView.hideUnits();\n } else {\n sensorReadingView.update(format(model.properties.sensorReading));\n sensorReadingView.showUnits();\n }\n\n if (model.properties.sensorReading2 == null) {\n sensorReading2View.update(\"\");\n sensorReading2View.hideUnits();\n } else {\n sensorReading2View.update(format(model.properties.sensorReading2));\n sensorReading2View.showUnits();\n }\n }\n };\n};\n"," /**\n Define the model-specific Dual Sensor scripting API used by 'action' scripts on interactive elements.\n\n The universal Interactive scripting API is extended with the properties of the\n object below which will be exposed to the interactive's 'action' scripts as if\n they were local vars. All other names (including all globals, but excluding\n Javascript builtins) will be unavailable in the script context; and scripts\n are run in strict mode so they don't accidentally expose or read globals.\n\n @param: parent Common Scripting API\n*/\nexport default function DualSensorScriptingAPI(parent) {\n return {\n /**\n * Reset the model. The interactives controller will emit a 'willResetModel'.\n * The willResetModel observers can ask to wait for asynchronous confirmation before\n * the model is actually reset.\n * Note that the effect would be almost the same like after reload operation. However\n * the mechanism under the hood is completely different. The biggest difference for\n * authoring is that when .resetModel() is called, the \"onLoad\" script won't be\n * executed again. It may be also faster than reload.\n * @param {object} options hash of options, supported properties:\n * * propertiesToRetain - a list of properties to save before\n * the model reset and restore after reset.\n * * cause - cause of the reset action.\n */\n resetModel: function resetModel(options) {\n parent.intController.resetModel(options);\n }\n };\n};\n","\nimport ModelController from 'common/controllers/model-controller';\nimport Model from 'models/dual-sensor/modeler';\nimport ModelContainer from 'models/dual-sensor/view';\nimport ScriptingAPI from 'models/dual-sensor/scripting-api';\n// Dependencies.\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n var controller = new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI);\n\n // Note to self: modelController doesn't emit modelLoaded when the model first loads.\n // This was unexpected...\n\n function setupModelObservers() {\n var model = controller.model;\n\n model.addObserver('isSensorInitializing', function() {\n var view = controller.modelContainer;\n\n if (model.properties.isSensorInitializing) {\n view.showInitializationProgress();\n } else {\n view.hideInitializationProgress();\n }\n });\n\n model.addObserver('sensorReading', function() {\n // if the model is running, the tick handler will take care of it\n if (model.isStopped()) {\n controller.updateView();\n }\n });\n\n model.addObserver('sensorReading2', function() {\n // if the model is running, the tick handler will take care of it\n if (model.isStopped()) {\n controller.updateView();\n }\n });\n\n model.addObserver('needsReload', function() {\n if (model.properties.needsReload) {\n interactiveController.reloadModel();\n }\n });\n\n // TODO This will have to handle have 2 different units...\n model.addPropertyDescriptionObserver('sensorReading', function() {\n var description = model.getPropertyDescription('sensorReading');\n var view = controller.modelContainer;\n\n view.updateUnits(description.getUnitAbbreviation());\n });\n\n model.addPropertyDescriptionObserver('sensorReading2', function() {\n var description = model.getPropertyDescription('sensorReading2');\n var view = controller.modelContainer;\n\n view.updateUnits2(description.getUnitAbbreviation());\n });\n }\n\n interactiveController.on('modelLoaded.dual-sensor-model-controller', setupModelObservers);\n\n interactiveController.on('modelReset.dual-sensor-model-controller', function() {\n controller.model.set('isNewRunInProgress', false);\n });\n\n interactiveController.on('willResetModel', function() {\n controller.model.set('isNewRunInProgress', true);\n });\n\n return controller;\n};\n","\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"dual-sensor-connector\",\n immutable: true\n },\n tareValue: {\n defaultValue: 0\n },\n tareValue2: {\n defaultValue: 0\n },\n clientId: {\n defaultValue: null\n },\n clientName: {\n defaultValue: null\n },\n useRandomClientId: {\n defaultValue: false\n },\n useDuration: {\n defaultValue: 'codap',\n storeInTickHistory: false,\n validate: function(value) {\n if (value === true || value === false || value === 'codap') {\n return value;\n }\n throw new Error(\"Invalid 'useDuration' value: \" + value);\n },\n },\n requestedDuration: {\n defaultValue: 10,\n storeInTickHistory: false\n }\n },\n viewOptions: {\n showClock: {\n defaultValue: true,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"play_reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n }\n }\n};\n","\n// Dead-simple, non-hierarchical state machine to which you dispatch events. The state machine is\n// in one state at a time (once the initial state is specified) and each event you ask it to\n// dispatch is simply handled by the current state's handler for that event (i.e.., the state's\n// method having the same name of the event). If the current state defines no handler by that\n// name, the event is ignored. Each handler can transition the state machine to a different state\n// by invoking 'this.gotoState()' in which case the old state's 'leaveState'\n// method will be called, the new state will become the current state, and the new state's\n// 'enterState' method will be called. A state's enterState method can also call this.gotoState\n// (for example, after checking some condition) in which case, the \"new, new\" state will become\n// the current state. However, remember that this implementation is simple: any code in the\n// enterState method after gotoState will run with the \"new, new\" state as the current state --\n// not the same state in which the enterState method is defined. Additionally, if you go to a\n// state from itself, the enterState method will simply run again.\n\n// You configure the state machine by passing its constructor an object having each state as the\n// child objects. Each state's name is taken from the its key in that parent object, and the\n// constructor simply endows each state with a 'name' property and a 'gotoState' method. Each\n// state object should define a method for each event it will handle. Events passed to\n// stateMachine.handleEvent which do not correspond to a method in the current state ware simply\n// ignored. (handleEvent returns true if the state has a handler for the event, false otherwise.)\n\n// Usage:\n// var stateMachine = new StateMachine({\n// state1: {\n// enterState: function() {\n// console.log(\"entered state 1\");\n// },\n// leaveState: function() {\n// console.log(\"leaving state 1\");\n// },\n// switchState: function() {\n// this.gotoState('state2');\n// }\n// },\n\n// state2: {\n// enterState: function() {\n// console.log(\"entered state 2\");\n// }\n// }\n// });\n\n// > stateMachine.gotoState('state1');\n// entered state 1\n// undefined\n// > stateMachine.handleEvent('switchState');\n// leaving state 1\n// entered state 2\n// false\n\n\nfunction StateMachine(states) {\n var self = this;\n\n this.states = states;\n this.currentState = null;\n\n Object.keys(states).forEach(function(key) {\n var state = states[key];\n // for debugging purposes\n if (state.name !== undefined && state.name !== key) {\n throw new Error(\"State \" + key + \" already has a 'name' property. The 'name' property is reserved.\");\n }\n state.name = key;\n\n if (state.gotoState !== undefined) {\n throw new Error(\"State \" + key + \" already has a 'gotoState' property. The 'gotoState' property is reserved.\");\n }\n state.gotoState = function(toStateName) {\n if (this !== self.currentState) {\n throw new Error(\"gotoState was called on state \" + this.name + \" but the current state is \", self.getCurrentStateName());\n }\n // just call the prototype method\n self.gotoState(toStateName);\n };\n\n });\n}\n\n\nStateMachine.prototype.getCurrentStateName = function() {\n if (this.currentState) {\n return this.currentState.name;\n } else {\n return \"\";\n }\n};\n\n\nStateMachine.prototype.gotoState = function(toStateName) {\n var toState = this.states[toStateName];\n if (!toState) {\n throw new Error(\"gotoState was called with state name \" + toStateName + \" but no such state exists.\");\n }\n\n if (this.currentState && typeof this.currentState.leaveState === 'function') {\n this.currentState.leaveState();\n }\n\n this.currentState = toState;\n\n if (typeof this.currentState.enterState === 'function') {\n this.currentState.enterState();\n }\n};\n\n\nStateMachine.prototype.handleEvent = function(eventName /*, eventArgs... */ ) {\n var eventArgs = Array.prototype.slice.call(arguments, 1);\n\n if (typeof this.currentState[eventName] === 'function') {\n this.currentState[eventName].apply(this.currentState, eventArgs);\n return true;\n }\n return false;\n};\n\n\nexport default StateMachine;\n\n","export default {\n units: {\n time: {\n name: \"second\",\n pluralName: \"seconds\",\n symbol: \"s\"\n }\n }\n};\n","// Information about sensor types, indexed by the units reported by the LabQuest2.\nexport default function(i18n) {\n return {\n \"lux\": {\n \"sensorName\": i18n.t(\"sensor.names.light\"),\n \"measurementName\": i18n.t(\"sensor.measurements.light_level\"),\n \"measurementType\": \"light level\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 2000.0\n },\n \"m\": {\n \"sensorName\": i18n.t(\"sensor.names.motion\"),\n \"measurementName\": i18n.t(\"sensor.measurements.position\"),\n \"measurementType\": \"position\",\n \"tareable\": true,\n \"minReading\": -2.0,\n \"maxReading\": 2.0\n },\n \"m/s²\": {\n \"sensorName\": i18n.t(\"sensor.names.accelerometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.acceleration\"),\n \"measurementType\": \"acceleration\",\n \"tareable\": true,\n \"minReading\": -50.0,\n \"maxReading\": 50.0\n },\n \"m/s^2\": {\n \"sensorName\": i18n.t(\"sensor.names.accelerometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.acceleration\"),\n \"measurementType\": \"acceleration\",\n \"tareable\": true,\n \"minReading\": -50.0,\n \"maxReading\": 50.0\n },\n \"g\": {\n \"sensorName\": i18n.t(\"sensor.names.accelerometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.acceleration\"),\n \"measurementType\": \"acceleration\",\n \"tareable\": true,\n \"minReading\": -5.0,\n \"maxReading\": 5.0\n },\n \"N/kg\": {\n \"sensorName\": i18n.t(\"sensor.names.accelerometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.acceleration\"),\n \"measurementType\": \"acceleration\",\n \"tareable\": true,\n \"minReading\": -25.0,\n \"maxReading\": 25.0\n },\n \"mg/L\": {\n \"sensorName\": i18n.t(\"sensor.names.dissolved_oxygen\"),\n \"measurementName\": i18n.t(\"sensor.measurements.dissolved_oxygen\"),\n \"measurementType\": \"do\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 12.0\n },\n \"kPa\": {\n \"sensorName\": i18n.t(\"sensor.names.pressure\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pressure\"),\n \"measurementType\": \"pressure\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 220.0\n },\n \"mm Hg\": {\n \"sensorName\": i18n.t(\"sensor.names.pressure\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pressure\"),\n \"measurementType\": \"pressure\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 2000.0\n },\n \"in Hg\": {\n \"sensorName\": i18n.t(\"sensor.names.pressure\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pressure\"),\n \"measurementType\": \"pressure\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 80.0\n },\n \"mbar\": {\n \"sensorName\": i18n.t(\"sensor.names.pressure\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pressure\"),\n \"measurementType\": \"pressure\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 2200.0\n },\n \"psi\": {\n \"sensorName\": i18n.t(\"sensor.names.pressure\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pressure\"),\n \"measurementType\": \"pressure\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 40.0\n },\n \"atm\": {\n \"sensorName\": i18n.t(\"sensor.names.pressure\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pressure\"),\n \"measurementType\": \"pressure\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 2.5\n },\n \"torr\": {\n \"sensorName\": i18n.t(\"sensor.names.pressure\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pressure\"),\n \"measurementType\": \"pressure\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 2000.0\n },\n \"nC\": {\n \"sensorName\": i18n.t(\"sensor.names.charge_sensor\"),\n \"measurementName\": i18n.t(\"sensor.measurements.charge\"),\n \"measurementType\": \"charge\",\n \"tareable\": false,\n \"minReading\": -20.0,\n \"maxReading\": 20.0\n },\n \"V\": {\n \"sensorName\": i18n.t(\"sensor.names.voltage\"),\n \"measurementName\": i18n.t(\"sensor.measurements.potential\"),\n \"measurementType\": \"potential\",\n \"tareable\": true,\n \"minReading\": -30.0,\n \"maxReading\": 30.0\n },\n \"pH\": {\n \"sensorName\": i18n.t(\"sensor.names.pH\"),\n \"measurementName\": i18n.t(\"sensor.measurements.pH\"),\n \"measurementType\": \"ph\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 14.0\n },\n \"ppm\": {\n \"sensorName\": i18n.t(\"sensor.names.CO2_gas\"),\n \"measurementName\": i18n.t(\"sensor.measurements.CO2\"),\n \"measurementType\": \"co2\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 5000.0\n },\n \"ppt\": {\n \"sensorName\": i18n.t(\"sensor.names.CO2_gas\"),\n \"measurementName\": i18n.t(\"sensor.measurements.CO2\"),\n \"measurementType\": \"co2\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 5.0\n },\n \"%\": {\n \"sensorName\": i18n.t(\"sensor.names.CO2_gas\"),\n \"measurementName\": i18n.t(\"sensor.measurements.CO2\"),\n \"measurementType\": \"co2\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 0.5\n },\n \"%T\": {\n \"sensorName\": i18n.t(\"sensor.names.colorimeter\"),\n \"measurementName\": i18n.t(\"sensor.measurements.transmittance\"),\n \"measurementType\": \"transmittance\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 100.0\n },\n \"µS/cm\": {\n \"sensorName\": i18n.t(\"sensor.names.conductivity\"),\n \"measurementName\": i18n.t(\"sensor.measurements.conductivity\"),\n \"measurementType\": \"conductivity\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 2000.0\n },\n \"dS/m\": {\n \"sensorName\": i18n.t(\"sensor.names.conductivity\"),\n \"measurementName\": i18n.t(\"sensor.measurements.conductivity\"),\n \"measurementType\": \"conductivity\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 2.0\n },\n \"A\": {\n \"sensorName\": i18n.t(\"sensor.names.current\"),\n \"measurementName\": i18n.t(\"sensor.measurements.current\"),\n \"measurementType\": \"current\",\n \"tareable\": true,\n \"minReading\": -1.2,\n \"maxReading\": 1.2\n },\n \"mA\": {\n \"sensorName\": i18n.t(\"sensor.names.current\"),\n \"measurementName\": i18n.t(\"sensor.measurements.current\"),\n \"measurementType\": \"current\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 500.0\n },\n \"°C\": {\n \"sensorName\": i18n.t(\"sensor.names.temperature\"),\n \"measurementName\": i18n.t(\"sensor.measurements.temperature\"),\n \"measurementType\": \"temperature\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 40.0\n },\n \"degC\": {\n \"sensorName\": i18n.t(\"sensor.names.temperature\"),\n \"measurementName\": i18n.t(\"sensor.measurements.temperature\"),\n \"measurementType\": \"temperature\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 40.0\n },\n \"°F\": {\n \"sensorName\": i18n.t(\"sensor.names.temperature\"),\n \"measurementName\": i18n.t(\"sensor.measurements.temperature\"),\n \"measurementType\": \"temperature\",\n \"tareable\": false,\n \"minReading\": 30.0,\n \"maxReading\": 100.0\n },\n \"degF\": {\n \"sensorName\": i18n.t(\"sensor.names.temperature\"),\n \"measurementName\": i18n.t(\"sensor.measurements.temperature\"),\n \"measurementType\": \"temperature\",\n \"tareable\": false,\n \"minReading\": 30.0,\n \"maxReading\": 100.0\n },\n \"K\": {\n \"sensorName\": i18n.t(\"sensor.names.temperature\"),\n \"measurementName\": i18n.t(\"sensor.measurements.temperature\"),\n \"measurementType\": \"temperature\",\n \"tareable\": false,\n \"minReading\": 250.0,\n \"maxReading\": 400.0\n },\n \"N\": {\n \"sensorName\": i18n.t(\"sensor.names.force\"),\n \"measurementName\": i18n.t(\"sensor.measurements.force\"),\n \"measurementType\": \"force\",\n \"tareable\": true,\n \"minReading\": -50.0,\n \"maxReading\": 50.0\n },\n \"lb\": {\n \"sensorName\": i18n.t(\"sensor.names.force\"),\n \"measurementName\": i18n.t(\"sensor.measurements.force\"),\n \"measurementType\": \"force\",\n \"tareable\": true,\n \"minReading\": -12.5,\n \"maxReading\": 12.5\n },\n \"mV\": {\n \"sensorName\": null,\n \"measurementName\": i18n.t(\"sensor.measurements.potential\"),\n \"measurementType\": \"potential\",\n \"tareable\": true,\n \"minReading\": -500.0,\n \"maxReading\": 1100.0\n },\n \"m/s\": {\n \"sensorName\": i18n.t(\"sensor.names.motion\"),\n \"measurementName\": i18n.t(\"sensor.measurements.velocity\"),\n \"measurementType\": \"velocity\",\n \"tareable\": true,\n \"minReading\": -5.0,\n \"maxReading\": 5.0\n },\n \"ft/s\": {\n \"sensorName\": i18n.t(\"sensor.names.anemometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.speed\"),\n \"measurementType\": \"speed\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 100.0\n },\n \"ft\": {\n \"sensorName\": i18n.t(\"sensor.names.motion\"),\n \"measurementName\": i18n.t(\"sensor.measurements.position\"),\n \"measurementType\": \"position\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 6.0\n },\n \"kg\": {\n \"sensorName\": i18n.t(\"sensor.names.hand_dynamometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.force\"),\n \"measurementType\": \"force\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 50.0\n },\n \"v\": {\n \"sensorName\": i18n.t(\"sensor.names.heart_rate\"),\n \"measurementName\": i18n.t(\"sensor.measurements.signal\"),\n \"measurementType\": \"signal\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 3.0\n },\n \"mT\": {\n \"sensorName\": i18n.t(\"sensor.names.magnetic_field\"),\n \"measurementName\": i18n.t(\"sensor.measurements.magnetic_field\"),\n \"measurementType\": \"magnetic field\",\n \"tareable\": true,\n \"minReading\": -8.0,\n \"maxReading\": 8.0\n },\n \"G\": {\n \"sensorName\": i18n.t(\"sensor.names.magnetic_field\"),\n \"measurementName\": i18n.t(\"sensor.measurements.magnetic_field\"),\n \"measurementType\": \"magnetic field\",\n \"tareable\": true,\n \"minReading\": -80.0,\n \"maxReading\": 80.0\n },\n \"rad\": {\n \"sensorName\": i18n.t(\"sensor.names.rotary_motion\"),\n \"measurementName\": i18n.t(\"sensor.measurements.angle\"),\n \"measurementType\": \"angle\",\n \"tareable\": true,\n \"minReading\": -15.0,\n \"maxReading\": 15.0\n },\n \"°\": {\n \"sensorName\": i18n.t(\"sensor.names.rotary_motion\"),\n \"measurementName\": i18n.t(\"sensor.measurements.angle\"),\n \"measurementType\": \"angle\",\n \"tareable\": true,\n \"minReading\": -1000.0,\n \"maxReading\": 1000.0\n },\n \"cm\": {\n \"sensorName\": i18n.t(\"sensor.names.linear_position_sensor\"),\n \"measurementName\": i18n.t(\"sensor.measurements.position\"),\n \"measurementType\": \"position\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 15.0\n },\n \"dB\": {\n \"sensorName\": i18n.t(\"sensor.names.sound_level\"),\n \"measurementName\": i18n.t(\"sensor.measurements.sound_level\"),\n \"measurementType\": \"sound level\",\n \"tareable\": true,\n \"minReading\": 40.0,\n \"maxReading\": 110.0\n },\n \"dbA\": {\n \"sensorName\": i18n.t(\"sensor.names.sound_level\"),\n \"measurementName\": i18n.t(\"sensor.measurements.sound_level\"),\n \"measurementType\": \"sound level\",\n \"tareable\": true,\n \"minReading\": 40.0,\n \"maxReading\": 110.0\n },\n \"rel\": {\n \"sensorName\": i18n.t(\"sensor.names.spectrophotometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.intensity\"),\n \"measurementType\": \"intensity\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 1.0\n },\n \"Rel\": {\n \"sensorName\": i18n.t(\"sensor.names.spectrophotometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.fluorescence_405_nm\"),\n \"measurementType\": \"fluorescence 405 nm\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 1.0\n },\n \"Rel.\": {\n \"sensorName\": i18n.t(\"sensor.names.spectrophotometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.fluorescence_500_nm\"),\n \"measurementType\": \"fluorescence 500 nm\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 1.0\n },\n \"L/s\": {\n \"sensorName\": i18n.t(\"sensor.names.spirometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.flow_rate\"),\n \"measurementType\": \"flow rate\",\n \"tareable\": true,\n \"minReading\": -4.0,\n \"maxReading\": 4.0\n },\n \"mL/s\": {\n \"sensorName\": i18n.t(\"sensor.names.spirometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.flow_rate\"),\n \"measurementType\": \"flow rate\",\n \"tareable\": true,\n \"minReading\": -4000.0,\n \"maxReading\": 4000.0\n },\n \"NTU\": {\n \"sensorName\": i18n.t(\"sensor.names.turbidity\"),\n \"measurementName\": i18n.t(\"sensor.measurements.turbidity\"),\n \"measurementType\": \"turbidity\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 50.0\n },\n \"mW/m²\": {\n \"sensorName\": i18n.t(\"sensor.names.UV_sensor\"),\n \"measurementName\": i18n.t(\"sensor.measurements.UV_intensity\"),\n \"measurementType\": \"uv intensity\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 20000.0\n },\n \"mL\": {\n \"sensorName\": i18n.t(\"sensor.names.drop_counter\"),\n \"measurementName\": i18n.t(\"sensor.measurements.volume\"),\n \"measurementType\": \"volume\",\n \"tareable\": false,\n \"minReading\": 0.0,\n \"maxReading\": 3.0\n },\n \"f\": {\n \"sensorName\": i18n.t(\"sensor.names.altitude\"),\n \"measurementName\": i18n.t(\"sensor.measurements.altitude\"),\n \"measurementType\": \"altitude\",\n \"tareable\": true,\n \"minReading\": -300.0,\n \"maxReading\": 300.0\n },\n \"mph\": {\n \"sensorName\": i18n.t(\"sensor.names.anemometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.speed\"),\n \"measurementType\": \"speed\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 10.0\n },\n \"km/h\": {\n \"sensorName\": i18n.t(\"sensor.names.anemometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.speed\"),\n \"measurementType\": \"speed\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 20.0\n },\n \"knots\": {\n \"sensorName\": i18n.t(\"sensor.names.anemometer\"),\n \"measurementName\": i18n.t(\"sensor.measurements.speed\"),\n \"measurementType\": \"speed\",\n \"tareable\": true,\n \"minReading\": 0.0,\n \"maxReading\": 50.0\n }\n };\n};\n"," \nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport PropertyDescription from 'common/property-description';\nimport metadata from './metadata';\nimport StateMachine from 'common/state-machine';\nimport SensorConnectorInterface from 'sensor-connector-interface';\nimport unitsDefinition from './units-definition';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions-connector';\nimport Notifier from 'models/sensor-common/notifier';\n\n\nexport default function Model(initialProperties, opt) {\n var i18n = opt.i18n,\n notifier = new Notifier(i18n),\n\n labModelerMixin,\n propertySupport,\n dispatch,\n stateMachine,\n sensorConnectorInterface,\n timeColumn,\n dataColumn,\n dataColumn2,\n selectedSensor,\n selectedSensor2,\n sensorName,\n sensorName2,\n isStopped,\n needsReload,\n time,\n rawSensorValue,\n rawSensorValue2,\n liveSensorValue,\n liveSensorValue2,\n stepCounter,\n isPlayable,\n canTare,\n canTare2,\n canControl,\n hasMultipleSensors,\n isSensorTareable,\n isSensorTareable2,\n message,\n statusDialog,\n statusErrors,\n displayTimePropertyDescription,\n model;\n\n var defaultSensorReadingDescription = {\n label: i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: \"-\",\n format: '.2f',\n min: 0,\n max: 10\n };\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n function updatePropertyRange(property, min, max) {\n var descriptionHash;\n var description;\n\n descriptionHash = model.getPropertyDescription(property).getHash();\n descriptionHash.min = min;\n descriptionHash.max = max;\n\n description = new PropertyDescription(unitsDefinition, descriptionHash);\n propertySupport.setPropertyDescription(property, description);\n }\n\n // Updates min, max of displayTime to be [0..actualDuration]\n function updateDisplayTimeRange() {\n if (model.properties.actualDuration === null || model.properties.actualDuration === Infinity) {\n return;\n }\n updatePropertyRange('displayTime', 0, model.properties.actualDuration);\n }\n\n function setSensorReadingDescription() {\n var sensorDefinition;\n var description;\n\n if (dataColumn) {\n sensorDefinition = sensorDefinitions[dataColumn.units];\n\n if (sensorDefinition) {\n description = {\n label: sensorDefinition.measurementName,\n format: '.2f',\n min: sensorDefinition.minReading,\n max: sensorDefinition.maxReading\n };\n if (unitsDefinition.units[sensorDefinition.measurementType]) {\n description.unitType = sensorDefinition.measurementType;\n } else {\n description.unitAbbreviation = dataColumn.units;\n }\n isSensorTareable = sensorDefinition.tareable;\n sensorName = sensorDefinition.sensorName || (dataColumn.units + \" \" + i18n.t(\"sensor.names.sensor\"));\n } else {\n description = {\n label: dataColumn.name || i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: dataColumn.units,\n format: '.2f',\n min: 0,\n max: 10\n };\n isSensorTareable = true;\n sensorName = dataColumn.units + \" \" + i18n.t(\"sensor.names.sensor\");\n }\n } else {\n description = defaultSensorReadingDescription;\n isSensorTareable = false;\n sensorName = i18n.t(\"sensor.names.no_sensor\");\n }\n\n propertySupport.setPropertyDescription('sensorReading',\n new PropertyDescription(unitsDefinition, description));\n propertySupport.setPropertyDescription('liveSensorReading',\n new PropertyDescription(unitsDefinition, description));\n }\n\n function setSensorReadingDescription2() {\n var sensorDefinition;\n var description;\n\n if (dataColumn2) {\n sensorDefinition = sensorDefinitions[dataColumn2.units];\n\n if (sensorDefinition) {\n description = {\n label: sensorDefinition.measurementName,\n format: '.2f',\n min: sensorDefinition.minReading,\n max: sensorDefinition.maxReading\n };\n if (unitsDefinition.units[sensorDefinition.measurementType]) {\n description.unitType = sensorDefinition.measurementType;\n } else {\n description.unitAbbreviation = dataColumn2.units;\n }\n isSensorTareable2 = sensorDefinition.tareable;\n sensorName2 = sensorDefinition.sensorName || (dataColumn.units + \" \" + i18n.t(\"sensor.names.sensor\"));\n } else {\n description = {\n label: dataColumn2.name || i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: dataColumn2.units,\n format: '.2f',\n min: 0,\n max: 10\n };\n isSensorTareable2 = true;\n sensorName2 = dataColumn2.units + \" \" + i18n.t(\"sensor.names.sensor\");\n }\n } else {\n description = defaultSensorReadingDescription;\n isSensorTareable2 = false;\n sensorName2 = i18n.t(\"sensor.names.no_sensor\");\n }\n\n propertySupport.setPropertyDescription('sensorReading2',\n new PropertyDescription(unitsDefinition, description));\n propertySupport.setPropertyDescription('liveSensorReading2',\n new PropertyDescription(unitsDefinition, description));\n }\n\n function initializeStateVariables() {\n isStopped = true;\n canControl = sensorConnectorInterface.canControl;\n hasMultipleSensors = false;\n // Set selectedSensor if it hasn't been set yet\n if (typeof(selectedSensor) === \"undefined\" || selectedSensor === null) {\n selectedSensor = {\n index: 1\n };\n }\n if (typeof(selectedSensor2) === \"undefined\" || selectedSensor2 === null) {\n selectedSensor2 = {\n index: 2\n };\n }\n stepCounter = 0;\n time = 0;\n statusErrors = 0;\n rawSensorValue = undefined;\n rawSensorValue2 = undefined;\n liveSensorValue = undefined;\n liveSensorValue2 = undefined;\n timeColumn = undefined;\n dataColumn = undefined;\n dataColumn2 = undefined;\n }\n\n function checkColumnAgainstSelected(dataset, idx) {\n var colCandidate = dataset.columns[idx];\n if (colCandidate && colCandidate.units === selectedSensor.units) {\n selectedSensor.index = idx;\n return true;\n }\n return false;\n }\n\n function checkColumnAgainstSelected2(dataset, idx) {\n var colCandidate = dataset.columns[idx];\n if (colCandidate && colCandidate.units === selectedSensor2.units) {\n selectedSensor2.index = idx;\n return true;\n }\n return false;\n }\n\n function hasCollectableSensors(dataset) {\n if (dataset.columns.length < 2) {\n return false;\n }\n if (dataset.columns.length === 2 && !dataset.columns[1].name && !dataset.columns[1].units) {\n return false;\n }\n return true;\n }\n\n function setColumn() {\n var dataset = sensorConnectorInterface.datasets[0];\n var newDataColumn, newDataColumn2, sIdx;\n\n hasMultipleSensors = dataset.columns.length > 2;\n\n // The sensor connector always has column 0 as time\n timeColumn = dataset.columns[0];\n if (sensorConnectorInterface.hasAttachedInterface) {\n if (hasCollectableSensors(dataset) && hasMultipleSensors) {\n if (canControl) {\n message = i18n.t(\"sensor.messages.ready\");\n } else if (sensorConnectorInterface.inControl.clientName) {\n message = i18n.t(\"sensor.messages.ready_nocontrol\", {\n controlling_client: sensorConnectorInterface.inControl.clientName\n });\n } else {\n message = i18n.t(\"sensor.messages.ready_nocontrol_noname\");\n }\n isPlayable = true;\n } else {\n message = i18n.t(\"sensor.messages.no_sensors\");\n isPlayable = false;\n }\n\n // TODO When we want to support multiple sensors, this will have to change.\n // Select the column chosen by the user\n sIdx = selectedSensor.index;\n if (sIdx >= dataset.columns.length && dataset.columns.length > 1) {\n // we seem to be pointing past the number of columns there are. reset to that last column.\n sIdx = dataset.columns.length - 1;\n }\n newDataColumn = dataset.columns[sIdx];\n if (newDataColumn && selectedSensor.units && newDataColumn.units !== selectedSensor.units) {\n // our selected column seems to have changed out from under us.\n // If a sensor was added to the device, it could be one column higher\n if (checkColumnAgainstSelected(dataset, sIdx + 1)) {\n newDataColumn = dataset.columns[sIdx + 1];\n } else if (sIdx > 1 && checkColumnAgainstSelected(dataset, sIdx - 1)) {\n // it wasn't the one after. let's check the one before.\n newDataColumn = dataset.columns[sIdx - 1];\n } else {\n // it seems to be none of them. Reset the selected sensor to the first one.\n newDataColumn = dataset.columns[1];\n selectedSensor.index = 1;\n }\n }\n\n // select the column chosen by the user for the second sensor\n sIdx = selectedSensor2.index;\n if (sIdx >= dataset.columns.length && dataset.columns.length > 2) {\n // we seem to be pointing past the number of columns there are. reset to that last column.\n sIdx = dataset.columns.length - 1;\n }\n newDataColumn2 = dataset.columns[sIdx];\n if (newDataColumn2 && selectedSensor2.units && newDataColumn2.units !== selectedSensor2.units) {\n // our selected column seems to have changed out from under us.\n // If a sensor was added to the device, it could be one column higher\n if (checkColumnAgainstSelected2(dataset, sIdx + 1)) {\n newDataColumn2 = dataset.columns[sIdx + 1];\n } else if (sIdx > 1 && checkColumnAgainstSelected2(dataset, sIdx - 1)) {\n // it wasn't the one after. let's check the one before.\n newDataColumn2 = dataset.columns[sIdx - 1];\n } else {\n // it seems to be none of them. Reset the selected sensor to the first one.\n newDataColumn2 = dataset.columns[2];\n selectedSensor2.index = 2;\n }\n }\n } else {\n message = i18n.t(\"sensor.messages.no_devices\");\n isPlayable = false;\n }\n\n if (newDataColumn && !newDataColumn.name && !newDataColumn.units) {\n // If we don't have a sensor name and units, assume it's not really a sensor\n newDataColumn = null;\n }\n\n if (newDataColumn2 && !newDataColumn2.name && !newDataColumn2.units) {\n // If we don't have a sensor name and units, assume it's not really a sensor\n newDataColumn2 = null;\n }\n\n dataColumn = newDataColumn;\n if (dataColumn) {\n selectedSensor.units = dataColumn.units;\n }\n setSensorReadingDescription();\n\n dataColumn2 = newDataColumn2;\n if (dataColumn2) {\n selectedSensor2.units = dataColumn2.units;\n }\n setSensorReadingDescription2();\n\n if (!dataColumn) {\n liveSensorValue = undefined;\n }\n if (!dataColumn2) {\n liveSensorValue2 = undefined;\n }\n }\n\n function handleData() {\n if (!timeColumn || !dataColumn || !dataColumn2) {\n return;\n }\n\n var numberOfValues = Math.min(Math.min(timeColumn.data.length, dataColumn.data.length), dataColumn2.data.length);\n for (; stepCounter < numberOfValues; stepCounter++) {\n time = timeColumn.data[stepCounter];\n\n if (time > model.properties.actualDuration) {\n // Stop, but continue to process any data received (if for no other reason than that\n // subsequent steps aren't happy until data up to the latest timestamp was received)\n model.stop();\n }\n rawSensorValue = dataColumn.data[stepCounter];\n rawSensorValue2 = dataColumn2.data[stepCounter];\n model.updateAllOutputProperties();\n dispatch.tick();\n }\n }\n\n function isAllColumnDataReceieved(column) {\n return column.receivedValuesTimeStamp >= column.requestedValuesTimeStamp;\n }\n\n function isAllDataReceived() {\n return isAllColumnDataReceieved(timeColumn) && (!dataColumn || isAllColumnDataReceieved(dataColumn)) && (!dataColumn2 || isAllColumnDataReceieved(dataColumn2));\n }\n\n function connectedSensors() {\n var sensors = [],\n dataset = sensorConnectorInterface.datasets[0],\n i;\n\n for (i = 0; i < dataset.columns.length; i++) {\n sensors.push({\n units: dataset.columns[i].units,\n name: dataset.columns[i].name\n });\n }\n return sensors;\n }\n\n model = {\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n start: function() {\n handle('start');\n },\n\n stop: function() {\n handle('stop');\n },\n\n tare: function() {\n var oldPlayable = isPlayable;\n isPlayable = false;\n handle('tare');\n isPlayable = oldPlayable;\n },\n\n tare2: function() {\n var oldPlayable = isPlayable;\n isPlayable = false;\n handle('tare2');\n isPlayable = oldPlayable;\n },\n\n willReset: function() {\n dispatch.willReset();\n },\n\n reset: function() {\n handle('reset');\n },\n\n reload: function() {\n model.stop();\n model.makeInvalidatingChange(function() {\n needsReload = true;\n });\n },\n\n isStopped: function() {\n return isStopped;\n },\n\n stepCounter: function() {\n return stepCounter;\n },\n\n connectedSensors: connectedSensors,\n getSelectedSensor: function() {\n return selectedSensor.index;\n },\n getSelectedSensor2: function() {\n return selectedSensor2.index;\n },\n setSelectedSensor: function(sensorIndex) {\n if (selectedSensor.index !== sensorIndex) {\n selectedSensor.index = sensorIndex;\n selectedSensor.units = null;\n model.properties.tareValue = 0; // Also reset our tare value\n setColumn();\n }\n },\n setSelectedSensor2: function(sensorIndex) {\n if (selectedSensor2.index !== sensorIndex) {\n selectedSensor2.index = sensorIndex;\n selectedSensor2.units = null;\n model.properties.tareValue2 = 0; // Also reset our tare value\n setColumn();\n }\n },\n\n serialize: function() {\n return \"\";\n }\n };\n\n\n stateMachine = new StateMachine({\n\n notConnected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.not_connected\");\n statusErrors = 0;\n // use https if possible, fall back to http if necessary\n sensorConnectorInterface.startPolling([\n \"https://localhost:11181\", \"https://127.0.0.1:11181\",\n \"http://localhost:11180\", \"http://127.0.0.1:11180\"],\n model.properties.clientId, model.properties.clientName);\n this.gotoState('connecting');\n }\n },\n\n connecting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.connecting\");\n if (sensorConnectorInterface.isConnected) {\n this.gotoState('connected');\n } else {\n statusDialog = notifier.status(i18n.t(\"sensor.messages.connection_in_progress\"), {\n dialogClass: 'interactive-dialog no-close'\n });\n }\n },\n\n leaveState: function() {\n if (statusDialog) {\n statusDialog.close();\n statusDialog = null;\n }\n },\n\n statusErrored: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n connectionTimedOut: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n launchTimedOut: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n statusReceived: function() {\n this.gotoState('connected');\n },\n\n sessionChanged: function() {\n // start a new session, stay connecting...\n sensorConnectorInterface.stopPolling();\n sensorConnectorInterface.startPolling();\n }\n },\n\n initialConnectionFailure: {\n enterState: function() {\n sensorConnectorInterface.stopPolling();\n message = i18n.t(\"sensor.messages.connection_failed\", {\n retry_link: \"\"\n });\n var dialog_msg = \"sensor.messages.connection_failed_alert\";\n notifier.alert(i18n.t(dialog_msg, {\n click_here_link: \"\" +\n i18n.t(\"sensor.messages.click_here\") + \"\"\n }), {\n \"Try again\": function() {\n $(this).dialog(\"close\");\n handle('dismiss');\n }\n }, {\n close: function() {\n handle('closed');\n }\n });\n },\n\n // Ignore these in this state\n statusErrored: function() {},\n connectionTimedOut: function() {},\n launchTimedOut: function() {},\n\n closed: function() {\n message = i18n.t(\"sensor.messages.connection_failed\", {\n retry_link: \"\" + i18n.t(\"sensor.messages.connection_failed_retry_link_text\") + \"\"\n });\n // AU: This is kind of ugly and obnoxious, but I was having trouble getting the right context when embedding code directly into the href itself.\n var tryAttachingHandler = function() {\n var links = $('a.retry-link');\n if (links[0]) {\n links.click(function() {\n handle('dismiss');\n });\n } else {\n setTimeout(tryAttachingHandler, 50);\n }\n };\n tryAttachingHandler();\n },\n\n dismiss: function() {\n this.gotoState('notConnected');\n }\n },\n\n connected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.connected\");\n canTare = true;\n canTare2 = true;\n isPlayable = true;\n isStopped = true;\n\n setColumn();\n\n if (canControl) {\n this.controlEnabled();\n } else {\n this.controlDisabled();\n }\n\n if (sensorConnectorInterface.isCollecting) {\n this.gotoState('started');\n }\n },\n\n leaveState: function() {\n canTare = false;\n canTare2 = false;\n isPlayable = false;\n },\n\n // Give some feedback on the currently selected column from which data will be collected.\n columnAdded: setColumn,\n columnRemoved: setColumn,\n columnTypeChanged: setColumn,\n columnMoved: setColumn,\n\n interfaceConnected: setColumn,\n interfaceRemoved: setColumn,\n\n tare: function() {\n if (dataColumn) {\n model.properties.tareValue = dataColumn.liveValue;\n }\n },\n\n tare2: function() {\n if (dataColumn2) {\n model.properties.tareValue2 = dataColumn2.liveValue;\n }\n },\n\n // User requests collection\n start: function() {\n // NOTE. Due to architecture switch mid-way, the sensorConnectorInterface layer is turning the\n // start request into a promise, and we're turning it back to events. The lower layer\n // could just ditch promises and emit the corresponding events with no harm. (The state\n // machine prevents almost every practical scenario where we'd see an out-of-date\n // startRequestFailure event while in a state that would respond to it.)\n sensorConnectorInterface.requestStart().catch(function() {\n handle('startRequestFailed');\n });\n this.gotoState('starting');\n },\n\n controlEnabled: function() {\n message = i18n.t(\"sensor.messages.connected\");\n },\n\n controlDisabled: function() {\n if (sensorConnectorInterface.inControl.clientName) {\n message = i18n.t(\"sensor.messages.connected_start_sensorconnector\", {\n controlling_client: sensorConnectorInterface.inControl.clientName\n });\n } else {\n message = i18n.t(\"sensor.messages.connected_start_sensorconnector_noname\");\n }\n },\n\n sessionChanged: function() {\n sensorConnectorInterface.stopPolling();\n sensorConnectorInterface.startPolling();\n this.gotoState('connecting');\n },\n\n // Collection was started by a third party\n collectionStarted: function() {\n this.gotoState('started');\n }\n },\n\n starting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.starting_data_collection\");\n isStopped = false;\n var self = this;\n this._startTimerId = setTimeout(5000, function() {\n self.gotoState('startRequestFailed');\n });\n },\n\n leaveState: function() {\n clearTimeout(this._startTimerId);\n },\n\n startRequestFailed: function() {\n this.gotoState('errorStarting');\n },\n\n collectionStarted: function() {\n this.gotoState('started');\n }\n },\n\n errorStarting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.error_starting_data_collection\");\n isStopped = true;\n\n notifier.alert(i18n.t(\"sensor.messages.error_starting_data_collection_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismissErrorStarting');\n }\n });\n },\n\n collectionStarted: function() {\n this.gotoState('started');\n },\n\n dismissErrorStarting: function() {\n this.gotoState('connected');\n }\n },\n\n started: {\n enterState: function() {\n isStopped = false;\n setColumn();\n isPlayable = false;\n if (canControl) {\n message = i18n.t(\"sensor.messages.collecting_data\");\n } else {\n message = i18n.t(\"sensor.messages.collecting_data_stop_sensorconnector\");\n }\n\n // Check, just in case. Specifically, when errorStopping transitions here, collection\n // might have stopped in the meantime.\n if (!sensorConnectorInterface.isCollecting) {\n this.gotoState('stopped');\n }\n\n if ((!dataColumn) || (!dataColumn2)) {\n this.gotoState('startedWithNoDataColumn');\n }\n },\n\n data: handleData,\n\n controlEnabled: function() {\n message = i18n.t(\"sensor.messages.collecting_data\");\n },\n\n controlDisabled: function() {\n message = i18n.t(\"sensor.messages.collecting_data_stop_sensorconnector\");\n },\n\n stop: function() {\n sensorConnectorInterface.requestStop().catch(function() {\n handle('stopRequestFailed');\n });\n this.gotoState('stopping');\n },\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n }\n },\n\n // This can happen.\n startedWithNoDataColumn: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.no_data\");\n\n sensorConnectorInterface.requestStop();\n notifier.alert(i18n.t(\"sensor.messages.no_data_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n }\n });\n },\n\n collectionStopped: function() {\n this.gotoState('stoppedWithNoDataColumn');\n }\n },\n\n stoppedWithNoDataColumn: {\n enterState: function() {\n if (isAllDataReceived()) {\n this.gotoState('connected');\n }\n },\n\n data: function() {\n if (isAllDataReceived()) {\n this.gotoState('connected');\n }\n }\n },\n\n stopping: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.stopping_data_collection\");\n },\n\n data: handleData,\n\n stopRequestFailed: function() {\n this.gotoState('errorStopping');\n },\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n }\n },\n\n errorStopping: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.error_stopping_data_collection\");\n notifier.alert(i18n.t(\"sensor.messages.error_stopping_data_collection_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismissErrorStopping');\n }\n });\n },\n\n data: handleData,\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n },\n\n dismissErrorStopping: function() {\n this.gotoState('started');\n }\n },\n\n // The device reports the stop of data collection before all data can be received.\n collectionStopped: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.data_collection_stopped\");\n if (isAllDataReceived()) {\n this.gotoState('collectionComplete');\n }\n },\n\n data: function() {\n handleData();\n if (isAllDataReceived()) {\n this.gotoState('collectionComplete');\n }\n }\n },\n\n collectionComplete: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.data_collection_complete\");\n isStopped = true;\n dispatch.stop();\n },\n\n reset: function() {\n initializeStateVariables();\n setSensorReadingDescription();\n setSensorReadingDescription2();\n this.gotoState('connecting');\n dispatch.reset();\n }\n },\n\n disconnected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.disconnected\");\n sensorConnectorInterface.stopPolling();\n var self = this;\n setTimeout(function() {\n self.gotoState('notConnected');\n }, 2000);\n }\n }\n });\n\n // Automatically wrap all event handlers invocations with makeInvalidatingChange so that\n // outputs update from closure variable state automatically.\n function handle(eventName) {\n var args = Array.prototype.slice.call(arguments, 0);\n\n model.makeInvalidatingChange(function() {\n var handled = stateMachine.handleEvent.apply(stateMachine, args);\n\n if (!handled) {\n // special handling of any events not handled by the current state:\n if (eventName === 'connectionTimedOut') {\n stateMachine.gotoState('disconnected');\n } else if (eventName === 'sessionChanged') {\n sensorConnectorInterface.stopPolling();\n stateMachine.gotoState('disconnected');\n } else if (eventName === 'statusErrored') {\n stateMachine.gotoState('initialConnectionFailure');\n }\n }\n });\n }\n\n sensorConnectorInterface = new SensorConnectorInterface();\n\n // At least for now, dispatch every interface event to the state machine.\n sensorConnectorInterface.on('*', function() {\n var args = Array.prototype.slice.call(arguments, 0);\n handle.apply(null, [this.event].concat(args));\n });\n\n // Also, handle \"live values\" every time they are received.\n sensorConnectorInterface.on('statusReceived', function() {\n if (dataColumn) {\n model.makeInvalidatingChange(function() {\n liveSensorValue = dataColumn.liveValue;\n });\n }\n if (dataColumn2) {\n model.makeInvalidatingChange(function() {\n liveSensorValue2 = dataColumn2.liveValue;\n });\n }\n });\n\n sensorConnectorInterface.on('controlEnabled', function() {\n canControl = true;\n });\n\n sensorConnectorInterface.on('controlDisabled', function() {\n canControl = false;\n });\n\n labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n setters: {},\n unitsDefinition: unitsDefinition,\n initialProperties: initialProperties,\n usePlaybackSupport: false\n });\n\n propertySupport = labModelerMixin.propertySupport;\n dispatch = labModelerMixin.dispatchSupport;\n dispatch.addEventTypes(\"tick\", \"play\", \"stop\", \"tickStart\", \"tickEnd\");\n\n labModelerMixin.mixInto(model);\n\n initializeStateVariables();\n\n if (model.properties.useRandomClientId) {\n model.properties.clientId = Math.floor((1 + Math.random()) * 0x100000000).toString(16); // a 9-digit hex string that always starts with 1\n }\n\n model.addObserver('clientName', function() {\n sensorConnectorInterface.clientName = model.properties.clientName;\n });\n\n model.defineOutput('time', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('displayTime', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n displayTimePropertyDescription = model.getPropertyDescription('displayTime');\n\n model.defineOutput('sensorReading', defaultSensorReadingDescription, function() {\n if (rawSensorValue == null) {\n return rawSensorValue;\n }\n return rawSensorValue - model.properties.tareValue;\n });\n\n model.defineOutput('sensorReading2', defaultSensorReadingDescription, function() {\n if (rawSensorValue2 == null) {\n return rawSensorValue2;\n }\n return rawSensorValue2 - model.properties.tareValue2;\n });\n\n /* Need custom implementation of duration options, because we don't use playbackSupport\n (and playbackSupport's implementation is designed for simulation models that have a\n fixed time per tick */\n\n model.defineOutput('durationOptions', {}, function() {\n return [1, 5, 10, 15, 20, 30, 45, 60];\n });\n\n model.formatTime = function(time) {\n return displayTimePropertyDescription.format(time);\n };\n\n model.defineOutput('actualUseDuration', {}, labModelerMixin.computeActualUseDuration);\n\n model.defineOutput('actualDuration', {\n label: \"Experiment duration\",\n unitType: 'time',\n format: 'f'\n }, labModelerMixin.computeActualDuration);\n\n // Because sensorReading updates are batched and delivered much later than the live sensor value\n // from the sensor status response, we define a separate liveSensorReading output that can be\n // updated every time the status is polled.\n model.defineOutput('liveSensorReading', defaultSensorReadingDescription, function() {\n if (liveSensorValue == null) {\n return liveSensorValue;\n }\n return liveSensorValue - model.properties.tareValue;\n });\n\n model.defineOutput('liveSensorReading2', defaultSensorReadingDescription, function() {\n if (liveSensorValue2 == null) {\n return liveSensorValue2;\n }\n return liveSensorValue2 - model.properties.tareValue2;\n });\n\n model.defineOutput('sensorName', {\n label: \"Sensor Name\"\n }, function() {\n return sensorName;\n });\n\n model.defineOutput('sensorName2', {\n label: \"2nd Sensor Name\"\n }, function() {\n return sensorName2;\n });\n\n model.defineOutput('isStopped', {\n label: \"Stopped?\"\n }, function() {\n return isStopped;\n });\n\n // TODO. We need a way to make \"model-writable\" read only properties.\n model.defineOutput('isPlayable', {\n label: \"Startable?\"\n }, function() {\n return isPlayable;\n });\n\n model.defineOutput('hasPlayed', {\n label: \"Has successfully collected data?\"\n }, function() {\n return stepCounter > 0;\n });\n\n model.defineOutput('canTare', {\n label: \"Can set a tare value?\"\n }, function() {\n return canTare && isSensorTareable;\n });\n\n model.defineOutput('canTare2', {\n label: \"Can set a tare value?\"\n }, function() {\n return canTare2 && isSensorTareable2;\n });\n\n model.defineOutput('canControl', {\n label: \"Can remotely start/stop the Sensor Connector?\"\n }, function() {\n return canControl;\n });\n\n model.defineOutput('hasMultipleSensors', {\n label: \"Are multiple sensors connected to the Sensor Connector?\"\n }, function() {\n return hasMultipleSensors;\n });\n\n model.defineOutput('needsReload', {\n label: \"Needs Reload?\"\n }, function() {\n return needsReload;\n });\n\n model.defineOutput('message', {\n label: \"User Message\"\n }, function() {\n return message;\n });\n\n // set in setupModelObservers() in controller.js\n model.defineParameter('isNewRunInProgress', {\n initialValue: false\n });\n\n // Clean up state before we go\n // TODO\n model.on('willReset.model', function() {\n sensorConnectorInterface.stopPolling();\n if (sensorConnectorInterface.isCollecting) {\n sensorConnectorInterface.requestStop();\n }\n });\n\n model.addObserver('actualDuration', updateDisplayTimeRange);\n updateDisplayTimeRange();\n\n model.updateAllOutputProperties();\n stateMachine.gotoState('notConnected');\n\n return model;\n};\n","import NumericOutputView from 'common/views/numeric-output-view';\nimport BasicDialog from 'common/controllers/basic-dialog';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions-connector';\nimport viewState from 'common/views/view-state';\n\n\nexport default function(model, modelUrl, i18n) {\n\n // TODO use the formatter from the property description. Right now, it automatically adds\n // units to the returned string (which we don't want here).\n var format = d3.format('.2f');\n var sensorReadingView;\n var sensorReadingView2;\n var view;\n\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n function setCanTareState() {\n if (model.properties.canTare) {\n viewState.enableView(view.$zeroButton);\n } else {\n viewState.disableView(view.$zeroButton);\n }\n }\n\n function setCanTare2State() {\n if (model.properties.canTare2) {\n viewState.enableView(view.$zeroButton2);\n } else {\n viewState.disableView(view.$zeroButton2);\n }\n }\n\n function setCanConnectState() {\n // if (model.properties.canConnect) {\n // viewState.enableView(view.$connectButton);\n // } else {\n // viewState.disableView(view.$connectButton);\n // }\n }\n\n function setHasMultipleSensorsState() {\n if (model.properties.hasMultipleSensors && model.properties.isPlayable) {\n viewState.enableView(view.$selectSensorButton);\n viewState.enableView(view.$selectSensorButton2);\n } else {\n viewState.disableView(view.$selectSensorButton);\n viewState.disableView(view.$selectSensorButton2);\n }\n }\n\n function setMessageText() {\n view.$message.html(model.properties.message);\n }\n\n function setupModelObservers() {\n model.addObserver('canTare', setCanTareState);\n model.addObserver('canTare2', setCanTare2State);\n setCanTareState();\n setCanTare2State();\n\n model.addObserver('canConnect', setCanConnectState);\n setCanConnectState();\n\n model.addObserver('hasMultipleSensors', setHasMultipleSensorsState);\n model.addObserver('isPlayable', setHasMultipleSensorsState);\n setHasMultipleSensorsState();\n\n model.addObserver('message', setMessageText);\n setMessageText();\n }\n\n function chooseSensorPopup1() {\n chooseSensorPopup(false);\n }\n\n function chooseSensorPopup2() {\n chooseSensorPopup(true);\n }\n\n function chooseSensorPopup(second) {\n second = second || false;\n var dialog = new BasicDialog({\n width: \"60%\",\n dialogClass: 'interactive-dialog no-close',\n closeOnEscape: false,\n title: i18n.t(\"sensor.choose_sensor_title\"),\n buttons: {\n OK: function() {\n console.log(\"OK Clicked\");\n $(this).dialog(\"close\");\n // Change the model's selected sensor\n if (second) {\n model.setSelectedSensor2($(this).find('input:checked').val());\n } else {\n model.setSelectedSensor($(this).find('input:checked').val());\n }\n },\n Cancel: function() {\n console.log(\"Cancel Clicked\");\n $(this).dialog(\"close\");\n }\n }\n }, i18n);\n var content = \"\",\n label = \"\",\n sensors = model.connectedSensors(),\n first = true,\n selectedSensor = (second ? model.getSelectedSensor2() : model.getSelectedSensor()),\n i, checked, sensorDef;\n for (i = 0; i < sensors.length; i++) {\n if (sensors[i].units !== 's') {\n checked = \"\";\n if (sensors[i].name) {\n sensorDef = {\n measurementName: sensors[i].name\n };\n } else {\n sensorDef = sensorDefinitions[sensors[i].units];\n if (!sensorDef) {\n sensorDef = {\n measurementName: \"Unknown\"\n };\n }\n }\n label = sensorDef.measurementName + \" (\" + sensors[i].units + \")\";\n if (selectedSensor == i || (first && selectedSensor == -1)) {\n checked = \"checked \";\n };\n content += \"\" + label + \"
\";\n first = false;\n }\n }\n dialog.setContent(content);\n dialog.open();\n }\n\n return view = {\n $el: $(\"
\"),\n remoteAddress: null,\n\n bindModel: function(newModel, newModelUrl) {\n modelUrl = newModelUrl || modelUrl;\n model = newModel || model;\n\n setupModelObservers();\n },\n\n getHeightForWidth: function() {\n return \"2.8em\";\n },\n\n // called once we're in the DOM\n setup: function() {\n view.$el.empty();\n view.$controlsContainer = $(\"
\");\n view.$statusContainer = $(\"
\");\n // view.$addressInput = $(\"
\");\n sensorReadingView = new NumericOutputView({\n id: 'sensor-value-view',\n label: i18n.t(\"sensor.reading\"),\n units: model.getPropertyDescription('sensorReading').getUnitAbbreviation()\n });\n sensorReadingView2 = new NumericOutputView({\n id: 'sensor-value-view-2',\n label: i18n.t(\"sensor.reading\"),\n units: model.getPropertyDescription('sensorReading2').getUnitAbbreviation()\n });\n\n // view.$connectButton = $(\"
\");\n view.$zeroButton = $(\"
\");\n view.$zeroButton2 = $(\"
\");\n view.$selectSensorButton = $(\"
\");\n view.$selectSensorButton2 = $(\"
\");\n view.$message = $(\"
\");\n view.$sensorReading = sensorReadingView.render().addClass(\"horizontal\");\n view.$sensorReading2 = sensorReadingView2.render().addClass(\"horizontal\");\n\n view.$controlsContainer\n // .append(view.$addressInput)\n // .append(view.$connectButton)\n .append(view.$sensorReading)\n .append(view.$zeroButton)\n .append(view.$selectSensorButton)\n .append(view.$sensorReading2)\n .append(view.$zeroButton2)\n .append(view.$selectSensorButton2);\n\n view.$statusContainer\n .append(view.$message);\n\n view.$el.css('zIndex', 4)\n .append(view.$controlsContainer)\n .append(view.$statusContainer);\n\n view.$controlsContainer.find('div').addClass('component component-spacing');\n view.$statusContainer.find('div').addClass('component component-spacing');\n\n sensorReadingView.resize();\n sensorReadingView2.resize();\n setupModelObservers();\n\n // if (typeof(view.remoteAddress) == \"string\") {\n // view.$addressInput.find('input').val(view.remoteAddress);\n // }\n // view.$addressInput.find('input').on('change', function() {\n // view.remoteAddress = $(this).val();\n // });\n\n // view.$connectButton.on('click', 'button', function() {\n // model.connect(view.$addressInput.find('input').val());\n // });\n view.$zeroButton.on('click', 'button', model.tare);\n view.$zeroButton2.on('click', 'button', model.tare2);\n view.$selectSensorButton.on('click', 'button', chooseSensorPopup1);\n view.$selectSensorButton2.on('click', 'button', chooseSensorPopup2);\n },\n\n resize: function() {\n if (sensorReadingView) {\n sensorReadingView.resize();\n }\n if (sensorReadingView2) {\n sensorReadingView2.resize();\n }\n },\n\n repaint: function() {},\n\n setFocus: function() {},\n\n updateUnits: function(units) {\n sensorReadingView.updateUnits(units);\n if (model.properties.liveSensorReading == null) {\n sensorReadingView.hideUnits();\n }\n },\n\n updateUnits2: function(units) {\n sensorReadingView2.updateUnits(units);\n if (model.properties.liveSensorReading2 == null) {\n sensorReadingView2.hideUnits();\n }\n },\n\n update: function() {\n if (model.properties.liveSensorReading == null) {\n sensorReadingView.update(\"\");\n sensorReadingView.hideUnits();\n } else {\n sensorReadingView.update(format(model.properties.liveSensorReading));\n sensorReadingView.showUnits();\n }\n if (model.properties.liveSensorReading2 == null) {\n sensorReadingView2.update(\"\");\n sensorReadingView2.hideUnits();\n } else {\n sensorReadingView2.update(format(model.properties.liveSensorReading2));\n sensorReadingView2.showUnits();\n }\n }\n };\n};\n"," /**\n Define the model-specific Dual Sensor Connector scripting API used by 'action' scripts on interactive elements.\n\n The universal Interactive scripting API is extended with the properties of the\n object below which will be exposed to the interactive's 'action' scripts as if\n they were local vars. All other names (including all globals, but excluding\n Javascript builtins) will be unavailable in the script context; and scripts\n are run in strict mode so they don't accidentally expose or read globals.\n\n @param: parent Common Scripting API\n*/\nexport default function DualSensorConnectorScriptingAPI(parent) {\n return {\n /**\n * Reset the model. The interactives controller will emit a 'willResetModel'.\n * The willResetModel observers can ask to wait for asynchronous confirmation before\n * the model is actually reset.\n * Note that the effect would be almost the same like after reload operation. However\n * the mechanism under the hood is completely different. The biggest difference for\n * authoring is that when .resetModel() is called, the \"onLoad\" script won't be\n * executed again. It may be also faster than reload.\n * @param {object} options hash of options, supported properties:\n * * propertiesToRetain - a list of properties to save before\n * the model reset and restore after reset.\n * * cause - cause of the reset action.\n */\n resetModel: function resetModel(options) {\n parent.intController.resetModel(options);\n }\n };\n};\n","\nimport ModelController from 'common/controllers/model-controller';\nimport Model from './modeler';\nimport ModelContainer from './view';\nimport ScriptingAPI from './scripting-api';\n// Dependencies.\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n var controller = new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI);\n\n // Note to self: modelController doesn't emit modelLoaded when the model first loads.\n // This was unexpected...\n\n function setupModelObservers() {\n var model = controller.model;\n\n model.addObserver('liveSensorReading', function() {\n controller.updateView();\n });\n\n model.addObserver('liveSensorReading2', function() {\n controller.updateView();\n });\n\n model.addObserver('needsReload', function() {\n if (model.properties.needsReload) {\n interactiveController.reloadModel();\n }\n });\n\n model.addPropertyDescriptionObserver('sensorReading', function() {\n var description = model.getPropertyDescription('sensorReading');\n var view = controller.modelContainer;\n\n view.updateUnits(description.getUnitAbbreviation());\n });\n\n model.addPropertyDescriptionObserver('sensorReading2', function() {\n var description = model.getPropertyDescription('sensorReading2');\n var view = controller.modelContainer;\n\n view.updateUnits2(description.getUnitAbbreviation());\n });\n }\n\n interactiveController.on('modelLoaded.dual-sensor-connector-model-controller', setupModelObservers);\n\n interactiveController.on('modelReset.dual-sensor-connector-model-controller', function() {\n controller.model.set('isNewRunInProgress', false);\n });\n\n interactiveController.on('willResetModel', function() {\n controller.model.set('isNewRunInProgress', true);\n controller.model.willReset();\n });\n\n return controller;\n};\n","\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"sensor-connector\",\n immutable: true\n },\n sensorType: {\n defaultValue: null\n },\n tareValue: {\n defaultValue: 0\n },\n clientId: {\n defaultValue: null\n },\n clientName: {\n defaultValue: null\n },\n useRandomClientId: {\n defaultValue: false\n },\n useDuration: {\n defaultValue: 'codap',\n storeInTickHistory: false,\n validate: function(value) {\n if (value === true || value === false || value === 'codap') {\n return value;\n }\n throw new Error(\"Invalid 'useDuration' value: \" + value);\n },\n },\n requestedDuration: {\n defaultValue: 10,\n storeInTickHistory: false\n }\n },\n viewOptions: {\n showClock: {\n defaultValue: true,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"play_reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n }\n }\n};\n","export default {\n units: {\n time: {\n name: \"second\",\n pluralName: \"seconds\",\n symbol: \"s\"\n }\n }\n};\n"," \nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport PropertyDescription from 'common/property-description';\nimport metadata from './metadata';\nimport StateMachine from 'common/state-machine';\nimport SensorConnectorInterface from 'sensor-connector-interface';\nimport unitsDefinition from './units-definition';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions-connector';\nimport Notifier from 'models/sensor-common/notifier';\n\n\nexport default function Model(initialProperties, opt) {\n var i18n = opt.i18n,\n notifier = new Notifier(i18n),\n\n labModelerMixin,\n propertySupport,\n dispatch,\n stateMachine,\n sensorConnectorInterface,\n timeColumn,\n dataColumn,\n selectedSensor,\n sensorName,\n isStopped,\n needsReload,\n time,\n rawSensorValue,\n liveSensorValue,\n stepCounter,\n isPlayable,\n canTare,\n canControl,\n hasMultipleSensors,\n isSensorTareable,\n message,\n statusDialog,\n statusErrors,\n displayTimePropertyDescription,\n model;\n\n var defaultSensorReadingDescription = {\n label: i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: \"-\",\n format: '.2f',\n min: 0,\n max: 10\n };\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n function updatePropertyRange(property, min, max) {\n var descriptionHash;\n var description;\n\n descriptionHash = model.getPropertyDescription(property).getHash();\n descriptionHash.min = min;\n descriptionHash.max = max;\n\n description = new PropertyDescription(unitsDefinition, descriptionHash);\n propertySupport.setPropertyDescription(property, description);\n }\n\n // Updates min, max of displayTime to be [0..actualDuration]\n function updateDisplayTimeRange() {\n if (model.properties.actualDuration === null || model.properties.actualDuration === Infinity) {\n return;\n }\n updatePropertyRange('displayTime', 0, model.properties.actualDuration);\n }\n\n function setSensorReadingDescription() {\n var sensorDefinition;\n var description;\n\n if (dataColumn) {\n sensorDefinition = sensorDefinitions[dataColumn.units];\n\n if (sensorDefinition) {\n description = {\n label: sensorDefinition.measurementName,\n format: '.2f',\n min: sensorDefinition.minReading,\n max: sensorDefinition.maxReading\n };\n if (unitsDefinition.units[sensorDefinition.measurementType]) {\n description.unitType = sensorDefinition.measurementType;\n } else {\n description.unitAbbreviation = dataColumn.units;\n }\n isSensorTareable = sensorDefinition.tareable;\n sensorName = sensorDefinition.sensorName || (dataColumn.units + \" sensor\");\n } else {\n description = {\n label: dataColumn.name || i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: dataColumn.units,\n format: '.2f',\n min: 0,\n max: 10\n };\n isSensorTareable = true;\n sensorName = dataColumn.units + \" sensor\";\n }\n } else {\n description = defaultSensorReadingDescription;\n isSensorTareable = false;\n sensorName = \"(no sensor)\";\n }\n\n propertySupport.setPropertyDescription('sensorReading',\n new PropertyDescription(unitsDefinition, description));\n propertySupport.setPropertyDescription('liveSensorReading',\n new PropertyDescription(unitsDefinition, description));\n }\n\n function initializeStateVariables() {\n isStopped = true;\n canControl = sensorConnectorInterface.canControl;\n hasMultipleSensors = false;\n // Set selectedSensor if it hasn't been set yet\n if (typeof(selectedSensor) === \"undefined\" || selectedSensor === null) {\n selectedSensor = {\n index: 1\n };\n }\n stepCounter = 0;\n time = 0;\n statusErrors = 0;\n rawSensorValue = undefined;\n liveSensorValue = undefined;\n timeColumn = undefined;\n dataColumn = undefined;\n }\n\n function checkColumnAgainstSelected(dataset, idx) {\n var colCandidate = dataset.columns[idx];\n if (colCandidate && colCandidate.units === selectedSensor.units) {\n selectedSensor.index = idx;\n return true;\n }\n return false;\n }\n\n function hasCollectableSensors(dataset) {\n if (dataset.columns.length < 2) {\n return false;\n }\n if (dataset.columns.length === 2 && !dataset.columns[1].name && !dataset.columns[1].units) {\n return false;\n }\n return true;\n }\n\n function setColumn() {\n var dataset = sensorConnectorInterface.datasets[0];\n var newDataColumn, sIdx;\n\n hasMultipleSensors = dataset.columns.length > 2;\n\n // The sensor connector always has column 0 as time\n timeColumn = dataset.columns[0];\n if (sensorConnectorInterface.hasAttachedInterface) {\n if (hasCollectableSensors(dataset)) {\n if (canControl) {\n message = i18n.t(\"sensor.messages.ready\");\n } else if (sensorConnectorInterface.inControl.clientName) {\n message = i18n.t(\"sensor.messages.ready_nocontrol\", {\n controlling_client: sensorConnectorInterface.inControl.clientName\n });\n } else {\n message = i18n.t(\"sensor.messages.ready_nocontrol_noname\");\n }\n isPlayable = true;\n } else {\n message = i18n.t(\"sensor.messages.no_sensors\");\n isPlayable = false;\n }\n\n // TODO When we want to support multiple sensors, this will have to change.\n // Select the column chosen by the user\n sIdx = selectedSensor.index;\n if (sIdx >= dataset.columns.length && dataset.columns.length > 1) {\n // we seem to be pointing past the number of columns there are. reset to that last column.\n sIdx = dataset.columns.length - 1;\n }\n newDataColumn = dataset.columns[sIdx];\n if (newDataColumn && selectedSensor.units && newDataColumn.units !== selectedSensor.units) {\n // our selected column seems to have changed out from under us.\n // If a sensor was added to the device, it could be one column higher\n if (checkColumnAgainstSelected(dataset, sIdx + 1)) {\n newDataColumn = dataset.columns[sIdx + 1];\n } else if (sIdx > 1 && checkColumnAgainstSelected(dataset, sIdx - 1)) {\n // it wasn't the one after. let's check the one before.\n newDataColumn = dataset.columns[sIdx - 1];\n } else {\n // it seems to be none of them. Reset the selected sensor to the first one.\n newDataColumn = dataset.columns[1];\n selectedSensor.index = 1;\n }\n }\n } else {\n message = i18n.t(\"sensor.messages.no_devices\");\n isPlayable = false;\n }\n\n if (newDataColumn && !newDataColumn.name && !newDataColumn.units) {\n // If we don't have a sensor name and units, assume it's not really a sensor\n newDataColumn = null;\n }\n\n dataColumn = newDataColumn;\n if (dataColumn) {\n selectedSensor.units = dataColumn.units;\n }\n setSensorReadingDescription();\n\n if (!dataColumn) {\n liveSensorValue = undefined;\n }\n }\n\n function handleData() {\n if (!timeColumn || !dataColumn) {\n return;\n }\n\n var numberOfValues = Math.min(timeColumn.data.length, dataColumn.data.length);\n for (; stepCounter < numberOfValues; stepCounter++) {\n time = timeColumn.data[stepCounter];\n\n if (time > model.properties.actualDuration) {\n // Stop, but continue to process any data received (if for no other reason than that\n // subsequent steps aren't happy until data up to the latest timestamp was received)\n model.stop();\n }\n rawSensorValue = dataColumn.data[stepCounter];\n model.updateAllOutputProperties();\n dispatch.tick();\n }\n }\n\n function isAllColumnDataReceieved(column) {\n return column.receivedValuesTimeStamp >= column.requestedValuesTimeStamp;\n }\n\n function isAllDataReceived() {\n return isAllColumnDataReceieved(timeColumn) && (!dataColumn || isAllColumnDataReceieved(dataColumn));\n }\n\n function connectedSensors() {\n var sensors = [],\n dataset = sensorConnectorInterface.datasets[0],\n i;\n\n for (i = 0; i < dataset.columns.length; i++) {\n sensors.push({\n units: dataset.columns[i].units,\n name: dataset.columns[i].name\n });\n }\n return sensors;\n }\n\n model = {\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n start: function() {\n handle('start');\n },\n\n stop: function() {\n handle('stop');\n },\n\n tare: function() {\n var oldPlayable = isPlayable;\n isPlayable = false;\n handle('tare');\n isPlayable = oldPlayable;\n },\n\n willReset: function() {\n dispatch.willReset();\n },\n\n reset: function() {\n handle('reset');\n },\n\n reload: function() {\n model.stop();\n model.makeInvalidatingChange(function() {\n needsReload = true;\n });\n },\n\n isStopped: function() {\n return isStopped;\n },\n\n stepCounter: function() {\n return stepCounter;\n },\n\n connectedSensors: connectedSensors,\n getSelectedSensor: function() {\n return selectedSensor.index;\n },\n setSelectedSensor: function(sensorIndex) {\n if (selectedSensor.index != sensorIndex) {\n selectedSensor.index = sensorIndex;\n selectedSensor.units = null;\n model.properties.tareValue = 0; // Also reset our tare value\n setColumn();\n }\n },\n\n serialize: function() {\n return \"\";\n }\n };\n\n\n stateMachine = new StateMachine({\n\n notConnected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.not_connected\");\n statusErrors = 0;\n // use https if possible, fall back to http if necessary\n sensorConnectorInterface.startPolling([\n \"https://localhost:11181\", \"https://127.0.0.1:11181\",\n \"http://localhost:11180\", \"http://127.0.0.1:11180\"],\n model.properties.clientId, model.properties.clientName);\n this.gotoState('connecting');\n }\n },\n\n connecting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.connecting\");\n if (sensorConnectorInterface.isConnected) {\n this.gotoState('connected');\n } else {\n statusDialog = notifier.status(i18n.t(\"sensor.messages.connection_in_progress\"), {\n dialogClass: 'interactive-dialog no-close'\n });\n }\n },\n\n leaveState: function() {\n if (statusDialog) {\n statusDialog.close();\n statusDialog = null;\n }\n },\n\n statusErrored: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n connectionTimedOut: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n launchTimedOut: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n statusReceived: function() {\n this.gotoState('connected');\n },\n\n sessionChanged: function() {\n // start a new session, stay connecting...\n sensorConnectorInterface.stopPolling();\n sensorConnectorInterface.startPolling();\n }\n },\n\n initialConnectionFailure: {\n enterState: function() {\n sensorConnectorInterface.stopPolling();\n message = i18n.t(\"sensor.messages.connection_failed\", {\n retry_link: \"\"\n });\n var dialog_msg = \"sensor.messages.connection_failed_alert\";\n notifier.alert(i18n.t(dialog_msg, {\n click_here_link: \"\" +\n i18n.t(\"sensor.messages.click_here\") + \"\"\n }), {\n \"Try again\": function() {\n $(this).dialog(\"close\");\n handle('dismiss');\n }\n }, {\n close: function() {\n handle('closed');\n }\n });\n },\n\n // Ignore these in this state\n statusErrored: function() {},\n connectionTimedOut: function() {},\n launchTimedOut: function() {},\n\n closed: function() {\n message = i18n.t(\"sensor.messages.connection_failed\", {\n retry_link: \"\" + i18n.t(\"sensor.messages.connection_failed_retry_link_text\") + \"\"\n });\n // AU: This is kind of ugly and obnoxious, but I was having trouble getting the right context when embedding code directly into the href itself.\n var tryAttachingHandler = function() {\n var links = $('a.retry-link');\n if (links[0]) {\n links.click(function() {\n handle('dismiss');\n });\n } else {\n setTimeout(tryAttachingHandler, 50);\n }\n };\n tryAttachingHandler();\n },\n\n dismiss: function() {\n this.gotoState('notConnected');\n }\n },\n\n connected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.connected\");\n canTare = true;\n isPlayable = true;\n isStopped = true;\n\n setColumn();\n\n if (canControl) {\n this.controlEnabled();\n } else {\n this.controlDisabled();\n }\n\n if (sensorConnectorInterface.isCollecting) {\n this.gotoState('started');\n }\n },\n\n leaveState: function() {\n canTare = false;\n isPlayable = false;\n },\n\n // Give some feedback on the currently selected column from which data will be collected.\n columnAdded: setColumn,\n columnRemoved: setColumn,\n columnTypeChanged: setColumn,\n columnMoved: setColumn,\n\n interfaceConnected: setColumn,\n interfaceRemoved: setColumn,\n\n tare: function() {\n if (dataColumn) {\n model.properties.tareValue = dataColumn.liveValue;\n }\n },\n\n // User requests collection\n start: function() {\n // NOTE. Due to architecture switch mid-way, the sensorConnectorInterface layer is turning the\n // start request into a promise, and we're turning it back to events. The lower layer\n // could just ditch promises and emit the corresponding events with no harm. (The state\n // machine prevents almost every practical scenario where we'd see an out-of-date\n // startRequestFailure event while in a state that would respond to it.)\n sensorConnectorInterface.requestStart().catch(function() {\n handle('startRequestFailed');\n });\n this.gotoState('starting');\n },\n\n controlEnabled: function() {\n message = i18n.t(\"sensor.messages.connected\");\n },\n\n controlDisabled: function() {\n if (sensorConnectorInterface.inControl.clientName) {\n message = i18n.t(\"sensor.messages.connected_start_sensorconnector\", {\n controlling_client: sensorConnectorInterface.inControl.clientName\n });\n } else {\n message = i18n.t(\"sensor.messages.connected_start_sensorconnector_noname\");\n }\n },\n\n sessionChanged: function() {\n sensorConnectorInterface.stopPolling();\n sensorConnectorInterface.startPolling();\n this.gotoState('connecting');\n },\n\n // Collection was started by a third party\n collectionStarted: function() {\n this.gotoState('started');\n }\n },\n\n starting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.starting_data_collection\");\n isStopped = false;\n var self = this;\n this._startTimerId = setTimeout(5000, function() {\n self.gotoState('startRequestFailed');\n });\n },\n\n leaveState: function() {\n clearTimeout(this._startTimerId);\n },\n\n startRequestFailed: function() {\n this.gotoState('errorStarting');\n },\n\n collectionStarted: function() {\n this.gotoState('started');\n }\n },\n\n errorStarting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.error_starting_data_collection\");\n isStopped = true;\n\n notifier.alert(i18n.t(\"sensor.messages.error_starting_data_collection_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismissErrorStarting');\n }\n });\n },\n\n collectionStarted: function() {\n this.gotoState('started');\n },\n\n dismissErrorStarting: function() {\n this.gotoState('connected');\n }\n },\n\n started: {\n enterState: function() {\n isStopped = false;\n setColumn();\n isPlayable = false;\n if (canControl) {\n message = i18n.t(\"sensor.messages.collecting_data\");\n } else {\n message = i18n.t(\"sensor.messages.collecting_data_stop_sensorconnector\");\n }\n\n // Check, just in case. Specifically, when errorStopping transitions here, collection\n // might have stopped in the meantime.\n if (!sensorConnectorInterface.isCollecting) {\n this.gotoState('stopped');\n }\n\n if (!dataColumn) {\n this.gotoState('startedWithNoDataColumn');\n }\n },\n\n data: handleData,\n\n controlEnabled: function() {\n message = i18n.t(\"sensor.messages.collecting_data\");\n },\n\n controlDisabled: function() {\n message = i18n.t(\"sensor.messages.collecting_data_stop_sensorconnector\");\n },\n\n stop: function() {\n sensorConnectorInterface.requestStop().catch(function() {\n handle('stopRequestFailed');\n });\n this.gotoState('stopping');\n },\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n }\n },\n\n // This can happen.\n startedWithNoDataColumn: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.no_data\");\n\n sensorConnectorInterface.requestStop();\n notifier.alert(i18n.t(\"sensor.messages.no_data_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n }\n });\n },\n\n collectionStopped: function() {\n this.gotoState('stoppedWithNoDataColumn');\n }\n },\n\n stoppedWithNoDataColumn: {\n enterState: function() {\n if (isAllDataReceived()) {\n this.gotoState('connected');\n }\n },\n\n data: function() {\n if (isAllDataReceived()) {\n this.gotoState('connected');\n }\n }\n },\n\n stopping: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.stopping_data_collection\");\n },\n\n data: handleData,\n\n stopRequestFailed: function() {\n this.gotoState('errorStopping');\n },\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n }\n },\n\n errorStopping: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.error_stopping_data_collection\");\n notifier.alert(i18n.t(\"sensor.messages.error_stopping_data_collection_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismissErrorStopping');\n }\n });\n },\n\n data: handleData,\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n },\n\n dismissErrorStopping: function() {\n this.gotoState('started');\n }\n },\n\n // The device reports the stop of data collection before all data can be received.\n collectionStopped: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.data_collection_stopped\");\n if (isAllDataReceived()) {\n this.gotoState('collectionComplete');\n }\n },\n\n data: function() {\n handleData();\n if (isAllDataReceived()) {\n this.gotoState('collectionComplete');\n }\n }\n },\n\n collectionComplete: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.data_collection_complete\");\n isStopped = true;\n dispatch.stop();\n },\n\n reset: function() {\n initializeStateVariables();\n setSensorReadingDescription();\n this.gotoState('connecting');\n dispatch.reset();\n }\n },\n\n disconnected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.disconnected\");\n sensorConnectorInterface.stopPolling();\n var self = this;\n setTimeout(function() {\n self.gotoState('notConnected');\n }, 2000);\n }\n }\n });\n\n // Automatically wrap all event handlers invocations with makeInvalidatingChange so that\n // outputs update from closure variable state automatically.\n function handle(eventName) {\n var args = Array.prototype.slice.call(arguments, 0);\n\n model.makeInvalidatingChange(function() {\n var handled = stateMachine.handleEvent.apply(stateMachine, args);\n\n if (!handled) {\n // special handling of any events not handled by the current state:\n if (eventName === 'connectionTimedOut') {\n stateMachine.gotoState('disconnected');\n } else if (eventName === 'sessionChanged') {\n sensorConnectorInterface.stopPolling();\n stateMachine.gotoState('disconnected');\n } else if (eventName === 'statusErrored') {\n stateMachine.gotoState('initialConnectionFailure');\n }\n }\n });\n }\n\n sensorConnectorInterface = new SensorConnectorInterface();\n\n // At least for now, dispatch every interface event to the state machine.\n sensorConnectorInterface.on('*', function() {\n var args = Array.prototype.slice.call(arguments, 0);\n handle.apply(null, [this.event].concat(args));\n });\n\n // Also, handle \"live values\" every time they are received.\n sensorConnectorInterface.on('statusReceived', function() {\n if (dataColumn) {\n model.makeInvalidatingChange(function() {\n liveSensorValue = dataColumn.liveValue;\n });\n }\n });\n\n sensorConnectorInterface.on('controlEnabled', function() {\n canControl = true;\n });\n\n sensorConnectorInterface.on('controlDisabled', function() {\n canControl = false;\n });\n\n labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n setters: {},\n unitsDefinition: unitsDefinition,\n initialProperties: initialProperties,\n usePlaybackSupport: false\n });\n\n propertySupport = labModelerMixin.propertySupport;\n dispatch = labModelerMixin.dispatchSupport;\n dispatch.addEventTypes(\"tick\", \"play\", \"stop\", \"tickStart\", \"tickEnd\");\n\n labModelerMixin.mixInto(model);\n\n initializeStateVariables();\n\n if (model.properties.useRandomClientId) {\n model.properties.clientId = Math.floor((1 + Math.random()) * 0x100000000).toString(16); // a 9-digit hex string that always starts with 1\n }\n\n model.addObserver('clientName', function() {\n sensorConnectorInterface.clientName = model.properties.clientName;\n });\n\n model.defineOutput('time', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('displayTime', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.1f'\n }, function() {\n return time;\n });\n\n displayTimePropertyDescription = model.getPropertyDescription('displayTime');\n\n model.defineOutput('sensorReading', defaultSensorReadingDescription, function() {\n if (rawSensorValue == null) {\n return rawSensorValue;\n }\n return rawSensorValue - model.properties.tareValue;\n });\n\n /* Need custom implementation of duration options, because we don't use playbackSupport\n (and playbackSupport's implementation is designed for simulation models that have a\n fixed time per tick */\n\n model.defineOutput('durationOptions', {}, function() {\n return [1, 5, 10, 15, 20, 30, 45, 60];\n });\n\n model.formatTime = function(time) {\n return displayTimePropertyDescription.format(time);\n };\n\n model.defineOutput('actualUseDuration', {}, labModelerMixin.computeActualUseDuration);\n\n model.defineOutput('actualDuration', {\n label: \"Experiment duration\",\n unitType: 'time',\n format: 'f'\n }, labModelerMixin.computeActualDuration);\n\n // Because sensorReading updates are batched and delivered much later than the live sensor value\n // from the sensor status response, we define a separate liveSensorReading output that can be\n // updated every time the status is polled.\n model.defineOutput('liveSensorReading', defaultSensorReadingDescription, function() {\n if (liveSensorValue == null) {\n return liveSensorValue;\n }\n return liveSensorValue - model.properties.tareValue;\n });\n\n model.defineOutput('sensorName', {\n label: \"Sensor Name\"\n }, function() {\n return sensorName;\n });\n\n model.defineOutput('isStopped', {\n label: \"Stopped?\"\n }, function() {\n return isStopped;\n });\n\n // TODO. We need a way to make \"model-writable\" read only properties.\n model.defineOutput('isPlayable', {\n label: \"Startable?\"\n }, function() {\n return isPlayable;\n });\n\n model.defineOutput('hasPlayed', {\n label: \"Has successfully collected data?\"\n }, function() {\n return stepCounter > 0;\n });\n\n model.defineOutput('canTare', {\n label: \"Can set a tare value?\"\n }, function() {\n return canTare && isSensorTareable;\n });\n\n model.defineOutput('canControl', {\n label: \"Can remotely start/stop the Sensor Connector?\"\n }, function() {\n return canControl;\n });\n\n model.defineOutput('hasMultipleSensors', {\n label: \"Are multiple sensors connected to the Sensor Connector?\"\n }, function() {\n return hasMultipleSensors;\n });\n\n model.defineOutput('needsReload', {\n label: \"Needs Reload?\"\n }, function() {\n return needsReload;\n });\n\n model.defineOutput('message', {\n label: \"User Message\"\n }, function() {\n return message;\n });\n\n // set in setupModelObservers() in controller.js\n model.defineParameter('isNewRunInProgress', {\n initialValue: false\n });\n\n // Clean up state before we go\n // TODO\n model.on('willReset.model', function() {\n sensorConnectorInterface.stopPolling();\n if (sensorConnectorInterface.isCollecting) {\n sensorConnectorInterface.requestStop();\n }\n });\n\n model.addObserver('actualDuration', updateDisplayTimeRange);\n updateDisplayTimeRange();\n\n model.updateAllOutputProperties();\n stateMachine.gotoState('notConnected');\n\n return model;\n};\n","import NumericOutputView from 'common/views/numeric-output-view';\nimport BasicDialog from 'common/controllers/basic-dialog';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions-connector';\nimport viewState from 'common/views/view-state';\n\n\nexport default function(model, modelUrl, i18n) {\n\n // TODO use the formatter from the property description. Right now, it automatically adds\n // units to the returned string (which we don't want here).\n var format = d3.format('.2f');\n var sensorReadingView;\n var view;\n\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n function setCanTareState() {\n if (model.properties.canTare) {\n viewState.enableView(view.$zeroButton);\n } else {\n viewState.disableView(view.$zeroButton);\n }\n }\n\n function setCanConnectState() {\n // if (model.properties.canConnect) {\n // viewState.enableView(view.$connectButton);\n // } else {\n // viewState.disableView(view.$connectButton);\n // }\n }\n\n function setHasMultipleSensorsState() {\n if (model.properties.hasMultipleSensors && model.properties.isPlayable) {\n viewState.enableView(view.$selectSensorButton);\n } else {\n viewState.disableView(view.$selectSensorButton);\n }\n }\n\n function setMessageText() {\n view.$message.html(model.properties.message);\n }\n\n function setupModelObservers() {\n model.addObserver('canTare', setCanTareState);\n setCanTareState();\n\n model.addObserver('canConnect', setCanConnectState);\n setCanConnectState();\n\n model.addObserver('hasMultipleSensors', setHasMultipleSensorsState);\n model.addObserver('isPlayable', setHasMultipleSensorsState);\n setHasMultipleSensorsState();\n\n model.addObserver('message', setMessageText);\n setMessageText();\n }\n\n function chooseSensorPopup() {\n var dialog = new BasicDialog({\n width: \"60%\",\n dialogClass: 'interactive-dialog no-close',\n closeOnEscape: false,\n title: i18n.t(\"sensor.choose_sensor_title\"),\n buttons: {\n OK: function() {\n console.log(\"OK Clicked\");\n $(this).dialog(\"close\");\n // Change the model's selected sensor\n model.setSelectedSensor($(this).find('input:checked').val());\n },\n Cancel: function() {\n console.log(\"Cancel Clicked\");\n $(this).dialog(\"close\");\n }\n }\n }, i18n);\n var content = \"\",\n label = \"\",\n sensors = model.connectedSensors(),\n first = true,\n selectedSensor = model.getSelectedSensor(),\n i, checked, sensorDef;\n for (i = 0; i < sensors.length; i++) {\n if (sensors[i].units !== 's') {\n checked = \"\";\n if (sensors[i].name) {\n sensorDef = {\n measurementName: sensors[i].name\n };\n } else {\n sensorDef = sensorDefinitions[sensors[i].units];\n if (!sensorDef) {\n sensorDef = {\n measurementName: \"Unknown\"\n };\n }\n }\n label = sensorDef.measurementName + \" (\" + sensors[i].units + \")\";\n if (selectedSensor == i || (first && selectedSensor == -1)) {\n checked = \"checked \";\n };\n content += \"\" + label + \"
\";\n first = false;\n }\n }\n dialog.setContent(content);\n dialog.open();\n }\n\n return view = {\n $el: $(\"
\"),\n remoteAddress: null,\n\n bindModel: function(newModel, newModelUrl) {\n modelUrl = newModelUrl || modelUrl;\n model = newModel || model;\n\n setupModelObservers();\n },\n\n getHeightForWidth: function() {\n return \"2.8em\";\n },\n\n // called once we're in the DOM\n setup: function() {\n view.$el.empty();\n view.$controlsContainer = $(\"
\");\n view.$statusContainer = $(\"
\");\n // view.$addressInput = $(\"
\");\n sensorReadingView = new NumericOutputView({\n id: 'sensor-value-view',\n label: i18n.t(\"sensor.reading\"),\n units: model.getPropertyDescription('sensorReading').getUnitAbbreviation()\n });\n\n // view.$connectButton = $(\"
\");\n view.$zeroButton = $(\"
\");\n view.$selectSensorButton = $(\"
\");\n view.$message = $(\"
\");\n view.$sensorReading = sensorReadingView.render().addClass(\"horizontal\");\n\n view.$controlsContainer\n // .append(view.$addressInput)\n // .append(view.$connectButton)\n .append(view.$sensorReading)\n .append(view.$zeroButton)\n .append(view.$selectSensorButton);\n\n view.$statusContainer\n .append(view.$message);\n\n view.$el.css('zIndex', 4)\n .append(view.$controlsContainer)\n .append(view.$statusContainer);\n\n view.$controlsContainer.find('div').addClass('component component-spacing');\n view.$statusContainer.find('div').addClass('component component-spacing');\n\n sensorReadingView.resize();\n setupModelObservers();\n\n // if (typeof(view.remoteAddress) == \"string\") {\n // view.$addressInput.find('input').val(view.remoteAddress);\n // }\n // view.$addressInput.find('input').on('change', function() {\n // view.remoteAddress = $(this).val();\n // });\n\n // view.$connectButton.on('click', 'button', function() {\n // model.connect(view.$addressInput.find('input').val());\n // });\n view.$zeroButton.on('click', 'button', model.tare);\n view.$selectSensorButton.on('click', 'button', chooseSensorPopup);\n },\n\n resize: function() {\n if (sensorReadingView) {\n sensorReadingView.resize();\n }\n },\n\n repaint: function() {},\n\n setFocus: function() {},\n\n updateUnits: function(units) {\n sensorReadingView.updateUnits(units);\n if (model.properties.liveSensorReading == null) {\n sensorReadingView.hideUnits();\n }\n },\n\n update: function() {\n if (model.properties.liveSensorReading == null) {\n sensorReadingView.update(\"\");\n sensorReadingView.hideUnits();\n } else {\n sensorReadingView.update(format(model.properties.liveSensorReading));\n sensorReadingView.showUnits();\n }\n }\n };\n};\n"," /**\n Define the model-specific Sensor scripting API used by 'action' scripts on interactive elements.\n\n The universal Interactive scripting API is extended with the properties of the\n object below which will be exposed to the interactive's 'action' scripts as if\n they were local vars. All other names (including all globals, but excluding\n Javascript builtins) will be unavailable in the script context; and scripts\n are run in strict mode so they don't accidentally expose or read globals.\n\n @param: parent Common Scripting API\n*/\nexport default function SensorScriptingAPI(parent) {\n return {\n /**\n * Reset the model. The interactives controller will emit a 'willResetModel'.\n * The willResetModel observers can ask to wait for asynchronous confirmation before\n * the model is actually reset.\n * Note that the effect would be almost the same like after reload operation. However\n * the mechanism under the hood is completely different. The biggest difference for\n * authoring is that when .resetModel() is called, the \"onLoad\" script won't be\n * executed again. It may be also faster than reload.\n * @param {object} options hash of options, supported properties:\n * * propertiesToRetain - a list of properties to save before\n * the model reset and restore after reset.\n * * cause - cause of the reset action.\n */\n resetModel: function resetModel(options) {\n parent.intController.resetModel(options);\n }\n };\n};\n","\nimport ModelController from 'common/controllers/model-controller';\nimport Model from './modeler';\nimport ModelContainer from './view';\nimport ScriptingAPI from './scripting-api';\n// Dependencies.\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n var controller = new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI);\n\n // Note to self: modelController doesn't emit modelLoaded when the model first loads.\n // This was unexpected...\n\n function setupModelObservers() {\n var model = controller.model;\n\n model.addObserver('liveSensorReading', function() {\n controller.updateView();\n });\n\n model.addObserver('needsReload', function() {\n if (model.properties.needsReload) {\n interactiveController.reloadModel();\n }\n });\n\n model.addPropertyDescriptionObserver('sensorReading', function() {\n var description = model.getPropertyDescription('sensorReading');\n var view = controller.modelContainer;\n\n view.updateUnits(description.getUnitAbbreviation());\n });\n }\n\n interactiveController.on('modelLoaded.sensor-connector-model-controller', setupModelObservers);\n\n interactiveController.on('modelReset.sensor-connector-model-controller', function() {\n controller.model.set('isNewRunInProgress', false);\n });\n\n interactiveController.on('willResetModel', function() {\n controller.model.set('isNewRunInProgress', true);\n controller.model.willReset();\n });\n\n return controller;\n};\n","\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"labquest2\",\n immutable: true\n },\n sensorType: {\n defaultValue: null\n },\n tareValue: {\n defaultValue: 0\n }\n },\n viewOptions: {\n showClock: {\n defaultValue: true,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"play_reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n }\n }\n};\n","export default {\n units: {\n time: {\n name: \"second\",\n pluralName: \"seconds\",\n symbol: \"s\"\n },\n distance: {\n name: \"meter\",\n pluralName: \"meters\",\n symbol: \"m\"\n },\n temperature: {\n name: \"degree Celsius\",\n pluaralName: \"degrees Celsius\",\n symbol: \"°C\"\n },\n light: {\n name: \"lux\",\n pluralName: \"lux\",\n symbol: \"lux\"\n },\n force: {\n name: \"Newton\",\n pluralName: \"Newtons\",\n symbol: \"N\"\n },\n ph: {\n name: \"pH Unit\",\n pluralName: \"pH Units\",\n symbol: \"pH\"\n },\n co2: {\n name: \"part per million\",\n pluralName: \"parts per million\",\n symbol: \"ppm\"\n },\n o2: {\n name: \"part per million\",\n pluralName: \"parts per million\",\n symbol: \"ppm\"\n }\n }\n};\n"," \nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport PropertyDescription from 'common/property-description';\nimport metadata from './metadata';\nimport StateMachine from 'common/state-machine';\nimport labquest2Interface from 'labquest2-interface';\nimport unitsDefinition from './units-definition';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions-connector';\nimport Notifier from 'models/sensor-common/notifier';\nimport _ from 'underscore';\n\n\nexport default function Model(initialProperties, opt) {\n var i18n = opt.i18n,\n notifier = new Notifier(i18n),\n\n labModelerMixin,\n propertySupport,\n dispatch,\n stateMachine,\n timeColumn,\n dataColumn,\n selectedSensor,\n sensorName,\n isStopped,\n needsReload,\n time,\n rawSensorValue,\n liveSensorValue,\n lastLiveValueTimestamp,\n liveValueLastChanged,\n stepCounter,\n isPlayable,\n canConnect,\n canTare,\n liveMode,\n canControl,\n hasMultipleSensors,\n isSensorTareable,\n message,\n model;\n\n var defaultSensorReadingDescription = {\n label: i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: \"-\",\n format: '.2f',\n min: 0,\n max: 10\n };\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n function setSensorReadingDescription() {\n var sensorDefinition;\n var description;\n\n if (dataColumn) {\n sensorDefinition = sensorDefinitions[dataColumn.units];\n\n if (sensorDefinition) {\n description = {\n label: sensorDefinition.measurementName,\n format: '.2f',\n min: sensorDefinition.minReading,\n max: sensorDefinition.maxReading\n };\n if (unitsDefinition.units[sensorDefinition.measurementType]) {\n description.unitType = sensorDefinition.measurementType;\n } else {\n description.unitAbbreviation = dataColumn.units;\n }\n isSensorTareable = sensorDefinition.tareable;\n sensorName = sensorDefinition.sensorName;\n } else {\n description = {\n label: i18n.t(\"sensor.measurements.sensor_reading\"),\n unitAbbreviation: dataColumn.units,\n format: '.2f',\n min: 0,\n max: 10\n };\n isSensorTareable = true;\n sensorName = dataColumn.units + \" sensor\";\n }\n } else {\n description = defaultSensorReadingDescription;\n isSensorTareable = false;\n sensorName = \"(no sensor)\";\n }\n\n propertySupport.setPropertyDescription('sensorReading',\n new PropertyDescription(unitsDefinition, description));\n propertySupport.setPropertyDescription('liveSensorReading',\n new PropertyDescription(unitsDefinition, description));\n }\n\n function initializeStateVariables() {\n isStopped = true;\n canConnect = false;\n canControl = labquest2Interface.canControl;\n hasMultipleSensors = false;\n // Set selectedSensor if it hasn't been set yet\n if (typeof(selectedSensor) === \"undefined\" || selectedSensor === null) {\n selectedSensor = {\n index: -1\n };\n }\n stepCounter = 0;\n time = 0;\n rawSensorValue = undefined;\n liveSensorValue = undefined;\n lastLiveValueTimestamp = 0;\n liveValueLastChanged = 0;\n timeColumn = undefined;\n dataColumn = undefined;\n }\n\n function checkColumnAgainstSelected(dataset, idx) {\n var colCandidate = dataset.columns[idx];\n if (colCandidate && colCandidate.units === selectedSensor.units) {\n selectedSensor.index = idx;\n return true;\n }\n return false;\n }\n\n function setColumn() {\n var dataset = labquest2Interface.datasets[0];\n var newDataColumn, sIdx, colCandidate;\n\n hasMultipleSensors = dataset.columns.length > 2;\n\n timeColumn = _.find(dataset.columns, function(column) {\n return column.units === 's';\n });\n\n // TODO When we want to support multiple sensors, this will have to change.\n // Select the column chosen by the user\n sIdx = selectedSensor.index;\n if (sIdx == -1) {\n newDataColumn = _.find(dataset.columns, function(column, idx) {\n if (column.units !== 's') {\n selectedSensor.index = idx;\n selectedSensor.units = column.units;\n sIdx = idx;\n return true;\n }\n return false;\n });\n }\n if (sIdx >= dataset.columns.length && dataset.columns.length > 1) {\n // we seem to be pointing past the number of columns there are. reset to that last column.\n sIdx = dataset.columns.length - 1;\n\n }\n newDataColumn = dataset.columns[sIdx];\n if (newDataColumn && selectedSensor.units && newDataColumn.units !== selectedSensor.units) {\n // our selected column seems to have changed out from under us.\n // If a sensor was added to the device, it could be one column higher\n if (checkColumnAgainstSelected(dataset, sIdx + 1)) {\n newDataColumn = dataset.columns[sIdx + 1];\n } else if (sIdx > 1 && checkColumnAgainstSelected(dataset, sIdx - 1)) {\n // it wasn't the one after. let's check the one before.\n newDataColumn = dataset.columns[sIdx - 1];\n } else {\n // it seems to be none of them. Reset the selected sensor to the first one.\n newDataColumn = _.find(dataset.columns, function(column, idx) {\n if (column.units !== 's') {\n selectedSensor.index = idx;\n selectedSensor.units = column.units;\n sIdx = idx;\n return true;\n }\n return false;\n });\n }\n }\n\n dataColumn = newDataColumn;\n if (dataColumn) {\n selectedSensor.units = dataColumn.units;\n }\n setSensorReadingDescription();\n\n if (!dataColumn) {\n liveSensorValue = undefined;\n }\n }\n\n function handleData() {\n if (!timeColumn || !dataColumn) {\n return;\n }\n\n var numberOfValues = Math.min(timeColumn.data.length, dataColumn.data.length);\n for (; stepCounter < numberOfValues; stepCounter++) {\n time = timeColumn.data[stepCounter];\n rawSensorValue = dataColumn.data[stepCounter];\n model.updateAllOutputProperties();\n dispatch.tick();\n }\n }\n\n function isAllColumnDataReceieved(column) {\n return column.receivedValuesTimeStamp >= column.requestedValuesTimeStamp;\n }\n\n function isAllDataReceived() {\n return isAllColumnDataReceieved(timeColumn) && (!dataColumn || isAllColumnDataReceieved(dataColumn));\n }\n\n function connectedSensors() {\n var sensors = [],\n dataset = labquest2Interface.datasets[0],\n i, unit;\n\n for (i = 0; i < dataset.columns.length; i++) {\n sensors.push(dataset.columns[i].units);\n }\n return sensors;\n }\n\n model = {\n\n on: function(type, listener) {\n dispatch.on(type, listener);\n },\n\n connect: function(address) {\n handle('connect', address);\n },\n\n start: function() {\n handle('start');\n },\n\n stop: function() {\n handle('stop');\n },\n\n tare: function() {\n var oldPlayable = isPlayable;\n isPlayable = false;\n handle('tare');\n isPlayable = oldPlayable;\n },\n\n willReset: function() {\n dispatch.willReset();\n },\n\n reset: function() {\n handle('reset');\n },\n\n reload: function() {\n model.stop();\n model.makeInvalidatingChange(function() {\n needsReload = true;\n });\n },\n\n isStopped: function() {\n return isStopped;\n },\n\n stepCounter: function() {\n return stepCounter;\n },\n\n connectedSensors: connectedSensors,\n getSelectedSensor: function() {\n return selectedSensor.index;\n },\n setSelectedSensor: function(sensorIndex) {\n if (selectedSensor.index !== sensorIndex) {\n selectedSensor.index = sensorIndex;\n selectedSensor.units = null;\n model.properties.tareValue = 0; // Also reset our tare value\n setColumn();\n }\n },\n\n serialize: function() {\n return \"\";\n }\n };\n\n\n stateMachine = new StateMachine({\n\n notConnected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.not_connected\");\n canConnect = true;\n },\n\n leaveState: function() {\n canConnect = false;\n },\n\n connect: function(address) {\n labquest2Interface.startPolling(address);\n this.gotoState('connecting');\n }\n },\n\n connecting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.connecting\");\n if (labquest2Interface.isConnected) {\n this.gotoState('connected');\n }\n },\n\n statusErrored: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n connectionTimedOut: function() {\n this.gotoState('initialConnectionFailure');\n },\n\n statusReceived: function() {\n this.gotoState('connected');\n },\n\n sessionChanged: function() {\n // start a new session, stay connecting...\n labquest2Interface.stopPolling();\n labquest2Interface.startPolling();\n }\n },\n\n initialConnectionFailure: {\n enterState: function() {\n labquest2Interface.stopPolling();\n message = i18n.t(\"sensor.messages.connection_failed\");\n notifier.alert(i18n.t(\"sensor.messages.connection_failed_labquest2_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismiss');\n }\n });\n },\n\n dismiss: function() {\n this.gotoState('notConnected');\n }\n },\n\n connected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.connected\");\n canTare = true;\n isPlayable = true;\n isStopped = true;\n\n setColumn();\n\n if (canControl) {\n this.controlEnabled();\n } else {\n this.controlDisabled();\n }\n\n if (labquest2Interface.isCollecting) {\n this.gotoState('started');\n }\n },\n\n leaveState: function() {\n canTare = false;\n isPlayable = false;\n },\n\n // Give some feedback on the currently selected column from which data will be collected.\n columnAdded: setColumn,\n columnRemoved: setColumn,\n columnTypeChanged: setColumn,\n columnMoved: setColumn,\n\n tare: function() {\n if (dataColumn) {\n if (liveMode) {\n model.properties.tareValue = dataColumn.liveValue;\n } else {\n canTare = false;\n // Display a message that we need to be in liveMode before we can tare\n notifier.alert(i18n.t(\"sensor.messages.tare_labquest2_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n canTare = true;\n }\n });\n }\n }\n },\n\n // User requests collection\n start: function() {\n // NOTE. Due to architecture switch mid-way, the labquest2Interface layer is turning the\n // start request into a promise, and we're turning it back to events. The lower layer\n // could just ditch promises and emit the corresponding events with no harm. (The state\n // machine prevents almost every practical scenario where we'd see an out-of-date\n // startRequestFailure event while in a state that would respond to it.)\n labquest2Interface.requestStart().catch(function() {\n handle('startRequestFailed');\n });\n this.gotoState('starting');\n },\n\n controlEnabled: function() {\n message = i18n.t(\"sensor.messages.connected\");\n },\n\n controlDisabled: function() {\n message = i18n.t(\"sensor.messages.connected_start_labquest2\");\n },\n\n sessionChanged: function() {\n labquest2Interface.stopPolling();\n labquest2Interface.startPolling();\n this.gotoState('connecting');\n },\n\n // Collection was started by a third party\n collectionStarted: function() {\n this.gotoState('started');\n }\n },\n\n starting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.starting_data_collection\");\n isStopped = false;\n var self = this;\n this._startTimerId = setTimeout(3000, function() {\n self.gotoState('startRequestFailed');\n });\n },\n\n leaveState: function() {\n clearTimeout(this._startTimerId);\n },\n\n startRequestFailed: function() {\n this.gotoState('errorStarting');\n },\n\n stop: function() {\n this.gotoState('canceling');\n },\n\n collectionStarted: function() {\n this.gotoState('started');\n }\n },\n\n errorStarting: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.error_starting_data_collection\");\n isStopped = true;\n\n notifier.alert(i18n.t(\"sensor.messages.error_starting_data_collection_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismissErrorStarting');\n }\n });\n },\n\n collectionStarted: function() {\n this.gotoState('started');\n },\n\n dismissErrorStarting: function() {\n this.gotoState('connected');\n }\n },\n\n started: {\n enterState: function() {\n if (canControl) {\n message = i18n.t(\"sensor.messages.collecting_data\");\n } else {\n message = i18n.t(\"sensor.messages.collecting_data_stop_labquest2\");\n }\n isStopped = false;\n setColumn();\n\n // Check, just in case. Specifically, when errorStopping transitions here, collection\n // might have stopped in the meantime.\n if (!labquest2Interface.isCollecting) {\n this.gotoState('stopped');\n }\n\n if (!dataColumn) {\n this.gotoState('startedWithNoDataColumn');\n }\n },\n\n data: handleData,\n\n controlEnabled: function() {\n message = i18n.t(\"sensor.messages.collecting_data\");\n },\n\n controlDisabled: function() {\n message = i18n.t(\"sensor.messages.collecting_data_stop_labquest2\");\n },\n\n stop: function() {\n labquest2Interface.requestStop().catch(function() {\n handle('stopRequestFailed');\n });\n this.gotoState('stopping');\n },\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n }\n },\n\n // This can happen.\n startedWithNoDataColumn: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.no_data\");\n\n labquest2Interface.requestStop();\n notifier.alert(i18n.t(\"sensor.messages.no_data_labquest2_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n }\n });\n },\n\n collectionStopped: function() {\n this.gotoState('stoppedWithNoDataColumn');\n }\n },\n\n stoppedWithNoDataColumn: {\n enterState: function() {\n if (isAllDataReceived()) {\n this.gotoState('connected');\n }\n },\n\n data: function() {\n if (isAllDataReceived()) {\n this.gotoState('connected');\n }\n }\n },\n\n canceling: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.canceling_data_collection\");\n isStopped = true;\n },\n\n data: handleData,\n\n cancelRequestFailed: function() {\n this.gotoState('errorCanceling');\n },\n\n collectionStarted: function() {\n labquest2Interface.requestStop().catch(function() {\n handle('cancelRequestFailed');\n });\n },\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n }\n },\n\n errorCanceling: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.error_canceling_data_collection\");\n notifier.alert(i18n.t(\"sensor.messages.error_canceling_data_collection_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismissErrorStopping');\n }\n });\n },\n\n data: handleData,\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n },\n\n dismissErrorStopping: function() {\n this.gotoState('started');\n }\n },\n\n stopping: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.stopping_data_collection\");\n },\n\n data: handleData,\n\n stopRequestFailed: function() {\n this.gotoState('errorStopping');\n },\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n }\n },\n\n errorStopping: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.error_stopping_data_collection\");\n notifier.alert(i18n.t(\"sensor.messages.error_stopping_data_collection_alert\"), {\n OK: function() {\n $(this).dialog(\"close\");\n handle('dismissErrorStopping');\n }\n });\n },\n\n data: handleData,\n\n collectionStopped: function() {\n this.gotoState('collectionStopped');\n },\n\n dismissErrorStopping: function() {\n this.gotoState('started');\n }\n },\n\n // The device reports the stop of data collection before all data can be received.\n collectionStopped: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.data_collection_stopped\");\n if (isAllDataReceived()) {\n this.gotoState('collectionComplete');\n }\n },\n\n data: function() {\n handleData();\n if (isAllDataReceived()) {\n this.gotoState('collectionComplete');\n }\n }\n },\n\n collectionComplete: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.data_collection_complete\");\n isStopped = true;\n },\n\n reset: function() {\n initializeStateVariables();\n setSensorReadingDescription();\n this.gotoState('connecting');\n dispatch.reset();\n }\n },\n\n disconnected: {\n enterState: function() {\n message = i18n.t(\"sensor.messages.disconnected\");\n canConnect = true;\n labquest2Interface.stopPolling();\n },\n\n leaveState: function() {\n canConnect = false;\n },\n\n connect: function(address) {\n labquest2Interface.startPolling(address);\n this.gotoState('connecting');\n }\n }\n });\n\n // Automatically wrap all event handlers invocations with makeInvalidatingChange so that\n // outputs update from closure variable state automatically.\n function handle(eventName) {\n var args = Array.prototype.slice.call(arguments, 0);\n\n model.makeInvalidatingChange(function() {\n var handled = stateMachine.handleEvent.apply(stateMachine, args);\n\n if (!handled) {\n // special handling of any events not handled by the current state:\n if (eventName === 'connectionTimedOut' ||\n eventName === 'sessionChanged') {\n stateMachine.gotoState('disconnected');\n }\n }\n });\n }\n\n // At least for now, dispatch every interface event to the state machine.\n labquest2Interface.on('*', function() {\n var args = Array.prototype.slice.call(arguments, 0);\n handle.apply(null, [this.event].concat(args));\n });\n\n // Also, handle \"live values\" every time they are received.\n labquest2Interface.on('statusReceived', function() {\n if (dataColumn) {\n model.makeInvalidatingChange(function() {\n // Figure out if we're in \"live\" mode, or if we're still viewing old data\n // (and therefore the live values aren't actually updating)\n var now = new Date();\n if ((dataColumn.liveValueTimeStamp - lastLiveValueTimestamp) > 0) {\n liveMode = true;\n lastLiveValueTimestamp = dataColumn.liveValueTimeStamp;\n liveValueLastChanged = now;\n } else {\n if ((now - liveValueLastChanged) < 2000) {\n liveMode = true;\n } else {\n liveMode = false;\n }\n }\n liveSensorValue = dataColumn.liveValue;\n });\n }\n });\n\n labquest2Interface.on('controlEnabled', function() {\n canControl = true;\n });\n\n labquest2Interface.on('controlDisabled', function() {\n canControl = false;\n });\n\n labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n setters: {},\n unitsDefinition: unitsDefinition,\n initialProperties: initialProperties,\n usePlaybackSupport: false\n });\n\n labModelerMixin.mixInto(model);\n propertySupport = labModelerMixin.propertySupport;\n dispatch = labModelerMixin.dispatchSupport;\n dispatch.addEventTypes(\"tick\", \"play\", \"stop\", \"tickStart\", \"tickEnd\");\n\n initializeStateVariables();\n\n model.defineOutput('time', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('displayTime', {\n label: i18n.t(\"sensor.measurements.time\"),\n unitType: 'time',\n format: '.2f'\n }, function() {\n return time;\n });\n\n model.defineOutput('sensorReading', defaultSensorReadingDescription, function() {\n if (rawSensorValue == null) {\n return rawSensorValue;\n }\n return rawSensorValue - model.properties.tareValue;\n });\n\n // Because sensorReading updates are batched and delivered much later than the live sensor value\n // from the sensor status response, we define a separate liveSensorReading output that can be\n // updated every time the status is polled.\n model.defineOutput('liveSensorReading', defaultSensorReadingDescription, function() {\n if (liveSensorValue == null) {\n return liveSensorValue;\n }\n return liveSensorValue - model.properties.tareValue;\n });\n\n model.defineOutput('sensorName', {\n label: \"Sensor Name\"\n }, function() {\n return sensorName;\n });\n\n model.defineOutput('isStopped', {\n label: \"Stopped?\"\n }, function() {\n return isStopped;\n });\n\n // TODO. We need a way to make \"model-writable\" read only properties.\n model.defineOutput('isPlayable', {\n label: \"Startable?\"\n }, function() {\n return isPlayable;\n });\n\n model.defineOutput('hasPlayed', {\n label: \"Has successfully collected data?\"\n }, function() {\n return stepCounter > 0;\n });\n\n model.defineOutput('canTare', {\n label: \"Can set a tare value?\"\n }, function() {\n return canTare && isSensorTareable;\n });\n\n model.defineOutput('canConnect', {\n label: \"Can begin connecting to the LabQuest2?\"\n }, function() {\n return canConnect;\n });\n\n model.defineOutput('canControl', {\n label: \"Can remotely start/stop the LabQuest2?\"\n }, function() {\n return canControl;\n });\n\n model.defineOutput('hasMultipleSensors', {\n label: \"Are multiple sensors connected to the LabQuest2?\"\n }, function() {\n return hasMultipleSensors;\n });\n\n model.defineOutput('needsReload', {\n label: \"Needs Reload?\"\n }, function() {\n return needsReload;\n });\n\n model.defineOutput('message', {\n label: \"User Message\"\n }, function() {\n return message;\n });\n\n // Clean up state before we go\n // TODO\n model.on('willReset.model', function() {\n labquest2Interface.stopPolling();\n labquest2Interface.requestStop();\n });\n\n model.updateAllOutputProperties();\n stateMachine.gotoState('notConnected');\n\n return model;\n};\n","import NumericOutputView from 'common/views/numeric-output-view';\nimport BasicDialog from 'common/controllers/basic-dialog';\nimport getSensorDefinitions from 'models/sensor-common/i18n-sensor-definitions-connector';\nimport viewState from 'common/views/view-state';\n\n\nexport default function(model, modelUrl, i18n) {\n\n // TODO use the formatter from the property description. Right now, it automatically adds\n // units to the returned string (which we don't want here).\n var format = d3.format('.2f');\n var sensorReadingView;\n var view;\n\n var sensorDefinitions = getSensorDefinitions(i18n);\n\n function setCanTareState() {\n if (model.properties.canTare) {\n viewState.enableView(view.$zeroButton);\n } else {\n viewState.disableView(view.$zeroButton);\n }\n }\n\n function setCanConnectState() {\n if (model.properties.canConnect) {\n viewState.enableView(view.$connectButton);\n } else {\n viewState.disableView(view.$connectButton);\n }\n }\n\n function setHasMultipleSensorsState() {\n if (model.properties.hasMultipleSensors && model.properties.isPlayable) {\n viewState.enableView(view.$selectSensorButton);\n } else {\n viewState.disableView(view.$selectSensorButton);\n }\n }\n\n function setMessageText() {\n view.$message.text(model.properties.message);\n }\n\n function setupModelObservers() {\n model.addObserver('canTare', setCanTareState);\n setCanTareState();\n\n model.addObserver('canConnect', setCanConnectState);\n setCanConnectState();\n\n model.addObserver('hasMultipleSensors', setHasMultipleSensorsState);\n model.addObserver('isPlayable', setHasMultipleSensorsState);\n setHasMultipleSensorsState();\n\n model.addObserver('message', setMessageText);\n setMessageText();\n }\n\n function chooseSensorPopup() {\n var dialog = new BasicDialog({\n width: \"60%\",\n dialogClass: 'interactive-dialog no-close',\n closeOnEscape: false,\n title: i18n.t(\"sensor.choose_sensor_title\"),\n buttons: {\n OK: function() {\n console.log(\"OK Clicked\");\n $(this).dialog(\"close\");\n // TODO Change the model's selected sensor\n model.setSelectedSensor($(this).find('input:checked').val());\n },\n Cancel: function() {\n console.log(\"Cancel Clicked\");\n $(this).dialog(\"close\");\n // TODO Make sure the model continues using the previously selected sensor\n }\n }\n }, i18n);\n var content = \"\",\n label = \"\",\n sensors = model.connectedSensors(),\n first = true,\n selectedSensor = model.getSelectedSensor(),\n i, checked, sensorDef;\n for (i = 0; i < sensors.length; i++) {\n if (sensors[i] !== 's') {\n checked = \"\";\n sensorDef = sensorDefinitions[sensors[i]];\n if (!sensorDef) {\n sensorDef = {\n measurementName: \"Unknown\"\n };\n }\n label = sensorDef.measurementName + \" (\" + sensors[i] + \")\";\n if (selectedSensor == i || (first && selectedSensor == -1)) {\n checked = \"checked \";\n };\n content += \"\" + label + \"
\";\n first = false;\n }\n }\n dialog.setContent(content);\n dialog.open();\n }\n\n return view = {\n $el: $(\"
\"),\n remoteAddress: null,\n\n bindModel: function(newModel, newModelUrl) {\n modelUrl = newModelUrl || modelUrl;\n model = newModel || model;\n\n setupModelObservers();\n },\n\n getHeightForWidth: function() {\n return \"2.8em\";\n },\n\n // called once we're in the DOM\n setup: function() {\n view.$el.empty();\n view.$controlsContainer = $(\"
\");\n view.$statusContainer = $(\"
\");\n view.$addressInput = $(\"
\");\n sensorReadingView = new NumericOutputView({\n id: 'sensor-value-view',\n label: i18n.t(\"sensor.reading\"),\n units: model.getPropertyDescription('sensorReading').getUnitAbbreviation()\n });\n\n view.$connectButton = $(\"
\");\n view.$zeroButton = $(\"
\");\n view.$selectSensorButton = $(\"
\");\n view.$message = $(\"
\");\n view.$sensorReading = sensorReadingView.render().addClass(\"horizontal\");\n\n view.$controlsContainer\n .append(view.$addressInput)\n .append(view.$connectButton)\n .append(view.$sensorReading)\n .append(view.$zeroButton)\n .append(view.$selectSensorButton);\n\n view.$statusContainer\n .append(view.$message);\n\n view.$el.css('zIndex', 4)\n .append(view.$controlsContainer)\n .append(view.$statusContainer);\n\n view.$controlsContainer.find('div').addClass('component component-spacing');\n view.$statusContainer.find('div').addClass('component component-spacing');\n\n sensorReadingView.resize();\n setupModelObservers();\n\n if (typeof(view.remoteAddress) == \"string\") {\n view.$addressInput.find('input').val(view.remoteAddress);\n }\n view.$addressInput.find('input').on('change', function() {\n view.remoteAddress = $(this).val();\n });\n\n // connect when the user hits enter\n view.$addressInput.find('input').on('keypress', function(evt) {\n var code = evt.keyCode || evt.which || 0;\n if (code == 13 && model.properties.canConnect) {\n model.connect(view.$addressInput.find('input').val());\n evt.preventDefault();\n }\n });\n\n view.$connectButton.on('click', 'button', function() {\n model.connect(view.$addressInput.find('input').val());\n });\n view.$zeroButton.on('click', 'button', model.tare);\n view.$selectSensorButton.on('click', 'button', chooseSensorPopup);\n },\n\n resize: function() {\n if (sensorReadingView) {\n sensorReadingView.resize();\n }\n },\n\n repaint: function() {},\n\n setFocus: function() {},\n\n updateUnits: function(units) {\n sensorReadingView.updateUnits(units);\n if (model.properties.liveSensorReading == null) {\n sensorReadingView.hideUnits();\n }\n },\n\n update: function() {\n if (model.properties.liveSensorReading == null) {\n sensorReadingView.update(\"\");\n sensorReadingView.hideUnits();\n } else {\n sensorReadingView.update(format(model.properties.liveSensorReading));\n sensorReadingView.showUnits();\n }\n }\n };\n};\n"," /**\n Define the model-specific Sensor scripting API used by 'action' scripts on interactive elements.\n\n The universal Interactive scripting API is extended with the properties of the\n object below which will be exposed to the interactive's 'action' scripts as if\n they were local vars. All other names (including all globals, but excluding\n Javascript builtins) will be unavailable in the script context; and scripts\n are run in strict mode so they don't accidentally expose or read globals.\n\n @param: parent Common Scripting API\n*/\nexport default function SensorScriptingAPI(parent) {\n return {\n /**\n * Reset the model. The interactives controller will emit a 'willResetModel'.\n * The willResetModel observers can ask to wait for asynchronous confirmation before\n * the model is actually reset.\n * Note that the effect would be almost the same like after reload operation. However\n * the mechanism under the hood is completely different. The biggest difference for\n * authoring is that when .resetModel() is called, the \"onLoad\" script won't be\n * executed again. It may be also faster than reload.\n * @param {object} options hash of options, supported properties:\n * * propertiesToRetain - a list of properties to save before\n * the model reset and restore after reset.\n * * cause - cause of the reset action.\n */\n resetModel: function resetModel(options) {\n parent.intController.resetModel(options);\n }\n };\n};\n","\nimport ModelController from 'common/controllers/model-controller';\nimport Model from './modeler';\nimport ModelContainer from './view';\nimport ScriptingAPI from './scripting-api';\n// Dependencies.\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n var controller = new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI);\n\n // Note to self: modelController doesn't emit modelLoaded when the model first loads.\n // This was unexpected...\n\n function setupModelObservers() {\n var model = controller.model;\n\n model.addObserver('liveSensorReading', function() {\n controller.updateView();\n });\n\n model.addObserver('needsReload', function() {\n if (model.properties.needsReload) {\n interactiveController.reloadModel();\n }\n });\n\n model.addPropertyDescriptionObserver('sensorReading', function() {\n var description = model.getPropertyDescription('sensorReading');\n var view = controller.modelContainer;\n\n view.updateUnits(description.getUnitAbbreviation());\n });\n }\n\n interactiveController.on('modelLoaded.labquest2-model-controller', setupModelObservers);\n\n interactiveController.on('modelReset.labquest2-model-controller', function() {\n controller.model.set('isNewRunInProgress', false);\n });\n\n interactiveController.on('willResetModel', function() {\n controller.model.set('isNewRunInProgress', true);\n controller.model.willReset();\n });\n\n return controller;\n};\n"," \n// WebGL Context Manager module.\n//\n// It provides access to one, global WebGL context.\n// All clients interested in WebGL context should call:\n// getWebGLContext() function. If WebGL is not available,\n// an appropriate error will be thrown.\n// The internal `gl` variable holds the current WebGL context.\nvar gl;\n\nexport default {\n getWebGLContext: function() {\n if (!gl) {\n var canvas = document.createElement('canvas');\n try {\n gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n } catch (e) {}\n if (!gl) {\n throw new Error('GL: WebGL not supported.');\n }\n }\n return gl;\n },\n\n get error() {\n if (!gl) return \"WebGL unavailable\";\n var error = gl.getError();\n return error === gl.NO_ERROR ? undefined : error;\n }\n};\n"," /*jslint indent: 2, browser: true, newcap: true, es5: true */ \nimport console from 'common/console';\nimport context from 'models/energy2d/gpu/context';\n\nvar\n// Dependencies. \n \n\n // The internal `gl` variable holds the current WebGL context.\n gl,\n\n // Local, private helper functions.\n regexMap = function(regex, text, callback) {\n var result;\n while ((result = regex.exec(text)) !== null) {\n callback(result);\n }\n },\n isArray = function(obj) {\n var str = Object.prototype.toString.call(obj);\n return str === '[object Array]' || str === '[object Float32Array]';\n },\n isNumber = function(obj) {\n var str = Object.prototype.toString.call(obj);\n return str === '[object Number]' || str === '[object Boolean]';\n },\n // Class to be exported.\n Shader;\n\n// Compiles a shader program using the provided vertex and fragment shaders.\nShader = function(vertexSource, fragmentSource) {\n var\n // Headers are prepended to the sources to provide some automatic functionality.\n vertexHeader =\n '\\\n attribute vec4 gl_Vertex;\\\n attribute vec4 gl_TexCoord;\\\n attribute vec3 gl_Normal;\\\n attribute vec4 gl_Color;\\\n ',\n fragmentHeader =\n '\\\n precision highp float;\\\n ',\n\n // The `gl_` prefix must be substituted for something else to avoid compile\n // errors, since it's a reserved prefix. This prefixes all reserved names with\n // `_`. The header is inserted after any extensions, since those must come\n // first.\n fix = function(header, source) {\n var replaced = {},\n match;\n match = /^((\\s*\\/\\/.*\\n|\\s*#extension.*\\n)+)[^]*$/.exec(source);\n source = match ? match[1] + header + source.substr(match[1].length) : header + source;\n regexMap(/\\bgl_\\w+\\b/g, header, function(result) {\n if (replaced[result] === undefined) {\n source = source.replace(new RegExp('\\\\b' + result + '\\\\b', 'g'), '_' + result);\n replaced[result] = true;\n }\n });\n return source;\n },\n\n isSampler = {};\n\n gl = context.getWebGLContext();\n\n vertexSource = fix(vertexHeader, vertexSource);\n fragmentSource = fix(fragmentHeader, fragmentSource);\n\n // Compile and link errors are thrown as strings.\n function compileSource(type, source) {\n var shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n throw new Error('Shader: compile error.\\n' + gl.getShaderInfoLog(shader) +\n '\\nSource:\\n' + source);\n }\n return shader;\n }\n\n this.program = gl.createProgram();\n gl.attachShader(this.program, compileSource(gl.VERTEX_SHADER, vertexSource));\n gl.attachShader(this.program, compileSource(gl.FRAGMENT_SHADER, fragmentSource));\n gl.linkProgram(this.program);\n if (!gl.getProgramParameter(this.program, gl.LINK_STATUS)) {\n throw new Error('Shader: link error.\\n' + gl.getProgramInfoLog(this.program) +\n '\\nSource:\\n' + vertexSource + '\\n\\n' + fragmentSource);\n }\n this.attributes = {};\n this.uniformLocations = {};\n\n // Sampler uniforms need to be uploaded using `gl.uniform1i()` instead of `gl.uniform1f()`.\n // To do this automatically, we detect and remember all uniform samplers in the source code.\n regexMap(/uniform\\s+sampler(1D|2D|3D|Cube)\\s+(\\w+)\\s*;/g, vertexSource + fragmentSource, function(groups) {\n isSampler[groups[2]] = 1;\n });\n this.isSampler = isSampler;\n};\n\n// Set a uniform for each property of `uniforms`. The correct `gl.uniform*()` method is\n// inferred from the value types and from the stored uniform sampler flags.\nShader.prototype.uniforms = function(uniforms) {\n var name, location, value;\n\n gl.useProgram(this.program);\n\n for (name in uniforms) {\n if (uniforms.hasOwnProperty(name)) {\n if (this.uniformLocations[name] === undefined) {\n this.uniformLocations[name] = gl.getUniformLocation(this.program, name);\n }\n location = this.uniformLocations[name];\n if (location === null) {\n console.warn('Shader: name ' + name + ' does not correspond to an active uniform variable.');\n continue;\n }\n value = uniforms[name];\n if (isArray(value)) {\n switch (value.length) {\n case 1:\n gl.uniform1fv(location, new Float32Array(value));\n break;\n case 2:\n gl.uniform2fv(location, new Float32Array(value));\n break;\n case 3:\n gl.uniform3fv(location, new Float32Array(value));\n break;\n case 4:\n gl.uniform4fv(location, new Float32Array(value));\n break;\n // Matrices are automatically transposed, since WebGL uses column-major\n // indices instead of row-major indices.\n case 9:\n gl.uniformMatrix3fv(location, false, new Float32Array([\n value[0], value[3], value[6],\n value[1], value[4], value[7],\n value[2], value[5], value[8]\n ]));\n break;\n case 16:\n gl.uniformMatrix4fv(location, false, new Float32Array([\n value[0], value[4], value[8], value[12],\n value[1], value[5], value[9], value[13],\n value[2], value[6], value[10], value[14],\n value[3], value[7], value[11], value[15]\n ]));\n break;\n default:\n throw new Error('Shader: don\\'t know how to load uniform \"' + name + '\" of length ' + value.length);\n }\n } else if (isNumber(value)) {\n (this.isSampler[name] ? gl.uniform1i : gl.uniform1f).call(gl, location, value);\n } else {\n throw new Error('Shader: attempted to set uniform \"' + name + '\" to invalid value ' + value);\n }\n }\n }\n\n return this;\n};\n\n// Sets all uniform matrix attributes, binds all relevant buffers, and draws the\n// mesh geometry as indexed triangles or indexed lines. Set `mode` to `gl.LINES`\n// (and either add indices to `lines` or call `computeWireframe()`) to draw the\n// mesh in wireframe.\nShader.prototype.draw = function(mesh, mode) {\n gl.useProgram(this.program);\n\n this.drawBuffers(mesh.vertexBuffers,\n mesh.indexBuffers[mode === gl.LINES ? 'lines' : 'triangles'],\n arguments.length < 2 ? gl.TRIANGLES : mode);\n};\n\n// Sets all uniform matrix attributes, binds all relevant buffers, and draws the\n// indexed mesh geometry. The `vertexBuffers` argument is a map from attribute\n// names to `Buffer` objects of type `gl.ARRAY_BUFFER`, `indexBuffer` is a `Buffer`\n// object of type `gl.ELEMENT_ARRAY_BUFFER`, and `mode` is a WebGL primitive mode\n// like `gl.TRIANGLES` or `gl.LINES`. This method automatically creates and caches\n// vertex attribute pointers for attributes as needed.\nShader.prototype.drawBuffers = function(vertexBuffers, indexBuffer, mode) {\n // Create and enable attribute pointers as necessary.\n var length = 0,\n attribute, buffer, location;\n\n for (attribute in vertexBuffers) {\n if (vertexBuffers.hasOwnProperty(attribute)) {\n buffer = vertexBuffers[attribute];\n if (this.attributes[attribute] === undefined) {\n this.attributes[attribute] = gl.getAttribLocation(this.program, attribute.replace(/^gl_/, '_gl_'));\n }\n location = this.attributes[attribute];\n if (location === -1 || !buffer.buffer) {\n continue;\n }\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer.buffer);\n gl.enableVertexAttribArray(location);\n gl.vertexAttribPointer(location, buffer.buffer.spacing, gl.FLOAT, false, 0, 0);\n length = buffer.buffer.length / buffer.buffer.spacing;\n }\n }\n\n // Disable unused attribute pointers.\n for (attribute in this.attributes) {\n if (this.attributes.hasOwnProperty(attribute)) {\n if (vertexBuffers[attribute] === undefined) {\n gl.disableVertexAttribArray(this.attributes[attribute]);\n }\n }\n }\n\n // Draw the geometry.\n if (length && (!indexBuffer || indexBuffer.buffer)) {\n if (indexBuffer) {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer.buffer);\n gl.drawElements(mode, indexBuffer.buffer.length, gl.UNSIGNED_SHORT, 0);\n } else {\n gl.drawArrays(mode, 0, length);\n }\n }\n};\n\n// Export constructor function.\nexport default Shader;\n","import constants from 'models/energy2d/models/constants';\n\nexport default {\n mainProperties: {\n type: {\n defaultValue: \"energy2d\",\n immutable: true\n },\n use_WebGL: {\n defaultValue: false\n },\n grid_width: {\n defaultValue: 100,\n immutable: true\n },\n grid_height: {\n defaultValue: 100,\n immutable: true\n },\n model_width: {\n defaultValue: 10,\n immutable: true\n },\n model_height: {\n defaultValue: 10,\n immutable: true\n },\n timeStep: {\n defaultValue: 1\n },\n timeStepsPerTick: {\n defaultValue: 4\n },\n ticksPerGPUSync: {\n defaultValue: 30\n },\n convective: {\n defaultValue: true\n },\n background_temperature: {\n defaultValue: 0\n },\n background_conductivity: {\n defaultValue: constants.AIR_THERMAL_CONDUCTIVITY\n },\n background_specific_heat: {\n defaultValue: constants.AIR_SPECIFIC_HEAT\n },\n background_density: {\n defaultValue: constants.AIR_DENSITY\n },\n background_viscosity: {\n defaultValue: constants.AIR_VISCOSITY\n },\n thermal_buoyancy: {\n defaultValue: 0.00025\n },\n buoyancy_approximation: {\n defaultValue: 1\n },\n boundary: {\n defaultValue: {\n type: \"temperature\",\n upper: 0,\n lower: 0,\n left: 0,\n right: 0\n }\n },\n sunny: {\n defaultValue: false\n },\n sun_angle: {\n defaultValue: 1.5707964\n },\n solar_power_density: {\n defaultValue: 2000\n },\n solar_ray_count: {\n defaultValue: 24\n },\n solar_ray_speed: {\n defaultValue: 0.1\n },\n photon_emission_interval: {\n defaultValue: 20\n }\n },\n\n viewOptions: {\n showClock: {\n defaultValue: true,\n propertyChangeInvalidates: false\n },\n controlButtons: {\n defaultValue: \"play_reset\",\n propertyChangeInvalidates: false\n },\n controlButtonStyle: {\n defaultValue: \"video\",\n propertyChangeInvalidates: false,\n serialize: false\n },\n color_palette_type: {\n defaultValue: 0\n },\n velocity: {\n defaultValue: false\n },\n minimum_temperature: {\n defaultValue: 0\n },\n maximum_temperature: {\n defaultValue: 40.0\n },\n enableKeyboardHandlers: {\n defaultValue: true\n }\n },\n\n part: {\n shapeType: {\n // Available options: \"rectangle\", \"ellipse\", \"ring\" or \"polygon\".\n required: true,\n immutable: true\n },\n x: {\n defaultValue: 0\n },\n y: {\n defaultValue: 0\n },\n width: {},\n height: {},\n a: {},\n b: {},\n inner: {},\n outer: {},\n vertices: {},\n\n // Special shortcut properties which let user access polygon properties\n // faster and more convenient. They can be used both to get and set\n // value. They are not serialized.\n raw_x_coords: {\n serialize: false\n },\n raw_y_coords: {\n serialize: false\n },\n\n thermal_conductivity: {\n defaultValue: 1\n },\n specific_heat: {\n defaultValue: 1300\n },\n density: {\n defaultValue: 25\n },\n transmission: {\n defaultValue: 0\n },\n reflection: {\n defaultValue: 0\n },\n absorption: {\n defaultValue: 1\n },\n emissivity: {\n defaultValue: 0\n },\n temperature: {\n defaultValue: 0\n },\n constant_temperature: {\n defaultValue: false\n },\n power: {\n defaultValue: 0\n },\n wind_speed: {\n defaultValue: 0\n },\n wind_angle: {\n defaultValue: 0\n },\n visible: {\n defaultValue: true\n },\n filled: {\n defaultValue: true\n },\n color: {\n // Auto color means that part will use color matching its power or temperature\n // (when it has constant temperature) or gray color otherwise.\n defaultValue: \"auto\"\n },\n label: {\n defaultValue: \"\"\n },\n texture: {\n defaultValue: false\n },\n draggable: {\n defaultValue: true\n }\n },\n\n sensor: {\n type: {\n required: true,\n immutable: true\n },\n x: {\n required: true,\n unitType: \"length\"\n },\n y: {\n required: true,\n unitType: \"length\"\n },\n angle: {\n // Optional, defined only for heat flux sensors.\n immutable: true\n },\n label: {\n defaultValue: \"\"\n },\n value: {\n readOnly: true,\n serialize: false\n }\n }\n};\n"," \nimport arrays from 'arrays';\n\nvar RELAXATION_STEPS = 5;\n\nexport const makeHeatSolver = function(model) { var\n // Basic simulation parameters.\n props = model.getModelOptions(),\n nx = props.grid_width,\n ny = props.grid_height,\n\n relaxationSteps = RELAXATION_STEPS,\n\n // Simulation arrays provided by model.\n conductivity = model.getConductivityArray(),\n capacity = model.getCapacityArray(),\n density = model.getDensityArray(),\n u = model.getUVelocityArray(),\n v = model.getVVelocityArray(),\n tb = model.getBoundaryTemperatureArray(),\n fluidity = model.getFluidityArray(),\n\n // Internal array that stores the previous temperature results.\n t0 = arrays.create(nx * ny, 0, model.getArrayType()),\n\n // Convenience variables.\n nx1 = nx - 1,\n ny1 = ny - 1,\n nx2 = nx - 2,\n ny2 = ny - 2,\n\n deltaX = props.model_width / props.grid_width,\n deltaY = props.model_height / props.grid_height,\n\n //\n // Private methods\n //\n\n applyBoundary = function(t) {\n var boundary = props.boundary, vN = boundary.upper, vS = boundary.lower,\n vW = boundary.left,\n vE = boundary.right,\n i, j, inx, inx_ny1;\n\n if (boundary.type === \"temperature\") {\n for (i = 0; i < nx; i += 1) {\n inx = i * nx;\n t[inx] = vN;\n t[inx + ny1] = vS;\n }\n for (j = 0; j < ny; j += 1) {\n t[j] = vW;\n t[nx1 * nx + j] = vE;\n }\n } else if (boundary.type === \"flux\") {\n for (i = 0; i < nx; i += 1) {\n inx = i * nx;\n inx_ny1 = inx + ny1;\n t[inx] = t[inx + 1] + vN * deltaY / conductivity[inx];\n t[inx_ny1] = t[inx + ny2] - vS * deltaY / conductivity[inx_ny1];\n }\n for (j = 0; j < ny; j += 1) {\n t[j] = t[nx + j] - vW * deltaX / conductivity[j];\n t[nx1 * nx + j] = t[nx2 * nx + j] + vE * deltaX / conductivity[nx1 * nx + j];\n }\n }\n },\n\n macCormack = function(t) {\n var\n timeStep = props.timeStep,\n tx = 0.5 * timeStep / deltaX,\n ty = 0.5 * timeStep / deltaY,\n i, j, inx, jinx, jinx_plus_nx, jinx_minus_nx, jinx_plus_1, jinx_minus_1;\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n if (fluidity[jinx]) {\n t0[jinx] = t[jinx] - tx * (u[jinx_plus_nx] * t[jinx_plus_nx] - u[jinx_minus_nx] * t[jinx_minus_nx]) - ty * (v[jinx_plus_1] * t[jinx_plus_1] - v[jinx_minus_1] * t[jinx_minus_1]);\n }\n }\n }\n applyBoundary(t0);\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n t[jinx] = 0.5 * (t[jinx] + t0[jinx]) - 0.5 * tx * u[jinx] * (t0[jinx_plus_nx] - t0[jinx_minus_nx]) - 0.5 * ty * v[jinx] * (t0[jinx_plus_1] - t0[jinx_minus_1]);\n }\n }\n }\n applyBoundary(t);\n };\n\n return {\n solve: function(convective, t, q) {\n var\n timeStep = props.timeStep,\n hx = 0.5 / (deltaX * deltaX),\n hy = 0.5 / (deltaY * deltaY),\n invTimeStep = 1.0 / timeStep,\n rij, sij, axij, bxij, ayij, byij,\n k, i, j, inx, jinx, jinx_plus_nx, jinx_minus_nx, jinx_plus_1, jinx_minus_1;\n\n arrays.copy(t, t0);\n\n for (k = 0; k < relaxationSteps; k += 1) {\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (isNaN(tb[jinx])) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n sij = capacity[jinx] * density[jinx] * invTimeStep;\n rij = conductivity[jinx];\n axij = hx * (rij + conductivity[jinx_minus_nx]);\n bxij = hx * (rij + conductivity[jinx_plus_nx]);\n ayij = hy * (rij + conductivity[jinx_minus_1]);\n byij = hy * (rij + conductivity[jinx_plus_1]);\n t[jinx] = (t0[jinx] * sij + q[jinx] + axij * t[jinx_minus_nx] + bxij * t[jinx_plus_nx] + ayij * t[jinx_minus_1] + byij * t[jinx_plus_1]) / (sij + axij + bxij + ayij + byij);\n } else {\n t[jinx] = tb[jinx];\n }\n }\n }\n applyBoundary(t);\n }\n if (convective) {\n // advect(t)\n macCormack(t);\n }\n }\n };\n};\n","/*jslint indent: 2, browser: true, newcap: true */ \n// Simple wrapper around WebGL textures that supports render-to-texture.\n//\n// The arguments `width` and `height` give the size of the texture in texels.\n// WebGL texture dimensions must be powers of two unless `filter` is set to\n// either `gl.NEAREST` or `gl.REPEAT` and `wrap` is set to `gl.CLAMP_TO_EDGE`\n// (which they are by default).\n//\n// Texture parameters can be passed in via the `options` argument.\n// Example usage:\n//\n// var t = new Texture(256, 256, {\n// // Defaults to gl.LINEAR, set both at once with \"filter\"\n// mag_filter: gl.NEAREST,\n// min_filter: gl.LINEAR,\n//\n// // Defaults to gl.CLAMP_TO_EDGE, set both at once with \"wrap\"\n// wrap_s: gl.REPEAT,\n// wrap_t: gl.REPEAT,\n//\n// format: gl.RGB, // Defaults to gl.RGBA\n// type: gl.FLOAT // Defaults to gl.UNSIGNED_BYTE\n// });\n\nimport context from 'models/energy2d/gpu/context';\n\nvar\n// Dependencies.\n \n\n // WebGL context.\n gl,\n\n // Class to be exported.\n Texture;\n\nTexture = function(width, height, options) {\n gl = context.getWebGLContext();\n options = options || {};\n // Basic texture params.\n this.id = gl.createTexture();\n this.width = width;\n this.height = height;\n this.format = options.format || gl.RGBA;\n this.type = options.type || gl.UNSIGNED_BYTE;\n // Number of texture unit which contains this texture (if any).\n this.tex_unit = null;\n // Render target params.\n this.fbo = null;\n\n // Set parameters.\n gl.bindTexture(gl.TEXTURE_2D, this.id);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, options.mag_filter || options.filter || gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, options.min_filter || options.filter || gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, options.wrap || options.wrap_s || gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, options.wrap || options.wrap_t || gl.CLAMP_TO_EDGE);\n gl.texImage2D(gl.TEXTURE_2D, 0, this.format, width, height, 0, this.format, this.type, null);\n};\n\n// Set texture as render target.\n// After this call user can render to texture.\nTexture.prototype.setAsRenderTarget = function() {\n if (this.fbo === null) {\n // FBO initialization during first call.\n this.fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.fbo);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.id, 0);\n gl.viewport(0, 0, this.width, this.height);\n } else {\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.fbo);\n gl.viewport(0, 0, this.width, this.height);\n }\n};\n\n// Bind this texture to the given texture unit (0-7, defaults to 0).\nTexture.prototype.bind = function(unit) {\n this.tex_unit = unit || 0;\n gl.activeTexture(gl.TEXTURE0 + this.tex_unit);\n gl.bindTexture(gl.TEXTURE_2D, this.id);\n};\n\n// Unbind this texture.\nTexture.prototype.unbind = function(unit) {\n if (this.tex_unit === null) {\n return;\n }\n gl.activeTexture(gl.TEXTURE0 + this.tex_unit);\n gl.bindTexture(gl.TEXTURE_2D, null);\n this.tex_unit = null;\n};\n\n// Render all draw calls in `callback` to this texture. It also temporarily\n// changes the viewport to the size of the texture.\nTexture.prototype.drawTo = function(callback) {\n if (this.fbo === null) {\n throw new Error(\"Texture: call setupAsRenderTarget() method first.\");\n }\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.fbo);\n gl.viewport(0, 0, this.width, this.height);\n\n callback();\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n};\n\n// Switch this texture with 'other', useful for the ping-pong rendering\n// technique used in multi-stage rendering.\n// Textures should have identical dimensions, types and in general - parameters.\n// Only ID, FBO and active texture unit values are swapped.\nTexture.prototype.swapWith = function(other) {\n var temp;\n // Swap ID.\n temp = other.id;\n other.id = this.id;\n this.id = temp;\n // Swap active texture unit.\n temp = other.tex_unit;\n other.tex_unit = this.tex_unit;\n this.tex_unit = temp;\n // Swap FBO.\n temp = other.fbo;\n other.fbo = this.fbo;\n this.fbo = temp;\n};\n\n// Export constructor function.\nexport default Texture;\n"," /*jslint indent: 2, browser: true, newcap: true, es5: true */ \n// Represents a collection of vertex buffers and index buffers. Each vertex\n// buffer maps to one attribute in GLSL and has a corresponding property set\n// on the Mesh instance. There is one vertex buffer by default: `vertices`,\n// which maps to `gl_Vertex`. The `coords`, `normals`, and `colors` vertex\n// buffers map to `gl_TexCoord`, `gl_Normal`, and `gl_Color` respectively,\n// and can be enabled by setting the corresponding options to true. There are\n// two index buffers, `triangles` and `lines`, which are used for rendering\n// `gl.TRIANGLES` and `gl.LINES`, respectively. Only `triangles` is enabled by\n// default, although `computeWireframe()` will add a normal buffer if it wasn't\n// initially enabled.\n\nimport context from 'models/energy2d/gpu/context';\n\nvar\n// Dependencies.\n \n\n // The internal `gl` variable holds the current WebGL context.\n gl,\n\n // Internal, private class.\n Buffer,\n // Class to be exported.\n Mesh;\n\n// Provides a simple method of uploading data to a GPU buffer. Example usage:\n//\n// var vertices = new GL.Buffer(gl.ARRAY_BUFFER, Float32Array);\n// var indices = new GL.Buffer(gl.ELEMENT_ARRAY_BUFFER, Uint16Array);\n// vertices.data = [[0, 0, 0], [1, 0, 0], [0, 1, 0], [1, 1, 0]];\n// indices.data = [[0, 1, 2], [2, 1, 3]];\n// vertices.compile();\n// indices.compile();\nBuffer = function(target, type) {\n gl = context.getWebGLContext();\n this.buffer = null;\n this.target = target;\n this.type = type;\n this.data = [];\n};\n\n// Upload the contents of `data` to the GPU in preparation for rendering. The\n// data must be a list of lists where each inner list has the same length. For\n// example, each element of data for vertex normals would be a list of length three.\n// This will remember the data length and element length for later use by shaders.\n// The type can be either `gl.STATIC_DRAW` or `gl.DYNAMIC_DRAW`, and defaults to\n// `gl.STATIC_DRAW`.\n//\n// This could have used `[].concat.apply([], this.data)` to flatten\n// the array but Google Chrome has a maximum number of arguments so the\n// concatenations are chunked to avoid that limit.\nBuffer.prototype.compile = function(type) {\n var data = [],\n i, chunk, spacing;\n for (i = 0, chunk = 10000; i < this.data.length; i += chunk) {\n data = Array.prototype.concat.apply(data, this.data.slice(i, i + chunk));\n }\n spacing = this.data.length ? data.length / this.data.length : 0;\n if (spacing !== Math.round(spacing)) {\n throw new Error('Mesh: buffer elements not of consistent size, average size is ' + spacing);\n }\n this.buffer = this.buffer || gl.createBuffer();\n this.buffer.length = data.length;\n this.buffer.spacing = spacing;\n gl.bindBuffer(this.target, this.buffer);\n gl.bufferData(this.target, new this.type(data), type || gl.STATIC_DRAW);\n};\n\nMesh = function(options) {\n gl = context.getWebGLContext();\n options = options || {};\n this.vertexBuffers = {};\n this.indexBuffers = {};\n this.addVertexBuffer('vertices', 'gl_Vertex');\n if (options.coords) {\n this.addVertexBuffer('coords', 'gl_TexCoord');\n }\n if (options.normals) {\n this.addVertexBuffer('normals', 'gl_Normal');\n }\n if (options.colors) {\n this.addVertexBuffer('colors', 'gl_Color');\n }\n if (options.lines === undefined || options.triangles) {\n this.addIndexBuffer('triangles');\n }\n if (options.lines) {\n this.addIndexBuffer('lines');\n }\n};\n\n// Add a new vertex buffer with a list as a property called `name` on this object\n// and map it to the attribute called `attribute` in all shaders that draw this mesh.\nMesh.prototype.addVertexBuffer = function(name, attribute) {\n var buffer = this.vertexBuffers[attribute] = new Buffer(gl.ARRAY_BUFFER, Float32Array);\n buffer.name = name;\n this[name] = [];\n};\n\n// Add a new index buffer with a list as a property called `name` on this object.\nMesh.prototype.addIndexBuffer = function(name) {\n var buffer = this.indexBuffers[name] = new Buffer(gl.ELEMENT_ARRAY_BUFFER, Uint16Array);\n this[name] = [];\n};\n\n// Upload all attached buffers to the GPU in preparation for rendering. This\n// doesn't need to be called every frame, only needs to be done when the data\n// changes.\nMesh.prototype.compile = function() {\n var attribute, name, buffer;\n for (attribute in this.vertexBuffers) {\n if (this.vertexBuffers.hasOwnProperty(attribute)) {\n buffer = this.vertexBuffers[attribute];\n buffer.data = this[buffer.name];\n buffer.compile();\n }\n }\n\n for (name in this.indexBuffers) {\n if (this.indexBuffers.hasOwnProperty(name)) {\n buffer = this.indexBuffers[name];\n buffer.data = this[name];\n buffer.compile();\n }\n }\n};\n\n// Generates a square 2x2 mesh the xy plane centered at the origin. The\n// `options` argument specifies options to pass to the mesh constructor.\n// Additional options include `detailX` and `detailY`, which set the tesselation\n// in x and y, and `detail`, which sets both `detailX` and `detailY` at once.\n// Two triangles are generated by default.\n// Example usage:\n//\n// var mesh1 = GL.Mesh.plane();\n// var mesh2 = GL.Mesh.plane({ detail: 5 });\n// var mesh3 = GL.Mesh.plane({ detailX: 20, detailY: 40 });\n//\nMesh.plane = function(options) {\n var mesh, detailX, detailY, x, y, t, s, i;\n options = options || {};\n mesh = new Mesh(options);\n detailX = options.detailX || options.detail || 1;\n detailY = options.detailY || options.detail || 1;\n\n for (y = 0; y <= detailY; y += 1) {\n t = y / detailY;\n for (x = 0; x <= detailX; x += 1) {\n s = x / detailX;\n mesh.vertices.push([2 * s - 1, 2 * t - 1, 0]);\n if (mesh.coords) {\n mesh.coords.push([s, t]);\n }\n if (mesh.normals) {\n mesh.normals.push([0, 0, 1]);\n }\n if (x < detailX && y < detailY) {\n i = x + y * (detailX + 1);\n mesh.triangles.push([i, i + 1, i + detailX + 1]);\n mesh.triangles.push([i + detailX + 1, i + 1, i + detailX + 2]);\n }\n }\n }\n\n mesh.compile();\n return mesh;\n};\n\n// Export constructor function.\nexport default Mesh;\n"," /*jshint indent: 2, browser: true, newcap: true, multistr: true, es5: true */ \n// GPGPU Utils (singleton, one instance in the environment).\nimport context from 'models/energy2d/gpu/context';\nimport Texture from 'models/energy2d/gpu/texture';\nimport Shader from 'models/energy2d/gpu/shader';\nimport Mesh from 'models/energy2d/gpu/mesh';\n\nvar\n// Dependencies.\n \n \n \n \n\n // The internal `gl` variable holds the current WebGL context.\n gl,\n\n // GPGPU utils must know dimensions of data (grid).\n // This assumption that all the textures will have the same dimensions is\n // caused by performance reasons (helps avoiding recreating data structures).\n // To set grid dimensions and initialize WebGL context, call init(grid_width, grid_height).\n grid_width,\n grid_height,\n\n // Texture used as a temporary storage (Float, RGBA).\n temp_texture,\n // Texture used for Float to RGBA conversion (Unsigned Byte, RGBA).\n output_texture,\n // Array (Float32Array) used as temporal storage during writing RGBA textures.\n temp_storage,\n // Mesh used for rendering.\n plane,\n\n // Flag which determines if synchronization is allowed or not.\n sync_allowed = false,\n\n // Flag which determines if WebGL context and necessary objects are initialized.\n WebGL_initialized = false,\n\n // Special shader for encoding floats based on:\n // https://github.com/cscheid/facet/blob/master/src/shade/bits/encode_float.js\n encode_program,\n copy_program,\n\n // GLSL sources.\n basic_vertex_shader =\n '\\\n varying vec2 coord;\\\n void main() {\\\n coord = gl_Vertex.xy * 0.5 + 0.5;\\\n gl_Position = vec4(gl_Vertex.xyz, 1.0);\\\n }',\n\n encode_fragment_shader =\n '\\\n uniform sampler2D texture;\\\n uniform float channel;\\\n varying vec2 coord;\\\n float shift_right(float v, float amt) {\\\n v = floor(v) + 0.5;\\\n return floor(v / exp2(amt));\\\n }\\\n float shift_left(float v, float amt) {\\\n return floor(v * exp2(amt) + 0.5);\\\n }\\\n \\\n float mask_last(float v, float bits) {\\\n return mod(v, shift_left(1.0, bits));\\\n }\\\n float extract_bits(float num, float from, float to) {\\\n from = floor(from + 0.5);\\\n to = floor(to + 0.5);\\\n return mask_last(shift_right(num, from), to - from);\\\n }\\\n vec4 encode_float(float val) {\\\n if (val == 0.0)\\\n return vec4(0, 0, 0, 0);\\\n float sign = val > 0.0 ? 0.0 : 1.0;\\\n val = abs(val);\\\n float exponent = floor(log2(val));\\\n float biased_exponent = exponent + 127.0;\\\n float fraction = ((val / exp2(exponent)) - 1.0) * 8388608.0;\\\n \\\n float t = biased_exponent / 2.0;\\\n float last_bit_of_biased_exponent = fract(t) * 2.0;\\\n float remaining_bits_of_biased_exponent = floor(t);\\\n \\\n float byte4 = extract_bits(fraction, 0.0, 8.0) / 255.0;\\\n float byte3 = extract_bits(fraction, 8.0, 16.0) / 255.0;\\\n float byte2 = (last_bit_of_biased_exponent * 128.0 + extract_bits(fraction, 16.0, 23.0)) / 255.0;\\\n float byte1 = (sign * 128.0 + remaining_bits_of_biased_exponent) / 255.0;\\\n return vec4(byte4, byte3, byte2, byte1);\\\n }\\\n void main() {\\\n vec4 data = texture2D(texture, coord);\\\n if (channel == 0.0)\\\n gl_FragColor = encode_float(data.r);\\\n else if (channel == 1.0)\\\n gl_FragColor = encode_float(data.g);\\\n else if (channel == 2.0)\\\n gl_FragColor = encode_float(data.b);\\\n else\\\n gl_FragColor = encode_float(data.a);\\\n }',\n\n copy_fragment_shader =\n '\\\n uniform sampler2D texture;\\\n varying vec2 coord;\\\n void main() {\\\n gl_FragColor = texture2D(texture, coord);\\\n }',\n\n // Common error messages.\n INIT_ERR = 'GPGPU: call init(grid_width, grid_height) with proper dimensions first!',\n\n // Features and extensions. Their availability will be updated during initialization.\n feature = {\n 'WebGLContext': {\n required: true,\n available: false\n },\n 'OES_texture_float': {\n required: true,\n available: false\n },\n 'FLOAT texture as render target': {\n required: true,\n available: false\n },\n 'OES_texture_float_linear': {\n required: false,\n available: false\n }\n },\n\n //\n // Private methods.\n //\n initWebGL = function() {\n // Setup WebGL context.\n gl = context.getWebGLContext();\n if (gl) {\n feature['WebGLContext'].available = true;\n } else {\n feature['WebGLContext'].available = false;\n throw new Error(\"GPGPU: WebGL is not supported!\");\n }\n\n // Check if OES_texture_float is available.\n if (gl.getExtension('OES_texture_float')) {\n feature['OES_texture_float'].available = true;\n } else {\n feature['OES_texture_float'].available = false;\n throw new Error(\"GPGPU: OES_texture_float is not supported!\");\n }\n\n // Optional extension check.\n if (gl.getExtension('OES_texture_float_linear')) {\n feature['OES_texture_float_linear'].available = true;\n } else {\n feature['OES_texture_float_linear'].available = false;\n console.warn(\"GPGPU: OES_texture_float_linear is not supported. Renering quality will be affected.\");\n }\n\n // Check if rendering to FLOAT textures is supported.\n temp_texture = new Texture(1, 1, {\n type: gl.FLOAT,\n format: gl.RGBA,\n filter: feature['OES_texture_float_linear'].available ? gl.LINEAR : gl.NEAREST\n });\n temp_texture.setAsRenderTarget();\n if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE) {\n feature['FLOAT texture as render target'].available = true;\n } else {\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n feature['FLOAT texture as render target'].available = false;\n throw new Error(\"GPGPU: FLOAT texture as render target is not supported!\");\n }\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n // Configure WebGL context and create necessary objects and structures.\n gl.disable(gl.DEPTH_TEST);\n plane = Mesh.plane();\n encode_program = new Shader(basic_vertex_shader, encode_fragment_shader);\n copy_program = new Shader(basic_vertex_shader, copy_fragment_shader);\n // Initialization successful.\n WebGL_initialized = true;\n },\n\n packRGBAData = function(R, G, B, A, storage) {\n var i, i4, len;\n\n if (R.length !== G.length || R.length !== B.length || R.length !== A.length ||\n storage.length !== R.length * 4) {\n throw new Error(\"GPGPU: Invalid input data length.\");\n }\n for (i = 0, len = R.length; i < len; i += 1) {\n i4 = i * 4;\n storage[i4] = R[i];\n storage[i4 + 1] = G[i];\n storage[i4 + 2] = B[i];\n storage[i4 + 3] = A[i];\n }\n };\n\n//\n// Public API.\n//\nexport default {\n // Setups rendering context (only during first call) and necessary storage (texture, array).\n init: function(width, height) {\n var filter;\n\n if (!WebGL_initialized) {\n initWebGL();\n }\n // Set dimensions.\n grid_width = width;\n grid_height = height;\n\n filter = feature['OES_texture_float_linear'].available ? gl.LINEAR : gl.NEAREST;\n\n // Setup storage for given dimensions.\n temp_texture = new Texture(grid_width, grid_height, {\n type: gl.FLOAT,\n format: gl.RGBA,\n filter: filter\n });\n output_texture = new Texture(grid_width, grid_height, {\n type: gl.UNSIGNED_BYTE,\n format: gl.RGBA,\n filter: filter\n });\n temp_storage = new Float32Array(grid_width * grid_height * 4);\n },\n\n get featuresInfo() {\n if (!WebGL_initialized) {\n try {\n // While testing features / extensions, we don't want to throw\n // exceptions.\n initWebGL();\n } catch (e) {}\n }\n return feature;\n },\n\n getWebGLContext: function() {\n if (gl === undefined) {\n initWebGL();\n }\n return gl;\n },\n\n // Creates a floating point texture with proper parameters.\n createTexture: function() {\n if (!grid_width || !grid_height) {\n return new Error(INIT_ERR);\n }\n // Use RGBA format as this is the safest option. Single channel textures aren't well supported\n // as render targets attached to FBO.\n return new Texture(grid_width, grid_height, {\n type: gl.FLOAT,\n format: gl.RGBA,\n filter: feature['OES_texture_float_linear'].available ? gl.LINEAR : gl.NEAREST\n });\n },\n\n // Convert given array to the RGBA FLoat32Array (which can be used\n // in the writeTexture function) and fill one of its channel.\n // Channel should be between 0 and 3, where 0 = R, 1 = G, 2 = B and 3 = A.\n convertToRGBA: function(data, channel, output) {\n var rgba, i, len, i4;\n\n if (data.length !== grid_width * grid_height) {\n throw new Error(\"GPGPU: Invalid input data length.\");\n }\n\n if (output === undefined) {\n rgba = new Float32Array(data.length * 4);\n } else {\n rgba = output;\n }\n\n if (channel === undefined) {\n channel = 0;\n }\n\n // Fill RGBA array.\n for (i = 0, len = data.length; i < len; i += 1) {\n i4 = i * 4;\n rgba[i4] = rgba[i4 + 1] = rgba[i4 + 2] = rgba[i4 + 3] = 0;\n rgba[i4 + channel] = data[i];\n }\n\n return rgba;\n },\n\n // Write a texture.\n writeTexture: function(tex, input) {\n var rgba = this.convertToRGBA(input, 0, temp_storage);\n // Make sure that texture is bound.\n gl.bindTexture(gl.TEXTURE_2D, tex.id);\n gl.texImage2D(gl.TEXTURE_2D, 0, tex.format, tex.width, tex.height, 0, tex.format, tex.type, rgba);\n },\n\n writeRGBATexture: function(tex, R, G, B, A) {\n packRGBAData(R, G, B, A, temp_storage);\n // Make sure that texture is bound.\n gl.bindTexture(gl.TEXTURE_2D, tex.id);\n gl.texImage2D(gl.TEXTURE_2D, 0, tex.format, tex.width, tex.height, 0, tex.format, tex.type, temp_storage);\n },\n\n // Read a floating point texture.\n // Returns Float32Array.\n readTexture: function(tex, output, channel) {\n var output_storage;\n if (!gl || tex.width !== grid_width || tex.height !== grid_height) {\n return new Error(INIT_ERR);\n }\n if (channel === undefined) {\n channel = 0;\n }\n // Use buffer of provided ouput array. So, when result is written there,\n // output is automaticaly updated in a right way.\n output_storage = new Uint8Array(output.buffer);\n\n tex.bind();\n output_texture.setAsRenderTarget();\n encode_program.uniforms({\n channel: channel\n });\n encode_program.draw(plane);\n // format: gl.RGBA, type: gl.UNSIGNED_BYTE - only this set is accepted by WebGL readPixels.\n gl.readPixels(0, 0, output_texture.width, output_texture.height, output_texture.format, output_texture.type, output_storage);\n },\n\n copyTexture: function(src_tex, dst_tex) {\n src_tex.bind();\n dst_tex.setAsRenderTarget();\n copy_program.draw(plane);\n },\n\n // Execute a GLSL program.\n // Arguments:\n // - program - GL.Shader\n // - textures - array of GL.Texture\n // - output - output texture\n executeProgram: function(program, textures, output) {\n var i, len;\n // Bind textures for reading.\n for (i = 0, len = textures.length; i < len; i += 1) {\n textures[i].bind(i);\n }\n // Use temp texture as writing and reading from the same texture is impossible.\n temp_texture.setAsRenderTarget();\n // Draw simple plane (coordinates x/y from -1 to 1 to cover whole viewport).\n program.draw(plane);\n // Unbind textures.\n for (i = 0, len = textures.length; i < len; i += 1) {\n textures[i].unbind(i);\n }\n output.swapWith(temp_texture);\n },\n\n // Synchronization can be useful for debugging.\n setSynchronizationAllowed: function(b) {\n sync_allowed = b;\n },\n\n // Block until all GL execution is complete if synchronization is allowed.\n tryFinish: function() {\n if (sync_allowed) {\n gl.finish();\n }\n }\n};\n","export default \"varying vec2 coord;\\n\\nvoid main() {\\n coord = gl_Vertex.xy * 0.5 + 0.5;\\n gl_Position = vec4(gl_Vertex.xy, 0.0, 1.0);\\n}\\n\";"," import Shader from 'models/energy2d/gpu/shader';\nimport gpgpu from 'models/energy2d/gpu/gpgpu';\nimport basic_vs from 'models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/basic.vs.glsl';\nimport solver_fs from 'models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/solver.fs.glsl';\nimport force_flux_t_fs from 'models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/force-flux-t.fs.glsl';\nimport t_to_t0 from 'models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/t-to-t0.fs.glsl';\nimport maccormack_step1_fs from 'models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/maccormack-step1.fs.glsl';\nimport maccormack_step2_fs from 'models/energy2d/models/physics-solvers-gpu/heat-solver-glsl/maccormack-step2.fs.glsl';\n\nvar\n// Dependencies. \n // GPGPU utilities. It's a singleton instance.\n // It should have been previously initialized by core-model.\n \n // Shader sources.\n \n \n \n \n \n \n \n\n RELAXATION_STEPS = 10;\n\nexport const makeHeatSolverGPU = function(model) {\n var\n // ========================================================================\n // GLSL Shaders:\n // - Main solver.\n solver_program = new Shader(basic_vs, solver_fs),\n // - Force flux boundary (for T).\n force_flux_t_program = new Shader(basic_vs, force_flux_t_fs),\n // - Force flux boundary (for T0).\n force_flux_t0_program = new Shader(basic_vs, force_flux_t0_fs),\n // - Copy single channel of texture (t to t0).\n t_to_t0_program = new Shader(basic_vs, t_to_t0),\n // - MacCormack advection step 1.\n maccormack_step1_program = new Shader(basic_vs, maccormack_step1_fs),\n // - MacCormack advection step 2.\n maccormack_step2_program = new Shader(basic_vs, maccormack_step2_fs),\n // ========================================================================\n\n // Basic simulation parameters.\n props = model.getModelOptions(),\n nx = props.grid_width,\n ny = props.grid_height,\n\n timeStep = props.timeStep,\n boundary = props.boundary,\n\n delta_x = props.model_width / props.grid_width,\n delta_y = props.model_height / props.grid_height,\n\n relaxation_steps = RELAXATION_STEPS,\n\n // Simulation textures provided by model.\n // texture 0:\n // - R: t\n // - G: t0\n // - B: tb\n // - A: conductivity\n data0_tex = model.getSimulationTexture(0),\n // texture 1:\n // - R: q\n // - G: capacity\n // - B: density\n // - A: fluidity\n data1_tex = model.getSimulationTexture(1),\n // texture 2:\n // - R: u\n // - G: v\n // - B: u0\n // - A: v0\n data2_tex = model.getSimulationTexture(2),\n\n // Convenience variables.\n data_0_1_2_array = [data0_tex, data1_tex, data2_tex],\n data_0_1_array = [data0_tex, data1_tex],\n data_0_array = [data0_tex],\n grid_vec = [1 / ny, 1 / nx],\n\n init = function() {\n var uniforms;\n\n // Solver program uniforms.\n uniforms = {\n // Texture units.\n data0_tex: 0,\n data1_tex: 1,\n // Uniforms.\n grid: grid_vec,\n enforce_temp: 0.0,\n hx: 0.5 / (delta_x * delta_x),\n hy: 0.5 / (delta_y * delta_y),\n inv_timeStep: 1.0 / timeStep\n };\n solver_program.uniforms(uniforms);\n\n // MacCormack step 1 program uniforms.\n uniforms = {\n // Texture units.\n data0_tex: 0,\n data1_tex: 1,\n data2_tex: 2,\n // Uniforms.\n grid: grid_vec,\n enforce_temp: 0.0,\n tx: 0.5 * timeStep / delta_x,\n ty: 0.5 * timeStep / delta_y\n };\n maccormack_step1_program.uniforms(uniforms);\n maccormack_step2_program.uniforms(uniforms);\n\n if (boundary.type === \"temperature\") {\n uniforms = {\n // Additional uniforms.\n enforce_temp: 1.0,\n vN: boundary.upper,\n vS: boundary.lower,\n vW: boundary.left,\n vE: boundary.right\n };\n // Integrate boundary conditions with other programs.\n // This is optimization that allows to limit render-to-texture calls.\n solver_program.uniforms(uniforms);\n maccormack_step1_program.uniforms(uniforms);\n maccormack_step2_program.uniforms(uniforms);\n } else if (boundary.type === \"flux\") {\n uniforms = {\n // Texture units.\n data0_tex: 0,\n // Uniforms.\n grid: grid_vec,\n vN: boundary.upper,\n vS: boundary.lower,\n vW: boundary.left,\n vE: boundary.right,\n delta_x: delta_x,\n delta_y: delta_y\n };\n // Flux boundary conditions can't be integrated into solver program,\n // so use separate GLSL programs.\n force_flux_t_program.uniforms(uniforms);\n force_flux_t0_program.uniforms(uniforms);\n }\n },\n\n macCormack = function() {\n // MacCormack step 1.\n gpgpu.executeProgram(\n maccormack_step1_program,\n data_0_1_2_array,\n data0_tex\n );\n if (boundary.type === \"flux\") {\n // Additional program for boundary conditions\n // is required only for \"flux at border\" option.\n // If \"temperature at border\" is used, boundary\n // conditions are enforced by the MacCormack program.\n gpgpu.executeProgram(\n force_flux_t0_program,\n data_0_array,\n data0_tex\n );\n }\n // MacCormack step 2.\n gpgpu.executeProgram(\n maccormack_step2_program,\n data_0_1_2_array,\n data0_tex\n );\n if (boundary.type === \"flux\") {\n // Additional program for boundary conditions\n // is required only for \"flux at border\" option.\n // If \"temperature at border\" is used, boundary\n // conditions are enforced by the MacCormack program.\n gpgpu.executeProgram(\n force_flux_t_program,\n data_0_array,\n data0_tex\n );\n }\n },\n\n heat_solver_gpu = {\n solve: function(convective) {\n var k;\n // Store previous values of t in t0.\n gpgpu.executeProgram(\n t_to_t0_program,\n data_0_array,\n data0_tex\n );\n for (k = 0; k < relaxation_steps; k += 1) {\n gpgpu.executeProgram(\n solver_program,\n data_0_1_array,\n data0_tex\n );\n if (boundary.type === \"flux\") {\n // Additional program for boundary conditions\n // is required only for \"flux at border\" option.\n // If \"temperature at border\" is used, boundary\n // conditions are enforced by the solver program.\n gpgpu.executeProgram(\n force_flux_t_program,\n data_0_array,\n data0_tex\n );\n }\n }\n if (convective) {\n macCormack();\n }\n }\n };\n // One-off initialization.\n init();\n return heat_solver_gpu;\n};\n","export default \"// texture 0:\\n// - R: t\\n// - G: t0\\n// - B: tb\\n// - A: conductivity\\nuniform sampler2D data0_tex;\\n// texture 1:\\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n\\nuniform vec2 grid;\\nuniform float hx;\\nuniform float hy;\\nuniform float inv_timeStep;\\n\\n// Boundary conditions uniforms\\nuniform float enforce_temp;\\nuniform float vN;\\nuniform float vS;\\nuniform float vW;\\nuniform float vE;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data0 = texture2D(data0_tex, coord);\\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y) {\\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n float tb = data0.b;\\n // Check if tb is NaN. isnan() function is not available\\n // in OpenGL ES GLSL, so use some tricks. IEEE 754 spec defines\\n // that NaN != NaN, however this seems to not work on Windows.\\n // So, also check if the value is outside [-3.4e38, 3.4e38] (3.4e38\\n // is close to 32Float max value), as such values are not expected.\\n if (tb != tb || tb < -3.4e38 || tb > 3.4e38) {\\n vec4 data1 = texture2D(data1_tex, coord);\\n vec4 data0_m_dy = texture2D(data0_tex, coord - dy);\\n vec4 data0_p_dy = texture2D(data0_tex, coord + dy);\\n vec4 data0_m_dx = texture2D(data0_tex, coord - dx);\\n vec4 data0_p_dx = texture2D(data0_tex, coord + dx);\\n float sij = data1.g * data1.b * inv_timeStep;\\n float rij = data0.a;\\n float axij = hx * (rij + data0_m_dy.a);\\n float bxij = hx * (rij + data0_p_dy.a);\\n float ayij = hy * (rij + data0_m_dx.a);\\n float byij = hy * (rij + data0_p_dx.a);\\n data0.r = (data0.g * sij + data1.r\\n + axij * data0_m_dy.r\\n + bxij * data0_p_dy.r\\n + ayij * data0_m_dx.r\\n + byij * data0_p_dx.r)\\n / (sij + axij + bxij + ayij + byij);\\n } else {\\n data0.r = tb;\\n }\\n } else if (enforce_temp == 1.0) {\\n // \\\"temperature at border\\\" boundary conditions are\\n // integrated into this shader.\\n if (coord.x < grid.x) {\\n data0.r = vN;\\n } else if (coord.x > 1.0 - grid.x) {\\n data0.r = vS;\\n } else if (coord.y < grid.y) {\\n data0.r = vW;\\n } else if (coord.y > 1.0 - grid.y) {\\n data0.r = vE;\\n }\\n }\\n gl_FragColor = data0;\\n}\\n\";","export default \"// texture 0: \\n// - R: t\\n// - G: t0\\n// - B: tb\\n// - A: conductivity\\nuniform sampler2D data0_tex;\\n\\nuniform vec2 grid;\\nuniform float vN;\\nuniform float vS;\\nuniform float vW;\\nuniform float vE;\\nuniform float delta_x;\\nuniform float delta_y;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data0 = texture2D(data0_tex, coord);\\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n if (coord.x < grid.x) {\\n data0.r = texture2D(data0_tex, coord + dx).r\\n + vN * delta_y / data0.a;\\n } else if (coord.x > 1.0 - grid.x) {\\n data0.r = texture2D(data0_tex, coord - dx).r\\n - vS * delta_y / data0.a;\\n } else if (coord.y < grid.y) {\\n data0.r = texture2D(data0_tex, coord + dy).r\\n - vW * delta_x / data0.a;\\n } else if (coord.y > 1.0 - grid.y) {\\n data0.r = texture2D(data0_tex, coord - dy).r\\n + vE * delta_x / data0.a;\\n }\\n gl_FragColor = data0;\\n}\\n\";","export default \"// texture 0: \\n// - R: t\\n// - G: t0\\n// - B: tb\\n// - A: conductivity\\nuniform sampler2D data0_tex;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n\\tvec4 data0 = texture2D(data0_tex, coord);\\n\\tdata0.g = data0.r;\\n\\tgl_FragColor = data0;\\n}\\n\";","export default \"// texture 0: \\n// - R: t\\n// - G: t0\\n// - B: tb\\n// - A: conductivity\\nuniform sampler2D data0_tex;\\n// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float tx;\\nuniform float ty;\\n\\n// Boundary conditions uniforms.\\nuniform float enforce_temp;\\nuniform float vN;\\nuniform float vS;\\nuniform float vW;\\nuniform float vE;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data0 = texture2D(data0_tex, coord);\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y) {\\n \\n float fluidity = texture2D(data1_tex, coord).a;\\n if (fluidity == 1.0) {\\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n\\n // Temperature.\\n float t_m_dy = texture2D(data0_tex, coord - dy).r;\\n float t_p_dy = texture2D(data0_tex, coord + dy).r;\\n float t_m_dx = texture2D(data0_tex, coord - dx).r;\\n float t_p_dx = texture2D(data0_tex, coord + dx).r;\\n // Velocity.\\n float u_m_dy = texture2D(data2_tex, coord - dy).r;\\n float u_p_dy = texture2D(data2_tex, coord + dy).r;\\n float v_m_dx = texture2D(data2_tex, coord - dx).g;\\n float v_p_dx = texture2D(data2_tex, coord + dx).g;\\n // Update T0.\\n data0.g = data0.r - tx * (u_p_dy * t_p_dy - u_m_dy * t_m_dy)\\n - ty * (v_p_dx * t_p_dx - v_m_dx * t_m_dx);\\n }\\n } else if (enforce_temp == 1.0) {\\n // \\\"temperature at border\\\" boundary conditions are\\n // integrated into this shader.\\n if (coord.x < grid.x) {\\n data0.g = vN;\\n } else if (coord.x > 1.0 - grid.x) {\\n data0.g = vS;\\n } else if (coord.y < grid.y) {\\n data0.g = vW;\\n } else if (coord.y > 1.0 - grid.y) {\\n data0.g = vE;\\n }\\n }\\n gl_FragColor = data0;\\n}\\n\";","export default \"// texture 0: \\n// - R: t\\n// - G: t0\\n// - B: tb\\n// - A: conductivity\\nuniform sampler2D data0_tex;\\n// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float tx;\\nuniform float ty;\\n\\n// Boundary conditions uniforms.\\nuniform float enforce_temp;\\nuniform float vN;\\nuniform float vS;\\nuniform float vW;\\nuniform float vE;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data0 = texture2D(data0_tex, coord);\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y) {\\n \\n float fluidity = texture2D(data1_tex, coord).a;\\n if (fluidity == 1.0) {\\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n\\n // Temperature t0.\\n float t0_m_dy = texture2D(data0_tex, coord - dy).g;\\n float t0_p_dy = texture2D(data0_tex, coord + dy).g;\\n float t0_m_dx = texture2D(data0_tex, coord - dx).g;\\n float t0_p_dx = texture2D(data0_tex, coord + dx).g;\\n // Velocity.\\n float u = texture2D(data2_tex, coord).r;\\n float v = texture2D(data2_tex, coord).g;\\n // Update T.\\n data0.r = 0.5 * (data0.r + data0.g)\\n - 0.5 * tx * u * (t0_p_dy - t0_m_dy)\\n - 0.5 * ty * v * (t0_p_dx - t0_m_dx);\\n }\\n } else if (enforce_temp == 1.0) {\\n // \\\"temperature at border\\\" boundary conditions are\\n // integrated into this shader.\\n if (coord.x < grid.x) {\\n data0.r = vN;\\n } else if (coord.x > 1.0 - grid.x) {\\n data0.r = vS;\\n } else if (coord.y < grid.y) {\\n data0.r = vW;\\n } else if (coord.y > 1.0 - grid.y) {\\n data0.r = vE;\\n }\\n }\\n gl_FragColor = data0;\\n}\\n\";"," \nimport arrays from 'arrays';\n\nvar RELAXATION_STEPS = 5, GRAVITY = 0,\n\n BUOYANCY_AVERAGE_ALL = 0,\n BUOYANCY_AVERAGE_COLUMN = 1;\n\nexport const makeFluidSolver = function(model) {\n var\n // Basic simulation parameters.\n props = model.getModelOptions(),\n nx = props.grid_width,\n ny = props.grid_height,\n\n relaxationSteps = RELAXATION_STEPS,\n gravity = GRAVITY,\n\n // Simulation arrays provided by model.\n t = model.getTemperatureArray(),\n fluidity = model.getFluidityArray(),\n uWind = model.getUWindArray(),\n vWind = model.getVWindArray(),\n\n // Internal simulation arrays.\n array_type = model.getArrayType(),\n u0 = arrays.create(nx * ny, 0, array_type),\n v0 = arrays.create(nx * ny, 0, array_type),\n\n // Convenience variables.\n nx1 = nx - 1,\n ny1 = ny - 1,\n nx2 = nx - 2,\n ny2 = ny - 2,\n\n deltaX = props.model_width / props.grid_width,\n deltaY = props.model_height / props.grid_height,\n\n i2dx = 0.5 / deltaX,\n i2dy = 0.5 / deltaY,\n idxsq = 1.0 / (deltaX * deltaX),\n idysq = 1.0 / (deltaY * deltaY),\n\n //\n // Private methods\n //\n\n // b = 1 horizontal; b = 2 vertical\n applyBoundary = function(b, f) {\n var horizontal = b === 1, vertical = b === 2, nx1nx = nx1 * nx, nx2nx = nx2 * nx, i, j, inx, inx_plus1, inx_plus_ny1, inx_plus_ny2, nx_plusj;\n\n for (i = 1; i < nx1; i += 1) { inx = i * nx; inx_plus1 = inx + 1;\n inx_plus_ny1 = inx + ny1;\n inx_plus_ny2 = inx + ny2;\n // upper side\n f[inx] = vertical ? -f[inx_plus1] : f[inx_plus1];\n // lower side\n f[inx_plus_ny1] = vertical ? -f[inx_plus_ny2] : f[inx_plus_ny2];\n }\n for (j = 1; j < ny1; j += 1) {\n // left side\n nx_plusj = nx + j;\n f[j] = horizontal ? -f[nx_plusj] : f[nx_plusj];\n // right side\n f[nx1nx + j] = horizontal ? -f[nx2nx + j] : f[nx2nx + j];\n }\n\n // upper-left corner\n f[0] = 0.5 * (f[nx] + f[1]);\n // upper-right corner\n f[nx1nx] = 0.5 * (f[nx2nx] + f[nx1nx + 1]);\n // lower-left corner\n f[ny1] = 0.5 * (f[nx + ny1] + f[ny2]);\n // lower-right corner\n f[nx1nx + ny1] = 0.5 * (f[nx2nx + ny1] + f[nx1nx + ny2]);\n },\n\n setObstacleVelocity = function(u, v) {\n var\n count = 0,\n uw, vw,\n i, j, inx, jinx, jinx_plus_nx, jinx_minus_nx, jinx_plus_1, jinx_minus_1;\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n if (!fluidity[jinx]) {\n uw = uWind[jinx];\n vw = vWind[jinx];\n count = 0;\n if (fluidity[jinx_minus_nx]) { count += 1;\n u[jinx] = uw - u[jinx_minus_nx];\n v[jinx] = vw + v[jinx_minus_nx];\n } else if (fluidity[jinx_plus_nx]) {\n count += 1;\n u[jinx] = uw - u[jinx_plus_nx];\n v[jinx] = vw + v[jinx_plus_nx];\n }\n if (fluidity[jinx_minus_1]) {\n count += 1;\n u[jinx] = uw + u[jinx_minus_1];\n v[jinx] = vw - v[jinx_minus_1];\n } else if (fluidity[jinx_plus_1]) {\n count += 1;\n u[jinx] = uw + u[jinx_plus_1];\n v[jinx] = vw - v[jinx_plus_1];\n }\n if (count === 0) {\n u[jinx] = uw;\n v[jinx] = vw;\n }\n }\n }\n }\n },\n\n // ensure dx/dn = 0 at the boundary (the Neumann boundary condition)\n // float[][] x\n setObstacleBoundary = function(x) {\n var i, j, inx, jinx, jinx_plus_nx, jinx_minus_nx, jinx_plus_1, jinx_minus_1;\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (!fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n if (fluidity[jinx_minus_nx]) {\n x[jinx] = x[jinx_minus_nx];\n } else if (fluidity[jinx_plus_nx]) {\n x[jinx] = x[jinx_plus_nx];\n }\n if (fluidity[jinx_minus_1]) {\n x[jinx] = x[jinx_minus_1];\n } else if (fluidity[jinx_plus_1]) {\n x[jinx] = x[jinx_plus_1];\n }\n }\n }\n }\n },\n\n getMeanTemperature = function(i, j) {\n var\n lowerBound = 0,\n upperBound = ny,\n t0 = 0,\n k, inx_plus_k;\n\n // search for the upper bound\n for (k = j - 1; k > 0; k -= 1) {\n inx_plus_k = i * nx + k;\n if (!fluidity[inx_plus_k]) {\n lowerBound = k;\n break;\n }\n }\n\n for (k = j + 1; k < ny; k += 1) {\n inx_plus_k = i * nx + k;\n if (!fluidity[inx_plus_k]) {\n upperBound = k;\n break;\n }\n }\n\n for (k = lowerBound; k < upperBound; k += 1) {\n inx_plus_k = i * nx + k;\n t0 += t[inx_plus_k];\n }\n return t0 / (upperBound - lowerBound);\n },\n\n applyBuoyancy = function(f) {\n var\n g = gravity * props.timeStep,\n b = props.thermal_buoyancy * props.timeStep,\n t0,\n i, j, inx, jinx;\n\n switch (props.buoyancy_approximation) {\n case BUOYANCY_AVERAGE_ALL:\n t0 = (function(array) {\n // Returns average value of an array.\n var\n acc = 0,\n length = array.length,\n i;\n for (i = 0; i < length; i += 1) {\n acc += array[i];\n }\n return acc / length;\n }(t)); // Call with the temperature array.\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n f[jinx] += (g - b) * t[jinx] + b * t0;\n }\n }\n }\n break;\n case BUOYANCY_AVERAGE_COLUMN:\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n t0 = getMeanTemperature(i, j);\n f[jinx] += (g - b) * t[jinx] + b * t0;\n }\n }\n }\n break;\n }\n },\n\n conserve = function(u, v, phi, div) {\n var\n s = 0.5 / (idxsq + idysq),\n k, i, j, inx, jinx, jinx_plus_nx, jinx_minus_nx, jinx_plus_1, jinx_minus_1;\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n div[jinx] = (u[jinx_plus_nx] - u[jinx_minus_nx]) * i2dx + (v[jinx_plus_1] - v[jinx_minus_1]) * i2dy;\n phi[jinx] = 0;\n }\n }\n }\n applyBoundary(0, div);\n applyBoundary(0, phi);\n setObstacleBoundary(div);\n setObstacleBoundary(phi);\n\n for (k = 0; k < relaxationSteps; k += 1) {\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n phi[jinx] = s * ((phi[jinx_minus_nx] + phi[jinx_plus_nx]) * idxsq + (phi[jinx_minus_1] + phi[jinx_plus_1]) * idysq - div[jinx]);\n }\n }\n }\n }\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n u[jinx] -= (phi[jinx_plus_nx] - phi[jinx_minus_nx]) * i2dx;\n v[jinx] -= (phi[jinx_plus_1] - phi[jinx_minus_1]) * i2dy;\n }\n }\n }\n applyBoundary(1, u);\n applyBoundary(2, v);\n },\n\n diffuse = function(b, f0, f) {\n var\n timeStep = props.timeStep,\n viscosity = props.background_viscosity,\n hx = timeStep * viscosity * idxsq,\n hy = timeStep * viscosity * idysq,\n dn = 1.0 / (1 + 2 * (hx + hy)),\n k, i, j, inx, jinx, jinx_plus_nx, jinx_minus_nx, jinx_plus_1, jinx_minus_1;\n\n arrays.copy(f, f0);\n for (k = 0; k < relaxationSteps; k += 1) {\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n f[jinx] = (f0[jinx] + hx * (f[jinx_minus_nx] + f[jinx_plus_nx]) + hy * (f[jinx_minus_1] + f[jinx_plus_1])) * dn;\n }\n }\n }\n applyBoundary(b, f);\n }\n },\n\n // MacCormack\n macCormack = function(b, f0, f) {\n var\n timeStep = props.timeStep,\n tx = 0.5 * timeStep / deltaX,\n ty = 0.5 * timeStep / deltaY,\n i, j, inx, jinx, jinx_plus_nx, jinx_minus_nx, jinx_plus_1, jinx_minus_1;\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n f[jinx] = f0[jinx] - tx * (u0[jinx_plus_nx] * f0[jinx_plus_nx] - u0[jinx_minus_nx] * f0[jinx_minus_nx]) - ty * (v0[jinx_plus_1] * f0[jinx_plus_1] - v0[jinx_minus_1] * f0[jinx_minus_1]);\n }\n }\n }\n\n applyBoundary(b, f);\n\n for (i = 1; i < nx1; i += 1) {\n inx = i * nx;\n for (j = 1; j < ny1; j += 1) {\n jinx = inx + j;\n if (fluidity[jinx]) {\n jinx_minus_nx = jinx - nx;\n jinx_plus_nx = jinx + nx;\n jinx_minus_1 = jinx - 1;\n jinx_plus_1 = jinx + 1;\n\n f0[jinx] = 0.5 * (f0[jinx] + f[jinx]) - 0.5 * tx * u0[jinx] * (f[jinx_plus_nx] - f[jinx_minus_nx]) - 0.5 * ty * v0[jinx] * (f[jinx_plus_1] - f[jinx_minus_1]);\n }\n }\n }\n\n arrays.copy(f0, f);\n\n applyBoundary(b, f);\n },\n\n advect = function(b, f0, f) {\n macCormack(b, f0, f);\n };\n\n return {\n // TODO: swap the two arrays instead of copying them every time?\n solve: function(u, v) {\n if (props.thermal_buoyancy !== 0) {\n applyBuoyancy(v);\n }\n setObstacleVelocity(u, v);\n if (props.background_viscosity > 0) {\n // inviscid case\n diffuse(1, u0, u);\n diffuse(2, v0, v);\n conserve(u, v, u0, v0);\n setObstacleVelocity(u, v);\n }\n arrays.copy(u, u0);\n arrays.copy(v, v0);\n advect(1, u0, u);\n advect(2, v0, v);\n conserve(u, v, u0, v0);\n setObstacleVelocity(u, v);\n }\n };\n};\n","export default \"varying vec2 coord;\\n\\nvoid main() {\\n coord = gl_Vertex.xy * 0.5 + 0.5;\\n gl_Position = vec4(gl_Vertex.xy, 0.0, 1.0);\\n}\\n\";"," import Shader from 'models/energy2d/gpu/shader';\nimport gpgpu from 'models/energy2d/gpu/gpgpu';\nimport basic_vs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/basic.vs.glsl';\nimport maccormack_step1_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/maccormack-step1.fs.glsl';\nimport maccormack_step2_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/maccormack-step2.fs.glsl';\nimport apply_uv_boundary_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/apply-uv-boundary.fs.glsl';\nimport apply_u0v0_boundary_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/apply-u0v0-boundary.fs.glsl';\nimport set_obstacle_boundary_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/set-obstacle-boundary.fs.glsl';\nimport set_obstacle_velocity_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/set-obstacle-velocity.fs.glsl';\nimport uv_to_u0v0_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/uv-to-u0v0.fs.glsl';\nimport conserve_step1_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/conserve-step1.fs.glsl';\nimport conserve_step2_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/conserve-step2.fs.glsl';\nimport conserve_step3_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/conserve-step3.fs.glsl';\nimport diffuse_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/diffuse.fs.glsl';\nimport apply_buoyancy_fs from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-glsl/apply-buoyancy.fs.glsl';\n\nvar\n// Dependencies. \n // GPGPU utilities. It's a singleton instance.\n // It should have been previously initialized by core-model.\n \n // Shader sources. One of Lab build steps converts sources to JavaScript file.\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n RELAXATION_STEPS = 10,\n GRAVITY = 0;\n\nexport const makeFluidSolverGPU = function(model) {\n var\n // ========================================================================\n // GLSL Shaders:\n // - MacCormack advection, first step.\n maccormack_step1_program = new Shader(basic_vs, maccormack_step1_fs),\n maccormack_step2_program = new Shader(basic_vs, maccormack_step2_fs),\n apply_uv_boundary_program = new Shader(basic_vs, apply_uv_boundary_fs),\n apply_u0v0_boundary_program = new Shader(basic_vs, apply_u0v0_boundary_fs),\n set_obstacle_boundary_program = new Shader(basic_vs, set_obstacle_boundary_fs),\n set_obstacle_velocity_program = new Shader(basic_vs, set_obstacle_velocity_fs),\n uv_to_u0v0_program = new Shader(basic_vs, uv_to_u0v0_fs),\n conserve_step1_program = new Shader(basic_vs, conserve_step1_fs),\n conserve_step2_program = new Shader(basic_vs, conserve_step2_fs),\n conserve_step3_program = new Shader(basic_vs, conserve_step3_fs),\n diffuse_program = new Shader(basic_vs, diffuse_fs),\n apply_buoyancy_program = new Shader(basic_vs, apply_buoyancy_fs),\n // ========================================================================\n\n // Simulation arrays provided by model.\n // texture 0:\n // - R: t\n // - G: t0\n // - B: tb\n // - A: conductivity\n data0_tex = model.getSimulationTexture(0),\n // texture 1:\n // - R: q\n // - G: capacity\n // - B: density\n // - A: fluidity\n data1_tex = model.getSimulationTexture(1),\n // texture 2:\n // - R: u\n // - G: v\n // - B: u0\n // - A: v0\n data2_tex = model.getSimulationTexture(2),\n // texture 3:\n // - R: uWind\n // - G: vWind\n // - B: undefined\n // - A: undefined\n data3_tex = model.getSimulationTexture(3),\n\n // Basic simulation parameters.\n props = model.getModelOptions(),\n nx = props.grid_width,\n ny = props.grid_height,\n\n timeStep = props.timeStep,\n thermal_buoyancy = props.thermal_buoyancy,\n viscosity = props.background_viscosity,\n\n delta_x = props.model_width / props.grid_width,\n delta_y = props.model_height / props.grid_height,\n\n relaxation_steps = RELAXATION_STEPS,\n gravity = GRAVITY,\n\n // Convenience variables.\n i2dx = 0.5 / delta_x,\n i2dy = 0.5 / delta_y,\n idxsq = 1.0 / (delta_x * delta_x),\n idysq = 1.0 / (delta_y * delta_y),\n s = 0.5 / (idxsq + idysq),\n\n hx = timeStep * viscosity * idxsq,\n hy = timeStep * viscosity * idysq,\n dn = 1.0 / (1 + 2 * (hx + hy)),\n\n g = gravity * timeStep,\n b = thermal_buoyancy * timeStep,\n\n grid_vec = [1 / ny, 1 / nx],\n\n // Textures sets.\n data_2_array = [data2_tex],\n data_1_2_array = [data1_tex, data2_tex],\n data_0_1_2_array = [data0_tex, data1_tex, data2_tex],\n data_1_2_3_array = [data1_tex, data2_tex, data3_tex],\n\n init = function() {\n var uniforms;\n\n // MacCormack step 1 and 2 uniforms.\n uniforms = {\n // Texture units.\n data1_tex: 0,\n data2_tex: 1,\n // Uniforms.\n grid: grid_vec,\n tx: 0.5 * timeStep / delta_x,\n ty: 0.5 * timeStep / delta_y\n };\n maccormack_step1_program.uniforms(uniforms);\n maccormack_step2_program.uniforms(uniforms);\n\n // Apply UV / U0V0 boundary uniforms.\n uniforms = {\n // Texture units.\n data2_tex: 0,\n // Uniforms.\n grid: grid_vec\n };\n apply_uv_boundary_program.uniforms(uniforms);\n apply_u0v0_boundary_program.uniforms(uniforms);\n\n // Set obstacle boundary uniforms.\n uniforms = {\n // Texture units.\n data1_tex: 0,\n data2_tex: 1,\n // Uniforms.\n grid: grid_vec\n };\n set_obstacle_boundary_program.uniforms(uniforms);\n\n // Set obstacle velocity uniforms.\n uniforms = {\n // Texture units.\n data1_tex: 0,\n data2_tex: 1,\n data3_tex: 2,\n // Uniforms.\n grid: grid_vec\n };\n set_obstacle_velocity_program.uniforms(uniforms);\n\n // Conserve step 1 and 3 uniforms.\n uniforms = {\n // Texture units.\n data1_tex: 0,\n data2_tex: 1,\n // Uniforms.\n grid: grid_vec,\n i2dx: i2dx,\n i2dy: i2dy\n };\n conserve_step1_program.uniforms(uniforms);\n conserve_step3_program.uniforms(uniforms);\n\n // Conserve step 2 uniforms.\n uniforms = {\n // Texture units.\n data1_tex: 0,\n data2_tex: 1,\n // Uniforms.\n grid: grid_vec,\n s: s,\n idxsq: idxsq,\n idysq: idysq\n };\n conserve_step2_program.uniforms(uniforms);\n\n // Diffuse uniforms.\n uniforms = {\n // Texture units.\n data1_tex: 0,\n data2_tex: 1,\n // Uniforms.\n grid: grid_vec,\n hx: hx,\n hy: hy,\n dn: dn\n };\n diffuse_program.uniforms(uniforms);\n\n // Apply buoyancy uniforms.\n uniforms = {\n // Texture units.\n data0_tex: 0,\n data1_tex: 1,\n data2_tex: 2,\n // Uniforms.\n grid: grid_vec,\n g: g,\n b: b\n };\n apply_buoyancy_program.uniforms(uniforms);\n },\n\n applyBuoyancy = function() {\n gpgpu.executeProgram(\n apply_buoyancy_program,\n data_0_1_2_array,\n data2_tex\n );\n },\n\n macCormack = function() {\n // Step 1.\n gpgpu.executeProgram(\n maccormack_step1_program,\n data_1_2_array,\n data2_tex\n );\n // Apply boundary.\n gpgpu.executeProgram(\n apply_uv_boundary_program,\n data_2_array,\n data2_tex\n );\n // Step 2.\n gpgpu.executeProgram(\n maccormack_step2_program,\n data_1_2_array,\n data2_tex\n );\n // Apply boundary again.\n gpgpu.executeProgram(\n apply_uv_boundary_program,\n data_2_array,\n data2_tex\n );\n },\n\n conserve = function() {\n var k;\n // Step 1.\n gpgpu.executeProgram(\n conserve_step1_program,\n data_1_2_array,\n data2_tex\n );\n // Apply boundary.\n gpgpu.executeProgram(\n apply_u0v0_boundary_program,\n data_2_array,\n data2_tex\n );\n // Set obstacle boundary.\n gpgpu.executeProgram(\n set_obstacle_boundary_program,\n data_1_2_array,\n data2_tex\n );\n // Relaxation.\n for (k = 0; k < relaxation_steps; k += 1) {\n // Step 2.\n gpgpu.executeProgram(\n conserve_step2_program,\n data_1_2_array,\n data2_tex\n );\n }\n // Step 3.\n gpgpu.executeProgram(\n conserve_step3_program,\n data_1_2_array,\n data2_tex\n );\n // Apply boundary.\n gpgpu.executeProgram(\n apply_uv_boundary_program,\n data_2_array,\n data2_tex\n );\n },\n\n diffuse = function() {\n var k;\n // Copy UV to U0V0.\n gpgpu.executeProgram(\n uv_to_u0v0_program,\n data_2_array,\n data2_tex\n );\n // Relaxation.\n for (k = 0; k < relaxation_steps; k += 1) {\n // Step 2.\n gpgpu.executeProgram(\n diffuse_program,\n data_1_2_array,\n data2_tex\n );\n\n // Apply boundary.\n gpgpu.executeProgram(\n apply_uv_boundary_program,\n data_2_array,\n data2_tex\n );\n }\n },\n\n setObstacleVelocity = function() {\n gpgpu.executeProgram(\n set_obstacle_velocity_program,\n data_1_2_3_array,\n data2_tex\n );\n },\n\n copyUVtoU0V0 = function() {\n gpgpu.executeProgram(\n uv_to_u0v0_program,\n data_2_array,\n data2_tex\n );\n },\n\n fluid_solver_gpu = {\n solve: function() {\n if (thermal_buoyancy !== 0) {\n applyBuoyancy();\n }\n setObstacleVelocity();\n if (viscosity > 0) {\n diffuse();\n conserve();\n setObstacleVelocity();\n }\n copyUVtoU0V0();\n macCormack();\n conserve();\n setObstacleVelocity();\n }\n };\n\n // One-off initialization.\n init();\n\n return fluid_solver_gpu;\n};\n","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float tx;\\nuniform float ty;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 1.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n // Update velocity UV components.\\n data2.rg = data2.ba - tx * (data2_p_dy.bb * data2_p_dy.ba - data2_m_dy.bb * data2_m_dy.ba)\\n - ty * (data2_p_dx.aa * data2_p_dx.ba - data2_m_dx.aa * data2_m_dx.ba);\\n }\\n\\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float tx;\\nuniform float ty;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 1.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n // Update velocity UV components.\\n data2.rg = 0.5 * (data2.ba + data2.rg) \\n - 0.5 * tx * data2.bb * (data2_p_dy.rg - data2_m_dy.rg)\\n - 0.5 * ty * data2.aa * (data2_p_dx.rg - data2_m_dx.rg);\\n }\\n\\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n // Process corners.\\n // TODO: values from previous step are used for corners.\\n if (coord.x < grid.x && coord.y < grid.y) { \\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n data2.rg = 0.5 * (data2_p_dy.rg + data2_p_dx.rg);\\n }\\n else if (coord.x > 1.0 - grid.x && coord.y < grid.y) { \\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n data2.rg = 0.5 * (data2_p_dy.rg + data2_m_dx.rg);\\n }\\n else if (coord.x > 1.0 - grid.x && coord.y > 1.0 - grid.y) { \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n data2.rg = 0.5 * (data2_m_dy.rg + data2_m_dx.rg);\\n }\\n else if (coord.x < grid.x && coord.y > 1.0 - grid.y) { \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n data2.rg = 0.5 * (data2_m_dy.rg + data2_p_dx.rg);\\n }\\n // Process boundaries.\\n // Left.\\n else if (coord.x < grid.x) {\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n data2.rg = vec2(data2_p_dx.r, -data2_p_dx.g);\\n }\\n // Right.\\n else if (coord.x > 1.0 - grid.x) {\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n data2.rg = vec2(data2_m_dx.r, -data2_m_dx.g);\\n }\\n // Down.\\n else if (coord.y < grid.y) {\\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n data2.rg = vec2(-data2_p_dy.r, data2_p_dy.g);\\n }\\n // Up.\\n else if (coord.y > 1.0 - grid.y) {\\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n data2.rg = vec2(-data2_m_dy.r, data2_m_dy.g);\\n }\\n \\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n // Process corners.\\n // TODO: values from previous step are used for corners.\\n if (coord.x < grid.x && coord.y < grid.y) { \\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n data2.ba = 0.5 * (data2_p_dy.ba + data2_p_dx.ba);\\n }\\n else if (coord.x > 1.0 - grid.x && coord.y < grid.y) { \\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n data2.ba = 0.5 * (data2_p_dy.ba + data2_m_dx.ba);\\n }\\n else if (coord.x > 1.0 - grid.x && coord.y > 1.0 - grid.y) { \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n data2.ba = 0.5 * (data2_m_dy.ba + data2_m_dx.ba);\\n }\\n else if (coord.x < grid.x && coord.y > 1.0 - grid.y) { \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n data2.ba = 0.5 * (data2_m_dy.ba + data2_p_dx.ba);\\n }\\n // Process boundaries.\\n // Left.\\n else if (coord.x < grid.x) {\\n data2.ba = texture2D(data2_tex, coord + dx).ba;\\n }\\n // Right.\\n else if (coord.x > 1.0 - grid.x) {\\n data2.ba = texture2D(data2_tex, coord - dx).ba;\\n }\\n // Down.\\n else if (coord.y < grid.y) {\\n data2.ba = texture2D(data2_tex, coord + dy).ba;\\n }\\n // Up.\\n else if (coord.y > 1.0 - grid.y) {\\n data2.ba = texture2D(data2_tex, coord - dy).ba;\\n }\\n \\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 0.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n\\n if (texture2D(data1_tex, coord - dy).a == 1.0) {\\n data2.ba = texture2D(data2_tex, coord - dy).ba;\\n } \\n else if (texture2D(data1_tex, coord + dy).a == 1.0) {\\n data2.ba = texture2D(data2_tex, coord + dy).ba;\\n } \\n\\n if (texture2D(data1_tex, coord - dx).a == 1.0) {\\n data2.ba = texture2D(data2_tex, coord - dx).ba;\\n } \\n else if (texture2D(data1_tex, coord + dx).a == 1.0) {\\n data2.ba = texture2D(data2_tex, coord + dx).ba;\\n } \\n }\\n\\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n// texture 3: \\n// - R: uWind\\n// - G: vWind\\n// - B: undefined\\n// - A: undefined\\nuniform sampler2D data3_tex;\\n\\nuniform vec2 grid;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n\\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 0.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n\\n int count = 0;\\n\\n if (texture2D(data1_tex, coord - dy).a == 1.0) {\\n count += 1;\\n vec2 data2_m_dy = texture2D(data2_tex, coord - dy).rg;\\n data2.rg = texture2D(data3_tex, coord).rg + vec2(-data2_m_dy.r, data2_m_dy.g);\\n } \\n else if (texture2D(data1_tex, coord + dy).a == 1.0) {\\n count += 1;\\n vec2 data2_p_dy = texture2D(data2_tex, coord + dy).rg;\\n data2.rg = texture2D(data3_tex, coord).rg + vec2(-data2_p_dy.r, data2_p_dy.g);\\n } \\n\\n if (texture2D(data1_tex, coord - dx).a == 1.0) {\\n count += 1;\\n vec2 data2_m_dx = texture2D(data2_tex, coord - dx).rg;\\n data2.rg = texture2D(data3_tex, coord).rg + vec2(data2_m_dx.r, -data2_m_dx.g);\\n } \\n else if (texture2D(data1_tex, coord + dx).a == 1.0) {\\n count += 1;\\n vec2 data2_p_dx = texture2D(data2_tex, coord + dx).rg;\\n data2.rg = texture2D(data3_tex, coord).rg + vec2(data2_p_dx.r, -data2_p_dx.g);\\n } \\n\\n if (count == 0) {\\n data2.rg = texture2D(data3_tex, coord).rg;\\n }\\n }\\n \\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n\\tvec4 data2 = texture2D(data2_tex, coord);\\n\\tdata2.ba = data2.rg;\\n\\tgl_FragColor = data2;\\n}\\n\";","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float i2dx;\\nuniform float i2dy;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 1.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n \\n // Phi.\\n data2.b = 0.0;\\n // Div.\\n data2.a = (data2_p_dy.r - data2_m_dy.r) * i2dx + (data2_p_dx.g - data2_m_dx.g) * i2dy;\\n }\\n\\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float s;\\nuniform float idxsq;\\nuniform float idysq;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 1.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n \\n // Phi.\\n data2.b = s * ((data2_m_dy.b + data2_p_dy.b) * idxsq + (data2_m_dx.b + data2_p_dx.b) * idysq - data2.a);\\n }\\n\\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float i2dx;\\nuniform float i2dy;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 1.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n \\n // U.\\n data2.r -= (data2_p_dy.b - data2_m_dy.b) * i2dx;\\n // V.\\n data2.g -= (data2_p_dx.b - data2_m_dx.b) * i2dy;\\n }\\n\\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float hx;\\nuniform float hy;\\nuniform float dn;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 1.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n \\n vec4 data2_m_dy = texture2D(data2_tex, coord - dy);\\n vec4 data2_p_dy = texture2D(data2_tex, coord + dy);\\n vec4 data2_m_dx = texture2D(data2_tex, coord - dx);\\n vec4 data2_p_dx = texture2D(data2_tex, coord + dx);\\n // Update velocity UV components.\\n data2.rg = (data2.ba + hx * (data2_m_dy.rg + data2_p_dy.rg)\\n + hy * (data2_m_dx.rg + data2_p_dx.rg)) * dn;\\n }\\n\\n gl_FragColor = data2;\\n}\\n\";","export default \"// texture 0: \\n// - R: t\\n// - G: t0\\n// - B: tb\\n// - A: conductivity\\nuniform sampler2D data0_tex;\\n// texture 1: \\n// - R: q\\n// - G: capacity\\n// - B: density\\n// - A: fluidity\\nuniform sampler2D data1_tex;\\n// texture 2: \\n// - R: u\\n// - G: v\\n// - B: u0\\n// - A: v0\\nuniform sampler2D data2_tex;\\n\\nuniform vec2 grid;\\nuniform float g;\\nuniform float b;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n vec4 data2 = texture2D(data2_tex, coord);\\n float fluidity = texture2D(data1_tex, coord).a;\\n \\n if (coord.x > grid.x && coord.x < 1.0 - grid.x &&\\n coord.y > grid.y && coord.y < 1.0 - grid.y &&\\n fluidity == 1.0) {\\n \\n vec2 dx = vec2(grid.x, 0.0);\\n vec2 dy = vec2(0.0, grid.y);\\n \\n float t = texture2D(data0_tex, coord).r;\\n // Get average column temperature.\\n\\n float avg_t = t;\\n float count = 1.0;\\n vec2 n_coord = coord - dx;\\n // Silly while(true) loop (almost).\\n // While loops are not allowed.\\n // For loops with non-constant expressions also.\\n for (int i = 1; i != 0; i++) {\\n if (n_coord.x > 0.0 && texture2D(data1_tex, n_coord).a == 1.0) {\\n avg_t += texture2D(data0_tex, n_coord).r;\\n count += 1.0;\\n n_coord -= dx;\\n } else {\\n break;\\n }\\n }\\n n_coord = coord + dx;\\n // Silly while(true) loop (almost).\\n // While loops are not allowed.\\n // For loops with non-constant expressions also.\\n for (int i = 1; i != 0; i++) {\\n if (n_coord.x < 1.0 && texture2D(data1_tex, n_coord).a == 1.0) {\\n avg_t += texture2D(data0_tex, n_coord).r;\\n count += 1.0;\\n n_coord += dx;\\n } else {\\n break;\\n }\\n }\\n avg_t /= count;\\n\\n // Update velocity V component.\\n data2.g += (g - b) * t + b * avg_t;\\n }\\n\\n gl_FragColor = data2;\\n}\\n\";","/*jslint indent: 2, browser: true, newcap: true */\n\nexport const hypot = function(x, y) {\n var t;\n x = Math.abs(x);\n y = Math.abs(y);\n t = Math.min(x, y);\n x = Math.max(x, y);\n if (x === 0) return 0;\n t = t / x;\n return x * Math.sqrt(1 + t * t);\n};\n","/*jslint indent: 2, browser: true, newcap: true */\n\n// Based on: http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n// It is optional to repeat the first vertex at the end of list of polygon vertices.\nexport const pointInsidePolygon = function(nvert, vertx, verty, testx, testy) {\n var c = 0, i, j;\n for (i = 0, j = nvert - 1; i < nvert; j = i, i += 1) { if (((verty[i] > testy) !== (verty[j] > testy)) && (testx < (vertx[j] - vertx[i]) * (testy - verty[i]) / (verty[j] - verty[i]) + vertx[i])) { c = !c; }\n }\n return !!c;\n};\n\n//\n// Line in 2D.\n//\n// It is defined by two points - (x1, y1) and (x2, y2).\nexport const Line = function(x1, y1, x2, y2) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n};\n\nLine.prototype.intersectsLine = function(line) {\n var result,\n a1 = {\n x: this.x1,\n y: this.y1\n },\n a2 = {\n x: this.x2,\n y: this.y2\n },\n b1 = {\n x: line.x1,\n y: line.y1\n },\n b2 = {\n x: line.x2,\n y: line.y2\n },\n ua_t = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x),\n ub_t = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x),\n u_b = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y),\n ua, ub;\n\n if (u_b !== 0) {\n ua = ua_t / u_b;\n ub = ub_t / u_b;\n\n if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) {\n result = true;\n } else {\n result = false;\n }\n } else {\n if (ua_t === 0 || ub_t === 0) {\n result = true; // Coincident.\n } else {\n result = false; // Parallel.\n }\n }\n return result;\n};\n\n//\n// Polygon.\n//\n// Implements Shape2D interface:\n// - polygonize()\n// - contains(x, y)\nexport const Polygon = function(count, x_coords, y_coords, x, y) {\n this.count = count;\n this.raw_x_coords = x_coords;\n this.raw_y_coords = y_coords;\n this.x_coords = new Array(count);\n this.y_coords = new Array(count);\n // x_coords and y_coors will be updated now:\n this.x = x || 0;\n this.y = y || 0;\n};\n\nObject.defineProperty(Polygon.prototype, 'x', {\n get: function() {\n return this._x;\n },\n set: function(v) {\n var i, len;\n for (i = 0, len = this.count; i < len; i++) {\n this.x_coords[i] = this.raw_x_coords[i] + v;\n }\n this._x = v;\n }\n});\n\nObject.defineProperty(Polygon.prototype, 'y', {\n get: function() {\n return this._y;\n },\n set: function(v) {\n var i, len;\n for (i = 0, len = this.count; i < len; i++) {\n this.y_coords[i] = this.raw_y_coords[i] + v;\n }\n this._y = v;\n }\n});\n\nPolygon.prototype.polygonize = function() {\n return this;\n};\n\n// Based on: http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n// It is optional to repeat the first vertex at the end of list of polygon vertices.\nPolygon.prototype.contains = function(x, y) {\n var\n x_coords = this.x_coords,\n y_coords = this.y_coords,\n count = this.count,\n c = 0,\n i, j;\n\n for (i = 0, j = count - 1; i < count; j = i, i += 1) {\n if (((y_coords[i] > y) !== (y_coords[j] > y)) &&\n (x < (x_coords[j] - x_coords[i]) * (y - y_coords[i]) / (y_coords[j] - y_coords[i]) + x_coords[i])) {\n c = !c;\n }\n }\n // Convert to Boolean.\n return !!c;\n};\n\n//\n// Rectangle.\n// x, y - left-top corner\n//\n// Implements Shape2D interface:\n// - polygonize()\n// - contains(x, y)\nexport const Rectangle = function(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.polygon_cache = undefined;\n};\n\nRectangle.prototype.polygonize = function() {\n var\n x, y, w, h;\n\n if (!this.polygon_cache) {\n x = this.x;\n y = this.y;\n w = this.width;\n h = this.height;\n this.polygon_cache = new Polygon(4, [x, x + w, x + w, x], [y, y, y + h, y + h]);\n }\n return this.polygon_cache;\n};\n\nRectangle.prototype.contains = function(x, y) {\n return x >= this.x && x <= this.x + this.width &&\n y >= this.y && y <= this.y + this.height;\n};\n\n// Helper function, used by Ellipse and Ring.\nvar polygonizeEllipse = function(x, y, ra, rb, segments) {\n var\n vx = new Array(segments),\n vy = new Array(segments),\n delta = 2 * Math.PI / segments,\n theta, i;\n\n for (i = 0; i < segments; i += 1) {\n theta = delta * i;\n vx[i] = x + ra * Math.cos(theta);\n vy[i] = y + rb * Math.sin(theta);\n }\n return new Polygon(segments, vx, vy);\n};\n\n//\n// Ellipse.\n// x, y - center\n// a, b - diameter (not radius)\n//\n// Implements Shape2D interface:\n// - polygonize()\n// - contains(x, y)\nexport const Ellipse = function(x, y, a, b) {\n this.x = x;\n this.y = y;\n this.a = a;\n this.b = b;\n this.polygon_cache = undefined;\n};\n\nEllipse.prototype.POLYGON_SEGMENTS = 50;\n\nEllipse.prototype.polygonize = function() {\n if (!this.polygon_cache) {\n this.polygon_cache = polygonizeEllipse(this.x, this.y, this.a * 0.5, this.b * 0.5, this.POLYGON_SEGMENTS);\n }\n return this.polygon_cache;\n};\n\nEllipse.prototype.contains = function(x, y) {\n var\n px = x - this.x,\n py = y - this.y,\n ra = this.a * 0.5,\n rb = this.b * 0.5;\n\n return px * px / (ra * ra) + py * py / (rb * rb) <= 1;\n};\n\n//\n// Ring.\n// x, y - center\n// inner, outer - diameter (not radius)\n//\n// Implements Shape2D interface:\n// - polygonize()\n// - contains(x, y)\nexport const Ring = function(x, y, inner, outer) {\n this.x = x;\n this.y = y;\n this.inner = inner;\n this.outer = outer;\n this.polygon_cache = undefined;\n};\n\nRing.prototype.POLYGON_SEGMENTS = 50;\n\n// Returns OUTER circle polygonization.\nRing.prototype.polygonize = function() {\n if (!this.polygon_cache) {\n this.polygon_cache = polygonizeEllipse(this.x, this.y, this.outer * 0.5, this.outer * 0.5, this.POLYGON_SEGMENTS);\n }\n return this.polygon_cache;\n};\n\nRing.prototype.contains = function(x, y) {\n var\n px = x - this.x,\n py = y - this.y,\n ra_outer = this.outer * 0.5,\n rb_outer = this.outer * 0.5,\n ra_inner = this.inner * 0.5,\n rb_inner = this.inner * 0.5;\n\n return (px * px / (ra_outer * ra_outer) + py * py / (rb_outer * rb_outer) <= 1) &&\n (px * px / (ra_inner * ra_inner) + py * py / (rb_inner * rb_inner) >= 1);\n};\n","/*jslint indent: 2, browser: true, newcap: true */\nimport { hypot } from 'models/energy2d/models/helpers';\nimport { Line, Rectangle } from 'models/energy2d/models/shape';\n\n//\n// Photon class.\n//\nexport const Photon = function(x, y, energy, c, angle) {\n this.x = x;\n this.y = y;\n this.energy = energy;\n this.c = c;\n\n if (angle !== undefined) { this.vx = Math.cos(angle) * c; this.vy = Math.sin(angle) * c;\n }\n};\n\nPhoton.prototype.isContained = function(xmin, xmax, ymin, ymax) {\n return this.x >= xmin && this.x <= xmax && this.y >= ymin && this.y <= ymax;\n};\n\nPhoton.prototype.move = function(dt) {\n this.x += this.vx * dt;\n this.y += this.vy * dt;\n};\n\nPhoton.prototype.reflectFromLine = function(line, time_step) {\n var x1 = this.x,\n y1 = this.y,\n x2 = this.x - this.vx * time_step,\n y2 = this.y - this.vy * time_step,\n photon_line = new Line(x1, y1, x2, y2),\n vx = this.vx,\n vy = this.vy,\n r12, sin, cos, u, w;\n\n if (photon_line.intersectsLine(line)) {\n x1 = line.x1;\n y1 = line.y1;\n x2 = line.x2;\n y2 = line.y2;\n r12 = 1.0 / hypot(x1 - x2, y1 - y2);\n sin = (y2 - y1) * r12;\n cos = (x2 - x1) * r12;\n // Velocity component parallel to the line.\n u = vx * cos + vy * sin;\n // Velocity component perpendicular to the line.\n w = vy * cos - vx * sin;\n // Update velocities.\n this.vx = u * cos + w * sin;\n this.vy = u * sin - w * cos;\n return true;\n }\n return false;\n};\n\nPhoton.prototype.reflectFromRectangle = function(rectangle, time_step) {\n var\n x0 = rectangle.x,\n y0 = rectangle.y,\n x1 = rectangle.x + rectangle.width,\n y1 = rectangle.y + rectangle.height,\n dx, dy;\n\n dx = this.vx * time_step;\n if (this.x - dx < x0) {\n this.vx = -Math.abs(this.vx);\n } else if (this.x - dx > x1) {\n this.vx = Math.abs(this.vx);\n }\n dy = this.vy * time_step;\n if (this.y - dy < y0) {\n this.vy = -Math.abs(this.vy);\n } else if (this.y - dy > y1) {\n this.vy = Math.abs(this.vy);\n }\n};\n\nPhoton.prototype.reflectFromPolygon = function(polygon, time_step) {\n var\n line = new Line(), // no params, as this object will be reused many times\n i, len;\n\n for (i = 0, len = polygon.count - 1; i < len; i += 1) {\n line.x1 = polygon.x_coords[i];\n line.y1 = polygon.y_coords[i];\n line.x2 = polygon.x_coords[i + 1];\n line.y2 = polygon.y_coords[i + 1];\n if (this.reflectFromLine(line, time_step)) {\n return;\n }\n }\n line.x1 = polygon.x_coords[polygon.count - 1];\n line.y1 = polygon.y_coords[polygon.count - 1];\n line.x2 = polygon.x_coords[0];\n line.y2 = polygon.y_coords[0];\n this.reflectFromLine(line, time_step);\n};\n\nPhoton.prototype.reflect = function(shape, time_step) {\n // Check if part contains a photon BEFORE possible polygonization.\n if (!shape.contains(this.x, this.y)) {\n return false;\n }\n\n if (shape instanceof Rectangle) {\n // Rectangle also can be polygonized, but for performance reasons\n // use separate method.\n this.reflectFromRectangle(shape, time_step);\n } else {\n // Other shapes (ellipses, rings, polygons) - polygonize() first\n // (polygonize() for polygon returns itself).\n this.reflectFromPolygon(shape.polygonize(), time_step);\n }\n return true;\n};\n"," import { Photon } from 'models/energy2d/models/photon';\n\nexport const makeRaySolver = function(model) { var\n // Basic simulation parameters.\n props = model.getModelOptions(),\n\n // Simulation arrays provided by model.\n q = model.getPowerArray(),\n parts = model.getPartsArray(),\n photons = model.getPhotonsArray(),\n\n // Convenience variables.\n lx = props.model_width,\n ly = props.model_height,\n\n nx = props.grid_width,\n ny = props.grid_height,\n nx1 = nx - 1,\n ny1 = ny - 1,\n\n delta_x = props.model_width / props.grid_width,\n delta_y = props.model_height / props.grid_height,\n\n //\n // Private methods\n //\n\n sunAngle = function() {\n return Math.PI - props.sun_angle;\n },\n\n // TODO: implement something efficient. Linked list?\n cleanupPhotonsArray = function() {\n var i = 0;\n while (i < photons.length) { if (photons[i] === undefined) { photons.splice(i, 1); } else {\n i += 1;\n }\n }\n },\n\n applyBoundary = function() {\n var i, len;\n for (i = 0, len = photons.length; i < len; i += 1) {\n if (!photons[i].isContained(0, lx, 0, ly)) {\n photons[i] = undefined;\n }\n }\n cleanupPhotonsArray();\n },\n\n isContained = function(x, y) {\n var i, len;\n for (i = 0, len = parts.length; i < len; i += 1) {\n if (parts[i].contains(x, y)) {\n return true;\n }\n }\n return false;\n },\n\n shootAtAngle = function(dx, dy) {\n var\n sun_angle = sunAngle(),\n ray_power = props.solar_power_density,\n ray_speed = props.solar_ray_speed,\n m = Math.floor(lx / dx),\n n = Math.floor(ly / dy),\n x, y, i;\n if (sun_angle >= 0 && sun_angle < 0.5 * Math.PI) {\n y = 0;\n for (i = 1; i <= m; i += 1) {\n x = dx * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n x = 0;\n for (i = 0; i <= n; i += 1) {\n y = dy * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n } else if (sun_angle < 0 && sun_angle >= -0.5 * Math.PI) {\n y = ly;\n for (i = 1; i <= m; i += 1) {\n x = dx * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n x = 0;\n for (i = 0; i <= n; i += 1) {\n y = ly - dy * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n } else if (sun_angle < Math.PI + 0.001 && sun_angle >= 0.5 * Math.PI) {\n y = 0;\n for (i = 0; i <= m; i += 1) {\n x = lx - dx * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n x = lx;\n for (i = 1; i <= n; i += 1) {\n y = dy * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n } else if (sun_angle >= -Math.PI && sun_angle < -0.5 * Math.PI) {\n y = ly;\n for (i = 0; i <= m; i += 1) {\n x = lx - dx * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n x = lx;\n for (i = 1; i <= n; i += 1) {\n y = ly - dy * i;\n if (!isContained(x, y)) {\n photons.push(new Photon(x, y, ray_power, ray_speed, sun_angle));\n }\n }\n }\n };\n\n return {\n solve: function() {\n var\n timeStep = props.timeStep,\n photon_emission_interval = props.photon_emission_interval,\n\n factor = 1.0 / (timeStep * photon_emission_interval),\n idx = 1.0 / delta_x,\n idy = 1.0 / delta_y,\n photon, part, x, y,\n i, j, photons_len, parts_len;\n\n for (i = 0, photons_len = photons.length; i < photons_len; i += 1) {\n photon = photons[i];\n photon.move(timeStep);\n\n for (j = 0, parts_len = parts.length; j < parts_len; j += 1) {\n part = parts[j];\n if (part.reflect(photon, timeStep)) {\n break;\n } else if (part.absorb(photon)) {\n x = Math.max(Math.min(Math.round(photon.x * idx), nx1), 0);\n y = Math.max(Math.min(Math.round(photon.y * idy), ny1), 0);\n q[x * ny + y] = photon.energy * factor;\n // Remove photon.\n photons[i] = undefined;\n break;\n }\n }\n }\n // Clean up absorbed photons.\n cleanupPhotonsArray();\n // Remove photons that are out of bounds.\n applyBoundary();\n },\n\n radiate: function() {\n var part, i, len;\n for (i = 0, len = parts.length; i < len; i += 1) {\n part = parts[i];\n if (part.emissivity > 0) {\n part.radiate(model);\n }\n }\n },\n\n sunShine: function() {\n var\n sun_angle = sunAngle(),\n s, c, spacing;\n\n if (sun_angle < 0) {\n return;\n }\n s = Math.abs(Math.sin(sun_angle));\n c = Math.abs(Math.cos(sun_angle));\n spacing = s * ly < c * lx ? ly / c : lx / s;\n spacing /= props.solar_ray_count;\n shootAtAngle(spacing / s, spacing / c);\n }\n };\n};\n","import constants from 'models/energy2d/models/constants';\nimport { hypot } from 'models/energy2d/models/helpers';\nimport { Photon } from 'models/energy2d/models/photon';\nimport { Line, Polygon, Rectangle, Ellipse, Ring, pointInsidePolygon } from 'models/energy2d/models/shape';\n\nvar // Part's constants.\n RADIATOR_SPACING = 0.5,\n MINIMUM_RADIATING_TEMPERATUE = 20,\n UNIT_SURFACE_AREA = 100,\n SIN30 = Math.sin(Math.PI / 6),\n COS30 = Math.cos(Math.PI / 6),\n SIN60 = Math.sin(Math.PI / 3),\n COS60 = Math.cos(Math.PI / 3);\n\n // Constructor function.\nexport const Part = function(options) {\n var vertices, count, i;\n this._options = options;\n\n // Validate and process options.\n if (options.shapeType === \"rectangle\") { this.shape = new Rectangle(options.x, options.y, options.width, options.height);\n } else if (options.shapeType === \"ellipse\") {\n this.shape = new Ellipse(options.x, options.y, options.a, options.b);\n } else if (options.shapeType === \"ring\") {\n this.shape = new Ring(options.x, options.y, options.inner, options.outer);\n } else if (options.shapeType === \"polygon\") {\n vertices = options.vertices.split(', ');\n this.x_coords = [];\n this.y_coords = [];\n for (i = 0, count = vertices.length * 0.5; i < count; i += 1) {\n this.x_coords[i] = Number(vertices[2 * i]);\n this.y_coords[i] = Number(vertices[2 * i + 1]);\n }\n this.shape = new Polygon(count, this.x_coords, this.y_coords, options.x, options.y);\n } else {\n throw new Error(\"Part: shape not defined or not supported.\");\n }\n};\n\nObject.defineProperty(Part.prototype, \"shapeType\", {\n get: function() {\n return this._options.shapeType;\n }\n});\n\n[\"x\", \"y\", \"width\", \"height\", \"inner\", \"outer\", \"a\", \"b\", \"raw_x_coords\", \"raw_y_coords\"].forEach(function(key) {\n Object.defineProperty(Part.prototype, key, {\n get: function() {\n return this.shape[key];\n },\n set: function(v) {\n this.shape[key] = v;\n this.polygon_cache = undefined;\n }\n });\n});\n\nObject.defineProperty(Part.prototype, \"vertices\", {\n get: function() {\n if (this.shapeType !== \"polygon\") return undefined;\n var x = this.shape.raw_x_coords,\n y = this.shape.raw_y_coords,\n r = [],\n i, len;\n for (i = 0, len = x.length; i < len; i++) {\n r.push(x[i]);\n r.push(y[i]);\n }\n return r.join(\", \");\n }\n});\n\n[\"thermal_conductivity\", \"specific_heat\", \"density\", \"temperature\", \"constant_temperature\", \"power\", \"wind_speed\", \"wind_angle\",\n \"transmission\", \"reflection\", \"absorption\", \"emissivity\",\n \"visible\", \"filled\", \"color\", \"texture\", \"label\", \"draggable\"\n].forEach(function(key) {\n Object.defineProperty(Part.prototype, key, {\n get: function() {\n return this._options[key];\n },\n set: function(v) {\n this._options[key] = v;\n }\n });\n});\n\nPart.prototype.getLabel = function() {\n var label = this.label,\n s;\n\n function formatLabel(value, suffix) {\n var valueStr;\n if (value >= 100) {\n valueStr = value.toFixed();\n } else if (value >= 10) {\n valueStr = value.toFixed(1);\n } else {\n valueStr = value.toFixed(2);\n }\n return valueStr + suffix;\n }\n\n if (label === \"%temperature\") {\n s = formatLabel(this.temperature, \" \\u00b0C\");\n } else if (label === \"%density\") {\n s = formatLabel(this.density, \" kg/m\\u00b3\");\n } else if (label === \"%specific_heat\") {\n s = formatLabel(this.specific_heat, \" J/(kg\\u00d7\\u00b0C)\");\n } else if (label === \"%thermal_conductivity\") {\n s = formatLabel(this.thermal_conductivity, \" W/(m\\u00d7\\u00b0C)\");\n } else if (label === \"%power_density\") {\n s = formatLabel(this.power, \" W/m\\u00b3\");\n } else if (label === \"%area\") {\n if (this.shapeType === \"rectangle\") {\n s = formatLabel(this.width * this.height, \" m\\u00b2\");\n } else if (this.shapeType === \"ellipse\") {\n s = formatLabel(this.a * this.b * 0.25 * Math.PI, \" m\\u00b2\");\n }\n } else if (label === \"%width\") {\n if (this.shapeType === \"rectangle\") {\n s = formatLabel(this.width, \" m\");\n } else if (this.shapeType === \"ellipse\") {\n s = formatLabel(this.a, \" m\");\n }\n } else if (label === \"%height\") {\n if (this.shapeType === \"rectangle\") {\n s = formatLabel(this.height, \" m\");\n } else if (this.shapeType === \"ellipse\") {\n s = formatLabel(this.b, \" m\");\n }\n } else {\n s = label;\n }\n return s;\n};\n\n// Returns cells occupied by part on the given grid\n// Grid is described by:\n// nx - grid columns count\n// ny - grid rows count\n// lx - grid width\n// ly - grid height\n// TODO: refactor it, probably using contains method.\nPart.prototype.getGridCells = function(nx, ny, lx, ly) {\n var\n nx1 = nx - 1,\n ny1 = ny - 1,\n dx = nx / lx,\n dy = ny / ly,\n\n rectangleIndices = function(rect) {\n var i, j, i0, j0, i_max, j_max, idx, indices = [];\n\n i0 = Math.min(Math.max(Math.ceil(rect.x * dx), 0), nx1);\n j0 = Math.min(Math.max(Math.ceil(rect.y * dy), 0), ny1);\n i_max = Math.min(Math.max(Math.floor((rect.x + rect.width) * dx), 0), nx1);\n j_max = Math.min(Math.max(Math.floor((rect.y + rect.height) * dy), 0), ny1);\n indices = new Array((i_max - i0 + 1) * (j_max - j0 + 1));\n idx = 0;\n for (i = i0; i <= i_max; i += 1) { for (j = j0; j <= j_max; j += 1) { indices[idx += 1] = i * ny + j; }\n }\n return indices;\n },\n\n ellipseIndices = function(ellipse) {\n var\n px = ellipse.x * dx,\n py = ellipse.y * dy,\n ra = ellipse.a * 0.5 * dx,\n rb = ellipse.b * 0.5 * dy,\n eq, i, i0, i_max, j, j0, j_max,\n idx, indices = [];\n\n i0 = Math.min(Math.max(Math.ceil(px - ra), 0), nx1);\n i_max = Math.min(Math.max(Math.floor(px + ra), 0), nx1);\n indices = [];\n idx = 0;\n for (i = i0; i <= i_max; i += 1) {\n // solve equation x^2/a^2 + y^2/b^2 < 1 for given x (=> i)\n // to get range of y (=> j)\n eq = Math.sqrt(1 - (i - px) * (i - px) / (ra * ra));\n j0 = Math.min(Math.max(Math.ceil(py - rb * eq), 0), ny1);\n j_max = Math.min(Math.max(Math.floor(py + rb * eq), 0), ny1);\n for (j = j0; j <= j_max; j += 1) {\n indices[idx += 1] = i * ny + j;\n }\n }\n return indices;\n },\n\n ringIndices = function(ring) {\n var\n px = ring.x * dx,\n py = ring.y * dy,\n ra = ring.outer * 0.5 * dx,\n rb = ring.outer * 0.5 * dy,\n ra_inner = ring.inner * 0.5 * dx,\n rb_inner = ring.inner * 0.5 * dy,\n i, i0, i_max, j, j0, j1, j2, j_max, eq,\n idx, indices = [];\n\n i0 = Math.min(Math.max(Math.ceil(px - ra), 0), nx1);\n i_max = Math.min(Math.max(Math.floor(px + ra), 0), nx1);\n\n for (i = i0; i <= i_max; i += 1) {\n // solve equation x^2/a^2 + y^2/b^2 < 1 for given x (=> i)\n // to get range of y (=> j)\n eq = Math.sqrt(1 - (i - px) * (i - px) / (ra * ra));\n j0 = Math.min(Math.max(Math.ceil(py - rb * eq), 0), ny1);\n j_max = Math.min(Math.max(Math.floor(py + rb * eq), 0), ny1);\n\n if (Math.abs(i - px) < ra_inner) {\n // also calculate inner ellipse\n eq = Math.sqrt(1 - (i - px) * (i - px) / (ra_inner * ra_inner));\n j1 = Math.min(Math.max(Math.ceil(py - rb_inner * eq), 0), ny1);\n j2 = Math.min(Math.max(Math.floor(py + rb_inner * eq), 0), ny1);\n for (j = j0; j <= j1; j += 1) {\n indices[idx += 1] = i * ny + j;\n }\n for (j = j2; j <= j_max; j += 1) {\n indices[idx += 1] = i * ny + j;\n }\n } else {\n // consider only outer ellipse\n for (j = j0; j <= j_max; j += 1) {\n indices[idx += 1] = i * ny + j;\n }\n }\n }\n return indices;\n },\n\n polygonIndices = function(polygon) {\n var\n count = polygon.x_coords.length,\n x_coords = new Array(count),\n y_coords = new Array(count),\n x_min = Number.MAX_VALUE,\n x_max = Number.MIN_VALUE,\n y_min = Number.MAX_VALUE,\n y_max = Number.MIN_VALUE,\n i, i0, i_max, j, j0, j_max,\n idx, indices = [];\n\n for (i = 0; i < count; i += 1) {\n x_coords[i] = polygon.x_coords[i] * dx;\n y_coords[i] = polygon.y_coords[i] * dy;\n if (x_coords[i] < x_min) {\n x_min = x_coords[i];\n }\n if (x_coords[i] > x_max) {\n x_max = x_coords[i];\n }\n if (y_coords[i] < y_min) {\n y_min = y_coords[i];\n }\n if (y_coords[i] > y_max) {\n y_max = y_coords[i];\n }\n }\n\n i0 = Math.min(Math.max(Math.round(x_min), 0), nx1);\n j0 = Math.min(Math.max(Math.round(y_min), 0), ny1);\n i_max = Math.min(Math.max(Math.round(x_max), 0), nx1);\n j_max = Math.min(Math.max(Math.round(y_max), 0), ny1);\n indices = [];\n idx = 0;\n for (i = i0; i <= i_max; i += 1) {\n for (j = j0; j <= j_max; j += 1) {\n if (pointInsidePolygon(count, x_coords, y_coords, i, j)) {\n indices[idx += 1] = i * ny + j;\n }\n }\n }\n return indices;\n };\n\n if (this.shapeType === \"rectangle\") {\n return rectangleIndices(this.shape);\n }\n if (this.shapeType === \"ellipse\") {\n return ellipseIndices(this.shape);\n }\n if (this.shapeType === \"ring\") {\n return ringIndices(this.shape);\n }\n if (this.shapeType === \"polygon\") {\n return polygonIndices(this.shape);\n }\n throw new Error(\"Part: unknown shape.\");\n};\n\n// Tests if the specified coordinates are inside the boundary of the Part.\nPart.prototype.contains = function(x, y) {\n return this.shape.contains(x, y);\n};\n\n// Test whether part reflects given Photon p.\nPart.prototype.reflect = function(p, time_step) {\n // Try to reflect when part's reflection equals ~1.\n if (Math.abs(this.reflection - 1) < 0.001) {\n return p.reflect(this.shape, time_step);\n }\n // Other case.\n return false;\n};\n\n// Test whether part absorbs given Photon p.\nPart.prototype.absorb = function(p) {\n // Absorb when absorption equals ~1 and photon is inside part's shape.\n if (Math.abs(this.absorption - 1) < 0.001) {\n return this.shape.contains(p.x, p.y);\n }\n // Other case.\n return false;\n};\n\nPart.prototype.getIrradiance = function(temperature) {\n var t2;\n if (this.emissivity === 0) {\n return 0;\n }\n t2 = 273 + temperature;\n t2 *= t2;\n return this.emissivity * constants.STEFAN_CONSTANT * UNIT_SURFACE_AREA * t2 * t2;\n};\n\n// Emit photons if part meets radiation conditions.\nPart.prototype.radiate = function(model) {\n var\n // The shape is polygonized and radiateFromLine() is called for each line.\n poly = this.shape.polygonize(),\n line = new Line(),\n i, len;\n\n if (this.emissivity === 0) {\n return;\n }\n // Must follow the clockwise direction in setting lines.\n for (i = 0, len = poly.count - 1; i < len; i += 1) {\n line.x1 = poly.x_coords[i];\n line.y1 = poly.y_coords[i];\n line.x2 = poly.x_coords[i + 1];\n line.y2 = poly.y_coords[i + 1];\n this.radiateFromLine(model, line);\n }\n line.x1 = poly.x_coords[poly.count - 1];\n line.y1 = poly.y_coords[poly.count - 1];\n line.x2 = poly.x_coords[0];\n line.y2 = poly.y_coords[0];\n this.radiateFromLine(model, line);\n};\n\n// Helper function for radiate() method.\nPart.prototype.radiateFromLine = function(model, line) {\n var options, length, cos, sin, n, x, y, p, d, vx, vy, vxi, vyi, nray, ir,\n i, k;\n\n if (this.emissivity === 0) {\n return;\n }\n options = model.getModelOptions();\n length = hypot(line.x1 - line.x2, line.y1 - line.y2);\n cos = (line.x2 - line.x1) / length;\n sin = (line.y2 - line.y1) / length;\n n = Math.max(1, Math.round(length / RADIATOR_SPACING));\n vx = options.solar_ray_speed * sin;\n vy = -options.solar_ray_speed * cos;\n if (n === 1) {\n d = 0.5 * length;\n x = line.x1 + d * cos;\n y = line.y1 + d * sin;\n d = model.getAverageTemperatureAt(x, y);\n if (d > MINIMUM_RADIATING_TEMPERATUE) {\n d = model.getTemperatureAt(x, y);\n p = new Photon(x, y, this.getIrradiance(d), options.solar_ray_speed);\n p.vx = vx;\n p.vy = vy;\n model.addPhoton(p);\n if (!this.constant_temperature) {\n model.setTemperatureAt(x, y, d - p.energy / this.specific_heat);\n }\n }\n } else {\n vxi = new Array(4);\n vyi = new Array(4);\n vxi[0] = vx * COS30 - vy * SIN30;\n vyi[0] = vx * SIN30 + vy * COS30;\n vxi[1] = vy * SIN30 + vx * COS30;\n vyi[1] = vy * COS30 - vx * SIN30;\n vxi[2] = vx * COS60 - vy * SIN60;\n vyi[2] = vx * SIN60 + vy * COS60;\n vxi[3] = vy * SIN60 + vx * COS60;\n vyi[3] = vy * COS60 - vx * SIN60;\n nray = 1 + vxi.length;\n for (i = 0; i < n; i += 1) {\n d = (i + 0.5) * RADIATOR_SPACING;\n x = line.x1 + d * cos;\n y = line.y1 + d * sin;\n d = model.getAverageTemperatureAt(x, y);\n ir = this.getIrradiance(d) / nray;\n if (d > MINIMUM_RADIATING_TEMPERATUE) {\n p = new Photon(x, y, ir, options.solar_ray_speed);\n p.vx = vx;\n p.vy = vy;\n model.addPhoton(p);\n for (k = 0; k < nray - 1; k += 1) {\n p = new Photon(x, y, ir, options.solar_ray_speed);\n p.vx = vxi[k];\n p.vy = vyi[k];\n model.addPhoton(p);\n }\n if (!this.constant_temperature) {\n model.changeAverageTemperatureAt(x, y, -ir * nray / this.specific_heat);\n }\n }\n }\n }\n};\n"," \nimport arrays from 'arrays';\nimport { makeHeatSolver } from 'models/energy2d/models/physics-solvers/heat-solver';\nimport { makeHeatSolverGPU } from 'models/energy2d/models/physics-solvers-gpu/heat-solver-gpu';\nimport { makeFluidSolver } from 'models/energy2d/models/physics-solvers/fluid-solver';\nimport { makeFluidSolverGPU } from 'models/energy2d/models/physics-solvers-gpu/fluid-solver-gpu';\nimport { makeRaySolver } from 'models/energy2d/models/physics-solvers/ray-solver';\nimport { Part } from 'models/energy2d/models/part';\nimport gpgpu from 'models/energy2d/gpu/gpgpu';\nimport { hypot } from 'models/energy2d/models/helpers';\n\nvar array_type = (function() { try {\n new Float32Array();\n } catch (e) {\n return 'regular';\n }\n return 'Float32Array';\n }());\n\n// Core Energy2D model.\n//\n// It creates and manages all the data and parameters used for calculations.\nexport const makeCoreModel = function(opt, partsOpt) {\n var\n // Simulation grid dimensions.\n nx = opt.grid_width,\n ny = opt.grid_height,\n array_size = nx * ny,\n\n // Spacing.\n delta_x = opt.model_width / nx,\n delta_y = opt.model_height / ny,\n\n // Simulation steps counter.\n indexOfStep = 0,\n\n // Physics solvers\n // (initialized later, when core model object is built).\n heatSolver,\n fluidSolver,\n ray_solver,\n\n // GPU versions of solvers.\n heat_solver_gpu,\n fluid_solver_gpu,\n\n // Optimization flags.\n radiative,\n has_part_power,\n\n // WebGL GPGPU optimization.\n WebGL_active = false,\n // This variable holds possible error message connected with WebGL.\n WebGL_error,\n\n // Performance model.\n // By default, mock this object.\n // To measure performance, set valid object\n // using core_model.setPerformanceTools(tools);\n perf = {\n start: function() {},\n stop: function() {},\n startFPS: function() {},\n updateFPS: function() {},\n stopFPS: function() {}\n },\n\n //\n // Simulation arrays:\n //\n // - temperature array\n t = arrays.create(array_size, opt.background_temperature, array_type),\n // - internal temperature boundary array\n tb = arrays.create(array_size, NaN, array_type),\n // - velocity x-component array (m/s)\n u = arrays.create(array_size, 0, array_type),\n // - velocity y-component array (m/s)\n v = arrays.create(array_size, 0, array_type),\n // - internal heat generation array\n q = arrays.create(array_size, 0, array_type),\n // - wind speed\n uWind = arrays.create(array_size, 0, array_type),\n vWind = arrays.create(array_size, 0, array_type),\n // - conductivity array\n conductivity = arrays.create(array_size, opt.background_conductivity, array_type),\n // - specific heat capacity array\n capacity = arrays.create(array_size, opt.background_specific_heat, array_type),\n // - density array\n density = arrays.create(array_size, opt.background_density, array_type),\n // - fluid cell array\n fluidity = arrays.create(array_size, true, array_type),\n // - photons array\n photons = [],\n\n //\n // [GPGPU] Simulation textures:\n //\n // texture 0:\n // - R: t\n // - G: t0\n // - B: tb\n // - A: conductivity\n // texture 1:\n // - R: q\n // - G: capacity\n // - B: density\n // - A: fluidity\n // texture 2:\n // - R: u\n // - G: v\n // - B: u0\n // - A: v0\n // texture 3:\n // - R: uWind\n // - G: vWind\n // - B: undefined\n // - A: undefined\n texture = [],\n\n // Generate parts array.\n parts = (function() {\n var result = [], i, len;\n\n if (partsOpt) {\n if (!arrays.isArray(partsOpt)) { partsOpt = [partsOpt];\n }\n result = new Array(partsOpt.length);\n for (i = 0, len = partsOpt.length; i < len; i += 1) { result[i] = new Part(partsOpt[i]);\n }\n }\n return result;\n }()),\n\n //\n // Private methods\n //\n initGPGPU = function() {\n WebGL_active = false;\n\n // Make sure that environment is a browser.\n if (typeof window === 'undefined') {\n throw new Error(\"Core model: WebGL GPGPU unavailable in the node.js environment.\");\n }\n // Init module.\n // Width is ny, height is nx (due to data organization).\n gpgpu.init(ny, nx);\n\n // Create simulation textures.\n texture[0] = gpgpu.createTexture();\n texture[1] = gpgpu.createTexture();\n texture[2] = gpgpu.createTexture();\n texture[3] = gpgpu.createTexture();\n\n // Update textures as material properties should be already set.\n fillGPGPUTextures();\n\n // Create GPU solvers.\n // GPU version of heat solver.\n heat_solver_gpu = makeHeatSolverGPU(core_model);\n // GPU version of fluid solver.\n fluid_solver_gpu = makeFluidSolverGPU(core_model);\n\n WebGL_active = true;\n },\n\n fillGPGPUTextures = function() {\n // texture 0:\n // - R: t\n // - G: t0\n // - B: tb\n // - A: conductivity\n gpgpu.writeRGBATexture(texture[0], t, t, tb, conductivity);\n // texture 1:\n // - R: q\n // - G: capacity\n // - B: density\n // - A: fluidity\n gpgpu.writeRGBATexture(texture[1], q, capacity, density, fluidity);\n // texture 2:\n // - R: u\n // - G: v\n // - B: u0\n // - A: v0\n gpgpu.writeRGBATexture(texture[2], u, v, u, v);\n // texture 3:\n // - R: uWind\n // - G: vWind\n // - B: undefined\n // - A: undefined\n gpgpu.writeRGBATexture(texture[3], uWind, vWind, uWind, vWind);\n },\n\n setupOptimizationFlags = function() {\n radiative = (function() {\n var i, len;\n if (opt.sunny) { return true;\n }\n for (i = 0, len = parts.length; i < len; i += 1) { if (parts[i].emissivity > 0) { return true; }\n }\n return false;\n }());\n\n has_part_power = (function() {\n var i, len;\n for (i = 0, len = parts.length; i < len; i += 1) {\n if (parts[i].power > 0) {\n return true;\n }\n }\n return false;\n }());\n },\n\n setupPart = function(part, updateOnly) {\n var\n lx = opt.model_width,\n ly = opt.model_height,\n indices, idx,\n ii, len;\n\n indices = part.getGridCells(nx, ny, lx, ly);\n for (ii = 0, len = indices.length; ii < len; ii += 1) {\n idx = indices[ii];\n\n if (!updateOnly) {\n t[idx] = part.temperature;\n }\n fluidity[idx] = false;\n conductivity[idx] = part.thermal_conductivity;\n capacity[idx] = part.specific_heat;\n density[idx] = part.density;\n\n if (part.wind_speed !== 0) {\n uWind[idx] = part.wind_speed * Math.cos(part.wind_angle);\n vWind[idx] = part.wind_speed * Math.sin(part.wind_angle);\n }\n\n if (part.constant_temperature) {\n tb[idx] = part.temperature;\n }\n }\n },\n\n resetArrays = function(skipTempAndVelocity) {\n if (!skipTempAndVelocity) {\n arrays.fill(t, opt.background_temperature);\n arrays.fill(u, 0);\n arrays.fill(v, 0);\n }\n arrays.fill(tb, NaN);\n arrays.fill(q, 0);\n arrays.fill(uWind, 0);\n arrays.fill(vWind, 0);\n arrays.fill(conductivity, opt.background_conductivity);\n arrays.fill(capacity, opt.background_specific_heat);\n arrays.fill(density, opt.background_density);\n arrays.fill(fluidity, true);\n },\n\n setupMaterialProperties = function(updateOnly) {\n if (!parts || parts.length === 0) return;\n var i;\n // Treat overlapping parts as original Energy2D.\n for (i = parts.length - 1; i >= 0; i -= 1) {\n setupPart(parts[i], updateOnly);\n }\n },\n\n refreshPowerArray = function() {\n var part, x, y, i, iny, j, k, len, count;\n for (i = 0; i < nx; i += 1) {\n x = i * delta_x;\n iny = i * ny;\n for (j = 0; j < ny; j += 1) {\n y = j * delta_y;\n q[iny + j] = 0;\n count = 0;\n if (has_part_power) {\n for (k = 0, len = parts.length; k < len; k += 1) {\n part = parts[k];\n if (part.shape.contains(x, y)) {\n q[iny + j] += part.power;\n count++;\n }\n }\n if (count > 0) q[iny + j] /= count;\n }\n }\n }\n },\n\n getVorticityAt = function(i, j) {\n var du_dy = (u[i * ny + j + 1] - u[i * ny + j - 1]) / delta_x,\n dv_dx = (v[(i + 1) * ny + j] - v[(i - 1) * ny + j]) / delta_y;\n return 0.5 * (du_dy - dv_dx);\n },\n\n //\n // Public API\n //\n core_model = {\n // !!!\n // Performs next step of a simulation.\n // !!!\n nextStep: function() {\n perf.start('Core model step');\n if (WebGL_active) {\n // GPU solvers.\n if (opt.convective) {\n perf.start('Fluid solver GPU');\n fluid_solver_gpu.solve();\n perf.stop('Fluid solver GPU');\n }\n perf.start('Heat solver GPU');\n heat_solver_gpu.solve(opt.convective);\n perf.stop('Heat solver GPU');\n } else {\n // CPU solvers.\n if (radiative) {\n perf.start('Ray solver CPU');\n if (indexOfStep % opt.photon_emission_interval === 0) {\n refreshPowerArray();\n if (opt.sunny) {\n ray_solver.sunShine();\n }\n ray_solver.radiate();\n }\n ray_solver.solve();\n perf.stop('Ray solver CPU');\n }\n if (opt.convective) {\n perf.start('Fluid solver CPU');\n fluidSolver.solve(u, v);\n perf.stop('Fluid solver CPU');\n }\n perf.start('Heat solver CPU');\n heatSolver.solve(opt.convective, t, q);\n perf.stop('Heat solver CPU');\n }\n indexOfStep += 1;\n perf.stop('Core model step');\n },\n\n // Sets performance tools.\n // It's expected to be an object created by\n // energy2d.utils.performance.makePerformanceTools\n setPerformanceTools: function(perf_tools) {\n perf = perf_tools;\n },\n\n reset: function() {\n indexOfStep = 0;\n resetArrays();\n setupOptimizationFlags();\n setupMaterialProperties();\n refreshPowerArray();\n if (WebGL_active) {\n fillGPGPUTextures();\n }\n },\n\n partsChanged: function(part, propChanged) {\n // TODO: in theory we don't have to process all parts. If needed\n // implement something tricker.\n // Note that temperature and velocity aren't reset to provide better\n // interactivity.\n resetArrays(true);\n setupOptimizationFlags();\n setupMaterialProperties(true);\n refreshPowerArray();\n\n if (propChanged === \"temperature\") {\n setupPart(part);\n }\n },\n\n addPart: function(props) {\n var part = new Part(props);\n parts.push(part);\n setupPart(part);\n },\n\n removePart: function(i) {\n parts.splice(i, 1);\n core_model.partsChanged();\n },\n\n useWebGL: function(v) {\n if (WebGL_active === v) return;\n if (!core_model.isWebGLCompatible()) {\n // Some models are incompatible with WebGL.\n WebGL_active = false;\n return;\n }\n\n if (v) {\n // Initialize GPGPU, this will also copy current temperature\n // and velocity arrays into textures.\n initGPGPU();\n } else {\n // Copy data back from GPU to main memory.\n core_model.syncTemperature();\n core_model.syncVelocity();\n WebGL_active = false;\n }\n },\n\n isWebGLActive: function() {\n return WebGL_active;\n },\n\n isWebGLCompatible: function() {\n return !radiative;\n },\n\n getWebGLError: function() {\n return WebGL_error;\n },\n\n syncTemperature: function() {\n if (WebGL_active) {\n gpgpu.readTexture(texture[0], t);\n }\n },\n\n syncVelocity: function() {\n if (WebGL_active) {\n gpgpu.readTexture(texture[2], u, 0);\n gpgpu.readTexture(texture[2], v, 1);\n }\n },\n\n getIndexOfStep: function() {\n return indexOfStep;\n },\n // Returns loaded options after validation.\n getModelOptions: function() {\n return opt;\n },\n\n // Temperature manipulation.\n getTemperatureAt: function(x, y) {\n var\n i = Math.max(Math.min(nx - 1, Math.round(x / delta_x)), 0),\n j = Math.max(Math.min(ny - 1, Math.round(y / delta_y)), 0);\n\n return t[i * ny + j];\n },\n\n setTemperatureAt: function(x, y, temperature) {\n var\n i = Math.max(Math.min(nx - 1, Math.round(x / delta_x)), 0),\n j = Math.max(Math.min(ny - 1, Math.round(y / delta_y)), 0);\n\n t[i * ny + j] = temperature;\n },\n\n getAverageTemperatureAt: function(x, y) {\n var\n temp = 0,\n nx1 = nx - 1,\n ny1 = ny - 1,\n i0 = Math.round(x / delta_x),\n j0 = Math.round(y / delta_y),\n i, j;\n\n i = Math.max(Math.min(nx1, i0), 0);\n j = Math.max(Math.min(ny1, j0), 0);\n temp += t[i * ny + j];\n i = Math.max(Math.min(nx1, i0 + 1), 0);\n j = Math.max(Math.min(ny1, j0), 0);\n temp += t[i * ny + j];\n i = Math.max(Math.min(nx1, i0 - 1), 0);\n j = Math.max(Math.min(ny1, j0), 0);\n temp += t[i * ny + j];\n i = Math.max(Math.min(nx1, i0), 0);\n j = Math.max(Math.min(ny1, j0 + 1), 0);\n temp += t[i * ny + j];\n i = Math.max(Math.min(nx1, i0), 0);\n j = Math.max(Math.min(ny1, j0 - 1), 0);\n temp += t[i * ny + j];\n return temp * 0.2;\n },\n\n // TODO: based on Java version, check it as the logic seems to be weird.\n changeAverageTemperatureAt: function(x, y, increment) {\n var\n nx1 = nx - 1,\n ny1 = ny - 1,\n i0 = Math.round(x / delta_x),\n j0 = Math.round(y / delta_y),\n i, j;\n\n increment *= 0.2;\n i = Math.min(nx1, i0);\n j = Math.min(ny1, j0);\n if (i >= 0 && j >= 0) {\n t[i * ny + j] += increment;\n }\n i = Math.min(nx1, i0 + 1);\n j = Math.min(ny1, j0);\n if (i >= 0 && j >= 0) {\n t[i * ny + j] += increment;\n }\n i = Math.min(nx1, i0 - 1);\n j = Math.min(ny1, j0);\n if (i >= 0 && j >= 0) {\n t[i * ny + j] += increment;\n }\n i = Math.min(nx1, i0);\n j = Math.min(ny1, j0 + 1);\n if (i >= 0 && j >= 0) {\n t[i * ny + j] += increment;\n }\n i = Math.min(nx1, i0);\n j = Math.min(ny1, j0 - 1);\n if (i >= 0 && j >= 0) {\n t[i * ny + j] += increment;\n }\n },\n\n getVorticityAt: function(x, y) {\n var i = Math.max(Math.min(nx - 1, Math.round(x / delta_x)), 0),\n j = Math.max(Math.min(ny - 1, Math.round(y / delta_y)), 0);\n return getVorticityAt(i, j);\n },\n\n getAverageVorticityAt: function(x, y) {\n var i = Math.max(Math.min(nx - 1, Math.round(x / delta_x)), 0),\n j = Math.max(Math.min(ny - 1, Math.round(y / delta_y)), 0),\n vor = getVorticityAt(i, j);\n vor += getVorticityAt(i - 1, j);\n vor += getVorticityAt(i + 1, j);\n vor += getVorticityAt(i, j - 1);\n vor += getVorticityAt(i, j + 1);\n vor += getVorticityAt(i - 1, j - 1);\n vor += getVorticityAt(i - 1, j + 1);\n vor += getVorticityAt(i + 1, j - 1);\n vor += getVorticityAt(i + 1, j + 1);\n return vor / 9;\n },\n\n getSpeedAt: function(x, y) {\n var\n i = Math.max(Math.min(nx - 1, Math.round(x / delta_x)), 0),\n j = Math.max(Math.min(ny - 1, Math.round(y / delta_y)), 0);\n\n return hypot(u[i * ny + j], v[i * ny + j]);\n },\n\n getHeatFluxAt: function(x, y) {\n var\n i = Math.max(Math.min(nx - 1, Math.round(x / delta_x)), 0),\n j = Math.max(Math.min(ny - 1, Math.round(y / delta_y)), 0),\n fx = conductivity[i * ny + j] * (t[(i - 1) * ny + j] - t[(i + 1) * ny + j]) / (2 * delta_x),\n fy = conductivity[i * ny + j] * (t[i * ny + j - 1] - t[i * ny + j + 1]) / (2 * delta_y);\n return [fx, fy];\n },\n\n addPhoton: function(photon) {\n photons.push(photon);\n },\n\n removePhoton: function(photon) {\n var idx = photons.indexOf(photon);\n if (idx !== -1) {\n photons.splice(idx, 1);\n }\n },\n\n // Simple getters.\n getArrayType: function() {\n // return module variable\n return array_type;\n },\n getPerformanceModel: function() {\n return perf;\n },\n // Arrays.\n getTemperatureArray: function() {\n return t;\n },\n getUVelocityArray: function() {\n return u;\n },\n getVVelocityArray: function() {\n return v;\n },\n getUWindArray: function() {\n return uWind;\n },\n getVWindArray: function() {\n return vWind;\n },\n getBoundaryTemperatureArray: function() {\n return tb;\n },\n getPowerArray: function() {\n return q;\n },\n getConductivityArray: function() {\n return conductivity;\n },\n getCapacityArray: function() {\n return capacity;\n },\n getDensityArray: function() {\n return density;\n },\n getFluidityArray: function() {\n return fluidity;\n },\n getPhotonsArray: function() {\n return photons;\n },\n getPartsArray: function() {\n return parts;\n },\n // Textures.\n getTemperatureTexture: function() {\n return texture[0];\n },\n getVelocityTexture: function() {\n return texture[2];\n },\n getSimulationTexture: function(id) {\n return texture[id];\n }\n };\n\n //\n // One-off initialization.\n //\n setupOptimizationFlags();\n setupMaterialProperties();\n refreshPowerArray();\n\n // CPU version of solvers.\n heatSolver = makeHeatSolver(core_model);\n fluidSolver = makeFluidSolver(core_model);\n ray_solver = makeRaySolver(core_model);\n\n // Finally, return public API object.\n return core_model;\n};\n","\nimport alert from 'common/alert';\nimport console from 'common/console';\nimport validator from 'common/validator';\nimport serialize from 'common/serialize';\nimport performance from 'common/performance';\nimport LabModelerMixin from 'common/lab-modeler-mixin';\nimport metadata from 'models/energy2d/metadata';\nimport { makeCoreModel } from 'models/energy2d/models/core-model';\n\nvar unitsDefinition = {\n units: {\n time: {\n name: \"second\",\n pluralName: \"seconds\",\n symbol: \"s\"\n },\n temperature: {\n name: \"degree Celsius\",\n pluralName: \"degrees Celsius\",\n symbol: \"°C\"\n },\n length: {\n name: \"meter\",\n pluralName: \"meters\",\n symbol: \"m\"\n },\n velocity: {\n name: \"meter per second\",\n pluralName: \"meters per second\",\n symbol: \"m/s\"\n }\n }\n },\n\n energy2dModelCount = 0;\n\n\nexport default function Modeler(initialProperties) {\n var model,\n coreModel,\n namespace = \"energy2dModel\" + (++energy2dModelCount),\n\n labModelerMixin = new LabModelerMixin({\n metadata: metadata,\n unitsDefinition: unitsDefinition,\n initialProperties: initialProperties,\n setters: {\n use_WebGL: function(v) {\n if (coreModel) {\n setWebGLEnabled(v);\n }\n ticksToGPUSync = model.properties.ticksPerGPUSync;\n },\n ticksPerGPUSync: function(v) {\n if (coreModel) syncGPU();\n ticksToGPUSync = Number(v); // support \"Infinity\" value\n }\n }\n }),\n propertySupport = labModelerMixin.propertySupport,\n dispatch = labModelerMixin.dispatchSupport,\n\n ticksToGPUSync = 0,\n\n // Sensors are modeler-level objects, they only define outputs\n // and have nothing to do with physics calculations.\n sensors = [],\n anemometers = [],\n\n viewModel = {\n parts: [],\n sensors: []\n },\n\n updatePartsViewModel = (function() {\n function PartWrapper(rawPart) {\n Object.defineProperty(this, '_rawPart', {\n enumerable: false,\n get: function() {\n return rawPart;\n }\n });\n }\n Object.keys(metadata.part).forEach(function(key) {\n Object.defineProperty(PartWrapper.prototype, key, {\n enumerable: true,\n get: function() {\n return this._rawPart[key];\n },\n set: function(v) {\n var WebGLOrg = model.properties.use_WebGL;\n // This will update CPU array.\n model.properties.use_WebGL = false;\n\n propertySupport.invalidatingChangePreHook();\n\n // Update raw part object.\n this._rawPart[key] = validator.validateSingleProperty(metadata.part[key], key, v);\n\n if (model.isStopped()) {\n // Recalculate all arrays, \"authoring\" mode.\n coreModel.reset();\n } else {\n // Update core model arrays based on part's properties.\n coreModel.partsChanged(this._rawPart, key);\n }\n\n propertySupport.invalidatingChangePostHook();\n\n // Restore original WebGL option value. It will\n // copy CPU arrays to GPU in case of need.\n model.properties.use_WebGL = WebGLOrg;\n dispatch.partsChanged();\n }\n });\n });\n PartWrapper.prototype.computeLabel = function() {\n return this._rawPart.getLabel();\n };\n\n return function() {\n var rawParts = coreModel.getPartsArray(),\n viewParts = viewModel.parts,\n i, len;\n viewParts.length = 0;\n for (i = 0, len = rawParts.length; i < len; i++) {\n viewParts.push(new PartWrapper(rawParts[i]));\n }\n };\n }()),\n\n updateSensorViewModel = (function() {\n function SensorWrapper(rawObj) {\n Object.defineProperty(this, '_rawObj', {\n enumerable: false,\n get: function() {\n return rawObj;\n }\n });\n }\n var constraint = {\n x: function(v) {\n return Math.max(0, Math.min(model.properties.model_width, v));\n },\n y: function(v) {\n return Math.max(0, Math.min(model.properties.model_height, v));\n }\n };\n Object.keys(metadata.sensor).forEach(function(key) {\n Object.defineProperty(SensorWrapper.prototype, key, {\n enumerable: true,\n get: function() {\n return this._rawObj[key];\n },\n set: function(v) {\n propertySupport.invalidatingChangePreHook();\n v = constraint[key] ? constraint[key](v) : v;\n this._rawObj[key] = validator.validateSingleProperty(metadata.sensor[key], key, v);\n propertySupport.invalidatingChangePostHook();\n dispatch.sensorsChanged();\n }\n });\n });\n\n return function() {\n var viewSensors = viewModel.sensors,\n i, len;\n viewSensors.length = 0;\n for (i = 0, len = sensors.length; i < len; i++) {\n viewSensors.push(new SensorWrapper(sensors[i]));\n }\n };\n }());\n\n function setWebGLEnabled(v) {\n try {\n coreModel.useWebGL(v);\n } catch (e) {\n console.warn(\"WebGL initialization failed. CPU solvers and rendering will be used.\");\n console.warn(e.message);\n }\n }\n\n function syncGPU() {\n coreModel.syncTemperature();\n coreModel.syncVelocity();\n }\n\n function hasDiverged() {\n var t = model.getTemperatureArray(),\n i, len;\n\n for (i = 0, len = t.length; i < len; i++) {\n if (isNaN(t[i]) || Math.abs(t[i]) > 1e10) {\n model.stop();\n coreModel.reset();\n return true;\n }\n }\n return false;\n }\n\n function validateParts(partsArray) {\n var result = [];\n partsArray.forEach(function(v) {\n result.push(validator.validateCompleteness(metadata.part, v));\n });\n return result;\n }\n\n function createSensors(sensorsSpec) {\n var sensorValue = {\n thermometer: function() {\n return model.getTemperatureAt(this.x, this.y);\n },\n anemometer: function() {\n return this._rot;\n },\n heatFlux: function() {\n var flux = model.getHeatFluxAt(this.x, this.y);\n return flux[0] * this._sin + flux[1] * this._cos;\n }\n },\n sensorOutputDesc = {\n thermometer: {\n label: \"Temperature\",\n unitType: 'temperature',\n format: '.1f'\n },\n anemometer: {},\n heatFlux: {\n label: \"Heat Flux\",\n unitName: \"Watt Per Square Meter\",\n unitPluralName: \"Watts Per Square Meter\",\n unitAbbreviation: \"W/m²\",\n format: '.1f'\n }\n };\n\n sensors = [];\n sensorsSpec.forEach(function(s, idx) {\n s = validator.validateCompleteness(metadata.sensor, s);\n if (s.type === \"anemometer\") {\n s._rot = 0;\n anemometers.push(s);\n }\n if (s.type === \"heatFlux\") {\n s.angle = s.angle || 0;\n s._sin = Math.sin(-s.angle * Math.PI / 180);\n s._cos = Math.cos(s.angle * Math.PI / 180);\n }\n Object.defineProperty(s, \"value\", {\n enumerable: true,\n get: sensorValue[s.type]\n });\n sensors.push(s);\n\n model.defineOutput(\"sensor-\" + idx, sensorOutputDesc[s.type], function() {\n return s.value;\n });\n });\n }\n\n function updateAnemometers() {\n var a, i, len;\n for (i = 0, len = anemometers.length; i < len; i++) {\n a = anemometers[i];\n a._rot += model.getSpeedAt(a.x, a.y) * (model.getVorticityAt(a.x, a.y) < 0 ? -1 : 1) *\n model.properties.timeStep * 700;\n a._rot = a._rot % 360;\n }\n }\n\n model = {\n namespace: namespace,\n\n tick: function() {\n var i, len, diverged;\n\n performance.enterScope(\"engine\");\n for (i = 0, len = model.properties.timeStepsPerTick; i < len; i++) {\n coreModel.nextStep();\n }\n performance.leaveScope(\"engine\");\n\n if (coreModel.isWebGLActive()) {\n if (ticksToGPUSync > 0) {\n ticksToGPUSync--;\n } else {\n syncGPU();\n ticksToGPUSync = Number(model.properties.ticksPerGPUSync); // support \"Infinity\" value\n diverged = hasDiverged();\n }\n } else {\n diverged = hasDiverged();\n }\n updateAnemometers();\n model.updateAllOutputProperties();\n dispatch.tick();\n\n if (diverged) {\n alert(\"The model has diverged and has been reset!\\n\\nTry changing its parameters \" +\n \"(e.g. 'timeStep', positions of parts etc.) or reload it to restore the initial configuration.\");\n }\n },\n\n syncTemperature: function() {\n propertySupport.invalidatingChangePreHook();\n coreModel.syncTemperature();\n propertySupport.invalidatingChangePostHook();\n },\n syncVelocity: function() {\n propertySupport.invalidatingChangePreHook();\n coreModel.syncVelocity();\n propertySupport.invalidatingChangePostHook();\n },\n\n addPart: function(props) {\n var WebGLOrg = model.properties.use_WebGL;\n\n // This will update CPU array.\n model.properties.use_WebGL = false;\n\n props = validator.validateCompleteness(metadata.part, props);\n\n propertySupport.invalidatingChangePreHook();\n\n coreModel.addPart(props);\n updatePartsViewModel();\n\n propertySupport.invalidatingChangePostHook();\n\n // Restore original WebGL option value. It will\n // copy CPU arrays to GPU in case of need.\n model.properties.use_WebGL = WebGLOrg;\n dispatch.partsChanged();\n },\n\n removePart: function(i) {\n var WebGLOrg = model.properties.use_WebGL;\n\n // This will update CPU array.\n model.properties.use_WebGL = false;\n\n propertySupport.invalidatingChangePreHook();\n\n coreModel.removePart(i);\n updatePartsViewModel();\n\n propertySupport.invalidatingChangePostHook();\n\n // Restore original WebGL option value. It will\n // copy CPU arrays to GPU in case of need.\n model.properties.use_WebGL = WebGLOrg;\n dispatch.partsChanged();\n },\n\n // Beware. The \"reset\" button in Lab interactives do not call this method. Instead they \"reload\"\n // the model, discarding this model object and creating a new one from the model JSON.\n reset: function() {\n dispatch.willReset();\n propertySupport.invalidatingChangePreHook();\n\n model.stop();\n coreModel.reset();\n\n var parts;\n // Validate parts before passing options to coreModel.\n if (initialProperties.structure && initialProperties.structure.part) {\n parts = validateParts(initialProperties.structure.part);\n }\n coreModel = makeCoreModel(model.properties, parts);\n setWebGLEnabled(model.properties.use_WebGL);\n if (initialProperties.sensors) {\n createSensors(initialProperties.sensors);\n }\n updatePartsViewModel();\n updateSensorViewModel();\n\n propertySupport.invalidatingChangePostHook();\n model.resetAllOutputProperties();\n dispatch.reset();\n dispatch.invalidation();\n },\n\n stepCounter: function() {\n return coreModel.getIndexOfStep();\n },\n isNewStep: function() {\n return true;\n },\n stepBack: function(num) {\n return coreModel.getIndexOfStep();\n },\n stepForward: function(num) {\n if (!arguments.length) {\n num = 1;\n }\n if (!this.isStopped()) {\n this.stop();\n }\n var i = -1;\n while (++i < num) {\n model.tick();\n }\n return coreModel.getIndexOfStep();\n },\n getTime: function() {\n return model.properties.timeStep * coreModel.getIndexOfStep();\n },\n isWebGLActive: function() {\n return coreModel.isWebGLActive();\n },\n isWebGLCompatible: function() {\n return coreModel.isWebGLCompatible();\n },\n getWebGLError: function() {\n return coreModel.getWebGLError();\n },\n getIndexOfStep: function() {\n return coreModel.getIndexOfStep();\n },\n getTemperatureAt: function(x, y) {\n return coreModel.getTemperatureAt(x, y);\n },\n getAverageTemperatureAt: function(x, y) {\n return coreModel.getAverageTemperatureAt(x, y);\n },\n getVorticityAt: function(x, y) {\n return coreModel.getVorticityAt(x, y);\n },\n getHeatFluxAt: function(x, y) {\n return coreModel.getHeatFluxAt(x, y);\n },\n getAverageVorticityAt: function(x, y) {\n return coreModel.getAverageVorticityAt(x, y);\n },\n getSpeedAt: function(x, y) {\n return coreModel.getSpeedAt(x, y);\n },\n getTemperatureArray: function() {\n return coreModel.getTemperatureArray();\n },\n getTemperatureTexture: function() {\n return coreModel.getTemperatureTexture();\n },\n getUVelocityArray: function() {\n return coreModel.getUVelocityArray();\n },\n getVVelocityArray: function() {\n return coreModel.getVVelocityArray();\n },\n getVelocityTexture: function() {\n return coreModel.getVelocityTexture();\n },\n getPhotonsArray: function() {\n return coreModel.getPhotonsArray();\n },\n\n getPartsArray: function() {\n return viewModel.parts;\n },\n\n getSensorsArray: function() {\n return viewModel.sensors;\n },\n\n serialize: function() {\n var propCopy = {},\n rawProperties = propertySupport.rawValues;\n\n propCopy = serialize(metadata.mainProperties, rawProperties);\n propCopy.viewOptions = serialize(metadata.viewOptions, rawProperties);\n\n propCopy.structure = {\n part: []\n };\n viewModel.parts.forEach(function(p) {\n propCopy.structure.part.push(serialize(metadata.part, p));\n });\n\n propCopy.sensors = [];\n viewModel.sensors.forEach(function(s) {\n propCopy.sensors.push(serialize(metadata.sensor, s));\n });\n\n return propCopy;\n }\n };\n\n (function() {\n var parts;\n\n labModelerMixin.mixInto(model);\n dispatch.addEventTypes(\"tick\", \"partsChanged\", \"sensorsChanged\");\n\n // Validate parts before passing options to coreModel.\n if (initialProperties.structure && initialProperties.structure.part) {\n parts = validateParts(initialProperties.structure.part);\n }\n\n coreModel = makeCoreModel(model.properties, parts);\n setWebGLEnabled(model.properties.use_WebGL);\n\n if (initialProperties.sensors) {\n createSensors(initialProperties.sensors);\n }\n\n updatePartsViewModel();\n updateSensorViewModel();\n\n // FIXME. More yuck: We still need a pattern for recompute model properties which don't depend\n // on physics (and which therefore can be recomputed without invalidating and recomputing all\n // the physics based properties) while still making them (1) observable and (2) read-only.\n\n // used to triggers recomputation of isPlayable property based on isStopped and isReady:\n model.on('play.model', recomputeProperties);\n model.on('stop.model', recomputeProperties);\n\n function recomputeProperties() {\n propertySupport.invalidatingChangePreHook();\n propertySupport.invalidatingChangePostHook();\n }\n\n // Temporal workaround. In fact width and height should\n // be outputs based on min / max.\n model.defineOutput('minX', {}, function() {\n return 0;\n });\n model.defineOutput('minY', {}, function() {\n return 0;\n });\n model.defineOutput('maxX', {}, function() {\n return model.properties.model_width;\n });\n model.defineOutput('maxY', {}, function() {\n return model.properties.model_height;\n });\n\n model.defineOutput('time', {\n label: \"Time\",\n unitType: 'time',\n format: '.2f'\n }, function() {\n return model.getTime();\n });\n\n model.defineOutput('displayTime', {\n label: \"Time\"\n }, (function() {\n var f = d3.format(\"02d\");\n return function() {\n var time = model.getTime(),\n seconds, minutes, hours, days;\n time = Math.floor(time);\n seconds = time % 60;\n time = Math.floor(time / 60);\n minutes = time % 60;\n time = Math.floor(time / 60);\n hours = time % 24;\n time = Math.floor(time / 24);\n days = time;\n return days + ':' + f(hours) + ':' + f(minutes) + ':' + f(seconds);\n };\n }()));\n\n (function() {\n var hasPlayed = false;\n model.on('play.has-played-support', function() {\n hasPlayed = true;\n });\n model.on('reset.has-played-support', function() {\n hasPlayed = false;\n });\n model.defineOutput('hasPlayed', {\n label: \"has Played\"\n }, function() {\n return hasPlayed;\n });\n }());\n }());\n\n return model;\n};\n","/*jslint indent: 2, browser: true, newcap: true */\n\n\n// Return module with functions.\nexport default {\n // HSV to RGB color conversion.\n //\n // H runs from 0 to 360 degrees,\n // S and V run from 0 to 100.\n // \n // Ported from the excellent java algorithm by Eugene Vishnevsky at:\n // http://www.cs.rit.edu/~ncs/color/t_convert.html\n // http://snipplr.com/view.php?codeview&id=14590\n HSVToRGB: function(h, s, v) {\n var r, g, b,\n i,\n f, p, q, t;\n\n // Make sure our arguments stay in-range\n h = Math.max(0, Math.min(360, h));\n s = Math.max(0, Math.min(100, s));\n v = Math.max(0, Math.min(100, v));\n\n // We accept saturation and value arguments from 0 to 100 because that's\n // how Photoshop represents those values. Internally, however, the\n // saturation and value are calculated from a range of 0 to 1. We make\n // That conversion here.\n s /= 100;\n v /= 100;\n\n if (s === 0) {\n // Achromatic (grey)\n r = g = b = v;\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n }\n\n h /= 60; // sector 0 to 5\n i = Math.floor(h);\n f = h - i; // factorial part of h\n p = v * (1 - s);\n q = v * (1 - s * f);\n t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n default: // case 5:\n r = v;\n g = p;\n b = q;\n }\n\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n }\n};\n","/*jslint indent: 2, browser: true, newcap: true, sub: true */ \nimport view_helpers from 'models/energy2d/views/helpers';\n\nvar\n// Dependencies.\n \n\n // Object with available color palettes.\n color_palette,\n // Constructor function.\n ColorPalette;\n\n// Setup basic color palettes.\ncolor_palette = {};\ncolor_palette['0'] = color_palette['RAINBOW'] = [\n [0, 0, 128],\n [20, 50, 120],\n [20, 100, 200],\n [10, 150, 150],\n [120, 180, 50],\n [220, 200, 10],\n [240, 160, 36],\n [225, 50, 50],\n [230, 85, 110],\n [250, 250, 250],\n [255, 255, 255]\n];\ncolor_palette['1'] = color_palette['IRON'] = [\n [40, 20, 100],\n [80, 20, 150],\n [150, 20, 150],\n [200, 50, 120],\n [220, 80, 80],\n [230, 120, 30],\n [240, 200, 20],\n [240, 220, 80],\n [255, 255, 125],\n [250, 250, 250],\n [255, 255, 255]\n];\ncolor_palette['2'] = color_palette['GRAY'] = [\n [50, 50, 50],\n [75, 75, 75],\n [100, 100, 100],\n [125, 125, 125],\n [150, 150, 150],\n [175, 175, 175],\n [200, 200, 200],\n [225, 225, 225],\n [250, 250, 250],\n [255, 255, 255]\n];\ncolor_palette['3'] = color_palette['RAINBOW2'] = (function() {\n var HSVToRGB = view_helpers.HSVToRGB,\n length = 256,\n rgb = new Array(length),\n i;\n\n for (i = 0; i < length; i += 1) {\n rgb[i] = view_helpers.HSVToRGB(length - 1 - i, 100, 90);\n }\n return rgb;\n}());\n\nColorPalette = function(color_palette_id) {\n if (color_palette_id === undefined || color_palette_id === 'DEFAULT') {\n color_palette_id = 'RAINBOW';\n }\n this.color_palette_id = color_palette_id;\n};\n\nColorPalette.prototype.getRGBArray = function() {\n if (color_palette[this.color_palette_id] !== undefined) {\n return color_palette[this.color_palette_id];\n }\n};\n\n// Export constructor function.\nexport default ColorPalette;\n","// Heatmap view.\n//\n// It uses HTML5 Canvas for rendering.\n// getHTMLElement() returns jQuery object with the canvas used for rendering.\n// Before use, this view should be bound with a heatmap using bindHeapmap(heatmap, grid_width, grid_height).\n// To render the heatmap use renderHeatmap() method.\n// Set size of the heatmap using CSS rules. The view fits canvas dimensions to the real\n// size of the HTML element to avoid low quality CSS scaling *ONLY* when HQ rendering is enabled.\n// Otherwise, the canvas has the same dimensions as heatmap grid and fast CSS scaling is used.\nimport ColorPalette from 'models/energy2d/views/color-palette';\n\nexport default function HeatmapView(html_id) {\n var DEFAULT_ID = 'energy2d-heatmap-view',\n\n $heatmap_canvas,\n canvas_ctx,\n\n rgb_array,\n max_rgb_idx,\n\n heatmap,\n grid_width,\n grid_height,\n min_temp = 0,\n max_temp = 50,\n\n //\n // Private methods.\n //\n initHTMLelement = function() {\n $heatmap_canvas = $('');\n $heatmap_canvas.attr('id', html_id || DEFAULT_ID);\n canvas_ctx = $heatmap_canvas[0].getContext('2d');\n },\n\n //\n // Public API.\n //\n heatmap_view = {\n // Render heat map on the canvas.\n renderHeatmap: function() {\n var scale, rgb_idx, val, color1, color2,\n image_data, data,\n i, j, iny, pix_index, pix_stride;\n\n if (!heatmap) {\n throw new Error(\"Heatmap: bind heatmap before rendering.\");\n }\n\n canvas_ctx.clearRect(0, 0, grid_width, grid_height);\n // TODO: is it really necessary?\n canvas_ctx.fillStyle = \"rgb(0,0,0)\";\n\n scale = max_rgb_idx / Math.max(1, max_temp - min_temp);\n image_data = canvas_ctx.getImageData(0, 0, grid_width, grid_height);\n data = image_data.data;\n\n pix_index = 0;\n pix_stride = 4 * grid_width;\n for (i = 0; i < grid_width; i += 1) {\n iny = i * grid_height;\n pix_index = 4 * i;\n for (j = 0; j < grid_height; j += 1) {\n val = scale * (heatmap[iny + j] - min_temp);\n rgb_idx = Math.floor(val);\n // Get fractional part of val.\n val -= rgb_idx;\n if (rgb_idx < 0) {\n rgb_idx = 0;\n val = 0;\n } else if (rgb_idx > max_rgb_idx - 1) {\n rgb_idx = max_rgb_idx - 1;\n val = 1;\n }\n color1 = rgb_array[rgb_idx];\n color2 = rgb_array[rgb_idx + 1];\n data[pix_index] = color1[0] * (1 - val) + color2[0] * val;\n data[pix_index + 1] = color1[1] * (1 - val) + color2[1] * val;\n data[pix_index + 2] = color1[2] * (1 - val) + color2[2] * val;\n data[pix_index + 3] = 255;\n pix_index += pix_stride;\n }\n }\n canvas_ctx.putImageData(image_data, 0, 0);\n },\n\n // Bind heatmap to the view.\n bindHeatmap: function(new_heatmap, new_grid_width, new_grid_height) {\n if (new_grid_width * new_grid_height !== new_heatmap.length) {\n throw new Error(\"Heatmap: provided heatmap has wrong dimensions.\");\n }\n heatmap = new_heatmap;\n grid_width = new_grid_width;\n grid_height = new_grid_height;\n this.setCanvasSize(grid_width, grid_height);\n },\n\n getHTMLElement: function() {\n return $heatmap_canvas;\n },\n\n resize: function() {\n // Don't do anything, canvas width and height depend on grid\n // dimensions, not CSS dimensions of canvas itself.\n // If grid is 100x100, but CSS dimensions are 500x500, CSS scaling\n // will be used.\n },\n\n setCanvasSize: function(w, h) {\n $heatmap_canvas.attr('width', w);\n $heatmap_canvas.attr('height', h);\n },\n\n setMinTemperature: function(v) {\n min_temp = v;\n },\n setMaxTemperature: function(v) {\n max_temp = v;\n },\n setColorPalette: function(id) {\n rgb_array = new ColorPalette(id).getRGBArray();\n max_rgb_idx = rgb_array.length - 1;\n }\n };\n // One-off initialization.\n // Set the default color palette.\n heatmap_view.setColorPalette('DEFAULT');\n\n initHTMLelement();\n\n return heatmap_view;\n};\n","// Heatmap WebGL view.\n//\n// It uses HTML5 Canvas and WebGL for rendering.\n// getHTMLElement() returns jQuery object with the canvas used for rendering.\n// Before use, this view should be bound with a heatmap texture using bindHeapmapTexture(heatmap_tex).\n// To render the heatmap use renderHeatmapTexture() method.\n// Set size of the heatmap using CSS rules.\nimport context from 'models/energy2d/gpu/context';\nimport Texture from 'models/energy2d/gpu/texture';\nimport Shader from 'models/energy2d/gpu/shader';\nimport Mesh from 'models/energy2d/gpu/mesh';\nimport ColorPalette from 'models/energy2d/views/color-palette';\nimport basic_vs from 'models/energy2d/views/heatmap-webgl-glsl/basic.vs.glsl';\nimport temp_renderer_fs from 'models/energy2d/views/heatmap-webgl-glsl/temp-renderer.fs.glsl';\n\nexport default function HeatmapWebGLView(html_id) {\n var\n // Get WebGL context.\n gl = context.getWebGLContext(),\n // GLSL Render program.\n render_program = new Shader(basic_vs, temp_renderer_fs),\n // Plane used for rendering.\n plane = Mesh.plane({\n coords: true\n }),\n // Color palette texture (init later).\n palette_tex,\n\n DEFAULT_ID = 'energy2d-heatmap-webgl-view',\n\n $heatmap_canvas,\n canvas_width,\n canvas_height,\n\n heatmap_tex,\n min_temp = 0,\n max_temp = 50,\n\n //\n // Private methods.\n //\n initHTMLelement = function() {\n $heatmap_canvas = $(gl.canvas);\n $heatmap_canvas.attr('id', html_id || DEFAULT_ID);\n },\n\n // Make sure that no FBO is bound and viewport has proper dimensions\n // (it's not obvious as this context is also used for GPGPU calculations).\n setupRenderTarget = function() {\n // Ensure that FBO is null, as GPGPU operations which use FBOs also take place.\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n // This is necessary, as GPGPU operations can modify viewport size.\n gl.viewport(0, 0, canvas_width, canvas_height);\n },\n\n //\n // Public API.\n //\n heatmap_view = {\n // Render heat map on the canvas.\n renderHeatmap: function() {\n\n if (!heatmap_tex) {\n throw new Error(\"Heatmap: bind heatmap texture before rendering.\");\n }\n\n setupRenderTarget();\n\n gl.clear(gl.COLOR_BUFFER_BIT);\n heatmap_tex.bind(0);\n palette_tex.bind(1);\n render_program.draw(plane);\n palette_tex.unbind(1);\n heatmap_tex.unbind(0);\n },\n\n resize: function() {\n canvas_width = $heatmap_canvas.width();\n canvas_height = $heatmap_canvas.height();\n $heatmap_canvas.attr('width', canvas_width);\n $heatmap_canvas.attr('height', canvas_height);\n },\n\n // Bind heatmap to the view.\n bindHeatmapTexture: function(new_heatmap_tex) {\n heatmap_tex = new_heatmap_tex;\n },\n\n getHTMLElement: function() {\n return $heatmap_canvas;\n },\n\n setMinTemperature: function(v) {\n min_temp = v;\n render_program.uniforms({\n min_temp: min_temp\n });\n },\n setMaxTemperature: function(v) {\n max_temp = v;\n render_program.uniforms({\n max_temp: max_temp\n });\n },\n setColorPalette: function(id) {\n var rgb_array, len, tex_data, i, i4;\n rgb_array = new ColorPalette(id).getRGBArray();\n len = rgb_array.length;\n tex_data = new Uint8Array(len * 4);\n for (i = 0; i < len; i += 1) {\n i4 = i * 4;\n tex_data[i4] = rgb_array[i][0];\n tex_data[i4 + 1] = rgb_array[i][1];\n tex_data[i4 + 2] = rgb_array[i][2];\n tex_data[i4 + 3] = 255;\n }\n palette_tex = new Texture(len, 1, {\n type: gl.UNSIGNED_BYTE,\n format: gl.RGBA,\n filter: gl.LINEAR\n });\n gl.bindTexture(gl.TEXTURE_2D, palette_tex.id);\n gl.texImage2D(gl.TEXTURE_2D, 0, palette_tex.format, len, 1, 0, palette_tex.format, palette_tex.type, tex_data);\n }\n };\n\n // One-off initialization.\n // Set the default color palette.\n heatmap_view.setColorPalette('DEFAULT');\n // Set render program uniforms.\n render_program.uniforms({\n // Texture units.\n heatmap_tex: 0,\n palette_tex: 1,\n // Uniforms.\n min_temp: min_temp,\n max_temp: max_temp\n });\n // Setup texture coordinates.\n plane.coords = [\n [1, 0],\n [1, 1],\n [0, 0],\n [0, 1]\n ];\n // Update buffers.\n plane.compile();\n\n initHTMLelement();\n\n return heatmap_view;\n};\n","export default \"varying vec2 coord;\\n\\nvoid main() {\\n coord = gl_TexCoord.xy;\\n gl_Position = vec4(gl_Vertex.xyz, 1.0);\\n}\\n\";","export default \"// Provided textur contains temperature data in R channel.\\nuniform sampler2D heatmap_tex;\\nuniform sampler2D palette_tex;\\n\\nuniform float max_temp;\\nuniform float min_temp;\\n\\nvarying vec2 coord;\\n\\nvoid main() {\\n float temp = texture2D(heatmap_tex, coord).r;\\n float scaled_temp = (temp - min_temp) / max(1.0, max_temp - min_temp);\\n gl_FragColor = texture2D(palette_tex, vec2(scaled_temp, 0.5));\\n}\\n\";","// WebGL Status.\n// Presents available WebGL features.\n//\n// getHTMLElement() method returns JQuery object with DIV that contains status.\n\nimport CheckboxController from 'common/controllers/checkbox-controller';\nimport gpgpu from 'models/energy2d/gpu/gpgpu';\n\nvar\n// Dependencies.\n \n \n\n GET_WEBGL = '

Click to learn more about WebGL.

';\n\nexport default function WebGLStatusView(html_id, model) {\n var DEFAULT_ID = 'e2d-webgl-status',\n $div,\n $webgl_icon,\n $status_wrapper,\n $status,\n webgl_checkbox,\n $checkbox,\n energy2d_modeler,\n WebGL_status_view,\n interactiveControllerProxy = {\n getModel: function() {\n return model;\n },\n getScriptingAPI: function() {\n return function() {};\n },\n getNextTabIndex: function() {\n return function() {};\n }\n };\n\n //\n // Private methods.\n //\n\n function initHTMLelement() {\n var $closeBtn;\n\n $div = $('
');\n $div.attr('id', html_id || DEFAULT_ID);\n $status_wrapper = $('
');\n $status_wrapper.appendTo($div);\n $status = $('
');\n $status.appendTo($status_wrapper);\n\n $closeBtn = $('');\n $closeBtn.on('click', hide);\n $closeBtn.appendTo($status_wrapper);\n\n $checkbox.appendTo($status_wrapper);\n\n $webgl_icon = $('');\n $webgl_icon.on('click', show);\n $webgl_icon.appendTo($div);\n\n $status_wrapper.hide();\n }\n\n function show() {\n $webgl_icon.hide();\n $status_wrapper.fadeIn();\n }\n\n function hide() {\n $webgl_icon.fadeIn();\n $status_wrapper.fadeOut();\n }\n\n function initialize() {\n // Second argument to new CheckboxController replicates part of an\n // interactiveController to generate the necessary API a checkbox\n // controller component needs\n webgl_checkbox = new CheckboxController({\n \"type\": \"checkbox\",\n \"id\": \"webgl-status-checkbox\",\n \"text\": \"WebGL-accelerated physics engine\",\n \"property\": \"use_WebGL\"\n }, interactiveControllerProxy);\n $checkbox = webgl_checkbox.getViewContainer();\n initHTMLelement();\n }\n\n //\n // Public API.\n //\n WebGL_status_view = {\n bindModel: function(model) {\n energy2d_modeler = model;\n interactiveControllerProxy.getModel = function() {\n return model;\n };\n webgl_checkbox.modelLoadedCallback(interactiveControllerProxy);\n },\n\n render: function() {\n var modelCompatible = energy2d_modeler.isWebGLCompatible(),\n feature = gpgpu.featuresInfo,\n requiredFeatures = true,\n optionalFeatures = true,\n initError = energy2d_modeler.properties.use_WebGL && !energy2d_modeler.isWebGLActive(),\n content;\n\n $status.empty();\n\n Object.keys(feature).forEach(function(name) {\n var f = feature[name];\n if (f.required && !f.available) {\n requiredFeatures = false;\n }\n if (!f.required && !f.available) {\n optionalFeatures = false;\n }\n });\n\n // WebGL + required extensions availability message.\n if (requiredFeatures && optionalFeatures) {\n $status.append('

Your browser supports WebGL as well as all required and optional extensions!

');\n } else if (requiredFeatures) {\n $status.append('

Your browser supports WebGL and all required extensions! However some ' +\n 'optional extensions are unavailable:

');\n Object.keys(feature).forEach(function(name) {\n var f = feature[name],\n supported;\n if (!f.required) {\n supported = f.available ? '' : '';\n $status.append('

' + supported + ' ' + name + '

');\n }\n });\n $status.append('

WebGL rendering quality can be affected.

');\n } else if (feature['WebGL']) {\n $status.append('

Your browser supports WebGL, however not all required extensions are available:

');\n Object.keys(feature).forEach(function(name) {\n var f = feature[name],\n supported;\n if (f.required) {\n supported = f.available ? '' : '';\n $status.append('

' + supported + ' ' + name + '

');\n }\n });\n $status.append(GET_WEBGL);\n } else {\n $status.append('

Sorry, your browser does not support WebGL.');\n $status.append(GET_WEBGL);\n }\n\n // Model compatibility message.\n if (modelCompatible) {\n content = 'This model is compatible with WebGL-accelerated physics engine';\n if (energy2d_modeler.isWebGLActive()) {\n content += ' and it is active.';\n } else {\n content += ', but it is inactive.';\n if (initError) {\n content += ' Unfortunately, its initialization failed. Check the browser console for details.';\n } else if (requiredFeatures) {\n content += ' Enable it to speed up simulation:';\n }\n }\n $status.append('

' + content + '

');\n } else {\n $status.append('

Unfortunately, some features used in this model are incompatible ' +\n 'with WebGL-accelerated physics engine.

');\n }\n\n // WebGL solvers checkbox.\n if (!requiredFeatures || !modelCompatible || initError) {\n // If any test failed hide the checkbox.\n $checkbox.hide();\n } else {\n $checkbox.show();\n }\n\n // WebGL icon tooltip message and color.\n if (initError) {\n content = 'WebGL initialization failed.';\n $webgl_icon.removeClass(\"happy\");\n $webgl_icon.addClass(\"sad\");\n } else if (!requiredFeatures || !modelCompatible) {\n content = 'WebGL unavailable.';\n $webgl_icon.removeClass(\"happy\");\n $webgl_icon.addClass(\"sad\");\n } else if (!energy2d_modeler.isWebGLActive()) {\n content = 'WebGL available, but inactive.';\n $webgl_icon.removeClass(\"happy\");\n $webgl_icon.removeClass(\"sad\");\n } else {\n content = 'WebGL available and active.';\n $webgl_icon.removeClass(\"sad\");\n $webgl_icon.addClass(\"happy\");\n }\n content += ' Click for detailed information.';\n $webgl_icon.attr('title', content);\n\n if (initError) {\n // Display panel when user requested WebGL, but it wasn't\n // initialized correctly.\n show();\n }\n },\n\n getHTMLElement: function() {\n return $div;\n }\n };\n\n // One-off initialization.\n initialize();\n\n return WebGL_status_view;\n};\n","/*jslint indent: 2, browser: true, newcap: true */\n\n// Vector map view.\n//\n// It uses HTML5 Canvas for rendering.\n// getHTMLElement() returns jQuery object with canvas used for rendering.\n// Before use, this view should be bound with the vector map using bindVectormap(vectormap_u, vectormap_v, width, height, spacing).\n// To render vector map use renderVectormap() method.\n// Set size of the vectormap using CSS rules. The view fits canvas dimensions to the real\n// size of the HTML element to avoid low quality CSS scaling.\n\nexport default function VectormapView(html_id) {\n var DEFAULT_ID = 'energy2d-vectormap-view',\n VECTOR_SCALE = 100,\n VECTOR_BASE_LEN = 8,\n WING_COS = Math.cos(0.523598776),\n WING_SIN = Math.sin(0.523598776),\n WING_LEN = 4,\n ARROW_COLOR = \"rgb(175,175,175)\",\n\n $vectormap_canvas,\n canvas_ctx,\n canvas_width,\n canvas_height,\n\n vectormap_u,\n vectormap_v,\n grid_width,\n grid_height,\n spacing,\n\n enabled = true,\n\n //\n // Private methods.\n //\n initHTMLelement = function() {\n $vectormap_canvas = $('');\n $vectormap_canvas.attr('id', html_id || DEFAULT_ID);\n canvas_ctx = $vectormap_canvas[0].getContext('2d');\n },\n\n // Helper method for drawing a single vector.\n drawVector = function(x, y, vx, vy) {\n var r = 1.0 / Math.sqrt(vx * vx + vy * vy),\n arrowx = vx * r,\n arrowy = vy * r,\n x1 = x + arrowx * VECTOR_BASE_LEN + vx * VECTOR_SCALE,\n y1 = y + arrowy * VECTOR_BASE_LEN + vy * VECTOR_SCALE,\n wingx = WING_LEN * (arrowx * WING_COS + arrowy * WING_SIN),\n wingy = WING_LEN * (arrowy * WING_COS - arrowx * WING_SIN);\n\n canvas_ctx.beginPath();\n canvas_ctx.moveTo(x, y);\n canvas_ctx.lineTo(x1, y1);\n\n canvas_ctx.lineTo(x1 - wingx, y1 - wingy);\n canvas_ctx.moveTo(x1, y1);\n\n wingx = WING_LEN * (arrowx * WING_COS - arrowy * WING_SIN);\n wingy = WING_LEN * (arrowy * WING_COS + arrowx * WING_SIN);\n canvas_ctx.lineTo(x1 - wingx, y1 - wingy);\n\n canvas_ctx.stroke();\n },\n\n //\n // Public API.\n //\n vectormap_view = {\n // Render vectormap on the canvas.\n renderVectormap: function() {\n if (!enabled) return;\n\n var dx, dy, x0, y0, uij, vij,\n i, j, iny, ijny;\n\n if (!vectormap_u || !vectormap_v) {\n throw new Error(\"Vectormap: bind vectormap before rendering.\");\n }\n\n dx = canvas_width / grid_width;\n dy = canvas_height / grid_height;\n\n canvas_ctx.clearRect(0, 0, canvas_width, canvas_height);\n canvas_ctx.strokeStyle = ARROW_COLOR;\n canvas_ctx.lineWidth = 1;\n\n for (i = 1; i < grid_width - 1; i += spacing) {\n iny = i * grid_height;\n x0 = (i + 0.5) * dx; // + 0.5 to move arrow into field center\n for (j = 1; j < grid_height - 1; j += spacing) {\n ijny = iny + j;\n y0 = (j + 0.5) * dy; // + 0.5 to move arrow into field center\n uij = vectormap_u[ijny];\n vij = vectormap_v[ijny];\n if (uij * uij + vij * vij > 1e-15) {\n drawVector(x0, y0, uij, vij);\n }\n }\n }\n },\n\n clear: function() {\n canvas_ctx.clearRect(0, 0, canvas_width, canvas_height);\n },\n\n get enabled() {\n return enabled;\n },\n set enabled(v) {\n enabled = v;\n // Clear vectormap, as .renderVectormap() call won't do it.\n if (!enabled) vectormap_view.clear();\n },\n\n // Bind vector map to the view.\n bindVectormap: function(new_vectormap_u, new_vectormap_v, new_grid_width, new_grid_height, arrows_per_row) {\n if (new_grid_width * new_grid_height !== new_vectormap_u.length) {\n throw new Error(\"Heatmap: provided U component of vectormap has wrong dimensions.\");\n }\n if (new_grid_width * new_grid_height !== new_vectormap_v.length) {\n throw new Error(\"Heatmap: provided V component of vectormap has wrong dimensions.\");\n }\n vectormap_u = new_vectormap_u;\n vectormap_v = new_vectormap_v;\n grid_width = new_grid_width;\n grid_height = new_grid_height;\n spacing = Math.round(new_grid_width / arrows_per_row);\n },\n\n getHTMLElement: function() {\n return $vectormap_canvas;\n },\n\n resize: function() {\n canvas_width = $vectormap_canvas.width();\n canvas_height = $vectormap_canvas.height();\n $vectormap_canvas.attr('width', canvas_width);\n $vectormap_canvas.attr('height', canvas_height);\n }\n };\n\n // One-off initialization.\n initHTMLelement();\n\n return vectormap_view;\n};\n","// Vectormap WebGL view.\n//\n// It uses HTML5 Canvas and WebGL for rendering.\n// getHTMLElement() returns jQuery object with the canvas used for rendering.\n// Before use, this view should be bound with a heatmap texture using bindHeapmapTexture(vectormap_tex).\n// To render the heatmap use renderVectormapTexture() method.\n// Set size of the heatmap using CSS rules.\nimport context from 'models/energy2d/gpu/context';\nimport Shader from 'models/energy2d/gpu/shader';\nimport Mesh from 'models/energy2d/gpu/mesh';\nimport vectormap_vs from 'models/energy2d/views/vectormap-webgl-glsl/vectormap.vs.glsl';\nimport vectormap_fs from 'models/energy2d/views/vectormap-webgl-glsl/vectormap.fs.glsl';\n\nexport default function VectormapWebGLView(html_id) {\n var\n // Get WebGL context.\n gl = context.getWebGLContext(),\n // GLSL Render program.\n render_program = new Shader(vectormap_vs, vectormap_fs),\n // Plane used for rendering.\n arrows = new Mesh({\n coords: true,\n lines: true\n }),\n\n DEFAULT_ID = 'energy2d-vectormap-webgl-view',\n VECTOR_SCALE = 100,\n VECTOR_BASE_LEN = 8,\n ARROW_COLOR = [0.7, 0.7, 0.7, 1.0],\n\n $vectormap_canvas,\n canvas_width,\n canvas_height,\n\n vectormap_tex,\n grid_width,\n grid_height,\n spacing,\n\n enabled = true,\n\n //\n // Private methods.\n //\n initGeometry = function() {\n var i, j, idx, origin, coord,\n gdx = 2.0 / grid_width,\n gdy = 2.0 / grid_height,\n tdx = 1.0 / grid_width,\n tdy = 1.0 / grid_height;\n\n arrows.addVertexBuffer('origins', 'origin');\n arrows.vertices = [];\n arrows.origins = [];\n arrows.coords = [];\n arrows.lines = [];\n\n idx = 0;\n for (i = 1; i < grid_width - 1; i += spacing) {\n for (j = 1; j < grid_height - 1; j += spacing) {\n // Base arrows vertices. Origin, front and two wings. The unit is pixel.\n // Base length is 0.01 px - just for convenience (it distinguish front of the arrows from the origin).\n arrows.vertices.push([0, 0, 0], [0.01, 0, 0], [-3, 2, 0], [-3, -2, 0]);\n // All of these vertices have to know which vector they are representing.\n origin = [-1.0 + (i + 0.5) * gdx, 1.0 - (j + 0.5) * gdy, 0];\n arrows.origins.push(origin, origin, origin, origin);\n // Texture coordinates.\n coord = [(j + 0.5) * tdy, (i + 0.5) * tdx];\n arrows.coords.push(coord, coord, coord, coord);\n // Draw three lines. From origin to the fron of the arrows + two wings.\n arrows.lines.push([idx, idx + 1], [idx + 1, idx + 2], [idx + 1, idx + 3]);\n idx += 4;\n }\n }\n // Update buffers.\n arrows.compile();\n },\n\n initHTMLelement = function() {\n $vectormap_canvas = $(gl.canvas);\n $vectormap_canvas.attr('id', html_id || DEFAULT_ID);\n },\n\n // Make sure that no FBO is bound and viewport has proper dimensions\n // (it's not obvious as this context is also used for GPGPU calculations).\n setupRenderTarget = function() {\n // Ensure that FBO is null, as GPGPU operations which use FBOs also take place.\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n // This is necessary, as GPGPU operations can modify viewport size.\n gl.viewport(0, 0, canvas_width, canvas_height);\n },\n\n //\n // Public API.\n //\n vectormap_view = {\n // Render heat map on the canvas.\n renderVectormap: function() {\n if (!enabled) return;\n\n if (!vectormap_tex) {\n throw new Error(\"Vectormap: bind heatmap texture before rendering.\");\n }\n\n setupRenderTarget();\n\n vectormap_tex.bind(0);\n render_program.draw(arrows, gl.LINES);\n vectormap_tex.unbind(0);\n },\n\n get enabled() {\n return enabled;\n },\n set enabled(v) {\n enabled = v;\n },\n\n resize: function() {\n canvas_width = $vectormap_canvas.width();\n canvas_height = $vectormap_canvas.height();\n $vectormap_canvas.attr('width', canvas_width);\n $vectormap_canvas.attr('height', canvas_height);\n // Render ara has dimensions from -1.0 to 1.0, so its width/height is 2.0.\n render_program.uniforms({\n scale: [2.0 / canvas_width, 2.0 / canvas_height]\n });\n },\n\n // Bind vectormap to the view.\n bindVectormapTexture: function(new_vectormap_tex, new_grid_width, new_grid_height, arrows_per_row) {\n vectormap_tex = new_vectormap_tex;\n grid_width = new_grid_width;\n grid_height = new_grid_height;\n spacing = Math.round(grid_width / arrows_per_row);\n\n initGeometry();\n },\n\n getHTMLElement: function() {\n return $vectormap_canvas;\n }\n };\n\n // One-off initialization.\n // Set render program uniforms.\n render_program.uniforms({\n // Texture units.\n vectormap_tex: 0,\n // Uniforms.\n base_length: VECTOR_BASE_LEN,\n vector_scale: VECTOR_SCALE,\n color: ARROW_COLOR\n });\n\n initHTMLelement();\n\n return vectormap_view;\n};\n","export default \"// Provided texture contains vector data in RG channels.\\nattribute vec2 origin;\\n\\nuniform sampler2D vectormap_tex;\\nuniform float base_length;\\nuniform float vector_scale;\\nuniform vec2 scale;\\n\\nvoid main() {\\n // Read vector which should be visualized.\\n vec2 vec = texture2D(vectormap_tex, gl_TexCoord.xy).xy;\\n vec.y = -vec.y;\\n\\n if (length(vec) < 1e-15) {\\n // Do not draw to small vectors.\\n // Set position outside [-1, 1] region, which is rendered.\\n gl_Position = vec4(2.0);\\n return;\\n }\\n\\n // Test which part of the vector arrow is being processed. \\n if (gl_Vertex.x == 0.0 && gl_Vertex.y == 0.0) {\\n // Origin of the arrow is being processed.\\n // Just transform its coordinates.\\n gl_Position = vec4(origin, 0.0, 1.0);\\n } else {\\n // Other parts of arrow are being processed.\\n // Set proper length of the arrow, rotate it, scale\\n // and finally transform.\\n\\n // Calculate arrow length.\\n vec2 new_pos = gl_Vertex.xy;\\n new_pos.x += base_length + vector_scale * length(vec);\\n\\n // Calculate angle between reference arrow (horizontal).\\n vec = normalize(vec);\\n float angle = acos(dot(vec, vec2(1.0, 0.0)));\\n if (vec.y < 0.0) {\\n angle = -angle;\\n }\\n // Prepare rotation matrix.\\n // See: http://en.wikipedia.org/wiki/Rotation_matrix\\n mat2 rot_m = mat2(\\n cos(angle), sin(angle),\\n -sin(angle), cos(angle)\\n );\\n // Rotate.\\n new_pos = rot_m * new_pos;\\n // Scale.\\n new_pos = new_pos * scale;\\n // Transform.\\n gl_Position = vec4(new_pos + origin, 0.0, 1.0);\\n }\\n}\\n\";","export default \"uniform vec4 color;\\n\\nvoid main() {\\n gl_FragColor = color;\\n}\\n\";","\n// Energy2D photons view.\n//\n// It uses HTML5 Canvas for rendering.\n// getHTMLElement() returns jQuery object with canvas used for rendering.\n// Before use, this view should be bound with the parts array using bindPhotonsArray(photons).\n// To render parts use renderPhotons() method.\n// Set size of the parts view using CSS rules. The view fits canvas dimensions to the real\n// size of the HTML element to avoid low quality scaling.\n\nexport default function PhotonsView(html_id) {\n var DEFAULT_ID = 'energy2d-photons-view',\n DEFAULT_CLASS = 'energy2d-photons-view',\n\n PHOTON_LENGTH = 10,\n\n $photons_canvas,\n canvas_ctx,\n canvas_width,\n canvas_height,\n\n photons,\n scale_x,\n scale_y,\n scene_width,\n scene_height,\n\n //\n // Private methods.\n //\n initHTMLelement = function() {\n $photons_canvas = $('');\n $photons_canvas.attr('id', html_id || DEFAULT_ID);\n $photons_canvas.addClass(DEFAULT_CLASS);\n\n canvas_ctx = $photons_canvas[0].getContext('2d');\n },\n\n setCanvasStyle = function() {\n canvas_ctx.strokeStyle = \"rgba(255,255,255,128)\";\n canvas_ctx.lineWidth = 0.5;\n },\n\n //\n // Public API.\n //\n photons_view = {\n // Render vectormap on the canvas.\n renderPhotons: function() {\n var photon, sx, sy, r,\n i, len;\n\n if (!photons) {\n throw new Error(\"Photons view: bind parts array before rendering.\");\n }\n\n canvas_ctx.clearRect(0, 0, canvas_width, canvas_height);\n for (i = 0, len = photons.length; i < len; i += 1) {\n photon = photons[i];\n\n sx = photon.x * scale_x;\n sy = photon.y * scale_y;\n r = 1 / Math.sqrt(photon.vx * photon.vx + photon.vy * photon.vy);\n\n canvas_ctx.beginPath();\n canvas_ctx.moveTo(sx, sy);\n canvas_ctx.lineTo(sx + PHOTON_LENGTH * photon.vx * r, sy + PHOTON_LENGTH * photon.vy * r);\n canvas_ctx.stroke();\n }\n },\n\n // Bind vector map to the view.\n bindPhotonsArray: function(new_photons, new_scene_width, new_scene_height) {\n photons = new_photons;\n scene_width = new_scene_width;\n scene_height = new_scene_height;\n scale_x = canvas_width / scene_width;\n scale_y = canvas_height / scene_height;\n },\n\n getHTMLElement: function() {\n return $photons_canvas;\n },\n\n resize: function() {\n canvas_width = $photons_canvas.width();\n canvas_height = $photons_canvas.height();\n scale_x = canvas_width / scene_width;\n scale_y = canvas_height / scene_height;\n $photons_canvas.attr('width', canvas_width);\n $photons_canvas.attr('height', canvas_height);\n setCanvasStyle();\n }\n };\n\n // One-off initialization.\n initHTMLelement();\n setCanvasStyle();\n\n return photons_view;\n};","\n// Classic version of Energy2D was rendering rectangles with small shift.\n// If we do the same then converted models look better.\nvar E2D_XY_SHIFT = 1,\n E2D_DIM_SHIFT = 2;\n\nexport default function PartsView(SVGContainer, g) {\n var api,\n parts,\n\n m2px = SVGContainer.model2px,\n m2pxInv = SVGContainer.model2pxInv,\n\n shapeTest = {\n \"rect\": function(d) {\n return d.shapeType === \"rectangle\" ? this : null;\n },\n \"ellipse\": function(d) {\n return d.shapeType === \"ellipse\" ? this : null;\n },\n \"path\": function(d) {\n return d.shapeType === \"polygon\" || d.shapeType === \"ring\" ? this : null;\n }\n },\n\n ringPathSpec = d3.svg.arc()\n .innerRadius(function(d) {\n return m2px(d.inner * 0.5);\n })\n .outerRadius(function(d) {\n return m2px(d.outer * 0.5);\n })\n .startAngle(0)\n .endAngle(Math.PI * 2),\n\n dragBehavior = (function() {\n var x, y, minX, maxX, minY, maxY, bbox;\n return d3.behavior.drag()\n .origin(function(d) {\n return {\n x: m2px(d.x),\n y: m2pxInv(d.y)\n };\n })\n .on(\"dragstart\", function(d) {\n var rx, ry;\n if (d.draggable) {\n x = y = null;\n rx = m2px.range();\n ry = m2pxInv.range();\n minX = Math.min(rx[0], rx[1]);\n maxX = Math.max(rx[0], rx[1]);\n minY = Math.min(ry[0], ry[1]);\n maxY = Math.max(ry[0], ry[1]);\n bbox = this.getBBox();\n bbox.x0 = bbox.x + 10;\n bbox.y0 = bbox.y + 10;\n bbox.x1 = bbox.x + bbox.width - 10;\n bbox.y1 = bbox.y + bbox.height - 10;\n d3.select(this).style(\"opacity\", 0.7);\n }\n })\n .on(\"drag\", function(d) {\n if (d.draggable) {\n x = d3.event.x;\n y = d3.event.y;\n x -= Math.max(0, bbox.x0 + x - maxX) + Math.min(0, bbox.x1 + x - minX);\n y -= Math.max(0, bbox.y0 + y - maxY) + Math.min(0, bbox.y1 + y - minY);\n d3.select(this).attr(\"transform\", \"translate(\" + x + \",\" + y + \")\");\n }\n })\n .on(\"dragend\", function(d) {\n if (d.draggable) {\n d3.select(this).style(\"opacity\", 1);\n if (x !== null) { // no need to check 'y' too\n d.x = m2px.invert(x);\n d.y = m2pxInv.invert(y);\n }\n }\n });\n }());\n\n function transform(d) {\n return \"translate(\" + m2px(d.x || 0) + \",\" + m2pxInv(d.y || 0) + \")\";\n }\n\n function width(d) {\n return m2px(d.width) + E2D_DIM_SHIFT;\n }\n\n function height(d) {\n return m2px(d.height) + E2D_DIM_SHIFT;\n }\n\n function rx(d) {\n return m2px(d.a * 0.5);\n }\n\n function ry(d) {\n return m2px(d.b * 0.5);\n }\n\n function visibility(d) {\n return d.visible ? \"visible\" : \"hidden\";\n }\n\n function textureFill(d) {\n return d.texture ? \"url(#texture-1)\" : \"none\";\n }\n\n function label(d) {\n return d.computeLabel();\n }\n\n function dx() {\n return -this.getBBox().width / 2;\n }\n\n function fill(d) {\n if (!d.filled) return 'rgba(0, 0, 0, 0)';\n var color;\n if (d.color === \"auto\") {\n if (d.power > 0) {\n color = '#FFFF00';\n } else if (d.power < 0) {\n color = '#B0C4DE';\n } else if (d.constant_temperature) {\n // Heatmap will be visible.\n color = 'rgba(0, 0, 0, 0)';\n } else {\n color = \"#999\";\n }\n } else {\n // Typical color definition.\n color = d.color;\n // TODO: this should be done during XML->JSON conversion.\n if (!isNaN(parseInt(color, 16))) {\n while (color.length < 6) {\n color = '0' + color;\n }\n color = '#' + color;\n }\n }\n return color;\n }\n\n function polygonPathSpec(d) {\n var res = [],\n x = d.raw_x_coords,\n y = d.raw_y_coords,\n i, len;\n for (i = 0, len = x.length; i < len; i++) {\n res.push(m2px(x[i]));\n res.push(m2pxInv(y[i]));\n }\n return \"M\" + res.join(\",\") + \"Z\";\n }\n\n function pathSpec(d) {\n switch (d.shapeType) {\n case \"polygon\":\n return polygonPathSpec(d);\n case \"ring\":\n return ringPathSpec(d);\n }\n }\n\n function xLabel(d) {\n var s = d.shapeType;\n return s === \"rectangle\" || s === \"polygon\" ? this.parentNode.firstElementChild.getBBox().width / 2 : 0;\n }\n\n function yLabel(d) {\n var s = d.shapeType;\n return s === \"rectangle\" || s === \"polygon\" ? this.parentNode.firstElementChild.getBBox().height / 2 : 0;\n }\n\n function generateTextures() {\n var p = g.append(\"defs\").append(\"pattern\")\n .attr(\"id\", \"texture-1\")\n .attr(\"patternUnits\", \"userSpaceOnUse\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"width\", \"0.7em\")\n .attr(\"height\", \"0.7em\")\n .attr(\"viewBox\", \"0 0 16 16\");\n p.append(\"path\")\n .attr(\"class\", \"e2d-texture-path-shadow\")\n .attr(\"d\", \"M0,0 L16,16 M-1,15 L1,17 M15,-1 L17,1\");\n p.append(\"path\")\n .attr(\"class\", \"e2d-texture-path\")\n .attr(\"d\", \"M0,0 L16,16 M-1,15 L1,17 M15,-1 L17,1\");\n }\n\n function renderShape(shape, enter, update) {\n enter = enter.select(shapeTest[shape]);\n enter.append(shape)\n .attr(\"class\", \"e2d-part-shape\");\n enter.append(shape)\n .attr(\"class\", \"e2d-part-shape-outline\")\n .attr(\"fill\", textureFill);\n\n // Propagate data.\n update.select(\".e2d-part-shape\");\n update.select(\".e2d-part-shape-outline\");\n\n switch (shape) {\n case \"rect\":\n update.selectAll(\"rect\")\n .attr(\"x\", E2D_XY_SHIFT)\n .attr(\"y\", E2D_XY_SHIFT)\n .attr(\"width\", width)\n .attr(\"height\", height);\n break;\n case \"ellipse\":\n update.selectAll(\"ellipse\")\n .attr(\"rx\", rx)\n .attr(\"ry\", ry);\n break;\n case \"path\":\n update.selectAll(\"path\")\n .attr(\"d\", pathSpec);\n break;\n }\n }\n\n function renderLabels(enter, update) {\n enter.append(\"text\")\n .attr(\"class\", \"e2d-part-label-shadow\")\n .attr(\"dy\", \".35em\");\n enter.append(\"text\")\n .attr(\"class\", \"e2d-part-label\")\n .attr(\"dy\", \".35em\");\n\n // Propagate data.\n update.select(\".e2d-part-label\");\n update.select(\".e2d-part-label-shadow\");\n update.selectAll(\".e2d-part-label, .e2d-part-label-shadow\")\n .text(label)\n .attr(\"dx\", dx)\n .attr(\"x\", xLabel)\n .attr(\"y\", yLabel);\n }\n\n // Public API.\n api = {\n renderParts: function() {\n if (!parts) return;\n\n var part, partEnter;\n\n part = g.selectAll(\".e2d-part\").data(parts);\n partEnter = part.enter().append(\"g\")\n // \"part\" class is useful for onClick handles, so author\n // can call: onClick(\"part\", function () { ... }).\n .attr(\"class\", \"e2d-part part\");\n\n renderShape(\"rect\", partEnter, part);\n renderShape(\"ellipse\", partEnter, part);\n renderShape(\"path\", partEnter, part);\n renderLabels(partEnter, part);\n\n partEnter.call(dragBehavior);\n\n part\n .attr(\"transform\", transform);\n part.select(\".e2d-part-shape\")\n .attr(\"fill\", fill)\n .style(\"visibility\", visibility);\n\n part.exit().remove();\n },\n\n bindPartsArray: function(newParts) {\n parts = newParts;\n }\n };\n\n (function() {\n generateTextures();\n }());\n\n return api;\n};\n","\nvar TH_W = 2,\n TH_H = 4;\n\nexport default function SensorsView(SVGContainer, g) {\n var api,\n\n m2px = SVGContainer.model2px,\n m2pxInv = SVGContainer.model2pxInv,\n\n sensors,\n\n thermBg, // d3.selection\n thermReading, // d3.selection\n thermValScale = d3.scale.linear().clamp(true).domain([0, 50]).range([TH_H, 0]),\n\n anemoRot, // d3.selection\n\n heatFluxReading, // d3.selection\n\n dragBehavior = d3.behavior.drag()\n .origin(function(d) {\n return {\n x: m2px(d.x),\n y: m2pxInv(d.y)\n };\n })\n .on(\"drag\", function(d) {\n d.x = m2px.invert(d3.event.x);\n d.y = m2pxInv.invert(d3.event.y);\n });\n\n function em(val) {\n return val + \"%\";\n }\n\n function transform(d) {\n return \"translate(\" + m2px(d.x) + \",\" + m2pxInv(d.y) + \")\";\n }\n\n function labelDx() {\n return -this.getBBox().width / 2;\n }\n\n function labelText(d) {\n return d.label;\n }\n\n function readingText(d) {\n return d.value.toFixed(1) + \" °C\";\n }\n\n function bgHeight(d) {\n return em(thermValScale(d.value));\n }\n\n function anemometerRotation(d) {\n return \"rotate(\" + d.value + \")\";\n }\n\n function heatFluxReadingText(d) {\n return d.value.toFixed(1) + \" W/m²\";\n }\n\n function heatFluxRot(d) {\n return \"rotate(\" + d.angle + \")\";\n }\n\n function measuringPoint(g) {\n g = g.append(\"g\").attr(\"class\", \"e2d-measuring-point\");\n g.append(\"line\")\n .attr(\"x1\", 0)\n .attr(\"y1\", \"-0.8%\")\n .attr(\"x2\", 0)\n .attr(\"y2\", \"0.8%\");\n g.append(\"line\")\n .attr(\"x1\", \"-0.8%\")\n .attr(\"y1\", 0)\n .attr(\"x2\", \"0.8%\")\n .attr(\"y2\", 0);\n g.append(\"circle\")\n .attr(\"r\", \"0.8%\");\n }\n\n function supportLabels(enter, update) {\n enter.append(\"text\").attr(\"class\", \"e2d-sensor-reading-shadow\");\n enter.append(\"text\").attr(\"class\", \"e2d-sensor-reading\");\n enter.append(\"text\").attr(\"class\", \"e2d-sensor-label-shadow\");\n enter.append(\"text\").attr(\"class\", \"e2d-sensor-label\");\n\n // Looks strange, but it propagates data from parent to labels.\n // .selectAll() doesn't do it. We can do it here, before rendering.\n // If labels don't exist yet, enter will propagate data. If they\n // exist, data binding will be updated.\n update.select(\".e2d-sensor-label\");\n update.select(\".e2d-sensor-label-shadow\");\n update.select(\".e2d-sensor-reading\");\n update.select(\".e2d-sensor-reading-shadow\");\n }\n\n function renderThermometers(data) {\n var update = g.selectAll(\".e2d-sensor.thermometer\").data(data.filter(function(d) {\n return d.type === \"thermometer\";\n })),\n enter = update.enter().append(\"g\")\n .attr(\"class\", \"e2d-sensor sensor thermometer\")\n .call(dragBehavior);\n supportLabels(enter, update);\n\n // Note that background and fill are inverted (background covers\n // fill). It's easier to change only height of background instead of\n // manipulating both Y coordinate and height of fill.\n enter.append(\"rect\").attr(\"class\", \"e2d-thermometer-fill\");\n enter.append(\"rect\").attr(\"class\", \"e2d-thermometer-background\");\n enter.call(measuringPoint);\n\n update.attr(\"transform\", transform);\n update.select(\".e2d-thermometer-fill\")\n .attr(\"x\", em(-0.5 * TH_W))\n .attr(\"y\", em(-0.5 * TH_H))\n .attr(\"width\", em(TH_W))\n .attr(\"height\", em(TH_H));\n thermBg = update.select(\".e2d-thermometer-background\")\n .attr(\"x\", em(-0.5 * TH_W))\n .attr(\"y\", em(-0.5 * TH_H))\n .attr(\"width\", em(TH_W))\n .attr(\"height\", bgHeight);\n thermReading = update.selectAll(\".e2d-sensor-reading, .e2d-sensor-reading-shadow\")\n .text(readingText)\n .attr(\"y\", em(-0.5 * TH_H))\n .attr(\"dy\", \"-.2em\")\n .attr(\"dx\", \"-.7em\");\n update.selectAll(\".e2d-sensor-label, .e2d-sensor-label-shadow\")\n .text(labelText)\n .attr(\"dx\", labelDx)\n .attr(\"dy\", \"1em\")\n .attr(\"y\", em(0.5 * TH_H));\n\n update.exit().remove();\n }\n\n function renderAnemometer(data) {\n var update = g.selectAll(\".e2d-sensor.anemometer\").data(data.filter(function(d) {\n return d.type === \"anemometer\";\n })),\n enter = update.enter().append(\"g\")\n .attr(\"class\", \"e2d-sensor sensor anemometer\")\n .call(dragBehavior);\n supportLabels(enter, update);\n\n enter = enter\n .append(\"svg\")\n .attr(\"class\", \"e2d-anemometer-shape\")\n .attr(\"viewBox\", \"-50 -50 100 100\")\n .attr(\"x\", \"-3%\")\n .attr(\"y\", \"-3%\")\n .attr(\"width\", \"6%\")\n .attr(\"height\", \"6%\")\n .append(\"g\")\n .attr(\"class\", \"e2d-anemometer-rot\");\n\n enter.append(\"path\")\n .attr(\"d\", \"M-10,10 L0,50 L10,10 Z\")\n .attr(\"transform\", \"rotate(0)\");\n enter.append(\"path\")\n .attr(\"d\", \"M-10,10 L0,50 L10,10 Z\")\n .attr(\"transform\", \"rotate(120)\");\n enter.append(\"path\")\n .attr(\"d\", \"M-10,10 L0,50 L10,10 Z\")\n .attr(\"transform\", \"rotate(240)\");\n enter.append(\"circle\")\n .attr(\"r\", 12);\n\n update.attr(\"transform\", transform);\n anemoRot = update.select(\".e2d-anemometer-rot\")\n .attr(\"transform\", anemometerRotation);\n update.selectAll(\".e2d-sensor-label, .e2d-sensor-label-shadow\")\n .text(labelText)\n .attr(\"dx\", labelDx)\n .attr(\"dy\", \"0.7em\")\n .attr(\"y\", \"3%\");\n\n update.exit().remove();\n }\n\n function renderHeatFluxSensors(data) {\n var update = g.selectAll(\".e2d-sensor.heatFlux\").data(data.filter(function(d) {\n return d.type === \"heatFlux\";\n })),\n enter = update.enter().append(\"g\")\n .attr(\"class\", \"e2d-sensor sensor heatFlux\")\n .call(dragBehavior);\n\n enter = enter.append(\"g\")\n .attr(\"transform\", heatFluxRot);\n enter.append(\"rect\")\n .attr(\"class\", \"e2d-heatflux-shape\")\n .attr(\"x\", \"-3%\")\n .attr(\"y\", \"-1%\")\n .attr(\"width\", \"6%\")\n .attr(\"height\", \"2%\");\n enter.append(\"svg\")\n .attr(\"viewBox\", \"0 0 6 1\")\n .attr(\"x\", \"-3%\")\n .attr(\"y\", \"-1%\")\n .attr(\"width\", \"6%\")\n .attr(\"height\", \"2%\")\n .append(\"path\")\n .attr(\"class\", \"e2d-heatflux-pattern\")\n .attr(\"d\", \"M0,0L1,1L2,0L3,1L4,0L5,1L6,0\");\n enter.call(measuringPoint);\n\n supportLabels(enter, update);\n\n update.attr(\"transform\", transform);\n heatFluxReading = update.selectAll(\".e2d-sensor-reading, .e2d-sensor-reading-shadow\")\n .text(heatFluxReadingText)\n .attr(\"y\", \"-1%\")\n .attr(\"dy\", \"-.2em\")\n .attr(\"dx\", \"-1.8em\");\n update.selectAll(\".e2d-sensor-label, .e2d-sensor-label-shadow\")\n .text(labelText)\n .attr(\"dx\", labelDx)\n .attr(\"dy\", \"0.9em\")\n .attr(\"y\", \"1%\");\n\n update.exit().remove();\n }\n\n // Public API.\n api = {\n update: function() {\n thermBg.attr(\"height\", bgHeight);\n thermReading.text(readingText);\n anemoRot.attr(\"transform\", anemometerRotation);\n heatFluxReading.text(heatFluxReadingText);\n },\n\n renderSensors: function() {\n if (!sensors) return;\n\n renderThermometers(sensors);\n renderAnemometer(sensors);\n renderHeatFluxSensors(sensors);\n },\n\n bindSensorsArray: function(newSensors) {\n sensors = newSensors;\n },\n\n setMinMaxTemp: function(min, max) {\n thermValScale.domain([min, max]);\n }\n };\n\n return api;\n};\n","\nimport HeatmapView from 'models/energy2d/views/heatmap';\nimport HeatmapWebGLView from 'models/energy2d/views/heatmap-webgl';\nimport WebGLStatusView from 'models/energy2d/views/webgl-status';\nimport VectormapView from 'models/energy2d/views/vectormap';\nimport VectormapWebGLView from 'models/energy2d/views/vectormap-webgl';\nimport PhotonsView from 'models/energy2d/views/photons';\nimport PartsView from 'models/energy2d/views/parts';\nimport SensorsView from 'models/energy2d/views/sensors';\n\n\nexport default function Renderer(SVGContainer, model) {\n var api,\n\n heatmap_view,\n velocity_view,\n photons_view,\n parts_view,\n sensors_view,\n webgl_status = new WebGLStatusView(null, model),\n $status = webgl_status.getHTMLElement(),\n $canvasCont = $(\"
\"),\n canvasCount = 0,\n\n isSetup = false;\n\n function setAsNextLayer(view) {\n var $layer = view.getHTMLElement();\n\n $layer.css('width', '100%');\n $layer.css('height', '100%');\n $layer.css('position', 'absolute');\n $layer.css('top', 0);\n $layer.css('left', 0);\n $layer.css('z-index', canvasCount);\n canvasCount += 1;\n\n $canvasCont.append($layer);\n\n // Note that we SHOULD implement it in the following way:\n //\n // var $layer = view.getHTMLElement(),\n // fo = g.append(\"foreignObject\").attr({\n // width: \"100%\",\n // height: \"100%\"\n // }).style({\n // width: \"100%\",\n // height: \"100%\"\n // });\n // $layer.css('width', '100%');\n // if (!customHeight) $layer.css('height', '100%');\n // $layer.appendTo(fo);\n //\n // but foreignObject support is completely broken in Chrome (works fine in Firefox).\n // TODO: check if new version (30+?) fixes that.\n }\n\n function setupCanvasViews() {\n var props = model.properties;\n\n $canvasCont.empty();\n canvasCount = 0;\n // Use isWebGLActive() method, not use_WebGL property. The fact that\n // use_WebGL option is set to true doesn't mean that WebGL can be\n // initialized. It's only a preference.\n if (model.isWebGLActive()) {\n heatmap_view = new HeatmapWebGLView();\n velocity_view = new VectormapWebGLView();\n // Both VectormapWebGL and HeatmapWebGL use common canvas,\n // so it's enough to set it only once as the next layer.\n setAsNextLayer(velocity_view);\n } else {\n heatmap_view = new HeatmapView();\n setAsNextLayer(heatmap_view);\n velocity_view = new VectormapView();\n setAsNextLayer(velocity_view);\n }\n photons_view = new PhotonsView();\n setAsNextLayer(photons_view);\n\n // It must be called after attaching to parent node.\n heatmap_view.resize();\n velocity_view.resize();\n photons_view.resize();\n\n // Bind models to freshly created views.\n if (model.isWebGLActive()) {\n heatmap_view.bindHeatmapTexture(model.getTemperatureTexture());\n velocity_view.bindVectormapTexture(model.getVelocityTexture(), props.grid_width, props.grid_height, 25);\n } else {\n heatmap_view.bindHeatmap(model.getTemperatureArray(), props.grid_width, props.grid_height);\n velocity_view.bindVectormap(model.getUVelocityArray(), model.getVVelocityArray(), props.grid_width, props.grid_height, 25);\n }\n photons_view.bindPhotonsArray(model.getPhotonsArray(), props.model_width, props.model_height);\n }\n\n function setVisOptions() {\n var props = model.properties;\n velocity_view.enabled = props.velocity;\n heatmap_view.setMinTemperature(props.minimum_temperature);\n heatmap_view.setMaxTemperature(props.maximum_temperature);\n heatmap_view.setColorPalette(props.color_palette_type);\n sensors_view.setMinMaxTemp(props.minimum_temperature, props.maximum_temperature);\n }\n\n api = {\n getHeightForWidth: function(width) {\n return width * model.properties.grid_height / model.properties.grid_width;\n },\n\n setup: function(model) {\n isSetup = true;\n setupCanvasViews();\n\n parts_view.bindPartsArray(model.getPartsArray());\n sensors_view.bindSensorsArray(model.getSensorsArray());\n webgl_status.bindModel(model);\n setVisOptions();\n\n parts_view.renderParts();\n sensors_view.renderSensors();\n webgl_status.render();\n api.update();\n\n model.addPropertiesListener(\"use_WebGL\", function() {\n setupCanvasViews();\n setVisOptions();\n webgl_status.render();\n api.update();\n });\n model.addPropertiesListener([\"color_palette_type\", \"velocity\",\n \"minimum_temperature\", \"maximum_temperature\"\n ], function() {\n setVisOptions();\n api.update();\n });\n model.on('tick.view-update', api.update);\n model.on('partsChanged.view-update', function() {\n parts_view.renderParts();\n });\n model.on('sensorsChanged.view-update', function() {\n sensors_view.renderSensors();\n });\n },\n\n update: function() {\n if (!isSetup) return;\n heatmap_view.renderHeatmap();\n velocity_view.renderVectormap();\n photons_view.renderPhotons();\n sensors_view.update();\n },\n\n resize: function() {\n // Ignore all resize() callbacks if view isn't already set up.\n if (!isSetup) return;\n heatmap_view.resize();\n velocity_view.resize();\n photons_view.resize();\n parts_view.renderParts();\n sensors_view.renderSensors();\n api.update();\n },\n\n reset: function() {},\n\n setFocus: function() {\n if (model.get(\"enableKeyboardHandlers\")) {\n this.$el.focus();\n }\n },\n\n bindModel: function(newModel) {\n model = newModel;\n }\n };\n\n (function() {\n // Instantiate SVG views.\n var viewport = SVGContainer.appendViewport();\n\n parts_view = new PartsView(SVGContainer, viewport.append(\"g\"));\n sensors_view = new SensorsView(SVGContainer, viewport.append(\"g\"));\n SVGContainer.$el.append($canvasCont);\n SVGContainer.$el.append($status);\n }());\n\n return api;\n};","\nimport SVGContainer from 'common/views/svg-container';\nimport Renderer from 'models/energy2d/views/renderer';\n\nexport default function(model, modelUrl) {\n return new SVGContainer(model, modelUrl, Renderer, {\n origin: 'top-left'\n });\n};\n","\nimport performance from \"common/performance\";\n\nvar TEST_TIME = 5000,\n WARMUP_TIME = 1000;\n\nexport default function Benchmarks(controller) {\n var start;\n\n var benchmarks = [\n //\n // WebGL OFF\n //\n {\n name: \"engine (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n // warmup\n controller.model.start();\n setTimeout(function() {\n controller.model.stop();\n\n controller.model.properties.use_WebGL = false;\n performance.collectData(true);\n start = controller.model.get(\"time\");\n\n setTimeout(function() {\n // actual fps calculation\n controller.model.start();\n setTimeout(function() {\n controller.model.stop();\n\n performance.collectData(false);\n done(performance.getAvgTime(\"engine\"));\n\n }, TEST_TIME);\n }, 100);\n }, WARMUP_TIME);\n }\n }, {\n name: \"JS rendering (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"js-rendering\"));\n }\n }, {\n name: \"tick (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"tick\"));\n }\n }, {\n name: \"gap b/w frames (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"gap\"));\n }\n }, {\n name: \"fps\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n var elapsedModelTime = controller.model.get('time') - start;\n done(elapsedModelTime / (controller.model.get('timeStepsPerTick') * controller.model.get('timeStep')) * 1000 / TEST_TIME);\n }\n },\n //\n // WebGL ON\n //\n {\n name: \"engine WebGL (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n // warmup\n controller.model.start();\n setTimeout(function() {\n controller.model.stop();\n\n controller.model.properties.use_WebGL = true;\n performance.collectData(true);\n start = controller.model.get(\"time\");\n\n setTimeout(function() {\n // actual fps calculation\n controller.model.start();\n setTimeout(function() {\n controller.model.stop();\n\n performance.collectData(false);\n done(performance.getAvgTime(\"engine\"));\n\n }, TEST_TIME);\n }, 100);\n }, WARMUP_TIME);\n }\n }, {\n name: \"JS rendering WebGL (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"js-rendering\"));\n }\n }, {\n name: \"tick WebGL (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"tick\"));\n }\n }, {\n name: \"gap b/w frames WebGL (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n done(performance.getAvgTime(\"gap\"));\n }\n }, {\n name: \"fps WebGL\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n var elapsedModelTime = controller.model.get('time') - start;\n done(elapsedModelTime / (controller.model.get('timeStepsPerTick') * controller.model.get('timeStep')) * 1000 / TEST_TIME);\n }\n }\n ];\n\n return benchmarks;\n\n};\n","\nexport default function Energy2DScriptingAPI(parent) {\n\n return {\n getTemperatureAt: function getTemperatureAt(x, y) {\n return parent.model.getTemperatureAt(x, y);\n },\n\n getAverageTemperatureAt: function getAverageTemperatureAt(x, y) {\n return parent.model.getAverageTemperatureAt(x, y);\n },\n\n getSensor: function getSensor(i) {\n return parent.model.getSensorsArray()[i];\n },\n\n getPart: function getPart(i) {\n return parent.model.getPartsArray()[i];\n },\n\n addPart: function addPart(props) {\n parent.model.addPart(props);\n },\n\n removePart: function removePart(i) {\n parent.model.removePart(i);\n },\n\n getNumberOfParts: function getNumberOfParts() {\n return parent.model.getPartsArray().length;\n },\n\n syncTemperature: function syncTemperature() {\n parent.model.syncTemperature();\n }\n };\n};\n","import ModelController from \"common/controllers/model-controller\";\nimport Model from 'models/energy2d/modeler';\nimport ModelContainer from 'models/energy2d/views/view';\nimport Benchmarks from 'models/energy2d/benchmarks/benchmarks';\nimport ScriptingAPI from 'models/energy2d/controllers/scripting-api';\n\nexport default function(modelUrl, modelOptions, interactiveController) {\n return new ModelController(modelUrl, modelOptions, interactiveController,\n Model, ModelContainer, ScriptingAPI, Benchmarks);\n}\n","\nvar datasetCount = 0;\n\nexport default function Dataset(definition, model) {\n // Public API.\n var dataset,\n rowIndex,\n tableData,\n xProperty,\n properties,\n namespace = \"dataset\" + (++datasetCount);\n\n function initialize() {\n rowIndex = 0;\n tableData = [];\n registerModelListeners();\n xProperty = definition.timeSeries.xProperty;\n properties = definition.timeSeries.properties;\n appendPropertyRow();\n }\n\n function appendPropertyRow() {\n var i, rowData = [];\n rowIndex++;\n rowData.push(model.get(xProperty));\n for (i = 0; i < properties.length; i++) {\n rowData.push(model.get(properties[i]));\n }\n tableData.push(rowData);\n }\n\n function registerModelListeners() {\n // Namespace listeners to '.dataset'\n model.on('tick.' + namespace, function() {\n appendPropertyRow();\n });\n }\n\n // Public API.\n dataset = {\n\n getData: function(propArray) {\n function copy(array) {\n var ret = [];\n array.forEach(function(element) {\n ret.push(element);\n });\n return ret;\n }\n var i, row, index, j, result = [],\n rowResult;\n if (propArray === undefined) {\n return copy(tableData);\n } else {\n for (i = 0; i < tableData.length; i++) {\n row = tableData[i];\n rowResult = [];\n for (j = 0; j < propArray.length; j++) {\n index = definition.properties.indexOf(propArray[j]);\n rowResult.push(row[index]);\n }\n result.push(rowResult);\n }\n return [result];\n }\n },\n\n reset: function() {\n tableData = $.extend(true, [], definition.tableData);\n rowIndex = 0;\n },\n\n /**\n Used when manually adding a row of property values to the table.\n */\n appendPropertyRow: appendPropertyRow,\n\n // Returns serialized component definition.\n serialize: function() {\n // start with the initial dataset definition.\n var result = $.extend(true, {}, definition);\n // add tableData\n result.tableData = tableData;\n return result;\n }\n };\n\n initialize();\n\n // Return Public API object.\n return dataset;\n};\n","\nimport metadata from 'common/controllers/interactive-metadata';\nimport validator from 'common/validator';\nimport Dataset from 'common/models/dataset';\n\nexport default function ExperimentController(experimentDefinition, interactivesController) {\n // Public API.\n var controller,\n model,\n scriptingAPI,\n timeSeriesDatasets,\n currentDataset,\n timeSeries,\n inputs,\n outputs,\n destinations,\n stateButtons,\n onLoadFunc,\n // the state transition button components\n startRun,\n stopRun,\n saveRun,\n nextRun,\n clearAll,\n // arrays of components (graphs or tables) that data are sent to ...\n timeSeriesDestinations,\n parameterSeriesDestinations,\n timeSeriesGraph;\n\n function initialize() {\n // Validate component definition, use validated copy of the properties.\n experimentDefinition = validator.validateCompleteness(metadata.experiment, experimentDefinition);\n timeSeries = experimentDefinition.timeSeries;\n inputs = experimentDefinition.parameters.inputs;\n outputs = experimentDefinition.parameters.outputs;\n destinations = experimentDefinition.destinations;\n stateButtons = experimentDefinition.stateButtons;\n timeSeriesDatasets = [];\n\n interactivesController.on(\"modelLoaded.experimentController\", function() {\n scriptingAPI = interactivesController.getScriptingAPI();\n model = interactivesController.getModel();\n setupModelParameters();\n });\n\n setup();\n }\n\n function setupModelParameters() {\n model.defineParameter('experimentCleared', {\n initialValue: false\n }, function() {\n if (model.get('experimentCleared')) {\n goToNextRun();\n model.set('experimentCleared', false);\n }\n });\n model.defineParameter('experimentRunning', {\n initialValue: false\n }, function() {\n if (model.get('experimentRunning')) {\n goToRunStarted();\n } else {\n goToRunStopped();\n }\n });\n }\n\n function setup() {\n\n // private functions ...\n function setupStateButtons() {\n startRun = interactivesController.getComponent(stateButtons.startRun);\n stopRun = interactivesController.getComponent(stateButtons.stopRun);\n saveRun = interactivesController.getComponent(stateButtons.saveRun);\n nextRun = interactivesController.getComponent(stateButtons.nextRun);\n clearAll = interactivesController.getComponent(stateButtons.clearAll);\n }\n\n function setupDestinationComponents() {\n var i, j, destination, component;\n timeSeriesDestinations = [];\n parameterSeriesDestinations = [];\n for (i = 0; i < destinations.length; i++) {\n destination = destinations[i];\n destination.components = [];\n for (j = 0; j < destination.componentIds.length; j++) {\n destination.components.push(interactivesController.getComponent(destination.componentIds[j]));\n }\n switch (destination.type) {\n case \"timeSeries\":\n timeSeriesDestinations.push(destination);\n break;\n case \"parameterSeries\":\n parameterSeriesDestinations.push(destination);\n break;\n default:\n throw new Error(\"Experiment destination: invalid destination type: \" + destination.type);\n }\n }\n timeSeriesGraph = undefined;\n for (i = 0; i < timeSeriesDestinations.length; i++) {\n destination = timeSeriesDestinations[i];\n for (j = 0; j < destination.components.length; j++) {\n component = destination.components[j];\n if (component.type !== undefined && component.type === \"graph\") {\n timeSeriesGraph = component;\n return;\n }\n }\n }\n }\n\n function setupStateButtonActions() {\n startRun.setAction(\"set('experimentRunning', true);\");\n stopRun.setAction(\"set('experimentRunning', false);\");\n saveRun.setAction(function() {\n var i, j, parameterSeriesDestination;\n timeSeriesDatasets.push(currentDataset);\n for (i = 0; i < parameterSeriesDestinations.length; i++) {\n parameterSeriesDestination = parameterSeriesDestinations[i];\n for (j = 0; j < parameterSeriesDestination.components.length; j++) {\n parameterSeriesDestination.components[j].appendDataPropertiesToComponent();\n }\n }\n saveRun.setDisabled(true);\n });\n nextRun.setAction(\"set('experimentCleared', true);\");\n clearAll.setAction(function() {\n interactivesController.reloadInteractive();\n });\n }\n\n // setup experiment ...\n setupStateButtons();\n setupDestinationComponents();\n setupStateButtonActions();\n }\n\n function addOlderRunsToGraph() {\n var i;\n if (timeSeriesGraph) {\n for (i = 0; i < timeSeriesDatasets.length; i++) {\n timeSeriesGraph.addDataSet(timeSeriesDatasets[i].getData());\n }\n timeSeriesGraph.update();\n }\n }\n\n function unfreezeInputParameters() {\n for (var i = 0; i < inputs.length; i++) {\n model.unfreeze(inputs[i]);\n }\n }\n\n\n function freezeInputParameters() {\n for (var i = 0; i < inputs.length; i++) {\n model.freeze(inputs[i]);\n }\n }\n\n function goToRunStarted() {\n startRun.setDisabled(true);\n stopRun.setDisabled(false);\n saveRun.setDisabled(true);\n nextRun.setDisabled(true);\n clearAll.setDisabled(false);\n freezeInputParameters();\n currentDataset = new Dataset({\n timeSeries: timeSeries\n }, model);\n scriptingAPI.api.start();\n }\n\n function goToRunStopped() {\n startRun.setDisabled(true);\n stopRun.setDisabled(true);\n saveRun.setDisabled(false);\n nextRun.setDisabled(false);\n scriptingAPI.api.stop();\n }\n\n function goToNextRun() {\n startRun.setDisabled(false);\n stopRun.setDisabled(true);\n saveRun.setDisabled(true);\n nextRun.setDisabled(true);\n model.set('experimentCleared', false);\n interactivesController.reloadModel({\n propertiesToRetain: inputs,\n cause: \"new-run\"\n });\n unfreezeInputParameters();\n addOlderRunsToGraph();\n }\n\n // Public API.\n controller = {\n\n setOnLoadScript: function(onLoadScript) {\n onLoadFunc = onLoadScript;\n },\n\n // Returns serialized component definition.\n serialize: function() {\n // start with the initial experimentDefinition.\n var result = $.extend(true, {}, experimentDefinition);\n // possibly add saved data\n return result;\n }\n };\n\n initialize();\n\n // Return Public API object.\n return controller;\n};\n","\nimport seedrandom from 'seedrandom';\nimport labConfig from 'lab.config';\nimport arrays from 'arrays';\nimport FastClick from 'fastclick';\nimport _ from 'underscore';\nimport alert from 'common/alert';\nimport validator from 'common/validator';\nimport getI18n from 'common/i18n';\nimport metadata from 'common/controllers/interactive-metadata';\nimport languageSelect from 'common/controllers/language-select';\nimport DataSet from 'common/controllers/data-set';\nimport BarGraphController from 'common/controllers/bar-graph-controller';\nimport GraphController from 'common/controllers/graph-controller';\nimport ExportController from 'common/controllers/export-controller';\nimport LogController from 'common/controllers/log-controller';\nimport ScriptingAPI from 'common/controllers/scripting-api';\nimport ButtonController from 'common/controllers/button-controller';\nimport CheckboxController from 'common/controllers/checkbox-controller';\nimport TextController from 'common/controllers/text-controller';\nimport ImageController from 'common/controllers/image-controller';\nimport RadioController from 'common/controllers/radio-controller';\nimport SliderController from 'common/controllers/slider-controller';\nimport PulldownController from 'common/controllers/pulldown-controller';\nimport JoystickController from 'common/controllers/joystick-controller';\nimport ColorIndicatorController from 'common/controllers/color-indicator-controller';\nimport SpectrometerController from 'common/controllers/spectrometer-controller';\nimport NumericOutputController from 'common/controllers/numeric-output-controller';\nimport TableController from 'common/controllers/table-controller';\nimport ParentMessageAPI from 'common/controllers/parent-message-api';\nimport ThermometerController from 'common/controllers/thermometer-controller';\nimport PlaybackController from 'common/controllers/playback-controller';\nimport DivController from 'common/controllers/div-controller';\nimport DispatchSupport from 'common/dispatch-support';\nimport HelpSystem from 'common/controllers/help-system';\nimport tooltip from 'common/views/tooltip';\nimport cookies from 'common/cookies';\nimport setupBanner from 'common/controllers/setup-banner';\nimport AboutDialog from 'common/controllers/about-dialog';\nimport ShareDialog from 'common/controllers/share-dialog';\nimport CreditsDialog from 'common/controllers/credits-dialog';\nimport SemanticLayout from 'common/layout/semantic-layout';\nimport templates from 'common/layout/templates';\nimport $__models_md_d_controllers_controller from 'models/md2d/controllers/controller';\nimport $__models_signal_generator_controller from 'models/signal-generator/controller';\nimport $__models_iframe_controller from 'models/iframe/controller';\nimport $__models_sensor_controller from 'models/sensor/controller';\nimport $__models_dual_sensor_controller from 'models/dual-sensor/controller';\nimport $__models_dual_sensor_connector_controller from 'models/dual-sensor-connector/controller';\nimport $__models_sensor_connector_controller from 'models/sensor-connector/controller';\nimport $__models_labquest__controller from 'models/labquest2/controller';\nimport $__models_energy_d_controllers_controller from 'models/energy2d/controllers/controller';\nimport ExperimentController from 'common/controllers/experiment-controller';\n\nvar // Helper function which just provides banner definition.\n ModelControllerFor = {\n 'md2d': $__models_md_d_controllers_controller,\n 'signal-generator': $__models_signal_generator_controller,\n 'iframe-model': $__models_iframe_controller,\n 'sensor': $__models_sensor_controller,\n 'dual-sensor': $__models_dual_sensor_controller,\n 'dual-sensor-connector': $__models_dual_sensor_connector_controller,\n 'sensor-connector': $__models_sensor_connector_controller,\n 'labquest2': $__models_labquest__controller,\n 'energy2d': $__models_energy_d_controllers_controller\n },\n\n // Set of available components.\n // - Key defines 'type', which is used in the interactive JSON.\n // - Value is a constructor function of the given component.\n // Each constructor should assume that it will be called with\n // following arguments:\n // 1. component definition (unmodified object from the interactive JSON),\n // 2. scripting API object,\n // 3. public API of the InteractiveController.\n // Of course, some of them can be passed unnecessarily, but\n // the InteractiveController follows this convention.\n //\n // The instantiated component should provide following interface:\n // # serialize() - function returning a JSON object, which represents current state\n // of the component. When component doesn't change its state,\n // it should just return a copy (!) of the initial component definition.\n // # getViewContainer() - function returning a jQuery object containing\n // DOM elements of the component.\n // # modelLoadedCallback(model) - optional function with , a callback which is called when the model is loaded.\n // # resize() - optional function taking no arguments, a callback\n // which is called by the layout algorithm when component's container\n // dimensions are changed. This lets component to adjust itself to the\n // new container dimensions.\n //\n // Note that each components view container (so, jQuery object returned by getViewContainer() has to\n // have class 'component'! It's required and checked in the runtime by the interactive controller.\n // It ensures good practices while implementing new components.\n // Please see: src/sass/lab/_interactive-component.sass to check what this CSS class defines.\n ComponentConstructor = {\n 'text': TextController,\n 'image': ImageController,\n 'button': ButtonController,\n 'checkbox': CheckboxController,\n 'pulldown': PulldownController,\n 'radio': RadioController,\n 'thermometer': ThermometerController,\n 'barGraph': BarGraphController,\n 'graph': GraphController,\n 'slider': SliderController,\n 'colorIndicator': ColorIndicatorController,\n 'joystick': JoystickController,\n 'spectrometer': SpectrometerController,\n 'numericOutput': NumericOutputController,\n 'table': TableController,\n 'div': DivController,\n 'playback': PlaybackController\n };\n\nfunction clone(obj) {\n var copy;\n // Handle the 3 simple types, and null or undefined.\n if (null == obj || \"object\" !== typeof obj) return obj;\n // Handle Date\n if (obj instanceof Date) {\n copy = new Date();\n copy.setTime(obj.getTime());\n return copy;\n }\n // Handle Array\n if (obj instanceof Array) {\n copy = [];\n for (var i = 0, len = obj.length; i < len; i++) {\n copy[i] = clone(obj[i]);\n }\n return copy;\n }\n // Handle Object\n if (obj instanceof Object) {\n copy = {};\n for (var attr in obj) {\n if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);\n }\n return copy;\n }\n throw new Error(\"Unable to copy obj! Its type isn't supported.\");\n}\n\nexport default function InteractivesController(interactiveReference, viewSelector) {\n\n var interactive = {},\n controller = {},\n initialInteractiveConfig,\n initialModelConfig,\n experimentController,\n experimentDefinition,\n modelController,\n model,\n currentModelID,\n $interactiveContainer,\n $fastClickContainer,\n helpSystem,\n i18n,\n modelDefinitions = [],\n modelHash = {},\n componentModelLoadedCallbacks,\n dataSetModelLoadedCallbacks,\n willResetModelCallbacks = [],\n ignoreModelResetEvent = false,\n initialModelLoad,\n\n // Hash of instantiated components.\n // Key - component ID.\n // Value - array of component instances.\n componentByID = {},\n\n // Simple list of instantiated components.\n componentList = [],\n\n // List of properties that are bound to components and should be retained during\n // model reload / reset.\n propertiesRetainedByComponents = [],\n\n // Hash containing all public (see .addDataSet() method) data sets.\n publicDataSetsByName,\n\n // API for scripts defined in the interactive JSON file.\n // and additional model-specific scripting api if one is defined\n scriptingAPI,\n\n // Handles exporting data to DataGames, if 'exports' are specified.\n exportController,\n\n // Handles logging events to LARA or any parent that implements LARA-logging interface.\n logController,\n\n // Doesn't currently have any public methods, but probably will.\n parentMessageAPI,\n\n // Dialogs which can be shown using banner.\n aboutDialog,\n shareDialog,\n creditsDialog,\n\n semanticLayout,\n getNextTabIndex,\n randSeed,\n\n dispatch = new DispatchSupport(\"modelLoaded\", \"interactiveRendered\", \"modelReset\", \"resize\",\n \"interactiveRequested\", \"interactiveWillReload\");\n\n // simple tabindex support, also exposed via api.getNextTabIndex()\n getNextTabIndex = function() {\n var tabIndex = -1;\n return function() {\n return tabIndex++;\n };\n };\n\n // Use seedrandom library (see vendor/seedrandom) that substitutes an explicitly seeded\n // RC4-based algorithm for Math.random().\n function generateRandomSeed() {\n randSeed = interactive.randomSeed;\n if (randSeed === undefined) {\n // Generate random seed.\n randSeed = Math.random().toString();\n }\n Math.seedrandom = seedrandom(randSeed);\n }\n\n function getModelDefinition(id) {\n if (modelHash[id]) {\n return modelHash[id];\n }\n throw new Error(\"No model found with id \" + id);\n }\n\n function layoutInteractive() {\n // Do nothing if this is called before the model loads (for example via a resize event).\n // The interactive will be laid out as soon as the model loads anyway, and furthermore the\n // semantic layout mechanism calls at least one modelController method.\n if (!semanticLayout.isReady()) {\n return;\n }\n semanticLayout.layoutInteractive();\n }\n\n // ------------------------------------------------------------\n //\n // Handle keyboard shortcuts for model operation.\n //\n // ------------------------------------------------------------\n\n function setupModelPlayerKeyboardHandler() {\n // Deregister previous keydown handlers. Use namespaces so the code\n // will not inadvertently remove event handlers attached by other code.\n $interactiveContainer.off('keydown.interactiveController');\n if (modelController && modelController.enableKeyboardHandlers()) {\n $interactiveContainer.on('keydown.interactiveController', function(event) {\n var keycode = event.keycode || event.which;\n switch (keycode) {\n case 13: // return\n event.preventDefault();\n scriptingAPI.api.start();\n break;\n\n case 32: // space\n event.preventDefault();\n if (!scriptingAPI.api.isStopped()) {\n scriptingAPI.api.stop();\n } else {\n scriptingAPI.api.start();\n }\n break;\n\n case 37: // left-arrow\n event.preventDefault();\n if (!scriptingAPI.api.isStopped()) {\n scriptingAPI.api.stop();\n } else {\n scriptingAPI.api.stepBack();\n }\n break;\n\n case 39: // right-arrow\n event.preventDefault();\n if (!scriptingAPI.api.isStopped()) {\n scriptingAPI.api.stop();\n } else {\n scriptingAPI.api.stepForward();\n }\n break;\n }\n });\n // $interactiveContainer.focus();\n }\n }\n\n function setupLayout() {\n var template, layout, comp, components, banner, resizeAfterFullscreen;\n\n if (typeof interactive.template === \"string\") {\n template = templates[interactive.template];\n } else {\n template = interactive.template;\n }\n\n // The authored definition of which components go in which container.\n layout = interactive.layout;\n\n // Banner hash containing components, layout containers and layout definition\n // (components location). Keep it in a separate structure, because we do not\n // expect these objects to be serialized!\n banner = setupBanner(controller, interactive, creditsDialog, aboutDialog, shareDialog);\n // Register callbacks of banner components.\n components = banner.components;\n for (comp in components) {\n if (components.hasOwnProperty(comp)) {\n comp = components[comp];\n if (comp.modelLoadedCallback) {\n // $.proxy ensures that callback will be always executed\n // in the context of correct object ('this' binding).\n componentModelLoadedCallbacks.push($.proxy(comp.modelLoadedCallback, comp));\n }\n }\n }\n // Note that all of these operations create a new object.\n // So interactive definition specified by the author won't be affected.\n // This is important for serialization correctness.\n template = banner.template.concat(template);\n template.forEach(function(container, idx) {\n template[idx] = $.extend({}, container);\n });\n layout = $.extend({}, layout, banner.layout);\n components = $.extend({}, componentByID, banner.components);\n\n // Setup layout using both author components and components\n // created automatically in this controller.\n semanticLayout.initialize({\n $mainContainer: $interactiveContainer,\n $containersParent: $fastClickContainer,\n containers: template,\n layout: layout,\n components: components,\n aspectRatio: interactive.aspectRatio,\n fontScale: interactive.fontScale,\n padding: interactive.padding\n });\n\n // We are rendering in embeddable mode if only element on page\n // so resize when window resizes.\n if (onlyElementOnPage()) {\n $(window).off(\"resize.lab-resize-handler\");\n $(window).on(\"resize.lab-resize-handler\", function() {\n controller.resize();\n });\n }\n\n // in all cases, call resize when entering and existing fullscreen\n resizeAfterFullscreen = function() {\n // need to call twice, as safari requires two attempts before it has\n // the correct dimensions.\n controller.resize();\n setTimeout(controller.resize, 50);\n };\n $(document).off(\".lab-fullscreen-change\");\n $(document).on(\"fullscreenchange.lab-fullscreen-change\", resizeAfterFullscreen)\n .on(\"mozfullscreenchange.lab-fullscreen-change\", resizeAfterFullscreen)\n .on(\"webkitfullscreenchange.lab-fullscreen-change\", resizeAfterFullscreen);\n }\n\n function createComponent(component) {\n // Get type and ID of the requested component from JSON definition.\n var type = component.type,\n id = component.id,\n comp;\n\n // Use an appropriate constructor function and create a new instance of the given type.\n // Note that we use constant set of parameters for every type:\n // 1. component definition (exact object from interactive JSON),\n // 2. scripting API object,\n // 3. public API of the InteractiveController.\n comp = new ComponentConstructor[type](component, controller);\n\n if (!comp.getViewContainer().hasClass(\"component\")) {\n throw new Error(\"Invalid Interactive Component implementation. Each component has to have 'component' class.\");\n }\n\n // Save the new instance.\n componentByID[id] = comp;\n componentList.push(comp);\n if (component.retainProperty && component.property != null) {\n // All properties that are bound to some interactive component should be retained during\n // model reset or reload.\n propertiesRetainedByComponents.push(component.property);\n }\n\n // Register component modelLoaded callbacks if available.\n // FIXME. These callbacks should be event listeners.\n if (comp.modelLoadedCallback) {\n // $.proxy ensures that callback will be always executed\n // in the context of correct object ('this' binding).\n componentModelLoadedCallbacks.push($.proxy(comp.modelLoadedCallback, comp));\n }\n }\n\n /**\n Generic function that accepts either a string or an array of strings,\n and returns the complete string\n */\n function getStringFromArray(str) {\n if (typeof str === 'string') {\n return str;\n }\n return str.join('\\n');\n }\n\n /**\n Validates interactive definition.\n\n Displays meaningful info in case of any errors. Also an exception is being thrown.\n\n @param interactive\n hash representing the interactive specification\n */\n function validateInteractive(interactive) {\n var i, len, modelDefinitions, modelDefinition, components, errMsg;\n\n function validateArray(modelName, array) {\n var i, len, errMsg;\n // Support undefined / null values - just return.\n if (!array) return;\n\n try {\n for (i = 0, len = array.length; i < len; i++) {\n array[i] = validator.validateCompleteness(metadata[modelName], array[i]);\n }\n } catch (e) {\n errMsg = \"Incorrect \" + modelName + \" definition:\\n\" + e.message;\n alert(errMsg);\n throw new Error(errMsg);\n }\n }\n\n // Validate top level interactive properties.\n try {\n interactive = validator.validateCompleteness(metadata.interactive, interactive);\n } catch (e) {\n errMsg = \"Incorrect interactive definition:\\n\" + e.message;\n alert(errMsg);\n throw new Error(errMsg);\n }\n\n validateArray(\"model\", interactive.models);\n validateArray(\"parameter\", interactive.parameters);\n validateArray(\"output\", interactive.outputs);\n validateArray(\"dataSet\", interactive.dataSets);\n validateArray(\"filteredOutput\", interactive.filteredOutputs);\n validateArray(\"helpTip\", interactive.helpTips);\n\n // Validate also nested structures.\n modelDefinitions = interactive.models;\n for (i = 0, len = modelDefinitions.length; i < len; i++) {\n modelDefinition = modelDefinitions[i];\n validateArray(\"parameter\", modelDefinition.parameters);\n validateArray(\"output\", modelDefinition.outputs);\n validateArray(\"filteredOutput\", modelDefinition.filteredOutputs);\n }\n\n\n // If an experiment template exists validate nested experiment structures.\n if (interactive.experiment) {\n experimentDefinition = interactive.experiment;\n validator.validateCompleteness(metadata.experimentTimeSeries, experimentDefinition.timeSeries);\n validateArray(\"experimentParameter\", experimentDefinition.parameters);\n validateArray(\"experimentDestination\", experimentDefinition.destinations);\n validateArray(\"experimentSavedRun\", experimentDefinition.savedRuns);\n }\n\n components = interactive.components;\n try {\n for (i = 0, len = components.length; i < len; i++) {\n components[i] = validator.validateCompleteness(metadata[components[i].type], components[i]);\n }\n } catch (e) {\n errMsg = \"Incorrect \" + components[i].type + \" component definition:\\n\" + e.message;\n alert(errMsg);\n throw new Error(errMsg);\n }\n\n // Validate exporter, if any...\n if (interactive.exports) {\n try {\n interactive.exports = validator.validateCompleteness(metadata.exports, interactive.exports);\n } catch (e) {\n errMsg = \"Incorrect exports definition:\\n\" + e.message;\n alert(errMsg);\n throw new Error(errMsg);\n }\n }\n\n if (interactive.logging) {\n try {\n interactive.logging = validator.validateCompleteness(metadata.logging, interactive.logging);\n } catch (e) {\n errMsg = \"Incorrect logging definition:\\n\" + e.message;\n alert(errMsg);\n throw new Error(errMsg);\n }\n }\n\n return interactive;\n }\n\n /**\n Is the Interactive the only element on the page?\n\n An Interactive can either be displayed as the only content on a page\n (often in an iframe) or in a dom element on a page with other elements.\n\n TODO: make more robust\n This function makes a simplifying assumption that the Interactive is the\n only content on the page if the parent is the element\n */\n function onlyElementOnPage() {\n return $interactiveContainer.parent().prop(\"nodeName\") === \"BODY\";\n }\n\n /**\n Setup theme (which is just a CSS class of the main interactive container).\n */\n function setupTheme() {\n var theme = interactive.theme;\n if (arrays.isArray(theme)) {\n // [\"a\", \"b\"] => \"lab-theme-a lab-theme-b\"\n theme = theme.map(function(el) {\n return 'lab-theme-' + el;\n }).join(' ');\n } else if (theme) {\n theme = 'lab-theme-' + theme;\n } else {\n theme = '';\n }\n $interactiveContainer.alterClass('lab-theme-*', theme);\n }\n\n /**\n The main method called when this controller is created.\n\n Populates the element pointed to by viewSelector with divs to contain the\n molecule container (view) and the various components specified in the interactive\n definition, and\n\n @param newInteractive\n hash representing the interactive specification\n */\n function loadInteractive(newInteractive) {\n // Cleanup container!\n $interactiveContainer.empty();\n\n // Attach FastClick only to the .lab-fastclick-container DIV. We don't want to affect rest of the\n // web page (e.g. by attaching FastClick to \"body\" or window), let its developer decide whether\n // FastClick should be used there or not. It solves two issues on mobile browsers:\n // - eliminates 300ms delay between a physical tap and the firing of a click event\n // - fixes sticky :hover state (https://www.pivotaltracker.com/story/show/58373748)\n //\n // Unfortunatelly we cannot attach FastClick to the whole interactive container, as it breaks\n // e.g. jQuery context menu.\n // See: https://www.pivotaltracker.com/story/show/63386470\n // Components have choice whether to attach themselves to .lab-interactive-container\n // or .lab-fastclick-container.\n $fastClickContainer = $('
');\n $fastClickContainer.appendTo($interactiveContainer);\n FastClick.attach($fastClickContainer[0]);\n\n // We have to create a new container for dialogs. When jQuery UI dialog is open, it moves\n // all its sibling elements before itself (kind of z indexing). It means all the siblings\n // are removed from DOM and then added again. Besides performance it can cause unwanted\n // effects in some cases (e.g. iframe content is reloaded). Separate container that contains\n // only dialogs ensures that it won't happen.\n $fastClickContainer.append('
');\n\n // Each time we load a new interactive, we assume that it would be an \"initial\" model load.\n // This flag is used to decide whether parameters should be retained or not.\n // During the initial model load we obviously don't want to retain parameters.\n initialModelLoad = true;\n\n controller.interactive = newInteractive;\n\n // Save initial interactive config for reload method (so it can be synchronous).\n initialInteractiveConfig = $.extend(true, {}, controller.interactive);\n // Validate interactive.\n controller.interactive = validateInteractive(controller.interactive);\n interactive = controller.interactive;\n // Ensure that interactive initialization is always the same if it's desired\n // (\"randomSeed\" paramenter is provided).\n generateRandomSeed();\n // Setup CSS class of the main container.\n setupTheme();\n // Set up the list of possible modelDefinitions.\n modelDefinitions = interactive.models;\n for (var i = 0, len = modelDefinitions.length; i < len; i++) {\n modelHash[modelDefinitions[i].id] = modelDefinitions[i];\n }\n // Try to load the first model (in order) and initialize interactive.\n var firstModel = modelDefinitions[0];\n if (firstModel && firstModel.url) {\n // Model has to be downloaded, it's async operation so start with it.\n loadModel(firstModel.id);\n initializeInteractive();\n } else if (firstModel && firstModel.model) {\n // Model is provided inside Interactive JSON, so setup interactive first and then\n // load a model.\n initializeInteractive();\n loadModel(firstModel.id, firstModel.model);\n }\n }\n\n function cleanupInteractive() {\n // Clear component instances.\n componentList = [];\n componentByID = {};\n // Internal onLoad callbacks (TODO REFACTOR ME)\n dataSetModelLoadedCallbacks = [];\n componentModelLoadedCallbacks = [];\n // And list of properties bound to components.\n propertiesRetainedByComponents = [];\n }\n\n function initializeInteractive() {\n cleanupInteractive();\n\n i18n = getI18n(interactive.lang);\n // Setup menu that lets users change language of the interactive. Do it ASAP, as it involves\n // async download of interactive metadata.\n languageSelect('#lang-icon', controller);\n\n creditsDialog = new CreditsDialog(\".lab-dialog-container\", i18n, interactive);\n shareDialog = new ShareDialog(\".lab-dialog-container\", viewSelector, i18n, interactive);\n if (interactive.about || interactive.subtitle) {\n aboutDialog = new AboutDialog(\".lab-dialog-container\", i18n, interactive);\n } else {\n // Display credits if author hasn't provided any specific information.\n aboutDialog = creditsDialog;\n }\n\n var modelDef = controller.interactive.models[0];\n modelController = createModelController(modelDef.type, modelDef.modelUrl, null);\n // also be sure to get notified when the underlying model changes\n // (this catches reloads)\n modelController.on('modelReset', modelResetHandler);\n\n // Create Scripting API\n scriptingAPI = new ScriptingAPI(controller, null);\n // Extend universal Interactive scriptingAPI with optional model-specific scripting API\n if (modelController.ScriptingAPI) {\n scriptingAPI.extend(modelController.ScriptingAPI);\n }\n // Expose API to global namespace (prototyping / testing using the browser console).\n scriptingAPI.exposeScriptingAPI();\n\n // Setup data sets.\n publicDataSetsByName = {};\n interactive.dataSets.forEach(function(dataSetDefinition) {\n // Data set will automatically register itself in interactive controller (it will call\n // .addDataSet() method).\n new DataSet(dataSetDefinition, controller);\n });\n\n // Setup help system if help tips are defined.\n if (interactive.helpTips.length > 0) {\n helpSystem = new HelpSystem(interactive.helpTips, $fastClickContainer);\n }\n\n if (interactive.helpOnLoad || interactive.aboutOnLoad) {\n controller.on(\"interactiveRendered.helpOnLoad\", function() {\n // Make sure that this callback is executed only once.\n controller.on(\"interactiveRendered.helpOnLoad\", null);\n\n function hashCode(string) {\n var hash = 0,\n len = string.length,\n i, c;\n if (len === 0) return hash;\n for (i = 0; i < len; i++) {\n c = string.charCodeAt(i);\n hash = ((hash << 5) - hash) + c;\n hash = hash & hash;\n }\n return hash;\n }\n var hash = hashCode(JSON.stringify(interactive));\n // When `helpOnLoad` is set to true, the help mode will be automatically shown,\n // but only when user opens interactive for the first time.\n if (helpSystem && interactive.helpOnLoad && !cookies.hasItem(\"lab-help-\" + hash)) {\n helpSystem.start();\n cookies.setItem(\"lab-help-\" + hash, true);\n }\n // `aboutOnLoad` follows the same pattern.\n if (interactive.aboutOnLoad && !cookies.hasItem(\"lab-about-\" + hash)) {\n aboutDialog.open();\n cookies.setItem(\"lab-about-\" + hash, true);\n }\n });\n }\n\n // Replace native tooltips with custom, styled and responsive tooltips.\n tooltip($interactiveContainer);\n\n // Create interactive components\n var componentJsons = controller.interactive.components || [];\n\n for (var i = 0, len = componentJsons.length; i < len; i++) {\n createComponent(componentJsons[i]);\n }\n\n // Setup messaging with CODAP (or other data manager) if present\n\n // WARNING: due to deficiencies in iframePhone (as of iframePhone 1.1), this must take\n // place in the same event loop as the creation of parentMessageAPI (otherwise, the\n // codap-present message may be swallowed by parentMessageAPI's iframePhone instance, with the\n // result that exportController.canExportData never becomes true)\n\n exportController = new ExportController(controller);\n\n logController = new LogController({\n // Use logging config if provided or use default one (validation will fill an empty hash with default values).\n config: interactive.logging || validator.validateCompleteness(metadata.logging, {}),\n componentByID: componentByID,\n // List of components that implement .enableLogging() method and should have logging enabled by default.\n additionalComponents: [aboutDialog, shareDialog, creditsDialog, helpSystem],\n boundProperties: getBoundProperties(),\n interactivesController: controller\n });\n\n // Setup experimentController, if defined.\n if (interactive.experiment) {\n experimentController = new ExperimentController(interactive.experiment, controller);\n }\n\n // When all components are created, we can initialize semantic layout.\n setupLayout();\n }\n\n function createModelController(type, modelUrl, modelOptions) {\n // set default model type to \"md2d\"\n var modelType = type || \"md2d\";\n var modelController;\n\n if (ModelControllerFor[modelType] === null) {\n throw new Error(\"Couldn't understand modelType '\" + modelType + \"'!\");\n }\n\n modelController = new ModelControllerFor[modelType](modelUrl, modelOptions, controller);\n\n return modelController;\n }\n\n /**\n Load the model from the model definitions hash.\n\n @param: currentModelID.\n @optionalParam modelObject\n @optionalParam additionalPropertiesToRetain properties that should be retained during load\n process except from ones defined in 'propertiesToRetain' interactive section\n @optionalParam cause cause of the load (can be load, reload or custom)\n */\n function loadModel(id, modelConfig, additionalPropertiesToRetain, cause) {\n var modelDefinition = getModelDefinition(id),\n interactiveViewOptions,\n interactiveModelOptions,\n retainedProperties;\n\n // Ensure that model load is always the same if it's desired (\"randomSeed\" parameter\n // is provided).\n generateRandomSeed();\n\n // Check initialModelLoad flag. If it's equal to false, it means that it's a subsequent model\n // load and properties really can be retained.\n if (!initialModelLoad) {\n retainedProperties = getRetainedProperties(additionalPropertiesToRetain);\n }\n\n currentModelID = id;\n controller.currentModel = modelDefinition;\n\n if (modelDefinition.viewOptions) {\n // Make a deep copy of modelDefinition.viewOptions, so we can freely mutate interactiveViewOptions\n // without the results being serialized or displayed in the interactives editor.\n interactiveViewOptions = $.extend(true, {}, modelDefinition.viewOptions);\n } else {\n interactiveViewOptions = {\n controlButtons: 'play'\n };\n }\n\n if (modelDefinition.modelOptions) {\n // Make a deep copy of modelDefinition.modelOptions.\n interactiveModelOptions = $.extend(true, {}, modelDefinition.modelOptions);\n }\n\n // Load provided modelConfig (highest priority), model definition placed directly inside\n // interactive JSON or model defined by URL.\n if (modelConfig) {\n finishWithLoadedModel(modelDefinition.url, modelConfig, retainedProperties, cause);\n } else if (modelDefinition.model) {\n finishWithLoadedModel(modelDefinition.url, modelDefinition.model, retainedProperties, cause);\n } else if (modelDefinition.url) {\n $.get(labConfig.modelsRootUrl + modelDefinition.url).done(function(modelConfig) {\n // Deal with the servers that return the json as text/plain\n modelConfig = typeof modelConfig === 'string' ? JSON.parse(modelConfig) : modelConfig;\n finishWithLoadedModel(modelDefinition.url, modelConfig, retainedProperties, cause);\n }).fail(function() {\n modelConfig = {\n \"type\": \"md2d\",\n \"width\": 2.5,\n \"height\": 1.5,\n \"viewOptions\": {\n \"backgroundColor\": \"rgba(245,200,200,255)\",\n \"showClock\": false,\n \"textBoxes\": [{\n \"text\": \"Model could not be loaded:\",\n \"x\": 0.0,\n \"y\": 1.0,\n \"width\": 2.5,\n \"height\": 0.25,\n \"fontScale\": 1.4,\n \"layer\": 1,\n \"frame\": \"rectangle\",\n \"textAlign\": \"center\",\n \"strokeOpacity\": 0,\n \"backgroundColor\": \"rgb(232,231,231)\"\n }, {\n \"text\": modelDefinition.url,\n \"x\": 0.0,\n \"y\": 0.8,\n \"width\": 2.5,\n \"height\": 0.25,\n \"fontScale\": 0.9,\n \"layer\": 1,\n \"frame\": \"rectangle\",\n \"textAlign\": \"center\",\n \"strokeOpacity\": 0,\n \"backgroundColor\": \"rgb(232,231,231)\"\n }]\n }\n };\n finishWithLoadedModel(modelDefinition.url, modelConfig, retainedProperties, cause);\n });\n }\n\n function processOptions(modelConfig, interactiveModelConfig, interactiveViewConfig) {\n var modelOptions,\n viewOptions;\n\n function meldOptions(base, overlay) {\n var p;\n for (p in base) {\n if (overlay[p] === undefined) {\n if (arrays.isArray(base[p])) {\n // Array.\n overlay[p] = $.extend(true, [], base[p]);\n } else if (base[p] === null) {\n // Explicit check for null is necessary. `typeof null` returns \"object\", so the next `if` statement\n // would be triggered incorrectly.\n // `undefined` value doesn't have this problem (`typeof undefined` returns \"undefined\"), so it will\n // be handled by the last `if` statement (basic type).\n overlay[p] = null;\n } else if (typeof base[p] === \"object\") {\n // Object.\n overlay[p] = $.extend(true, {}, base[p]);\n } else {\n // Basic type.\n overlay[p] = base[p];\n }\n } else if (typeof overlay[p] === \"object\" && !(overlay[p] instanceof Array)) {\n overlay[p] = meldOptions(base[p], overlay[p]);\n } else if (overlay[p] instanceof Array && base[p] instanceof Array) {\n overlay[p] = $.extend(true, base[p], overlay[p]);\n }\n }\n return overlay;\n }\n\n // 1. Process view options.\n // Do not modify initial configuration.\n viewOptions = $.extend(true, {}, interactiveViewConfig);\n // Merge view options defined in interactive (interactiveViewConfig)\n // with view options defined in the basic model description.\n viewOptions = meldOptions(modelConfig.viewOptions || {}, viewOptions);\n\n // 2. Process model options.\n // Do not modify initial configuration.\n modelOptions = $.extend(true, {}, interactiveModelConfig);\n // Merge model options defined in interactive (interactiveModelConfig)\n // with the basic model description.\n modelOptions = meldOptions(modelConfig || {}, modelOptions);\n\n // Update view options in the basic model description after merge.\n // Note that many unnecessary options can be passed to Model constructor\n // because of that (e.g. view-only options defined in the interactive).\n // However, all options which are unknown for Model will be discarded\n // during options validation, so this is not a problem\n // (but significantly simplifies configuration).\n modelOptions.viewOptions = viewOptions;\n\n return modelOptions;\n }\n\n function finishWithLoadedModel(modelUrl, modelConfig, retainedProperties, cause) {\n // Save initial model config for reload method (so it can be synchronous).\n initialModelConfig = $.extend(true, {}, modelConfig);\n\n var modelOptions = processOptions(modelConfig, interactiveModelOptions, interactiveViewOptions);\n var possiblySetButtonStyle;\n\n if (modelController) {\n modelController.reload(modelUrl, modelOptions, true);\n } else {\n throw new Error(\"REF something went wrong\");\n }\n\n model = modelController.model;\n\n setupModelPlayerKeyboardHandler();\n\n // Update model references in various objects.\n scriptingAPI.bindModel(model);\n // FIXME: this doesn't seem like a necessary step. However, without it md2d-scripting-api\n // tests fail, but only when all tests are run (e.g. make test-src)! When you run just this\n // single test everything works (e.g. mocha test/md2d/md2d-scripting-api). It looks like\n // window.script variable references some old API instance and seems to be related to the\n // test environment setup. Temporarily put this call here for safety.\n scriptingAPI.exposeScriptingAPI();\n parentMessageAPI.bindModel(model);\n\n initializeModelOutputsAndParameters();\n\n if (retainedProperties) {\n model.set(retainedProperties);\n }\n\n for (var i = 0; i < dataSetModelLoadedCallbacks.length; i++) {\n dataSetModelLoadedCallbacks[i]();\n }\n\n // We call component loaded callbacks before onLoad scripts because some onLoad scripts\n // may require that components are already initialized.\n for (i = 0; i < componentModelLoadedCallbacks.length; i++) {\n componentModelLoadedCallbacks[i](model, scriptingAPI);\n }\n\n var onLoadScript = null;\n if (controller.currentModel.onLoad) {\n onLoadScript = scriptingAPI.makeFunctionInScriptContext(getStringFromArray(controller.currentModel.onLoad));\n onLoadScript();\n }\n\n if (experimentController) {\n experimentController.setOnLoadScript(onLoadScript);\n }\n\n // Setup exporter. Has to happen before modelLoaded. Time-based dependencies FTW.\n exportController.init(interactive.exports || getDefaultExports());\n\n exportController.on('canExportData.interactivesController', function() {\n // hacky, but this updates the 'actualUseDuration' output which depends on canExportData\n modelController.model.makeInvalidatingChange();\n });\n\n if (exportController.modelCanExportData()) {\n modelController.model.properties.controlButtonStyle = 'codap';\n }\n\n exportController.on('modelCanExportData.interactivesController', function() {\n modelController.model.properties.controlButtonStyle = 'codap';\n });\n\n dispatch.modelLoaded(cause || \"initialLoad\");\n\n // Call .ready *after* all previous operations. Note that it will trigger e.g. tick\n // history push of an initial state. It should include all modifications applied\n // by on load scripts and callbacks.\n if (model.ready) model.ready();\n\n // This will attach model container to DOM.\n semanticLayout.setupModel(modelController);\n layoutInteractive();\n\n modelController.initializeView();\n\n dispatch.interactiveRendered();\n\n // Each subsequent model won't be treated as initial one so e.g. properties can be retained.\n initialModelLoad = false;\n }\n }\n\n function initializeModelOutputsAndParameters() {\n setupCustomOutputs(\"basic\", controller.currentModel.outputs, interactive.outputs);\n setupCustomParameters(controller.currentModel.parameters, interactive.parameters);\n // Setup filtered outputs after basic outputs and parameters, as filtered output require its input\n // to exist during its definition.\n setupCustomOutputs(\"filtered\", controller.currentModel.filteredOutputs, interactive.filteredOutputs);\n }\n\n function modelResetHandler(cause) {\n if (!ignoreModelResetEvent) {\n notifyModelResetCallbacks(cause);\n }\n }\n\n /**\n Notify observers that a model was reset, passing along the cause of the reset event.\n */\n function notifyModelResetCallbacks(cause) {\n dispatch.modelReset(cause);\n }\n\n /**\n Notify observers that a reset event is pending for a given model, passing them the model that\n will be reset and a reset-request object that is unique for each observer.\n\n If any observers return true, the reset operation will be paused. They can cache the reset\n request object and asynchronously indicate that it is ok to proceed with the reset by calling\n the cached object's 'proceed' or 'cancel' method.\n\n Once the a reset request's 'proceed' method has been called, calling its 'cancel' method has\n no effect, and vice versa.\n\n If any observers that returned true fail to later call either method of the reset request,\n then the reset will be put off indefinitely.\n\n (Note that, for the time being, there is no practical difference between canceling a reset and\n putting it off indefintely. However, almost surely we will want to keep track of whether\n reset has been canceled or not, so that we can block subsequent requests to reset the model,\n give UI feedback, etc.)\n\n If no observers return a truthy value--and also do not call their reset request's 'cancel'\n method during their execution--then the reset will take place synchronously.\n\n Note that observers that do not return a truthy value are treated like observers that call the\n 'proceed' method: subsequently calling the 'cancel' method of their reset request will have no\n effect.\n */\n function notifyWillResetModelAnd(closure) {\n\n // Fast path; also required because no callbacks => we never call resetRequest.proceed()\n if (willResetModelCallbacks.length === 0) {\n closure();\n }\n\n var numberOfResponsesRequired = willResetModelCallbacks.length;\n var numberOfProceedResponses = 0;\n var resetWasCanceled = false;\n\n function proceedIfReady() {\n if (!resetWasCanceled && numberOfProceedResponses === numberOfResponsesRequired) {\n closure();\n }\n }\n\n // Returns a new \"use once\" object that the willResetModel callback can use to asynchronously\n // allow the reset to proceed or cancel.\n function makeResetRequest() {\n var wasUsed = false;\n\n return {\n proceed: function() {\n if (wasUsed) {\n return;\n }\n wasUsed = true;\n numberOfProceedResponses++;\n proceedIfReady();\n },\n\n cancel: function() {\n if (wasUsed) {\n return;\n }\n wasUsed = true;\n resetWasCanceled = true;\n }\n };\n }\n\n willResetModelCallbacks.forEach(function(willResetModelCallback) {\n var resetRequest = makeResetRequest();\n\n // willResetModel callbacks that don't return a value (or return a falsy value) without\n // having invoked resetRequest.cancel() should be treated as having requested to proceed.\n if (!willResetModelCallback(model, resetRequest)) {\n // remember this has no effect if the callback already called resetRequest.cancel():\n resetRequest.proceed();\n }\n });\n }\n\n /**\n After a model loads, this method sets up the custom output properties specified in the \"model\"\n section of the interactive and in the interactive.\n\n Any output property definitions in the model section of the interactive specification override\n properties with the same that are specified in the main body if the interactive specification.\n\n @outputType - accept two values \"basic\" and \"filtered\", as this function can be used for processing\n both types of outputs.\n */\n function setupCustomOutputs(outputType, modelOutputs, interactiveOutputs) {\n if (!modelOutputs && !interactiveOutputs) return;\n\n var outputs = {},\n prop,\n output;\n\n function processOutputsArray(outputsArray) {\n if (!outputsArray) return;\n for (var i = 0; i < outputsArray.length; i++) {\n outputs[outputsArray[i].name] = outputsArray[i];\n }\n }\n\n // per-model output definitions override output definitions from interactives\n processOutputsArray(interactiveOutputs);\n processOutputsArray(modelOutputs);\n\n for (prop in outputs) {\n if (outputs.hasOwnProperty(prop)) {\n output = outputs[prop];\n // DOM elements (and, by analogy, Next Gen MW interactive components like slides)\n // have \"ids\". But, in English, properties have \"names\", but not \"ids\".\n switch (outputType) {\n case \"basic\":\n model.defineOutput(output.name, {\n label: output.label,\n unitType: output.unitType,\n unitName: output.unitName,\n unitPluralName: output.unitPluralName,\n unitAbbreviation: output.unitAbbreviation\n }, scriptingAPI.makeFunctionInScriptContext(getStringFromArray(output.value)));\n break;\n case \"filtered\":\n model.defineFilteredOutput(output.name, {\n label: output.label,\n unitType: output.unitType,\n unitName: output.unitName,\n unitPluralName: output.unitPluralName,\n unitAbbreviation: output.unitAbbreviation\n }, output.property, output.type, output.period);\n break;\n }\n }\n }\n }\n\n /**\n After a model loads, this method is used to set up the custom parameters specified in the\n model section of the interactive, or in the toplevel of the interactive\n */\n function setupCustomParameters(modelParameters, interactiveParameters) {\n if (!modelParameters && !interactiveParameters) return;\n\n var initialValues = {},\n customParameters,\n i, parameter, onChangeFunc;\n\n // append modelParameters second so they're processed later (and override entries of the\n // same name in interactiveParameters)\n customParameters = (interactiveParameters || []).concat(modelParameters || []);\n\n for (i = 0; i < customParameters.length; i++) {\n parameter = customParameters[i];\n // onChange callback is optional.\n onChangeFunc = undefined;\n if (parameter.onChange) {\n onChangeFunc = scriptingAPI.makeFunctionInScriptContext('value', getStringFromArray(parameter.onChange));\n }\n // Define parameter using modeler.\n model.defineParameter(parameter.name, {\n label: parameter.label,\n unitType: parameter.unitType,\n unitName: parameter.unitName,\n unitPluralName: parameter.unitPluralName,\n unitAbbreviation: parameter.unitAbbreviation\n }, onChangeFunc);\n\n if (parameter.initialValue !== undefined) {\n // Deep copy of the initial value. Otherwise, if initial value is an object or array,\n // all updates to parameter value will be shared with its initial value.\n initialValues[parameter.name] = clone(parameter.initialValue);\n }\n }\n\n model.set(initialValues);\n }\n\n function getRetainedProperties(additionalProps) {\n var propertiesToRetain;\n\n if (interactive.propertiesToRetain) {\n // interactive specifies properties to retain; use them\n propertiesToRetain = interactive.propertiesToRetain;\n } else if (exportController.canExportData()) {\n // We're in CODAP (or something similar) and interactive is not explicit about which\n // properties to retain; start with a default list of properties\n propertiesToRetain = getDefaultPropertiesToRetain();\n }\n\n // retain duration-related properties if they are defined\n var durationProps = ['useDuration', 'requestedDuration'].filter(function(key) {\n return model.properties[key] !== undefined;\n });\n additionalProps = (additionalProps || []).concat(durationProps);\n\n // Also retain properties bound to components that specify retainProperty: true, and any\n // properties in additionalProps (which come from the optional parameter to resetModel and\n // loadModel in the interactive scripting API)\n var propertyKeys = _.uniq(_.flatten([\n propertiesToRetain, propertiesRetainedByComponents, additionalProps || []\n ])).filter(isPropertyWritable);\n\n var properties = {};\n\n propertyKeys.forEach(function(key) {\n properties[key] = model.properties[key];\n });\n\n return properties;\n }\n\n function getBoundProperties() {\n var componentProperties = _.pluck(interactive.components, 'property');\n var graphProperties = _.pluck(_.where(interactive.components, {\n type: 'graph'\n }), 'properties');\n\n return _.without(_.uniq(_.flatten([componentProperties, graphProperties])), undefined);\n }\n\n function isPropertyWritable(name) {\n return !!model && !!model.isPropertyWritable && model.isPropertyWritable(name);\n }\n\n function getDefaultExports() {\n // start with a list of all properties bound to components\n var boundProperties = getBoundProperties();\n var additionalPerTickProperties = [];\n\n // assume that writable properties are experimental parameters; log them once per run\n var perRunProperties = boundProperties.filter(isPropertyWritable);\n\n // assume that read-only properties change due to model physics; log them at every tick\n var perTickProperties = _.difference(boundProperties, perRunProperties);\n\n // As a special case, MD2D models should log kinetic and potential energy (and if we are in\n // the molecular size scale, also temperature)\n\n if (model && model.properties.type === 'md2d') {\n additionalPerTickProperties =\n model.properties.unitsScheme === 'md2d' ? ['kineticEnergy', 'potentialEnergy', 'temperature'] : ['kineticEnergy', 'potentialEnergy'];\n }\n\n perTickProperties = _.uniq(perTickProperties.concat(additionalPerTickProperties));\n\n return {\n perRun: perRunProperties,\n perTick: perTickProperties\n };\n }\n\n function getDefaultPropertiesToRetain() {\n var boundProperties = getBoundProperties();\n var writableProperties = boundProperties.filter(isPropertyWritable);\n\n return writableProperties;\n }\n\n //\n // Public API.\n //\n controller = {\n get interactiveContainer() {\n // Note that by default fastclick container is returned here. It's interactive container\n // child with FastClick attached.\n // Some elements may want to attach themselves to interactive container itself when they\n // don't work well with FastClick (e.g. jQuery Context Menu).\n return $fastClickContainer;\n },\n get scriptingAPI() {\n return scriptingAPI;\n },\n get helpSystem() {\n return helpSystem;\n },\n get i18n() {\n return i18n;\n },\n get modelController() {\n return modelController;\n },\n get randomSeed() {\n return randSeed;\n },\n get exportController() {\n return exportController;\n },\n get defaultExports() {\n return getDefaultExports();\n },\n get propertiesToRetain() {\n return getRetainedProperties();\n },\n get fontFamily() {\n return $interactiveContainer.css('font-family');\n },\n\n /**\n Return the model object. Note this is provided behind a method because we eventually\n want to support multiple model objects accesible by id.\n */\n getModel: function() {\n return model;\n },\n\n /**\n Return public data set (e.g. defined in interactive JSON).\n */\n getDataSet: function(name) {\n return publicDataSetsByName[name];\n },\n\n /*\n Add a new data set.\n If data set is 'isPrivate', it won't be accessible via .getDataSet() method and it won't be\n serialized as a part of interactive JSON.\n */\n addDataSet: function(dataSet, isPrivate) {\n // $.proxy ensures that callback will be always executed\n // in the context of correct object ('this' binding).\n dataSetModelLoadedCallbacks.push($.proxy(dataSet.modelLoadedCallback, dataSet));\n if (!isPrivate) {\n publicDataSetsByName[dataSet.name] = dataSet;\n }\n },\n\n getScriptingAPI: function() {\n return scriptingAPI;\n },\n\n getModelController: function() {\n return modelController;\n },\n\n getComponent: function(id) {\n return componentByID[id];\n },\n\n getNextTabIndex: getNextTabIndex,\n\n /**\n * Loads a new interactive. It accepts an object (hash) representing interactive definition.\n * @param {object} newInteractive new interactive definition\n */\n loadInteractive: loadInteractive,\n\n /**\n * Emits \"interactiveRequested\" event that should be handled by the embedding page.\n * It provides a new URL at which interactive is available.\n * @param {string} url new interactive URL\n */\n requestInteractiveAt: function(url) {\n dispatch.interactiveRequested(url);\n },\n\n reloadInteractive: function() {\n model.stop();\n notifyWillResetModelAnd(function() {\n dispatch.interactiveWillReload();\n controller.loadInteractive(initialInteractiveConfig);\n });\n },\n\n loadModel: loadModel,\n\n /**\n * Reload the model. The interactives controller will emit a 'willResetModel'.\n * The willResetModel observers can ask to wait for asynchronous confirmation before the model\n * is actually reset; see the notifyWillResetModelAnd function.\n * @param {object} options hash of options, supported properties:\n * * propertiesToRetain - a list of properties to save before\n * the model reload and restore after reload.\n * * cause - cause of the reload action, it can be e.g. \"reload\"\n * or \"new-run\". It will be passed to \"modelLoaded\" event handlers.\n */\n reloadModel: function(options) {\n if (!options) options = {};\n if (!options.cause) options.cause = \"reload\";\n\n model.stop();\n notifyWillResetModelAnd(function() {\n // Ensure that model reload is always the same if it's desired (\"randomSeed\" paramenter\n // is provided).\n generateRandomSeed();\n controller.loadModel(currentModelID, initialModelConfig, options.propertiesToRetain, options.cause);\n });\n },\n\n /**\n * Reset the model to its initial state. The interactives controller will emit\n * a 'willResetModel'. The willResetModel observers can ask to wait for asynchronous\n * confirmation before the model is actually reset; see the notifyWillResetModelAnd function.\n *\n * Once the reset is confirmed, model will issue a 'willReset' event, reset its tick history,\n * and emit a 'reset' event.\n *\n * @param {object} options hash of options, supported properties:\n * * propertiesToRetain - a list of properties to save before\n * the model reset and restore after reset.\n * * cause - cause of the reset action, e.g. \"new-run\".\n */\n resetModel: function(options) {\n model.stop();\n notifyWillResetModelAnd(function() {\n options = options || {};\n var retainedProperties = getRetainedProperties(options.propertiesToRetain);\n\n // Consumers of the model's events will see a reset event followed by the invalidation event\n // emitted when we set the model's parameters to their desired initial state. That's because\n // the model semantics don't include reset-with-saving-of-parameters, just reset-to-initial-\n // state. However, consumers of the interactive controller's modelReset event would expect\n // reset-to-initial-state and restoration-of-saved-parameter-values to be a single,\n // atomic event, given that they are triggered by the single\n // interactiveController.resetModel() method. (This is similar to the reason that the\n // interactive controller decorates its modelReset with a \"cause\" -- the model itself has no\n // notion of *why* it's reset, and doesn't distinguish \"setting up an experimental run\" from\n // \"starting over\"; those are interactive-level concepts.)\n //\n // Therefore, make sure to supress the modelReset event that would be automatically\n // emitted by our listener to the modelController's modelReset event, and emit modelReset\n // only after parameter values have been reset/restored.\n ignoreModelResetEvent = true;\n\n modelController.reset(options.cause);\n model.set(retainedProperties);\n notifyModelResetCallbacks(options.cause);\n\n ignoreModelResetEvent = false;\n });\n },\n\n /**\n * Logs custom event specified by author. Note that logging needs to be enabled in interactive JSON!\n * It means \"logging\": {\"enabled\": true} needs to be specified.\n * Log message will be sent to parent window, so parent window needs to handle it.\n * Currently, only LARA does it and sends logs to CC Log Manager App.\n *\n * @param {string} actionName\n * @param {object} data Hash of key-values that should be logged.\n */\n logAction: function(actionName, data) {\n logController && logController.logAction(actionName, data);\n },\n\n updateModelView: function() {\n modelController.updateView();\n },\n\n repaintModelView: function() {\n modelController.repaint();\n },\n\n /**\n Notifies interactive controller that the dimensions of its container have changed.\n It triggers the layout algorithm again.\n */\n resize: function() {\n layoutInteractive();\n dispatch.resize();\n },\n /**\n * Adds an event listener for the specified type. Supported events:\n * \"resize\", \"modelLoaded\", \"modelReset\", \"interactiveRendered\" and \"layoutUpdated\".\n *\n * @param {string} type\n * @param {function|null} callback Callback function or null (to remove callback).\n *\n * FIXME: We should using DispatchSupport exclusively to emit events (i.e., instead of\n * maintaining custom arrays of callbacks in interactives controller, pass each callback we\n * are given to dispatch.on()). The first step would be to modify dispatchSupport to handle\n * multiple listeners for a given event, instead of reusing d3.dispatch, which is intended for\n * a simpler use case. Similar code is already checked into Lab!\n *\n * As a second step, we should modify components so that instead of defining a\n * 'modelLoadedCallback' they simply register listeners for some event. (Note that we will\n * want to create 2 events to disambiguate the 2 senses of 'modelLoaded';\n * componentModelLoadedCallbacks are called at a slightly different point in the model loading\n * sequence than 'regular' modelLoadedCallbacks.)\n */\n on: function(type, callback) {\n // Note that we can't use DispatchSupport as willResetModel event is a special one.\n // We have know number of objects interested in this event and we have to let them cancel\n // reset operation.\n if (type === \"willResetModel\") {\n willResetModelCallbacks.push(callback);\n } else {\n dispatch.on(type, callback);\n }\n },\n\n /**\n * Gets interactive property from interactive JSON definition.\n * @param {string} name Property name.\n * @return {*} Property value.\n */\n get: function(name) {\n return interactive[name];\n },\n\n /**\n Serializes interactive, returns object ready to be stringified.\n e.g. JSON.stringify(interactiveController.serialize());\n */\n serialize: function() {\n var result, i, len;\n // Copy basic properties from the initial definition, as they are immutable.\n // FIXME: this should be based on enumerating properties in the metadata. The issue is properties\n // added to the metadata like \"importedFrom\" have to be then manually added here.\n // NP: +1 on enumerating the metadata props here.\n result = {\n title: interactive.title,\n publicationStatus: interactive.publicationStatus,\n labEnvironment: interactive.labEnvironment,\n subtitle: interactive.subtitle,\n category: interactive.category,\n subCategory: interactive.subCategory,\n screenshot: interactive.screenshot,\n aspectRatio: interactive.aspectRatio,\n fontScale: interactive.fontScale,\n lang: interactive.lang,\n i18nMetadata: interactive.i18nMetadata,\n credits: interactive.credits,\n helpOnLoad: interactive.helpOnLoad,\n aboutOnLoad: interactive.aboutOnLoad,\n about: arrays.isArray(interactive.about) ? $.extend(true, [], interactive.about) : interactive.about,\n theme: interactive.theme,\n showTopBar: interactive.showTopBar,\n showBottomBar: interactive.showBottomBar,\n padding: interactive.padding,\n // Node that modelDefinitions section can also contain custom parameters definition. However, their initial values\n // should be already updated (take a look at the beginning of this function), so we can just serialize whole array.\n models: $.extend(true, [], interactive.models),\n propertiesToRetain: $.extend(true, [], interactive.propertiesToRetain),\n // All used parameters are already updated, they contain currently used values.\n parameters: $.extend(true, [], interactive.parameters),\n // Outputs are directly bound to the model, we can copy their initial definitions.\n outputs: $.extend(true, [], interactive.outputs),\n filteredOutputs: $.extend(true, [], interactive.filteredOutputs),\n helpTips: $.extend(true, [], interactive.helpTips)\n };\n\n // Update parameters' initial values.\n if (model !== undefined && model.get !== undefined) {\n // Basically, parameters can be defined in two places - in model definition object or just as a top-level\n // property of the interactive definition. Note that when particular parameter is defined in both places\n // it means that the parameter from *model* definition will be used. That's why we keep track\n // of parameters defined in the model definition.\n var modelParams = (function() {\n for (var i = 0, len = result.models.length; i < len; i++) {\n if (result.models[i].id === currentModelID) {\n return result.models[i].parameters || [];\n }\n }\n return [];\n }());\n var interactiveParams = result.parameters;\n var isModelParameter = {};\n modelParams.forEach(function(param) {\n isModelParameter[param.name] = true;\n var val = model.get(param.name);\n if (val !== undefined) {\n // Deep copy of the initial value. Otherwise, if value is an object or array, all\n // updates to parameter value will be shared with serialized value.\n param.initialValue = clone(val);\n }\n });\n interactiveParams.forEach(function(param) {\n // The parameter is overwritten by model parameter and shouldn't be updated here.\n if (isModelParameter[param.name]) return;\n var val = model.get(param.name);\n if (val !== undefined) {\n // Deep copy of the initial value. Otherwise, if value is an object or array, all\n // updates to parameter value will be shared with serialized value.\n param.initialValue = clone(val);\n }\n });\n }\n\n // add optional attributes to result if defined\n if (interactive.importedFrom !== undefined) {\n result.importedFrom = interactive.importedFrom;\n }\n\n if (interactive.exports !== undefined) {\n result.exports = $.extend(true, {}, interactive.exports);\n }\n\n if (interactive.logging !== undefined) {\n result.logging = $.extend(true, {}, interactive.logging);\n }\n\n if (interactive.experiment !== undefined) {\n result.experiment = $.extend(true, {}, interactive.experiment);\n }\n\n if (interactive.randomSeed !== undefined) {\n result.randomSeed = interactive.randomSeed;\n }\n\n // Serialize only public data sets. Data sets automatically created by components\n // (e.g. table of graph) won't be serialized as a first-class objects in interactive JSON.\n result.dataSets = [];\n for (var dsName in publicDataSetsByName) {\n result.dataSets.push(publicDataSetsByName[dsName].serialize());\n\n }\n\n // Serialize components.\n result.components = [];\n for (i = 0, len = componentList.length; i < len; i++) {\n if (componentList[i].serialize) {\n result.components.push(componentList[i].serialize());\n }\n }\n\n // Copy layout from the initial definition, as it is immutable.\n result.layout = $.extend(true, {}, interactive.layout);\n if (typeof interactive.template === \"string\") {\n result.template = interactive.template;\n } else {\n result.template = $.extend(true, [], interactive.template);\n }\n\n return result;\n },\n\n benchmarks: [{\n name: \"interactive\",\n numeric: false,\n run: function(done) {\n done(window.location.pathname + window.location.hash);\n }\n }, {\n name: \"layout (iterations)\",\n numeric: true,\n formatter: d3.format(\"g\"),\n run: function(done) {\n done(semanticLayout.layoutInteractive());\n }\n }, {\n name: \"layout (ms)\",\n numeric: true,\n formatter: d3.format(\"5.1f\"),\n run: function(done) {\n var start = +Date.now();\n semanticLayout.layoutInteractive();\n done(Date.now() - start);\n }\n }],\n\n getLoadedModelId: function() {\n return currentModelID;\n },\n\n validateInteractive: validateInteractive\n };\n\n //\n // Initialization.\n //\n\n // Select interactive container.\n $interactiveContainer = $(viewSelector);\n $interactiveContainer.addClass(\"lab-interactive-container\");\n\n // Initialize semantic layout.\n semanticLayout = new SemanticLayout();\n controller.on(\"resize.share-dialog\", function() {\n shareDialog.updateIframeSize();\n });\n\n // Setup messaging with embedding parent window.\n parentMessageAPI = new ParentMessageAPI(controller);\n\n // Load interactive if it's provided.\n if (interactiveReference != null) {\n loadInteractive(interactiveReference);\n }\n\n return controller;\n};\n","/*jshint loopfunc: true */\n\nimport metadata from 'common/controllers/interactive-metadata';\nimport validator from 'common/validator';\nimport disablable from 'common/controllers/disablable';\nimport helpIconSupport from 'common/controllers/help-icon-support';\n\n\nexport default function RadioController(component, interactivesController) {\n // Public API.\n var controller,\n // DOM elements.\n $div,\n // Options definitions from component JSON definition.\n options,\n // List of jQuery objects wrapping elements.\n $inputs = [],\n // List of jQuery objects wrapping option
.\n $options = [],\n model,\n scriptingAPI;\n\n // Updates radio using model property. Used in modelLoadedCallback.\n // Make sure that this function is only called when:\n // a) model is loaded,\n // b) radio is bound to some property.\n function updateRadio() {\n if (component.property !== undefined) {\n var value = model.get(component.property);\n for (var i = 0, len = options.length; i < len; i++) {\n if (options[i].value === value) {\n $inputs[i].attr(\"checked\", true);\n $options[i].addClass('checked');\n } else {\n $inputs[i].removeAttr(\"checked\");\n $options[i].removeClass('checked');\n }\n }\n }\n }\n\n function updateRadioDisabledState() {\n var description = model.getPropertyDescription(component.property);\n controller.setDisabled(description.getFrozen());\n }\n\n\n function customClickEvent(e) {\n var $span = $(this),\n $input = $span.find('input'),\n i, len;\n\n e.preventDefault();\n\n if ($input.attr(\"disabled\") !== undefined) {\n // Do nothing when option is disabled.\n return;\n }\n\n for (i = 0, len = $inputs.length; i < len; i++) {\n $inputs[i].removeAttr('checked');\n $options[i].removeClass('checked');\n }\n\n $input.attr('checked', 'checked');\n $span.addClass('checked');\n\n // Trigger change event!\n $input.trigger('change');\n }\n\n function initialize() {\n var $input, $span, $label, $optionsContainer,\n option, i, len;\n\n model = interactivesController.getModel();\n scriptingAPI = interactivesController.getScriptingAPI();\n\n // Validate component definition, use validated copy of the properties.\n component = validator.validateCompleteness(metadata.radio, component);\n // Validate radio options too.\n options = component.options;\n for (i = 0, len = options.length; i < len; i++) {\n options[i] = validator.validateCompleteness(metadata.radioOption, options[i]);\n }\n\n // Create HTML elements.\n $div = $('
').attr('id', component.id);\n $div.addClass(\"interactive-radio\");\n // Each interactive component has to have class \"component\".\n $div.addClass(\"component\");\n // Add class defining component orientation - \"horizontal\" or \"vertical\".\n $div.addClass(component.orientation);\n // \"radio\" or \"toggle\".\n $div.addClass(component.style);\n\n if (component.label) {\n $label = $(\"\").html(component.label);\n $label.addClass(\"label\");\n $label.addClass(component.labelOn === \"top\" ? \"on-top\" : \"on-left\");\n $div.append($label);\n }\n\n $optionsContainer = $(\"\").addClass(\"options\").appendTo($div);\n\n // Create options ()\n for (i = 0, len = options.length; i < len; i++) {\n option = options[i];\n $input = $('')\n .attr('type', \"radio\")\n .attr('name', component.id)\n .attr('tabindex', interactivesController.getNextTabIndex())\n .attr('id', component.id + '-' + i);\n $inputs.push($input);\n\n $span = $('')\n .addClass('option')\n .append($input);\n $options.push($span);\n $optionsContainer.append($span);\n\n if (component.style === 'radio') {\n $('
').appendTo($span);\n }\n\n $('