├── .gitattributes ├── .gitignore ├── .npmrc_x32 ├── .npmrc_x64 ├── .yarnclean ├── Agora-Electron-API-Example ├── .editorconfig ├── .erb │ ├── configs │ │ ├── .eslintrc │ │ ├── webpack.config.base.js │ │ ├── webpack.config.eslint.js │ │ ├── webpack.config.main.prod.babel.js │ │ ├── webpack.config.renderer.dev.babel.js │ │ ├── webpack.config.renderer.dev.dll.babel.js │ │ └── webpack.config.renderer.prod.babel.js │ ├── img │ │ ├── erb-banner.png │ │ ├── erb-logo.png │ │ ├── eslint-padded-90.png │ │ ├── eslint-padded.png │ │ ├── eslint.png │ │ ├── jest-padded-90.png │ │ ├── jest-padded.png │ │ ├── jest.png │ │ ├── js-padded.png │ │ ├── js.png │ │ ├── npm.png │ │ ├── react-padded-90.png │ │ ├── react-padded.png │ │ ├── react-router-padded-90.png │ │ ├── react-router-padded.png │ │ ├── react-router.png │ │ ├── react.png │ │ ├── webpack-padded-90.png │ │ ├── webpack-padded.png │ │ ├── webpack.png │ │ ├── yarn-padded-90.png │ │ ├── yarn-padded.png │ │ └── yarn.png │ ├── mocks │ │ └── fileMock.js │ └── scripts │ │ ├── .eslintrc │ │ ├── BabelRegister.js │ │ ├── CheckBuildsExist.js │ │ ├── CheckNativeDep.js │ │ ├── CheckNodeEnv.js │ │ ├── CheckPortInUse.js │ │ ├── DeleteSourceMaps.js │ │ ├── ElectronRebuild.js │ │ └── Notarize.js ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .gitignore ├── .npmrc ├── LICENSE ├── README.md ├── README.zh.md ├── assets │ ├── assets.d.ts │ ├── entitlements.mac.plist │ ├── icon.icns │ ├── icon.ico │ ├── icon.png │ ├── icon.svg │ └── icons │ │ ├── 1024x1024.png │ │ ├── 128x128.png │ │ ├── 16x16.png │ │ ├── 24x24.png │ │ ├── 256x256.png │ │ ├── 32x32.png │ │ ├── 48x48.png │ │ ├── 512x512.png │ │ ├── 64x64.png │ │ └── 96x96.png ├── babel.config.js ├── extraResources │ ├── audioeffect.mp3 │ └── background.png ├── package.json ├── src │ ├── App.global.scss │ ├── App.tsx │ ├── CPP_Plugin │ │ ├── Windows │ │ │ ├── plugin.sln │ │ │ └── plugin │ │ │ │ ├── plugin.vcxproj │ │ │ │ ├── plugin.vcxproj.filters │ │ │ │ └── plugin.vcxproj.user │ │ ├── iris_rtc_raw_data_plugin.h │ │ ├── macOS │ │ │ ├── .gitignore │ │ │ ├── plugin.xcodeproj │ │ │ │ └── project.pbxproj │ │ │ └── plugin │ │ │ │ ├── iris_rtc_raw_data_plugin.h │ │ │ │ ├── plugin.cpp │ │ │ │ └── plugin.hpp │ │ ├── plugin.cpp │ │ └── plugin.hpp │ ├── __tests__ │ │ └── App.test.tsx │ ├── examples │ │ ├── advanced │ │ │ ├── AudioMixing │ │ │ │ └── AudioMixing.tsx │ │ │ ├── BeautyEffect │ │ │ │ └── BeautyEffect.tsx │ │ │ ├── CameraAndScreenShare │ │ │ │ ├── CameraAndScreenShare.scss │ │ │ │ └── CameraAndScreenShare.tsx │ │ │ ├── ChannelMediaRelay │ │ │ │ └── ChannelMediaRelay.tsx │ │ │ ├── CreateDataStream │ │ │ │ ├── CreateDataStream.scss │ │ │ │ └── CreateDataStream.tsx │ │ │ ├── JoinMultipleChannel │ │ │ │ ├── JoinMultipleChannel.scss │ │ │ │ └── JoinMultipleChannel.tsx │ │ │ ├── LoadPlugin │ │ │ │ └── LoadPlugin.tsx │ │ │ ├── ScreenCapture │ │ │ │ ├── ScreenCapture.scss │ │ │ │ └── ScreenCapture.tsx │ │ │ ├── ScreenShare │ │ │ │ ├── ScreenShare.scss │ │ │ │ └── ScreenShare.tsx │ │ │ ├── SetEncryption │ │ │ │ └── SetEncryption.tsx │ │ │ ├── SetLiveTranscoding │ │ │ │ └── SetLiveTranscoding.tsx │ │ │ ├── VirtualBackground │ │ │ │ └── VirtualBackground.tsx │ │ │ ├── VoiceChanger │ │ │ │ └── VoiceChanger.tsx │ │ │ └── index.jsx │ │ ├── basic │ │ │ ├── JoinChannelAudio.tsx │ │ │ ├── JoinChannelVideo.tsx │ │ │ ├── StringUid.tsx │ │ │ └── index.jsx │ │ ├── component │ │ │ ├── ChooseFilterWindowModal │ │ │ │ └── index.tsx │ │ │ ├── DropDownButton │ │ │ │ └── index.tsx │ │ │ ├── JoinChannelBar │ │ │ │ └── index.tsx │ │ │ ├── SliderBar │ │ │ │ └── index.tsx │ │ │ ├── UserCard │ │ │ │ └── index.tsx │ │ │ └── Window │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ ├── config │ │ │ ├── AuthInfoScreen │ │ │ │ └── index.tsx │ │ │ ├── agora.config.ts │ │ │ ├── index.tsx │ │ │ └── public.scss │ │ └── util │ │ │ ├── base64.js │ │ │ └── index.js │ ├── index.html │ ├── index.tsx │ ├── main.dev.ts │ ├── menu.ts │ └── package.json └── tsconfig.json ├── Other ├── Agora-Electron-HTML5 │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── ISSUE_TEMPLATE.md │ ├── LICENSE.md │ ├── README.md │ ├── assets │ │ ├── ace │ │ │ ├── ace.js │ │ │ ├── ext-beautify.js │ │ │ ├── ext-elastic_tabstops_lite.js │ │ │ ├── ext-emmet.js │ │ │ ├── ext-error_marker.js │ │ │ ├── ext-keybinding_menu.js │ │ │ ├── ext-language_tools.js │ │ │ ├── ext-linking.js │ │ │ ├── ext-modelist.js │ │ │ ├── ext-options.js │ │ │ ├── ext-prompt.js │ │ │ ├── ext-rtl.js │ │ │ ├── ext-searchbox.js │ │ │ ├── ext-settings_menu.js │ │ │ ├── ext-spellcheck.js │ │ │ ├── ext-split.js │ │ │ ├── ext-static_highlight.js │ │ │ ├── ext-statusbar.js │ │ │ ├── ext-textarea.js │ │ │ ├── ext-themelist.js │ │ │ ├── ext-whitespace.js │ │ │ ├── keybinding-emacs.js │ │ │ ├── keybinding-sublime.js │ │ │ ├── keybinding-vim.js │ │ │ ├── mode-abap.js │ │ │ ├── mode-abc.js │ │ │ ├── mode-actionscript.js │ │ │ ├── mode-ada.js │ │ │ ├── mode-apache_conf.js │ │ │ ├── mode-apex.js │ │ │ ├── mode-applescript.js │ │ │ ├── mode-aql.js │ │ │ ├── mode-asciidoc.js │ │ │ ├── mode-asl.js │ │ │ ├── mode-assembly_x86.js │ │ │ ├── mode-autohotkey.js │ │ │ ├── mode-batchfile.js │ │ │ ├── mode-bro.js │ │ │ ├── mode-c9search.js │ │ │ ├── mode-c_cpp.js │ │ │ ├── mode-cirru.js │ │ │ ├── mode-clojure.js │ │ │ ├── mode-cobol.js │ │ │ ├── mode-coffee.js │ │ │ ├── mode-coldfusion.js │ │ │ ├── mode-crystal.js │ │ │ ├── mode-csharp.js │ │ │ ├── mode-csound_document.js │ │ │ ├── mode-csound_orchestra.js │ │ │ ├── mode-csound_score.js │ │ │ ├── mode-csp.js │ │ │ ├── mode-css.js │ │ │ ├── mode-curly.js │ │ │ ├── mode-d.js │ │ │ ├── mode-dart.js │ │ │ ├── mode-diff.js │ │ │ ├── mode-django.js │ │ │ ├── mode-dockerfile.js │ │ │ ├── mode-dot.js │ │ │ ├── mode-drools.js │ │ │ ├── mode-edifact.js │ │ │ ├── mode-eiffel.js │ │ │ ├── mode-ejs.js │ │ │ ├── mode-elixir.js │ │ │ ├── mode-elm.js │ │ │ ├── mode-erlang.js │ │ │ ├── mode-forth.js │ │ │ ├── mode-fortran.js │ │ │ ├── mode-fsharp.js │ │ │ ├── mode-fsl.js │ │ │ ├── mode-ftl.js │ │ │ ├── mode-gcode.js │ │ │ ├── mode-gherkin.js │ │ │ ├── mode-gitignore.js │ │ │ ├── mode-glsl.js │ │ │ ├── mode-gobstones.js │ │ │ ├── mode-golang.js │ │ │ ├── mode-graphqlschema.js │ │ │ ├── mode-groovy.js │ │ │ ├── mode-haml.js │ │ │ ├── mode-handlebars.js │ │ │ ├── mode-haskell.js │ │ │ ├── mode-haskell_cabal.js │ │ │ ├── mode-haxe.js │ │ │ ├── mode-hjson.js │ │ │ ├── mode-html.js │ │ │ ├── mode-html_elixir.js │ │ │ ├── mode-html_ruby.js │ │ │ ├── mode-ini.js │ │ │ ├── mode-io.js │ │ │ ├── mode-jack.js │ │ │ ├── mode-jade.js │ │ │ ├── mode-java.js │ │ │ ├── mode-javascript.js │ │ │ ├── mode-json.js │ │ │ ├── mode-jsoniq.js │ │ │ ├── mode-jsp.js │ │ │ ├── mode-jssm.js │ │ │ ├── mode-jsx.js │ │ │ ├── mode-julia.js │ │ │ ├── mode-kotlin.js │ │ │ ├── mode-latex.js │ │ │ ├── mode-less.js │ │ │ ├── mode-liquid.js │ │ │ ├── mode-lisp.js │ │ │ ├── mode-livescript.js │ │ │ ├── mode-logiql.js │ │ │ ├── mode-logtalk.js │ │ │ ├── mode-lsl.js │ │ │ ├── mode-lua.js │ │ │ ├── mode-luapage.js │ │ │ ├── mode-lucene.js │ │ │ ├── mode-makefile.js │ │ │ ├── mode-markdown.js │ │ │ ├── mode-mask.js │ │ │ ├── mode-matlab.js │ │ │ ├── mode-maze.js │ │ │ ├── mode-mel.js │ │ │ ├── mode-mixal.js │ │ │ ├── mode-mushcode.js │ │ │ ├── mode-mysql.js │ │ │ ├── mode-nginx.js │ │ │ ├── mode-nim.js │ │ │ ├── mode-nix.js │ │ │ ├── mode-nsis.js │ │ │ ├── mode-objectivec.js │ │ │ ├── mode-ocaml.js │ │ │ ├── mode-pascal.js │ │ │ ├── mode-perl.js │ │ │ ├── mode-perl6.js │ │ │ ├── mode-pgsql.js │ │ │ ├── mode-php.js │ │ │ ├── mode-php_laravel_blade.js │ │ │ ├── mode-pig.js │ │ │ ├── mode-plain_text.js │ │ │ ├── mode-powershell.js │ │ │ ├── mode-praat.js │ │ │ ├── mode-prolog.js │ │ │ ├── mode-properties.js │ │ │ ├── mode-protobuf.js │ │ │ ├── mode-puppet.js │ │ │ ├── mode-python.js │ │ │ ├── mode-r.js │ │ │ ├── mode-razor.js │ │ │ ├── mode-rdoc.js │ │ │ ├── mode-red.js │ │ │ ├── mode-redshift.js │ │ │ ├── mode-rhtml.js │ │ │ ├── mode-rst.js │ │ │ ├── mode-ruby.js │ │ │ ├── mode-rust.js │ │ │ ├── mode-sass.js │ │ │ ├── mode-scad.js │ │ │ ├── mode-scala.js │ │ │ ├── mode-scheme.js │ │ │ ├── mode-scss.js │ │ │ ├── mode-sh.js │ │ │ ├── mode-sjs.js │ │ │ ├── mode-slim.js │ │ │ ├── mode-smarty.js │ │ │ ├── mode-snippets.js │ │ │ ├── mode-soy_template.js │ │ │ ├── mode-space.js │ │ │ ├── mode-sparql.js │ │ │ ├── mode-sql.js │ │ │ ├── mode-sqlserver.js │ │ │ ├── mode-stylus.js │ │ │ ├── mode-svg.js │ │ │ ├── mode-swift.js │ │ │ ├── mode-tcl.js │ │ │ ├── mode-terraform.js │ │ │ ├── mode-tex.js │ │ │ ├── mode-text.js │ │ │ ├── mode-textile.js │ │ │ ├── mode-toml.js │ │ │ ├── mode-tsx.js │ │ │ ├── mode-turtle.js │ │ │ ├── mode-twig.js │ │ │ ├── mode-typescript.js │ │ │ ├── mode-vala.js │ │ │ ├── mode-vbscript.js │ │ │ ├── mode-velocity.js │ │ │ ├── mode-verilog.js │ │ │ ├── mode-vhdl.js │ │ │ ├── mode-visualforce.js │ │ │ ├── mode-wollok.js │ │ │ ├── mode-xml.js │ │ │ ├── mode-xquery.js │ │ │ ├── mode-yaml.js │ │ │ ├── mode-zeek.js │ │ │ ├── snippets │ │ │ │ ├── abap.js │ │ │ │ ├── abc.js │ │ │ │ ├── actionscript.js │ │ │ │ ├── ada.js │ │ │ │ ├── apache_conf.js │ │ │ │ ├── apex.js │ │ │ │ ├── applescript.js │ │ │ │ ├── aql.js │ │ │ │ ├── asciidoc.js │ │ │ │ ├── asl.js │ │ │ │ ├── assembly_x86.js │ │ │ │ ├── autohotkey.js │ │ │ │ ├── batchfile.js │ │ │ │ ├── bro.js │ │ │ │ ├── c9search.js │ │ │ │ ├── c_cpp.js │ │ │ │ ├── cirru.js │ │ │ │ ├── clojure.js │ │ │ │ ├── cobol.js │ │ │ │ ├── coffee.js │ │ │ │ ├── coldfusion.js │ │ │ │ ├── crystal.js │ │ │ │ ├── csharp.js │ │ │ │ ├── csound_document.js │ │ │ │ ├── csound_orchestra.js │ │ │ │ ├── csound_score.js │ │ │ │ ├── csp.js │ │ │ │ ├── css.js │ │ │ │ ├── curly.js │ │ │ │ ├── d.js │ │ │ │ ├── dart.js │ │ │ │ ├── diff.js │ │ │ │ ├── django.js │ │ │ │ ├── dockerfile.js │ │ │ │ ├── dot.js │ │ │ │ ├── drools.js │ │ │ │ ├── edifact.js │ │ │ │ ├── eiffel.js │ │ │ │ ├── ejs.js │ │ │ │ ├── elixir.js │ │ │ │ ├── elm.js │ │ │ │ ├── erlang.js │ │ │ │ ├── forth.js │ │ │ │ ├── fortran.js │ │ │ │ ├── fsharp.js │ │ │ │ ├── fsl.js │ │ │ │ ├── ftl.js │ │ │ │ ├── gcode.js │ │ │ │ ├── gherkin.js │ │ │ │ ├── gitignore.js │ │ │ │ ├── glsl.js │ │ │ │ ├── gobstones.js │ │ │ │ ├── golang.js │ │ │ │ ├── graphqlschema.js │ │ │ │ ├── groovy.js │ │ │ │ ├── haml.js │ │ │ │ ├── handlebars.js │ │ │ │ ├── haskell.js │ │ │ │ ├── haskell_cabal.js │ │ │ │ ├── haxe.js │ │ │ │ ├── hjson.js │ │ │ │ ├── html.js │ │ │ │ ├── html_elixir.js │ │ │ │ ├── html_ruby.js │ │ │ │ ├── ini.js │ │ │ │ ├── io.js │ │ │ │ ├── jack.js │ │ │ │ ├── jade.js │ │ │ │ ├── java.js │ │ │ │ ├── javascript.js │ │ │ │ ├── json.js │ │ │ │ ├── jsoniq.js │ │ │ │ ├── jsp.js │ │ │ │ ├── jssm.js │ │ │ │ ├── jsx.js │ │ │ │ ├── julia.js │ │ │ │ ├── kotlin.js │ │ │ │ ├── latex.js │ │ │ │ ├── less.js │ │ │ │ ├── liquid.js │ │ │ │ ├── lisp.js │ │ │ │ ├── livescript.js │ │ │ │ ├── logiql.js │ │ │ │ ├── logtalk.js │ │ │ │ ├── lsl.js │ │ │ │ ├── lua.js │ │ │ │ ├── luapage.js │ │ │ │ ├── lucene.js │ │ │ │ ├── makefile.js │ │ │ │ ├── markdown.js │ │ │ │ ├── mask.js │ │ │ │ ├── matlab.js │ │ │ │ ├── maze.js │ │ │ │ ├── mel.js │ │ │ │ ├── mixal.js │ │ │ │ ├── mushcode.js │ │ │ │ ├── mysql.js │ │ │ │ ├── nginx.js │ │ │ │ ├── nim.js │ │ │ │ ├── nix.js │ │ │ │ ├── nsis.js │ │ │ │ ├── objectivec.js │ │ │ │ ├── ocaml.js │ │ │ │ ├── pascal.js │ │ │ │ ├── perl.js │ │ │ │ ├── perl6.js │ │ │ │ ├── pgsql.js │ │ │ │ ├── php.js │ │ │ │ ├── php_laravel_blade.js │ │ │ │ ├── pig.js │ │ │ │ ├── plain_text.js │ │ │ │ ├── powershell.js │ │ │ │ ├── praat.js │ │ │ │ ├── prolog.js │ │ │ │ ├── properties.js │ │ │ │ ├── protobuf.js │ │ │ │ ├── puppet.js │ │ │ │ ├── python.js │ │ │ │ ├── r.js │ │ │ │ ├── razor.js │ │ │ │ ├── rdoc.js │ │ │ │ ├── red.js │ │ │ │ ├── redshift.js │ │ │ │ ├── rhtml.js │ │ │ │ ├── rst.js │ │ │ │ ├── ruby.js │ │ │ │ ├── rust.js │ │ │ │ ├── sass.js │ │ │ │ ├── scad.js │ │ │ │ ├── scala.js │ │ │ │ ├── scheme.js │ │ │ │ ├── scss.js │ │ │ │ ├── sh.js │ │ │ │ ├── sjs.js │ │ │ │ ├── slim.js │ │ │ │ ├── smarty.js │ │ │ │ ├── snippets.js │ │ │ │ ├── soy_template.js │ │ │ │ ├── space.js │ │ │ │ ├── sparql.js │ │ │ │ ├── sql.js │ │ │ │ ├── sqlserver.js │ │ │ │ ├── stylus.js │ │ │ │ ├── svg.js │ │ │ │ ├── swift.js │ │ │ │ ├── tcl.js │ │ │ │ ├── terraform.js │ │ │ │ ├── tex.js │ │ │ │ ├── text.js │ │ │ │ ├── textile.js │ │ │ │ ├── toml.js │ │ │ │ ├── tsx.js │ │ │ │ ├── turtle.js │ │ │ │ ├── twig.js │ │ │ │ ├── typescript.js │ │ │ │ ├── vala.js │ │ │ │ ├── vbscript.js │ │ │ │ ├── velocity.js │ │ │ │ ├── verilog.js │ │ │ │ ├── vhdl.js │ │ │ │ ├── visualforce.js │ │ │ │ ├── wollok.js │ │ │ │ ├── xml.js │ │ │ │ ├── xquery.js │ │ │ │ ├── yaml.js │ │ │ │ └── zeek.js │ │ │ ├── theme-ambiance.js │ │ │ ├── theme-chaos.js │ │ │ ├── theme-chrome.js │ │ │ ├── theme-clouds.js │ │ │ ├── theme-clouds_midnight.js │ │ │ ├── theme-cobalt.js │ │ │ ├── theme-crimson_editor.js │ │ │ ├── theme-dawn.js │ │ │ ├── theme-dracula.js │ │ │ ├── theme-dreamweaver.js │ │ │ ├── theme-eclipse.js │ │ │ ├── theme-github.js │ │ │ ├── theme-gob.js │ │ │ ├── theme-gruvbox.js │ │ │ ├── theme-idle_fingers.js │ │ │ ├── theme-iplastic.js │ │ │ ├── theme-katzenmilch.js │ │ │ ├── theme-kr_theme.js │ │ │ ├── theme-kuroir.js │ │ │ ├── theme-merbivore.js │ │ │ ├── theme-merbivore_soft.js │ │ │ ├── theme-mono_industrial.js │ │ │ ├── theme-monokai.js │ │ │ ├── theme-pastel_on_dark.js │ │ │ ├── theme-solarized_dark.js │ │ │ ├── theme-solarized_light.js │ │ │ ├── theme-sqlserver.js │ │ │ ├── theme-terminal.js │ │ │ ├── theme-textmate.js │ │ │ ├── theme-tomorrow.js │ │ │ ├── theme-tomorrow_night.js │ │ │ ├── theme-tomorrow_night_blue.js │ │ │ ├── theme-tomorrow_night_bright.js │ │ │ ├── theme-tomorrow_night_eighties.js │ │ │ ├── theme-twilight.js │ │ │ ├── theme-vibrant_ink.js │ │ │ ├── theme-xcode.js │ │ │ ├── worker-coffee.js │ │ │ ├── worker-css.js │ │ │ ├── worker-html.js │ │ │ ├── worker-javascript.js │ │ │ ├── worker-json.js │ │ │ ├── worker-lua.js │ │ │ ├── worker-php.js │ │ │ ├── worker-xml.js │ │ │ └── worker-xquery.js │ │ ├── app-icon │ │ │ ├── mac │ │ │ │ └── app.icns │ │ │ ├── png │ │ │ │ ├── 1024.png │ │ │ │ ├── 128.png │ │ │ │ ├── 16.png │ │ │ │ ├── 24.png │ │ │ │ ├── 256.png │ │ │ │ ├── 32.png │ │ │ │ ├── 48.png │ │ │ │ ├── 512.png │ │ │ │ └── 64.png │ │ │ └── win │ │ │ │ └── app.ico │ │ ├── code-blocks.js │ │ ├── css │ │ │ ├── about.css │ │ │ ├── demo.css │ │ │ ├── fonts │ │ │ │ ├── SourceCodePro-Regular.ttf │ │ │ │ ├── SourceSansPro-Black.otf │ │ │ │ ├── SourceSansPro-BlackIt.otf │ │ │ │ ├── SourceSansPro-Bold.otf │ │ │ │ ├── SourceSansPro-BoldIt.otf │ │ │ │ ├── SourceSansPro-ExtraLight.otf │ │ │ │ ├── SourceSansPro-ExtraLightIt.otf │ │ │ │ ├── SourceSansPro-It.otf │ │ │ │ ├── SourceSansPro-Light.otf │ │ │ │ ├── SourceSansPro-LightIt.otf │ │ │ │ ├── SourceSansPro-Regular.otf │ │ │ │ ├── SourceSansPro-Semibold.otf │ │ │ │ └── SourceSansPro-SemiboldIt.otf │ │ │ ├── github.css │ │ │ ├── global.css │ │ │ ├── nativize.css │ │ │ ├── nav.css │ │ │ ├── print.css │ │ │ ├── section.css │ │ │ └── variables.css │ │ ├── demo-btns.js │ │ ├── ex-links.js │ │ ├── img │ │ │ ├── about.png │ │ │ ├── about@2x.png │ │ │ ├── diagram.png │ │ │ ├── icons.svg │ │ │ ├── loading.gif │ │ │ ├── programming.png │ │ │ └── ui-terminology.png │ │ ├── imports.js │ │ ├── mac │ │ │ ├── child.plist │ │ │ ├── info.plist │ │ │ └── parent.plist │ │ ├── nav.js │ │ ├── normalize-shortcuts.js │ │ └── tiles │ │ │ ├── SampleAppx.150x150.png │ │ │ ├── SampleAppx.310x150.png │ │ │ ├── SampleAppx.44x44.png │ │ │ └── SampleAppx.50x50.png │ ├── azure-pipelines.yml │ ├── cli.js │ ├── docs.md │ ├── index.html │ ├── main-process │ │ └── communication │ │ │ └── exec.js │ ├── main.js │ ├── package.json │ ├── renderer-process │ │ ├── live-streaming │ │ │ └── publish-rtmp.js │ │ └── video-audio │ │ │ ├── join-channel.js │ │ │ ├── vs-screen-share-display.js │ │ │ └── vs-screen-share-window.js │ ├── script │ │ ├── installer.js │ │ ├── mas.sh │ │ ├── release.js │ │ ├── windows-store.js │ │ ├── writeAppId.js │ │ └── zip.js │ ├── sections │ │ ├── about.html │ │ ├── live-streaming │ │ │ └── rtmp-streaming.html │ │ └── video-audio │ │ │ ├── screen-share.html │ │ │ └── video-audio.html │ └── test │ │ ├── index.js │ │ └── setup.js ├── Agora-Electron-Premium │ ├── .npmrc │ ├── LICENSE.md │ ├── README.md │ ├── azure-pipelines-1.yml │ ├── entitlements │ │ └── entitlements.mac.plist │ ├── package.json │ ├── src │ │ ├── main │ │ │ └── index.js │ │ ├── renderer │ │ │ ├── App.js │ │ │ ├── components │ │ │ │ ├── DisplayPicker │ │ │ │ │ ├── index.css │ │ │ │ │ └── index.js │ │ │ │ └── WindowPicker │ │ │ │ │ ├── index.css │ │ │ │ │ └── index.js │ │ │ ├── index.css │ │ │ └── index.js │ │ └── utils │ │ │ ├── base64.js │ │ │ └── settings.js │ └── webpack.renderer.additions.js ├── Agora-Electron-React │ ├── .gitignore │ ├── README.md │ ├── index.html │ ├── main.js │ ├── package.json │ ├── src │ │ └── renderer │ │ │ ├── App.jsx │ │ │ ├── assets │ │ │ ├── agora.png │ │ │ ├── electron.png │ │ │ ├── react.png │ │ │ └── webpack.png │ │ │ ├── components │ │ │ ├── Link │ │ │ │ ├── index.jsx │ │ │ │ └── styles.css │ │ │ └── Logo │ │ │ │ ├── index.jsx │ │ │ │ └── styles.css │ │ │ ├── global.css │ │ │ └── index.js │ └── webpack.config.js └── Agora-Electron-Vue │ ├── .gitignore │ ├── README.md │ ├── index.html │ ├── main.js │ ├── package-lock.json │ ├── package.json │ ├── src │ └── renderer │ │ ├── App.vue │ │ ├── assets │ │ ├── agora.png │ │ ├── electron.png │ │ ├── vue.png │ │ └── webpack.png │ │ ├── components │ │ └── Hello.vue │ │ └── index.js │ └── webpack.config.js ├── README.md ├── azure-pipelines.yml ├── cicd └── templates │ ├── api-example-mac.yml │ ├── api-example-win.yml │ ├── premium-mac.yml │ └── premium-win.yml ├── demo.png ├── packager-mac.sh └── packager-win.ps1 /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior, in case people don't have core.autocrlf set. 2 | * text=auto 3 | 4 | # Explicitly declare text files you want to always be normalized and converted 5 | # to native line endings on checkout. 6 | *.c text eol=lf 7 | *.h text eol=lf 8 | *.cpp text eol=lf 9 | *.hpp text eol=lf 10 | *.js text eol=lf 11 | *.ts text eol=lf 12 | *.jsx text eol=lf 13 | *.tsx text eol=lf 14 | *.sh text eol=lf 15 | 16 | # Declare files that will always have CRLF line endings on checkout. 17 | *.sln text eol=crlf 18 | *.bat text eol=crlf 19 | 20 | # Denote all files that are truly binary and should not be modified. 21 | *.png binary 22 | *.jpg binary 23 | *.dll binary 24 | package-lock.json -diff 25 | yarn.lock -diff -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | .vscode 3 | build 4 | .DS_Store 5 | dist/ 6 | node_modules/ 7 | thumbs.db 8 | .history 9 | local_settings.js 10 | *.txt 11 | appID.* 12 | *.log 13 | *.log* 14 | *.lock 15 | electronDemo* 16 | .vs/ -------------------------------------------------------------------------------- /.npmrc_x32: -------------------------------------------------------------------------------- 1 | registry=https://registry.npmmirror.com 2 | electron-mirror=https://npmmirror.com/mirrors/electron/ 3 | sass_binary_site=https://npmmirror.com/mirrors/node-sass/ 4 | # for electron 5 | arch=ia32 6 | # for agora-electron-sdk 7 | agora_electron_arch=ia32 8 | # for agora-electron-sdk(iris) 9 | agora_electron_sdk_arch=ia32 -------------------------------------------------------------------------------- /.npmrc_x64: -------------------------------------------------------------------------------- 1 | registry=https://registry.npmmirror.com 2 | electron-mirror=https://npmmirror.com/mirrors/electron/ 3 | sass_binary_site=https://npmmirror.com/mirrors/node-sass/ 4 | # for electron 5 | arch=x64 6 | # for agora-electron-sdk 7 | agora_electron_arch=x64 8 | # for agora-electron-sdk(iris) 9 | agora_electron_sdk_arch=x64 -------------------------------------------------------------------------------- /.yarnclean: -------------------------------------------------------------------------------- 1 | # test directories 2 | __tests__ 3 | node_modules/*/test 4 | node_modules/*/tests 5 | powered-test 6 | 7 | # asset directories 8 | docs 9 | doc 10 | website 11 | images 12 | 13 | # examples 14 | example 15 | examples 16 | 17 | # code coverage directories 18 | coverage 19 | .nyc_output 20 | 21 | # build scripts 22 | Makefile 23 | Gulpfile.js 24 | Gruntfile.js 25 | 26 | # configs 27 | .tern-project 28 | .gitattributes 29 | .editorconfig 30 | .*ignore 31 | .eslintrc 32 | .jshintrc 33 | .flowconfig 34 | .documentup.json 35 | .yarn-metadata.json 36 | 37 | # misc 38 | *.gz 39 | *.md 40 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/configs/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "no-console": "off", 4 | "global-require": "off", 5 | "import/no-dynamic-require": "off" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/configs/webpack.config.base.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Base webpack config used across other specific configs 3 | */ 4 | 5 | import path from 'path'; 6 | import webpack from 'webpack'; 7 | import { dependencies as externals } from '../../src/package.json'; 8 | 9 | export default { 10 | externals: [...Object.keys(externals || {})], 11 | 12 | module: { 13 | rules: [ 14 | { 15 | test: /\.tsx?$/, 16 | exclude: /node_modules/, 17 | use: { 18 | loader: 'babel-loader', 19 | options: { 20 | cacheDirectory: true, 21 | }, 22 | }, 23 | }, 24 | ], 25 | }, 26 | 27 | output: { 28 | path: path.join(__dirname, '../../src'), 29 | // https://github.com/webpack/webpack/issues/1114 30 | libraryTarget: 'commonjs2', 31 | }, 32 | 33 | /** 34 | * Determine the array of extensions that should be used to resolve modules. 35 | */ 36 | resolve: { 37 | extensions: ['.js', '.jsx', '.json', '.ts', '.tsx'], 38 | modules: [path.join(__dirname, '../../src'), 'node_modules'], 39 | }, 40 | 41 | plugins: [ 42 | new webpack.EnvironmentPlugin({ 43 | NODE_ENV: 'production', 44 | }), 45 | ], 46 | }; 47 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/configs/webpack.config.eslint.js: -------------------------------------------------------------------------------- 1 | /* eslint import/no-unresolved: off, import/no-self-import: off */ 2 | require('@babel/register'); 3 | 4 | module.exports = require('./webpack.config.renderer.dev.babel').default; 5 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/erb-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/erb-banner.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/erb-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/erb-logo.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/eslint-padded-90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/eslint-padded-90.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/eslint-padded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/eslint-padded.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/eslint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/eslint.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/jest-padded-90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/jest-padded-90.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/jest-padded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/jest-padded.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/jest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/jest.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/js-padded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/js-padded.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/js.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/js.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/npm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/npm.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/react-padded-90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/react-padded-90.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/react-padded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/react-padded.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/react-router-padded-90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/react-router-padded-90.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/react-router-padded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/react-router-padded.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/react-router.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/react-router.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/react.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/webpack-padded-90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/webpack-padded-90.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/webpack-padded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/webpack-padded.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/webpack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/webpack.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/yarn-padded-90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/yarn-padded-90.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/yarn-padded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/yarn-padded.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/img/yarn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/.erb/img/yarn.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/mocks/fileMock.js: -------------------------------------------------------------------------------- 1 | export default 'test-file-stub'; 2 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/scripts/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "no-console": "off", 4 | "global-require": "off", 5 | "import/no-dynamic-require": "off", 6 | "import/no-extraneous-dependencies": "off" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/scripts/BabelRegister.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | require('@babel/register')({ 4 | extensions: ['.es6', '.es', '.jsx', '.js', '.mjs', '.ts', '.tsx'], 5 | cwd: path.join(__dirname, '../..'), 6 | }); 7 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/scripts/CheckBuildsExist.js: -------------------------------------------------------------------------------- 1 | // Check if the renderer and main bundles are built 2 | import path from 'path'; 3 | import chalk from 'chalk'; 4 | import fs from 'fs'; 5 | 6 | const mainPath = path.join(__dirname, '../../src/main.prod.js'); 7 | const rendererPath = path.join( 8 | __dirname, '../../src/dist/renderer.prod.js' 9 | ); 10 | 11 | if (!fs.existsSync(mainPath)) { 12 | throw new Error( 13 | chalk.whiteBright.bgRed.bold( 14 | 'The main process is not built yet. Build it by running "yarn build:main"' 15 | ) 16 | ); 17 | } 18 | 19 | if (!fs.existsSync(rendererPath)) { 20 | throw new Error( 21 | chalk.whiteBright.bgRed.bold( 22 | 'The renderer process is not built yet. Build it by running "yarn build:renderer"' 23 | ) 24 | ); 25 | } 26 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/scripts/CheckNodeEnv.js: -------------------------------------------------------------------------------- 1 | import chalk from 'chalk'; 2 | 3 | export default function CheckNodeEnv(expectedEnv) { 4 | if (!expectedEnv) { 5 | throw new Error('"expectedEnv" not set'); 6 | } 7 | 8 | if (process.env.NODE_ENV !== expectedEnv) { 9 | console.log( 10 | chalk.whiteBright.bgRed.bold( 11 | `"process.env.NODE_ENV" must be "${expectedEnv}" to use this webpack config` 12 | ) 13 | ); 14 | process.exit(2); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/scripts/CheckPortInUse.js: -------------------------------------------------------------------------------- 1 | import chalk from 'chalk'; 2 | import detectPort from 'detect-port'; 3 | 4 | const port = process.env.PORT || '1212'; 5 | 6 | detectPort(port, (err, availablePort) => { 7 | if (port !== String(availablePort)) { 8 | throw new Error( 9 | chalk.whiteBright.bgRed.bold( 10 | `Port "${port}" on "localhost" is already in use. Please use another port. ex: PORT=4343 yarn start` 11 | ) 12 | ); 13 | } else { 14 | process.exit(0); 15 | } 16 | }); 17 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/scripts/DeleteSourceMaps.js: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | import rimraf from 'rimraf'; 3 | 4 | export default function deleteSourceMaps() { 5 | rimraf.sync(path.join(__dirname, '../../src/dist/*.js.map')); 6 | rimraf.sync(path.join(__dirname, '../../src/*.js.map')); 7 | } 8 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/scripts/ElectronRebuild.js: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | import { execSync } from 'child_process'; 3 | import fs from 'fs'; 4 | import { dependencies } from '../../src/package.json'; 5 | 6 | const nodeModulesPath = path.join(__dirname, '../../src/node_modules'); 7 | 8 | if ( 9 | Object.keys(dependencies || {}).length > 0 && 10 | fs.existsSync(nodeModulesPath) 11 | ) { 12 | const electronRebuildCmd = 13 | '../node_modules/.bin/electron-rebuild --parallel --force --types prod,dev,optional --module-dir .'; 14 | const cmd = 15 | process.platform === 'win32' 16 | ? electronRebuildCmd.replace(/\//g, '\\') 17 | : electronRebuildCmd; 18 | execSync(cmd, { 19 | cwd: path.join(__dirname, '../../src'), 20 | stdio: 'inherit', 21 | }); 22 | } 23 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.erb/scripts/Notarize.js: -------------------------------------------------------------------------------- 1 | const { notarize } = require('electron-notarize'); 2 | const { build } = require('../../package.json'); 3 | 4 | exports.default = async function notarizeMacos(context) { 5 | const { electronPlatformName, appOutDir } = context; 6 | if (electronPlatformName !== 'darwin') { 7 | return; 8 | } 9 | 10 | if (!process.env.CI) { 11 | console.warn('Skipping notarizing step. Packaging is not running in CI'); 12 | return; 13 | } 14 | 15 | if (!('APPLE_ID' in process.env && 'APPLE_ID_PASS' in process.env)) { 16 | console.warn('Skipping notarizing step. APPLE_ID and APPLE_ID_PASS env variables must be set'); 17 | return; 18 | } 19 | 20 | const appName = context.packager.appInfo.productFilename; 21 | 22 | await notarize({ 23 | appBundleId: build.appId, 24 | appPath: `${appOutDir}/${appName}.app`, 25 | appleId: process.env.APPLE_ID, 26 | appleIdPassword: process.env.APPLE_ID_PASS, 27 | }); 28 | }; 29 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.eslintignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # node-waf configuration 20 | .lock-wscript 21 | 22 | # Compiled binary addons (http://nodejs.org/api/addons.html) 23 | build/Release 24 | .eslintcache 25 | 26 | # Dependency directory 27 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git 28 | node_modules 29 | 30 | # OSX 31 | .DS_Store 32 | 33 | # App packaged 34 | release 35 | src/*.main.prod.js 36 | src/main.prod.js 37 | src/main.prod.js.map 38 | src/renderer.prod.js 39 | src/renderer.prod.js.map 40 | src/style.css 41 | src/style.css.map 42 | dist 43 | dll 44 | main.js 45 | main.js.map 46 | 47 | .idea 48 | npm-debug.log.* 49 | __snapshots__ 50 | 51 | # Package.json 52 | package.json 53 | .travis.yml 54 | *.css.d.ts 55 | *.sass.d.ts 56 | *.scss.d.ts 57 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: 'erb', 3 | rules: { 4 | // A temporary hack related to IDE not resolving correct package.json 5 | 'import/no-extraneous-dependencies': 'off', 6 | 'react/require-default-props': 'off', 7 | 'react/no-array-index-key': 'off', 8 | 'react/state-in-constructor': 'off', 9 | 'max-classes-per-file': 'off', 10 | }, 11 | parserOptions: { 12 | ecmaVersion: 2020, 13 | sourceType: 'module', 14 | project: './tsconfig.json', 15 | tsconfigRootDir: __dirname, 16 | createDefaultProgram: true, 17 | }, 18 | settings: { 19 | 'import/resolver': { 20 | // See https://github.com/benmosher/eslint-plugin-import/issues/1396#issuecomment-575727774 for line below 21 | node: {}, 22 | webpack: { 23 | config: require.resolve('./.erb/configs/webpack.config.eslint.js'), 24 | }, 25 | }, 26 | 'import/parsers': { 27 | '@typescript-eslint/parser': ['.ts', '.tsx'], 28 | }, 29 | }, 30 | }; 31 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior, in case people don't have core.autocrlf set. 2 | * text=auto 3 | 4 | # Explicitly declare text files you want to always be normalized and converted 5 | # to native line endings on checkout. 6 | *.c text eol=lf 7 | *.h text eol=lf 8 | *.cpp text eol=lf 9 | *.hpp text eol=lf 10 | *.js text eol=lf 11 | *.ts text eol=lf 12 | *.jsx text eol=lf 13 | *.tsx text eol=lf 14 | *.sh text eol=lf 15 | 16 | # Declare files that will always have CRLF line endings on checkout. 17 | *.sln text eol=crlf 18 | *.bat text eol=crlf 19 | 20 | # Denote all files that are truly binary and should not be modified. 21 | *.png binary 22 | *.jpg binary 23 | *.dll binary 24 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | .history 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 18 | .grunt 19 | 20 | # node-waf configuration 21 | .lock-wscript 22 | 23 | # Compiled binary addons (http://nodejs.org/api/addons.html) 24 | build/Release 25 | .eslintcache 26 | 27 | # Dependency directory 28 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git 29 | node_modules 30 | 31 | # OSX 32 | .DS_Store 33 | 34 | # App packaged 35 | release 36 | src/main.prod.js 37 | src/main.prod.js.map 38 | src/renderer.prod.js 39 | src/renderer.prod.js.map 40 | src/style.css 41 | src/style.css.map 42 | dist 43 | dll 44 | main.js 45 | main.js.map 46 | 47 | .idea 48 | npm-debug.log.* 49 | *.css.d.ts 50 | *.sass.d.ts 51 | *.scss.d.ts 52 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/.npmrc: -------------------------------------------------------------------------------- 1 | registry=https://registry.npmmirror.com 2 | ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ 3 | electron-mirror=https://npmmirror.com/mirrors/electron/ 4 | sass_binary_site=https://npmmirror.com/mirrors/node-sass/ -------------------------------------------------------------------------------- /Agora-Electron-API-Example/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015-present Electron React Boilerplate 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/assets/assets.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.svg' { 2 | const content: any; 3 | export default content; 4 | } 5 | 6 | declare module '*.png' { 7 | const content: any; 8 | export default content; 9 | } 10 | 11 | declare module '*.jpg' { 12 | const content: any; 13 | export default content; 14 | } 15 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/assets/entitlements.mac.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.cs.allow-dyld-environment-variables 6 | 7 | com.apple.security.cs.allow-unsigned-executable-memory 8 | 9 | com.apple.security.cs.allow-jit 10 | 11 | com.apple.security.device.audio-input 12 | 13 | com.apple.security.device.camera 14 | 15 | com.apple.security.files.user-selected.read-write 16 | 17 | com.apple.security.files.user-selected.read-only 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/assets/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/assets/icon.icns -------------------------------------------------------------------------------- /Agora-Electron-API-Example/assets/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/assets/icon.ico -------------------------------------------------------------------------------- /Agora-Electron-API-Example/assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/assets/icon.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/assets/icons/1024x1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/assets/icons/1024x1024.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/assets/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/assets/icons/128x128.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/assets/icons/16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/assets/icons/16x16.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/assets/icons/24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/assets/icons/24x24.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/assets/icons/256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/assets/icons/256x256.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/assets/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/assets/icons/32x32.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/assets/icons/48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/assets/icons/48x48.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/assets/icons/512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/assets/icons/512x512.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/assets/icons/64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/assets/icons/64x64.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/assets/icons/96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/assets/icons/96x96.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/extraResources/audioeffect.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/extraResources/audioeffect.mp3 -------------------------------------------------------------------------------- /Agora-Electron-API-Example/extraResources/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/extraResources/background.png -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/App.global.scss: -------------------------------------------------------------------------------- 1 | @import '~antd/dist/antd.css'; 2 | body { 3 | position: relative; 4 | color: black; 5 | height: 100vh; 6 | 7 | font-family: sans-serif; 8 | overflow-y: hidden; 9 | margin: 0; 10 | } 11 | 12 | #root { 13 | height: 100%; 14 | width: 100%; 15 | } 16 | .app { 17 | display: flex; 18 | flex: 1; 19 | width: 100%; 20 | height: 100%; 21 | } 22 | 23 | .ant-menu-submenu > .ant-menu { 24 | max-height: 450px; 25 | overflow: auto; 26 | } -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/CPP_Plugin/Windows/plugin.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.31321.278 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "plugin", "plugin\plugin.vcxproj", "{B5D41019-6E7B-433E-80CB-10E663966E81}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {B5D41019-6E7B-433E-80CB-10E663966E81}.Debug|x64.ActiveCfg = Debug|x64 17 | {B5D41019-6E7B-433E-80CB-10E663966E81}.Debug|x64.Build.0 = Debug|x64 18 | {B5D41019-6E7B-433E-80CB-10E663966E81}.Debug|x86.ActiveCfg = Debug|Win32 19 | {B5D41019-6E7B-433E-80CB-10E663966E81}.Debug|x86.Build.0 = Debug|Win32 20 | {B5D41019-6E7B-433E-80CB-10E663966E81}.Release|x64.ActiveCfg = Release|x64 21 | {B5D41019-6E7B-433E-80CB-10E663966E81}.Release|x64.Build.0 = Release|x64 22 | {B5D41019-6E7B-433E-80CB-10E663966E81}.Release|x86.ActiveCfg = Release|Win32 23 | {B5D41019-6E7B-433E-80CB-10E663966E81}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {B11ED964-4C25-4EA6-95A9-6780FDC11038} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/CPP_Plugin/Windows/plugin/plugin.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 23 | 24 | 头文件 25 | 26 | 27 | 头文件 28 | 29 | 30 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/CPP_Plugin/Windows/plugin/plugin.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/CPP_Plugin/macOS/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # XDE 6 | .expo/ 7 | 8 | # VSCode 9 | .vscode/ 10 | jsconfig.json 11 | 12 | # Xcode 13 | # 14 | build/ 15 | *.pbxuser 16 | !default.pbxuser 17 | *.mode1v3 18 | !default.mode1v3 19 | *.mode2v3 20 | !default.mode2v3 21 | *.perspectivev3 22 | !default.perspectivev3 23 | xcuserdata 24 | *.xccheckout 25 | *.moved-aside 26 | DerivedData 27 | *.hmap 28 | *.ipa 29 | *.xcuserstate 30 | project.xcworkspace 31 | 32 | # Android/IJ 33 | # 34 | .idea 35 | .gradle 36 | local.properties 37 | android.iml 38 | 39 | # Cocoapods 40 | # 41 | example/ios/Pods 42 | example/ios/Podfile.lock 43 | 44 | # node.js 45 | # 46 | node_modules/ 47 | npm-debug.log 48 | yarn-debug.log 49 | yarn-error.log 50 | package-lock.json 51 | yarn.lock 52 | 53 | # BUCK 54 | buck-out/ 55 | \.buckd/ 56 | android/app/libs 57 | android/keystores/debug.keystore 58 | docs/api/ 59 | gitpull.sh 60 | gitpush.sh 61 | 62 | # Expo 63 | .expo/* 64 | 65 | # generated by bob 66 | lib/ 67 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/CPP_Plugin/plugin.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // plugin.hpp 3 | // plugin 4 | // 5 | // Created by Jerry-Luo on 2021/5/25. 6 | // 7 | 8 | #ifndef plugin_hpp 9 | #define plugin_hpp 10 | 11 | #include "iris_rtc_raw_data_plugin.h" 12 | #include 13 | 14 | class MyIAVFramePlugin : public IAVFramePlugin { 15 | public: 16 | virtual int load(const char* path) override; 17 | virtual int unLoad() override; 18 | virtual int enable() override; 19 | virtual int disable() override; 20 | virtual int setParameter(const char* param) override; 21 | virtual const char* getParameter(const char* key) override; 22 | virtual int release() override; 23 | 24 | virtual bool onPluginCaptureVideoFrame(VideoPluginFrame* videoFrame) override; 25 | virtual bool onPluginRenderVideoFrame(unsigned int uid, 26 | VideoPluginFrame* videoFrame) override; 27 | 28 | virtual bool onPluginRecordAudioFrame(AudioPluginFrame* audioFrame) override; 29 | virtual bool 30 | onPluginPlaybackAudioFrame(AudioPluginFrame* audioFrame) override; 31 | virtual bool onPluginMixedAudioFrame(AudioPluginFrame* audioFrame) override; 32 | virtual bool 33 | onPluginPlaybackAudioFrameBeforeMixing(unsigned int uid, 34 | AudioPluginFrame* audioFrame) override; 35 | 36 | virtual bool onPluginSendAudioPacket(PluginPacket* packet) override; 37 | virtual bool onPluginSendVideoPacket(PluginPacket* packet) override; 38 | virtual bool onPluginReceiveAudioPacket(PluginPacket* packet) override; 39 | virtual bool onPluginReceiveVideoPacket(PluginPacket* packet) override; 40 | }; 41 | 42 | #endif /* plugin_hpp */ 43 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/__tests__/App.test.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import '@testing-library/jest-dom'; 3 | import { render } from '@testing-library/react'; 4 | import App from '../App'; 5 | 6 | describe('App', () => { 7 | it('should render', () => { 8 | expect(render()).toBeTruthy(); 9 | }); 10 | }); 11 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/examples/advanced/CameraAndScreenShare/CameraAndScreenShare.scss: -------------------------------------------------------------------------------- 1 | .previewShot { 2 | background-color: gray; 3 | width: 176px; 4 | height: 99px; 5 | object-fit: contain; 6 | } 7 | 8 | .previewShotBig { 9 | background-color: gray; 10 | width: 300px; 11 | height: 200px; 12 | object-fit: contain; 13 | } -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/examples/advanced/CreateDataStream/CreateDataStream.scss: -------------------------------------------------------------------------------- 1 | .toolBarContent { 2 | display: flex; 3 | height: 100%; 4 | flex-direction: column; 5 | justify-content: space-between; 6 | } 7 | 8 | .msgList { 9 | overflow: auto; 10 | // width: 200px; 11 | height: 200px; 12 | border: 1px darkblue solid; 13 | padding: 4px; 14 | } 15 | 16 | .msg { 17 | word-wrap: break-word; 18 | word-break: break-all; 19 | } 20 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/examples/advanced/JoinMultipleChannel/JoinMultipleChannel.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Agora-Electron-API-Example/src/examples/advanced/JoinMultipleChannel/JoinMultipleChannel.scss -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/examples/advanced/ScreenCapture/ScreenCapture.scss: -------------------------------------------------------------------------------- 1 | .previewShot { 2 | 3 | width: 200px; 4 | height: 100px; 5 | object-fit: contain; 6 | } -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/examples/advanced/ScreenShare/ScreenShare.scss: -------------------------------------------------------------------------------- 1 | .previewShot { 2 | background-color: gray; 3 | width: 176px; 4 | height: 99px; 5 | object-fit: contain; 6 | } 7 | 8 | .previewShotBig { 9 | background-color: gray; 10 | width: 300px; 11 | height: 200px; 12 | object-fit: contain; 13 | } -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/examples/basic/index.jsx: -------------------------------------------------------------------------------- 1 | import JoinChannelAudio from './JoinChannelAudio'; 2 | import JoinChannelVideo from './JoinChannelVideo'; 3 | import StringUid from './StringUid'; 4 | 5 | const basicRoutes = [ 6 | { 7 | path: '/JoinChannelVideo', 8 | component: JoinChannelVideo, 9 | title: 'JoinChannelVideo', 10 | }, 11 | { 12 | path: '/JoinChannelAudio', 13 | component: JoinChannelAudio, 14 | title: 'JoinChannelAudio', 15 | }, 16 | { 17 | path: '/StringUid', 18 | component: StringUid, 19 | title: 'StringUid', 20 | }, 21 | ]; 22 | 23 | export default basicRoutes; 24 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/examples/component/SliderBar/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react'; 2 | 3 | import { Slider, InputNumber, Row, Col } from 'antd'; 4 | 5 | interface SliderBarProps { 6 | title?: string; 7 | min?: number; 8 | max?: number; 9 | value?: number; 10 | step?: number; 11 | onChange?: (value: number) => void; 12 | } 13 | 14 | const SliderBar = ({ 15 | title = '', 16 | min = 0, 17 | max = 100, 18 | value = Number.parseInt((min + max) / 2), 19 | step = 1, 20 | onChange = () => {}, 21 | }: SliderBarProps) => { 22 | const [inputValue, setInputValue] = useState(value); 23 | 24 | const wrapOnChange = (value) => { 25 | console.log(title, value); 26 | 27 | setInputValue(value); 28 | onChange(value); 29 | }; 30 | 31 | return ( 32 | <> 33 | 34 | {title} 35 | 36 | 37 | 38 | 45 | 46 | 47 | 55 | 56 | 57 | 58 | ); 59 | }; 60 | export default SliderBar; 61 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/examples/component/UserCard/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react'; 2 | import { Row, Col, Card } from 'antd'; 3 | 4 | interface UserCardProps { 5 | title?: string; 6 | } 7 | 8 | const UserCard = ({ title = '' }: UserCardProps) => { 9 | const [inputValue, setInputValue] = useState(value); 10 | 11 | const wrapOnChange = (value) => { 12 | console.log(title, value); 13 | 14 | setInputValue(value); 15 | }; 16 | 17 | return ( 18 | More} 22 | style={{ width: 300 }} 23 | > 24 |

Card content

25 |

Card content

26 |

Card content

27 |
28 | ); 29 | }; 30 | export default UserCard; 31 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/examples/component/Window/index.scss: -------------------------------------------------------------------------------- 1 | .window-item { 2 | width: 320px; 3 | height: 240px; 4 | } 5 | 6 | .video-item { 7 | width: 320px; 8 | height: 240px; 9 | background: #cccccc; 10 | overflow: hidden; 11 | } 12 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/examples/component/Window/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import AgoraRtcEngine from 'agora-electron-sdk'; 3 | import styles from './index.scss'; 4 | 5 | interface WindowProps { 6 | rtcEngine: AgoraRtcEngine; 7 | uid?: string | number; 8 | role: 'localVideoSource' | 'local' | 'remote'; 9 | channelId?: string; 10 | } 11 | class Window extends Component { 12 | componentDidMount() { 13 | const { uid, role, rtcEngine, channelId } = this.props; 14 | 15 | const dom = document.querySelector(`#video-${uid}`); 16 | console.log('Window', uid, role, channelId); 17 | // CROPPED = 0, FIT = 1 18 | if (role === 'local') { 19 | rtcEngine.setupLocalVideo(dom!); 20 | rtcEngine.setupViewContentMode('local', 1, undefined); 21 | } else if (role === 'localVideoSource') { 22 | rtcEngine.setupLocalVideoSource(dom!); 23 | rtcEngine.setupViewContentMode('videosource', 1, undefined); 24 | } else if (role === 'remote') { 25 | rtcEngine.subscribe(uid as number, dom!); 26 | rtcEngine.setupViewContentMode(uid as number, 1, undefined); 27 | } 28 | } 29 | 30 | render() { 31 | return ( 32 |
33 |
34 |
35 | ); 36 | } 37 | } 38 | 39 | export default Window; 40 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/examples/config/agora.config.ts: -------------------------------------------------------------------------------- 1 | let localAppId = ''; 2 | try { 3 | localAppId = require('./appID').default; 4 | console.log('appID', localAppId); 5 | } catch (error) {} 6 | 7 | const config = { 8 | appID: localAppId, 9 | token: '', 10 | defaultChannelId: 'test', 11 | pluginPath: '', 12 | nativeSDKLogPath: './Agora_SDK.log', 13 | addonLogPath: './Agora_SDK_Addon.log', 14 | nativeSDKVideoSourceLogPath: './Agora_SDK_Video_Source.log', 15 | videoSourceAddonLogPath: './Agora_SDK_Video_Source_Addon.log', 16 | }; 17 | 18 | export default config; 19 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/examples/config/public.scss: -------------------------------------------------------------------------------- 1 | .screen { 2 | width: 100%; 3 | height: 100%; 4 | display: flex; 5 | flex-direction: row; 6 | .card { 7 | height: 340px; 8 | } 9 | .content { 10 | overflow: auto; 11 | max-height: 630px; 12 | padding: 0 16px; 13 | display: flex; 14 | flex-direction: column; 15 | height: 100%; 16 | width: 100%; 17 | background-color: rgb(238, 240, 243); 18 | } 19 | .rightBar { 20 | overflow: auto; 21 | max-height: 630px; 22 | display: flex; 23 | width: 40%; 24 | flex-direction: column; 25 | padding: 16px 16px 0 16px; 26 | box-sizing: border-box; 27 | background-color: white; 28 | align-items: stretch; 29 | justify-content: space-between; 30 | } 31 | .rightBarBig { 32 | @extend .rightBar; 33 | width: 50%; 34 | } 35 | 36 | .selectedItem { 37 | margin-top: 16px; 38 | .require { 39 | color: red; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/examples/util/base64.js: -------------------------------------------------------------------------------- 1 | export default (input) => { 2 | const keyStr = 3 | 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; 4 | let output = ''; 5 | let chr1, chr2, chr3, enc1, enc2, enc3, enc4; 6 | let i = 0; 7 | 8 | while (i < input.length) { 9 | chr1 = input[i++]; 10 | chr2 = i < input.length ? input[i++] : Number.NaN; // Not sure if the index 11 | chr3 = i < input.length ? input[i++] : Number.NaN; // checks are needed here 12 | 13 | enc1 = chr1 >> 2; 14 | enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); 15 | enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); 16 | enc4 = chr3 & 63; 17 | 18 | if (isNaN(chr2)) { 19 | enc3 = enc4 = 64; 20 | } else if (isNaN(chr3)) { 21 | enc4 = 64; 22 | } 23 | output += 24 | keyStr.charAt(enc1) + 25 | keyStr.charAt(enc2) + 26 | keyStr.charAt(enc3) + 27 | keyStr.charAt(enc4); 28 | } 29 | return output; 30 | }; 31 | 32 | export const readImage = (target) => { 33 | return new Promise((resolve, reject) => { 34 | const reader = new FileReader(); 35 | reader.onloadend = (e) => { 36 | resolve(e.currentTarget.result); 37 | }; 38 | reader.onerror = (e) => { 39 | reject(e); 40 | }; 41 | reader.readAsDataURL(new Blob([target.buffer], { type: 'image/png' })); 42 | }); 43 | }; 44 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/examples/util/index.js: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | export const objToArray = (obj) => 3 | Object.keys(obj).map((key) => ({ key, value: obj[key] })); 4 | 5 | export const configMapToOptions = (obj) => 6 | objToArray(obj).map(({ key, value }) => ({ 7 | dropId: value, 8 | dropText: key, 9 | })); 10 | 11 | export const isDebug = (obj) => { 12 | return process.env.NODE_ENV === 'development'; 13 | }; 14 | 15 | export const getResourcePath = (filePath = './') => { 16 | if (isDebug()) { 17 | return path.resolve(`${__dirname}`, '../extraResources/', filePath); 18 | } 19 | return path.resolve(`${process.resourcesPath}/extraResources`, filePath); 20 | }; 21 | export default {}; 22 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Agora-Electron-SDK-Example 6 | 17 | 18 | 19 |
20 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from 'react-dom'; 3 | import App from './App'; 4 | 5 | render(, document.getElementById('root')); 6 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "electron-react-boilerplate", 3 | "productName": "electron-react-boilerplate", 4 | "version": "2.3.0", 5 | "description": "Electron application boilerplate based on React, React Router, Webpack, React Hot Loader for rapid application development", 6 | "main": "./main.prod.js", 7 | "author": { 8 | "name": "Electron React Boilerplate Maintainers", 9 | "email": "electronreactboilerplate@gmail.com", 10 | "url": "https://github.com/electron-react-boilerplate" 11 | }, 12 | "scripts": { 13 | "electron-rebuild": "node -r ../.erb/scripts/BabelRegister.js ../.erb/scripts/ElectronRebuild.js", 14 | "postinstall": "yarn electron-rebuild" 15 | }, 16 | "license": "MIT", 17 | "dependencies": { 18 | "agora-electron-sdk": "^3.0.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Agora-Electron-API-Example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2018", 4 | "module": "CommonJS", 5 | "lib": ["dom", "esnext"], 6 | "declaration": true, 7 | "declarationMap": true, 8 | "noEmit": true, 9 | "jsx": "react", 10 | "strict": true, 11 | "pretty": true, 12 | "sourceMap": true, 13 | /* Additional Checks */ 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "noImplicitReturns": true, 17 | "noFallthroughCasesInSwitch": true, 18 | /* Module Resolution Options */ 19 | "moduleResolution": "node", 20 | "esModuleInterop": true, 21 | "allowSyntheticDefaultImports": true, 22 | "resolveJsonModule": true, 23 | "allowJs": true 24 | }, 25 | "exclude": [ 26 | "test", 27 | "release", 28 | "src/main.prod.js", 29 | "src/renderer.prod.js", 30 | "src/dist", 31 | ".erb/dll" 32 | ] 33 | } 34 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Electron API Demos 2 | 3 | [![JavaScript Standard Style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](http://standardjs.com) 4 | 5 | :+1::tada: First off, thanks for taking the time to contribute! :tada::+1: 6 | 7 | This project adheres to the Contributor Covenant [code of conduct](CODE_OF_CONDUCT.md). 8 | By participating, you are expected to uphold this code. Please report unacceptable 9 | behavior to [coc@electronjs.org](mailto:coc@electronjs.org). 10 | 11 | **See the [documentation](docs.md) for information on how this project works.** 12 | 13 | ## Code Style & ES6 14 | 15 | This project uses the [JavaScript Standard](http://standardjs.com) style and limited ES6 syntax. 16 | 17 | Because this project is intended for beginners we stick to mostly vanilla JavaScript. One of the features we want illustrate about Electron, however, is that you can use most of ES6 out of the box. To that end, in this project we use these parts of ES6: 18 | 19 | - [`const`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const) 20 | - [`let`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let) 21 | - [string templates](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) 22 | 23 | ## Pull Requests and Issues 24 | 25 | Tips for making an easier-to-review contribution: 26 | 27 | - Please provide a description. 28 | - Include screenshots and animated GIFs whenever possible. 29 | - Use short, present tense commit messages. 30 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | * What operating system are you using? 2 | * What version of Node.js is on your system? 3 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016-2018 GitHub Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/README.md: -------------------------------------------------------------------------------- 1 | # Electron API Demos icon Electron API Demos 2 | 3 | 4 | ## Building 5 | 6 | You'll need [Node.js](https://nodejs.org) installed on your computer in order to build this app. 7 | 8 | ```bash 9 | $ npm install 10 | $ npm run dev 11 | ``` 12 | 13 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/ext-error_marker.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/ext/error_marker"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/ext-linking.js: -------------------------------------------------------------------------------- 1 | define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function i(e){var n=e.editor,r=e.getAccelKey();if(r){var n=e.editor,i=e.getDocumentPosition(),s=n.session,o=s.getTokenAt(i.row,i.column);t.previousLinkingHover&&t.previousLinkingHover!=o&&n._emit("linkHoverOut"),n._emit("linkHover",{position:i,token:o}),t.previousLinkingHover=o}else t.previousLinkingHover&&(n._emit("linkHoverOut"),t.previousLinkingHover=!1)}function s(e){var t=e.getAccelKey(),n=e.getButton();if(n==0&&t){var r=e.editor,i=e.getDocumentPosition(),s=r.session,o=s.getTokenAt(i.row,i.column);r._emit("linkClick",{position:i,token:o})}}var r=e("../editor").Editor;e("../config").defineOptions(r.prototype,"editor",{enableLinking:{set:function(e){e?(this.on("click",s),this.on("mousemove",i)):(this.off("click",s),this.off("mousemove",i))},value:!1}}),t.previousLinkingHover=!1}); (function() { 2 | window.require(["ace/ext/linking"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/ext-statusbar.js: -------------------------------------------------------------------------------- 1 | define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/lang"),s=function(e,t){this.element=r.createElement("div"),this.element.className="ace_status-indicator",this.element.style.cssText="display: inline-block;",t.appendChild(this.element);var n=i.delayedCall(function(){this.updateStatus(e)}.bind(this)).schedule.bind(null,100);e.on("changeStatus",n),e.on("changeSelection",n),e.on("keyboardActivity",n)};(function(){this.updateStatus=function(e){function n(e,n){e&&t.push(e,n||"|")}var t=[];n(e.keyBinding.getStatusText(e)),e.commands.recording&&n("REC");var r=e.selection,i=r.lead;if(!r.isEmpty()){var s=e.getSelectionRange();n("("+(s.end.row-s.start.row)+":"+(s.end.column-s.start.column)+")"," ")}n(i.row+":"+i.column," "),r.rangeCount&&n("["+r.rangeCount+"]"," "),t.pop(),this.element.textContent=t.join("")}}).call(s.prototype),t.StatusBar=s}); (function() { 2 | window.require(["ace/ext/statusbar"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/mode-csp.js: -------------------------------------------------------------------------------- 1 | define("ace/mode/csp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({"constant.language":"child-src|connect-src|default-src|font-src|frame-src|img-src|manifest-src|media-src|object-src|script-src|style-src|worker-src|base-uri|plugin-types|sandbox|disown-opener|form-action|frame-ancestors|report-uri|report-to|upgrade-insecure-requests|block-all-mixed-content|require-sri-for|reflected-xss|referrer|policy-uri",variable:"'none'|'self'|'unsafe-inline'|'unsafe-eval'|'strict-dynamic'|'unsafe-hashed-attributes'"},"identifier",!0);this.$rules={start:[{token:"string.link",regex:/https?:[^;\s]*/},{token:"operator.punctuation",regex:/;/},{token:e,regex:/[^\s;]+/}]}};r.inherits(s,i),t.CspHighlightRules=s}),define("ace/mode/csp",["require","exports","module","ace/mode/text","ace/mode/csp_highlight_rules","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./text").Mode,i=e("./csp_highlight_rules").CspHighlightRules,s=e("../lib/oop"),o=function(){this.HighlightRules=i};s.inherits(o,r),function(){this.$id="ace/mode/csp"}.call(o.prototype),t.Mode=o}); (function() { 2 | window.require(["ace/mode/csp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/mode-gitignore.js: -------------------------------------------------------------------------------- 1 | define("ace/mode/gitignore_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:/^\s*#.*$/},{token:"keyword",regex:/^\s*!.*$/}]},this.normalizeRules()};s.metaData={fileTypes:["gitignore"],name:"Gitignore"},r.inherits(s,i),t.GitignoreHighlightRules=s}),define("ace/mode/gitignore",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gitignore_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gitignore_highlight_rules").GitignoreHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="#",this.$id="ace/mode/gitignore"}.call(o.prototype),t.Mode=o}); (function() { 2 | window.require(["ace/mode/gitignore"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/mode-plain_text.js: -------------------------------------------------------------------------------- 1 | define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,u=function(){this.HighlightRules=s,this.$behaviour=new o};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){return""},this.$id="ace/mode/plain_text"}.call(u.prototype),t.Mode=u}); (function() { 2 | window.require(["ace/mode/plain_text"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/mode-properties.js: -------------------------------------------------------------------------------- 1 | define("ace/mode/properties_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=/\\u[0-9a-fA-F]{4}|\\/;this.$rules={start:[{token:"comment",regex:/[!#].*$/},{token:"keyword",regex:/[=:]$/},{token:"keyword",regex:/[=:]/,next:"value"},{token:"constant.language.escape",regex:e},{defaultToken:"variable"}],value:[{regex:/\\$/,token:"string",next:"value"},{regex:/$/,token:"string",next:"start"},{token:"constant.language.escape",regex:e},{defaultToken:"string"}]}};r.inherits(s,i),t.PropertiesHighlightRules=s}),define("ace/mode/properties",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/properties_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./properties_highlight_rules").PropertiesHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.$id="ace/mode/properties"}.call(o.prototype),t.Mode=o}); (function() { 2 | window.require(["ace/mode/properties"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/mode-text.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | window.require(["ace/mode/text"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/abap.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/abap",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="abap"}); (function() { 2 | window.require(["ace/snippets/abap"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/abc.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/abc",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='\nsnippet zupfnoter.print\n %%%%hn.print {"startpos": ${1:pos_y}, "t":"${2:title}", "v":[${3:voices}], "s":[[${4:syncvoices}1,2]], "f":[${5:flowlines}], "sf":[${6:subflowlines}], "j":[${7:jumplines}]}\n\nsnippet zupfnoter.note\n %%%%hn.note {"pos": [${1:pos_x},${2:pos_y}], "text": "${3:text}", "style": "${4:style}"}\n\nsnippet zupfnoter.annotation\n %%%%hn.annotation {"id": "${1:id}", "pos": [${2:pos}], "text": "${3:text}"}\n\nsnippet zupfnoter.lyrics\n %%%%hn.lyrics {"pos": [${1:x_pos},${2:y_pos}]}\n\nsnippet zupfnoter.legend\n %%%%hn.legend {"pos": [${1:x_pos},${2:y_pos}]}\n\n\n\nsnippet zupfnoter.target\n "^:${1:target}"\n\nsnippet zupfnoter.goto\n "^@${1:target}@${2:distance}"\n\nsnippet zupfnoter.annotationref\n "^#${1:target}"\n\nsnippet zupfnoter.annotation\n "^!${1:text}@${2:x_offset},${3:y_offset}"\n\n\n',t.scope="abc"}); (function() { 2 | window.require(["ace/snippets/abc"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/ada.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/ada",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ada"}); (function() { 2 | window.require(["ace/snippets/ada"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/apache_conf.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/apache_conf",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="apache_conf"}); (function() { 2 | window.require(["ace/snippets/apache_conf"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/apex.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/apex",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="apex"}); (function() { 2 | window.require(["ace/snippets/apex"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/applescript.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/applescript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="applescript"}); (function() { 2 | window.require(["ace/snippets/applescript"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/aql.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/aql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="aql"}); (function() { 2 | window.require(["ace/snippets/aql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/asciidoc.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/asciidoc",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="asciidoc"}); (function() { 2 | window.require(["ace/snippets/asciidoc"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/asl.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/asl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="asl"}); (function() { 2 | window.require(["ace/snippets/asl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/assembly_x86.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/assembly_x86",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="assembly_x86"}); (function() { 2 | window.require(["ace/snippets/assembly_x86"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/autohotkey.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/autohotkey",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="autohotkey"}); (function() { 2 | window.require(["ace/snippets/autohotkey"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/batchfile.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/batchfile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="batchfile"}); (function() { 2 | window.require(["ace/snippets/batchfile"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/bro.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/bro",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}); (function() { 2 | window.require(["ace/snippets/bro"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/c9search.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/c9search",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="c9search"}); (function() { 2 | window.require(["ace/snippets/c9search"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/cirru.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/cirru",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="cirru"}); (function() { 2 | window.require(["ace/snippets/cirru"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/cobol.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/cobol",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="cobol"}); (function() { 2 | window.require(["ace/snippets/cobol"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/coldfusion.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/coldfusion",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="coldfusion"}); (function() { 2 | window.require(["ace/snippets/coldfusion"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/crystal.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/crystal",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="crystal"}); (function() { 2 | window.require(["ace/snippets/crystal"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/csharp.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/csharp",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="csharp"}); (function() { 2 | window.require(["ace/snippets/csharp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/csound_document.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/csound_document",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# \nsnippet synth\n \n \n ${1}\n \n \n e\n \n \n",t.scope="csound_document"}); (function() { 2 | window.require(["ace/snippets/csound_document"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/csound_orchestra.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/csound_orchestra",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# else\nsnippet else\n else\n ${1:/* statements */}\n# elseif\nsnippet elseif\n elseif ${1:/* condition */} then\n ${2:/* statements */}\n# if\nsnippet if\n if ${1:/* condition */} then\n ${2:/* statements */}\n endif\n# instrument block\nsnippet instr\n instr ${1:name}\n ${2:/* statements */}\n endin\n# i-time while loop\nsnippet iwhile\n i${1:Index} = ${2:0}\n while i${1:Index} < ${3:/* count */} do\n ${4:/* statements */}\n i${1:Index} += 1\n od\n# k-rate while loop\nsnippet kwhile\n k${1:Index} = ${2:0}\n while k${1:Index} < ${3:/* count */} do\n ${4:/* statements */}\n k${1:Index} += 1\n od\n# opcode\nsnippet opcode\n opcode ${1:name}, ${2:/* output types */ 0}, ${3:/* input types */ 0}\n ${4:/* statements */}\n endop\n# until loop\nsnippet until\n until ${1:/* condition */} do\n ${2:/* statements */}\n od\n# while loop\nsnippet while\n while ${1:/* condition */} do\n ${2:/* statements */}\n od\n",t.scope="csound_orchestra"}); (function() { 2 | window.require(["ace/snippets/csound_orchestra"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/csound_score.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/csound_score",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="csound_score"}); (function() { 2 | window.require(["ace/snippets/csound_score"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/csp.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/csp",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}); (function() { 2 | window.require(["ace/snippets/csp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/curly.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/curly",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="curly"}); (function() { 2 | window.require(["ace/snippets/curly"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/d.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/d",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="d"}); (function() { 2 | window.require(["ace/snippets/d"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/diff.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/diff",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# DEP-3 (http://dep.debian.net/deps/dep3/) style patch header\nsnippet header DEP-3 style header\n Description: ${1}\n Origin: ${2:vendor|upstream|other}, ${3:url of the original patch}\n Bug: ${4:url in upstream bugtracker}\n Forwarded: ${5:no|not-needed|url}\n Author: ${6:`g:snips_author`}\n Reviewed-by: ${7:name and email}\n Last-Update: ${8:`strftime("%Y-%m-%d")`}\n Applied-Upstream: ${9:upstream version|url|commit}\n\n',t.scope="diff"}); (function() { 2 | window.require(["ace/snippets/diff"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/dockerfile.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/dockerfile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="dockerfile"}); (function() { 2 | window.require(["ace/snippets/dockerfile"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/dot.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/dot",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="dot"}); (function() { 2 | window.require(["ace/snippets/dot"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/drools.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/drools",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='\nsnippet rule\n rule "${1?:rule_name}"\n when\n ${2:// when...} \n then\n ${3:// then...}\n end\n\nsnippet query\n query ${1?:query_name}\n ${2:// find} \n end\n \nsnippet declare\n declare ${1?:type_name}\n ${2:// attributes} \n end\n\n',t.scope="drools"}); (function() { 2 | window.require(["ace/snippets/drools"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/eiffel.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/eiffel",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="eiffel"}); (function() { 2 | window.require(["ace/snippets/eiffel"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/ejs.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/ejs",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ejs"}); (function() { 2 | window.require(["ace/snippets/ejs"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/elixir.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/elixir",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}); (function() { 2 | window.require(["ace/snippets/elixir"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/elm.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/elm",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="elm"}); (function() { 2 | window.require(["ace/snippets/elm"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/forth.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/forth",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="forth"}); (function() { 2 | window.require(["ace/snippets/forth"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/fortran.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/fortran",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="fortran"}); (function() { 2 | window.require(["ace/snippets/fortran"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/fsharp.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/fsharp",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="fsharp"}); (function() { 2 | window.require(["ace/snippets/fsharp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/fsl.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/fsl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}); (function() { 2 | window.require(["ace/snippets/fsl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/ftl.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/ftl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ftl"}); (function() { 2 | window.require(["ace/snippets/ftl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/gcode.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/gcode",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="gcode"}); (function() { 2 | window.require(["ace/snippets/gcode"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/gherkin.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/gherkin",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="gherkin"}); (function() { 2 | window.require(["ace/snippets/gherkin"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/gitignore.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/gitignore",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="gitignore"}); (function() { 2 | window.require(["ace/snippets/gitignore"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/glsl.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/glsl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="glsl"}); (function() { 2 | window.require(["ace/snippets/glsl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/golang.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/golang",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="golang"}); (function() { 2 | window.require(["ace/snippets/golang"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/graphqlschema.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/graphqlschema",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# Type Snippet\ntrigger type\nsnippet type\n type ${1:type_name} {\n ${2:type_siblings}\n }\n\n# Input Snippet\ntrigger input\nsnippet input\n input ${1:input_name} {\n ${2:input_siblings}\n }\n\n# Interface Snippet\ntrigger interface\nsnippet interface\n interface ${1:interface_name} {\n ${2:interface_siblings}\n }\n\n# Interface Snippet\ntrigger union\nsnippet union\n union ${1:union_name} = ${2:type} | ${3: type}\n\n# Enum Snippet\ntrigger enum\nsnippet enum\n enum ${1:enum_name} {\n ${2:enum_siblings}\n }\n",t.scope="graphqlschema"}); (function() { 2 | window.require(["ace/snippets/graphqlschema"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/groovy.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/groovy",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="groovy"}); (function() { 2 | window.require(["ace/snippets/groovy"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/haml.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/haml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet t\n %table\n %tr\n %th\n ${1:headers}\n %tr\n %td\n ${2:headers}\nsnippet ul\n %ul\n %li\n ${1:item}\n %li\nsnippet =rp\n = render :partial => '${1:partial}'\nsnippet =rpl\n = render :partial => '${1:partial}', :locals => {}\nsnippet =rpc\n = render :partial => '${1:partial}', :collection => @$1\n\n",t.scope="haml"}); (function() { 2 | window.require(["ace/snippets/haml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/handlebars.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/handlebars",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="handlebars"}); (function() { 2 | window.require(["ace/snippets/handlebars"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/haskell_cabal.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/haskell_cabal",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="haskell_cabal"}); (function() { 2 | window.require(["ace/snippets/haskell_cabal"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/haxe.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/haxe",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="haxe"}); (function() { 2 | window.require(["ace/snippets/haxe"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/hjson.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/hjson",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}); (function() { 2 | window.require(["ace/snippets/hjson"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/html_elixir.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/html_elixir",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="html_elixir"}); (function() { 2 | window.require(["ace/snippets/html_elixir"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/html_ruby.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/html_ruby",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="html_ruby"}); (function() { 2 | window.require(["ace/snippets/html_ruby"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/ini.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/ini",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ini"}); (function() { 2 | window.require(["ace/snippets/ini"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/io.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/io",["require","exports","module"],function(e,t,n){"use strict";t.snippets=[{content:"assertEquals(${1:expected}, ${2:expr})",name:"assertEquals",scope:"io",tabTrigger:"ae"},{content:"${1:${2:newValue} := ${3:Object} }clone do(\n $0\n)",name:"clone do",scope:"io",tabTrigger:"cdo"},{content:'docSlot("${1:slotName}", "${2:documentation}")',name:"docSlot",scope:"io",tabTrigger:"ds"},{content:"(${1:header,}\n ${2:body}\n)$0",keyEquivalent:"@(",name:"Indented Bracketed Line",scope:"io",tabTrigger:"("},{content:"\n $0\n",keyEquivalent:"\r",name:"Special: Return Inside Empty Parenthesis",scope:"io meta.empty-parenthesis.io, io meta.comma-parenthesis.io"},{content:"${1:methodName} := method(${2:args,}\n $0\n)",name:"method",scope:"io",tabTrigger:"m"},{content:'newSlot("${1:slotName}", ${2:defaultValue}, "${3:docString}")$0',name:"newSlot",scope:"io",tabTrigger:"ns"},{content:"${1:name} := Object clone do(\n $0\n)",name:"Object clone do",scope:"io",tabTrigger:"ocdo"},{content:"test${1:SomeFeature} := method(\n $0\n)",name:"testMethod",scope:"io",tabTrigger:"ts"},{content:"${1:Something}Test := ${2:UnitTest} clone do(\n $0\n)",name:"UnitTest",scope:"io",tabTrigger:"ut"}],t.scope="io"}); (function() { 2 | window.require(["ace/snippets/io"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/jack.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/jack",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="jack"}); (function() { 2 | window.require(["ace/snippets/jack"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/jade.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/jade",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="jade"}); (function() { 2 | window.require(["ace/snippets/jade"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/json.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/json",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="json"}); (function() { 2 | window.require(["ace/snippets/json"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/jssm.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/jssm",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}); (function() { 2 | window.require(["ace/snippets/jssm"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/jsx.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/jsx",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="jsx"}); (function() { 2 | window.require(["ace/snippets/jsx"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/julia.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/julia",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="julia"}); (function() { 2 | window.require(["ace/snippets/julia"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/kotlin.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/kotlin",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}); (function() { 2 | window.require(["ace/snippets/kotlin"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/latex.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/latex",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="latex"}); (function() { 2 | window.require(["ace/snippets/latex"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/less.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/less",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="less"}); (function() { 2 | window.require(["ace/snippets/less"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/lisp.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/lisp",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="lisp"}); (function() { 2 | window.require(["ace/snippets/lisp"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/livescript.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/livescript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="livescript"}); (function() { 2 | window.require(["ace/snippets/livescript"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/logiql.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/logiql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="logiql"}); (function() { 2 | window.require(["ace/snippets/logiql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/logtalk.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/logtalk",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="logtalk"}); (function() { 2 | window.require(["ace/snippets/logtalk"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/lua.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/lua",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet #!\n #!/usr/bin/env lua\n $1\nsnippet local\n local ${1:x} = ${2:1}\nsnippet fun\n function ${1:fname}(${2:...})\n ${3:-- body}\n end\nsnippet for\n for ${1:i}=${2:1},${3:10} do\n ${4:print(i)}\n end\nsnippet forp\n for ${1:i},${2:v} in pairs(${3:table_name}) do\n ${4:-- body}\n end\nsnippet fori\n for ${1:i},${2:v} in ipairs(${3:table_name}) do\n ${4:-- body}\n end\n",t.scope="lua"}); (function() { 2 | window.require(["ace/snippets/lua"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/luapage.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/luapage",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="luapage"}); (function() { 2 | window.require(["ace/snippets/luapage"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/lucene.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/lucene",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="lucene"}); (function() { 2 | window.require(["ace/snippets/lucene"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/makefile.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/makefile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet ifeq\n ifeq (${1:cond0},${2:cond1})\n ${3:code}\n endif\n",t.scope="makefile"}); (function() { 2 | window.require(["ace/snippets/makefile"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/mask.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/mask",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mask"}); (function() { 2 | window.require(["ace/snippets/mask"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/matlab.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/matlab",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="matlab"}); (function() { 2 | window.require(["ace/snippets/matlab"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/maze.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/maze",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet >\ndescription assignment\nscope maze\n -> ${1}= ${2}\n\nsnippet >\ndescription if\nscope maze\n -> IF ${2:**} THEN %${3:L} ELSE %${4:R}\n",t.scope="maze"}); (function() { 2 | window.require(["ace/snippets/maze"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/mel.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/mel",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mel"}); (function() { 2 | window.require(["ace/snippets/mel"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/mixal.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/mixal",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mixal"}); (function() { 2 | window.require(["ace/snippets/mixal"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/mushcode.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/mushcode",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mushcode"}); (function() { 2 | window.require(["ace/snippets/mushcode"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/mysql.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/mysql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mysql"}); (function() { 2 | window.require(["ace/snippets/mysql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/nginx.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/nginx",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="nginx"}); (function() { 2 | window.require(["ace/snippets/nginx"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/nim.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/nim",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="nim"}); (function() { 2 | window.require(["ace/snippets/nim"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/nix.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/nix",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="nix"}); (function() { 2 | window.require(["ace/snippets/nix"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/nsis.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/nsis",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}); (function() { 2 | window.require(["ace/snippets/nsis"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/objectivec.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/objectivec",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="objectivec"}); (function() { 2 | window.require(["ace/snippets/objectivec"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/ocaml.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/ocaml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ocaml"}); (function() { 2 | window.require(["ace/snippets/ocaml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/pascal.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/pascal",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="pascal"}); (function() { 2 | window.require(["ace/snippets/pascal"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/perl6.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/perl6",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="perl6"}); (function() { 2 | window.require(["ace/snippets/perl6"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/pgsql.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/pgsql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="pgsql"}); (function() { 2 | window.require(["ace/snippets/pgsql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/php_laravel_blade.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/php_laravel_blade",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="php"}); (function() { 2 | window.require(["ace/snippets/php_laravel_blade"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/pig.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/pig",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="pig"}); (function() { 2 | window.require(["ace/snippets/pig"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/plain_text.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/plain_text",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="plain_text"}); (function() { 2 | window.require(["ace/snippets/plain_text"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/powershell.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/powershell",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="powershell"}); (function() { 2 | window.require(["ace/snippets/powershell"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/praat.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/praat",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="praat"}); (function() { 2 | window.require(["ace/snippets/praat"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/prolog.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/prolog",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="prolog"}); (function() { 2 | window.require(["ace/snippets/prolog"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/properties.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/properties",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="properties"}); (function() { 2 | window.require(["ace/snippets/properties"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/protobuf.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/protobuf",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="",t.scope="protobuf"}); (function() { 2 | window.require(["ace/snippets/protobuf"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/puppet.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/puppet",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="puppet"}); (function() { 2 | window.require(["ace/snippets/puppet"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/razor.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/razor",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet if\n(${1} == ${2}) {\n ${3}\n}",t.scope="razor"}); (function() { 2 | window.require(["ace/snippets/razor"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/rdoc.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/rdoc",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="rdoc"}); (function() { 2 | window.require(["ace/snippets/rdoc"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/red.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/red",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=" ",t.scope="red"}); (function() { 2 | window.require(["ace/snippets/red"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/redshift.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/redshift",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="redshift"}); (function() { 2 | window.require(["ace/snippets/redshift"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/rhtml.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/rhtml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="rhtml"}); (function() { 2 | window.require(["ace/snippets/rhtml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/rst.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/rst",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# rst\n\nsnippet :\n :${1:field name}: ${2:field body}\nsnippet *\n *${1:Emphasis}*\nsnippet **\n **${1:Strong emphasis}**\nsnippet _\n \\`${1:hyperlink-name}\\`_\n .. _\\`$1\\`: ${2:link-block}\nsnippet =\n ${1:Title}\n =====${2:=}\n ${3}\nsnippet -\n ${1:Title}\n -----${2:-}\n ${3}\nsnippet cont:\n .. contents::\n \n",t.scope="rst"}); (function() { 2 | window.require(["ace/snippets/rst"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/rust.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/rust",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="rust"}); (function() { 2 | window.require(["ace/snippets/rust"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/sass.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/sass",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="sass"}); (function() { 2 | window.require(["ace/snippets/sass"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/scad.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/scad",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scad"}); (function() { 2 | window.require(["ace/snippets/scad"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/scala.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/scala",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scala"}); (function() { 2 | window.require(["ace/snippets/scala"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/scheme.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/scheme",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scheme"}); (function() { 2 | window.require(["ace/snippets/scheme"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/scss.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/scss",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scss"}); (function() { 2 | window.require(["ace/snippets/scss"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/sjs.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/sjs",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="sjs"}); (function() { 2 | window.require(["ace/snippets/sjs"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/slim.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/slim",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="slim"}); (function() { 2 | window.require(["ace/snippets/slim"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/smarty.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/smarty",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="smarty"}); (function() { 2 | window.require(["ace/snippets/smarty"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/snippets.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/snippets",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# snippets for making snippets :)\nsnippet snip\n snippet ${1:trigger}\n ${2}\nsnippet msnip\n snippet ${1:trigger} ${2:description}\n ${3}\nsnippet v\n {VISUAL}\n",t.scope="snippets"}); (function() { 2 | window.require(["ace/snippets/snippets"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/soy_template.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/soy_template",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="soy_template"}); (function() { 2 | window.require(["ace/snippets/soy_template"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/space.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/space",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="space"}); (function() { 2 | window.require(["ace/snippets/space"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/sparql.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/sparql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}); (function() { 2 | window.require(["ace/snippets/sparql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/sql.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/sql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet tbl\n create table ${1:table} (\n ${2:columns}\n );\nsnippet col\n ${1:name} ${2:type} ${3:default ''} ${4:not null}\nsnippet ccol\n ${1:name} varchar2(${2:size}) ${3:default ''} ${4:not null}\nsnippet ncol\n ${1:name} number ${3:default 0} ${4:not null}\nsnippet dcol\n ${1:name} date ${3:default sysdate} ${4:not null}\nsnippet ind\n create index ${3:$1_$2} on ${1:table}(${2:column});\nsnippet uind\n create unique index ${1:name} on ${2:table}(${3:column});\nsnippet tblcom\n comment on table ${1:table} is '${2:comment}';\nsnippet colcom\n comment on column ${1:table}.${2:column} is '${3:comment}';\nsnippet addcol\n alter table ${1:table} add (${2:column} ${3:type});\nsnippet seq\n create sequence ${1:name} start with ${2:1} increment by ${3:1} minvalue ${4:1};\nsnippet s*\n select * from ${1:table}\n",t.scope="sql"}); (function() { 2 | window.require(["ace/snippets/sql"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/stylus.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/stylus",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="stylus"}); (function() { 2 | window.require(["ace/snippets/stylus"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/svg.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/svg",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="svg"}); (function() { 2 | window.require(["ace/snippets/svg"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/swift.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/swift",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="swift"}); (function() { 2 | window.require(["ace/snippets/swift"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/terraform.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/terraform",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="terraform"}); (function() { 2 | window.require(["ace/snippets/terraform"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/text.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/text",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="text"}); (function() { 2 | window.require(["ace/snippets/text"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/textile.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/textile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Jekyll post header\nsnippet header\n ---\n title: ${1:title}\n layout: post\n date: ${2:date} ${3:hour:minute:second} -05:00\n ---\n\n# Image\nsnippet img\n !${1:url}(${2:title}):${3:link}!\n\n# Table\nsnippet |\n |${1}|${2}\n\n# Link\nsnippet link\n "${1:link text}":${2:url}\n\n# Acronym\nsnippet (\n (${1:Expand acronym})${2}\n\n# Footnote\nsnippet fn\n [${1:ref number}] ${3}\n\n fn$1. ${2:footnote}\n \n',t.scope="textile"}); (function() { 2 | window.require(["ace/snippets/textile"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/toml.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/toml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="toml"}); (function() { 2 | window.require(["ace/snippets/toml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/tsx.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/tsx",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="tsx"}); (function() { 2 | window.require(["ace/snippets/tsx"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/turtle.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/turtle",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}); (function() { 2 | window.require(["ace/snippets/turtle"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/twig.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/twig",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="twig"}); (function() { 2 | window.require(["ace/snippets/twig"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/typescript.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/typescript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="typescript"}); (function() { 2 | window.require(["ace/snippets/typescript"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/vbscript.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/vbscript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="vbscript"}); (function() { 2 | window.require(["ace/snippets/vbscript"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/velocity.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/velocity",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# macro\nsnippet #macro\n #macro ( ${1:macroName} ${2:\\$var1, [\\$var2, ...]} )\n ${3:## macro code}\n #end\n# foreach\nsnippet #foreach\n #foreach ( ${1:\\$item} in ${2:\\$collection} )\n ${3:## foreach code}\n #end\n# if\nsnippet #if\n #if ( ${1:true} )\n ${0}\n #end\n# if ... else\nsnippet #ife\n #if ( ${1:true} )\n ${2}\n #else\n ${0}\n #end\n#import\nsnippet #import\n #import ( "${1:path/to/velocity/format}" )\n# set\nsnippet #set\n #set ( $${1:var} = ${0} )\n',t.scope="velocity",t.includeScopes=["html","javascript","css"]}); (function() { 2 | window.require(["ace/snippets/velocity"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/verilog.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/verilog",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="verilog"}); (function() { 2 | window.require(["ace/snippets/verilog"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/vhdl.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/vhdl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="vhdl"}); (function() { 2 | window.require(["ace/snippets/vhdl"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/visualforce.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/visualforce",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="visualforce"}); (function() { 2 | window.require(["ace/snippets/visualforce"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/wollok.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/wollok",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='##\n## Basic Java packages and import\nsnippet im\n import\nsnippet w.l\n wollok.lang\nsnippet w.i\n wollok.lib\n\n## Class and object\nsnippet cl\n class ${1:`Filename("", "untitled")`} ${2}\nsnippet obj\n object ${1:`Filename("", "untitled")`} ${2:inherits Parent}${3}\nsnippet te\n test ${1:`Filename("", "untitled")`}\n\n##\n## Enhancements\nsnippet inh\n inherits\n\n##\n## Comments\nsnippet /*\n /*\n * ${1}\n */\n\n##\n## Control Statements\nsnippet el\n else\nsnippet if\n if (${1}) ${2}\n\n##\n## Create a Method\nsnippet m\n method ${1:method}(${2}) ${5}\n\n## \n## Tests\nsnippet as\n assert.equals(${1:expected}, ${2:actual})\n\n##\n## Exceptions\nsnippet ca\n catch ${1:e} : (${2:Exception} ) ${3}\nsnippet thr\n throw\nsnippet try\n try {\n ${3}\n } catch ${1:e} : ${2:Exception} {\n }\n\n##\n## Javadocs\nsnippet /**\n /**\n * ${1}\n */\n\n##\n## Print Methods\nsnippet print\n console.println("${1:Message}")\n\n##\n## Setter and Getter Methods\nsnippet set\n method set${1:}(${2:}) {\n $1 = $2\n }\nsnippet get\n method get${1:}() {\n return ${1:};\n }\n\n##\n## Terminate Methods or Loops\nsnippet re\n return',t.scope="wollok"}); (function() { 2 | window.require(["ace/snippets/wollok"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/xml.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/xml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="xml"}); (function() { 2 | window.require(["ace/snippets/xml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/yaml.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/yaml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="yaml"}); (function() { 2 | window.require(["ace/snippets/yaml"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ace/snippets/zeek.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/zeek",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}); (function() { 2 | window.require(["ace/snippets/zeek"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/app-icon/mac/app.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/app-icon/mac/app.icns -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/app-icon/png/1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/app-icon/png/1024.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/app-icon/png/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/app-icon/png/128.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/app-icon/png/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/app-icon/png/16.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/app-icon/png/24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/app-icon/png/24.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/app-icon/png/256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/app-icon/png/256.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/app-icon/png/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/app-icon/png/32.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/app-icon/png/48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/app-icon/png/48.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/app-icon/png/512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/app-icon/png/512.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/app-icon/png/64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/app-icon/png/64.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/app-icon/win/app.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/app-icon/win/app.ico -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/code-blocks.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const path = require('path') 3 | const ace = require('./ace/ace') 4 | const codeBlocksWithPaths = document.querySelectorAll('code[data-path]') 5 | const {ipcRenderer} = require('electron') 6 | 7 | ace.config.set('basePath', path.join(__dirname, './ace')) 8 | 9 | Array.prototype.forEach.call(codeBlocksWithPaths, (code) => { 10 | const codePath = path.join(__dirname, '..', code.dataset.path) 11 | const extension = path.extname(codePath) 12 | code.classList.add(`language-${extension.substring(1)}`) 13 | code.textContent = fs.readFileSync(codePath) 14 | }) 15 | 16 | ipcRenderer.on('exec-source-error', (event, arg) => { 17 | debugger 18 | }) 19 | 20 | document.addEventListener('DOMContentLoaded', () => { 21 | const editors = document.querySelectorAll('.editor') 22 | Array.prototype.forEach.call(editors, (editorDom) => { 23 | let editor = ace.edit(`${editorDom.id}`); 24 | editor.setTheme("ace/theme/textmate"); 25 | editor.session.setMode("ace/mode/javascript"); 26 | editor.setOption('maxLines', Infinity); 27 | 28 | let demoBtn = document.querySelector(`.demo-button[data-target="${editorDom.id}"]`) 29 | demoBtn.addEventListener('click', () => { 30 | ipcRenderer.send('exec-source', { 31 | code: editor.getValue(), 32 | id: editorDom.id 33 | }) 34 | }) 35 | }) 36 | }) 37 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/fonts/SourceCodePro-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/css/fonts/SourceCodePro-Regular.ttf -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-Black.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-Black.otf -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-BlackIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-BlackIt.otf -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-Bold.otf -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-BoldIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-BoldIt.otf -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-ExtraLight.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-ExtraLight.otf -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-ExtraLightIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-ExtraLightIt.otf -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-It.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-It.otf -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-Light.otf -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-LightIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-LightIt.otf -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-Regular.otf -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-Semibold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-Semibold.otf -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-SemiboldIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/css/fonts/SourceSansPro-SemiboldIt.otf -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/nativize.css: -------------------------------------------------------------------------------- 1 | /* 2 | ** nativize.css 3 | ** Makes the UI feel more native 4 | */ 5 | 6 | html { 7 | font-family: sans-serif; 8 | user-select: none; /* disable selection */ 9 | -webkit-user-drag: none; /* disable dragging */ 10 | cursor: default; /* use default cursor */ 11 | } 12 | 13 | body { 14 | margin: 0; /* remove default margin */ 15 | } 16 | 17 | 18 | /* enable text selection */ 19 | 20 | .is-selectable, 21 | pre, 22 | code { 23 | user-select: text; 24 | cursor: auto; 25 | } 26 | 27 | 28 | /* Buttons and links */ 29 | 30 | button{ 31 | cursor: default; 32 | } 33 | 34 | /* Internal links */ 35 | a { 36 | cursor: pointer; 37 | text-decoration: none; 38 | border-bottom: 1px dashed; 39 | outline: none; 40 | } 41 | 42 | /* New window (target) + external links */ 43 | a[target], 44 | a[href^="https://"], 45 | a[href^="http://"] { 46 | border-bottom: 1px solid; 47 | } 48 | 49 | a:hover, 50 | a:focus { 51 | border-bottom: none; 52 | } 53 | 54 | 55 | /* Images */ 56 | 57 | img { 58 | -webkit-user-drag: none; /* disable dragging */ 59 | } 60 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/print.css: -------------------------------------------------------------------------------- 1 | @media print { 2 | body { 3 | background: none; 4 | color: black !important; 5 | font-size: 70%; 6 | margin: 0; padding: 0; 7 | } 8 | 9 | h1 { 10 | font-size: 22px; 11 | } 12 | 13 | .nav, button, .demo-box:before, 14 | header p { 15 | display: none; 16 | } 17 | 18 | .demo-box, h2, 19 | pre, code { 20 | padding: 0 !important; 21 | margin: 0 !important; 22 | } 23 | 24 | header { 25 | padding: 0 0 10px 0; 26 | } 27 | 28 | code, .support { 29 | font-size: 10px; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/section.css: -------------------------------------------------------------------------------- 1 | /* Section ------------------ */ 2 | 3 | .section { 4 | position: absolute; 5 | top: 0; 6 | left: 0; 7 | right: 0; 8 | bottom: 0; 9 | overflow-x: hidden; 10 | overflow-y: auto; 11 | color: var(--color-accent); 12 | 13 | /* Hide */ 14 | pointer-events: none; 15 | visibility: hidden; 16 | opacity: 0; 17 | transform: translateX(-20px); 18 | transition: visibility 0s .12s linear , opacity .12s ease-in, transform .12s ease-in; 19 | } 20 | .section.is-shown { 21 | pointer-events: auto; 22 | visibility: visible; 23 | opacity: 1; 24 | transform: translateX(0); 25 | transition: visibility 0s 0s linear , opacity .36s ease-out, transform .36s ease-out; 26 | } 27 | 28 | .section h3, 29 | .section p { 30 | color: var(--color); 31 | } 32 | 33 | .section-wrapper { 34 | position: relative; 35 | max-width: 740px; 36 | margin: 0 auto; 37 | padding: 2rem 2rem 1rem 2rem; 38 | border-bottom: 1px solid var(--color-border); 39 | } 40 | @media (min-width: 940px) { 41 | .section-wrapper { 42 | padding-top: 4rem; 43 | } 44 | } 45 | 46 | .section-icon { 47 | width: 32px; 48 | height: 32px; 49 | vertical-align: middle; 50 | margin-right: .5em; 51 | } 52 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/css/variables.css: -------------------------------------------------------------------------------- 1 | 2 | /* Custom Properties */ 3 | 4 | :root { 5 | --color: hsl(0,0%,22%); 6 | --color-subtle: hsl(0,0%,44%); 7 | --color-strong: hsl(0,0%,11%); 8 | --color-link: hsl(0,0%,22%); 9 | 10 | --color-border: hsl(0,0%,88%); 11 | --color-bg: hsl(0,0%,96%); 12 | 13 | --color-accent: black; /* Fallback */ 14 | } 15 | 16 | 17 | /* Category Colors */ 18 | 19 | .u-category-video-audio { --color-accent: hsl(222, 53%, 50%); } 20 | .u-category-live-streaming { --color-accent: hsl(116, 30%, 36%); } 21 | .u-category-menu { --color-accent: hsl(194, 60%, 36%); } 22 | .u-category-native-ui { --color-accent: hsl(222, 53%, 50%); } 23 | .u-category-communication { --color-accent: hsl(285, 47%, 46%); } 24 | .u-category-system { --color-accent: hsl(330, 65%, 48%); } 25 | .u-category-media { --color-accent: hsl( 36, 77%, 34%); } 26 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/demo-btns.js: -------------------------------------------------------------------------------- 1 | const settings = require('electron-settings') 2 | 3 | const demoBtns = document.querySelectorAll('.js-container-target') 4 | // Listen for demo button clicks 5 | Array.prototype.forEach.call(demoBtns, (btn) => { 6 | btn.addEventListener('click', (event) => { 7 | const parent = event.target.parentElement 8 | 9 | // Toggles the "is-open" class on the demo's parent element. 10 | parent.classList.toggle('is-open') 11 | 12 | // Saves the active demo if it is open, or clears it if the demo was user 13 | // collapsed by the user 14 | if (parent.classList.contains('is-open')) { 15 | settings.set('activeDemoButtonId', event.target.getAttribute('id')) 16 | } else { 17 | settings.delete('activeDemoButtonId') 18 | } 19 | }) 20 | }) 21 | 22 | // Default to the demo that was active the last time the app was open 23 | const buttonId = settings.get('activeDemoButtonId') 24 | if (buttonId) { 25 | document.getElementById(buttonId).click() 26 | } 27 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/ex-links.js: -------------------------------------------------------------------------------- 1 | const shell = require('electron').shell 2 | 3 | const links = document.querySelectorAll('a[href]') 4 | 5 | Array.prototype.forEach.call(links, (link) => { 6 | const url = link.getAttribute('href') 7 | if (url.indexOf('http') === 0) { 8 | link.addEventListener('click', (e) => { 9 | e.preventDefault() 10 | shell.openExternal(url) 11 | }) 12 | } 13 | }) 14 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/img/about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/img/about.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/img/about@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/img/about@2x.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/img/diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/img/diagram.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/img/loading.gif -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/img/programming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/img/programming.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/img/ui-terminology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/img/ui-terminology.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/imports.js: -------------------------------------------------------------------------------- 1 | const links = document.querySelectorAll('link[rel="import"]') 2 | 3 | // Import and add each page to the DOM 4 | Array.prototype.forEach.call(links, (link) => { 5 | let template = link.import.querySelector('.task-template') 6 | let clone = document.importNode(template.content, true) 7 | if (link.href.match('about.html')) { 8 | document.querySelector('body').appendChild(clone) 9 | } else { 10 | document.querySelector('.content').appendChild(clone) 11 | } 12 | }) 13 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/mac/child.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.inherit 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/mac/info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleURLTypes 6 | 7 | 8 | CFBundleURLSchemes 9 | 10 | electron-api-demos 11 | 12 | CFBundleURLName 13 | Electron API Demos Protocol 14 | 15 | 16 | ElectronTeamID 17 | VEKTX9H2N7 18 | 19 | 20 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/mac/parent.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.application-groups 8 | VEKTX9H2N7.com.github.electron-api-demos 9 | com.apple.security.files.user-selected.read-write 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/normalize-shortcuts.js: -------------------------------------------------------------------------------- 1 | const normalize = require('electron-shortcut-normalizer') 2 | let shortcuts = document.querySelectorAll('kbd.normalize-to-platform') 3 | 4 | Array.prototype.forEach.call(shortcuts, (shortcut) => { 5 | shortcut.innerText = normalize(shortcut.innerText, process.platform) 6 | }) 7 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/tiles/SampleAppx.150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/tiles/SampleAppx.150x150.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/tiles/SampleAppx.310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/tiles/SampleAppx.310x150.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/tiles/SampleAppx.44x44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/tiles/SampleAppx.44x44.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/assets/tiles/SampleAppx.50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-HTML5/assets/tiles/SampleAppx.50x50.png -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | # Build NodeJS Express app using Azure Pipelines 2 | # https://docs.microsoft.com/azure/devops/pipelines/languages/javascript?view=azure-devops 3 | strategy: 4 | matrix: 5 | mac: 6 | displayName: MacOS-Build 7 | imageName: 'macos-latest' 8 | packtype: 'mac' 9 | windows: 10 | displayName: Windows-Build 11 | imageName: 'vs2017-win2016' 12 | packtype: 'win' 13 | 14 | pool: 15 | vmImage: $(imageName) 16 | 17 | variables: 18 | - group: ElectronQuickStart 19 | 20 | steps: 21 | 22 | - task: NodeTool@0 23 | inputs: 24 | versionSpec: '8.x' 25 | 26 | - script: npm install 27 | 28 | - script: npm run write-config 29 | env: 30 | AGORA_APPID: $(agora.appId) 31 | 32 | 33 | - script: npm run package:$(packtype) 34 | - script: npm run zip-consumable 35 | 36 | - task: CopyFiles@2 37 | inputs: 38 | SourceFolder: '$(System.DefaultWorkingDirectory)' 39 | Contents: | 40 | out.zip 41 | TargetFolder: '$(Build.ArtifactStagingDirectory)' 42 | 43 | - task: PublishBuildArtifacts@1 44 | inputs: 45 | PathtoPublish: '$(Build.ArtifactStagingDirectory)' 46 | ArtifactName: $(displayName) 47 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const {spawn} = require('child_process') 4 | const electron = require('electron') 5 | const path = require('path') 6 | 7 | const appPath = path.join(__dirname, 'main.js') 8 | const args = [appPath].concat(process.argv.slice(2)) 9 | const proc = spawn(electron, args, {stdio: 'inherit'}) 10 | 11 | proc.on('close', (code) => process.exit(code)) 12 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/main-process/communication/exec.js: -------------------------------------------------------------------------------- 1 | const { ipcMain, BrowserWindow } = require('electron') 2 | 3 | ipcMain.on('exec-source', (event, arg) => { 4 | let win = BrowserWindow.getFocusedWindow() 5 | win.webContents.executeJavaScript(arg.code) 6 | }) -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/script/installer.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const createWindowsInstaller = require('electron-winstaller').createWindowsInstaller 4 | const path = require('path') 5 | const rimraf = require('rimraf') 6 | 7 | deleteOutputFolder() 8 | .then(getInstallerConfig) 9 | .then(createWindowsInstaller) 10 | .catch((error) => { 11 | console.error(error.message || error) 12 | process.exit(1) 13 | }) 14 | 15 | function getInstallerConfig () { 16 | const rootPath = path.join(__dirname, '..') 17 | const outPath = path.join(rootPath, 'out') 18 | 19 | return Promise.resolve({ 20 | appDirectory: path.join(outPath, 'Electron API Demos-win32-ia32'), 21 | exe: 'Electron API Demos.exe', 22 | iconUrl: 'https://raw.githubusercontent.com/electron/electron-api-demos/master/assets/app-icon/win/app.ico', 23 | loadingGif: path.join(rootPath, 'assets', 'img', 'loading.gif'), 24 | noMsi: true, 25 | outputDirectory: path.join(outPath, 'windows-installer'), 26 | setupExe: 'ElectronAPIDemosSetup.exe', 27 | setupIcon: path.join(rootPath, 'assets', 'app-icon', 'win', 'app.ico'), 28 | skipUpdateIcon: true 29 | }) 30 | } 31 | 32 | function deleteOutputFolder () { 33 | return new Promise((resolve, reject) => { 34 | rimraf(path.join(__dirname, '..', 'out', 'windows-installer'), (error) => { 35 | error ? reject(error) : resolve() 36 | }) 37 | }) 38 | } 39 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/script/windows-store.js: -------------------------------------------------------------------------------- 1 | const ChildProcess = require('child_process') 2 | const path = require('path') 3 | 4 | const metadata = require('../package') 5 | 6 | const command = path.join(__dirname, '..', 'node_modules', '.bin', 'electron-windows-store.cmd') 7 | const args = [ 8 | '--input-directory', 9 | path.join(__dirname, '..', 'out', 'ElectronAPIDemos-win32-ia32'), 10 | '--output-directory', 11 | path.join(__dirname, '..', 'out', 'windows-store'), 12 | '--flatten', 13 | true, 14 | '--package-version', 15 | metadata.version + '.0', 16 | '--package-name', 17 | metadata.name, 18 | '--package-display-name', 19 | metadata.productName, 20 | '--assets', 21 | path.join(__dirname, '..', 'assets', 'tiles'), 22 | '--package-description', 23 | metadata.description 24 | ] 25 | 26 | const windowsStore = ChildProcess.spawn(command, args, {stdio: 'inherit'}) 27 | windowsStore.on('close', (code) => { 28 | process.exit(code) 29 | }) 30 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/script/writeAppId.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = require('path') 3 | 4 | const targetPath = path.resolve(__dirname, '../assets/appid.js') 5 | 6 | const file = fs.readFileSync(targetPath, 'utf8'); 7 | 8 | const result = file.replace(/global.AGORA_APPID = (.*)/, `global.AGORA_APPID = "${process.env.AGORA_APPID}"`); 9 | 10 | if (process.env.AGORA_APPID) { 11 | console.log(`======= Agora App ID ${process.env.AGORA_APPID} has been set =====`) 12 | } else { 13 | console.log(`======= Agora App ID ${process.env.AGORA_APPID} is empty =====`) 14 | } 15 | 16 | fs.writeFileSync(targetPath, result); 17 | -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/script/zip.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const path = require('path') 3 | const archiver = require('archiver'); 4 | 5 | const archive = archiver('zip', { zlib: { level: 9 }}); 6 | const stream = fs.createWriteStream(path.join(__dirname, '../out.zip')); 7 | 8 | archive 9 | .directory(path.join(__dirname, '../out'), false) 10 | .on('error', err => {console.error(err)}) 11 | .pipe(stream) 12 | ; 13 | 14 | stream.on('close', () => {console.log(`done`)}); 15 | archive.finalize(); -------------------------------------------------------------------------------- /Other/Agora-Electron-HTML5/sections/about.html: -------------------------------------------------------------------------------- 1 | 29 | -------------------------------------------------------------------------------- /Other/Agora-Electron-Premium/.npmrc: -------------------------------------------------------------------------------- 1 | registry=https://registry.npm.taobao.org 2 | electron-mirror=https://npm.taobao.org/mirrors/electron/ 3 | sass_binary_site=https://npm.taobao.org/mirrors/node-sass/ -------------------------------------------------------------------------------- /Other/Agora-Electron-Premium/LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Agora.io 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Other/Agora-Electron-Premium/azure-pipelines-1.yml: -------------------------------------------------------------------------------- 1 | # Starter pipeline 2 | # Start with a minimal pipeline that you can customize to build and deploy your code. 3 | # Add steps that build, run tests, deploy, and more: 4 | # https://aka.ms/yaml 5 | 6 | trigger: 7 | - master 8 | 9 | pool: 10 | vmImage: 'ubuntu-latest' 11 | 12 | steps: 13 | - script: echo Hello, world! 14 | displayName: 'Run a one-line script' 15 | 16 | - script: | 17 | echo Add other tasks to build, test, and deploy your project. 18 | echo See https://aka.ms/yaml 19 | displayName: 'Run a multi-line script' 20 | -------------------------------------------------------------------------------- /Other/Agora-Electron-Premium/entitlements/entitlements.mac.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.cs.allow-jit 6 | 7 | com.apple.security.cs.allow-unsigned-executable-memory 8 | 9 | com.apple.security.cs.allow-dyld-environment-variables 10 | 11 | com.apple.security.device.audio-input 12 | 13 | com.apple.security.device.camera 14 | 15 | 16 | -------------------------------------------------------------------------------- /Other/Agora-Electron-Premium/src/renderer/index.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | height: 100%; 3 | margin: 0; 4 | } 5 | 6 | 7 | #app { 8 | height: 100%; 9 | min-height: 100%; 10 | } 11 | 12 | 13 | .window-container { 14 | display: grid!important; 15 | grid: repeat(2, 50%) / repeat(3, 33%); 16 | } 17 | 18 | .window-item { 19 | width: 320; 20 | height: 240px; 21 | } 22 | 23 | .video-item { 24 | width: 100%; 25 | height: 100%; 26 | background: #CCCCCC; 27 | overflow: hidden; 28 | } 29 | 30 | .hidden { 31 | display: none; 32 | } 33 | 34 | .field.is-grouped.hidden { 35 | display: none; 36 | } 37 | 38 | -------------------------------------------------------------------------------- /Other/Agora-Electron-Premium/src/renderer/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import 'bulma/css/bulma.css'; 4 | import App from './App'; 5 | import './index.css' 6 | 7 | ReactDOM.render(, document.getElementById('app')); 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-Premium/src/utils/base64.js: -------------------------------------------------------------------------------- 1 | export default (input) => { 2 | let keyStr = 3 | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; 4 | let output = ""; 5 | let chr1, chr2, chr3, enc1, enc2, enc3, enc4; 6 | let i = 0; 7 | 8 | while (i < input.length) { 9 | chr1 = input[i++]; 10 | chr2 = i < input.length ? input[i++] : Number.NaN; // Not sure if the index 11 | chr3 = i < input.length ? input[i++] : Number.NaN; // checks are needed here 12 | 13 | enc1 = chr1 >> 2; 14 | enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); 15 | enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); 16 | enc4 = chr3 & 63; 17 | 18 | if (isNaN(chr2)) { 19 | enc3 = enc4 = 64; 20 | } else if (isNaN(chr3)) { 21 | enc4 = 64; 22 | } 23 | output += 24 | keyStr.charAt(enc1) + 25 | keyStr.charAt(enc2) + 26 | keyStr.charAt(enc3) + 27 | keyStr.charAt(enc4); 28 | } 29 | return output; 30 | } 31 | 32 | export const readImage = (target) => { 33 | return new Promise((resolve, reject) => { 34 | const reader = new FileReader(); 35 | reader.onloadend = (e) => { 36 | resolve(e.currentTarget.result) 37 | } 38 | reader.onerror = (e) => { 39 | reject(e) 40 | } 41 | reader.readAsDataURL(new Blob([target.buffer], {type: "image/png"})) 42 | }) 43 | } -------------------------------------------------------------------------------- /Other/Agora-Electron-Premium/webpack.renderer.additions.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | } -------------------------------------------------------------------------------- /Other/Agora-Electron-React/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | *-lock.json 3 | 4 | # Logs 5 | logs 6 | *.log 7 | npm-debug.log* 8 | 9 | # Runtime data 10 | pids 11 | *.pid 12 | *.seed 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # node-waf configuration 27 | .lock-wscript 28 | 29 | # Compiled binary addons (http://nodejs.org/api/addons.html) 30 | build/Release 31 | 32 | # Dependency directories 33 | node_modules 34 | jspm_packages 35 | 36 | # Optional npm cache directory 37 | .npm 38 | 39 | # Optional REPL history 40 | .node_repl_history 41 | -------------------------------------------------------------------------------- /Other/Agora-Electron-React/README.md: -------------------------------------------------------------------------------- 1 | # electron-react-webpack 2 | Try this Electron & React 16 & Webpack 4 template for a quick development and prototyping. 3 | 4 | ![w10 sample](https://user-images.githubusercontent.com/11739632/37350993-59ad48d4-26da-11e8-9ac5-d3539cf1e2f9.PNG) 5 | 6 | ## Install 7 | ``` bash 8 | # Install dependencies 9 | $ npm install 10 | ``` 11 | 12 | ## Develop 13 | Just run this command to start developing with hot reloading. 14 | ``` bash 15 | $ npm run dev 16 | ``` 17 | 18 | ## Related 19 | - [Agora-Electron-Vue](https://github.com/AgoraIO-Community/Agora-Electron-Quickstart/tree/master/Agora-Electron-Vue) - 20 | Minimal Electron template using Vue 2 instead of React. 21 | -------------------------------------------------------------------------------- /Other/Agora-Electron-React/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Electron + React + Webpack + Agora 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Other/Agora-Electron-React/main.js: -------------------------------------------------------------------------------- 1 | // Basic init 2 | const electron = require('electron') 3 | const {app, BrowserWindow} = electron 4 | const { format } = require('url') 5 | const path = require('path') 6 | 7 | const isDevelopment = process.env["NODE_ENV"] === "development" 8 | // Let electron reloads by itself when webpack watches changes in ./app/ 9 | if(isDevelopment) { 10 | //only load reload module in dev mode 11 | require('electron-reload')(path.join(__dirname, "src")) 12 | } 13 | 14 | // To avoid being garbage collected 15 | let mainWindow 16 | 17 | app.on('ready', () => { 18 | 19 | mainWindow = new BrowserWindow({ 20 | width: 800, 21 | height: 600, 22 | webPreferences:{ 23 | nodeIntegration: true 24 | } 25 | }) 26 | 27 | if(isDevelopment) { 28 | mainWindow.openDevTools() 29 | } 30 | 31 | if(isDevelopment) { 32 | mainWindow.loadURL(`file://${__dirname}/index.html`) 33 | } else { 34 | mainWindow.loadURL(format({ 35 | pathname: path.join(__dirname, 'index.html'), 36 | protocol: 'file', 37 | slashes: true 38 | })) 39 | } 40 | 41 | }) 42 | -------------------------------------------------------------------------------- /Other/Agora-Electron-React/src/renderer/assets/agora.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-React/src/renderer/assets/agora.png -------------------------------------------------------------------------------- /Other/Agora-Electron-React/src/renderer/assets/electron.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-React/src/renderer/assets/electron.png -------------------------------------------------------------------------------- /Other/Agora-Electron-React/src/renderer/assets/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-React/src/renderer/assets/react.png -------------------------------------------------------------------------------- /Other/Agora-Electron-React/src/renderer/assets/webpack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-React/src/renderer/assets/webpack.png -------------------------------------------------------------------------------- /Other/Agora-Electron-React/src/renderer/components/Link/index.jsx: -------------------------------------------------------------------------------- 1 | import React, {Component} from 'react' 2 | import {shell} from 'electron' 3 | import styles from './styles.css' 4 | 5 | export default class Link extends Component { 6 | 7 | link (url) { 8 | shell.openExternal(url) 9 | } 10 | 11 | render () { 12 | console.log(styles); 13 | return ( 14 | {this.link(this.props.to)} } className={styles.link} > 15 | {this.props.children} 16 | 17 | ) 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Other/Agora-Electron-React/src/renderer/components/Link/styles.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Every class name will be hashed so it can be used their own component scoped 3 | * Use classes instead of ids 4 | */ 5 | 6 | .tone { 7 | color: var(--primary-color); /* Using global constants example */ 8 | } 9 | 10 | .link { 11 | composes: tone; /* Composition example */ 12 | text-decoration: none; 13 | } 14 | -------------------------------------------------------------------------------- /Other/Agora-Electron-React/src/renderer/components/Logo/index.jsx: -------------------------------------------------------------------------------- 1 | import React, {Component} from 'react' 2 | import styles from './styles.css' 3 | 4 | export default class Logo extends Component { 5 | render() { 6 | return 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Other/Agora-Electron-React/src/renderer/components/Logo/styles.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Every class name will be hashed so it can be used their own component scoped 3 | * Use classes instead of ids 4 | */ 5 | 6 | .logo { 7 | height: 100px; 8 | } 9 | -------------------------------------------------------------------------------- /Other/Agora-Electron-React/src/renderer/global.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Global constants goes here 3 | */ 4 | :root { 5 | --primary-color: #42b983; 6 | } 7 | 8 | 9 | /* 10 | * Global CSS goes here, it requires to use :global before each style 11 | */ 12 | :global html { 13 | height: 100%; 14 | } 15 | :global body { 16 | display: flex; 17 | align-items: center; 18 | justify-content: center; 19 | height: 100%; 20 | margin: auto; 21 | } 22 | :global #app { 23 | color: #2c3e50; 24 | max-width: 600px; 25 | font-family: Source Sans Pro, Helvetica, sans-serif; 26 | text-align: center; 27 | } 28 | :global #app p { 29 | text-align: justify; 30 | } 31 | :global .hello { 32 | color: var(--primary-color); 33 | display: flex; 34 | justify-content: center; 35 | align-items: center; 36 | } 37 | 38 | :global .video { 39 | width: 120px; 40 | height: 120px; 41 | overflow: hidden; 42 | } 43 | -------------------------------------------------------------------------------- /Other/Agora-Electron-React/src/renderer/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import {render} from 'react-dom' 3 | import App from './App.jsx' 4 | import './global.css' 5 | 6 | render( 7 | , 8 | document.getElementById('app') 9 | ) 10 | -------------------------------------------------------------------------------- /Other/Agora-Electron-React/webpack.config.js: -------------------------------------------------------------------------------- 1 | const ExtractTextPlugin = require('extract-text-webpack-plugin') 2 | const isProduction = process.env["NODE_ENV"] === "production" 3 | 4 | module.exports = { 5 | externals: {"agora-electron-sdk": "commonjs2 agora-electron-sdk"}, 6 | watch: isProduction ? false : true, 7 | 8 | target: 'electron-renderer', 9 | 10 | entry: './src/renderer/index.js', 11 | 12 | output: { 13 | path: __dirname + '/build', 14 | publicPath: 'build/', 15 | filename: 'bundle.js' 16 | }, 17 | 18 | module: { 19 | rules: [ 20 | { 21 | test: /\.jsx?$/, 22 | loader: 'babel-loader', 23 | options: { 24 | presets: ['react'] 25 | } 26 | }, 27 | { 28 | test: /\.css$/, 29 | loader: ExtractTextPlugin.extract({ 30 | loader: 'css-loader', 31 | options: { 32 | modules: true 33 | } 34 | }) 35 | }, 36 | { 37 | test: /\.(png|jpg|gif|svg)$/, 38 | loader: 'file-loader', 39 | query: { 40 | name: '[name].[ext]?[hash]' 41 | } 42 | } 43 | ] 44 | }, 45 | 46 | plugins: [ 47 | new ExtractTextPlugin({ 48 | filename: 'bundle.css', 49 | disable: false, 50 | allChunks: true 51 | }) 52 | ], 53 | 54 | resolve: { 55 | extensions: ['.js', '.json', '.jsx'] 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /Other/Agora-Electron-Vue/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # nyc test coverage 18 | .nyc_output 19 | 20 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 21 | .grunt 22 | 23 | # node-waf configuration 24 | .lock-wscript 25 | 26 | # Compiled binary addons (http://nodejs.org/api/addons.html) 27 | build/Release 28 | 29 | # Dependency directories 30 | node_modules 31 | jspm_packages 32 | 33 | # Optional npm cache directory 34 | .npm 35 | 36 | # Optional REPL history 37 | .node_repl_history 38 | -------------------------------------------------------------------------------- /Other/Agora-Electron-Vue/README.md: -------------------------------------------------------------------------------- 1 | # electron-vue-webpack 2 | Got tired finding Electron/Vue2/Webpack2 templates with fancy add-ons you don't really need? 3 | 4 | Give a try to this minimal template with very few dependencies for quick development and prototyping. 5 | 6 | ![w10 sample](https://cloud.githubusercontent.com/assets/11739632/19222705/0f8c55fc-8e5f-11e6-97fa-0d3943f43358.png) 7 | 8 | ## Install 9 | ``` bash 10 | # Install dependencies 11 | $ npm install 12 | ``` 13 | 14 | ## Usage 15 | Run this command to start developing with hot reloading. 16 | ``` bash 17 | # Webpack builds once and watches to apply only the changes 18 | $ npm run dev 19 | ``` 20 | 21 | ## Related 22 | - [Agora-Electron-React](https://github.com/AgoraIO-Community/Agora-Electron-Quickstart/blob/master/Agora-Electron-React) - 23 | Electron template using React instead of Vue 2. 24 | -------------------------------------------------------------------------------- /Other/Agora-Electron-Vue/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Electron + Vue + Webpack 6 | 7 | 8 |
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Other/Agora-Electron-Vue/main.js: -------------------------------------------------------------------------------- 1 | // Basic init 2 | const electron = require('electron') 3 | const {app, BrowserWindow} = electron 4 | const { format } = require('url') 5 | const path = require('path') 6 | 7 | // Let electron reloads by itself when webpack watches changes in ./app/ 8 | const isDevelopment = process.env["NODE_ENV"] === "development" 9 | 10 | if(isDevelopment) { 11 | //only load reload module in dev mode 12 | require('electron-reload')(path.join(__dirname, "src")) 13 | } 14 | 15 | // To avoid being garbage collected 16 | let mainWindow 17 | 18 | app.on('ready', () => { 19 | 20 | let mainWindow = new BrowserWindow({ 21 | width: 800, 22 | height: 600, 23 | webPreferences: { 24 | nodeIntegration: true 25 | } 26 | }) 27 | 28 | if(isDevelopment) { 29 | mainWindow.loadURL(`file://${__dirname}/index.html`) 30 | } else { 31 | mainWindow.loadURL(format({ 32 | pathname: path.join(__dirname, 'index.html'), 33 | protocol: 'file', 34 | slashes: true 35 | })) 36 | } 37 | 38 | }) 39 | -------------------------------------------------------------------------------- /Other/Agora-Electron-Vue/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "electron-vue-webpack", 3 | "version": "1.0.0", 4 | "description": "A minimal Electron + Vue 2 + Webpack 2 setup with few dependencies for quick development.", 5 | "main": "main.js", 6 | "build": { 7 | "asar": false, 8 | "files": [ 9 | "build/**/*", 10 | "main.js", 11 | "index.html", 12 | "node_modules/**/*" 13 | ], 14 | "mac": { 15 | "hardenedRuntime": false 16 | } 17 | }, 18 | "scripts": { 19 | "bundle": "webpack --mode development", 20 | "serve-dev": "rimraf build && wait-on build/bundle.js && electron .", 21 | "dev": "cross-env NODE_ENV=development npm-run-all --parallel bundle serve-dev", 22 | "dist": "cross-env NODE_ENV=production webpack --mode development && electron-builder" 23 | }, 24 | "author": "J. Renato Ramos González ", 25 | "repository": "pastahito/electron-vue-webpack", 26 | "license": "WTFPL", 27 | "dependencies": { 28 | "url": "^0.11.0", 29 | "vue": "^2.6.11", 30 | "agora-electron-sdk": "latest" 31 | }, 32 | "devDependencies": { 33 | "cross-env": "^6.0.3", 34 | "css-loader": "^0.25.0", 35 | "electron": "5.0.8", 36 | "electron-builder": "^21.2.0", 37 | "electron-reload": "^1.0.2", 38 | "file-loader": "^5.0.2", 39 | "npm-run-all": "^4.1.5", 40 | "vue-loader": "^14.2.4", 41 | "vue-template-compiler": "^2.6.11", 42 | "webpack": "^4.1.1", 43 | "webpack-cli": "^3.1.1", 44 | "rimraf": "^3.0.0", 45 | "wait-on": "^3.3.0" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Other/Agora-Electron-Vue/src/renderer/assets/agora.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-Vue/src/renderer/assets/agora.png -------------------------------------------------------------------------------- /Other/Agora-Electron-Vue/src/renderer/assets/electron.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-Vue/src/renderer/assets/electron.png -------------------------------------------------------------------------------- /Other/Agora-Electron-Vue/src/renderer/assets/vue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-Vue/src/renderer/assets/vue.png -------------------------------------------------------------------------------- /Other/Agora-Electron-Vue/src/renderer/assets/webpack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/Other/Agora-Electron-Vue/src/renderer/assets/webpack.png -------------------------------------------------------------------------------- /Other/Agora-Electron-Vue/src/renderer/components/Hello.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | 17 | 22 | -------------------------------------------------------------------------------- /Other/Agora-Electron-Vue/src/renderer/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | 4 | new Vue({ 5 | el: '#app', 6 | render: h => h(App) 7 | }) 8 | -------------------------------------------------------------------------------- /Other/Agora-Electron-Vue/webpack.config.js: -------------------------------------------------------------------------------- 1 | const isProduction = process.env["NODE_ENV"] === "production" 2 | 3 | 4 | module.exports = { 5 | externals: {"agora-electron-sdk": "commonjs2 agora-electron-sdk"}, 6 | watch: isProduction ? false : true, 7 | 8 | target: 'electron-renderer', 9 | 10 | entry: './src/renderer/index.js', 11 | 12 | output: { 13 | path: __dirname + '/build', 14 | publicPath: 'build/', 15 | filename: 'bundle.js' 16 | }, 17 | 18 | module: { 19 | rules: [ 20 | { 21 | test: /\.vue$/, 22 | loader: 'vue-loader' 23 | }, 24 | { 25 | test: /\.(png|jpg|gif|svg)$/, 26 | loader: 'file-loader', 27 | options: { 28 | esModule: false, 29 | query: { 30 | name: '[name].[ext]?[hash]' 31 | }, 32 | } 33 | } 34 | ] 35 | }, 36 | 37 | resolve: { 38 | alias: {vue: 'vue/dist/vue.js'} 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | jobs: 2 | - template: cicd/templates/premium-mac.yml 3 | parameters: 4 | displayName: 'AgoraElectronPremiumMac' 5 | workingDirectory: 'Agora-Electron-Premium' 6 | - template: cicd/templates/premium-win.yml 7 | parameters: 8 | displayName: 'AgoraElectronPremiumWin' 9 | workingDirectory: 'Agora-Electron-Premium' 10 | - template: cicd/templates/api-example-win.yml 11 | parameters: 12 | displayName: 'AgoraElectronAPIExampleWin' 13 | workingDirectory: 'Agora-Electron-API-Examples' 14 | - template: cicd/templates/api-example-mac.yml 15 | parameters: 16 | displayName: 'AgoraElectronAPIExampleMac' 17 | workingDirectory: 'Agora-Electron-API-Examples' -------------------------------------------------------------------------------- /cicd/templates/api-example-mac.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | displayName: '' 3 | workingDirectory: '' 4 | 5 | jobs: 6 | - job: ${{ parameters.displayName }} 7 | displayName: ${{ parameters.displayName }} 8 | 9 | pool: 10 | vmImage: 'macOS-latest' 11 | 12 | # variables: 13 | # - group: AgoraKeys 14 | 15 | steps: 16 | - script: cd ${{ parameters.workingDirectory }} && npm install 17 | 18 | - script: cd ${{ parameters.workingDirectory }} && npm run package:mac 19 | 20 | - script: cd ${{ parameters.workingDirectory }} && zip -r agora-electron-api-example-mac.zip out/Electron\ API\ Demos-darwin-x64 21 | 22 | - task: PublishBuildArtifacts@1 23 | inputs: 24 | PathtoPublish: ${{ parameters.workingDirectory }}/agora-electron-api-example-mac.zip 25 | ArtifactName: ${{ parameters.displayName }} -------------------------------------------------------------------------------- /cicd/templates/api-example-win.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | displayName: '' 3 | workingDirectory: '' 4 | 5 | jobs: 6 | - job: ${{ parameters.displayName }} 7 | displayName: ${{ parameters.displayName }} 8 | 9 | pool: 10 | vmImage: 'vs2017-win2016' 11 | 12 | # variables: 13 | # - group: AgoraKeys 14 | 15 | steps: 16 | - script: cd ${{ parameters.workingDirectory }} && npm install 17 | 18 | - script: cd ${{ parameters.workingDirectory }} && npm run package:win && ls -alt "out/Electron API Demos-win32-ia32" 19 | 20 | - script: cd ${{ parameters.workingDirectory }} && 7z a -r -tzip agora-electron-api-example-win.zip "out/Electron API Demos-win32-ia32" 21 | 22 | - task: PublishBuildArtifacts@1 23 | inputs: 24 | PathtoPublish: ${{ parameters.workingDirectory }}/agora-electron-api-example-win.zip 25 | ArtifactName: ${{ parameters.displayName }} -------------------------------------------------------------------------------- /cicd/templates/premium-mac.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | displayName: '' 3 | workingDirectory: '' 4 | 5 | jobs: 6 | - job: ${{ parameters.displayName }} 7 | displayName: ${{ parameters.displayName }} 8 | 9 | pool: 10 | vmImage: 'macOS-latest' 11 | 12 | # variables: 13 | # - group: AgoraKeys 14 | 15 | steps: 16 | - script: cd ${{ parameters.workingDirectory }} && npm install 17 | 18 | - script: cd ${{ parameters.workingDirectory }} && npm run dist 19 | 20 | - script: cd ${{ parameters.workingDirectory }} && zip -r agora-electron-premium-mac.zip dist/mac/electron-webpack-quick-start.app 21 | 22 | - task: PublishBuildArtifacts@1 23 | inputs: 24 | PathtoPublish: ${{ parameters.workingDirectory }}/agora-electron-premium-mac.zip 25 | ArtifactName: ${{ parameters.displayName }} -------------------------------------------------------------------------------- /cicd/templates/premium-win.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | displayName: '' 3 | workingDirectory: '' 4 | 5 | jobs: 6 | - job: ${{ parameters.displayName }} 7 | displayName: ${{ parameters.displayName }} 8 | 9 | pool: 10 | vmImage: 'vs2017-win2016' 11 | 12 | # variables: 13 | # - group: AgoraKeys 14 | 15 | steps: 16 | - script: cd ${{ parameters.workingDirectory }} && npm install 17 | 18 | - script: cd ${{ parameters.workingDirectory }} && npm run dist 19 | 20 | - script: cd ${{ parameters.workingDirectory }} && 7z a -r -tzip agora-electron-premium-win.zip dist/win-ia32-unpacked 21 | 22 | - task: PublishBuildArtifacts@1 23 | inputs: 24 | PathtoPublish: ${{ parameters.workingDirectory }}/agora-electron-premium-win.zip 25 | ArtifactName: ${{ parameters.displayName }} -------------------------------------------------------------------------------- /demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AgoraIO-Community/Agora-Electron-Quickstart/8d45adf4e79b64fc3eea8053e23c3ee7b6826c7b/demo.png -------------------------------------------------------------------------------- /packager-mac.sh: -------------------------------------------------------------------------------- 1 | chooseExampleType=$1 2 | outterZipName="electronDemo.zip" 3 | 4 | packOldPremium() { 5 | pushd Agora-Electron-Premium 6 | echo 当前工作路径:$(pwd) 7 | rm -rf node_modules 8 | yarn 9 | cp -P -R ../Electron-*/* node_modules/agora-electron-sdk/ 10 | yarn dist:zip 11 | 12 | pushd dist/mac 13 | zip -ry $(pwd)/../../../${outterZipName} agora-electron.app 14 | popd 15 | popd 16 | } 17 | 18 | packExample() { 19 | pushd $1 20 | echo 当前工作路径:$(pwd) 21 | rm -rf node_modules 22 | rm -rf src/node_modules 23 | yarn 24 | rm -rf src/node_modules/agora-electron-sdk/build 25 | cp -P -R ../Electron-*/* src/node_modules/agora-electron-sdk/ 26 | yarn package-mac 27 | 28 | pushd release/mac 29 | zip -ry $(pwd)/../../../${outterZipName} ElectronReact.app 30 | popd 31 | 32 | popd 33 | } 34 | 35 | 36 | 37 | case $chooseExampleType in 38 | 1) 39 | echo '打包: API-Example' 40 | packExample Agora-Electron-API-Example 41 | ;; 42 | 2) 43 | echo '打包: Iris' 44 | packExample Agora-Electron-API-Example-Iris 45 | ;; 46 | 3) 47 | echo '你选择了 3' 48 | packOldPremium 49 | ;; 50 | 4) 51 | echo '你选择了 4' 52 | ;; 53 | *) 54 | echo '你没有输入 1 到 4 之间的数字' 55 | ;; 56 | esac 57 | --------------------------------------------------------------------------------