This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Repository files navigation

UI.Ace directive Build Status

This directive allows you to add ACE editor elements.

Requirements

Usage

You can get it from Bower

bower install angular-ui-ace#bower

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ace.js"></script><scripttype="text/javascript" src="bower_components/angular/angular.js"></script><scripttype="text/javascript" src="bower_components/angular-ui-ace/ui-ace.js"></script>

Add the UI.Ace module as a dependency to your application module:

varmyAppModule=angular.module('MyApp',['ui.ace']);

Finally, add the directive to your html:

<divui-ace></div>

To see something it's better to add some CSS, like

.ace_editor { height:200px; }

Options

Ace doesn't provide a one gate access to all the options the jquery way. Each option is configured with the function of a specific instance. See the api doc for more.

Although, ui-ace automatically handles some handy options :

  • showGutter : to show the gutter or not.
  • useWrapMode : to set whether or not line wrapping is enabled.
  • theme : to set the theme to use.
  • mode : to set the mode to use.
  • onLoad : callback when the editor has finished loading (see below).
  • onChange : callback when the editor content is changed ().
  • onBlur : callback when the editor is blurred ().
  • firstLineNumber : to set the firstLineNumber (default: 1)
<divui-ace="{ useWrapMode : true, showGutter: false, theme:'twilight', mode: 'xml', firstLineNumber: 5, onLoad: aceLoaded, onChange: aceChanged}"></div>

