{"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","gtag","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","originMatch","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 originMatch = location.href.match(/(.*?\\/\\/.*?)\\//),\n // Origin might not be available when Lab is running in iframe using srcdoc attr.\n origin = originMatch && originMatch[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 if (origin) {\n this._view.embeddableSharingUrl = origin + embeddablePath + hash;\n } else {\n // In this case sharing should be disabled. But if it's not, just provide anything.\n this._view.embeddableSharingUrl = \"\";\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 originMatch = document.location.href.match(/(.*?\\/\\/.*?)\\//),\n // Origin might not be available when Lab is running in iframe using srcdoc attr.\n origin = originMatch && originMatch[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 if (origin) {\n interactiveCreditsUrl = origin + embeddablePath + hash;\n } else {\n // In this case sharing should be disabled. But if it's not, just provide anything.\n interactiveCreditsUrl = \"\";\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 $('