├── .gitignore ├── .vscode ├── launch.json └── tasks.json ├── LICENSE ├── README.md ├── app.js ├── bower.json ├── doc ├── howtouse.md ├── image │ └── HowToUse │ │ ├── FileOper.jpg │ │ ├── ResAfterOpenTestShowAll.jpg │ │ └── ResOpenTest.jpg ├── init.md ├── redoundo.md └── uidetail.md ├── ext ├── ExtArmature.js ├── ExtButton.js ├── ExtCheckBox.js ├── ExtImage.js ├── ExtInput.js ├── ExtListView.js ├── ExtManager.js ├── ExtPageView.js ├── ExtRichText.js ├── ExtScale9.js ├── ExtScene.js ├── ExtScrollView.js ├── ExtSlider.js ├── ExtText.js ├── ExtTextAtlas.js ├── ExtWidget.js ├── NodeRichText.js └── init.html ├── html ├── about.html ├── grid.html └── grid.js ├── icon.png ├── index.html ├── js ├── MenuUtil.js ├── Themes │ ├── bigRed.css │ ├── bigRed.min.css │ ├── default.css │ ├── default.min.css │ ├── ideDark.css │ ├── ideDark.min.css │ ├── shadow.css │ └── shadow.min.css ├── UIUtil.js ├── cocosUtil.js ├── fabric.js ├── jsgrid-theme.min.css ├── jsgrid.min.css ├── jsgrid.min.js ├── keycode.js ├── layout.css ├── renderUndo.js ├── spectrum.css ├── spectrum.js ├── util.js ├── wcDocker.css ├── wcDocker.js ├── wcDocker.min.css └── wcDocker.min.js ├── jsconfig.json ├── layout.js ├── layout.json ├── main ├── console.js ├── ipc.js └── protocol.js ├── package-zip └── helloword.zip ├── package.json ├── packages ├── console │ └── panel │ │ ├── console.html │ │ ├── console.js │ │ ├── item.css │ │ ├── item.html │ │ └── item.js ├── controlpanel │ └── panel │ │ ├── controlpanel.html │ │ ├── controlpanel.js │ │ ├── item.css │ │ ├── item.html │ │ └── item.js ├── nodeorder │ └── panel │ │ ├── node-tree-item.css │ │ ├── node-tree-item.html │ │ ├── nodeorder.html │ │ ├── nodeorder.js │ │ ├── statusbox.css │ │ ├── statusbox.html │ │ └── statusbox.js ├── proppanel │ └── panel │ │ ├── proppanel.html │ │ └── proppanel.js ├── renderpanel │ └── panel │ │ ├── renderpanel.html │ │ ├── renderpanel.js │ │ ├── renderscene.html │ │ └── renderscene.js ├── resorder │ └── panel │ │ ├── resorder.html │ │ └── resorder.js └── td-tree-view │ └── widget │ ├── td-tree-item.css │ ├── td-tree-item.html │ ├── td-tree-view.css │ ├── td-tree-view.html │ └── td-tree-view.js ├── project-test ├── HelloWorld.png ├── ProgramConfig.json ├── js │ ├── ExtUISub1.js │ └── init.html ├── lang │ └── lang.txt ├── res │ ├── 1.png │ ├── UIFolder 0 │ │ └── 78144e18-ff7b-437e-a3fe-5495685dfc6b.json │ ├── default │ │ ├── AltasNum.png │ │ ├── ButtonDisable.png │ │ ├── ButtonNormal.png │ │ ├── ButtonSelect.png │ │ ├── CheckBoxDisable.png │ │ ├── CheckBoxNodeDisable.png │ │ ├── CheckBoxNodeNormal.png │ │ ├── CheckBoxNormal.png │ │ ├── CheckBoxSelect.png │ │ ├── Scale9.png │ │ ├── SliderBack.png │ │ ├── SliderBar.png │ │ ├── SliderNodeDisable.png │ │ ├── SliderNodeNormal.png │ │ ├── SliderNodeSelect.png │ │ ├── Sprite.png │ │ └── shurukuang.png │ ├── fla │ │ └── r10001.xml │ ├── grid.png │ └── images │ │ └── role │ │ └── 002 │ │ ├── a01.png │ │ ├── a02.png │ │ ├── a03.png │ │ ├── a04.png │ │ ├── a05.png │ │ ├── a06.png │ │ ├── a07.png │ │ ├── a08.png │ │ ├── a09.png │ │ ├── a10.png │ │ ├── a11.png │ │ ├── a12.png │ │ ├── a13.png │ │ ├── a14.png │ │ ├── a15.png │ │ ├── a16.png │ │ ├── a17.png │ │ ├── a18.png │ │ ├── a19.png │ │ ├── a20.png │ │ ├── a21.png │ │ ├── a22.png │ │ ├── a23.png │ │ ├── a24.png │ │ └── a25.png ├── ui │ ├── fdsafds.ui │ ├── sub1.ui │ └── test.ui └── uires │ ├── button.png │ ├── huodongdi.png │ ├── loginBg.jpg │ ├── lv_num.png │ └── xinxikuang.png ├── prop ├── data │ └── nodedata.js ├── index.html ├── prop-accordion.html ├── ve-widget │ ├── button-widget │ │ ├── button.css │ │ ├── button.html │ │ └── button.js │ ├── buttons-widget │ │ ├── buttons-item │ │ │ ├── buttons-item.css │ │ │ ├── buttons-item.html │ │ │ └── buttons-item.js │ │ ├── buttons.css │ │ ├── buttons.html │ │ └── buttons.js │ ├── checkbox-widget │ │ ├── checkbox.css │ │ ├── checkbox.html │ │ └── checkbox.js │ ├── input-widget │ │ ├── input.css │ │ ├── input.html │ │ └── input.js │ ├── label-widget │ │ ├── label.css │ │ ├── label.html │ │ └── label.js │ ├── select-widget │ │ ├── menu │ │ │ ├── menu.css │ │ │ ├── menu.html │ │ │ └── menu.js │ │ ├── option │ │ │ ├── option.css │ │ │ ├── option.html │ │ │ └── option.js │ │ ├── select.css │ │ ├── select.html │ │ └── select.js │ ├── slider-widget │ │ ├── slider.css │ │ ├── slider.html │ │ └── slider.js │ ├── textarea-widget │ │ ├── textarea.css │ │ ├── textarea.html │ │ └── textarea.js │ └── unit-input-widget │ │ ├── unit-input.css │ │ ├── unit-input.html │ │ └── unit-input.js └── ve │ ├── ve-asset-editor.html │ ├── ve-asset.html │ ├── ve-color.html │ ├── ve-field │ ├── ve-field.html │ └── ve-field.js │ ├── ve-preview │ ├── ve-image-editor.html │ ├── ve-image-editor.js │ ├── ve-image-preview.html │ └── ve-image-preview.js │ ├── ve-prop │ ├── ve-prop.css │ ├── ve-prop.html │ └── ve-prop.js │ ├── ve-relative.html │ ├── ve-size.html │ └── ve-vec2.html ├── render ├── console.js └── ipc.js ├── res ├── align-bottom.png ├── align-h-center.png ├── align-left.png ├── align-right.png ├── align-top.png ├── align-v-center.png ├── alipay.png ├── arrow_down.png ├── arrow_up.png ├── control │ ├── Armature.png │ ├── Atlas.png │ ├── Button.png │ ├── CheckBox.png │ ├── Input.png │ ├── Label.png │ ├── Layout.png │ ├── Node.png │ ├── Rich.png │ ├── Scale9.png │ ├── SliderBar.png │ ├── Sprite.png │ ├── listview.png │ ├── pageview.png │ └── scrollview.png ├── default │ ├── AltasNum.png │ ├── ButtonDisable.png │ ├── ButtonNormal.png │ ├── ButtonSelect.png │ ├── CheckBoxDisable.png │ ├── CheckBoxNodeDisable.png │ ├── CheckBoxNodeNormal.png │ ├── CheckBoxNormal.png │ ├── CheckBoxSelect.png │ ├── Scale9.png │ ├── SliderBack.png │ ├── SliderBar.png │ ├── SliderNodeDisable.png │ ├── SliderNodeNormal.png │ ├── SliderNodeSelect.png │ ├── Sprite.png │ └── shurukuang.png ├── grid.png ├── grid1.png ├── grid2.png └── 居中.png ├── screenshot ├── 2dx-screen.jpg └── screenprint.jpg └── third ├── ace └── src │ ├── ace.js │ ├── ext-beautify.js │ ├── ext-chromevox.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-old_ie.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-vim.js │ ├── mode-abap.js │ ├── mode-abc.js │ ├── mode-actionscript.js │ ├── mode-ada.js │ ├── mode-apache_conf.js │ ├── mode-applescript.js │ ├── mode-asciidoc.js │ ├── mode-assembly_x86.js │ ├── mode-autohotkey.js │ ├── mode-batchfile.js │ ├── mode-c9search.js │ ├── mode-c_cpp.js │ ├── mode-cirru.js │ ├── mode-clojure.js │ ├── mode-cobol.js │ ├── mode-coffee.js │ ├── mode-coldfusion.js │ ├── mode-csharp.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-eiffel.js │ ├── mode-ejs.js │ ├── mode-elixir.js │ ├── mode-elm.js │ ├── mode-erlang.js │ ├── mode-forth.js │ ├── mode-fortran.js │ ├── mode-ftl.js │ ├── mode-gcode.js │ ├── mode-gherkin.js │ ├── mode-gitignore.js │ ├── mode-glsl.js │ ├── mode-gobstones.js │ ├── mode-golang.js │ ├── mode-groovy.js │ ├── mode-haml.js │ ├── mode-handlebars.js │ ├── mode-haskell.js │ ├── mode-haskell_cabal.js │ ├── mode-haxe.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-jsx.js │ ├── mode-julia.js │ ├── mode-kotlin.js │ ├── mode-latex.js │ ├── mode-lean.js │ ├── mode-less.js │ ├── mode-liquid.js │ ├── mode-lisp.js │ ├── mode-live_script.js │ ├── mode-livescript.js │ ├── mode-logiql.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-mips_assembler.js │ ├── mode-mipsassembler.js │ ├── mode-mushcode.js │ ├── mode-mysql.js │ ├── mode-nix.js │ ├── mode-nsis.js │ ├── mode-objectivec.js │ ├── mode-ocaml.js │ ├── mode-pascal.js │ ├── mode-perl.js │ ├── mode-pgsql.js │ ├── mode-php.js │ ├── mode-plain_text.js │ ├── mode-powershell.js │ ├── mode-praat.js │ ├── mode-prolog.js │ ├── mode-properties.js │ ├── mode-protobuf.js │ ├── mode-python.js │ ├── mode-r.js │ ├── mode-razor.js │ ├── mode-rdoc.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-smarty.js │ ├── mode-snippets.js │ ├── mode-soy_template.js │ ├── mode-space.js │ ├── mode-sql.js │ ├── mode-sqlserver.js │ ├── mode-stylus.js │ ├── mode-svg.js │ ├── mode-swift.js │ ├── mode-swig.js │ ├── mode-tcl.js │ ├── mode-tex.js │ ├── mode-text.js │ ├── mode-textile.js │ ├── mode-toml.js │ ├── mode-tsx.js │ ├── mode-twig.js │ ├── mode-typescript.js │ ├── mode-vala.js │ ├── mode-vbscript.js │ ├── mode-velocity.js │ ├── mode-verilog.js │ ├── mode-vhdl.js │ ├── mode-wollok.js │ ├── mode-xml.js │ ├── mode-xquery.js │ ├── mode-yaml.js │ ├── snippets │ ├── abap.js │ ├── abc.js │ ├── actionscript.js │ ├── ada.js │ ├── apache_conf.js │ ├── applescript.js │ ├── asciidoc.js │ ├── assembly_x86.js │ ├── autohotkey.js │ ├── batchfile.js │ ├── c9search.js │ ├── c_cpp.js │ ├── cirru.js │ ├── clojure.js │ ├── cobol.js │ ├── coffee.js │ ├── coldfusion.js │ ├── csharp.js │ ├── css.js │ ├── curly.js │ ├── d.js │ ├── dart.js │ ├── diff.js │ ├── django.js │ ├── dockerfile.js │ ├── dot.js │ ├── drools.js │ ├── eiffel.js │ ├── ejs.js │ ├── elixir.js │ ├── elm.js │ ├── erlang.js │ ├── forth.js │ ├── fortran.js │ ├── ftl.js │ ├── gcode.js │ ├── gherkin.js │ ├── gitignore.js │ ├── glsl.js │ ├── gobstones.js │ ├── golang.js │ ├── groovy.js │ ├── haml.js │ ├── handlebars.js │ ├── haskell.js │ ├── haskell_cabal.js │ ├── haxe.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 │ ├── jsx.js │ ├── julia.js │ ├── kotlin.js │ ├── latex.js │ ├── lean.js │ ├── less.js │ ├── liquid.js │ ├── lisp.js │ ├── live_script.js │ ├── livescript.js │ ├── logiql.js │ ├── lsl.js │ ├── lua.js │ ├── luapage.js │ ├── lucene.js │ ├── makefile.js │ ├── markdown.js │ ├── mask.js │ ├── matlab.js │ ├── maze.js │ ├── mel.js │ ├── mips_assembler.js │ ├── mipsassembler.js │ ├── mushcode.js │ ├── mysql.js │ ├── nix.js │ ├── nsis.js │ ├── objectivec.js │ ├── ocaml.js │ ├── pascal.js │ ├── perl.js │ ├── pgsql.js │ ├── php.js │ ├── plain_text.js │ ├── powershell.js │ ├── praat.js │ ├── prolog.js │ ├── properties.js │ ├── protobuf.js │ ├── python.js │ ├── r.js │ ├── razor.js │ ├── rdoc.js │ ├── rhtml.js │ ├── rst.js │ ├── ruby.js │ ├── rust.js │ ├── sass.js │ ├── scad.js │ ├── scala.js │ ├── scheme.js │ ├── scss.js │ ├── sh.js │ ├── sjs.js │ ├── smarty.js │ ├── snippets.js │ ├── soy_template.js │ ├── space.js │ ├── sql.js │ ├── sqlserver.js │ ├── stylus.js │ ├── svg.js │ ├── swift.js │ ├── swig.js │ ├── tcl.js │ ├── tex.js │ ├── text.js │ ├── textile.js │ ├── toml.js │ ├── tsx.js │ ├── twig.js │ ├── typescript.js │ ├── vala.js │ ├── vbscript.js │ ├── velocity.js │ ├── verilog.js │ ├── vhdl.js │ ├── wollok.js │ ├── xml.js │ ├── xquery.js │ └── yaml.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-dreamweaver.js │ ├── theme-eclipse.js │ ├── theme-github.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 └── html5 └── cocos2d-js.js /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /bower_components 3 | /npm-debug.log 4 | /ProgramConfig.json 5 | /CahceConfig.json 6 | /save.dat 7 | /Start.bat 8 | /debug.log 9 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "启动", 6 | "type": "node", 7 | "request": "launch", 8 | "program": "${workspaceRoot}/app.js", 9 | "stopOnEntry": false, 10 | "args": [], 11 | "cwd": "${workspaceRoot}", 12 | "preLaunchTask": null, 13 | "runtimeExecutable": "${workspaceRoot}/node_modules/electron-prebuilt/dist/electron.exe", 14 | "runtimeArgs": [ 15 | ".", 16 | "--nolazy" 17 | ], 18 | "env": { 19 | "NODE_ENV": "development" 20 | }, 21 | "externalConsole": false, 22 | "sourceMaps": false, 23 | "outDir": null 24 | }, 25 | { 26 | "name": "附加", 27 | "type": "node", 28 | "request": "attach", 29 | "port": 5858, 30 | "address": "localhost", 31 | "restart": false, 32 | "sourceMaps": false, 33 | "outDir": null, 34 | "localRoot": "${workspaceRoot}", 35 | "remoteRoot": null 36 | } 37 | ] 38 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the tasks.json format 4 | "version": "0.1.0", 5 | "command": "electron", 6 | "isShellCommand": true, 7 | "showOutput": "always", 8 | "suppressTaskName": true, 9 | "tasks": [ 10 | { 11 | "taskName": "install", 12 | "args": ["install"] 13 | }, 14 | { 15 | "taskName": "update", 16 | "args": ["update"] 17 | }, 18 | { 19 | "taskName": "test", 20 | "args": ["run", "test"] 21 | }, 22 | { 23 | "taskName": "build", 24 | "args": ["."] 25 | }, 26 | { 27 | "taskName": "debug", 28 | "args": [".", "--debug-brk=5858"] 29 | } 30 | ] 31 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | © 2015-2016 tickbh (tickdream125@hotmail.com) 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #VisualUIEditor 2 | 3 | An UIEditor for Game, base on electron. 4 | 5 | ![](./screenshot/screenprint.jpg) 6 | 7 | #install 8 | > install node.js first 9 | 10 | > npm install -g electron-prebuilt@1.3.4 11 | 12 | > npm install -g bower 13 | 14 | > bower install 15 | 16 | > npm install 17 | 18 | #run 19 | open shell in project root and run 20 | > electron . 21 | 22 | #start with project 23 | 菜单->文件->打开项目(选择目录底下的project-test)即可进行测试 24 | 25 | #基于项目 26 | 基本electron跨平台,wcDocker的dock组件,及cocos-html5的渲染层 27 | 28 | 29 | #已实现的功能 30 | ------------------------ 31 | * 控件拖拽使用 32 | * 控件的快速移动,缩放,属性更改 33 | * 图片的快速预览 34 | * 坐标点,快速的定位当前鼠标对应的坐标 35 | * 画布大小的快速调整,画布快速的缩放 36 | * 布局的源码查看更改,更适合程序员使用 37 | * 强大的撤销反撤销功能,让您更无需害怕误操作 38 | * 资源布局的嵌套使用 39 | * 页签功能,让您可以同时打开多个UI文件 40 | * 多语言方案支持,助力您的全球游戏 41 | 42 | #布局相关 43 | * 节点布局,管理游戏布局的一些节点相关的面板,可支持快速复制及上下移动 44 | * 资源布局,显示您项目中的资源文件,让您可以快速的创建新的UI文件相关 45 | * 控制布局,这里显示您常用的一些节点,让您可以快速的拖动节点进行创建 46 | * 控制台布局,这里显示一些编辑器的信息,让您知道编辑器当前的状态 47 | * 属性布局,您可以选中某个节点,这里将显示节点的具体属性,您可以通过它快速的修改节点属性 48 | * 渲染布局,这里为编辑器的核心布局,这里每个页签下对应着一个Scene,这里将显示您的整体展示图,这也是您在游戏中将显示的效果图,当然做为程序猿的我们也可以快速的通常源码模式快修的修改我们的布局,然后再切换成设计模式预览效果 49 | 50 | #文档信息 51 | [如何使用](./doc/howtouse.md "如何使用") 52 | 53 | [UI文件详解](./doc/uidetail.md "UI文件详解") 54 | 55 | [撤消反撤消](./doc/redoundo.md "撤消反撤消实现细节") 56 | 57 | #Runtime 58 | 支持cocos2dx的应用(当前支持Lua及CPP) 59 | [cocos2dx runtime](https://github.com/tickbh/VisualUIEditor_2dx_runtime "cocos2dx runtime") 60 | 61 | #其它信息 62 | **VisualUIEditor开发QQ群欢迎您的加入: 453224679** 63 | 64 | # Copyright & License 65 | 66 | © 2015-2016 tickbh (tickdream125@hotmail.com) - Released under the [MIT license](LICENSE). -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "visual ui editor", 3 | "private": true, 4 | "ignore": [ 5 | "**/.*", 6 | "3rd", 7 | "bower_components", 8 | "ext", 9 | "node_modules", 10 | "test" 11 | ], 12 | "dependencies": { 13 | "fontawesome": "4.4.0", 14 | "iron-autogrow-textarea": "PolymerElements/iron-autogrow-textarea#^1.0.0", 15 | "iron-behaviors": "PolymerElements/iron-behaviors#^1.0.0", 16 | "iron-flex-layout": "PolymerElements/iron-flex-layout#^1.0.0", 17 | "iron-icon": "PolymerElements/iron-icon#^1.0.0", 18 | "iron-icons": "PolymerElements/iron-icons#^1.0.0", 19 | "iron-input": "PolymerElements/iron-input#^1.0.0", 20 | "iron-selector": "PolymerElements/iron-selector#^1.0.0", 21 | "pace": "1.0.2", 22 | "polymer": "Polymer/polymer#^1.5.0" 23 | }, 24 | "devDependencies": {} 25 | } 26 | -------------------------------------------------------------------------------- /doc/howtouse.md: -------------------------------------------------------------------------------- 1 | #VisualUIEditor项目讲解之如何使用初始篇 2 | ------------------------ 3 | #如何得到它 4 | 1、 二进制方式 5 | > [下载地址Github](https://github.com/tickbh/VisualUIEditor/releases "Github release")直接下载对应的平台进行下,解压,打开对应的程序 6 | 7 | 2、 源码下载 8 | > [Github连接](https://github.com/tickbh/VisualUIEditor "Github Code")进行克隆编译运行,可参考README.md进行编译运行 9 | 10 | #如何使用它 11 | 1、 项目准备 12 | 13 | > 非源码方式: 可到这里进行下载[测试项目的地址目录](https://github.com/tickbh/VisualUIEditor/tree/master/project-test "Github Test Project Folder") 14 | 15 | > 源码方式: 测试项目的地址为根目录底下的**project-test**目录 16 | 17 | 2、 初次打开,这时没有默认的,这时候需要我们手动打开项目 18 | 19 | > 操作菜单 **文件**->**打开项目**,这时候将弹出一个选择目录的窗口,选择刚刚的项目目录,进行打开,如图所示 20 | ![](https://raw.githubusercontent.com/tickbh/VisualUIEditor/master/doc/image/HowToUse/FileOper.jpg) 21 | 22 | > 打开完成后,我们可以资源操作栏里面,选择**UI**->**test.ui**,这时候我们就可以打开我们的UI布局,操作示意图如下: 23 | ![](https://raw.githubusercontent.com/tickbh/VisualUIEditor/master/doc/image/HowToUse/ResOpenTest.jpg) 24 | 25 | > UI界面的预览图,如下: 26 | ![](https://raw.githubusercontent.com/tickbh/VisualUIEditor/master/doc/image/HowToUse/ResAfterOpenTestShowAll.jpg) 27 | 28 | 3、 此时,我们就可以开始使用UI编辑器的功能,来辅助我们的游戏进行开发,[已实现的功能](https://github.com/tickbh/VisualUIEditor/wiki "已实现的功能") 29 | 30 | #ui文件说明 31 | 此编辑器的ui文件存储以Json格式存储,编辑器和代码均以Json解析的方式还原出UI效果,保存UI的编辑效果一致。 32 | 33 | 此编辑器的Runtime,[地址](https://github.com/tickbh/VisualUIEditor_2dx_runtime "Runtime地址") 34 | 35 | 此编辑器2dx-lua的Demo,[地址](https://github.com/tickbh/VisualUIEditor_2dx_demo_lua "Demo地址") 36 | 37 | 此编辑器2dx-cpp的Demo,[地址](https://github.com/tickbh/VisualUIEditor_2dx_demo "Demo地址") 38 | 39 | #导出说明 40 | 由于编辑器所编辑的UI文件,没有冗余信息,暂时无需导出功能的选项,即源文件为目标文件 41 | 42 | 43 | #其它信息 44 | **VisualUIEditor开发QQ群欢迎您的加入: 453224679** 45 | -------------------------------------------------------------------------------- /doc/image/HowToUse/FileOper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/doc/image/HowToUse/FileOper.jpg -------------------------------------------------------------------------------- /doc/image/HowToUse/ResAfterOpenTestShowAll.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/doc/image/HowToUse/ResAfterOpenTestShowAll.jpg -------------------------------------------------------------------------------- /doc/image/HowToUse/ResOpenTest.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/doc/image/HowToUse/ResOpenTest.jpg -------------------------------------------------------------------------------- /doc/init.md: -------------------------------------------------------------------------------- 1 | #VisualUIEditor项目讲解之项目介绍 2 | ------------------------ 3 | VisualUIEditor项目是一款开源游戏UI编辑器,它基于electron跨平台,wcDocker的dock组件,及cocos-html5的渲染层 4 | 5 | #跨平台 6 | ------------------------ 7 | 支持Windows,Linux,MacOs等相关平台 8 | 9 | #已实现的功能 10 | ------------------------ 11 | * 控件拖拽使用 12 | * 控件的快速移动,缩放,属性更改 13 | * 图片的快速预览 14 | * 坐标点,快速的定位当前鼠标对应的坐标 15 | * 画布大小的快速调整,画布快速的缩放 16 | * 布局的源码查看更改,更适合程序员使用 17 | * 强大的撤销反撤销功能,让您更无需害怕误操作 18 | * 资源布局的嵌套使用 19 | * 页签功能,让您可以同时打开多个UI文件 20 | * 多语言方案支持,助力您的全球游戏 21 | 22 | #布局相关 23 | * 节点布局,管理游戏布局的一些节点相关的面板,可支持快速复制及上下移动 24 | * 资源布局,显示您项目中的资源文件,让您可以快速的创建新的UI文件相关 25 | * 控制布局,这里显示您常用的一些节点,让您可以快速的拖动节点进行创建 26 | * 控制台布局,这里显示一些编辑器的信息,让您知道编辑器当前的状态 27 | * 属性布局,您可以选中某个节点,这里将显示节点的具体属性,您可以通过它快速的修改节点属性 28 | * 渲染布局,这里为编辑器的核心布局,这里每个页签下对应着一个Scene,这里将显示您的整体展示图,这也是您在游戏中将显示的效果图,当然做为程序猿的我们也可以快速的通常源码模式快修的修改我们的布局,然后再切换成设计模式预览效果 29 | 30 | #Runtime相关 31 | ---------------------- 32 | 支持cocos2dx的应用(当前支持Lua及CPP) 33 | [cocos2dx runtime](https://github.com/tickbh/VisualUIEditor_2dx_runtime "cocos2dx runtime") 34 | 35 | #项目地址 36 | ---------------------- 37 | [GitHub](https://github.com/tickbh/VisualUIEditor "VisualUIEditor") 38 | 39 | #其它信息 40 | ---------------------- 41 | **VisualUIEditor开发QQ群欢迎您的加入: 453224679** -------------------------------------------------------------------------------- /doc/uidetail.md: -------------------------------------------------------------------------------- 1 | #VisualUIEditor项目讲解之UI文件说明 2 | ui文件为以ui文件结尾的文件,文件的内容以Json数据存储的布局信息文件。 3 | 4 | #节点的基本数据结构 5 | ```Json 6 | { 7 | "type": "Scene", 8 | "children": [] 9 | } 10 | ``` 11 | 结点的最小单元需定义类型type,若该结点有子结点,那children里则依次顺序存储子结点的信息。 12 | 13 | 而类型为UIButton(按钮),UICheckBox(复选框),UIImage(图片),UIInput(输入框),UIScale9(九宫),UISlider(滑动条),UIText(文本输入),UITextAtlas(图片文本)或者类型字符串以SubPath:(子UI)开头的节点,都属于基本节点,在UI编辑器里,这些节点,不存在任何的子结点。 14 | 15 | #编辑器自带的属性编辑 16 | 编辑器自带的属性编辑分别位于[ve](https://github.com/tickbh/VisualUIEditor/tree/master/prop/ve "ve")和[ve-widget](https://github.com/tickbh/VisualUIEditor/tree/master/prop/ve "ve-widget")目录下,包含有以下格式编辑 17 | > 基础控件 18 | * **ve-input** 基础的字符串输入控件 19 | * **ve-checkbox** 复选框的选择控件 20 | * **ve-unit-input** 数字的输入控件 21 | * **ve-textarea** 多行文本的输入控件 22 | * **ve-slider** 数字滑动控件 23 | 24 | > 组合控件 25 | * **ve-vec2** 包含x和y信息的控件,如位置,锚点,缩放等 26 | * **ve-size** 包含width和height的信息控件 27 | * **ve-asset** 资源属性的节点,用于资源文件的拖动设置属性 28 | * **ve-color** 颜色信息的节点,用于快速设置颜色设置,支持RGBA 29 | * **ve-relative** 用于相对位置信息的设置,用来保证布局由于动态放大缩小而改变的信息设置,如left,top,right,bottom,center hor, center ver 30 | 31 | 这些是常用的属性编辑节点 32 | 33 | 34 | #节点的基本属性 35 | 下面列举节点共用的基本属性 36 | * **x** 数字,节点位置的横坐标, 大小为从左往右增大 37 | * **y** 数字,节点位置的纵坐标, 大小为从下往上增大,为opengl系坐标 38 | * **left** 数字,节点位置相对父节点的左偏移,若该值存在忽略信息x 39 | * **right** 数字,节点位置相对父节点的右偏移,若该值存在忽略信息x 40 | * **horizontal** 数字,节点位置相对父节点的水平居中的偏移,负值则表示中偏左,正则表示中偏右,若该值存在忽略信息x,left,right,horizontal三者只会同时存在一个 41 | * **top** 数字,节点位置相对父节点的上偏移,若该值存在忽略信息y 42 | * **bottom** 数字,节点位置相对父节点的下偏移,若该值存在忽略信息y 43 | * **vertical** 数字,节点位置相对父节点的竖直居中的偏移,负值则表示中偏下,正则表示中偏上,若该值存在忽略信息y,top,bottom,vertical三者只会同时存在一个 44 | * **width** 字符串,节点的宽度信息,若为%号结尾,则表示该宽度占父节点的大小的百分比,否则则为固定值 45 | * **height** 字符串,节点的高度信息,若为%号结尾,则表示该高度占父节点的大小的百分比,否则则为固定值 46 | * **type** 字符串,节点的类型信息,若该结点以SubPath:开头,则表示该结点复用别的组件 47 | * **id** 字符串,节点的名字信息,同一个父节点,不允许两个id名字一样的节点 48 | * **color** 颜色,节点的颜色值 49 | * **scaleX** 数字,节点的横向缩放值,该值默认为1 50 | * **scaleY** 数字,节点的纵向缩放值,该值默认为1 51 | * **rotation** 数字,节点的旋转角度,该值默认为0 52 | * **opacity** 数字,节点的不透明度,为0-255间的数字,该值默认为255,表示该节点不透明 53 | * **anchorX** 数字,节点的横向锚点,该值默认为0.5 54 | * **anchorY** 数字,节点的纵向锚点,该值默认为0.5 55 | * **touchEnabled** 布尔,节点的是否可点击 56 | * **touchListener** 字符串,节点的监听函数信息 57 | * **visible** 布尔,节点是否可见 58 | 59 | 每个子节点有各自的属性,通过设置各个属性值改变节点的状态信息 60 | 61 | #其它信息 62 | **VisualUIEditor开发QQ群欢迎您的加入: 453224679** 63 | -------------------------------------------------------------------------------- /ext/ExtImage.js: -------------------------------------------------------------------------------- 1 | let ExtImage = {} 2 | 3 | ExtImage.name = 'UIImage' 4 | ExtImage.icon = 'app://res/control/Sprite.png' 5 | ExtImage.tag = 1 6 | ExtImage.defRes = 'res/default/Sprite.png' 7 | 8 | ExtImage.GenEmptyNode = function() { 9 | let node = new ccui.ImageView(getFullPathForName(ExtImage.defRes)) 10 | node._spriteFrame = ExtImage.defRes 11 | node._className = ExtImage.name 12 | return node 13 | } 14 | 15 | ExtImage.GenNodeByData = function(data, parent) { 16 | let node = new ccui.ImageView() 17 | node._className = ExtImage.name 18 | return node 19 | } 20 | 21 | ExtImage.SetSpriteFrame = function(node, spriteFrame) { 22 | if (spriteFrame && getFullPathForName(spriteFrame)) { 23 | let fullpath = getFullPathForName(spriteFrame) 24 | cc.textureCache.addImage(fullpath, function() { 25 | let anchor = node.getAnchorPoint() 26 | node.loadTexture(fullpath) 27 | node.setAnchorPoint(anchor) 28 | node._spriteFrame = spriteFrame 29 | }) 30 | } 31 | } 32 | 33 | ExtImage.SetNodePropByData = function(node, data, parent) { 34 | ExtImage.SetSpriteFrame(node, data.spriteFrame) 35 | } 36 | 37 | ExtImage.ExportNodeData = function(node, data) { 38 | node._spriteFrame && (data['spriteFrame'] = node._spriteFrame) 39 | } 40 | 41 | ExtImage.SetPropChange = function(control, path, value) { 42 | SetDefaultPropChange(control, path, value) 43 | } 44 | 45 | ExtImage.GetLoadImages = function(data) { 46 | return [data['spriteFrame']] 47 | } 48 | 49 | ExtImage.NodifyPropChange = function(control) { 50 | SetNodifyPropChange(control) 51 | } 52 | 53 | function ImageData(node) { 54 | this._node = node 55 | } 56 | 57 | ImageData.prototype = { 58 | __displayName__: 'Image', 59 | __type__: 'ccui.ImageView', 60 | 61 | get spriteFrame() { 62 | return { 63 | path: 'spriteFrame', 64 | type: 'asset', 65 | name: 'spriteFrame', 66 | attrs: {}, 67 | value: this._node._spriteFrame 68 | } 69 | }, 70 | 71 | get __props__() { 72 | return [ 73 | this.spriteFrame 74 | ] 75 | } 76 | } 77 | 78 | ExtImage.ImageData = ImageData 79 | 80 | ExtImage.PropComps = function(node) { 81 | let datas = [new WidgetData(node)] 82 | datas.push(new TouchData(node)) 83 | datas.push(new ImageData(node)) 84 | return datas 85 | } 86 | 87 | module.exports = ExtImage 88 | 89 | RegisterExtNodeControl(ExtImage.name, ExtImage) -------------------------------------------------------------------------------- /ext/ExtManager.js: -------------------------------------------------------------------------------- 1 | let allExtNodeControls = {} 2 | 3 | function RegisterExtNodeControl(name, nodeControl) { 4 | allExtNodeControls[name] = nodeControl 5 | // TODO check 6 | Ipc.sendToAll('ui:has_extnodecontrol_add', name) 7 | } 8 | 9 | function GetExtNodeControl(name) { 10 | return allExtNodeControls[name] 11 | } 12 | 13 | function GetExtllNodeControls() { 14 | return allExtNodeControls 15 | } 16 | 17 | function SetSpriteFrame(node, path, value, defRes, fn) { 18 | let url = getFullPathForName(value) 19 | let exist = checkTextureExist(url) 20 | value = exist ? value : defRes 21 | let newPath = '_' + path 22 | node[newPath] = value 23 | fn.call(node, getFullPathForName(value)) 24 | } -------------------------------------------------------------------------------- /ext/ExtPageView.js: -------------------------------------------------------------------------------- 1 | let ExtPageView = {} 2 | 3 | ExtPageView.name = 'UIPageView' 4 | ExtPageView.icon = 'app://res/control/pageview.png' 5 | ExtPageView.tag = 9 6 | 7 | ExtPageView.GenEmptyNode = function() { 8 | node = new ccui.PageView() 9 | node.setContentSize(cc.size(200, 100)) 10 | node._className = ExtPageView.name 11 | return node 12 | } 13 | 14 | ExtPageView.GenNodeByData = function(data, parent) { 15 | node = new ccui.PageView() 16 | node.setContentSize(cc.size(data.width || 200, data.height || 1000)) 17 | ExtPageView.SetNodePropByData(node, data, parent) 18 | node._className = ExtPageView.name 19 | return node 20 | } 21 | 22 | ExtPageView.SetNodePropByData = function(node, data, parent) { 23 | ExtListView.SetNodePropByData(node, data, parent) 24 | } 25 | 26 | ExtPageView.ExportNodeData = function(node, data) { 27 | ExtListView.ExportNodeData(node, data) 28 | } 29 | 30 | ExtPageView.SetPropChange = function(control, path, value) { 31 | SetDefaultPropChange(control, path, value) 32 | } 33 | 34 | ExtPageView.NodifyPropChange = function(control) { 35 | SetNodifyPropChange(control) 36 | } 37 | 38 | ExtPageView.ExportData = function(node) { 39 | this._node = node 40 | } 41 | 42 | ExtPageView.ExportData.prototype = { 43 | __displayName__: 'PageView', 44 | 45 | get __props__() { 46 | return [] 47 | } 48 | } 49 | 50 | ExtPageView.PropComps = function(node) { 51 | let datas = [new WidgetData(node)] 52 | datas.push(new TouchData(node)) 53 | datas.push(new ExtPageView.ExportData(node)) 54 | datas.push(new ExtListView.ExportData(node)) 55 | datas.push(new ExtScrollView.ExportData(node)) 56 | return datas 57 | } 58 | 59 | module.exports = ExtPageView 60 | 61 | RegisterExtNodeControl(ExtPageView.name, ExtPageView) -------------------------------------------------------------------------------- /ext/ExtScene.js: -------------------------------------------------------------------------------- 1 | let ExtScene = {} 2 | 3 | ExtScene.UIScale9UIScene 4 | ExtScene.icon = 'app://res/control/Node.png' 5 | ExtScene.name = "Scene" 6 | ExtScene.tag = -1 7 | 8 | ExtScene.GenEmptyNode = function() { 9 | let node = new cc.Scene() 10 | node.setContentSize(cc.size(1136, 640)) 11 | node._className = ExtScene.name 12 | return node 13 | } 14 | 15 | ExtScene.GenNodeByData = function(data, parent) { 16 | return this.GenEmptyNode() 17 | } 18 | 19 | ExtScene.SetNodePropByData = function(node, data, parent) { 20 | (data['autoLayout']) && (node.autoLayout = data['autoLayout']) 21 | } 22 | 23 | ExtScene.ExportNodeData = function(node, data) { 24 | data['autoLayout'] = node.autoLayout 25 | } 26 | 27 | ExtScene.SetPropChange = function(control, path, value) { 28 | control._node[path] = value 29 | } 30 | 31 | ExtScene.ExportData = function(node) { 32 | this._node = node 33 | } 34 | 35 | ExtScene.ExportData.prototype = { 36 | __displayName__: 'Scene', 37 | __type__: 'Scene', 38 | get isAutoLayout() { 39 | return { 40 | path: 'autoLayout', 41 | type: 'checkbox', 42 | name: 'autoLayout', 43 | attrs: {}, 44 | value: this._node.autoLayout 45 | } 46 | }, 47 | 48 | get __props__() { 49 | return [this.isAutoLayout] 50 | } 51 | } 52 | 53 | ExtScene.PropComps = function(node) { 54 | let datas = [new WidgetData(node)] 55 | datas.push(new ExtScene.ExportData(node)) 56 | return datas 57 | } 58 | 59 | module.exports = ExtScene 60 | 61 | RegisterExtNodeControl(ExtScene.name, ExtScene) -------------------------------------------------------------------------------- /ext/ExtWidget.js: -------------------------------------------------------------------------------- 1 | let ExtWidget = {} 2 | 3 | ExtWidget.name = 'UIWidget' 4 | ExtWidget.icon = 'app://res/control/Node.png' 5 | ExtWidget.tag = 0 6 | 7 | ExtWidget.GenEmptyNode = function() { 8 | // let node = new ccui.Widget() 9 | let node = new cc.Node() 10 | node.setContentSize(cc.size(40, 40)) 11 | node.anchorX = 0.5 12 | node.anchorY = 0.5 13 | node._className = ExtWidget.name 14 | return node 15 | } 16 | 17 | ExtWidget.GenNodeByData = function(data, parent) { 18 | return this.GenEmptyNode() 19 | } 20 | 21 | ExtWidget.SetNodePropByData = function(node, data, parent) {} 22 | 23 | ExtWidget.ExportNodeData = function(node, data) { 24 | data['anchorX'] = node.anchorX 25 | data['anchorY'] = node.anchorY 26 | } 27 | 28 | ExtWidget.SetPropChange = function(control, path, value) {} 29 | 30 | ExtWidget.ExportData = function(node) { 31 | this._node = node 32 | } 33 | 34 | ExtWidget.ExportData.prototype = { 35 | __displayName__: 'UIWidget', 36 | __type__: 'ccui.UIWidget', 37 | 38 | get __props__() { 39 | return [] 40 | } 41 | } 42 | 43 | ExtWidget.PropComps = function(node) { 44 | let datas = [new WidgetData(node)] 45 | datas.push(new TouchData(node)) 46 | return datas 47 | } 48 | 49 | module.exports = ExtWidget 50 | 51 | RegisterExtNodeControl(ExtWidget.name, ExtWidget) -------------------------------------------------------------------------------- /ext/init.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /html/about.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /html/grid.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 多语言编辑 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/icon.png -------------------------------------------------------------------------------- /js/jsgrid.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * jsGrid v1.5.2 (http://js-grid.com) 3 | * (c) 2016 Artem Tabalin 4 | * Licensed under MIT (https://github.com/tabalinas/jsgrid/blob/master/LICENSE) 5 | */ 6 | 7 | .jsgrid{position:relative;overflow:hidden;font-size:1em}.jsgrid,.jsgrid *,.jsgrid :after,.jsgrid :before{box-sizing:border-box}.jsgrid input,.jsgrid select,.jsgrid textarea{font-size:1em}.jsgrid-grid-header{overflow-x:hidden;overflow-y:scroll;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.jsgrid-grid-body{overflow-x:auto;overflow-y:scroll;-webkit-overflow-scrolling:touch}.jsgrid-table{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0}.jsgrid-cell{padding:.5em}.jsgrid-header-cell,.jsgrid-сell{box-sizing:border-box}.jsgrid-align-left{text-align:left}.jsgrid-align-center,.jsgrid-align-center input,.jsgrid-align-center select,.jsgrid-align-center textarea{text-align:center}.jsgrid-align-right,.jsgrid-align-right input,.jsgrid-align-right select,.jsgrid-align-right textarea{text-align:right}.jsgrid-header-cell{padding:.5em}.jsgrid-edit-row input,.jsgrid-edit-row select,.jsgrid-edit-row textarea,.jsgrid-filter-row input,.jsgrid-filter-row select,.jsgrid-filter-row textarea,.jsgrid-insert-row input,.jsgrid-insert-row select,.jsgrid-insert-row textarea{width:100%;padding:.3em .5em}.jsgrid-edit-row input[type=checkbox],.jsgrid-filter-row input[type=checkbox],.jsgrid-insert-row input[type=checkbox]{width:auto}.jsgrid-selected-row .jsgrid-cell{cursor:pointer}.jsgrid-nodata-row .jsgrid-cell{padding:.5em 0;text-align:center}.jsgrid-header-sort{cursor:pointer}.jsgrid-pager{padding:.5em 0}.jsgrid-pager-nav-button{padding:.2em .6em}.jsgrid-pager-nav-inactive-button{display:none;pointer-events:none}.jsgrid-pager-page{padding:.2em .6em} -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // 请访问 https://go.microsoft.com/fwlink/?LinkId=759670 3 | // 参阅有关 jsconfig.json 格式的文档 4 | "compilerOptions": { 5 | "target": "es6", 6 | "module": "commonjs", 7 | "allowSyntheticDefaultImports": true 8 | }, 9 | "exclude1": [ 10 | "node_modules", 11 | "bower_components", 12 | "jspm_packages", 13 | "tmp", 14 | "temp" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /main/ipc.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | /** 4 | * @module Ipc 5 | */ 6 | let Ipc = {}; 7 | module.exports = Ipc; 8 | 9 | // requires 10 | const Electron = require('electron'); 11 | const ipcMain = Electron.ipcMain; 12 | 13 | Ipc.sendToAll = function(message, ...args) { 14 | args = ["ipc-renderer2all", message, ...args]; 15 | ipcMain.emit.apply(ipcMain, args); 16 | 17 | let webContents = global.mainWindow.webContents; 18 | if (!webContents) { 19 | return false; 20 | } 21 | webContents.send.apply(webContents, args); 22 | }; 23 | 24 | Ipc.sendToWins = function(message, ...args) { 25 | args = ["ipc-renderer2all", message, ...args]; 26 | let webContents = global.mainWindow.webContents; 27 | if (!webContents) { 28 | return false; 29 | } 30 | webContents.send.apply(webContents, args); 31 | }; 32 | 33 | Ipc.sendToWinsDirect = function(message, ...args) { 34 | args = [message, ...args]; 35 | let webContents = global.mainWindow.webContents; 36 | if (!webContents) { 37 | return false; 38 | } 39 | webContents.send.apply(webContents, args); 40 | }; 41 | 42 | ipcMain.on('ipc-renderer2all', (event, message, ...args) => { 43 | 44 | }); -------------------------------------------------------------------------------- /main/protocol.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let Protocol = {}; 4 | module.exports = Protocol; 5 | 6 | const Electron = require('electron'); 7 | const Console = require('./console'); 8 | const app = Electron.app; 9 | var Url = require('url'); 10 | var Fs = require('fs'); 11 | 12 | Protocol.init = function() { 13 | const protocol = Electron.protocol; 14 | // register protocol app:// 15 | protocol.registerFileProtocol('app', (request, cb) => { 16 | if (!request.url) { 17 | cb(-3); // ABORTED 18 | return; 19 | } 20 | 21 | let url = decodeURIComponent(request.url); 22 | let uri = Url.parse(url); 23 | 24 | let relativePath = uri.hostname; 25 | if (uri.pathname) { 26 | relativePath = relativePath + uri.pathname; 27 | } 28 | 29 | let file = app.getAppPath() + "/" + relativePath; 30 | cb({ path: file }); 31 | }, err => { 32 | if (err) { 33 | Console.log('Failed to register protocol app, %s', err.message); 34 | return; 35 | } 36 | Console.log('protocol app registered'); 37 | }); 38 | 39 | protocol.registerFileProtocol('packages', (request, cb) => { 40 | if (!request.url) { 41 | cb(-3); // ABORTED 42 | return; 43 | } 44 | 45 | let url = decodeURIComponent(request.url); 46 | let uri = Url.parse(url); 47 | 48 | let relativePath = uri.hostname; 49 | if (uri.pathname) { 50 | relativePath = relativePath + uri.pathname; 51 | } 52 | let file = app.getAppPath() + "/package/" + relativePath; 53 | if (Fs.existsSync(file)) { 54 | cb({ path: file }); 55 | return; 56 | } 57 | 58 | file = app.getAppPath() + "/third/package/" + relativePath; 59 | if (Fs.existsSync(file)) { 60 | cb({ path: file }); 61 | return; 62 | } 63 | }, err => { 64 | if (err) { 65 | Console.log('Failed to register protocol app, %s', err.message); 66 | return; 67 | } 68 | Console.log('protocol packages registered'); 69 | }); 70 | 71 | 72 | }; -------------------------------------------------------------------------------- /package-zip/helloword.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/package-zip/helloword.zip -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "visual-ui-editor", 3 | "productName": "VisualUIEditor", 4 | "description": "VisualUIEditor", 5 | "version": "1.2.0", 6 | "author": "tickbh", 7 | "main": "app.js", 8 | "dependencies": { 9 | "async": "^1.5.2", 10 | "FileSaver": "0.10.0", 11 | "jquery": "1.11.1", 12 | "jquery-contextmenu": "1.6.7", 13 | "unzip" : "0.1.11" 14 | }, 15 | "devDependencies": { 16 | "devtron": "^1.1.0", 17 | "electron-prebuilt": "1.2.1", 18 | "less": "^2.6.1", 19 | "almond": "0.3.2", 20 | "dcl": "1.1.3", 21 | "dojo": "1.11.2", 22 | "lodash-amd": "4.15.0", 23 | "requirejs": "2.2.0", 24 | "requirejs-domready": "2.0.3" 25 | }, 26 | "scripts": { 27 | "start": "electron .", 28 | "package-china-win32": "electron-packager ./ VisualUIEditor --asar --platform=win32 --arch=all --out ../Out/VisualUIEditor --version 1.3.4 --overwrite --download.mirror=https://npm.taobao.org/mirrors/electron/", 29 | "package-china": "electron-packager ./ VisualUIEditor --asar --all --out ../Out/VisualUIEditor --version 1.3.4 --overwrite --download.mirror=https://npm.taobao.org/mirrors/electron/", 30 | "package": "electron-packager ./ VisualUIEditor --asar --all --out ../Out/VisualUIEditor --version 1.3.4 --overwrite" 31 | } 32 | } -------------------------------------------------------------------------------- /packages/console/panel/item.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | 5 | .item { 6 | display: flex; 7 | flex-direction: column; 8 | 9 | list-style-type: none; 10 | padding: 5px; 11 | padding-left: 10px; 12 | overflow-x: hidden; 13 | font-size: 14px; 14 | 15 | color: #999; 16 | } 17 | 18 | .item.log { 19 | color: #999; 20 | } 21 | .item.error { 22 | color: #c80c0c; 23 | } 24 | .item.warn { 25 | color: #990; 26 | } 27 | 28 | .item.info { 29 | /*font-weight: bold;*/ 30 | color: #09f; 31 | } 32 | .item.failed { 33 | /*font-weight: bold;*/ 34 | color: #c80c0c; 35 | } 36 | .item.success { 37 | /*font-weight: bold;*/ 38 | color: #090; 39 | } 40 | 41 | .desc { 42 | overflow: hidden; 43 | } 44 | 45 | .icon { 46 | width: 15px; 47 | min-width: 15px; 48 | margin-top: 2px; 49 | } 50 | 51 | .fold { 52 | padding: 2px; 53 | margin-top: 2px; 54 | width: 15px; 55 | text-align: center; 56 | color: #555; 57 | cursor: pointer; 58 | } 59 | 60 | .text { 61 | margin-top: 2px; 62 | -webkit-user-select: initial; 63 | cursor: text; 64 | } 65 | 66 | .text::selection { 67 | background-color: #007acc; 68 | } 69 | 70 | .more::after { 71 | content: "[...]"; 72 | cursor: pointer; 73 | color: #555; 74 | padding: 0px 4px; 75 | } 76 | 77 | .more:hover { 78 | text-decoration: underline; 79 | color: #555; 80 | } 81 | 82 | .detail::selection { 83 | background-color: #007acc; 84 | } 85 | 86 | .info { 87 | /*white-space: nowrap;*/ 88 | display: flex; 89 | flex-direction: column; 90 | } 91 | 92 | .detail { 93 | display: none; 94 | margin-left: 19px; 95 | white-space: pre-wrap; 96 | -webkit-user-select: initial; 97 | cursor: text; 98 | } 99 | 100 | :host[folded] .info { 101 | white-space: pre-wrap; 102 | } 103 | 104 | :host[folded] .detail { 105 | display: inline-block; 106 | } 107 | 108 | :host[folded] .more::after { 109 | content: ""; 110 | display: none; 111 | } 112 | 113 | :host[type^="error"] .detail{ 114 | margin-left: 34px; 115 | } 116 | 117 | :host[type^="warn"] .detail{ 118 | margin-left: 34px; 119 | } 120 | -------------------------------------------------------------------------------- /packages/console/panel/item.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /packages/console/panel/item.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | 'use strict' 3 | 4 | Polymer({ 5 | properties: { 6 | type: { 7 | type: String, 8 | value: 'log', 9 | reflectToAttribute: true 10 | }, 11 | 12 | count: { 13 | type: Number, 14 | value: 0 15 | }, 16 | 17 | desc: { 18 | type: String, 19 | value: '' 20 | }, 21 | 22 | detail: { 23 | type: String, 24 | value: '' 25 | }, 26 | 27 | showCount: { 28 | type: Boolean, 29 | value: false 30 | }, 31 | 32 | folded: { 33 | type: Boolean, 34 | value: false, 35 | reflectToAttribute: true 36 | } 37 | }, 38 | 39 | ready() {}, 40 | 41 | _typeClass(type) { 42 | return 'item layout vertical ' + type 43 | }, 44 | 45 | _iconClass(type) { 46 | switch (type) { 47 | case 'error': 48 | return 'fa fa-times-circle icon' 49 | 50 | case 'warn': 51 | return 'fa fa-warning icon' 52 | 53 | default: 54 | return '' 55 | } 56 | }, 57 | 58 | _textClass(detail) { 59 | if (detail) { 60 | return 'more' 61 | } 62 | }, 63 | 64 | _showCount(showCount, count) { 65 | if (showCount && count > 0) { 66 | return true 67 | } 68 | 69 | return false 70 | }, 71 | 72 | _computedCount(count) { 73 | return count + 1 74 | }, 75 | 76 | _onFoldClick() { 77 | this.set('folded', !this.folded) 78 | }, 79 | 80 | _foldClass(detail, folded) { 81 | if (!detail) { 82 | return 83 | } 84 | return folded ? 'fa fold fa-caret-down' : 'fa fold fa-caret-right' 85 | } 86 | }) 87 | })() -------------------------------------------------------------------------------- /packages/controlpanel/panel/controlpanel.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 57 | 58 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /packages/controlpanel/panel/controlpanel.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | 'use strict' 3 | var dragIdName = 'NodeMoveUUID' 4 | 5 | Polymer({ 6 | properties: { 7 | show_items: { 8 | type: Array, 9 | value: function() { return []; } 10 | } 11 | }, 12 | 13 | 14 | 15 | addFunc: function(data) {}, 16 | 17 | ready: function() { 18 | let show_items = [] 19 | var nodes = GetExtllNodeControls() 20 | for (name in nodes) { 21 | let node = nodes[name] 22 | show_items.push({ icon: node.icon, name: node.name, tag: node.tag }) 23 | } 24 | 25 | this.resetSortItems(show_items) 26 | }, 27 | 28 | resetSortItems: function(items) { 29 | items.sort(function(a, b) { 30 | return (a.tag - b.tag) 31 | }) 32 | let newItems = [] 33 | 34 | for (let i = 0; i < items.length; i++) { 35 | if (items[i].tag >= 0) { 36 | newItems.push(items[i]) 37 | } 38 | } 39 | 40 | this.show_items = newItems 41 | }, 42 | 43 | messages: { 44 | 'ui:has_extnodecontrol_add' (event, name) { 45 | let nodeControl = GetExtNodeControl(name) 46 | this.show_items.push({ icon: nodeControl.icon, name: nodeControl.name, tag: nodeControl.tag }) 47 | 48 | this.resetSortItems(this.show_items) 49 | } 50 | } 51 | 52 | }) 53 | })() -------------------------------------------------------------------------------- /packages/controlpanel/panel/item.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | margin-top: 10px; 4 | } 5 | 6 | .item { 7 | display: flex; 8 | flex-direction: column; 9 | list-style-type: none; 10 | padding: 5px; 11 | padding-left: 10px; 12 | overflow-x: hidden; 13 | font-size: 12px; 14 | color: #999; 15 | } 16 | 17 | .item.log { 18 | color: #999; 19 | } 20 | 21 | .item.error { 22 | color: #c80c0c; 23 | } 24 | 25 | .item.warn { 26 | color: #990; 27 | } 28 | 29 | .item.info { 30 | /*font-weight: bold;*/ 31 | color: #09f; 32 | } 33 | 34 | .item.failed { 35 | /*font-weight: bold;*/ 36 | color: #c80c0c; 37 | } 38 | 39 | .item.success { 40 | /*font-weight: bold;*/ 41 | color: #090; 42 | } 43 | 44 | .desc { 45 | overflow: hidden; 46 | } 47 | 48 | .icon { 49 | width: 15px; 50 | min-width: 15px; 51 | margin-top: 2px; 52 | } 53 | 54 | .fold { 55 | padding: 2px; 56 | margin-top: 2px; 57 | width: 15px; 58 | text-align: center; 59 | color: #555; 60 | cursor: pointer; 61 | } 62 | 63 | .text { 64 | -webkit-user-select: initial; 65 | cursor: text; 66 | } 67 | 68 | .text::selection { 69 | background-color: #007acc; 70 | } 71 | 72 | .more::after { 73 | content: "[...]"; 74 | cursor: pointer; 75 | color: #555; 76 | padding: 0px 4px; 77 | } 78 | 79 | .more:hover { 80 | text-decoration: underline; 81 | color: #555; 82 | } 83 | 84 | .detail::selection { 85 | background-color: #007acc; 86 | } 87 | 88 | .info { 89 | /*white-space: nowrap;*/ 90 | display: flex; 91 | flex-direction: column; 92 | } 93 | 94 | .detail { 95 | display: none; 96 | margin-left: 19px; 97 | white-space: pre-wrap; 98 | -webkit-user-select: initial; 99 | cursor: text; 100 | } 101 | 102 | :host[folded] .info { 103 | white-space: pre-wrap; 104 | } 105 | 106 | :host[folded] .detail { 107 | display: inline-block; 108 | } 109 | 110 | :host[folded] .more::after { 111 | content: ""; 112 | display: none; 113 | } 114 | 115 | :host[type^="error"] .detail { 116 | margin-left: 34px; 117 | } 118 | 119 | :host[type^="warn"] .detail { 120 | margin-left: 34px; 121 | } -------------------------------------------------------------------------------- /packages/controlpanel/panel/item.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /packages/controlpanel/panel/item.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | 'use strict' 3 | 4 | Polymer({ 5 | properties: { 6 | icon: { 7 | type: String, 8 | value: '' 9 | }, 10 | 11 | name: { 12 | type: String, 13 | value: '' 14 | } 15 | }, 16 | 17 | dragStart: function(ev) { 18 | ev.stopPropagation() 19 | ev.dataTransfer.dropEffect = 'move' 20 | ev.dataTransfer.clearData() 21 | ev.dataTransfer.setData('controlType', this.name) 22 | ev.target.style.opacity = '0.4' 23 | }, 24 | 25 | dragEnd: function(ev) { 26 | ev.preventDefault() 27 | ev.target.style.opacity = '1' 28 | }, 29 | 30 | ready() { 31 | this['ondragstart'] = this.dragStart.bind(this) 32 | this['ondragend'] = this.dragEnd.bind(this) 33 | } 34 | 35 | }) 36 | })() -------------------------------------------------------------------------------- /packages/nodeorder/panel/node-tree-item.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | box-sizing: border-box; 4 | font-size: 12px; 5 | margin-left: 0px; 6 | color: #ddd; 7 | } 8 | 9 | :host[folded]>#content { 10 | display: none; 11 | } 12 | 13 | #header { 14 | position: relative; 15 | padding-bottom: 1px; 16 | } 17 | 18 | #bar { 19 | position: absolute; 20 | left: 0; 21 | right: 0; 22 | height: 16px; 23 | } 24 | 25 | :host[selected]>#bar { 26 | background-color: #555; 27 | } 28 | 29 | .wrapper { 30 | display: flex; 31 | flex-direction: row; 32 | flex-wrap: nowrap; 33 | align-items: flex-end; 34 | white-space: nowrap; 35 | height: 15px; 36 | color: #fff; 37 | cursor: default; 38 | padding: 3px 0px 2px 2px; 39 | } 40 | 41 | #foldIcon { 42 | flex: none; 43 | font-size: 16px; 44 | width: 10px; 45 | margin-right: 2px; 46 | visibility: hidden; 47 | cursor: pointer; 48 | text-align: center; 49 | } 50 | 51 | :host[foldable]>#header #foldIcon { 52 | visibility: visible; 53 | } 54 | 55 | #icon { 56 | flex: none; 57 | width: 20px; 58 | height: 20px; 59 | margin-right: 2px; 60 | background-size: contain; 61 | background-repeat: no-repeat; 62 | background-position: 50% 50%; 63 | } 64 | 65 | #name { 66 | font-size: 14px; 67 | flex: none; 68 | color: #ddd; 69 | min-width: 30%; 70 | max-width: 82%; 71 | white-space: nowrap; 72 | overflow: hidden; 73 | text-overflow: ellipsis; 74 | } 75 | 76 | #content { 77 | display: block; 78 | } -------------------------------------------------------------------------------- /packages/nodeorder/panel/nodeorder.html: -------------------------------------------------------------------------------- 1 | 2 | 55 | 56 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /packages/nodeorder/panel/statusbox.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | flex-direction: row; 4 | flex-wrap: nowrap; 5 | align-items: flex-start; 6 | font-size: 14px; 7 | white-space: nowrap; 8 | text-align: left; 9 | color: #ddd; 10 | cursor: pointer; 11 | position: absolute; 12 | right: 0px; 13 | width: 15px; 14 | } 15 | 16 | :host[focused] { 17 | color: #00a6ff; 18 | } 19 | 20 | :host[pressed] #box { 21 | opacity: 0.7; 22 | } 23 | 24 | #box { 25 | display: inline-block; 26 | box-sizing: border-box; 27 | width: 13px; 28 | height: 13px; 29 | min-width: 13px; 30 | min-height: 13px; 31 | font-size: 10px; 32 | text-align: center; 33 | cursor: pointer; 34 | } 35 | 36 | #box:hover { 37 | border-color: #bababa; 38 | } 39 | 40 | :host[focused] #box { 41 | border: 1px solid #0c70a6; 42 | } -------------------------------------------------------------------------------- /packages/nodeorder/panel/statusbox.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /packages/nodeorder/panel/statusbox.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | Polymer({ 3 | behaviors: [Polymer.IronButtonState], 4 | 5 | listeners: { 6 | 'focus': '_onFocus', 7 | 'blur': '_onBlur', 8 | 'click': '_onClick', 9 | }, 10 | 11 | properties: { 12 | activited: { 13 | type: Boolean, 14 | value: true, 15 | notify: true, 16 | reflectToAttribute: true, 17 | }, 18 | 19 | readonly: { 20 | type: Boolean, 21 | value: false, 22 | reflectToAttribute: true, 23 | }, 24 | 25 | bgIcon: { 26 | type: String, 27 | notify: true, 28 | value: "fa fa-circle-o", 29 | }, 30 | 31 | activiteIcon: { 32 | type: String, 33 | notify: true, 34 | value: "fa fa-eye", 35 | }, 36 | }, 37 | 38 | ready() {}, 39 | 40 | _statusIconClass(activited) { 41 | if (activited) 42 | return this.activiteIcon; 43 | 44 | return this.bgIcon; 45 | }, 46 | 47 | _onClick(event) { 48 | event.stopPropagation(); 49 | 50 | this.activited = !this.activited; 51 | this.async(() => { 52 | this.fire('end-editing'); 53 | }, 1); 54 | }, 55 | }); -------------------------------------------------------------------------------- /packages/proppanel/panel/proppanel.html: -------------------------------------------------------------------------------- 1 | 2 | 45 | 46 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /packages/renderpanel/panel/renderscene.html: -------------------------------------------------------------------------------- 1 | 2 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /packages/renderpanel/panel/renderscene.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | 'use strict' 3 | 4 | Polymer({ 5 | properties: { 6 | enableDrag: Boolean 7 | }, 8 | 9 | fixForgeCanvas: function() { 10 | let rect = this.getBoundingClientRect() 11 | let canvas = this.$.forgeCanvas 12 | canvas.width = rect.width - 5 13 | canvas.height = rect.height - 5 14 | this.fabricCanvas.setWidth(rect.width - 5) 15 | this.fabricCanvas.setHeight(rect.height - 5) 16 | }, 17 | 18 | initGameCanvas: function() { 19 | if (this._isInitGameCanvas) { 20 | return 21 | } 22 | let rect = this.getBoundingClientRect() 23 | let canvas = this.$.gameCanvas 24 | let canvasRect = canvas.getBoundingClientRect() 25 | canvas.style.left = (rect.width - canvasRect.width) / 2 26 | canvas.style.top = (rect.height - canvasRect.height) / 2 27 | this._isInitGameCanvas = true 28 | }, 29 | 30 | getRunScene: function() { 31 | return this.runScene 32 | }, 33 | 34 | getFabricCanvas: function() { 35 | return this.fabricCanvas 36 | }, 37 | 38 | ready: function() { 39 | this.fabricCanvas = new fabric.Canvas(this.$.forgeCanvas) 40 | this.runScene = null 41 | this.reinitRender() 42 | }, 43 | 44 | reinitRender: function() { 45 | ClearCurrentGameStatus() 46 | cc.game.run({ 47 | 'debugMode': 0, 48 | 'showFPS': false, 49 | 'frameRate': 20, 50 | 'id': this.$.gameCanvas, 51 | 'renderMode': 1 52 | }, function() {}.bind(this)) 53 | }, 54 | 55 | attached: function() {}, 56 | 57 | created: function() {} 58 | 59 | 60 | }) 61 | })() -------------------------------------------------------------------------------- /packages/resorder/panel/resorder.html: -------------------------------------------------------------------------------- 1 | 2 | 66 | 67 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /packages/td-tree-view/widget/td-tree-item.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | box-sizing: border-box; 4 | font-size: 14px; 5 | margin-left: 0px; 6 | } 7 | 8 | :host[folded]>#content { 9 | display: none; 10 | } 11 | 12 | #header { 13 | position: relative; 14 | padding-bottom: 1px; 15 | } 16 | 17 | #bar { 18 | position: absolute; 19 | left: 0; 20 | right: 0; 21 | height: 16px; 22 | } 23 | 24 | :host[selected]>#bar { 25 | background-color: #555; 26 | } 27 | 28 | .wrapper { 29 | display: flex; 30 | flex-direction: row; 31 | flex-wrap: nowrap; 32 | align-items: flex-end; 33 | white-space: nowrap; 34 | height: 16px; 35 | color: #fff; 36 | cursor: default; 37 | padding: 6px 0px 2px 2px; 38 | } 39 | 40 | #foldIcon { 41 | flex: none; 42 | font-size: 16px; 43 | width: 10px; 44 | margin-right: 5px; 45 | visibility: hidden; 46 | cursor: pointer; 47 | text-align: center; 48 | } 49 | 50 | :host[foldable]>#header #foldIcon { 51 | visibility: visible; 52 | } 53 | 54 | #icon { 55 | flex: none; 56 | width: 16px; 57 | height: 16px; 58 | margin-right: 2px; 59 | background-size: contain; 60 | background-repeat: no-repeat; 61 | background-position: 50% 50%; 62 | } 63 | 64 | #name { 65 | font-size: 14px; 66 | flex: none; 67 | color: #ddd; 68 | } 69 | 70 | #content { 71 | display: block; 72 | } -------------------------------------------------------------------------------- /packages/td-tree-view/widget/td-tree-view.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | outline: none; 4 | box-sizing: border-box; 5 | overflow-x: hidden; 6 | overflow-y: auto; 7 | padding: 3px 10px; 8 | position: relative; 9 | box-shadow: inset 0 0 8px 2px rgba(0, 0, 0, 0.2); 10 | background: #464646; 11 | min-width: 100px; 12 | min-height: 100px; 13 | } -------------------------------------------------------------------------------- /packages/td-tree-view/widget/td-tree-view.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /project-test/HelloWorld.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/HelloWorld.png -------------------------------------------------------------------------------- /project-test/ProgramConfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "currentLangOpenPath": "F:\\source\\SanguoDoc\\res/lang/lang.txt", 3 | "langPath": "/lang", 4 | "langFileName": "lang.txt", 5 | "langSet": "Zh" 6 | } -------------------------------------------------------------------------------- /project-test/js/ExtUISub1.js: -------------------------------------------------------------------------------- 1 | let ExtUISub1 = {}; 2 | 3 | ExtUISub1.name = "ui/sub1.ui"; 4 | ExtUISub1.icon = "res/control/Node.png"; 5 | ExtUISub1.tag = 0; 6 | 7 | ExtUISub1.GenEmptyNode = function() { 8 | return cocosGenSubUINode(ExtUISub1.name, null); 9 | }; 10 | 11 | ExtUISub1.GenNodeByData = function(data, parent) { 12 | return cocosGenSubUINode(ExtUISub1.name, parent); 13 | }; 14 | 15 | ExtUISub1.SetNodePropByData = function(node, data, parent) { 16 | if (data.test) { 17 | let text = node.getChildByName("text"); 18 | text.setString(data.test); 19 | node.test = data.test; 20 | } 21 | }; 22 | 23 | ExtUISub1.ExportNodeData = function(node, data) { 24 | data.test = node.test; 25 | 26 | }; 27 | 28 | ExtUISub1.SetPropChange = function(control, path, value) { 29 | if (path == "test") { 30 | ExtUISub1.SetNodePropByData(control._node, { test: value }); 31 | } else { 32 | control._node[path] = value; 33 | } 34 | }; 35 | 36 | ExtUISub1.ExportData = function(node) { 37 | this._node = node; 38 | } 39 | 40 | ExtUISub1.ExportData.prototype = { 41 | __displayName__: "UISub1", 42 | __type__: "ccui.UISub1", 43 | 44 | get test() { 45 | return { 46 | path: "test", 47 | type: "string", 48 | name: "test", 49 | attrs: {}, 50 | value: this._node.test, 51 | }; 52 | }, 53 | 54 | get __props__() { 55 | return [this.test]; 56 | } 57 | } 58 | 59 | ExtUISub1.PropComps = function(node) { 60 | let datas = [new WidgetData(node)]; 61 | datas.push(new ExtUISub1.ExportData(node)); 62 | return datas; 63 | }; 64 | 65 | module.exports = ExtUISub1; 66 | 67 | RegisterExtNodeControl(ExtUISub1.name, ExtUISub1); -------------------------------------------------------------------------------- /project-test/js/init.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /project-test/lang/lang.txt: -------------------------------------------------------------------------------- 1 | { 2 | "test": { 3 | "Zh": "测试", 4 | "En": "this is Englist test", 5 | "Tw": "测试tw" 6 | }, 7 | "testRich": { 8 | "Zh": "V[cr]i[f30]su[/c]al[/f]UI", 9 | "En": "V[cr]i[f30]su[/c]al[/f]UI" 10 | }, 11 | "gf": { 12 | "Zh": "fdsafdsa", 13 | "En": "fdsafdsafdsa", 14 | "Tw": "" 15 | } 16 | } -------------------------------------------------------------------------------- /project-test/res/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/1.png -------------------------------------------------------------------------------- /project-test/res/UIFolder 0/78144e18-ff7b-437e-a3fe-5495685dfc6b.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "__type__": "cc.SceneAsset", 4 | "scene": { 5 | "__id__": 1 6 | }, 7 | "_name": "New Scene - 002" 8 | }, 9 | { 10 | "__type__": "cc.Scene", 11 | "_children": [ 12 | { 13 | "__id__": 2 14 | } 15 | ] 16 | }, 17 | { 18 | "__type__": "cc.Node", 19 | "_name": "Canvas", 20 | "_parent": { 21 | "__id__": 1 22 | }, 23 | "_children": [], 24 | "_components": [ 25 | { 26 | "__id__": 3 27 | } 28 | ] 29 | }, 30 | { 31 | "__type__": "cc.Canvas", 32 | "node": { 33 | "__id__": 2 34 | }, 35 | "_fitWidth": false, 36 | "_fitHeight": true 37 | } 38 | ] -------------------------------------------------------------------------------- /project-test/res/default/AltasNum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/AltasNum.png -------------------------------------------------------------------------------- /project-test/res/default/ButtonDisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/ButtonDisable.png -------------------------------------------------------------------------------- /project-test/res/default/ButtonNormal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/ButtonNormal.png -------------------------------------------------------------------------------- /project-test/res/default/ButtonSelect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/ButtonSelect.png -------------------------------------------------------------------------------- /project-test/res/default/CheckBoxDisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/CheckBoxDisable.png -------------------------------------------------------------------------------- /project-test/res/default/CheckBoxNodeDisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/CheckBoxNodeDisable.png -------------------------------------------------------------------------------- /project-test/res/default/CheckBoxNodeNormal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/CheckBoxNodeNormal.png -------------------------------------------------------------------------------- /project-test/res/default/CheckBoxNormal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/CheckBoxNormal.png -------------------------------------------------------------------------------- /project-test/res/default/CheckBoxSelect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/CheckBoxSelect.png -------------------------------------------------------------------------------- /project-test/res/default/Scale9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/Scale9.png -------------------------------------------------------------------------------- /project-test/res/default/SliderBack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/SliderBack.png -------------------------------------------------------------------------------- /project-test/res/default/SliderBar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/SliderBar.png -------------------------------------------------------------------------------- /project-test/res/default/SliderNodeDisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/SliderNodeDisable.png -------------------------------------------------------------------------------- /project-test/res/default/SliderNodeNormal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/SliderNodeNormal.png -------------------------------------------------------------------------------- /project-test/res/default/SliderNodeSelect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/SliderNodeSelect.png -------------------------------------------------------------------------------- /project-test/res/default/Sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/Sprite.png -------------------------------------------------------------------------------- /project-test/res/default/shurukuang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/default/shurukuang.png -------------------------------------------------------------------------------- /project-test/res/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/grid.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a01.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a02.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a03.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a04.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a05.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a06.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a07.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a08.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a09.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a10.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a11.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a12.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a13.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a14.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a15.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a16.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a17.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a18.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a19.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a20.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a21.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a22.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a23.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a24.png -------------------------------------------------------------------------------- /project-test/res/images/role/002/a25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/res/images/role/002/a25.png -------------------------------------------------------------------------------- /project-test/ui/sub1.ui: -------------------------------------------------------------------------------- 1 | { 2 | "width": "300", 3 | "height": "100", 4 | "x": 0, 5 | "y": 0, 6 | "type": "Scene", 7 | "children": [ 8 | { 9 | "width": "40", 10 | "height": "40", 11 | "x": 226, 12 | "y": 51, 13 | "id": "check", 14 | "type": "UICheckBox", 15 | "touchEnabled": true, 16 | "back": "res/default/CheckBoxNormal.png", 17 | "backSelect": "res/default/CheckBoxSelect.png", 18 | "active": "res/default/CheckBoxNodeNormal.png", 19 | "backDisable": "res/default/CheckBoxDisable.png", 20 | "activeDisable": "res/default/CheckBoxNodeDisable.png", 21 | "select": true 22 | }, 23 | { 24 | "width": "89", 25 | "height": "28", 26 | "x": 56, 27 | "y": 59, 28 | "id": "text", 29 | "type": "UIText", 30 | "touchEnabled": false, 31 | "string": "VisualUI", 32 | "fontSize": 24, 33 | "fontName": "Arial" 34 | }, 35 | { 36 | "width": "46", 37 | "height": "36", 38 | "x": 132, 39 | "y": 40, 40 | "type": "UIButton", 41 | "touchEnabled": true, 42 | "bgNormal": "res/default/ButtonNormal.png", 43 | "fontName": "Arial", 44 | "fontSize": 16 45 | } 46 | ] 47 | } -------------------------------------------------------------------------------- /project-test/uires/button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/uires/button.png -------------------------------------------------------------------------------- /project-test/uires/huodongdi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/uires/huodongdi.png -------------------------------------------------------------------------------- /project-test/uires/loginBg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/uires/loginBg.jpg -------------------------------------------------------------------------------- /project-test/uires/lv_num.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/uires/lv_num.png -------------------------------------------------------------------------------- /project-test/uires/xinxikuang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/project-test/uires/xinxikuang.png -------------------------------------------------------------------------------- /prop/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /prop/ve-widget/button-widget/button.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: inline-block; 3 | box-sizing: border-box; 4 | flex: none; 5 | line-height: 12px; 6 | } 7 | 8 | .btn { 9 | font-weight: bold; 10 | margin: 0px; 11 | min-width: 10px; 12 | text-align: center; 13 | border-radius: 2px; 14 | overflow: hidden; 15 | padding: 3px 3px; 16 | text-overflow: ellipsis; 17 | cursor: pointer; 18 | font-family: Arial, sans-serif; 19 | color: #ddd; 20 | margin-right: 3px; 21 | } 22 | 23 | .btn:hover { 24 | background-image: linear-gradient(#888, #4e4e4e); 25 | } 26 | 27 | .btn:focus { 28 | outline: none; 29 | } 30 | 31 | :host[pressed] .btn { 32 | box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.5); 33 | color: #ddd; 34 | background-image: linear-gradient(#464646, #303030); 35 | } -------------------------------------------------------------------------------- /prop/ve-widget/button-widget/button.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /prop/ve-widget/button-widget/button.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | Polymer({ 3 | behaviors: [Polymer.IronButtonState], 4 | 5 | listeners: { 6 | 'focus': '_onFocus', 7 | 'blur': '_onBlur', 8 | 'click': '_onEndEditing' 9 | }, 10 | 11 | properties: { 12 | nofocus: { 13 | type: Boolean, 14 | value: false, 15 | notify: true, 16 | reflectToAttribute: true 17 | } 18 | }, 19 | 20 | ready() { 21 | this.noNavigate = this.nofocus 22 | }, 23 | 24 | _onEndEditing() { 25 | this.fire('confirm', { 26 | confirmByEnter: true 27 | }, { 28 | bubbles: false 29 | }) 30 | 31 | this.async(() => { 32 | this.fire('end-editing') 33 | }, 1) 34 | } 35 | }) -------------------------------------------------------------------------------- /prop/ve-widget/buttons-widget/buttons-item/buttons-item.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | box-sizing: border-box; 6 | background-color: #999; 7 | cursor: pointer; 8 | font-weight: bold; 9 | margin: 0px; 10 | min-width: 35px; 11 | text-align: center; 12 | flex-grow: 1; 13 | overflow: hidden; 14 | white-space: nowrap; 15 | font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; 16 | color: #F2F2F2; 17 | transition: all 0.1s ease; 18 | } 19 | 20 | :host ::content .fa { 21 | padding: 0.2rem 0.4rem; 22 | } 23 | 24 | :host:hover { 25 | background-color: #464646; 26 | } 27 | 28 | :host:focus { 29 | outline: none; 30 | } 31 | 32 | :host[pressed] { 33 | box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2); 34 | color: #dedede; 35 | background-color: #303030; 36 | } 37 | 38 | :host[selected] { 39 | background-color: #2A2A2A; 40 | color: #fff; 41 | border-color: #343333; 42 | } -------------------------------------------------------------------------------- /prop/ve-widget/buttons-widget/buttons-item/buttons-item.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /prop/ve-widget/buttons-widget/buttons-item/buttons-item.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | Polymer({ 3 | behaviors: [Polymer.IronButtonState], 4 | 5 | listeners: { 6 | 'focus': '_onFocus', 7 | 'blur': '_onBlur', 8 | 'click': '_onEndEditing' 9 | }, 10 | 11 | properties: { 12 | selected: { 13 | type: Boolean, 14 | value: false, 15 | notify: true, 16 | reflectToAttribute: true 17 | } 18 | }, 19 | 20 | ready() { 21 | this.noNavigate = this.nofocus 22 | }, 23 | 24 | _onEndEditing() { 25 | this.async(() => { 26 | this.fire('end-editing') 27 | }, 1) 28 | } 29 | }) -------------------------------------------------------------------------------- /prop/ve-widget/buttons-widget/buttons.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: inline-block; 3 | box-sizing: border-box; 4 | border-radius: 2px; 5 | overflow: hidden; 6 | font-size: 1rem; 7 | margin-right: 3px; 8 | } 9 | 10 | :host[disabled] { 11 | opacity: 0.5; 12 | pointer-events: none; 13 | } 14 | 15 | :host::shadow ve-buttons-item { 16 | border-right: 1px solid transparent; 17 | } 18 | 19 | :host::shadow ve-buttons-item:first-child { 20 | border-top-left-radius: 2px; 21 | border-bottom-left-radius: 2px; 22 | } 23 | 24 | :host::shadow ve-buttons-item:last-child { 25 | border-right: 0px; 26 | border-top-right-radius: 2px; 27 | border-bottom-right-radius: 2px; 28 | } 29 | 30 | :host.small::shadow ve-buttons-item { 31 | font-size: 0.8rem; 32 | padding: .3rem .3rem; 33 | } 34 | 35 | :host.large::shadow ve-buttons-item { 36 | font-size: 1.2rem; 37 | padding: .5rem 1.5rem; 38 | } 39 | 40 | :host.big::shadow ve-buttons-item { 41 | font-size: 1.4rem; 42 | padding: .5rem 2rem; 43 | } 44 | 45 | :host.classical { 46 | border: 1px solid #1f1f1f; 47 | } 48 | 49 | :host.classical::shadow ve-buttons-item { 50 | background-image: linear-gradient(#5a5a5a, #444); 51 | border: 1px solid #666565; 52 | border-left: 0px; 53 | padding: 0.3rem 0.3rem; 54 | } 55 | 56 | :host.classical::shadow ve-buttons-item:first-child { 57 | border-left: 1px solid #666565; 58 | } 59 | 60 | :host.classical::shadow ve-buttons-item[selected] { 61 | background-image: linear-gradient(#464646, #303030); 62 | box-shadow: inset 0 2px 20px rgba(0, 0, 0, 0.9); 63 | } 64 | 65 | :host.classical::shadow ve-buttons-item[pressed] { 66 | background-image: linear-gradient(#5a5a5a, #444); 67 | box-shadow: inset 0 2px 20px rgba(0, 0, 0, 0.7); 68 | } -------------------------------------------------------------------------------- /prop/ve-widget/buttons-widget/buttons.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /prop/ve-widget/buttons-widget/buttons.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | Polymer({ 3 | behaviors: [Polymer.IronMultiSelectableBehavior], 4 | 5 | created() { 6 | this.selectedAttribute = 'selected' 7 | }, 8 | 9 | ready() { 10 | this.noNavigate = this.nofocus 11 | }, 12 | 13 | attached() { 14 | var _minWidth = 0 15 | Polymer.dom(this).children.forEach(item => { 16 | _minWidth += item.getBoundingClientRect().width 17 | }) 18 | this.style.minWidth = _minWidth + 2 + 'px' 19 | }, 20 | 21 | _selectionChange() { 22 | if (this.multi) { 23 | this.fire('multi-selected-changed') 24 | } 25 | } 26 | }) -------------------------------------------------------------------------------- /prop/ve-widget/checkbox-widget/checkbox.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | flex-direction: row; 4 | flex-wrap: nowrap; 5 | align-items: flex-start; 6 | font-size: 14px; 7 | white-space: nowrap; 8 | text-align: left; 9 | color: #ddd; 10 | cursor: pointer; 11 | } 12 | 13 | :host[focused] { 14 | color: #00a6ff; 15 | } 16 | 17 | :host[pressed] #togglebox:after { 18 | opacity: 0.7; 19 | } 20 | 21 | :host[pressed] #box { 22 | opacity: 0.7; 23 | } 24 | 25 | #icon { 26 | color: #00a6ff; 27 | opacity: 0; 28 | transition: opacity 0.1s ease; 29 | background: none; 30 | } 31 | 32 | #box { 33 | display: inline-block; 34 | box-sizing: border-box; 35 | width: 13px; 36 | height: 13px; 37 | min-width: 13px; 38 | min-height: 13px; 39 | border: 1px solid #000; 40 | font-size: 10px; 41 | text-align: center; 42 | background: #444; 43 | cursor: pointer; 44 | } 45 | 46 | #togglebox { 47 | display: none; 48 | position: relative; 49 | min-width: 4rem; 50 | min-height: 1.5rem; 51 | border-radius: 500rem; 52 | } 53 | 54 | #togglebox:before { 55 | position: absolute; 56 | content: ''; 57 | width: 100%; 58 | height: 15px; 59 | background: #777; 60 | border-radius: 500rem; 61 | transition: background-color 0.5s ease; 62 | } 63 | 64 | #togglebox:after { 65 | position: absolute; 66 | content: ''; 67 | width: 1.4rem; 68 | height: 1.4rem; 69 | background-color: #FFFFFF; 70 | border-radius: 500rem; 71 | left: 0rem; 72 | transition: left 0.3s ease; 73 | border: 1px solid #000; 74 | top: -2px; 75 | } 76 | 77 | .text { 78 | white-space: nowrap; 79 | overflow: hidden; 80 | text-overflow: ellipsis; 81 | text-indent: 5px; 82 | } 83 | 84 | :host[value] #togglebox:before { 85 | background: #818181; 86 | } 87 | 88 | :host[value] #togglebox:after { 89 | left: 2.5rem; 90 | } 91 | 92 | :host[value] #icon { 93 | opacity: 1; 94 | } 95 | 96 | #box:hover { 97 | border-color: #bababa; 98 | } 99 | 100 | :host[focused] #box { 101 | border: 1px solid #0c70a6; 102 | } 103 | 104 | :host[focused] #togglebox:after { 105 | border: 1px solid #0c70a6; 106 | } 107 | 108 | :host[disabled] { 109 | pointer-events: none; 110 | opacity: 0.5; 111 | } 112 | 113 | :host.toggle { 114 | line-height: 15px; 115 | } 116 | 117 | :host.toggle #box { 118 | display: none; 119 | } 120 | 121 | :host.toggle #togglebox { 122 | display: inline-block; 123 | } -------------------------------------------------------------------------------- /prop/ve-widget/checkbox-widget/checkbox.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /prop/ve-widget/checkbox-widget/checkbox.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | Polymer({ 3 | behaviors: [Polymer.IronButtonState], 4 | 5 | listeners: { 6 | 'focus': '_onFocus', 7 | 'blur': '_onBlur', 8 | 'click': '_onClick', 9 | }, 10 | 11 | properties: { 12 | value: { 13 | type: Boolean, 14 | value: false, 15 | notify: true, 16 | reflectToAttribute: true, 17 | }, 18 | 19 | nofocus: { 20 | type: Boolean, 21 | value: false, 22 | notify: true, 23 | reflectToAttribute: true, 24 | }, 25 | 26 | readonly: { 27 | type: Boolean, 28 | value: false, 29 | reflectToAttribute: true, 30 | }, 31 | }, 32 | 33 | ready() { 34 | this.noNavigate = this.nofocus; 35 | }, 36 | 37 | _onClick(event) { 38 | event.stopPropagation(); 39 | 40 | this.value = !this.value; 41 | this.async(() => { 42 | this.fire('end-editing'); 43 | }, 1); 44 | }, 45 | }); -------------------------------------------------------------------------------- /prop/ve-widget/input-widget/input.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | position: relative; 4 | box-sizing: border-box; 5 | min-width: 60px; 6 | cursor: default; 7 | background: #555353; 8 | margin-right: 2px; 9 | margin-left: 2px; 10 | } 11 | 12 | :host:focus { 13 | outline: none; 14 | } 15 | 16 | :host:hover { 17 | border: 1px solid #999; 18 | } 19 | 20 | :host[focused] { 21 | border: 1px solid #228B22; 22 | } 23 | 24 | :host[disabled] { 25 | pointer-events: none; 26 | background: #000; 27 | } 28 | 29 | :host[disabled] #input { 30 | color: #787878; 31 | } 32 | 33 | :host[disabled] #input { 34 | pointer-events: none; 35 | } 36 | 37 | #input { 38 | display: block; 39 | padding: 3px 3px 3px 5px; 40 | border: 0; 41 | margin: 0; 42 | width: 100%; 43 | font-family: "宋体"; 44 | background: transparent; 45 | color: #fff; 46 | pointer-events: auto; 47 | user-select: auto; 48 | cursor: auto; 49 | } 50 | 51 | #input::-webkit-input-placeholder { 52 | color: #eaeaea; 53 | text-shadow: none; 54 | font-size: 14px; 55 | } 56 | 57 | #input:focus { 58 | outline: none; 59 | } 60 | 61 | #input::selection { 62 | background: #007acc; 63 | } 64 | 65 | :host.mini #input { 66 | font-size: 0.6rem; 67 | } 68 | 69 | :host.small #input { 70 | font-size: 0.8rem; 71 | } 72 | 73 | :host #input {} 74 | 75 | :host.large #input { 76 | font-size: 1.2rem; 77 | } 78 | 79 | :host.big #input { 80 | font-size: 1.4rem; 81 | } 82 | 83 | :host[readonly] #input { 84 | -webkit-user-select: text; 85 | cursor: text; 86 | } 87 | 88 | .fa-times-circle { 89 | display: block; 90 | padding: 0; 91 | margin: -0.48em 0 0 0; 92 | position: absolute; 93 | top: 50%; 94 | right: 4px; 95 | cursor: pointer; 96 | } 97 | 98 | :host .fa-times-circle { 99 | font-size: 1.0rem; 100 | height: 1.2em; 101 | } 102 | 103 | :host[cancelable] #input { 104 | padding-right: 1.4em; 105 | } -------------------------------------------------------------------------------- /prop/ve-widget/input-widget/input.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /prop/ve-widget/label-widget/label.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /prop/ve-widget/label-widget/label.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | Polymer({ 3 | properties: { 4 | disabled: { 5 | type: Boolean, 6 | notify: true, 7 | value: false, 8 | reflectToAttribute: true 9 | } 10 | } 11 | }) -------------------------------------------------------------------------------- /prop/ve-widget/select-widget/menu/menu.css: -------------------------------------------------------------------------------- 1 | :host { 2 | position: fixed; 3 | z-index: 999; 4 | box-sizing: border-box; 5 | font-size: 12px; 6 | width: 120px; 7 | min-width: 60px; 8 | max-height: 200px; 9 | overflow-y: auto; 10 | background: #2a2a2a; 11 | padding: 3px 4px 3px 4px; 12 | border-top: 0px; 13 | border-left: 1px solid #0c70a6; 14 | border-right: 1px solid #0c70a6; 15 | border-bottom: 1px solid #0c70a6; 16 | } 17 | :host.upward { 18 | border-bottom: 0px; 19 | border-left: 1px solid #0c70a6; 20 | border-right: 1px solid #0c70a6; 21 | border-top: 1px solid #0c70a6; 22 | } 23 | -------------------------------------------------------------------------------- /prop/ve-widget/select-widget/menu/menu.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /prop/ve-widget/select-widget/option/option.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: inline-block; 3 | height: auto; 4 | padding: 4px 4px; 5 | min-height: 12px; 6 | color: #aaa; 7 | font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; 8 | cursor: pointer; 9 | overflow: hidden; 10 | white-space: nowrap; 11 | text-overflow: ellipsis; 12 | } 13 | :host:hover { 14 | background-color: #3f3f3f; 15 | } 16 | :host[selected] { 17 | background-color: #2865c7; 18 | } 19 | :host[disabled] { 20 | opacity: 0.5; 21 | pointer-events: none; 22 | } 23 | -------------------------------------------------------------------------------- /prop/ve-widget/select-widget/option/option.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /prop/ve-widget/select-widget/option/option.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | Polymer({ 3 | properties: { 4 | value: { 5 | type: String, 6 | value: '' 7 | }, 8 | 9 | text: { 10 | type: String, 11 | value: '' 12 | }, 13 | 14 | disabled: { 15 | type: Boolean, 16 | value: false, 17 | reflectToAttribute: true 18 | } 19 | }, 20 | }); -------------------------------------------------------------------------------- /prop/ve-widget/select-widget/select.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | flex-direction: column; 4 | position: relative; 5 | box-sizing: border-box; 6 | font-size: 1.0rem; 7 | min-width: 60px; 8 | min-height: 24px; 9 | border: 1px solid black; 10 | } 11 | :host[focused] { 12 | border-color: #0c70a6; 13 | } 14 | :host[focused] .border { 15 | border-color: #171717; 16 | } 17 | :host[disabled] { 18 | border-color: rgba(29, 29, 29, 0.7); 19 | } 20 | :host[disabled] .border { 21 | background-color: #393939; 22 | border-color: #515151; 23 | color: #555; 24 | pointer-events: none; 25 | } 26 | :host[disabled] #placeholder { 27 | opacity: 1; 28 | } 29 | :host[readonly] .border { 30 | pointer-events: none; 31 | } 32 | .border { 33 | position: relative; 34 | border: 1px solid #666; 35 | padding: 3px 4px; 36 | font-family: Arial, sans-serif; 37 | color: #bbb; 38 | background-color: #555; 39 | cursor: pointer; 40 | } 41 | #text { 42 | overflow-x: hidden; 43 | white-space: nowrap; 44 | text-overflow: ellipsis; 45 | margin-right: 5px; 46 | flex: 1; 47 | } 48 | #text.placeholder { 49 | opacity: 0.5; 50 | font-style: italic; 51 | } 52 | .fa { 53 | width: 8px; 54 | text-align: center; 55 | } 56 | #options { 57 | display: none; 58 | } 59 | -------------------------------------------------------------------------------- /prop/ve-widget/select-widget/select.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /prop/ve-widget/slider-widget/slider.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | align-items: center; 4 | min-height: 21px; 5 | } 6 | :host[input] ve-unit-input { 7 | display: flex; 8 | } 9 | :host[disabled] { 10 | opacity: 0.5; 11 | pointer-events: none; 12 | } 13 | #focus { 14 | position: relative; 15 | box-sizing: border-box; 16 | 17 | min-width: 50px; 18 | height: 21px; 19 | padding-left: 5px; 20 | padding-right: 5px; 21 | padding-top: 9px; 22 | cursor: pointer; 23 | } 24 | #track { 25 | height: 4px; 26 | cursor: inherit; 27 | background: #333; 28 | } 29 | #nubbin { 30 | display: inline-block; 31 | position: relative; 32 | width: 10px; 33 | height: 10px; 34 | margin-top: -6px; 35 | margin-left: -5px; 36 | cursor: inherit; 37 | box-shadow: 0 1px 3px -1px #fff inset, 0 1px 1px 0 rgba(0, 0, 0, 0.9); 38 | border-radius: 3px; 39 | background: #949494; 40 | } 41 | ve-unit-input { 42 | width: 40px; 43 | margin-left: 5px; 44 | } -------------------------------------------------------------------------------- /prop/ve-widget/slider-widget/slider.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /prop/ve-widget/textarea-widget/textarea.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | position: relative; 4 | box-sizing: border-box; 5 | min-width: 60px; 6 | border: 1px solid #666666; 7 | cursor: default; 8 | background: #232323; 9 | } 10 | 11 | :host:focus { 12 | outline: none; 13 | } 14 | 15 | :host:hover { 16 | border: 1px solid #848484; 17 | } 18 | 19 | :host[focused] { 20 | border: 1px solid #0c70a6; 21 | } 22 | 23 | :host[invalid] { 24 | border: 1px solid red; 25 | } 26 | 27 | :host[disabled] { 28 | pointer-events: none; 29 | background: #3a3a3a; 30 | } 31 | 32 | :host[disabled] #input { 33 | color: #787878; 34 | } 35 | 36 | :host[disabled] #input { 37 | pointer-events: none; 38 | } 39 | 40 | #input { 41 | display: block; 42 | padding: 2px 4px; 43 | border: 0; 44 | margin: 0; 45 | width: 100%; 46 | font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; 47 | background: transparent; 48 | color: #ddd; 49 | pointer-events: auto; 50 | user-select: auto; 51 | cursor: auto; 52 | } 53 | 54 | #input::-webkit-input-placeholder { 55 | font-style: italic; 56 | color: #666; 57 | text-shadow: none; 58 | } 59 | 60 | #input:focus { 61 | outline: none; 62 | } 63 | 64 | #input::selection { 65 | background: #007acc; 66 | } 67 | 68 | :host.mini #input { 69 | font-size: 0.6rem; 70 | } 71 | 72 | :host.small #input { 73 | font-size: 0.8rem; 74 | } 75 | 76 | :host #input { 77 | font-size: 1.0rem; 78 | } 79 | 80 | :host.large #input { 81 | font-size: 1.2rem; 82 | } 83 | 84 | :host.big #input { 85 | font-size: 1.4rem; 86 | } 87 | 88 | :host[readonly] #input { 89 | -webkit-user-select: text; 90 | cursor: text; 91 | } -------------------------------------------------------------------------------- /prop/ve-widget/textarea-widget/textarea.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /prop/ve-widget/unit-input-widget/unit-input.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /prop/ve/ve-asset-editor.html: -------------------------------------------------------------------------------- 1 | 2 | 23 | 27 | 58 | -------------------------------------------------------------------------------- /prop/ve/ve-field/ve-field.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /prop/ve/ve-field/ve-field.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | Polymer({ 3 | properties: { 4 | path: { 5 | type: String, 6 | value: '' 7 | }, 8 | type: { 9 | type: String, 10 | value: '', 11 | observer: '_typeChanged' 12 | }, 13 | attrs: { 14 | type: Object, 15 | value: function() { 16 | return {} 17 | }, 18 | observer: '_attrsChanged' 19 | }, 20 | value: { 21 | value: null, 22 | notify: true, 23 | observer: '_valueChanged' 24 | } 25 | }, 26 | ready: function() { 27 | this.rebuild() 28 | }, 29 | rebuild: function() { 30 | var t = this 31 | this.async(function() { 32 | t._rebuild() 33 | }, 50) 34 | }, 35 | _rebuild: function() { 36 | var t = Polymer.dom(this), 37 | e = void 0 38 | let element_name = this.type || 'input' 39 | element_name = 've-' + element_name 40 | let child = t.firstChild 41 | let isRecreate = false 42 | if (!t.firstChild || t.firstChild.localName != element_name) { 43 | child = document.createElement(element_name) 44 | isRecreate = true 45 | } 46 | t.firstChild && t.removeChild(t.firstChild) 47 | child.value = this.value 48 | child.attrs = this.attrs 49 | child.path = this.path 50 | if (isRecreate) { 51 | if (this.type == 'select') { 52 | let selects = this.attrs.selects || {} 53 | for (var k in selects) { 54 | child.add(k, selects[k]) 55 | } 56 | child.text = selects[this.value] 57 | } 58 | } 59 | 60 | 61 | t.appendChild(child) 62 | }, 63 | _valueChanged: function(t, e) { 64 | if (!isNull(t) && !isNull(e) && typeof t != typeof e) { 65 | this.rebuild() 66 | } 67 | }, 68 | _attrsChanged: function() { 69 | this.rebuild() 70 | }, 71 | _typeChanged: function() { 72 | this.rebuild() 73 | } 74 | }) -------------------------------------------------------------------------------- /prop/ve/ve-preview/ve-image-editor.html: -------------------------------------------------------------------------------- 1 | 2 | 7 | 17 | 18 | -------------------------------------------------------------------------------- /prop/ve/ve-preview/ve-image-preview.html: -------------------------------------------------------------------------------- 1 | 2 | 41 | 49 | 50 | -------------------------------------------------------------------------------- /prop/ve/ve-preview/ve-image-preview.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | Polymer({ 3 | properties: { 4 | info: { 5 | type: String, 6 | value: 'Unknown' 7 | }, 8 | path: { 9 | type: String, 10 | value: '', 11 | observer: '_pathChanged' 12 | }, 13 | mtime: { 14 | type: Number, 15 | value: 0 16 | } 17 | }, 18 | _getSize: function() { 19 | return { 20 | width: this._image.width, 21 | height: this._image.height 22 | } 23 | }, 24 | 25 | ready: function() { 26 | 27 | }, 28 | _pathChanged: function() { 29 | if (!this.path) { 30 | return 31 | } 32 | var self = this 33 | this._image = new Image 34 | this._image.onload = function() { 35 | var size = self._getSize() 36 | self.info = size.width + ' x ' + size.height, self.resize() 37 | } 38 | this._image.src = fullPath(this.path) 39 | 40 | }, 41 | 42 | fitSize: function(srcWidth, srcHeight, destWidth, destHeight) { 43 | let width, height 44 | if (srcWidth > destWidth && srcHeight > destHeight) { 45 | width = destWidth 46 | height = srcHeight * destWidth / srcWidth 47 | 48 | if (height > destHeight) { 49 | height = destHeight 50 | width = srcWidth * destHeight / srcHeight 51 | } 52 | } else if (srcWidth > destWidth) { 53 | width = destWidth 54 | height = srcHeight * destWidth / srcWidth 55 | } else if (srcHeight > destHeight) { 56 | width = srcWidth * destHeight / srcHeight 57 | height = destHeight 58 | } else { 59 | width = srcWidth 60 | height = srcHeight 61 | } 62 | 63 | return [width, height] 64 | }, 65 | resize: function() { 66 | var contentRect = this.$.content.getBoundingClientRect(), 67 | imageSize = this._getSize(), 68 | size = this.fitSize(imageSize.width, imageSize.height, contentRect.width, contentRect.height) 69 | 70 | this.$.canvas.width = Math.ceil(size[0]) 71 | this.$.canvas.height = Math.ceil(size[1]) 72 | this.repaint() 73 | }, 74 | repaint: function() { 75 | var canvas = this.$.canvas.getContext('2d') 76 | canvas.imageSmoothingEnabled = false 77 | 78 | var w = this.$.canvas.width, 79 | h = this.$.canvas.height 80 | canvas.drawImage(this._image, 0, 0, w, h) 81 | } 82 | }) -------------------------------------------------------------------------------- /prop/ve/ve-prop/ve-prop.css: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | /*flex-direction:row; 4 | flex-wrap:nowrap;*/ 5 | align-items: center; 6 | font-size: 12px; 7 | box-sizing: border-box; 8 | min-height: 20px; 9 | margin-top: 7px; 10 | margin-bottom: 7px; 11 | cursor: default; 12 | letter-spacing: 1px; 13 | font-family: "微软雅黑" 14 | } 15 | 16 | .group { 17 | margin-left: 10px; 18 | margin-right: 10px 19 | } 20 | 21 | .name { 22 | min-width: 50px; 23 | max-width: 50px; 24 | text-overflow: ellipsis; 25 | color: #fff; 26 | } 27 | 28 | .name:hover { 29 | color: #f90 30 | } 31 | 32 | :host[focused] .name { 33 | color: #00a6ff 34 | } -------------------------------------------------------------------------------- /prop/ve/ve-prop/ve-prop.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /prop/ve/ve-prop/ve-prop.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | Polymer({ 4 | listeners: { 5 | keydown: '_onKeyDown' 6 | }, 7 | properties: { 8 | prop: { 9 | value: function() { 10 | return { 11 | path: '', 12 | type: '', 13 | name: '', 14 | attrs: {}, 15 | value: null 16 | } 17 | }, 18 | notify: true 19 | } 20 | }, 21 | ready: function() {}, 22 | _nameText: function(name) { 23 | return name ? ToHumanText(name) : '(Anonymous)' 24 | }, 25 | _nameClass: function(name) { 26 | return name ? 'name flex-1' : 'name anonymous flex-1' 27 | }, 28 | _onKeyDown: function(event) {} 29 | }) -------------------------------------------------------------------------------- /prop/ve/ve-vec2.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 23 | 24 | 43 | -------------------------------------------------------------------------------- /render/ipc.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | /** 4 | * @module Ipc 5 | */ 6 | let Ipc = {} 7 | module.exports = Ipc 8 | 9 | Ipc.sendToAll = function(message, ...args) { 10 | if (typeof message !== 'string') { 11 | Console.error('Call to `sendToAll` failed. The message must be a string.') 12 | return 13 | } 14 | 15 | args = [null, message, ...args] 16 | _render2all.apply(null, args) 17 | } 18 | Ipc.sendToAllPanel = function(message, ...args) { 19 | if (typeof message !== 'string') { 20 | Console.error('Call to `sendToAllPanel` failed. The message must be a string.') 21 | return 22 | } 23 | 24 | args = [null, message, ...args] 25 | _render2allpanel.apply(null, args) 26 | } 27 | 28 | Ipc.sendToMain = function(message, ...args) { 29 | args = ['ipc-render2main', message, ...args] 30 | ipcRenderer.send.apply(ipcRenderer, args) 31 | } 32 | 33 | Ipc.sendToMainDirect = function(message, ...args) { 34 | args = [message, ...args] 35 | ipcRenderer.send.apply(ipcRenderer, args) 36 | } 37 | 38 | ipcRenderer.on('ipc-renderer2all', _render2all) 39 | 40 | ipcRenderer.on('ipc-renderer2allpanel', _render2allpanel) 41 | 42 | function _render2all(event, message, ...args) { 43 | let oneArgs = [...args] 44 | let docker = global.myDocker 45 | if (!docker) { 46 | return 47 | } 48 | let frameList = docker._frameList 49 | for (var i = 0; i < frameList.length; ++i) { 50 | let panels = frameList[i]._panelList 51 | for (var a = 0; a < panels.length; ++a) { 52 | var main = panels[a]._main 53 | if (main) { 54 | let msg = main.messages || {} 55 | let fn = msg[message] 56 | if (typeof fn === 'function') { 57 | fn.call(main, message, ...args) 58 | continue 59 | } 60 | main.dispatchEvent(new window.CustomEvent(message, args)) 61 | } 62 | } 63 | } 64 | } 65 | 66 | function _render2allpanel(event, message, ...args) { 67 | let oneArgs = [...args] 68 | let docker = global.myDocker 69 | if (!docker) { 70 | return 71 | } 72 | let frameList = docker._frameList 73 | for (var i = 0; i < frameList.length; ++i) { 74 | let panels = frameList[i]._panelList 75 | for (var a = 0; a < panels.length; ++a) { 76 | var panel = panels[a] 77 | let msg = panel.messages || {} 78 | let fn = msg[message] 79 | if (typeof fn === 'function') { 80 | fn.call(panel, message, ...args) 81 | continue 82 | } 83 | } 84 | } 85 | } -------------------------------------------------------------------------------- /res/align-bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/align-bottom.png -------------------------------------------------------------------------------- /res/align-h-center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/align-h-center.png -------------------------------------------------------------------------------- /res/align-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/align-left.png -------------------------------------------------------------------------------- /res/align-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/align-right.png -------------------------------------------------------------------------------- /res/align-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/align-top.png -------------------------------------------------------------------------------- /res/align-v-center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/align-v-center.png -------------------------------------------------------------------------------- /res/alipay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/alipay.png -------------------------------------------------------------------------------- /res/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/arrow_down.png -------------------------------------------------------------------------------- /res/arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/arrow_up.png -------------------------------------------------------------------------------- /res/control/Armature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/control/Armature.png -------------------------------------------------------------------------------- /res/control/Atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/control/Atlas.png -------------------------------------------------------------------------------- /res/control/Button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/control/Button.png -------------------------------------------------------------------------------- /res/control/CheckBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/control/CheckBox.png -------------------------------------------------------------------------------- /res/control/Input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/control/Input.png -------------------------------------------------------------------------------- /res/control/Label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/control/Label.png -------------------------------------------------------------------------------- /res/control/Layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/control/Layout.png -------------------------------------------------------------------------------- /res/control/Node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/control/Node.png -------------------------------------------------------------------------------- /res/control/Rich.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/control/Rich.png -------------------------------------------------------------------------------- /res/control/Scale9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/control/Scale9.png -------------------------------------------------------------------------------- /res/control/SliderBar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/control/SliderBar.png -------------------------------------------------------------------------------- /res/control/Sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/control/Sprite.png -------------------------------------------------------------------------------- /res/control/listview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/control/listview.png -------------------------------------------------------------------------------- /res/control/pageview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/control/pageview.png -------------------------------------------------------------------------------- /res/control/scrollview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/control/scrollview.png -------------------------------------------------------------------------------- /res/default/AltasNum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/AltasNum.png -------------------------------------------------------------------------------- /res/default/ButtonDisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/ButtonDisable.png -------------------------------------------------------------------------------- /res/default/ButtonNormal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/ButtonNormal.png -------------------------------------------------------------------------------- /res/default/ButtonSelect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/ButtonSelect.png -------------------------------------------------------------------------------- /res/default/CheckBoxDisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/CheckBoxDisable.png -------------------------------------------------------------------------------- /res/default/CheckBoxNodeDisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/CheckBoxNodeDisable.png -------------------------------------------------------------------------------- /res/default/CheckBoxNodeNormal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/CheckBoxNodeNormal.png -------------------------------------------------------------------------------- /res/default/CheckBoxNormal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/CheckBoxNormal.png -------------------------------------------------------------------------------- /res/default/CheckBoxSelect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/CheckBoxSelect.png -------------------------------------------------------------------------------- /res/default/Scale9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/Scale9.png -------------------------------------------------------------------------------- /res/default/SliderBack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/SliderBack.png -------------------------------------------------------------------------------- /res/default/SliderBar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/SliderBar.png -------------------------------------------------------------------------------- /res/default/SliderNodeDisable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/SliderNodeDisable.png -------------------------------------------------------------------------------- /res/default/SliderNodeNormal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/SliderNodeNormal.png -------------------------------------------------------------------------------- /res/default/SliderNodeSelect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/SliderNodeSelect.png -------------------------------------------------------------------------------- /res/default/Sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/Sprite.png -------------------------------------------------------------------------------- /res/default/shurukuang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/default/shurukuang.png -------------------------------------------------------------------------------- /res/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/grid.png -------------------------------------------------------------------------------- /res/grid1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/grid1.png -------------------------------------------------------------------------------- /res/grid2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/grid2.png -------------------------------------------------------------------------------- /res/居中.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/res/居中.png -------------------------------------------------------------------------------- /screenshot/2dx-screen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/screenshot/2dx-screen.jpg -------------------------------------------------------------------------------- /screenshot/screenprint.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tickbh/VisualUIEditor/13e38a95be4d37aaa6f7faac3c57ff0e5190a0f9/screenshot/screenprint.jpg -------------------------------------------------------------------------------- /third/ace/src/ext-error_marker.js: -------------------------------------------------------------------------------- 1 | 2 | ; 3 | (function() { 4 | window.require(["ace/ext/error_marker"], function() {}); 5 | })(); 6 | -------------------------------------------------------------------------------- /third/ace/src/ext-linking.js: -------------------------------------------------------------------------------- 1 | define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"], function(require, exports, module) { 2 | 3 | var Editor = require("ace/editor").Editor; 4 | 5 | require("../config").defineOptions(Editor.prototype, "editor", { 6 | enableLinking: { 7 | set: function(val) { 8 | if (val) { 9 | this.on("click", onClick); 10 | this.on("mousemove", onMouseMove); 11 | } else { 12 | this.off("click", onClick); 13 | this.off("mousemove", onMouseMove); 14 | } 15 | }, 16 | value: false 17 | } 18 | }) 19 | 20 | function onMouseMove(e) { 21 | var editor = e.editor; 22 | var ctrl = e.getAccelKey(); 23 | 24 | if (ctrl) { 25 | var editor = e.editor; 26 | var docPos = e.getDocumentPosition(); 27 | var session = editor.session; 28 | var token = session.getTokenAt(docPos.row, docPos.column); 29 | 30 | editor._emit("linkHover", {position: docPos, token: token}); 31 | } 32 | } 33 | 34 | function onClick(e) { 35 | var ctrl = e.getAccelKey(); 36 | var button = e.getButton(); 37 | 38 | if (button == 0 && ctrl) { 39 | var editor = e.editor; 40 | var docPos = e.getDocumentPosition(); 41 | var session = editor.session; 42 | var token = session.getTokenAt(docPos.row, docPos.column); 43 | 44 | editor._emit("linkClick", {position: docPos, token: token}); 45 | } 46 | } 47 | 48 | }); 49 | (function() { 50 | window.require(["ace/ext/linking"], function() {}); 51 | })(); 52 | -------------------------------------------------------------------------------- /third/ace/src/ext-statusbar.js: -------------------------------------------------------------------------------- 1 | define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"], function(require, exports, module) { 2 | "use strict"; 3 | var dom = require("ace/lib/dom"); 4 | var lang = require("ace/lib/lang"); 5 | 6 | var StatusBar = function(editor, parentNode) { 7 | this.element = dom.createElement("div"); 8 | this.element.className = "ace_status-indicator"; 9 | this.element.style.cssText = "display: inline-block;"; 10 | parentNode.appendChild(this.element); 11 | 12 | var statusUpdate = lang.delayedCall(function(){ 13 | this.updateStatus(editor) 14 | }.bind(this)).schedule.bind(null, 100); 15 | 16 | editor.on("changeStatus", statusUpdate); 17 | editor.on("changeSelection", statusUpdate); 18 | editor.on("keyboardActivity", statusUpdate); 19 | }; 20 | 21 | (function(){ 22 | this.updateStatus = function(editor) { 23 | var status = []; 24 | function add(str, separator) { 25 | str && status.push(str, separator || "|"); 26 | } 27 | 28 | add(editor.keyBinding.getStatusText(editor)); 29 | if (editor.commands.recording) 30 | add("REC"); 31 | 32 | var sel = editor.selection; 33 | var c = sel.lead; 34 | 35 | if (!sel.isEmpty()) { 36 | var r = editor.getSelectionRange(); 37 | add("(" + (r.end.row - r.start.row) + ":" +(r.end.column - r.start.column) + ")", " "); 38 | } 39 | add(c.row + ":" + c.column, " "); 40 | if (sel.rangeCount) 41 | add("[" + sel.rangeCount + "]", " "); 42 | status.pop(); 43 | this.element.textContent = status.join(""); 44 | }; 45 | }).call(StatusBar.prototype); 46 | 47 | exports.StatusBar = StatusBar; 48 | 49 | }); 50 | (function() { 51 | window.require(["ace/ext/statusbar"], function() {}); 52 | })(); 53 | -------------------------------------------------------------------------------- /third/ace/src/mode-gitignore.js: -------------------------------------------------------------------------------- 1 | define("ace/mode/gitignore_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | var oop = require("../lib/oop"); 5 | var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; 6 | 7 | var GitignoreHighlightRules = function() { 8 | this.$rules = { 9 | "start" : [ 10 | { 11 | token : "comment", 12 | regex : /^\s*#.*$/ 13 | }, { 14 | token : "keyword", // negated patterns 15 | regex : /^\s*!.*$/ 16 | } 17 | ] 18 | }; 19 | 20 | this.normalizeRules(); 21 | }; 22 | 23 | GitignoreHighlightRules.metaData = { 24 | fileTypes: ['gitignore'], 25 | name: 'Gitignore' 26 | }; 27 | 28 | oop.inherits(GitignoreHighlightRules, TextHighlightRules); 29 | 30 | exports.GitignoreHighlightRules = GitignoreHighlightRules; 31 | }); 32 | 33 | define("ace/mode/gitignore",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gitignore_highlight_rules"], function(require, exports, module) { 34 | "use strict"; 35 | 36 | var oop = require("../lib/oop"); 37 | var TextMode = require("./text").Mode; 38 | var GitignoreHighlightRules = require("./gitignore_highlight_rules").GitignoreHighlightRules; 39 | 40 | var Mode = function() { 41 | this.HighlightRules = GitignoreHighlightRules; 42 | }; 43 | oop.inherits(Mode, TextMode); 44 | 45 | (function() { 46 | this.lineCommentStart = "#"; 47 | this.$id = "ace/mode/gitignore"; 48 | }).call(Mode.prototype); 49 | 50 | exports.Mode = Mode; 51 | }); 52 | -------------------------------------------------------------------------------- /third/ace/src/mode-lucene.js: -------------------------------------------------------------------------------- 1 | define("ace/mode/lucene_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | var oop = require("../lib/oop"); 5 | var lang = require("../lib/lang"); 6 | var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; 7 | 8 | var LuceneHighlightRules = function() { 9 | this.$rules = { 10 | "start" : [ 11 | { 12 | token : "constant.character.negation", 13 | regex : "[\\-]" 14 | }, { 15 | token : "constant.character.interro", 16 | regex : "[\\?]" 17 | }, { 18 | token : "constant.character.asterisk", 19 | regex : "[\\*]" 20 | }, { 21 | token: 'constant.character.proximity', 22 | regex: '~[0-9]+\\b' 23 | }, { 24 | token : 'keyword.operator', 25 | regex: '(?:AND|OR|NOT)\\b' 26 | }, { 27 | token : "paren.lparen", 28 | regex : "[\\(]" 29 | }, { 30 | token : "paren.rparen", 31 | regex : "[\\)]" 32 | }, { 33 | token : "keyword", 34 | regex : "[\\S]+:" 35 | }, { 36 | token : "string", // " string 37 | regex : '".*?"' 38 | }, { 39 | token : "text", 40 | regex : "\\s+" 41 | } 42 | ] 43 | }; 44 | }; 45 | 46 | oop.inherits(LuceneHighlightRules, TextHighlightRules); 47 | 48 | exports.LuceneHighlightRules = LuceneHighlightRules; 49 | }); 50 | 51 | define("ace/mode/lucene",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lucene_highlight_rules"], function(require, exports, module) { 52 | 'use strict'; 53 | 54 | var oop = require("../lib/oop"); 55 | var TextMode = require("./text").Mode; 56 | var LuceneHighlightRules = require("./lucene_highlight_rules").LuceneHighlightRules; 57 | 58 | var Mode = function() { 59 | this.HighlightRules = LuceneHighlightRules; 60 | }; 61 | 62 | oop.inherits(Mode, TextMode); 63 | 64 | (function() { 65 | this.$id = "ace/mode/lucene"; 66 | }).call(Mode.prototype); 67 | 68 | exports.Mode = Mode; 69 | }); 70 | -------------------------------------------------------------------------------- /third/ace/src/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(require, exports, module) { 2 | "use strict"; 3 | 4 | var oop = require("../lib/oop"); 5 | var TextMode = require("./text").Mode; 6 | var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; 7 | var Behaviour = require("./behaviour").Behaviour; 8 | 9 | var Mode = function() { 10 | this.HighlightRules = TextHighlightRules; 11 | this.$behaviour = new Behaviour(); 12 | }; 13 | 14 | oop.inherits(Mode, TextMode); 15 | 16 | (function() { 17 | this.type = "text"; 18 | this.getNextLineIndent = function(state, line, tab) { 19 | return ''; 20 | }; 21 | this.$id = "ace/mode/plain_text"; 22 | }).call(Mode.prototype); 23 | 24 | exports.Mode = Mode; 25 | }); 26 | -------------------------------------------------------------------------------- /third/ace/src/mode-properties.js: -------------------------------------------------------------------------------- 1 | define("ace/mode/properties_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | var oop = require("../lib/oop"); 5 | var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; 6 | 7 | var PropertiesHighlightRules = function() { 8 | 9 | var escapeRe = /\\u[0-9a-fA-F]{4}|\\/; 10 | 11 | this.$rules = { 12 | "start" : [ 13 | { 14 | token : "comment", 15 | regex : /[!#].*$/ 16 | }, { 17 | token : "keyword", 18 | regex : /[=:]$/ 19 | }, { 20 | token : "keyword", 21 | regex : /[=:]/, 22 | next : "value" 23 | }, { 24 | token : "constant.language.escape", 25 | regex : escapeRe 26 | }, { 27 | defaultToken: "variable" 28 | } 29 | ], 30 | "value" : [ 31 | { 32 | regex : /\\$/, 33 | token : "string", 34 | next : "value" 35 | }, { 36 | regex : /$/, 37 | token : "string", 38 | next : "start" 39 | }, { 40 | token : "constant.language.escape", 41 | regex : escapeRe 42 | }, { 43 | defaultToken: "string" 44 | } 45 | ] 46 | }; 47 | 48 | }; 49 | 50 | oop.inherits(PropertiesHighlightRules, TextHighlightRules); 51 | 52 | exports.PropertiesHighlightRules = PropertiesHighlightRules; 53 | }); 54 | 55 | define("ace/mode/properties",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/properties_highlight_rules"], function(require, exports, module) { 56 | "use strict"; 57 | 58 | var oop = require("../lib/oop"); 59 | var TextMode = require("./text").Mode; 60 | var PropertiesHighlightRules = require("./properties_highlight_rules").PropertiesHighlightRules; 61 | 62 | var Mode = function() { 63 | this.HighlightRules = PropertiesHighlightRules; 64 | }; 65 | oop.inherits(Mode, TextMode); 66 | 67 | (function() { 68 | this.$id = "ace/mode/properties"; 69 | }).call(Mode.prototype); 70 | 71 | exports.Mode = Mode; 72 | }); 73 | -------------------------------------------------------------------------------- /third/ace/src/mode-text.js: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /third/ace/src/snippets/abap.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/abap",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "abap"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/abc.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/abc",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "\n\ 5 | snippet zupfnoter.print\n\ 6 | %%%%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\ 7 | \n\ 8 | snippet zupfnoter.note\n\ 9 | %%%%hn.note {\"pos\": [${1:pos_x},${2:pos_y}], \"text\": \"${3:text}\", \"style\": \"${4:style}\"}\n\ 10 | \n\ 11 | snippet zupfnoter.annotation\n\ 12 | %%%%hn.annotation {\"id\": \"${1:id}\", \"pos\": [${2:pos}], \"text\": \"${3:text}\"}\n\ 13 | \n\ 14 | snippet zupfnoter.lyrics\n\ 15 | %%%%hn.lyrics {\"pos\": [${1:x_pos},${2:y_pos}]}\n\ 16 | \n\ 17 | snippet zupfnoter.legend\n\ 18 | %%%%hn.legend {\"pos\": [${1:x_pos},${2:y_pos}]}\n\ 19 | \n\ 20 | \n\ 21 | \n\ 22 | snippet zupfnoter.target\n\ 23 | \"^:${1:target}\"\n\ 24 | \n\ 25 | snippet zupfnoter.goto\n\ 26 | \"^@${1:target}@${2:distance}\"\n\ 27 | \n\ 28 | snippet zupfnoter.annotationref\n\ 29 | \"^#${1:target}\"\n\ 30 | \n\ 31 | snippet zupfnoter.annotation\n\ 32 | \"^!${1:text}@${2:x_offset},${3:y_offset}\"\n\ 33 | \n\ 34 | \n\ 35 | "; 36 | exports.scope = "abc"; 37 | 38 | }); 39 | -------------------------------------------------------------------------------- /third/ace/src/snippets/ada.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/ada",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "ada"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/apache_conf.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/apache_conf",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "apache_conf"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/applescript.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/applescript",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "applescript"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/asciidoc.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/asciidoc",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "asciidoc"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/assembly_x86.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/assembly_x86",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "assembly_x86"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/autohotkey.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/autohotkey",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "autohotkey"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/batchfile.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/batchfile",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "batchfile"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/c9search.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/c9search",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "c9search"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/cirru.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/cirru",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "cirru"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/cobol.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/cobol",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "cobol"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/coldfusion.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/coldfusion",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "coldfusion"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/csharp.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/csharp",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "csharp"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/curly.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/curly",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "curly"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/d.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/d",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "d"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/dart.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/dart",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet lib\n\ 5 | library ${1};\n\ 6 | ${2}\n\ 7 | snippet im\n\ 8 | import '${1}';\n\ 9 | ${2}\n\ 10 | snippet pa\n\ 11 | part '${1}';\n\ 12 | ${2}\n\ 13 | snippet pao\n\ 14 | part of ${1};\n\ 15 | ${2}\n\ 16 | snippet main\n\ 17 | void main() {\n\ 18 | ${1:/* code */}\n\ 19 | }\n\ 20 | snippet st\n\ 21 | static ${1}\n\ 22 | snippet fi\n\ 23 | final ${1}\n\ 24 | snippet re\n\ 25 | return ${1}\n\ 26 | snippet br\n\ 27 | break;\n\ 28 | snippet th\n\ 29 | throw ${1}\n\ 30 | snippet cl\n\ 31 | class ${1:`Filename(\"\", \"untitled\")`} ${2}\n\ 32 | snippet imp\n\ 33 | implements ${1}\n\ 34 | snippet ext\n\ 35 | extends ${1}\n\ 36 | snippet if\n\ 37 | if (${1:true}) {\n\ 38 | ${2}\n\ 39 | }\n\ 40 | snippet ife\n\ 41 | if (${1:true}) {\n\ 42 | ${2}\n\ 43 | } else {\n\ 44 | ${3}\n\ 45 | }\n\ 46 | snippet el\n\ 47 | else\n\ 48 | snippet sw\n\ 49 | switch (${1}) {\n\ 50 | ${2}\n\ 51 | }\n\ 52 | snippet cs\n\ 53 | case ${1}:\n\ 54 | ${2}\n\ 55 | snippet de\n\ 56 | default:\n\ 57 | ${1}\n\ 58 | snippet for\n\ 59 | for (var ${2:i} = 0, len = ${1:things}.length; $2 < len; ${3:++}$2) {\n\ 60 | ${4:$1[$2]}\n\ 61 | }\n\ 62 | snippet fore\n\ 63 | for (final ${2:item} in ${1:itemList}) {\n\ 64 | ${3:/* code */}\n\ 65 | }\n\ 66 | snippet wh\n\ 67 | while (${1:/* condition */}) {\n\ 68 | ${2:/* code */}\n\ 69 | }\n\ 70 | snippet dowh\n\ 71 | do {\n\ 72 | ${2:/* code */}\n\ 73 | } while (${1:/* condition */});\n\ 74 | snippet as\n\ 75 | assert(${1:/* condition */});\n\ 76 | snippet try\n\ 77 | try {\n\ 78 | ${2}\n\ 79 | } catch (${1:Exception e}) {\n\ 80 | }\n\ 81 | snippet tryf\n\ 82 | try {\n\ 83 | ${2}\n\ 84 | } catch (${1:Exception e}) {\n\ 85 | } finally {\n\ 86 | }\n\ 87 | "; 88 | exports.scope = "dart"; 89 | 90 | }); 91 | -------------------------------------------------------------------------------- /third/ace/src/snippets/diff.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/diff",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# DEP-3 (http://dep.debian.net/deps/dep3/) style patch header\n\ 5 | snippet header DEP-3 style header\n\ 6 | Description: ${1}\n\ 7 | Origin: ${2:vendor|upstream|other}, ${3:url of the original patch}\n\ 8 | Bug: ${4:url in upstream bugtracker}\n\ 9 | Forwarded: ${5:no|not-needed|url}\n\ 10 | Author: ${6:`g:snips_author`}\n\ 11 | Reviewed-by: ${7:name and email}\n\ 12 | Last-Update: ${8:`strftime(\"%Y-%m-%d\")`}\n\ 13 | Applied-Upstream: ${9:upstream version|url|commit}\n\ 14 | \n\ 15 | "; 16 | exports.scope = "diff"; 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /third/ace/src/snippets/dockerfile.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/dockerfile",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "dockerfile"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/dot.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/dot",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "dot"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/drools.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/drools",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "\n\ 5 | snippet rule\n\ 6 | rule \"${1?:rule_name}\"\n\ 7 | when\n\ 8 | ${2:// when...} \n\ 9 | then\n\ 10 | ${3:// then...}\n\ 11 | end\n\ 12 | \n\ 13 | snippet query\n\ 14 | query ${1?:query_name}\n\ 15 | ${2:// find} \n\ 16 | end\n\ 17 | \n\ 18 | snippet declare\n\ 19 | declare ${1?:type_name}\n\ 20 | ${2:// attributes} \n\ 21 | end\n\ 22 | \n\ 23 | "; 24 | exports.scope = "drools"; 25 | 26 | }); 27 | -------------------------------------------------------------------------------- /third/ace/src/snippets/eiffel.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/eiffel",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "eiffel"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/ejs.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/ejs",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "ejs"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/elixir.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/elixir",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = ""; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/elm.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/elm",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "elm"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/forth.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/forth",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "forth"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/fortran.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/fortran",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "fortran"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/ftl.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/ftl",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "ftl"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/gcode.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/gcode",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "gcode"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/gherkin.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/gherkin",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "gherkin"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/gitignore.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/gitignore",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "gitignore"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/glsl.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/glsl",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "glsl"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/gobstones.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/gobstones",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# Procedure\n\ 5 | snippet proc\n\ 6 | procedure ${1?:name}(${2:argument}) {\n\ 7 | ${3:// body...}\n\ 8 | }\n\ 9 | \n\ 10 | # Function\n\ 11 | snippet fun\n\ 12 | function ${1?:name}(${2:argument}) {\n\ 13 | return ${3:// body...}\n\ 14 | }\n\ 15 | \n\ 16 | # Repeat\n\ 17 | snippet rep\n\ 18 | repeat ${1?:times} {\n\ 19 | ${2:// body...}\n\ 20 | }\n\ 21 | \n\ 22 | # For\n\ 23 | snippet for\n\ 24 | foreach ${1?:e} in ${2?:list} {\n\ 25 | ${3:// body...} \n\ 26 | }\n\ 27 | \n\ 28 | # If\n\ 29 | snippet if\n\ 30 | if (${1?:condition}) {\n\ 31 | ${3:// body...} \n\ 32 | }\n\ 33 | \n\ 34 | # While\n\ 35 | while (${1?:condition}) {\n\ 36 | ${2:// body...} \n\ 37 | }\n\ 38 | "; 39 | exports.scope = "gobstones"; 40 | 41 | }); 42 | -------------------------------------------------------------------------------- /third/ace/src/snippets/golang.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/golang",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "golang"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/groovy.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/groovy",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "groovy"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/haml.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/haml",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet t\n\ 5 | %table\n\ 6 | %tr\n\ 7 | %th\n\ 8 | ${1:headers}\n\ 9 | %tr\n\ 10 | %td\n\ 11 | ${2:headers}\n\ 12 | snippet ul\n\ 13 | %ul\n\ 14 | %li\n\ 15 | ${1:item}\n\ 16 | %li\n\ 17 | snippet =rp\n\ 18 | = render :partial => '${1:partial}'\n\ 19 | snippet =rpl\n\ 20 | = render :partial => '${1:partial}', :locals => {}\n\ 21 | snippet =rpc\n\ 22 | = render :partial => '${1:partial}', :collection => @$1\n\ 23 | \n\ 24 | "; 25 | exports.scope = "haml"; 26 | 27 | }); 28 | -------------------------------------------------------------------------------- /third/ace/src/snippets/handlebars.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/handlebars",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "handlebars"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/haskell.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/haskell",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet lang\n\ 5 | {-# LANGUAGE ${1:OverloadedStrings} #-}\n\ 6 | snippet info\n\ 7 | -- |\n\ 8 | -- Module : ${1:Module.Namespace}\n\ 9 | -- Copyright : ${2:Author} ${3:2011-2012}\n\ 10 | -- License : ${4:BSD3}\n\ 11 | --\n\ 12 | -- Maintainer : ${5:email@something.com}\n\ 13 | -- Stability : ${6:experimental}\n\ 14 | -- Portability : ${7:unknown}\n\ 15 | --\n\ 16 | -- ${8:Description}\n\ 17 | --\n\ 18 | snippet import\n\ 19 | import ${1:Data.Text}\n\ 20 | snippet import2\n\ 21 | import ${1:Data.Text} (${2:head})\n\ 22 | snippet importq\n\ 23 | import qualified ${1:Data.Text} as ${2:T}\n\ 24 | snippet inst\n\ 25 | instance ${1:Monoid} ${2:Type} where\n\ 26 | ${3}\n\ 27 | snippet type\n\ 28 | type ${1:Type} = ${2:Type}\n\ 29 | snippet data\n\ 30 | data ${1:Type} = ${2:$1} ${3:Int}\n\ 31 | snippet newtype\n\ 32 | newtype ${1:Type} = ${2:$1} ${3:Int}\n\ 33 | snippet class\n\ 34 | class ${1:Class} a where\n\ 35 | ${2}\n\ 36 | snippet module\n\ 37 | module `substitute(substitute(expand('%:r'), '[/\\\\]','.','g'),'^\\%(\\l*\\.\\)\\?','','')` (\n\ 38 | ) where\n\ 39 | `expand('%') =~ 'Main' ? \"\\n\\nmain = do\\n print \\\"hello world\\\"\" : \"\"`\n\ 40 | \n\ 41 | snippet const\n\ 42 | ${1:name} :: ${2:a}\n\ 43 | $1 = ${3:undefined}\n\ 44 | snippet fn\n\ 45 | ${1:fn} :: ${2:a} -> ${3:a}\n\ 46 | $1 ${4} = ${5:undefined}\n\ 47 | snippet fn2\n\ 48 | ${1:fn} :: ${2:a} -> ${3:a} -> ${4:a}\n\ 49 | $1 ${5} = ${6:undefined}\n\ 50 | snippet ap\n\ 51 | ${1:map} ${2:fn} ${3:list}\n\ 52 | snippet do\n\ 53 | do\n\ 54 | \n\ 55 | snippet λ\n\ 56 | \\${1:x} -> ${2}\n\ 57 | snippet \\\n\ 58 | \\${1:x} -> ${2}\n\ 59 | snippet <-\n\ 60 | ${1:a} <- ${2:m a}\n\ 61 | snippet ←\n\ 62 | ${1:a} <- ${2:m a}\n\ 63 | snippet ->\n\ 64 | ${1:m a} -> ${2:a}\n\ 65 | snippet →\n\ 66 | ${1:m a} -> ${2:a}\n\ 67 | snippet tup\n\ 68 | (${1:a}, ${2:b})\n\ 69 | snippet tup2\n\ 70 | (${1:a}, ${2:b}, ${3:c})\n\ 71 | snippet tup3\n\ 72 | (${1:a}, ${2:b}, ${3:c}, ${4:d})\n\ 73 | snippet rec\n\ 74 | ${1:Record} { ${2:recFieldA} = ${3:undefined}\n\ 75 | , ${4:recFieldB} = ${5:undefined}\n\ 76 | }\n\ 77 | snippet case\n\ 78 | case ${1:something} of\n\ 79 | ${2} -> ${3}\n\ 80 | snippet let\n\ 81 | let ${1} = ${2}\n\ 82 | in ${3}\n\ 83 | snippet where\n\ 84 | where\n\ 85 | ${1:fn} = ${2:undefined}\n\ 86 | "; 87 | exports.scope = "haskell"; 88 | 89 | }); 90 | -------------------------------------------------------------------------------- /third/ace/src/snippets/haskell_cabal.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/haskell_cabal",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "haskell_cabal"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/haxe.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/haxe",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "haxe"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/html_elixir.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/html_elixir",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "html_elixir"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/html_ruby.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/html_ruby",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "html_ruby"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/ini.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/ini",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "ini"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/io.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/io",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippets = [ 5 | { 6 | "content": "assertEquals(${1:expected}, ${2:expr})", 7 | "name": "assertEquals", 8 | "scope": "io", 9 | "tabTrigger": "ae" 10 | }, 11 | { 12 | "content": "${1:${2:newValue} := ${3:Object} }clone do(\n\t$0\n)", 13 | "name": "clone do", 14 | "scope": "io", 15 | "tabTrigger": "cdo" 16 | }, 17 | { 18 | "content": "docSlot(\"${1:slotName}\", \"${2:documentation}\")", 19 | "name": "docSlot", 20 | "scope": "io", 21 | "tabTrigger": "ds" 22 | }, 23 | { 24 | "content": "(${1:header,}\n\t${2:body}\n)$0", 25 | "keyEquivalent": "@(", 26 | "name": "Indented Bracketed Line", 27 | "scope": "io", 28 | "tabTrigger": "(" 29 | }, 30 | { 31 | "content": "\n\t$0\n", 32 | "keyEquivalent": "\r", 33 | "name": "Special: Return Inside Empty Parenthesis", 34 | "scope": "io meta.empty-parenthesis.io, io meta.comma-parenthesis.io" 35 | }, 36 | { 37 | "content": "${1:methodName} := method(${2:args,}\n\t$0\n)", 38 | "name": "method", 39 | "scope": "io", 40 | "tabTrigger": "m" 41 | }, 42 | { 43 | "content": "newSlot(\"${1:slotName}\", ${2:defaultValue}, \"${3:docString}\")$0", 44 | "name": "newSlot", 45 | "scope": "io", 46 | "tabTrigger": "ns" 47 | }, 48 | { 49 | "content": "${1:name} := Object clone do(\n\t$0\n)", 50 | "name": "Object clone do", 51 | "scope": "io", 52 | "tabTrigger": "ocdo" 53 | }, 54 | { 55 | "content": "test${1:SomeFeature} := method(\n\t$0\n)", 56 | "name": "testMethod", 57 | "scope": "io", 58 | "tabTrigger": "ts" 59 | }, 60 | { 61 | "content": "${1:Something}Test := ${2:UnitTest} clone do(\n\t$0\n)", 62 | "name": "UnitTest", 63 | "scope": "io", 64 | "tabTrigger": "ut" 65 | } 66 | ]; 67 | exports.scope = "io"; 68 | 69 | }); 70 | -------------------------------------------------------------------------------- /third/ace/src/snippets/jack.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/jack",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "jack"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/jade.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/jade",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "jade"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/json.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/json",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "json"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/jsoniq.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/jsoniq",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet for\n\ 5 | for $${1:item} in ${2:expr}\n\ 6 | snippet return\n\ 7 | return ${1:expr}\n\ 8 | snippet import\n\ 9 | import module namespace ${1:ns} = \"${2:http://www.example.com/}\";\n\ 10 | snippet some\n\ 11 | some $${1:varname} in ${2:expr} satisfies ${3:expr}\n\ 12 | snippet every\n\ 13 | every $${1:varname} in ${2:expr} satisfies ${3:expr}\n\ 14 | snippet if\n\ 15 | if(${1:true}) then ${2:expr} else ${3:true}\n\ 16 | snippet switch\n\ 17 | switch(${1:\"foo\"})\n\ 18 | case ${2:\"foo\"}\n\ 19 | return ${3:true}\n\ 20 | default return ${4:false}\n\ 21 | snippet try\n\ 22 | try { ${1:expr} } catch ${2:*} { ${3:expr} }\n\ 23 | snippet tumbling\n\ 24 | for tumbling window $${1:varname} in ${2:expr}\n\ 25 | start at $${3:start} when ${4:expr}\n\ 26 | end at $${5:end} when ${6:expr}\n\ 27 | return ${7:expr}\n\ 28 | snippet sliding\n\ 29 | for sliding window $${1:varname} in ${2:expr}\n\ 30 | start at $${3:start} when ${4:expr}\n\ 31 | end at $${5:end} when ${6:expr}\n\ 32 | return ${7:expr}\n\ 33 | snippet let\n\ 34 | let $${1:varname} := ${2:expr}\n\ 35 | snippet group\n\ 36 | group by $${1:varname} := ${2:expr}\n\ 37 | snippet order\n\ 38 | order by ${1:expr} ${2:descending}\n\ 39 | snippet stable\n\ 40 | stable order by ${1:expr}\n\ 41 | snippet count\n\ 42 | count $${1:varname}\n\ 43 | snippet ordered\n\ 44 | ordered { ${1:expr} }\n\ 45 | snippet unordered\n\ 46 | unordered { ${1:expr} }\n\ 47 | snippet treat \n\ 48 | treat as ${1:expr}\n\ 49 | snippet castable\n\ 50 | castable as ${1:atomicType}\n\ 51 | snippet cast\n\ 52 | cast as ${1:atomicType}\n\ 53 | snippet typeswitch\n\ 54 | typeswitch(${1:expr})\n\ 55 | case ${2:type} return ${3:expr}\n\ 56 | default return ${4:expr}\n\ 57 | snippet var\n\ 58 | declare variable $${1:varname} := ${2:expr};\n\ 59 | snippet fn\n\ 60 | declare function ${1:ns}:${2:name}(){\n\ 61 | ${3:expr}\n\ 62 | };\n\ 63 | snippet module\n\ 64 | module namespace ${1:ns} = \"${2:http://www.example.com}\";\n\ 65 | "; 66 | exports.scope = "jsoniq"; 67 | 68 | }); 69 | -------------------------------------------------------------------------------- /third/ace/src/snippets/jsx.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/jsx",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "jsx"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/julia.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/julia",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "julia"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/kotlin.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/kotlin",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = ""; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/latex.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/latex",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "latex"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/lean.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/lean",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "lean"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/less.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/less",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "less"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/liquid.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/liquid",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "liquid"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/lisp.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/lisp",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "lisp"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/live_script.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/live_script",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = ""; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/livescript.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/livescript",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "livescript"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/logiql.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/logiql",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "logiql"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/lua.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/lua",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet #!\n\ 5 | #!/usr/bin/env lua\n\ 6 | $1\n\ 7 | snippet local\n\ 8 | local ${1:x} = ${2:1}\n\ 9 | snippet fun\n\ 10 | function ${1:fname}(${2:...})\n\ 11 | ${3:-- body}\n\ 12 | end\n\ 13 | snippet for\n\ 14 | for ${1:i}=${2:1},${3:10} do\n\ 15 | ${4:print(i)}\n\ 16 | end\n\ 17 | snippet forp\n\ 18 | for ${1:i},${2:v} in pairs(${3:table_name}) do\n\ 19 | ${4:-- body}\n\ 20 | end\n\ 21 | snippet fori\n\ 22 | for ${1:i},${2:v} in ipairs(${3:table_name}) do\n\ 23 | ${4:-- body}\n\ 24 | end\n\ 25 | "; 26 | exports.scope = "lua"; 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /third/ace/src/snippets/luapage.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/luapage",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "luapage"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/lucene.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/lucene",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "lucene"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/makefile.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/makefile",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet ifeq\n\ 5 | ifeq (${1:cond0},${2:cond1})\n\ 6 | ${3:code}\n\ 7 | endif\n\ 8 | "; 9 | exports.scope = "makefile"; 10 | 11 | }); 12 | -------------------------------------------------------------------------------- /third/ace/src/snippets/markdown.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/markdown",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# Markdown\n\ 5 | \n\ 6 | # Includes octopress (http://octopress.org/) snippets\n\ 7 | \n\ 8 | snippet [\n\ 9 | [${1:text}](http://${2:address} \"${3:title}\")\n\ 10 | snippet [*\n\ 11 | [${1:link}](${2:`@*`} \"${3:title}\")${4}\n\ 12 | \n\ 13 | snippet [:\n\ 14 | [${1:id}]: http://${2:url} \"${3:title}\"\n\ 15 | snippet [:*\n\ 16 | [${1:id}]: ${2:`@*`} \"${3:title}\"\n\ 17 | \n\ 18 | snippet ![\n\ 19 | ![${1:alttext}](${2:/images/image.jpg} \"${3:title}\")\n\ 20 | snippet ![*\n\ 21 | ![${1:alt}](${2:`@*`} \"${3:title}\")${4}\n\ 22 | \n\ 23 | snippet ![:\n\ 24 | ![${1:id}]: ${2:url} \"${3:title}\"\n\ 25 | snippet ![:*\n\ 26 | ![${1:id}]: ${2:`@*`} \"${3:title}\"\n\ 27 | \n\ 28 | snippet ===\n\ 29 | regex /^/=+/=*//\n\ 30 | ${PREV_LINE/./=/g}\n\ 31 | \n\ 32 | ${0}\n\ 33 | snippet ---\n\ 34 | regex /^/-+/-*//\n\ 35 | ${PREV_LINE/./-/g}\n\ 36 | \n\ 37 | ${0}\n\ 38 | snippet blockquote\n\ 39 | {% blockquote %}\n\ 40 | ${1:quote}\n\ 41 | {% endblockquote %}\n\ 42 | \n\ 43 | snippet blockquote-author\n\ 44 | {% blockquote ${1:author}, ${2:title} %}\n\ 45 | ${3:quote}\n\ 46 | {% endblockquote %}\n\ 47 | \n\ 48 | snippet blockquote-link\n\ 49 | {% blockquote ${1:author} ${2:URL} ${3:link_text} %}\n\ 50 | ${4:quote}\n\ 51 | {% endblockquote %}\n\ 52 | \n\ 53 | snippet bt-codeblock-short\n\ 54 | ```\n\ 55 | ${1:code_snippet}\n\ 56 | ```\n\ 57 | \n\ 58 | snippet bt-codeblock-full\n\ 59 | ``` ${1:language} ${2:title} ${3:URL} ${4:link_text}\n\ 60 | ${5:code_snippet}\n\ 61 | ```\n\ 62 | \n\ 63 | snippet codeblock-short\n\ 64 | {% codeblock %}\n\ 65 | ${1:code_snippet}\n\ 66 | {% endcodeblock %}\n\ 67 | \n\ 68 | snippet codeblock-full\n\ 69 | {% codeblock ${1:title} lang:${2:language} ${3:URL} ${4:link_text} %}\n\ 70 | ${5:code_snippet}\n\ 71 | {% endcodeblock %}\n\ 72 | \n\ 73 | snippet gist-full\n\ 74 | {% gist ${1:gist_id} ${2:filename} %}\n\ 75 | \n\ 76 | snippet gist-short\n\ 77 | {% gist ${1:gist_id} %}\n\ 78 | \n\ 79 | snippet img\n\ 80 | {% img ${1:class} ${2:URL} ${3:width} ${4:height} ${5:title_text} ${6:alt_text} %}\n\ 81 | \n\ 82 | snippet youtube\n\ 83 | {% youtube ${1:video_id} %}\n\ 84 | \n\ 85 | # The quote should appear only once in the text. It is inherently part of it.\n\ 86 | # See http://octopress.org/docs/plugins/pullquote/ for more info.\n\ 87 | \n\ 88 | snippet pullquote\n\ 89 | {% pullquote %}\n\ 90 | ${1:text} {\" ${2:quote} \"} ${3:text}\n\ 91 | {% endpullquote %}\n\ 92 | "; 93 | exports.scope = "markdown"; 94 | 95 | }); 96 | -------------------------------------------------------------------------------- /third/ace/src/snippets/mask.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/mask",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "mask"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/matlab.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/matlab",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "matlab"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/maze.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/maze",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet >\n\ 5 | description assignment\n\ 6 | scope maze\n\ 7 | -> ${1}= ${2}\n\ 8 | \n\ 9 | snippet >\n\ 10 | description if\n\ 11 | scope maze\n\ 12 | -> IF ${2:**} THEN %${3:L} ELSE %${4:R}\n\ 13 | "; 14 | exports.scope = "maze"; 15 | 16 | }); 17 | -------------------------------------------------------------------------------- /third/ace/src/snippets/mel.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/mel",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "mel"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/mips_assembler.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/mips_assembler",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "mips_assembler"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/mipsassembler.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/mipsassembler",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = ""; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/mushcode.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/mushcode",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "mushcode"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/mysql.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/mysql",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "mysql"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/nix.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/nix",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "nix"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/nsis.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/nsis",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = ""; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/objectivec.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/objectivec",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "objectivec"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/ocaml.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/ocaml",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "ocaml"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/pascal.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/pascal",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "pascal"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/pgsql.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/pgsql",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "pgsql"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/plain_text.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/plain_text",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "plain_text"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/powershell.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/powershell",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "powershell"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/praat.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/praat",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "praat"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/prolog.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/prolog",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "prolog"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/properties.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/properties",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "properties"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/protobuf.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/protobuf",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = ""; 5 | exports.scope = "protobuf"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/razor.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/razor",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet if\n\ 5 | (${1} == ${2}) {\n\ 6 | ${3}\n\ 7 | }"; 8 | exports.scope = "razor"; 9 | 10 | }); 11 | -------------------------------------------------------------------------------- /third/ace/src/snippets/rdoc.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/rdoc",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "rdoc"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/rhtml.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/rhtml",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "rhtml"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/rst.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/rst",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# rst\n\ 5 | \n\ 6 | snippet :\n\ 7 | :${1:field name}: ${2:field body}\n\ 8 | snippet *\n\ 9 | *${1:Emphasis}*\n\ 10 | snippet **\n\ 11 | **${1:Strong emphasis}**\n\ 12 | snippet _\n\ 13 | \\`${1:hyperlink-name}\\`_\n\ 14 | .. _\\`$1\\`: ${2:link-block}\n\ 15 | snippet =\n\ 16 | ${1:Title}\n\ 17 | =====${2:=}\n\ 18 | ${3}\n\ 19 | snippet -\n\ 20 | ${1:Title}\n\ 21 | -----${2:-}\n\ 22 | ${3}\n\ 23 | snippet cont:\n\ 24 | .. contents::\n\ 25 | \n\ 26 | "; 27 | exports.scope = "rst"; 28 | 29 | }); 30 | -------------------------------------------------------------------------------- /third/ace/src/snippets/rust.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/rust",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "rust"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/sass.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/sass",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "sass"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/scad.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/scad",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "scad"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/scala.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/scala",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "scala"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/scheme.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/scheme",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "scheme"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/scss.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/scss",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "scss"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/sjs.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/sjs",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "sjs"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/smarty.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/smarty",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "smarty"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/snippets.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/snippets",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# snippets for making snippets :)\n\ 5 | snippet snip\n\ 6 | snippet ${1:trigger}\n\ 7 | ${2}\n\ 8 | snippet msnip\n\ 9 | snippet ${1:trigger} ${2:description}\n\ 10 | ${3}\n\ 11 | snippet v\n\ 12 | {VISUAL}\n\ 13 | "; 14 | exports.scope = "snippets"; 15 | 16 | }); 17 | -------------------------------------------------------------------------------- /third/ace/src/snippets/soy_template.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/soy_template",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "soy_template"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/space.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/space",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "space"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/sql.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/sql",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet tbl\n\ 5 | create table ${1:table} (\n\ 6 | ${2:columns}\n\ 7 | );\n\ 8 | snippet col\n\ 9 | ${1:name} ${2:type} ${3:default ''} ${4:not null}\n\ 10 | snippet ccol\n\ 11 | ${1:name} varchar2(${2:size}) ${3:default ''} ${4:not null}\n\ 12 | snippet ncol\n\ 13 | ${1:name} number ${3:default 0} ${4:not null}\n\ 14 | snippet dcol\n\ 15 | ${1:name} date ${3:default sysdate} ${4:not null}\n\ 16 | snippet ind\n\ 17 | create index ${3:$1_$2} on ${1:table}(${2:column});\n\ 18 | snippet uind\n\ 19 | create unique index ${1:name} on ${2:table}(${3:column});\n\ 20 | snippet tblcom\n\ 21 | comment on table ${1:table} is '${2:comment}';\n\ 22 | snippet colcom\n\ 23 | comment on column ${1:table}.${2:column} is '${3:comment}';\n\ 24 | snippet addcol\n\ 25 | alter table ${1:table} add (${2:column} ${3:type});\n\ 26 | snippet seq\n\ 27 | create sequence ${1:name} start with ${2:1} increment by ${3:1} minvalue ${4:1};\n\ 28 | snippet s*\n\ 29 | select * from ${1:table}\n\ 30 | "; 31 | exports.scope = "sql"; 32 | 33 | }); 34 | -------------------------------------------------------------------------------- /third/ace/src/snippets/sqlserver.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/sqlserver",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# ISNULL\n\ 5 | snippet isnull\n\ 6 | ISNULL(${1:check_expression}, ${2:replacement_value})\n\ 7 | # FORMAT\n\ 8 | snippet format\n\ 9 | FORMAT(${1:value}, ${2:format})\n\ 10 | # CAST\n\ 11 | snippet cast\n\ 12 | CAST(${1:expression} AS ${2:data_type})\n\ 13 | # CONVERT\n\ 14 | snippet convert\n\ 15 | CONVERT(${1:data_type}, ${2:expression})\n\ 16 | # DATEPART\n\ 17 | snippet datepart\n\ 18 | DATEPART(${1:datepart}, ${2:date})\n\ 19 | # DATEDIFF\n\ 20 | snippet datediff\n\ 21 | DATEDIFF(${1:datepart}, ${2:startdate}, ${3:enddate})\n\ 22 | # DATEADD\n\ 23 | snippet dateadd\n\ 24 | DATEADD(${1:datepart}, ${2:number}, ${3:date})\n\ 25 | # DATEFROMPARTS \n\ 26 | snippet datefromparts\n\ 27 | DATEFROMPARTS(${1:year}, ${2:month}, ${3:day})\n\ 28 | # OBJECT_DEFINITION\n\ 29 | snippet objectdef\n\ 30 | SELECT OBJECT_DEFINITION(OBJECT_ID('${1:sys.server_permissions /*object name*/}'))\n\ 31 | # STUFF XML\n\ 32 | snippet stuffxml\n\ 33 | STUFF((SELECT ', ' + ${1:ColumnName}\n\ 34 | FROM ${2:TableName}\n\ 35 | WHERE ${3:WhereClause}\n\ 36 | FOR XML PATH('')), 1, 1, '') AS ${4:Alias}\n\ 37 | ${5:/*https://msdn.microsoft.com/en-us/library/ms188043.aspx*/}\n\ 38 | # Create Procedure\n\ 39 | snippet createproc\n\ 40 | -- =============================================\n\ 41 | -- Author: ${1:Author}\n\ 42 | -- Create date: ${2:Date}\n\ 43 | -- Description: ${3:Description}\n\ 44 | -- =============================================\n\ 45 | CREATE PROCEDURE ${4:Procedure_Name}\n\ 46 | ${5:/*Add the parameters for the stored procedure here*/}\n\ 47 | AS\n\ 48 | BEGIN\n\ 49 | -- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.\n\ 50 | SET NOCOUNT ON;\n\ 51 | \n\ 52 | ${6:/*Add the T-SQL statements to compute the return value here*/}\n\ 53 | \n\ 54 | END\n\ 55 | GO\n\ 56 | # Create Scalar Function\n\ 57 | snippet createfn\n\ 58 | -- =============================================\n\ 59 | -- Author: ${1:Author}\n\ 60 | -- Create date: ${2:Date}\n\ 61 | -- Description: ${3:Description}\n\ 62 | -- =============================================\n\ 63 | CREATE FUNCTION ${4:Scalar_Function_Name}\n\ 64 | -- Add the parameters for the function here\n\ 65 | RETURNS ${5:Function_Data_Type}\n\ 66 | AS\n\ 67 | BEGIN\n\ 68 | DECLARE @Result ${5:Function_Data_Type}\n\ 69 | \n\ 70 | ${6:/*Add the T-SQL statements to compute the return value here*/}\n\ 71 | \n\ 72 | END\n\ 73 | GO"; 74 | exports.scope = "sqlserver"; 75 | 76 | }); 77 | -------------------------------------------------------------------------------- /third/ace/src/snippets/stylus.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/stylus",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "stylus"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/svg.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/svg",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "svg"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/swift.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/swift",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "swift"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/swig.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/swig",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "swig"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/tcl.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/tcl",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# #!/usr/bin/env tclsh\n\ 5 | snippet #!\n\ 6 | #!/usr/bin/env tclsh\n\ 7 | \n\ 8 | # Process\n\ 9 | snippet pro\n\ 10 | proc ${1:function_name} {${2:args}} {\n\ 11 | ${3:#body ...}\n\ 12 | }\n\ 13 | #xif\n\ 14 | snippet xif\n\ 15 | ${1:expr}? ${2:true} : ${3:false}\n\ 16 | # Conditional\n\ 17 | snippet if\n\ 18 | if {${1}} {\n\ 19 | ${2:# body...}\n\ 20 | }\n\ 21 | # Conditional if..else\n\ 22 | snippet ife\n\ 23 | if {${1}} {\n\ 24 | ${2:# body...}\n\ 25 | } else {\n\ 26 | ${3:# else...}\n\ 27 | }\n\ 28 | # Conditional if..elsif..else\n\ 29 | snippet ifee\n\ 30 | if {${1}} {\n\ 31 | ${2:# body...}\n\ 32 | } elseif {${3}} {\n\ 33 | ${4:# elsif...}\n\ 34 | } else {\n\ 35 | ${5:# else...}\n\ 36 | }\n\ 37 | # If catch then\n\ 38 | snippet ifc\n\ 39 | if { [catch {${1:#do something...}} ${2:err}] } {\n\ 40 | ${3:# handle failure...}\n\ 41 | }\n\ 42 | # Catch\n\ 43 | snippet catch\n\ 44 | catch {${1}} ${2:err} ${3:options}\n\ 45 | # While Loop\n\ 46 | snippet wh\n\ 47 | while {${1}} {\n\ 48 | ${2:# body...}\n\ 49 | }\n\ 50 | # For Loop\n\ 51 | snippet for\n\ 52 | for {set ${2:var} 0} {$$2 < ${1:count}} {${3:incr} $2} {\n\ 53 | ${4:# body...}\n\ 54 | }\n\ 55 | # Foreach Loop\n\ 56 | snippet fore\n\ 57 | foreach ${1:x} {${2:#list}} {\n\ 58 | ${3:# body...}\n\ 59 | }\n\ 60 | # after ms script...\n\ 61 | snippet af\n\ 62 | after ${1:ms} ${2:#do something}\n\ 63 | # after cancel id\n\ 64 | snippet afc\n\ 65 | after cancel ${1:id or script}\n\ 66 | # after idle\n\ 67 | snippet afi\n\ 68 | after idle ${1:script}\n\ 69 | # after info id\n\ 70 | snippet afin\n\ 71 | after info ${1:id}\n\ 72 | # Expr\n\ 73 | snippet exp\n\ 74 | expr {${1:#expression here}}\n\ 75 | # Switch\n\ 76 | snippet sw\n\ 77 | switch ${1:var} {\n\ 78 | ${3:pattern 1} {\n\ 79 | ${4:#do something}\n\ 80 | }\n\ 81 | default {\n\ 82 | ${2:#do something}\n\ 83 | }\n\ 84 | }\n\ 85 | # Case\n\ 86 | snippet ca\n\ 87 | ${1:pattern} {\n\ 88 | ${2:#do something}\n\ 89 | }${3}\n\ 90 | # Namespace eval\n\ 91 | snippet ns\n\ 92 | namespace eval ${1:path} {${2:#script...}}\n\ 93 | # Namespace current\n\ 94 | snippet nsc\n\ 95 | namespace current\n\ 96 | "; 97 | exports.scope = "tcl"; 98 | 99 | }); 100 | -------------------------------------------------------------------------------- /third/ace/src/snippets/text.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/text",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "text"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/textile.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/textile",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# Jekyll post header\n\ 5 | snippet header\n\ 6 | ---\n\ 7 | title: ${1:title}\n\ 8 | layout: post\n\ 9 | date: ${2:date} ${3:hour:minute:second} -05:00\n\ 10 | ---\n\ 11 | \n\ 12 | # Image\n\ 13 | snippet img\n\ 14 | !${1:url}(${2:title}):${3:link}!\n\ 15 | \n\ 16 | # Table\n\ 17 | snippet |\n\ 18 | |${1}|${2}\n\ 19 | \n\ 20 | # Link\n\ 21 | snippet link\n\ 22 | \"${1:link text}\":${2:url}\n\ 23 | \n\ 24 | # Acronym\n\ 25 | snippet (\n\ 26 | (${1:Expand acronym})${2}\n\ 27 | \n\ 28 | # Footnote\n\ 29 | snippet fn\n\ 30 | [${1:ref number}] ${3}\n\ 31 | \n\ 32 | fn$1. ${2:footnote}\n\ 33 | \n\ 34 | "; 35 | exports.scope = "textile"; 36 | 37 | }); 38 | -------------------------------------------------------------------------------- /third/ace/src/snippets/toml.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/toml",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "toml"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/tsx.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/tsx",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "tsx"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/twig.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/twig",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "twig"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/typescript.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/typescript",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "typescript"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/vbscript.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/vbscript",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "vbscript"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/velocity.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/velocity",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# macro\n\ 5 | snippet #macro\n\ 6 | #macro ( ${1:macroName} ${2:\\$var1, [\\$var2, ...]} )\n\ 7 | ${3:## macro code}\n\ 8 | #end\n\ 9 | # foreach\n\ 10 | snippet #foreach\n\ 11 | #foreach ( ${1:\\$item} in ${2:\\$collection} )\n\ 12 | ${3:## foreach code}\n\ 13 | #end\n\ 14 | # if\n\ 15 | snippet #if\n\ 16 | #if ( ${1:true} )\n\ 17 | ${0}\n\ 18 | #end\n\ 19 | # if ... else\n\ 20 | snippet #ife\n\ 21 | #if ( ${1:true} )\n\ 22 | ${2}\n\ 23 | #else\n\ 24 | ${0}\n\ 25 | #end\n\ 26 | #import\n\ 27 | snippet #import\n\ 28 | #import ( \"${1:path/to/velocity/format}\" )\n\ 29 | # set\n\ 30 | snippet #set\n\ 31 | #set ( $${1:var} = ${0} )\n\ 32 | "; 33 | exports.scope = "velocity"; 34 | exports.includeScopes = ["html", "javascript", "css"]; 35 | 36 | }); 37 | -------------------------------------------------------------------------------- /third/ace/src/snippets/verilog.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/verilog",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "verilog"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/vhdl.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/vhdl",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "vhdl"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/wollok.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/wollok",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "##\n\ 5 | ## Basic Java packages and import\n\ 6 | snippet im\n\ 7 | import\n\ 8 | snippet w.l\n\ 9 | wollok.lang\n\ 10 | snippet w.i\n\ 11 | wollok.lib\n\ 12 | \n\ 13 | ## Class and object\n\ 14 | snippet cl\n\ 15 | class ${1:`Filename(\"\", \"untitled\")`} ${2}\n\ 16 | snippet obj\n\ 17 | object ${1:`Filename(\"\", \"untitled\")`} ${2:inherits Parent}${3}\n\ 18 | snippet te\n\ 19 | test ${1:`Filename(\"\", \"untitled\")`}\n\ 20 | \n\ 21 | ##\n\ 22 | ## Enhancements\n\ 23 | snippet inh\n\ 24 | inherits\n\ 25 | \n\ 26 | ##\n\ 27 | ## Comments\n\ 28 | snippet /*\n\ 29 | /*\n\ 30 | * ${1}\n\ 31 | */\n\ 32 | \n\ 33 | ##\n\ 34 | ## Control Statements\n\ 35 | snippet el\n\ 36 | else\n\ 37 | snippet if\n\ 38 | if (${1}) ${2}\n\ 39 | \n\ 40 | ##\n\ 41 | ## Create a Method\n\ 42 | snippet m\n\ 43 | method ${1:method}(${2}) ${5}\n\ 44 | \n\ 45 | ## \n\ 46 | ## Tests\n\ 47 | snippet as\n\ 48 | assert.equals(${1:expected}, ${2:actual})\n\ 49 | \n\ 50 | ##\n\ 51 | ## Exceptions\n\ 52 | snippet ca\n\ 53 | catch ${1:e} : (${2:Exception} ) ${3}\n\ 54 | snippet thr\n\ 55 | throw\n\ 56 | snippet try\n\ 57 | try {\n\ 58 | ${3}\n\ 59 | } catch ${1:e} : ${2:Exception} {\n\ 60 | }\n\ 61 | \n\ 62 | ##\n\ 63 | ## Javadocs\n\ 64 | snippet /**\n\ 65 | /**\n\ 66 | * ${1}\n\ 67 | */\n\ 68 | \n\ 69 | ##\n\ 70 | ## Print Methods\n\ 71 | snippet print\n\ 72 | console.println(\"${1:Message}\")\n\ 73 | \n\ 74 | ##\n\ 75 | ## Setter and Getter Methods\n\ 76 | snippet set\n\ 77 | method set${1:}(${2:}) {\n\ 78 | $1 = $2\n\ 79 | }\n\ 80 | snippet get\n\ 81 | method get${1:}() {\n\ 82 | return ${1:};\n\ 83 | }\n\ 84 | \n\ 85 | ##\n\ 86 | ## Terminate Methods or Loops\n\ 87 | snippet re\n\ 88 | return"; 89 | exports.scope = "wollok"; 90 | 91 | }); 92 | -------------------------------------------------------------------------------- /third/ace/src/snippets/xml.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/xml",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "xml"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/snippets/xquery.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/xquery",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet for\n\ 5 | for $${1:item} in ${2:expr}\n\ 6 | snippet return\n\ 7 | return ${1:expr}\n\ 8 | snippet import\n\ 9 | import module namespace ${1:ns} = \"${2:http://www.example.com/}\";\n\ 10 | snippet some\n\ 11 | some $${1:varname} in ${2:expr} satisfies ${3:expr}\n\ 12 | snippet every\n\ 13 | every $${1:varname} in ${2:expr} satisfies ${3:expr}\n\ 14 | snippet if\n\ 15 | if(${1:true}) then ${2:expr} else ${3:true}\n\ 16 | snippet switch\n\ 17 | switch(${1:\"foo\"})\n\ 18 | case ${2:\"foo\"}\n\ 19 | return ${3:true}\n\ 20 | default return ${4:false}\n\ 21 | snippet try\n\ 22 | try { ${1:expr} } catch ${2:*} { ${3:expr} }\n\ 23 | snippet tumbling\n\ 24 | for tumbling window $${1:varname} in ${2:expr}\n\ 25 | start at $${3:start} when ${4:expr}\n\ 26 | end at $${5:end} when ${6:expr}\n\ 27 | return ${7:expr}\n\ 28 | snippet sliding\n\ 29 | for sliding window $${1:varname} in ${2:expr}\n\ 30 | start at $${3:start} when ${4:expr}\n\ 31 | end at $${5:end} when ${6:expr}\n\ 32 | return ${7:expr}\n\ 33 | snippet let\n\ 34 | let $${1:varname} := ${2:expr}\n\ 35 | snippet group\n\ 36 | group by $${1:varname} := ${2:expr}\n\ 37 | snippet order\n\ 38 | order by ${1:expr} ${2:descending}\n\ 39 | snippet stable\n\ 40 | stable order by ${1:expr}\n\ 41 | snippet count\n\ 42 | count $${1:varname}\n\ 43 | snippet ordered\n\ 44 | ordered { ${1:expr} }\n\ 45 | snippet unordered\n\ 46 | unordered { ${1:expr} }\n\ 47 | snippet treat \n\ 48 | treat as ${1:expr}\n\ 49 | snippet castable\n\ 50 | castable as ${1:atomicType}\n\ 51 | snippet cast\n\ 52 | cast as ${1:atomicType}\n\ 53 | snippet typeswitch\n\ 54 | typeswitch(${1:expr})\n\ 55 | case ${2:type} return ${3:expr}\n\ 56 | default return ${4:expr}\n\ 57 | snippet var\n\ 58 | declare variable $${1:varname} := ${2:expr};\n\ 59 | snippet fn\n\ 60 | declare function ${1:ns}:${2:name}(){\n\ 61 | ${3:expr}\n\ 62 | };\n\ 63 | snippet module\n\ 64 | module namespace ${1:ns} = \"${2:http://www.example.com}\";\n\ 65 | "; 66 | exports.scope = "xquery"; 67 | 68 | }); 69 | -------------------------------------------------------------------------------- /third/ace/src/snippets/yaml.js: -------------------------------------------------------------------------------- 1 | define("ace/snippets/yaml",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = "yaml"; 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /third/ace/src/theme-kuroir.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/kuroir",["require","exports","module","ace/lib/dom"], function(require, exports, module) { 2 | 3 | exports.isDark = false; 4 | exports.cssClass = "ace-kuroir"; 5 | exports.cssText = "\ 6 | .ace-kuroir .ace_gutter {\ 7 | background: #e8e8e8;\ 8 | color: #333;\ 9 | }\ 10 | .ace-kuroir .ace_print-margin {\ 11 | width: 1px;\ 12 | background: #e8e8e8;\ 13 | }\ 14 | .ace-kuroir {\ 15 | background-color: #E8E9E8;\ 16 | color: #363636;\ 17 | }\ 18 | .ace-kuroir .ace_cursor {\ 19 | color: #202020;\ 20 | }\ 21 | .ace-kuroir .ace_marker-layer .ace_selection {\ 22 | background: rgba(245, 170, 0, 0.57);\ 23 | }\ 24 | .ace-kuroir.ace_multiselect .ace_selection.ace_start {\ 25 | box-shadow: 0 0 3px 0px #E8E9E8;\ 26 | }\ 27 | .ace-kuroir .ace_marker-layer .ace_step {\ 28 | background: rgb(198, 219, 174);\ 29 | }\ 30 | .ace-kuroir .ace_marker-layer .ace_bracket {\ 31 | margin: -1px 0 0 -1px;\ 32 | border: 1px solid rgba(0, 0, 0, 0.29);\ 33 | }\ 34 | .ace-kuroir .ace_marker-layer .ace_active-line {\ 35 | background: rgba(203, 220, 47, 0.22);\ 36 | }\ 37 | .ace-kuroir .ace_gutter-active-line {\ 38 | background-color: rgba(203, 220, 47, 0.22);\ 39 | }\ 40 | .ace-kuroir .ace_marker-layer .ace_selected-word {\ 41 | border: 1px solid rgba(245, 170, 0, 0.57);\ 42 | }\ 43 | .ace-kuroir .ace_invisible {\ 44 | color: #BFBFBF\ 45 | }\ 46 | .ace-kuroir .ace_fold {\ 47 | border-color: #363636;\ 48 | }\ 49 | .ace-kuroir .ace_constant{color:#CD6839;}.ace-kuroir .ace_constant.ace_numeric{color:#9A5925;}.ace-kuroir .ace_support{color:#104E8B;}.ace-kuroir .ace_support.ace_function{color:#005273;}.ace-kuroir .ace_support.ace_constant{color:#CF6A4C;}.ace-kuroir .ace_storage{color:#A52A2A;}.ace-kuroir .ace_invalid.ace_illegal{color:#FD1224;\ 50 | background-color:rgba(255, 6, 0, 0.15);}.ace-kuroir .ace_invalid.ace_deprecated{text-decoration:underline;\ 51 | font-style:italic;\ 52 | color:#FD1732;\ 53 | background-color:#E8E9E8;}.ace-kuroir .ace_string{color:#639300;}.ace-kuroir .ace_string.ace_regexp{color:#417E00;\ 54 | background-color:#C9D4BE;}.ace-kuroir .ace_comment{color:rgba(148, 148, 148, 0.91);\ 55 | background-color:rgba(220, 220, 220, 0.56);}.ace-kuroir .ace_variable{color:#009ACD;}.ace-kuroir .ace_meta.ace_tag{color:#005273;}.ace-kuroir .ace_markup.ace_heading{color:#B8012D;\ 56 | background-color:rgba(191, 97, 51, 0.051);}.ace-kuroir .ace_markup.ace_list{color:#8F5B26;}\ 57 | "; 58 | 59 | var dom = require("../lib/dom"); 60 | dom.importCssString(exports.cssText, exports.cssClass); 61 | }); 62 | -------------------------------------------------------------------------------- /third/ace/src/theme-xcode.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/xcode",["require","exports","module","ace/lib/dom"], function(require, exports, module) { 2 | 3 | exports.isDark = false; 4 | exports.cssClass = "ace-xcode"; 5 | exports.cssText = "\ 6 | .ace-xcode .ace_gutter {\ 7 | background: #e8e8e8;\ 8 | color: #333\ 9 | }\ 10 | .ace-xcode .ace_print-margin {\ 11 | width: 1px;\ 12 | background: #e8e8e8\ 13 | }\ 14 | .ace-xcode {\ 15 | background-color: #FFFFFF;\ 16 | color: #000000\ 17 | }\ 18 | .ace-xcode .ace_cursor {\ 19 | color: #000000\ 20 | }\ 21 | .ace-xcode .ace_marker-layer .ace_selection {\ 22 | background: #B5D5FF\ 23 | }\ 24 | .ace-xcode.ace_multiselect .ace_selection.ace_start {\ 25 | box-shadow: 0 0 3px 0px #FFFFFF;\ 26 | }\ 27 | .ace-xcode .ace_marker-layer .ace_step {\ 28 | background: rgb(198, 219, 174)\ 29 | }\ 30 | .ace-xcode .ace_marker-layer .ace_bracket {\ 31 | margin: -1px 0 0 -1px;\ 32 | border: 1px solid #BFBFBF\ 33 | }\ 34 | .ace-xcode .ace_marker-layer .ace_active-line {\ 35 | background: rgba(0, 0, 0, 0.071)\ 36 | }\ 37 | .ace-xcode .ace_gutter-active-line {\ 38 | background-color: rgba(0, 0, 0, 0.071)\ 39 | }\ 40 | .ace-xcode .ace_marker-layer .ace_selected-word {\ 41 | border: 1px solid #B5D5FF\ 42 | }\ 43 | .ace-xcode .ace_constant.ace_language,\ 44 | .ace-xcode .ace_keyword,\ 45 | .ace-xcode .ace_meta,\ 46 | .ace-xcode .ace_variable.ace_language {\ 47 | color: #C800A4\ 48 | }\ 49 | .ace-xcode .ace_invisible {\ 50 | color: #BFBFBF\ 51 | }\ 52 | .ace-xcode .ace_constant.ace_character,\ 53 | .ace-xcode .ace_constant.ace_other {\ 54 | color: #275A5E\ 55 | }\ 56 | .ace-xcode .ace_constant.ace_numeric {\ 57 | color: #3A00DC\ 58 | }\ 59 | .ace-xcode .ace_entity.ace_other.ace_attribute-name,\ 60 | .ace-xcode .ace_support.ace_constant,\ 61 | .ace-xcode .ace_support.ace_function {\ 62 | color: #450084\ 63 | }\ 64 | .ace-xcode .ace_fold {\ 65 | background-color: #C800A4;\ 66 | border-color: #000000\ 67 | }\ 68 | .ace-xcode .ace_entity.ace_name.ace_tag,\ 69 | .ace-xcode .ace_support.ace_class,\ 70 | .ace-xcode .ace_support.ace_type {\ 71 | color: #790EAD\ 72 | }\ 73 | .ace-xcode .ace_storage {\ 74 | color: #C900A4\ 75 | }\ 76 | .ace-xcode .ace_string {\ 77 | color: #DF0002\ 78 | }\ 79 | .ace-xcode .ace_comment {\ 80 | color: #008E00\ 81 | }\ 82 | .ace-xcode .ace_indent-guide {\ 83 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y\ 84 | }"; 85 | 86 | var dom = require("../lib/dom"); 87 | dom.importCssString(exports.cssText, exports.cssClass); 88 | }); 89 | --------------------------------------------------------------------------------