You'll want to define the onLoad and the onChange callback on your scope:

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Options_editor.setReadOnly(true);};$scope.aceChanged=function(e){//};}]);

To handle other options you'll have to use a direct access to the Ace created instance (see below).

Advanced Options

You can specify advanced options and even require options in the directive, as well. For this example, you will have to include the ext-language_tools.js file from the ace source code.

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ext-language_tools.js"></script>
<divui-ace="{ require: ['ace/ext/language_tools'], advanced: { enableSnippets: true, enableBasicAutocompletion: true, enableLiveAutocompletion: true }}"></div>

To include options applicable to the ACE renderer, you can use the rendererOptions key:

<divui-ace="{ rendererOptions: { maxLinks: Infinity }}"></div>

Support for concatenated bundles

Trying to use ace with concatenated javascript files usually fails because it changes the physical location of the workerPath. If you need to work with bundled or minified versions of ace, you can specify the original location of the workerPath on disk (not the bundled file).

This should be the folder on disk where ace.js resides.

<divui-ace="{ workerPath: '/path/to/ace/folder'}"></div>

Working with ng-model

The ui-ace directive plays nicely with ng-model.

The ng-model will be watched for to set the Ace EditSession value (by setValue).

The ui-ace directive stores and expects the model value to be a standard javascript String.

Can be read only

Simple demo

<divui-acereadonly></div>
or
Check me to make Ace readonly: <inputtype="checkbox" ng-model="checked" ><br/><divui-aceng-readonly="checked"></div>

Ace instance direct access

For more interaction with the Ace instance in the directive, we provide a direct access to it. Using

<divui-ace="{ onLoad : aceLoaded }" ></div>

the $scope.aceLoaded function will be called with the Ace Editor instance as first argument

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Editor partvar_session=_editor.getSession();var_renderer=_editor.renderer;// Options_editor.setReadOnly(true);_session.setUndoManager(newace.UndoManager());_renderer.setShowGutter(false);// Events_editor.on("changeSession",function(){ ... });_session.on("change",function(){ ... });};}]);

Testing

We use Karma and jshint to ensure the quality of the code. The easiest way to run these checks is to use grunt:

npm install -g grunt-cli
npm install && bower install
grunt

The karma task will try to open Firefox and Chrome as browser in which to run the tests. Make sure this is available or change the configuration in test\karma.conf.js

Grunt Serve

We have one task to serve them all !

grunt serve

It's equal to run separately:

  • grunt connect:server : giving you a development server at http://127.0.0.1:8000/.

  • grunt karma:server : giving you a Karma server to run tests (at http://localhost:9876/ by default). You can force a test on this server with grunt karma:unit:run.

  • grunt watch : will automatically test your code and build your demo. You can demo generation with grunt build:gh-pages.

Dist

This repo is using the angular-ui/angular-ui-publisher. New tags will automatically trigger a new publication. To test is locally you can trigger a :

grunt dist build:bower

it will put the final files in the 'dist' folder and a sample of the bower tag output in the 'out/built/bower' folder.

About

This directive allows you to add ACE editor elements.

Resources

Stars

574 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Repository files navigation

UI.Ace directive Build Status

This directive allows you to add ACE editor elements.

Requirements

Usage

You can get it from Bower

bower install angular-ui-ace#bower

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ace.js"></script><scripttype="text/javascript" src="bower_components/angular/angular.js"></script><scripttype="text/javascript" src="bower_components/angular-ui-ace/ui-ace.js"></script>

Add the UI.Ace module as a dependency to your application module:

varmyAppModule=angular.module('MyApp',['ui.ace']);

Finally, add the directive to your html:

<divui-ace></div>

To see something it's better to add some CSS, like

.ace_editor { height:200px; }

Options

Ace doesn't provide a one gate access to all the options the jquery way. Each option is configured with the function of a specific instance. See the api doc for more.

Although, ui-ace automatically handles some handy options :

  • showGutter : to show the gutter or not.
  • useWrapMode : to set whether or not line wrapping is enabled.
  • theme : to set the theme to use.
  • mode : to set the mode to use.
  • onLoad : callback when the editor has finished loading (see below).
  • onChange : callback when the editor content is changed ().
  • onBlur : callback when the editor is blurred ().
  • firstLineNumber : to set the firstLineNumber (default: 1)
<divui-ace="{ useWrapMode : true, showGutter: false, theme:'twilight', mode: 'xml', firstLineNumber: 5, onLoad: aceLoaded, onChange: aceChanged}"></div>

You'll want to define the onLoad and the onChange callback on your scope:

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Options_editor.setReadOnly(true);};$scope.aceChanged=function(e){//};}]);

To handle other options you'll have to use a direct access to the Ace created instance (see below).

Advanced Options

You can specify advanced options and even require options in the directive, as well. For this example, you will have to include the ext-language_tools.js file from the ace source code.

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ext-language_tools.js"></script>
<divui-ace="{ require: ['ace/ext/language_tools'], advanced: { enableSnippets: true, enableBasicAutocompletion: true, enableLiveAutocompletion: true }}"></div>

To include options applicable to the ACE renderer, you can use the rendererOptions key:

<divui-ace="{ rendererOptions: { maxLinks: Infinity }}"></div>

Support for concatenated bundles

Trying to use ace with concatenated javascript files usually fails because it changes the physical location of the workerPath. If you need to work with bundled or minified versions of ace, you can specify the original location of the workerPath on disk (not the bundled file).

This should be the folder on disk where ace.js resides.

<divui-ace="{ workerPath: '/path/to/ace/folder'}"></div>

Working with ng-model

The ui-ace directive plays nicely with ng-model.

The ng-model will be watched for to set the Ace EditSession value (by setValue).

The ui-ace directive stores and expects the model value to be a standard javascript String.

Can be read only

Simple demo

<divui-acereadonly></div>
or
Check me to make Ace readonly: <inputtype="checkbox" ng-model="checked" ><br/><divui-aceng-readonly="checked"></div>

Ace instance direct access

For more interaction with the Ace instance in the directive, we provide a direct access to it. Using

<divui-ace="{ onLoad : aceLoaded }" ></div>

the $scope.aceLoaded function will be called with the Ace Editor instance as first argument

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Editor partvar_session=_editor.getSession();var_renderer=_editor.renderer;// Options_editor.setReadOnly(true);_session.setUndoManager(newace.UndoManager());_renderer.setShowGutter(false);// Events_editor.on("changeSession",function(){ ... });_session.on("change",function(){ ... });};}]);

Testing

We use Karma and jshint to ensure the quality of the code. The easiest way to run these checks is to use grunt:

npm install -g grunt-cli
npm install && bower install
grunt

The karma task will try to open Firefox and Chrome as browser in which to run the tests. Make sure this is available or change the configuration in test\karma.conf.js

Grunt Serve

We have one task to serve them all !

grunt serve

It's equal to run separately:

  • grunt connect:server : giving you a development server at http://127.0.0.1:8000/.

  • grunt karma:server : giving you a Karma server to run tests (at http://localhost:9876/ by default). You can force a test on this server with grunt karma:unit:run.

  • grunt watch : will automatically test your code and build your demo. You can demo generation with grunt build:gh-pages.

Dist

This repo is using the angular-ui/angular-ui-publisher. New tags will automatically trigger a new publication. To test is locally you can trigger a :

grunt dist build:bower

it will put the final files in the 'dist' folder and a sample of the bower tag output in the 'out/built/bower' folder.

About

This directive allows you to add ACE editor elements.

Resources

Stars

574 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Repository files navigation

UI.Ace directive Build Status

This directive allows you to add ACE editor elements.

Requirements

Usage

You can get it from Bower

bower install angular-ui-ace#bower

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ace.js"></script><scripttype="text/javascript" src="bower_components/angular/angular.js"></script><scripttype="text/javascript" src="bower_components/angular-ui-ace/ui-ace.js"></script>

Add the UI.Ace module as a dependency to your application module:

varmyAppModule=angular.module('MyApp',['ui.ace']);

Finally, add the directive to your html:

<divui-ace></div>

To see something it's better to add some CSS, like

.ace_editor { height:200px; }

Options

Ace doesn't provide a one gate access to all the options the jquery way. Each option is configured with the function of a specific instance. See the api doc for more.

Although, ui-ace automatically handles some handy options :

  • showGutter : to show the gutter or not.
  • useWrapMode : to set whether or not line wrapping is enabled.
  • theme : to set the theme to use.
  • mode : to set the mode to use.
  • onLoad : callback when the editor has finished loading (see below).
  • onChange : callback when the editor content is changed ().
  • onBlur : callback when the editor is blurred ().
  • firstLineNumber : to set the firstLineNumber (default: 1)
<divui-ace="{ useWrapMode : true, showGutter: false, theme:'twilight', mode: 'xml', firstLineNumber: 5, onLoad: aceLoaded, onChange: aceChanged}"></div>

You'll want to define the onLoad and the onChange callback on your scope:

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Options_editor.setReadOnly(true);};$scope.aceChanged=function(e){//};}]);

To handle other options you'll have to use a direct access to the Ace created instance (see below).

Advanced Options

You can specify advanced options and even require options in the directive, as well. For this example, you will have to include the ext-language_tools.js file from the ace source code.

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ext-language_tools.js"></script>
<divui-ace="{ require: ['ace/ext/language_tools'], advanced: { enableSnippets: true, enableBasicAutocompletion: true, enableLiveAutocompletion: true }}"></div>

To include options applicable to the ACE renderer, you can use the rendererOptions key:

<divui-ace="{ rendererOptions: { maxLinks: Infinity }}"></div>

Support for concatenated bundles

Trying to use ace with concatenated javascript files usually fails because it changes the physical location of the workerPath. If you need to work with bundled or minified versions of ace, you can specify the original location of the workerPath on disk (not the bundled file).

This should be the folder on disk where ace.js resides.

<divui-ace="{ workerPath: '/path/to/ace/folder'}"></div>

Working with ng-model

The ui-ace directive plays nicely with ng-model.

The ng-model will be watched for to set the Ace EditSession value (by setValue).

The ui-ace directive stores and expects the model value to be a standard javascript String.

Can be read only

Simple demo

<divui-acereadonly></div>
or
Check me to make Ace readonly: <inputtype="checkbox" ng-model="checked" ><br/><divui-aceng-readonly="checked"></div>

Ace instance direct access

For more interaction with the Ace instance in the directive, we provide a direct access to it. Using

<divui-ace="{ onLoad : aceLoaded }" ></div>

the $scope.aceLoaded function will be called with the Ace Editor instance as first argument

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Editor partvar_session=_editor.getSession();var_renderer=_editor.renderer;// Options_editor.setReadOnly(true);_session.setUndoManager(newace.UndoManager());_renderer.setShowGutter(false);// Events_editor.on("changeSession",function(){ ... });_session.on("change",function(){ ... });};}]);

Testing

We use Karma and jshint to ensure the quality of the code. The easiest way to run these checks is to use grunt:

npm install -g grunt-cli
npm install && bower install
grunt

The karma task will try to open Firefox and Chrome as browser in which to run the tests. Make sure this is available or change the configuration in test\karma.conf.js

Grunt Serve

We have one task to serve them all !

grunt serve

It's equal to run separately:

  • grunt connect:server : giving you a development server at http://127.0.0.1:8000/.

  • grunt karma:server : giving you a Karma server to run tests (at http://localhost:9876/ by default). You can force a test on this server with grunt karma:unit:run.

  • grunt watch : will automatically test your code and build your demo. You can demo generation with grunt build:gh-pages.

Dist

This repo is using the angular-ui/angular-ui-publisher. New tags will automatically trigger a new publication. To test is locally you can trigger a :

grunt dist build:bower

it will put the final files in the 'dist' folder and a sample of the bower tag output in the 'out/built/bower' folder.

About

This directive allows you to add ACE editor elements.

Resources

Stars

574 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Repository files navigation

UI.Ace directive Build Status

This directive allows you to add ACE editor elements.

Requirements

Usage

You can get it from Bower

bower install angular-ui-ace#bower

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ace.js"></script><scripttype="text/javascript" src="bower_components/angular/angular.js"></script><scripttype="text/javascript" src="bower_components/angular-ui-ace/ui-ace.js"></script>

Add the UI.Ace module as a dependency to your application module:

varmyAppModule=angular.module('MyApp',['ui.ace']);

Finally, add the directive to your html:

<divui-ace></div>

To see something it's better to add some CSS, like

.ace_editor { height:200px; }

Options

Ace doesn't provide a one gate access to all the options the jquery way. Each option is configured with the function of a specific instance. See the api doc for more.

Although, ui-ace automatically handles some handy options :

  • showGutter : to show the gutter or not.
  • useWrapMode : to set whether or not line wrapping is enabled.
  • theme : to set the theme to use.
  • mode : to set the mode to use.
  • onLoad : callback when the editor has finished loading (see below).
  • onChange : callback when the editor content is changed ().
  • onBlur : callback when the editor is blurred ().
  • firstLineNumber : to set the firstLineNumber (default: 1)
<divui-ace="{ useWrapMode : true, showGutter: false, theme:'twilight', mode: 'xml', firstLineNumber: 5, onLoad: aceLoaded, onChange: aceChanged}"></div>

You'll want to define the onLoad and the onChange callback on your scope:

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Options_editor.setReadOnly(true);};$scope.aceChanged=function(e){//};}]);

To handle other options you'll have to use a direct access to the Ace created instance (see below).

Advanced Options

You can specify advanced options and even require options in the directive, as well. For this example, you will have to include the ext-language_tools.js file from the ace source code.

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ext-language_tools.js"></script>
<divui-ace="{ require: ['ace/ext/language_tools'], advanced: { enableSnippets: true, enableBasicAutocompletion: true, enableLiveAutocompletion: true }}"></div>

To include options applicable to the ACE renderer, you can use the rendererOptions key:

<divui-ace="{ rendererOptions: { maxLinks: Infinity }}"></div>

Support for concatenated bundles

Trying to use ace with concatenated javascript files usually fails because it changes the physical location of the workerPath. If you need to work with bundled or minified versions of ace, you can specify the original location of the workerPath on disk (not the bundled file).

This should be the folder on disk where ace.js resides.

<divui-ace="{ workerPath: '/path/to/ace/folder'}"></div>

Working with ng-model

The ui-ace directive plays nicely with ng-model.

The ng-model will be watched for to set the Ace EditSession value (by setValue).

The ui-ace directive stores and expects the model value to be a standard javascript String.

Can be read only

Simple demo

<divui-acereadonly></div>
or
Check me to make Ace readonly: <inputtype="checkbox" ng-model="checked" ><br/><divui-aceng-readonly="checked"></div>

Ace instance direct access

For more interaction with the Ace instance in the directive, we provide a direct access to it. Using

<divui-ace="{ onLoad : aceLoaded }" ></div>

the $scope.aceLoaded function will be called with the Ace Editor instance as first argument

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Editor partvar_session=_editor.getSession();var_renderer=_editor.renderer;// Options_editor.setReadOnly(true);_session.setUndoManager(newace.UndoManager());_renderer.setShowGutter(false);// Events_editor.on("changeSession",function(){ ... });_session.on("change",function(){ ... });};}]);

Testing

We use Karma and jshint to ensure the quality of the code. The easiest way to run these checks is to use grunt:

npm install -g grunt-cli
npm install && bower install
grunt

The karma task will try to open Firefox and Chrome as browser in which to run the tests. Make sure this is available or change the configuration in test\karma.conf.js

Grunt Serve

We have one task to serve them all !

grunt serve

It's equal to run separately:

  • grunt connect:server : giving you a development server at http://127.0.0.1:8000/.

  • grunt karma:server : giving you a Karma server to run tests (at http://localhost:9876/ by default). You can force a test on this server with grunt karma:unit:run.

  • grunt watch : will automatically test your code and build your demo. You can demo generation with grunt build:gh-pages.

Dist

This repo is using the angular-ui/angular-ui-publisher. New tags will automatically trigger a new publication. To test is locally you can trigger a :

grunt dist build:bower

it will put the final files in the 'dist' folder and a sample of the bower tag output in the 'out/built/bower' folder.

About

This directive allows you to add ACE editor elements.

Resources

Stars

574 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Repository files navigation

UI.Ace directive Build Status

This directive allows you to add ACE editor elements.

Requirements

Usage

You can get it from Bower

bower install angular-ui-ace#bower

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ace.js"></script><scripttype="text/javascript" src="bower_components/angular/angular.js"></script><scripttype="text/javascript" src="bower_components/angular-ui-ace/ui-ace.js"></script>

Add the UI.Ace module as a dependency to your application module:

varmyAppModule=angular.module('MyApp',['ui.ace']);

Finally, add the directive to your html:

<divui-ace></div>

To see something it's better to add some CSS, like

.ace_editor { height:200px; }

Options

Ace doesn't provide a one gate access to all the options the jquery way. Each option is configured with the function of a specific instance. See the api doc for more.

Although, ui-ace automatically handles some handy options :

  • showGutter : to show the gutter or not.
  • useWrapMode : to set whether or not line wrapping is enabled.
  • theme : to set the theme to use.
  • mode : to set the mode to use.
  • onLoad : callback when the editor has finished loading (see below).
  • onChange : callback when the editor content is changed ().
  • onBlur : callback when the editor is blurred ().
  • firstLineNumber : to set the firstLineNumber (default: 1)
<divui-ace="{ useWrapMode : true, showGutter: false, theme:'twilight', mode: 'xml', firstLineNumber: 5, onLoad: aceLoaded, onChange: aceChanged}"></div>

You'll want to define the onLoad and the onChange callback on your scope:

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Options_editor.setReadOnly(true);};$scope.aceChanged=function(e){//};}]);

To handle other options you'll have to use a direct access to the Ace created instance (see below).

Advanced Options

You can specify advanced options and even require options in the directive, as well. For this example, you will have to include the ext-language_tools.js file from the ace source code.

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ext-language_tools.js"></script>
<divui-ace="{ require: ['ace/ext/language_tools'], advanced: { enableSnippets: true, enableBasicAutocompletion: true, enableLiveAutocompletion: true }}"></div>

To include options applicable to the ACE renderer, you can use the rendererOptions key:

<divui-ace="{ rendererOptions: { maxLinks: Infinity }}"></div>

Support for concatenated bundles

Trying to use ace with concatenated javascript files usually fails because it changes the physical location of the workerPath. If you need to work with bundled or minified versions of ace, you can specify the original location of the workerPath on disk (not the bundled file).

This should be the folder on disk where ace.js resides.

<divui-ace="{ workerPath: '/path/to/ace/folder'}"></div>

Working with ng-model

The ui-ace directive plays nicely with ng-model.

The ng-model will be watched for to set the Ace EditSession value (by setValue).

The ui-ace directive stores and expects the model value to be a standard javascript String.

Can be read only

Simple demo

<divui-acereadonly></div>
or
Check me to make Ace readonly: <inputtype="checkbox" ng-model="checked" ><br/><divui-aceng-readonly="checked"></div>

Ace instance direct access

For more interaction with the Ace instance in the directive, we provide a direct access to it. Using

<divui-ace="{ onLoad : aceLoaded }" ></div>

the $scope.aceLoaded function will be called with the Ace Editor instance as first argument

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Editor partvar_session=_editor.getSession();var_renderer=_editor.renderer;// Options_editor.setReadOnly(true);_session.setUndoManager(newace.UndoManager());_renderer.setShowGutter(false);// Events_editor.on("changeSession",function(){ ... });_session.on("change",function(){ ... });};}]);

Testing

We use Karma and jshint to ensure the quality of the code. The easiest way to run these checks is to use grunt:

npm install -g grunt-cli
npm install && bower install
grunt

The karma task will try to open Firefox and Chrome as browser in which to run the tests. Make sure this is available or change the configuration in test\karma.conf.js

Grunt Serve

We have one task to serve them all !

grunt serve

It's equal to run separately:

  • grunt connect:server : giving you a development server at http://127.0.0.1:8000/.

  • grunt karma:server : giving you a Karma server to run tests (at http://localhost:9876/ by default). You can force a test on this server with grunt karma:unit:run.

  • grunt watch : will automatically test your code and build your demo. You can demo generation with grunt build:gh-pages.

Dist

This repo is using the angular-ui/angular-ui-publisher. New tags will automatically trigger a new publication. To test is locally you can trigger a :

grunt dist build:bower

it will put the final files in the 'dist' folder and a sample of the bower tag output in the 'out/built/bower' folder.

About

This directive allows you to add ACE editor elements.

Resources

Stars

574 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Repository files navigation

UI.Ace directive Build Status

This directive allows you to add ACE editor elements.

Requirements

Usage

You can get it from Bower

bower install angular-ui-ace#bower

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ace.js"></script><scripttype="text/javascript" src="bower_components/angular/angular.js"></script><scripttype="text/javascript" src="bower_components/angular-ui-ace/ui-ace.js"></script>

Add the UI.Ace module as a dependency to your application module:

varmyAppModule=angular.module('MyApp',['ui.ace']);

Finally, add the directive to your html:

<divui-ace></div>

To see something it's better to add some CSS, like

.ace_editor { height:200px; }

Options

Ace doesn't provide a one gate access to all the options the jquery way. Each option is configured with the function of a specific instance. See the api doc for more.

Although, ui-ace automatically handles some handy options :

  • showGutter : to show the gutter or not.
  • useWrapMode : to set whether or not line wrapping is enabled.
  • theme : to set the theme to use.
  • mode : to set the mode to use.
  • onLoad : callback when the editor has finished loading (see below).
  • onChange : callback when the editor content is changed ().
  • onBlur : callback when the editor is blurred ().
  • firstLineNumber : to set the firstLineNumber (default: 1)
<divui-ace="{ useWrapMode : true, showGutter: false, theme:'twilight', mode: 'xml', firstLineNumber: 5, onLoad: aceLoaded, onChange: aceChanged}"></div>

You'll want to define the onLoad and the onChange callback on your scope:

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Options_editor.setReadOnly(true);};$scope.aceChanged=function(e){//};}]);

To handle other options you'll have to use a direct access to the Ace created instance (see below).

Advanced Options

You can specify advanced options and even require options in the directive, as well. For this example, you will have to include the ext-language_tools.js file from the ace source code.

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ext-language_tools.js"></script>
<divui-ace="{ require: ['ace/ext/language_tools'], advanced: { enableSnippets: true, enableBasicAutocompletion: true, enableLiveAutocompletion: true }}"></div>

To include options applicable to the ACE renderer, you can use the rendererOptions key:

<divui-ace="{ rendererOptions: { maxLinks: Infinity }}"></div>

Support for concatenated bundles

Trying to use ace with concatenated javascript files usually fails because it changes the physical location of the workerPath. If you need to work with bundled or minified versions of ace, you can specify the original location of the workerPath on disk (not the bundled file).

This should be the folder on disk where ace.js resides.

<divui-ace="{ workerPath: '/path/to/ace/folder'}"></div>

Working with ng-model

The ui-ace directive plays nicely with ng-model.

The ng-model will be watched for to set the Ace EditSession value (by setValue).

The ui-ace directive stores and expects the model value to be a standard javascript String.

Can be read only

Simple demo

<divui-acereadonly></div>
or
Check me to make Ace readonly: <inputtype="checkbox" ng-model="checked" ><br/><divui-aceng-readonly="checked"></div>

Ace instance direct access

For more interaction with the Ace instance in the directive, we provide a direct access to it. Using

<divui-ace="{ onLoad : aceLoaded }" ></div>

the $scope.aceLoaded function will be called with the Ace Editor instance as first argument

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Editor partvar_session=_editor.getSession();var_renderer=_editor.renderer;// Options_editor.setReadOnly(true);_session.setUndoManager(newace.UndoManager());_renderer.setShowGutter(false);// Events_editor.on("changeSession",function(){ ... });_session.on("change",function(){ ... });};}]);

Testing

We use Karma and jshint to ensure the quality of the code. The easiest way to run these checks is to use grunt:

npm install -g grunt-cli
npm install && bower install
grunt

The karma task will try to open Firefox and Chrome as browser in which to run the tests. Make sure this is available or change the configuration in test\karma.conf.js

Grunt Serve

We have one task to serve them all !

grunt serve

It's equal to run separately:

  • grunt connect:server : giving you a development server at http://127.0.0.1:8000/.

  • grunt karma:server : giving you a Karma server to run tests (at http://localhost:9876/ by default). You can force a test on this server with grunt karma:unit:run.

  • grunt watch : will automatically test your code and build your demo. You can demo generation with grunt build:gh-pages.

Dist

This repo is using the angular-ui/angular-ui-publisher. New tags will automatically trigger a new publication. To test is locally you can trigger a :

grunt dist build:bower

it will put the final files in the 'dist' folder and a sample of the bower tag output in the 'out/built/bower' folder.

About

This directive allows you to add ACE editor elements.

Resources

Stars

574 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Repository files navigation

UI.Ace directive Build Status

This directive allows you to add ACE editor elements.

Requirements

Usage

You can get it from Bower

bower install angular-ui-ace#bower

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ace.js"></script><scripttype="text/javascript" src="bower_components/angular/angular.js"></script><scripttype="text/javascript" src="bower_components/angular-ui-ace/ui-ace.js"></script>

Add the UI.Ace module as a dependency to your application module:

varmyAppModule=angular.module('MyApp',['ui.ace']);

Finally, add the directive to your html:

<divui-ace></div>

To see something it's better to add some CSS, like

.ace_editor { height:200px; }

Options

Ace doesn't provide a one gate access to all the options the jquery way. Each option is configured with the function of a specific instance. See the api doc for more.

Although, ui-ace automatically handles some handy options :

  • showGutter : to show the gutter or not.
  • useWrapMode : to set whether or not line wrapping is enabled.
  • theme : to set the theme to use.
  • mode : to set the mode to use.
  • onLoad : callback when the editor has finished loading (see below).
  • onChange : callback when the editor content is changed ().
  • onBlur : callback when the editor is blurred ().
  • firstLineNumber : to set the firstLineNumber (default: 1)
<divui-ace="{ useWrapMode : true, showGutter: false, theme:'twilight', mode: 'xml', firstLineNumber: 5, onLoad: aceLoaded, onChange: aceChanged}"></div>

You'll want to define the onLoad and the onChange callback on your scope:

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Options_editor.setReadOnly(true);};$scope.aceChanged=function(e){//};}]);

To handle other options you'll have to use a direct access to the Ace created instance (see below).

Advanced Options

You can specify advanced options and even require options in the directive, as well. For this example, you will have to include the ext-language_tools.js file from the ace source code.

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ext-language_tools.js"></script>
<divui-ace="{ require: ['ace/ext/language_tools'], advanced: { enableSnippets: true, enableBasicAutocompletion: true, enableLiveAutocompletion: true }}"></div>

To include options applicable to the ACE renderer, you can use the rendererOptions key:

<divui-ace="{ rendererOptions: { maxLinks: Infinity }}"></div>

Support for concatenated bundles

Trying to use ace with concatenated javascript files usually fails because it changes the physical location of the workerPath. If you need to work with bundled or minified versions of ace, you can specify the original location of the workerPath on disk (not the bundled file).

This should be the folder on disk where ace.js resides.

<divui-ace="{ workerPath: '/path/to/ace/folder'}"></div>

Working with ng-model

The ui-ace directive plays nicely with ng-model.

The ng-model will be watched for to set the Ace EditSession value (by setValue).

The ui-ace directive stores and expects the model value to be a standard javascript String.

Can be read only

Simple demo

<divui-acereadonly></div>
or
Check me to make Ace readonly: <inputtype="checkbox" ng-model="checked" ><br/><divui-aceng-readonly="checked"></div>

Ace instance direct access

For more interaction with the Ace instance in the directive, we provide a direct access to it. Using

<divui-ace="{ onLoad : aceLoaded }" ></div>

the $scope.aceLoaded function will be called with the Ace Editor instance as first argument

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Editor partvar_session=_editor.getSession();var_renderer=_editor.renderer;// Options_editor.setReadOnly(true);_session.setUndoManager(newace.UndoManager());_renderer.setShowGutter(false);// Events_editor.on("changeSession",function(){ ... });_session.on("change",function(){ ... });};}]);

Testing

We use Karma and jshint to ensure the quality of the code. The easiest way to run these checks is to use grunt:

npm install -g grunt-cli
npm install && bower install
grunt

The karma task will try to open Firefox and Chrome as browser in which to run the tests. Make sure this is available or change the configuration in test\karma.conf.js

Grunt Serve

We have one task to serve them all !

grunt serve

It's equal to run separately:

  • grunt connect:server : giving you a development server at http://127.0.0.1:8000/.

  • grunt karma:server : giving you a Karma server to run tests (at http://localhost:9876/ by default). You can force a test on this server with grunt karma:unit:run.

  • grunt watch : will automatically test your code and build your demo. You can demo generation with grunt build:gh-pages.

Dist

This repo is using the angular-ui/angular-ui-publisher. New tags will automatically trigger a new publication. To test is locally you can trigger a :

grunt dist build:bower

it will put the final files in the 'dist' folder and a sample of the bower tag output in the 'out/built/bower' folder.

About

This directive allows you to add ACE editor elements.

Resources

Stars

574 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Repository files navigation

UI.Ace directive Build Status

This directive allows you to add ACE editor elements.

Requirements

Usage

You can get it from Bower

bower install angular-ui-ace#bower

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ace.js"></script><scripttype="text/javascript" src="bower_components/angular/angular.js"></script><scripttype="text/javascript" src="bower_components/angular-ui-ace/ui-ace.js"></script>

Add the UI.Ace module as a dependency to your application module:

varmyAppModule=angular.module('MyApp',['ui.ace']);

Finally, add the directive to your html:

<divui-ace></div>

To see something it's better to add some CSS, like

.ace_editor { height:200px; }

Options

Ace doesn't provide a one gate access to all the options the jquery way. Each option is configured with the function of a specific instance. See the api doc for more.

Although, ui-ace automatically handles some handy options :

  • showGutter : to show the gutter or not.
  • useWrapMode : to set whether or not line wrapping is enabled.
  • theme : to set the theme to use.
  • mode : to set the mode to use.
  • onLoad : callback when the editor has finished loading (see below).
  • onChange : callback when the editor content is changed ().
  • onBlur : callback when the editor is blurred ().
  • firstLineNumber : to set the firstLineNumber (default: 1)
<divui-ace="{ useWrapMode : true, showGutter: false, theme:'twilight', mode: 'xml', firstLineNumber: 5, onLoad: aceLoaded, onChange: aceChanged}"></div>

You'll want to define the onLoad and the onChange callback on your scope:

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Options_editor.setReadOnly(true);};$scope.aceChanged=function(e){//};}]);

To handle other options you'll have to use a direct access to the Ace created instance (see below).

Advanced Options

You can specify advanced options and even require options in the directive, as well. For this example, you will have to include the ext-language_tools.js file from the ace source code.

This will copy the UI.Ace files into a bower_components folder, along with its dependencies. Load the script files in your application:

<scripttype="text/javascript" src="bower_components/ace-builds/src-min-noconflict/ext-language_tools.js"></script>
<divui-ace="{ require: ['ace/ext/language_tools'], advanced: { enableSnippets: true, enableBasicAutocompletion: true, enableLiveAutocompletion: true }}"></div>

To include options applicable to the ACE renderer, you can use the rendererOptions key:

<divui-ace="{ rendererOptions: { maxLinks: Infinity }}"></div>

Support for concatenated bundles

Trying to use ace with concatenated javascript files usually fails because it changes the physical location of the workerPath. If you need to work with bundled or minified versions of ace, you can specify the original location of the workerPath on disk (not the bundled file).

This should be the folder on disk where ace.js resides.

<divui-ace="{ workerPath: '/path/to/ace/folder'}"></div>

Working with ng-model

The ui-ace directive plays nicely with ng-model.

The ng-model will be watched for to set the Ace EditSession value (by setValue).

The ui-ace directive stores and expects the model value to be a standard javascript String.

Can be read only

Simple demo

<divui-acereadonly></div>
or
Check me to make Ace readonly: <inputtype="checkbox" ng-model="checked" ><br/><divui-aceng-readonly="checked"></div>

Ace instance direct access

For more interaction with the Ace instance in the directive, we provide a direct access to it. Using

<divui-ace="{ onLoad : aceLoaded }" ></div>

the $scope.aceLoaded function will be called with the Ace Editor instance as first argument

myAppModule.controller('MyController',['$scope',function($scope){$scope.aceLoaded=function(_editor){// Editor partvar_session=_editor.getSession();var_renderer=_editor.renderer;// Options_editor.setReadOnly(true);_session.setUndoManager(newace.UndoManager());_renderer.setShowGutter(false);// Events_editor.on("changeSession",function(){ ... });_session.on("change",function(){ ... });};}]);

Testing

We use Karma and jshint to ensure the quality of the code. The easiest way to run these checks is to use grunt:

npm install -g grunt-cli
npm install && bower install
grunt

The karma task will try to open Firefox and Chrome as browser in which to run the tests. Make sure this is available or change the configuration in test\karma.conf.js

Grunt Serve

We have one task to serve them all !

grunt serve

It's equal to run separately:

  • grunt connect:server : giving you a development server at http://127.0.0.1:8000/.

  • grunt karma:server : giving you a Karma server to run tests (at http://localhost:9876/ by default). You can force a test on this server with grunt karma:unit:run.

  • grunt watch : will automatically test your code and build your demo. You can demo generation with grunt build:gh-pages.

Dist

This repo is using the angular-ui/angular-ui-publisher. New tags will automatically trigger a new publication. To test is locally you can trigger a :

grunt dist build:bower

it will put the final files in the 'dist' folder and a sample of the bower tag output in the 'out/built/bower' folder.

About

This directive allows you to add ACE editor elements.

Resources

Stars

574 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages