aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/editor/plugin.js
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/editor/plugin.js')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/editor/plugin.js463
1 files changed, 0 insertions, 463 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/editor/plugin.js b/contexts/data/lib/closure-library/closure/goog/editor/plugin.js
deleted file mode 100644
index 6f45a2e..0000000
--- a/contexts/data/lib/closure-library/closure/goog/editor/plugin.js
+++ /dev/null
@@ -1,463 +0,0 @@
-// Copyright 2008 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// All Rights Reserved.
-
-/**
- * @fileoverview Abstract API for TrogEdit plugins.
- *
- * @see ../demos/editor/editor.html
- */
-
-goog.provide('goog.editor.Plugin');
-
-goog.require('goog.debug.Logger');
-// TODO(user): Remove the dependency on goog.editor.Command asap. Currently only
-// needed for execCommand issues with links.
-goog.require('goog.editor.Command');
-goog.require('goog.events.EventTarget');
-goog.require('goog.functions');
-goog.require('goog.object');
-goog.require('goog.reflect');
-
-
-
-/**
- * Abstract API for trogedit plugins.
- * @constructor
- * @extends {goog.events.EventTarget}
- */
-goog.editor.Plugin = function() {
- goog.events.EventTarget.call(this);
-
- /**
- * Whether this plugin is enabled for the registered field object.
- * @type {boolean}
- * @private
- */
- this.enabled_ = this.activeOnUneditableFields();
-};
-goog.inherits(goog.editor.Plugin, goog.events.EventTarget);
-
-
-/**
- * The field object this plugin is attached to.
- * @type {goog.editor.Field}
- * @protected
- * @deprecated Use goog.editor.Plugin.getFieldObject and
- * goog.editor.Plugin.setFieldObject.
- */
-goog.editor.Plugin.prototype.fieldObject = null;
-
-
-/**
- * @return {goog.dom.DomHelper?} The dom helper object associated with the
- * currently active field.
- */
-goog.editor.Plugin.prototype.getFieldDomHelper = function() {
- return this.getFieldObject() && this.getFieldObject().getEditableDomHelper();
-};
-
-
-/**
- * Indicates if this plugin should be automatically disposed when the
- * registered field is disposed. This should be changed to false for
- * plugins used as multi-field plugins.
- * @type {boolean}
- * @private
- */
-goog.editor.Plugin.prototype.autoDispose_ = true;
-
-
-/**
- * The logger for this plugin.
- * @type {goog.debug.Logger}
- * @protected
- */
-goog.editor.Plugin.prototype.logger =
- goog.debug.Logger.getLogger('goog.editor.Plugin');
-
-
-/**
- * Sets the field object for use with this plugin.
- * @return {goog.editor.Field} The editable field object.
- * @protected
- * @suppress {deprecated} Until fieldObject can be made private.
- */
-goog.editor.Plugin.prototype.getFieldObject = function() {
- return this.fieldObject;
-};
-
-
-/**
- * Sets the field object for use with this plugin.
- * @param {goog.editor.Field} fieldObject The editable field object.
- * @protected
- * @suppress {deprecated} Until fieldObject can be made private.
- */
-goog.editor.Plugin.prototype.setFieldObject = function(fieldObject) {
- this.fieldObject = fieldObject;
-};
-
-
-/**
- * Registers the field object for use with this plugin.
- * @param {goog.editor.Field} fieldObject The editable field object.
- */
-goog.editor.Plugin.prototype.registerFieldObject = function(fieldObject) {
- this.setFieldObject(fieldObject);
-};
-
-
-/**
- * Unregisters and disables this plugin for the current field object.
- * @param {goog.editor.Field} fieldObj The field object. For single-field
- * plugins, this parameter is ignored.
- */
-goog.editor.Plugin.prototype.unregisterFieldObject = function(fieldObj) {
- if (this.getFieldObject()) {
- this.disable(this.getFieldObject());
- this.setFieldObject(null);
- }
-};
-
-
-/**
- * Enables this plugin for the specified, registered field object. A field
- * object should only be enabled when it is loaded.
- * @param {goog.editor.Field} fieldObject The field object.
- */
-goog.editor.Plugin.prototype.enable = function(fieldObject) {
- if (this.getFieldObject() == fieldObject) {
- this.enabled_ = true;
- } else {
- this.logger.severe('Trying to enable an unregistered field with ' +
- 'this plugin.');
- }
-};
-
-
-/**
- * Disables this plugin for the specified, registered field object.
- * @param {goog.editor.Field} fieldObject The field object.
- */
-goog.editor.Plugin.prototype.disable = function(fieldObject) {
- if (this.getFieldObject() == fieldObject) {
- this.enabled_ = false;
- } else {
- this.logger.severe('Trying to disable an unregistered field ' +
- 'with this plugin.');
- }
-};
-
-
-/**
- * Returns whether this plugin is enabled for the field object.
- *
- * @param {goog.editor.Field} fieldObject The field object.
- * @return {boolean} Whether this plugin is enabled for the field object.
- */
-goog.editor.Plugin.prototype.isEnabled = function(fieldObject) {
- return this.getFieldObject() == fieldObject ? this.enabled_ : false;
-};
-
-
-/**
- * Set if this plugin should automatically be disposed when the registered
- * field is disposed.
- * @param {boolean} autoDispose Whether to autoDispose.
- */
-goog.editor.Plugin.prototype.setAutoDispose = function(autoDispose) {
- this.autoDispose_ = autoDispose;
-};
-
-
-/**
- * @return {boolean} Whether or not this plugin should automatically be disposed
- * when it's registered field is disposed.
- */
-goog.editor.Plugin.prototype.isAutoDispose = function() {
- return this.autoDispose_;
-};
-
-
-/**
- * @return {boolean} If true, field will not disable the command
- * when the field becomes uneditable.
- */
-goog.editor.Plugin.prototype.activeOnUneditableFields = goog.functions.FALSE;
-
-
-/**
- * @param {string} command The command to check.
- * @return {boolean} If true, field will not dispatch change events
- * for commands of this type. This is useful for "seamless" plugins like
- * dialogs and lorem ipsum.
- */
-goog.editor.Plugin.prototype.isSilentCommand = goog.functions.FALSE;
-
-
-/** @override */
-goog.editor.Plugin.prototype.disposeInternal = function() {
- if (this.getFieldObject()) {
- this.unregisterFieldObject(this.getFieldObject());
- }
-
- goog.editor.Plugin.superClass_.disposeInternal.call(this);
-};
-
-
-/**
- * @return {string} The ID unique to this plugin class. Note that different
- * instances off the plugin share the same classId.
- */
-goog.editor.Plugin.prototype.getTrogClassId;
-
-
-/**
- * An enum of operations that plugins may support.
- * @enum {number}
- */
-goog.editor.Plugin.Op = {
- KEYDOWN: 1,
- KEYPRESS: 2,
- KEYUP: 3,
- SELECTION: 4,
- SHORTCUT: 5,
- EXEC_COMMAND: 6,
- QUERY_COMMAND: 7,
- PREPARE_CONTENTS_HTML: 8,
- CLEAN_CONTENTS_HTML: 10,
- CLEAN_CONTENTS_DOM: 11
-};
-
-
-/**
- * A map from plugin operations to the names of the methods that
- * invoke those operations.
- */
-goog.editor.Plugin.OPCODE = goog.object.transpose(
- goog.reflect.object(goog.editor.Plugin, {
- handleKeyDown: goog.editor.Plugin.Op.KEYDOWN,
- handleKeyPress: goog.editor.Plugin.Op.KEYPRESS,
- handleKeyUp: goog.editor.Plugin.Op.KEYUP,
- handleSelectionChange: goog.editor.Plugin.Op.SELECTION,
- handleKeyboardShortcut: goog.editor.Plugin.Op.SHORTCUT,
- execCommand: goog.editor.Plugin.Op.EXEC_COMMAND,
- queryCommandValue: goog.editor.Plugin.Op.QUERY_COMMAND,
- prepareContentsHtml: goog.editor.Plugin.Op.PREPARE_CONTENTS_HTML,
- cleanContentsHtml: goog.editor.Plugin.Op.CLEAN_CONTENTS_HTML,
- cleanContentsDom: goog.editor.Plugin.Op.CLEAN_CONTENTS_DOM
- }));
-
-
-/**
- * A set of op codes that run even on disabled plugins.
- */
-goog.editor.Plugin.IRREPRESSIBLE_OPS = goog.object.createSet(
- goog.editor.Plugin.Op.PREPARE_CONTENTS_HTML,
- goog.editor.Plugin.Op.CLEAN_CONTENTS_HTML,
- goog.editor.Plugin.Op.CLEAN_CONTENTS_DOM);
-
-
-/**
- * Handles keydown. It is run before handleKeyboardShortcut and if it returns
- * true handleKeyboardShortcut will not be called.
- * @param {!goog.events.BrowserEvent} e The browser event.
- * @return {boolean} Whether the event was handled and thus should *not* be
- * propagated to other plugins or handleKeyboardShortcut.
- */
-goog.editor.Plugin.prototype.handleKeyDown;
-
-
-/**
- * Handles keypress. It is run before handleKeyboardShortcut and if it returns
- * true handleKeyboardShortcut will not be called.
- * @param {!goog.events.BrowserEvent} e The browser event.
- * @return {boolean} Whether the event was handled and thus should *not* be
- * propagated to other plugins or handleKeyboardShortcut.
- */
-goog.editor.Plugin.prototype.handleKeyPress;
-
-
-/**
- * Handles keyup.
- * @param {!goog.events.BrowserEvent} e The browser event.
- * @return {boolean} Whether the event was handled and thus should *not* be
- * propagated to other plugins.
- */
-goog.editor.Plugin.prototype.handleKeyUp;
-
-
-/**
- * Handles selection change.
- * @param {!goog.events.BrowserEvent=} opt_e The browser event.
- * @param {!Node=} opt_target The node the selection changed to.
- * @return {boolean} Whether the event was handled and thus should *not* be
- * propagated to other plugins.
- */
-goog.editor.Plugin.prototype.handleSelectionChange;
-
-
-/**
- * Handles keyboard shortcuts. Preferred to using handleKey* as it will use
- * the proper event based on browser and will be more performant. If
- * handleKeyPress/handleKeyDown returns true, this will not be called. If the
- * plugin handles the shortcut, it is responsible for dispatching appropriate
- * events (change, selection change at the time of this comment). If the plugin
- * calls execCommand on the editable field, then execCommand already takes care
- * of dispatching events.
- * NOTE: For performance reasons this is only called when any key is pressed
- * in conjunction with ctrl/meta keys OR when a small subset of keys (defined
- * in goog.editor.Field.POTENTIAL_SHORTCUT_KEYCODES_) are pressed without
- * ctrl/meta keys. We specifically don't invoke it when altKey is pressed since
- * alt key is used in many i8n UIs to enter certain characters.
- * @param {!goog.events.BrowserEvent} e The browser event.
- * @param {string} key The key pressed.
- * @param {boolean} isModifierPressed Whether the ctrl/meta key was pressed or
- * not.
- * @return {boolean} Whether the event was handled and thus should *not* be
- * propagated to other plugins. We also call preventDefault on the event if
- * the return value is true.
- */
-goog.editor.Plugin.prototype.handleKeyboardShortcut;
-
-
-/**
- * Handles execCommand. This default implementation handles dispatching
- * BEFORECHANGE, CHANGE, and SELECTIONCHANGE events, and calls
- * execCommandInternal to perform the actual command. Plugins that want to
- * do their own event dispatching should override execCommand, otherwise
- * it is preferred to only override execCommandInternal.
- *
- * This version of execCommand will only work for single field plugins.
- * Multi-field plugins must override execCommand.
- *
- * @param {string} command The command to execute.
- * @param {...*} var_args Any additional parameters needed to
- * execute the command.
- * @return {*} The result of the execCommand, if any.
- */
-goog.editor.Plugin.prototype.execCommand = function(command, var_args) {
- // TODO(user): Replace all uses of isSilentCommand with plugins that just
- // override this base execCommand method.
- var silent = this.isSilentCommand(command);
- if (!silent) {
- // Stop listening to mutation events in Firefox while text formatting
- // is happening. This prevents us from trying to size the field in the
- // middle of an execCommand, catching the field in a strange intermediary
- // state where both replacement nodes and original nodes are appended to
- // the dom. Note that change events get turned back on by
- // fieldObj.dispatchChange.
- if (goog.userAgent.GECKO) {
- this.getFieldObject().stopChangeEvents(true, true);
- }
-
- this.getFieldObject().dispatchBeforeChange();
- }
-
- try {
- var result = this.execCommandInternal.apply(this, arguments);
- } finally {
- // If the above execCommandInternal call throws an exception, we still need
- // to turn change events back on (see http://b/issue?id=1471355).
- // NOTE: If if you add to or change the methods called in this finally
- // block, please add them as expected calls to the unit test function
- // testExecCommandException().
- if (!silent) {
- // dispatchChange includes a call to startChangeEvents, which unwinds the
- // call to stopChangeEvents made before the try block.
- this.getFieldObject().dispatchChange();
- this.getFieldObject().dispatchSelectionChangeEvent();
- }
- }
-
- return result;
-};
-
-
-/**
- * Handles execCommand. This default implementation does nothing, and is
- * called by execCommand, which handles event dispatching. This method should
- * be overriden by plugins that don't need to do their own event dispatching.
- * If custom event dispatching is needed, execCommand shoul be overriden
- * instead.
- *
- * @param {string} command The command to execute.
- * @param {...*} var_args Any additional parameters needed to
- * execute the command.
- * @return {*} The result of the execCommand, if any.
- * @protected
- */
-goog.editor.Plugin.prototype.execCommandInternal;
-
-
-/**
- * Gets the state of this command if this plugin serves that command.
- * @param {string} command The command to check.
- * @return {*} The value of the command.
- */
-goog.editor.Plugin.prototype.queryCommandValue;
-
-
-/**
- * Prepares the given HTML for editing. Strips out content that should not
- * appear in an editor, and normalizes content as appropriate. The inverse
- * of cleanContentsHtml.
- *
- * This op is invoked even on disabled plugins.
- *
- * @param {string} originalHtml The original HTML.
- * @param {Object} styles A map of strings. If the plugin wants to add
- * any styles to the field element, it should add them as key-value
- * pairs to this object.
- * @return {string} New HTML that's ok for editing.
- */
-goog.editor.Plugin.prototype.prepareContentsHtml;
-
-
-/**
- * Cleans the contents of the node passed to it. The node contents are modified
- * directly, and the modifications will subsequently be used, for operations
- * such as saving the innerHTML of the editor etc. Since the plugins act on
- * the DOM directly, this method can be very expensive.
- *
- * This op is invoked even on disabled plugins.
- *
- * @param {!Element} fieldCopy The copy of the editable field which
- * needs to be cleaned up.
- */
-goog.editor.Plugin.prototype.cleanContentsDom;
-
-
-/**
- * Cleans the html contents of Trogedit. Both cleanContentsDom and
- * and cleanContentsHtml will be called on contents extracted from Trogedit.
- * The inverse of prepareContentsHtml.
- *
- * This op is invoked even on disabled plugins.
- *
- * @param {string} originalHtml The trogedit HTML.
- * @return {string} Cleaned-up HTML.
- */
-goog.editor.Plugin.prototype.cleanContentsHtml;
-
-
-/**
- * Whether the string corresponds to a command this plugin handles.
- * @param {string} command Command string to check.
- * @return {boolean} Whether the plugin handles this type of command.
- */
-goog.editor.Plugin.prototype.isSupportedCommand = function(command) {
- return false;
-};