build: Replace jsduck with jsdoc for documentation
Bug: T250843 Change-Id: Iab357c57b9603f57fd9a04771df71d4003322f28
这个提交包含在:
父节点
f428c59fad
当前提交
c401efc988
|
@ -0,0 +1,91 @@
|
|||
{
|
||||
"opts": {
|
||||
"encoding": "utf8",
|
||||
"destination": "docs",
|
||||
"package": "package.json",
|
||||
"readme": "README.md",
|
||||
"pedantic": false,
|
||||
"private": true,
|
||||
"recurse": true,
|
||||
"template": "node_modules/jsdoc-wmf-theme",
|
||||
"class-hierarchy": {
|
||||
"showList": true
|
||||
}
|
||||
},
|
||||
"plugins": [
|
||||
"plugins/markdown",
|
||||
"plugins/summarize",
|
||||
"node_modules/jsdoc-class-hierarchy"
|
||||
],
|
||||
"source": {
|
||||
"include": [ "src", "rebaser/src" ]
|
||||
},
|
||||
"templates": {
|
||||
"cleverLinks": true,
|
||||
"default": {
|
||||
"useLongnameInNav": true
|
||||
},
|
||||
"wmf": {
|
||||
"maintitle": "VisualEditor",
|
||||
"repository": "https://gerrit.wikimedia.org/g/VisualEditor/VisualEditor/",
|
||||
"linkMap": {
|
||||
"Mixed": "#",
|
||||
|
||||
"Array": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array",
|
||||
"Error": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
|
||||
"Object": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object",
|
||||
"Promise": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise",
|
||||
|
||||
"Blob": "https://developer.mozilla.org/en-US/docs/Web/API/Blob",
|
||||
"DataTransfer": "https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer",
|
||||
"DataTransferItem": "https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem",
|
||||
"Event": "https://developer.mozilla.org/en-US/docs/Web/API/Event",
|
||||
"HTMLDocument": "https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument",
|
||||
"HTMLElement": "https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement",
|
||||
"MutationRecord": "https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord",
|
||||
"Node": "https://developer.mozilla.org/en-US/docs/Web/API/Node",
|
||||
"NodeList": "https://developer.mozilla.org/en-US/docs/Web/API/NodeList",
|
||||
"Range": "https://developer.mozilla.org/en-US/docs/Web/API/Range",
|
||||
"Selection": "https://developer.mozilla.org/en-US/docs/Web/API/Selection",
|
||||
|
||||
"jQuery": "http://api.jquery.com/",
|
||||
"jQuery.Deferred": "http://api.jquery.com/jQuery.Deferred/",
|
||||
"jQuery.Event": "http://api.jquery.com/Types/#Event",
|
||||
"jQuery.Promise": "http://api.jquery.com/Types/#Promise",
|
||||
|
||||
"OO.EventEmitter": "https://doc.wikimedia.org/oojs/master/OO.EventEmitter.html",
|
||||
"OO.Factory": "https://doc.wikimedia.org/oojs/master/OO.Factory.html",
|
||||
"OO.Registry": "https://doc.wikimedia.org/oojs/master/OO.Registry.html",
|
||||
|
||||
"OO.ui.mixin.GroupElement": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.GroupElement.html",
|
||||
"OO.ui.mixin.PendingElement": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.PendingElement.html",
|
||||
"OO.ui.BookletLayout": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.BookletLayout.html",
|
||||
"OO.ui.ButtonSelectWidget": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ButtonSelectWidget.html",
|
||||
"OO.ui.DecoratedOptionWidget": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.DecoratedOptionWidget.html",
|
||||
"OO.ui.Dialog": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Dialog.html",
|
||||
"OO.ui.Element": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Element.html",
|
||||
"OO.ui.HtmlSnippet": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.HtmlSnippet.html",
|
||||
"OO.ui.MenuOptionWidget": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.MenuOptionWidget.html",
|
||||
"OO.ui.MessageDialog": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.MessageDialog.html",
|
||||
"OO.ui.MultilineTextInputWidget": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.MultilineTextInputWidget.html",
|
||||
"OO.ui.NumberInputWidget": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.NumberInputWidget.html",
|
||||
"OO.ui.OptionWidget": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.OptionWidget.html",
|
||||
"OO.ui.PageLayout": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.PageLayout.html",
|
||||
"OO.ui.PopupTool": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.PopupTool.html",
|
||||
"OO.ui.Process": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Process.html",
|
||||
"OO.ui.ProcessDialog": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ProcessDialog.html",
|
||||
"OO.ui.SearchWidget": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.SearchWidget.html",
|
||||
"OO.ui.SelectWidget": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.SelectWidget.html",
|
||||
"OO.ui.TextInputWidget": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.TextInputWidget.html",
|
||||
"OO.ui.Tool": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Tool.html",
|
||||
"OO.ui.Toolbar": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Toolbar.html",
|
||||
"OO.ui.ToolFactory": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ToolFactory.html",
|
||||
"OO.ui.ToolGroup": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ToolGroup.html",
|
||||
"OO.ui.ToolGroupTool": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ToolGroupTool.html",
|
||||
"OO.ui.Widget": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Widget.html",
|
||||
"OO.ui.Window": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Window.html",
|
||||
"OO.ui.WindowManager": "https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.WindowManager.html"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,116 +0,0 @@
|
|||
# Custom tags for JSDuck 5.x
|
||||
# See also:
|
||||
# - https://github.com/senchalabs/jsduck/wiki/Tags
|
||||
# - https://github.com/senchalabs/jsduck/wiki/Custom-tags
|
||||
# - https://github.com/senchalabs/jsduck/wiki/Custom-tags/7f5c32e568eab9edc8e3365e935bcb836cb11f1d
|
||||
require 'jsduck/tag/tag'
|
||||
|
||||
class CommonTag < JsDuck::Tag::Tag
|
||||
def initialize
|
||||
@html_position = POS_DOC + 0.1
|
||||
@repeatable = true
|
||||
end
|
||||
|
||||
def parse_doc(scanner, position)
|
||||
if @multiline
|
||||
return { :tagname => @tagname, :doc => :multiline }
|
||||
else
|
||||
text = scanner.match(/.*$/)
|
||||
return { :tagname => @tagname, :doc => text }
|
||||
end
|
||||
end
|
||||
|
||||
def process_doc(context, tags, position)
|
||||
context[@tagname] = tags
|
||||
end
|
||||
|
||||
def format(context, formatter)
|
||||
context[@tagname].each do |tag|
|
||||
tag[:doc] = formatter.format(tag[:doc])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class SourceTag < CommonTag
|
||||
def initialize
|
||||
@tagname = :source
|
||||
@pattern = 'source'
|
||||
super
|
||||
end
|
||||
|
||||
def to_html(context)
|
||||
context[@tagname].map do |source|
|
||||
<<-EOHTML
|
||||
<h3 class='pa'>Source</h3>
|
||||
#{source[:doc]}
|
||||
EOHTML
|
||||
end.join
|
||||
end
|
||||
end
|
||||
|
||||
class SeeTag < CommonTag
|
||||
def initialize
|
||||
@tagname = :see
|
||||
@pattern = 'see'
|
||||
super
|
||||
end
|
||||
|
||||
def format(context, formatter)
|
||||
position = context[:files][0]
|
||||
context[@tagname].each do |tag|
|
||||
tag[:doc] = '<li>' + render_long_see(tag[:doc], formatter, position) + '</li>'
|
||||
end
|
||||
end
|
||||
|
||||
def to_html(context)
|
||||
<<-EOHTML
|
||||
<h3 class="pa">Related</h3>
|
||||
<ul>
|
||||
#{ context[@tagname].map { |tag| tag[:doc] }.join("\n") }
|
||||
</ul>
|
||||
EOHTML
|
||||
end
|
||||
|
||||
def render_long_see(tag, formatter, position)
|
||||
if tag =~ /\A([^\s]+)( .*)?\Z/m
|
||||
name = $1
|
||||
doc = $2 ? ': ' + $2 : ''
|
||||
return formatter.format("{@link #{name}} #{doc}")
|
||||
else
|
||||
JsDuck::Logger.warn(nil, 'Unexpected @see argument: "' + tag + '"', position)
|
||||
return tag
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class ContextTag < CommonTag
|
||||
def initialize
|
||||
@tagname = :this
|
||||
@pattern = 'this'
|
||||
super
|
||||
end
|
||||
|
||||
def format(context, formatter)
|
||||
position = context[:files][0]
|
||||
context[@tagname].each do |tag|
|
||||
tag[:doc] = render_long_context(tag[:doc], formatter, position)
|
||||
end
|
||||
end
|
||||
|
||||
def to_html(context)
|
||||
<<-EOHTML
|
||||
<h3 class="pa">Context</h3>
|
||||
#{ context[@tagname].last[:doc] }
|
||||
EOHTML
|
||||
end
|
||||
|
||||
def render_long_context(tag, formatter, position)
|
||||
if tag =~ /\A([^\s]+)/m
|
||||
name = $1
|
||||
return formatter.format("`this` : {@link #{name}}")
|
||||
else
|
||||
JsDuck::Logger.warn(nil, 'Unexpected @this argument: "' + tag + '"', position)
|
||||
return tag
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,343 +0,0 @@
|
|||
[
|
||||
{
|
||||
"name": "General",
|
||||
"groups": [
|
||||
{
|
||||
"name": "Utilities",
|
||||
"classes": [
|
||||
"ve",
|
||||
"ve.Range",
|
||||
"ve.PositionStep",
|
||||
"ve.SelectionState",
|
||||
"ve.EventSequencer",
|
||||
"ve.Filibuster",
|
||||
"ve.TriggerListener",
|
||||
"ve.Scheduler"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Nodes",
|
||||
"classes": ["ve.Node", "ve.BranchNode", "ve.LeafNode", "ve.Document"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Initialization",
|
||||
"groups": [
|
||||
{
|
||||
"name": "General",
|
||||
"classes": [
|
||||
"ve.init",
|
||||
"ve.init.Platform",
|
||||
"ve.init.Target",
|
||||
"ve.init.*Storage",
|
||||
"global"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Stand-alone",
|
||||
"classes": ["ve.init.sa*"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "DataModel",
|
||||
"groups": [
|
||||
{
|
||||
"name": "General",
|
||||
"classes": [
|
||||
"ve.dm",
|
||||
"ve.dm.Model",
|
||||
"ve.dm.ModelRegistry",
|
||||
"ve.dm.ModelFactory",
|
||||
"ve.dm.AnnotationFactory",
|
||||
"ve.dm.NodeFactory",
|
||||
"ve.dm.Converter",
|
||||
"ve.dm.DataString",
|
||||
"ve.dm.HashValueStore",
|
||||
"ve.dm.Scalable",
|
||||
"ve.dm.Surface",
|
||||
"ve.dm.*SurfaceFragment",
|
||||
"ve.dm.*Selection",
|
||||
"ve.dm.Transaction",
|
||||
"ve.dm.TransactionBuilder",
|
||||
"ve.dm.TransactionSquasher",
|
||||
"ve.dm.TreeCursor",
|
||||
"ve.dm.TreeModifier",
|
||||
"ve.dm.TransactionProcessor",
|
||||
"ve.dm.TransactionProcessor.*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Annotations",
|
||||
"classes": ["ve.dm.*Annotation", "ve.dm.AnnotationSet"]
|
||||
},
|
||||
{
|
||||
"name": "Meta items",
|
||||
"classes": ["ve.dm.*MetaItem", "ve.dm.MetaList"]
|
||||
},
|
||||
{
|
||||
"name": "Internal list",
|
||||
"classes": ["ve.dm.InternalList"]
|
||||
},
|
||||
{
|
||||
"name": "Nodes and documents",
|
||||
"classes": ["ve.dm.Document", "ve.dm.*Slice", "ve.dm.*Node"]
|
||||
},
|
||||
{
|
||||
"name": "Linear data",
|
||||
"classes": ["ve.dm.*LinearData*"]
|
||||
},
|
||||
{
|
||||
"name": "Models",
|
||||
"classes": ["ve.dm.*Model"]
|
||||
},
|
||||
{
|
||||
"name": "Table model",
|
||||
"classes": [
|
||||
"ve.dm.TableMatrix",
|
||||
"ve.dm.TableMatrixCell",
|
||||
"ve.dm.TableNodeCellIterator"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Rebasing",
|
||||
"classes": [
|
||||
"ve.dm.Change",
|
||||
"ve.dm.RebaseClient",
|
||||
"ve.dm.SurfaceSynchronizer"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ContentEditable",
|
||||
"groups": [
|
||||
{
|
||||
"name": "General",
|
||||
"classes": [
|
||||
"ve.ce",
|
||||
"ve.ce.View",
|
||||
"ve.ce.AnnotationFactory",
|
||||
"ve.ce.NodeFactory",
|
||||
"ve.ce.Surface",
|
||||
"ve.ce.SurfaceObserver",
|
||||
"ve.ce.*Selection",
|
||||
"ve.ce.RangeState",
|
||||
"ve.ce.TextState",
|
||||
"ve.ce.TextStateChunk"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Annotations",
|
||||
"classes": ["ve.ce.*Annotation"]
|
||||
},
|
||||
{
|
||||
"name": "Meta items",
|
||||
"classes": ["ve.ce.MetaItem"]
|
||||
},
|
||||
{
|
||||
"name": "Factories",
|
||||
"classes": ["ve.ce.*Factory"]
|
||||
},
|
||||
{
|
||||
"name": "Key down handlers",
|
||||
"classes": ["ve.ce.*KeyDownHandler"]
|
||||
},
|
||||
{
|
||||
"name": "Nodes",
|
||||
"classes": ["ve.ce.Document", "ve.ce.*Node"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "User Interface",
|
||||
"groups": [
|
||||
{
|
||||
"name": "General",
|
||||
"classes": [
|
||||
"ve.ui",
|
||||
"ve.ui.*Surface",
|
||||
"ve.ui.*Context",
|
||||
"ve.ui.Overlay",
|
||||
"ve.ui.*Toolbar",
|
||||
"ve.ui.DebugBar",
|
||||
"ve.ui.Trigger",
|
||||
"ve.ui.TabIndexScope"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Actions",
|
||||
"classes": ["ve.ui.*Action"]
|
||||
},
|
||||
{
|
||||
"name": "Commands",
|
||||
"classes": ["ve.ui.*Command"]
|
||||
},
|
||||
{
|
||||
"name": "Context items",
|
||||
"classes": ["ve.ui.*ContextItem"]
|
||||
},
|
||||
{
|
||||
"name": "Data transfer handlers",
|
||||
"classes": ["ve.ui.*TransferHandler", "ve.ui.DataTransferItem"]
|
||||
},
|
||||
{
|
||||
"name": "Elements",
|
||||
"classes": ["ve.ui.*Element"]
|
||||
},
|
||||
{
|
||||
"name": "Factories",
|
||||
"classes": ["ve.ui.*Factory"]
|
||||
},
|
||||
{
|
||||
"name": "Layouts",
|
||||
"classes": ["ve.ui.*Layout"]
|
||||
},
|
||||
{
|
||||
"name": "Pages",
|
||||
"classes": ["ve.ui.*Page"]
|
||||
},
|
||||
{
|
||||
"name": "Registries",
|
||||
"classes": ["ve.ui.*Registry"]
|
||||
},
|
||||
{
|
||||
"name": "Sequences",
|
||||
"classes": ["ve.ui.*Sequence"]
|
||||
},
|
||||
{
|
||||
"name": "Tools",
|
||||
"classes": ["ve.ui.*Tool"]
|
||||
},
|
||||
{
|
||||
"name": "Widgets",
|
||||
"classes": ["ve.ui.*Widget"]
|
||||
},
|
||||
{
|
||||
"name": "Windows",
|
||||
"classes": [
|
||||
"ve.ui.*WindowManager",
|
||||
"ve.ui.*Window",
|
||||
"ve.ui.*Dialog",
|
||||
"ve.ui.*Inspector"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Diffing",
|
||||
"groups": [
|
||||
{
|
||||
"name": "Diffing",
|
||||
"classes": [
|
||||
"ve.dm.VisualDiff",
|
||||
"ve.DiffMatchPatch",
|
||||
"ve.DiffTreeNode",
|
||||
"ve.ui.DiffDialog",
|
||||
"ve.ui.DiffElement"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Upstream",
|
||||
"groups": [
|
||||
{
|
||||
"name": "OOjs",
|
||||
"classes": [
|
||||
"OO",
|
||||
"OO.EmitterList",
|
||||
"OO.EventEmitter",
|
||||
"OO.Factory",
|
||||
"OO.Registry",
|
||||
"OO.SortedEmitterList"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "UnicodeJS",
|
||||
"classes": [
|
||||
"unicodeJS",
|
||||
"unicodeJS.TextString",
|
||||
"unicodeJS.wordbreak",
|
||||
"unicodeJS.graphemebreak",
|
||||
"unicodeJS.characterclass"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "OOjs UI General",
|
||||
"classes": [
|
||||
"OO.ui",
|
||||
"OO.ui.Element",
|
||||
"OO.ui.HtmlSnippet",
|
||||
"OO.ui.Toolbar",
|
||||
"OO.ui.Window*",
|
||||
"OO.ui.Dialog",
|
||||
"OO.ui.Process",
|
||||
"OO.ui.Error",
|
||||
"OO.ui.ActionSet"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "OOjs UI Mixins",
|
||||
"classes": ["OO.ui.mixin", "OO.ui.mixin.*"]
|
||||
},
|
||||
{
|
||||
"name": "OOjs UI Factories",
|
||||
"classes": ["OO.ui.*Factory"]
|
||||
},
|
||||
{
|
||||
"name": "OOjs UI Layouts",
|
||||
"classes": ["OO.ui.*Layout"]
|
||||
},
|
||||
{
|
||||
"name": "OOjs UI Tool groups",
|
||||
"classes": ["OO.ui.*ToolGroup"]
|
||||
},
|
||||
{
|
||||
"name": "OOjs UI Tools",
|
||||
"classes": ["OO.ui.*Tool"]
|
||||
},
|
||||
{
|
||||
"name": "OOjs UI Widgets",
|
||||
"classes": ["OO.ui.*Widget"]
|
||||
},
|
||||
{
|
||||
"name": "OOjs UI Dialogs",
|
||||
"classes": ["OO.ui.*Dialog"]
|
||||
},
|
||||
{
|
||||
"name": "OOjs UI Themes",
|
||||
"classes": ["OO.ui.*Theme"]
|
||||
},
|
||||
{
|
||||
"name": "jQuery",
|
||||
"classes": ["jQuery", "jQuery.Event", "jQuery.Promise", "jQuery.Deferred", "jQuery.jqXHR", "QUnit"]
|
||||
},
|
||||
{
|
||||
"name": "treeDiffer",
|
||||
"classes": ["treeDiffer.Differ", "treeDiffer.Tree", "treeDiffer.TreeNode"]
|
||||
},
|
||||
{
|
||||
"name": "DiffMatchPatch",
|
||||
"classes": ["diff_match_patch"]
|
||||
},
|
||||
{
|
||||
"name": "JavaScript",
|
||||
"classes": [
|
||||
"Array",
|
||||
"Boolean",
|
||||
"Date",
|
||||
"Function",
|
||||
"Map",
|
||||
"MutationRecord",
|
||||
"Number",
|
||||
"Object",
|
||||
"RegExp",
|
||||
"Set",
|
||||
"String"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
|
@ -1,98 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>VisualEditor Example</title>
|
||||
|
||||
<!-- oojs-ui-apex -->
|
||||
<link rel="stylesheet" href="../lib/oojs-ui/oojs-ui-apex.css" class="stylesheet-read">
|
||||
<link rel="stylesheet" href="../lib/oojs-ui/oojs-ui-apex-icons-alerts.css" class="stylesheet-read">
|
||||
<link rel="stylesheet" href="../lib/oojs-ui/oojs-ui-apex-icons-content.css" class="stylesheet-read">
|
||||
<link rel="stylesheet" href="../lib/oojs-ui/oojs-ui-apex-icons-interactions.css" class="stylesheet-read">
|
||||
<link rel="stylesheet" href="../lib/oojs-ui/oojs-ui-apex-icons-layout.css" class="stylesheet-read">
|
||||
<link rel="stylesheet" href="../lib/oojs-ui/oojs-ui-apex-icons-moderation.css" class="stylesheet-read">
|
||||
<link rel="stylesheet" href="../lib/oojs-ui/oojs-ui-apex-icons-movement.css" class="stylesheet-read">
|
||||
<link rel="stylesheet" href="../lib/oojs-ui/oojs-ui-apex-icons-user.css" class="stylesheet-read">
|
||||
<link rel="stylesheet" href="../lib/oojs-ui/oojs-ui-apex-icons-editing-core.css" class="stylesheet-read">
|
||||
<link rel="stylesheet" href="../lib/oojs-ui/oojs-ui-apex-icons-editing-advanced.css" class="stylesheet-read">
|
||||
<link rel="stylesheet" href="../lib/oojs-ui/oojs-ui-apex-icons-editing-styling.css" class="stylesheet-read">
|
||||
<link rel="stylesheet" href="../lib/oojs-ui/oojs-ui-apex-icons-editing-list.css" class="stylesheet-read">
|
||||
|
||||
<!-- visualEditor.dist.apex -->
|
||||
<link rel="stylesheet" href="../dist/visualEditor-apex.css" class="stylesheet-ve">
|
||||
|
||||
<!-- visualEditor.standalone.read -->
|
||||
<link rel="stylesheet/less" href="../src/init/sa/styles/ve.init.sa.less" class="stylesheet-read">
|
||||
|
||||
<!-- example styles -->
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow-y: scroll;
|
||||
background: #fff;
|
||||
font: normal 1em/1.5 sans-serif;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- less -->
|
||||
<script src="../lib/less/less.js"></script>
|
||||
|
||||
<!-- jquery -->
|
||||
<script src="../lib/jquery/jquery.js"></script>
|
||||
|
||||
<!-- oojs -->
|
||||
<script src="../lib/oojs/oojs.js"></script>
|
||||
|
||||
<!-- oojs-ui -->
|
||||
<script src="../lib/oojs-ui/oojs-ui-core.js"></script>
|
||||
<script src="../lib/oojs-ui/oojs-ui-widgets.js"></script>
|
||||
<script src="../lib/oojs-ui/oojs-ui-toolbars.js"></script>
|
||||
<script src="../lib/oojs-ui/oojs-ui-windows.js"></script>
|
||||
|
||||
<!-- jquery.i18n.dist -->
|
||||
<script src="../dist/lib/jquery.i18n.js"></script>
|
||||
|
||||
<!-- jquery.uls.data.dist -->
|
||||
<script src="../dist/lib/jquery.uls.data.js"></script>
|
||||
|
||||
<!-- jquery.client -->
|
||||
<script src="../lib/jquery.client/jquery.client.js"></script>
|
||||
|
||||
<!-- papaparse -->
|
||||
<script src="../lib/papaparse/papaparse.js"></script>
|
||||
|
||||
<!-- oojs-ui-apex -->
|
||||
<script src="../lib/oojs-ui/oojs-ui-apex.js"></script>
|
||||
|
||||
<!-- visualEditor.dist -->
|
||||
<script src="../dist/visualEditor.js"></script>
|
||||
|
||||
<script>
|
||||
ve.messagePaths = [
|
||||
'../i18n/',
|
||||
'../lib/oojs-ui/i18n/'
|
||||
];
|
||||
ve.availableLanguages = [ 'ace', 'acm', 'af', 'am', 'ang', 'ar', 'arc', 'arn', 'arq', 'as', 'ast', 'av', 'awa', 'az', 'azb', 'ba', 'ban', 'bcc', 'bci', 'bcl', 'be', 'be-tarask', 'bew', 'bg', 'bho', 'bjn', 'blk', 'bn', 'bqi', 'br', 'bs', 'ca', 'cdo', 'ce', 'cjy-hant', 'ckb', 'co', 'crh-cyrl', 'crh-latn', 'cs', 'cu', 'cv', 'cy', 'da', 'dag', 'de', 'dga', 'diq', 'dsb', 'dty', 'egl', 'el', 'eml', 'en', 'en-ca', 'eo', 'es', 'et', 'eu', 'fa', 'fat', 'fi', 'fo', 'fr', 'frp', 'frr', 'fur', 'fy', 'ga', 'gcf', 'gd', 'gl', 'glk', 'gn', 'gom-deva', 'gom-latn', 'gor', 'gsw', 'gu', 'gur', 'guw', 'gv', 'ha', 'he', 'hi', 'hif-latn', 'hr', 'hrx', 'hsb', 'ht', 'hu', 'hu-formal', 'hy', 'hyw', 'ia', 'id', 'ie', 'ig', 'ilo', 'inh', 'io', 'is', 'it', 'ja', 'jv', 'ka', 'kaa', 'kab', 'kcg', 'khw', 'kk-cyrl', 'km', 'kn', 'ko', 'ko-kp', 'krc', 'krl', 'ks-arab', 'ksh', 'ku-latn', 'kus', 'kw', 'ky', 'la', 'lb', 'lez', 'lfn', 'li', 'lij', 'lki', 'lmo', 'lrc', 'lt', 'luz', 'lv', 'lzh', 'lzz', 'mag', 'mai', 'mg', 'min', 'mk', 'ml', 'mn', 'mni', 'mos', 'mr', 'mrh', 'ms', 'mt', 'my', 'myv', 'nan', 'nap', 'nb', 'nds', 'nds-nl', 'ne', 'nl', 'nn', 'nqo', 'oc', 'olo', 'om', 'or', 'os', 'pa', 'pam', 'pfl', 'pl', 'pms', 'pnb', 'ps', 'pt', 'pt-br', 'qqq', 'qu', 'rm', 'ro', 'roa-tara', 'rsk', 'ru', 'rue', 'rw', 'sa', 'sah', 'sc', 'scn', 'sco', 'sd', 'se', 'sgs', 'sh-latn', 'shn', 'si', 'sk', 'skr-arab', 'sl', 'smn', 'sn', 'sq', 'sr-ec', 'sr-el', 'st', 'su', 'sv', 'sw', 'szy', 'ta', 'tay', 'tdd', 'te', 'tg-cyrl', 'th', 'ti', 'tk', 'tl', 'tly', 'tr', 'tt-cyrl', 'tum', 'tw', 'tyv', 'tzm', 'ug-arab', 'uk', 'ur', 'uz', 'vec', 'vep', 'vi', 'vo', 'wal', 'war', 'xal', 'xmf', 'yi', 'yo', 'yue-hant', 'zh-hans', 'zh-hant' ];
|
||||
</script>
|
||||
|
||||
<!-- example scripts -->
|
||||
<script>
|
||||
// Ensure ve.init.platform exists for use in examples
|
||||
var platform = new ve.init.sa.Platform( ve.messagePaths ).initialize();
|
||||
|
||||
function loadInlineExample( code, options, callback ) {
|
||||
platform.done( function () {
|
||||
try {
|
||||
eval( code );
|
||||
callback && callback( true );
|
||||
} catch (e) {
|
||||
document.body.appendChild( document.createTextNode( e ) );
|
||||
callback && callback( false, e );
|
||||
}
|
||||
} );
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,41 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>VisualEditor Example</title>
|
||||
|
||||
<!-- STYLES -->
|
||||
|
||||
<!-- example styles -->
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow-y: scroll;
|
||||
background: #fff;
|
||||
font: normal 1em/1.5 sans-serif;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- SCRIPTS -->
|
||||
|
||||
<!-- example scripts -->
|
||||
<script>
|
||||
// Ensure ve.init.platform exists for use in examples
|
||||
var platform = new ve.init.sa.Platform( ve.messagePaths ).initialize();
|
||||
|
||||
function loadInlineExample( code, options, callback ) {
|
||||
platform.done( function () {
|
||||
try {
|
||||
eval( code );
|
||||
callback && callback( true );
|
||||
} catch (e) {
|
||||
document.body.appendChild( document.createTextNode( e ) );
|
||||
callback && callback( false, e );
|
||||
}
|
||||
} );
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,569 +0,0 @@
|
|||
/**
|
||||
* @class OO.ui
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ActionFieldLayout
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ActionFieldLayout.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ActionSet
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ActionSet.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ActionWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ActionWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ApexTheme
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ApexTheme.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.BarToolGroup
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.BarToolGroup.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.BlankTheme
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.BlankTheme.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.BookletLayout
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.BookletLayout.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ButtonGroupWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ButtonGroupWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ButtonInputWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ButtonInputWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ButtonMenuSelectWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ButtonMenuSelectWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ButtonOptionWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ButtonOptionWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ButtonSelectWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ButtonSelectWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ButtonWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ButtonWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.CheckboxInputWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.CheckboxInputWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.CheckboxMultioptionWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.CheckboxMultioptionWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.CheckboxMultiselectInputWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.CheckboxMultiselectInputWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.CheckboxMultiselectWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.CheckboxMultiselectWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ComboBoxInputWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ComboBoxInputWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.CopyTextLayout
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.CopyTextLayout.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.DecoratedOptionWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.DecoratedOptionWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.Dialog
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Dialog.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.DropdownInputWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.DropdownInputWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.DropdownWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.DropdownWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.Element
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Element.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.Error
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Error.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.FieldLayout
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.FieldLayout.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.FieldsetLayout
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.FieldsetLayout.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.FormLayout
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.FormLayout.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.HiddenInputWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.HiddenInputWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.HorizontalLayout
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.HorizontalLayout.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.HtmlSnippet
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.HtmlSnippet.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.IconWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.IconWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.IndexLayout
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.IndexLayout.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.IndicatorWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.IndicatorWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.InputWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.InputWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.LabelWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.LabelWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.Layout
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Layout.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ListToolGroup
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ListToolGroup.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.MenuLayout
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.MenuLayout.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.MenuOptionWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.MenuOptionWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.MenuSectionOptionWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.MenuSectionOptionWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.MenuSelectWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.MenuSelectWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.MenuTagMultiselectWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.MenuTagMultiselectWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.MenuToolGroup
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.MenuToolGroup.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.MessageDialog
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.MessageDialog.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.MessageWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.MessageWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.AccessKeyedElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.AccessKeyedElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.ButtonElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.ButtonElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.ClippableElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.ClippableElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.DraggableElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.DraggableElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.DraggableGroupElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.DraggableGroupElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.FlaggedElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.FlaggedElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.FloatableElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.FloatableElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.GroupElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.GroupElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.IconElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.IconElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.IndicatorElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.IndicatorElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.LabelElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.LabelElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.LookupElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.LookupElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.PendingElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.PendingElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.PopupElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.PopupElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.RequestManager
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.RequestManager.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.RequiredElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.RequiredElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.TabIndexedElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.TabIndexedElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.mixin.TitledElement
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.mixin.TitledElement.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.MultilineTextInputWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.MultilineTextInputWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.MultioptionWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.MultioptionWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.MultiselectWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.MultiselectWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.NumberInputWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.NumberInputWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.OptionWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.OptionWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.OutlineControlsWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.OutlineControlsWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.OutlineOptionWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.OutlineOptionWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.OutlineSelectWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.OutlineSelectWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.PageLayout
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.PageLayout.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.PanelLayout
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.PanelLayout.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.PopupButtonWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.PopupButtonWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.PopupTagMultiselectWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.PopupTagMultiselectWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.PopupTool
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.PopupTool.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.PopupToolGroup
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.PopupToolGroup.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.PopupWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.PopupWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.Process
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Process.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ProcessDialog
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ProcessDialog.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ProgressBarWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ProgressBarWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.RadioInputWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.RadioInputWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.RadioOptionWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.RadioOptionWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.RadioSelectInputWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.RadioSelectInputWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.RadioSelectWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.RadioSelectWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.SearchInputWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.SearchInputWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.SearchWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.SearchWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.SelectFileInputWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.SelectFileInputWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.SelectWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.SelectWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.StackLayout
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.StackLayout.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.TabOptionWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.TabOptionWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.TabPanelLayout
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.TabPanelLayout.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.TabSelectWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.TabSelectWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.TagItemWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.TagItemWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.TagMultiselectWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.TagMultiselectWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.TextInputWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.TextInputWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.Theme
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Theme.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ToggleButtonWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ToggleButtonWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ToggleSwitchWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ToggleSwitchWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ToggleWidget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ToggleWidget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.Tool
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Tool.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.Toolbar
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Toolbar.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ToolFactory
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ToolFactory.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ToolGroup
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ToolGroup.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ToolGroupFactory
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ToolGroupFactory.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.ToolGroupTool
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.ToolGroupTool.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.Widget
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Widget.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.WikimediaUITheme
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.WikimediaUITheme.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.Window
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.Window.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.WindowInstance
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.WindowInstance.html>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class OO.ui.WindowManager
|
||||
* @source <https://doc.wikimedia.org/oojs-ui/master/js/OO.ui.WindowManager.html>
|
||||
*/
|
|
@ -1,84 +0,0 @@
|
|||
/**
|
||||
* @class jQuery
|
||||
* @source <http://api.jquery.com/>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @method ajax
|
||||
* @source <http://api.jquery.com/jQuery.ajax/>
|
||||
* @return {jqXHR}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class jQuery.Event
|
||||
* @source <http://api.jquery.com/Types/#Event>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class jQuery.Promise
|
||||
* @source <http://api.jquery.com/Types/#Promise>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class jQuery.Deferred
|
||||
* @mixins jQuery.Promise
|
||||
* @source <http://api.jquery.com/jQuery.Deferred/>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class jQuery.jqXHR
|
||||
* @source <http://api.jquery.com/Types/#jqXHR>
|
||||
* @alternateClassName jqXHR
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class QUnit
|
||||
* @source <http://api.qunitjs.com/>
|
||||
*/
|
||||
|
||||
/**
|
||||
* Source: <https://doc.wikimedia.org/oojs/master/OO.html>
|
||||
* @class OO
|
||||
*/
|
||||
|
||||
/**
|
||||
* Source: <https://doc.wikimedia.org/oojs/master/OO.EventEmitter.html>
|
||||
* @class OO.EventEmitter
|
||||
*/
|
||||
|
||||
/**
|
||||
* Source: <https://doc.wikimedia.org/oojs/master/OO.EmitterList.html>
|
||||
* @class OO.EmitterList
|
||||
*/
|
||||
|
||||
/**
|
||||
* Source: <https://doc.wikimedia.org/oojs/master/OO.Factory.html>
|
||||
* @class OO.Factory
|
||||
*/
|
||||
|
||||
/**
|
||||
* Source: <https://doc.wikimedia.org/oojs/master/OO.Registry.html>
|
||||
* @class OO.Registry
|
||||
*/
|
||||
|
||||
/**
|
||||
* Source: <https://doc.wikimedia.org/oojs/master/OO.SortedEmitterList.html>
|
||||
* @class OO.SortedEmitterList
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class diff_match_patch
|
||||
* @source <http://github.com/edg2s/google-diff-match-patch>
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class Map
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class Set
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class MutationRecord
|
||||
*/
|
|
@ -44,43 +44,8 @@ To run the tests in a web browser, open `tests/index.html`.
|
|||
|
||||
## Building documentation
|
||||
|
||||
VisualEditor uses [JSDuck](https://github.com/senchalabs/jsduck) to process
|
||||
documentation comments embedded in the code. To build the documentation, you
|
||||
will need `ruby`, `gem`, and `jsduck` installed.
|
||||
|
||||
### Installing ruby and gem
|
||||
|
||||
You're mostly on your own here, but we can give some hints for Mac OS X.
|
||||
|
||||
##### Installing Gem in Mac OS X
|
||||
Ruby ships with OSX but may be outdated. Use [Homebrew](http://mxcl.github.com/homebrew/):
|
||||
```sh
|
||||
$ brew install ruby
|
||||
```
|
||||
|
||||
If you've never used `gem` before, don't forget to add the gem's bin to your
|
||||
`PATH` ([howto](http://stackoverflow.com/a/14138490/319266)).
|
||||
|
||||
### Installing jsduck
|
||||
|
||||
Once you have gem, installing [JSDuck](https://github.com/senchalabs/jsduck) is easy:
|
||||
```sh
|
||||
$ gem install --user-install jsduck
|
||||
```
|
||||
|
||||
### Running jsduck
|
||||
|
||||
Creating the documentation is easy:
|
||||
```sh
|
||||
$ cd VisualEditor
|
||||
$ npm run doc
|
||||
```
|
||||
|
||||
The generated documentation is in the `docs/` subdirectory. View the
|
||||
documentation in a web browser by opening `docs/index.html`.
|
||||
|
||||
Note that `jsduck` doesn't support live previews when browsing using the
|
||||
`file:` protocol; this only works when using HTTP/HTTPS.
|
||||
VisualEditor uses [jsdoc](https://jsdoc.app/) to process documentation comments
|
||||
embedded in the code. To build the documentation, you will need to run `npm run doc`.
|
||||
|
||||
## VisualEditor Code Guidelines
|
||||
|
||||
|
@ -93,7 +58,7 @@ Git commit messages should follow the conventions described in
|
|||
|
||||
### Documentation comments
|
||||
|
||||
In addition to the [MediaWiki conventions for JSDuck](https://www.mediawiki.org/wiki/Manual:Coding_conventions/JavaScript#Documentation):
|
||||
In addition to the [MediaWiki conventions for JavaScript documentation](https://www.mediawiki.org/wiki/Manual:Coding_conventions/JavaScript#Documentation):
|
||||
|
||||
We have the following custom tags:
|
||||
|
||||
|
@ -114,11 +79,8 @@ indicating their order between the standard tags.
|
|||
* @fires name
|
||||
* @return
|
||||
|
||||
## Add a new javascript class
|
||||
### Adding a new JavaScript class
|
||||
|
||||
When a new javascript class is added, the file must be referenced in a number of places
|
||||
before it can be used:
|
||||
|
||||
* .jsduck/categories.json in General->Utilities (or somewhere more specific)
|
||||
* build/modules.json in visualEditor.core.build (or somewhere more specific)
|
||||
* Run `grunt build`
|
||||
When a new JavaScript class is added, the file must be referenced in the build manifest
|
||||
before it can be used. Add the file to build/modules.json in visualEditor.core.build (or
|
||||
somewhere more specific), and then run `grunt build`.
|
||||
|
|
13
Gruntfile.js
13
Gruntfile.js
|
@ -176,19 +176,6 @@ module.exports = function ( grunt ) {
|
|||
}
|
||||
},
|
||||
buildloader: {
|
||||
iframe: {
|
||||
targetFile: '.jsduck/eg-iframe.html',
|
||||
template: '.jsduck/eg-iframe.html.template',
|
||||
modules: modules,
|
||||
load: [
|
||||
'visualEditor.standalone.apex.dist',
|
||||
'visualEditor.standalone.read'
|
||||
],
|
||||
pathPrefix: '../',
|
||||
i18n: [ 'i18n/', 'lib/oojs-ui/i18n/' ],
|
||||
indent: '\t\t',
|
||||
dir: 'ltr'
|
||||
},
|
||||
desktopDemoApex: {
|
||||
targetFile: 'demos/ve/desktop.html',
|
||||
template: 'demos/ve/demo.html.template',
|
||||
|
|
22
jsduck.json
22
jsduck.json
|
@ -1,22 +0,0 @@
|
|||
{
|
||||
"--title": "VisualEditor - Documentation",
|
||||
"--output": "docs",
|
||||
"--categories": ".jsduck/categories.json",
|
||||
"--eg-iframe": ".jsduck/eg-iframe.html",
|
||||
"--tags": ".jsduck/CustomTags.rb",
|
||||
"--warnings": [ "-nodoc(class,public)", "-global", "-inheritdoc" ],
|
||||
"--builtin-classes": true,
|
||||
"--processes": "0",
|
||||
"--warnings-exit-nonzero": true,
|
||||
"--external": "HTMLDocument,HTMLBodyElement,HTMLHtmlElement,Window,Node,Text,Map,Set,Range,Selection,ClientRect,File,FileList,Blob,DataTransfer,DataTransferItem,KeyboardEvent,MouseEvent,Promise,Storage",
|
||||
"--exclude": [
|
||||
"rebaser/src/dm/"
|
||||
],
|
||||
"--": [
|
||||
".jsduck/external.js",
|
||||
".jsduck/external-ooui.js",
|
||||
"lib/unicodejs/unicodejs.js",
|
||||
"lib/treeDiffer/treeDiffer-dist.js",
|
||||
"src"
|
||||
]
|
||||
}
|
|
@ -26,6 +26,9 @@
|
|||
"grunt-karma": "4.0.2",
|
||||
"grunt-stylelint": "0.19.0",
|
||||
"grunt-tyops": "0.1.1",
|
||||
"jsdoc": "4.0.2",
|
||||
"jsdoc-class-hierarchy": "1.1.2",
|
||||
"jsdoc-wmf-theme": "1.0.0",
|
||||
"karma": "6.4.2",
|
||||
"karma-chrome-launcher": "3.2.0",
|
||||
"karma-coverage": "2.2.0",
|
||||
|
@ -796,6 +799,18 @@
|
|||
"integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@jsdoc/salty": {
|
||||
"version": "0.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.8.tgz",
|
||||
"integrity": "sha512-5e+SFVavj1ORKlKaKr2BmTOekmXbelU7dC0cDkQLqag7xfuTPuGMUFx7KWJuv4bYZrTsoL2Z18VVCOKYxzoHcg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"lodash": "^4.17.21"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@mdn/browser-compat-data": {
|
||||
"version": "5.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.4.1.tgz",
|
||||
|
@ -873,6 +888,28 @@
|
|||
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/linkify-it": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz",
|
||||
"integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/markdown-it": {
|
||||
"version": "12.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz",
|
||||
"integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/linkify-it": "*",
|
||||
"@types/mdurl": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/mdurl": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz",
|
||||
"integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/minimatch": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
|
||||
|
@ -1031,6 +1068,16 @@
|
|||
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@wikimedia/codex-design-tokens": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@wikimedia/codex-design-tokens/-/codex-design-tokens-1.1.1.tgz",
|
||||
"integrity": "sha512-qFX7LcR/l90yqVTBApvrIDY3Xa0WifoMlBJRGD1DoWff8e/yMhLmxF1o2DRcIfQlOvKDg0Vhy8jAttF6MUfMAA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=16",
|
||||
"npm": ">=7.21.0"
|
||||
}
|
||||
},
|
||||
"node_modules/abbrev": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||
|
@ -1283,6 +1330,12 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/bluebird": {
|
||||
"version": "3.7.2",
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
|
||||
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/body": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz",
|
||||
|
@ -1514,9 +1567,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001611",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001611.tgz",
|
||||
"integrity": "sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q==",
|
||||
"version": "1.0.30001612",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz",
|
||||
"integrity": "sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
|
@ -1539,6 +1592,18 @@
|
|||
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/catharsis": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz",
|
||||
"integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"lodash": "^4.17.15"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10"
|
||||
}
|
||||
},
|
||||
"node_modules/chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
|
@ -2255,6 +2320,12 @@
|
|||
"url": "https://github.com/fb55/domhandler?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/domino": {
|
||||
"version": "2.1.6",
|
||||
"resolved": "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz",
|
||||
"integrity": "sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/domutils": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
|
||||
|
@ -2295,9 +2366,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.4.741",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.741.tgz",
|
||||
"integrity": "sha512-AyTBZqDoS7/mvQK22gOQpjxbeV8iPeUBTvYlEh/1S9dKAHgQdxuF49g9rLbj0cRKtqH8PzLJzqT3nAdl+qoZTA==",
|
||||
"version": "1.4.748",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.748.tgz",
|
||||
"integrity": "sha512-VWqjOlPZn70UZ8FTKUOkUvBLeTQ0xpty66qV0yJcAGY2/CthI4xyW9aEozRVtuwv3Kpf5xTesmJUcPwuJmgP4A==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/emoji-regex": {
|
||||
|
@ -2657,9 +2728,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-mocha": {
|
||||
"version": "10.4.2",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.4.2.tgz",
|
||||
"integrity": "sha512-cur4dVYnSEWTBwdqIBQFxa/9siAhesu0TX+lbJ4ClE9j0eNMNe6BSx3vkFFNz6tGoveyMyELFXa30f3fvuAVDg==",
|
||||
"version": "10.4.3",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.4.3.tgz",
|
||||
"integrity": "sha512-emc4TVjq5Ht0/upR+psftuz6IBG5q279p+1dSRDeHf+NS9aaerBi3lXKo1SEzwC29hFIW21gO89CEWSvRsi8IQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"eslint-utils": "^3.0.0",
|
||||
|
@ -3315,20 +3386,6 @@
|
|||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/fsevents": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
|
||||
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/function-bind": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
||||
|
@ -4696,12 +4753,56 @@
|
|||
"js-yaml": "bin/js-yaml.js"
|
||||
}
|
||||
},
|
||||
"node_modules/js2xmlparser": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz",
|
||||
"integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"xmlcreate": "^2.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/jsbn": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
|
||||
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/jsdoc": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.2.tgz",
|
||||
"integrity": "sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.20.15",
|
||||
"@jsdoc/salty": "^0.2.1",
|
||||
"@types/markdown-it": "^12.2.3",
|
||||
"bluebird": "^3.7.2",
|
||||
"catharsis": "^0.9.0",
|
||||
"escape-string-regexp": "^2.0.0",
|
||||
"js2xmlparser": "^4.0.2",
|
||||
"klaw": "^3.0.0",
|
||||
"markdown-it": "^12.3.2",
|
||||
"markdown-it-anchor": "^8.4.1",
|
||||
"marked": "^4.0.10",
|
||||
"mkdirp": "^1.0.4",
|
||||
"requizzle": "^0.2.3",
|
||||
"strip-json-comments": "^3.1.0",
|
||||
"underscore": "~1.13.2"
|
||||
},
|
||||
"bin": {
|
||||
"jsdoc": "jsdoc.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jsdoc-class-hierarchy": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/jsdoc-class-hierarchy/-/jsdoc-class-hierarchy-1.1.2.tgz",
|
||||
"integrity": "sha512-oU7UgWr0Qbtxd2J81/ee1lM8xAdyUU7B1ZosVwZxJwjhPWvtkX9ooHjD1Fk97OyOlpTBXxYVTpptvSCKRt8wvQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/jsdoc-type-pratt-parser": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz",
|
||||
|
@ -4711,6 +4812,53 @@
|
|||
"node": ">=12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jsdoc-wmf-theme": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsdoc-wmf-theme/-/jsdoc-wmf-theme-1.0.0.tgz",
|
||||
"integrity": "sha512-DAR0Rna+X5/Hzlmt297Y05BLPGdUfBUBXfdMwiSJjh8cpLZxt9lHjw2SYnzOpPAPuJYWW3t6MkoJMG0i9cv+uQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jsdoc/salty": "^0.2.7",
|
||||
"@wikimedia/codex-design-tokens": "1.1.1",
|
||||
"domino": "^2.1.6",
|
||||
"lunr": "2.3.9",
|
||||
"marked": "^12.0.1",
|
||||
"normalize.css": "8.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/jsdoc-wmf-theme/node_modules/marked": {
|
||||
"version": "12.0.2",
|
||||
"resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz",
|
||||
"integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"marked": "bin/marked.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 18"
|
||||
}
|
||||
},
|
||||
"node_modules/jsdoc/node_modules/escape-string-regexp": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
|
||||
"integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/jsdoc/node_modules/mkdirp": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
|
||||
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"mkdirp": "bin/cmd.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/jsesc": {
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
|
||||
|
@ -5024,6 +5172,15 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/klaw": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz",
|
||||
"integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"graceful-fs": "^4.1.9"
|
||||
}
|
||||
},
|
||||
"node_modules/known-css-properties": {
|
||||
"version": "0.28.0",
|
||||
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz",
|
||||
|
@ -5195,6 +5352,15 @@
|
|||
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/linkify-it": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
|
||||
"integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"uc.micro": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/livereload-js": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz",
|
||||
|
@ -5351,6 +5517,12 @@
|
|||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/lunr": {
|
||||
"version": "2.3.9",
|
||||
"resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz",
|
||||
"integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/make-dir": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
|
||||
|
@ -5408,6 +5580,53 @@
|
|||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/markdown-it": {
|
||||
"version": "12.3.2",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
|
||||
"integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"argparse": "^2.0.1",
|
||||
"entities": "~2.1.0",
|
||||
"linkify-it": "^3.0.1",
|
||||
"mdurl": "^1.0.1",
|
||||
"uc.micro": "^1.0.5"
|
||||
},
|
||||
"bin": {
|
||||
"markdown-it": "bin/markdown-it.js"
|
||||
}
|
||||
},
|
||||
"node_modules/markdown-it-anchor": {
|
||||
"version": "8.6.7",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz",
|
||||
"integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==",
|
||||
"dev": true,
|
||||
"peerDependencies": {
|
||||
"@types/markdown-it": "*",
|
||||
"markdown-it": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/markdown-it/node_modules/entities": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
|
||||
"integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
|
||||
"dev": true,
|
||||
"funding": {
|
||||
"url": "https://github.com/fb55/entities?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/marked": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz",
|
||||
"integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"marked": "bin/marked.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 12"
|
||||
}
|
||||
},
|
||||
"node_modules/mathml-tag-names": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
|
||||
|
@ -5424,6 +5643,12 @@
|
|||
"integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/mdurl": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
|
||||
"integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/media-typer": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||
|
@ -5828,6 +6053,12 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/normalize.css": {
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz",
|
||||
"integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/nth-check": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
|
||||
|
@ -6722,6 +6953,15 @@
|
|||
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/requizzle": {
|
||||
"version": "0.2.4",
|
||||
"resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz",
|
||||
"integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"lodash": "^4.17.21"
|
||||
}
|
||||
},
|
||||
"node_modules/resolve": {
|
||||
"version": "1.22.8",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
|
||||
|
@ -7869,6 +8109,12 @@
|
|||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/uc.micro": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
|
||||
"integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/unc-path-regex": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
|
||||
|
@ -7878,6 +8124,12 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/underscore": {
|
||||
"version": "1.13.6",
|
||||
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
|
||||
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/underscore.string": {
|
||||
"version": "3.3.6",
|
||||
"resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz",
|
||||
|
@ -8171,6 +8423,12 @@
|
|||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/xmlcreate": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz",
|
||||
"integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/xtend": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||
|
@ -8812,6 +9070,15 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"@jsdoc/salty": {
|
||||
"version": "0.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.8.tgz",
|
||||
"integrity": "sha512-5e+SFVavj1ORKlKaKr2BmTOekmXbelU7dC0cDkQLqag7xfuTPuGMUFx7KWJuv4bYZrTsoL2Z18VVCOKYxzoHcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash": "^4.17.21"
|
||||
}
|
||||
},
|
||||
"@mdn/browser-compat-data": {
|
||||
"version": "5.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.4.1.tgz",
|
||||
|
@ -8877,6 +9144,28 @@
|
|||
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/linkify-it": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz",
|
||||
"integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/markdown-it": {
|
||||
"version": "12.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz",
|
||||
"integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/linkify-it": "*",
|
||||
"@types/mdurl": "*"
|
||||
}
|
||||
},
|
||||
"@types/mdurl": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz",
|
||||
"integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/minimatch": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
|
||||
|
@ -8988,6 +9277,12 @@
|
|||
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@wikimedia/codex-design-tokens": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@wikimedia/codex-design-tokens/-/codex-design-tokens-1.1.1.tgz",
|
||||
"integrity": "sha512-qFX7LcR/l90yqVTBApvrIDY3Xa0WifoMlBJRGD1DoWff8e/yMhLmxF1o2DRcIfQlOvKDg0Vhy8jAttF6MUfMAA==",
|
||||
"dev": true
|
||||
},
|
||||
"abbrev": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||
|
@ -9180,6 +9475,12 @@
|
|||
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
|
||||
"dev": true
|
||||
},
|
||||
"bluebird": {
|
||||
"version": "3.7.2",
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
|
||||
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
|
||||
"dev": true
|
||||
},
|
||||
"body": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz",
|
||||
|
@ -9354,9 +9655,9 @@
|
|||
}
|
||||
},
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30001611",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001611.tgz",
|
||||
"integrity": "sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q==",
|
||||
"version": "1.0.30001612",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz",
|
||||
"integrity": "sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==",
|
||||
"dev": true
|
||||
},
|
||||
"caseless": {
|
||||
|
@ -9365,6 +9666,15 @@
|
|||
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
|
||||
"dev": true
|
||||
},
|
||||
"catharsis": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz",
|
||||
"integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash": "^4.17.15"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
|
@ -9904,6 +10214,12 @@
|
|||
"domelementtype": "^2.3.0"
|
||||
}
|
||||
},
|
||||
"domino": {
|
||||
"version": "2.1.6",
|
||||
"resolved": "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz",
|
||||
"integrity": "sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==",
|
||||
"dev": true
|
||||
},
|
||||
"domutils": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
|
||||
|
@ -9941,9 +10257,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.4.741",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.741.tgz",
|
||||
"integrity": "sha512-AyTBZqDoS7/mvQK22gOQpjxbeV8iPeUBTvYlEh/1S9dKAHgQdxuF49g9rLbj0cRKtqH8PzLJzqT3nAdl+qoZTA==",
|
||||
"version": "1.4.748",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.748.tgz",
|
||||
"integrity": "sha512-VWqjOlPZn70UZ8FTKUOkUvBLeTQ0xpty66qV0yJcAGY2/CthI4xyW9aEozRVtuwv3Kpf5xTesmJUcPwuJmgP4A==",
|
||||
"dev": true
|
||||
},
|
||||
"emoji-regex": {
|
||||
|
@ -10222,9 +10538,9 @@
|
|||
}
|
||||
},
|
||||
"eslint-plugin-mocha": {
|
||||
"version": "10.4.2",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.4.2.tgz",
|
||||
"integrity": "sha512-cur4dVYnSEWTBwdqIBQFxa/9siAhesu0TX+lbJ4ClE9j0eNMNe6BSx3vkFFNz6tGoveyMyELFXa30f3fvuAVDg==",
|
||||
"version": "10.4.3",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.4.3.tgz",
|
||||
"integrity": "sha512-emc4TVjq5Ht0/upR+psftuz6IBG5q279p+1dSRDeHf+NS9aaerBi3lXKo1SEzwC29hFIW21gO89CEWSvRsi8IQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"eslint-utils": "^3.0.0",
|
||||
|
@ -10706,13 +11022,6 @@
|
|||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
||||
"dev": true
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
|
||||
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"function-bind": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
||||
|
@ -11747,18 +12056,92 @@
|
|||
"argparse": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"js2xmlparser": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz",
|
||||
"integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"xmlcreate": "^2.0.4"
|
||||
}
|
||||
},
|
||||
"jsbn": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
|
||||
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
|
||||
"dev": true
|
||||
},
|
||||
"jsdoc": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.2.tgz",
|
||||
"integrity": "sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/parser": "^7.20.15",
|
||||
"@jsdoc/salty": "^0.2.1",
|
||||
"@types/markdown-it": "^12.2.3",
|
||||
"bluebird": "^3.7.2",
|
||||
"catharsis": "^0.9.0",
|
||||
"escape-string-regexp": "^2.0.0",
|
||||
"js2xmlparser": "^4.0.2",
|
||||
"klaw": "^3.0.0",
|
||||
"markdown-it": "^12.3.2",
|
||||
"markdown-it-anchor": "^8.4.1",
|
||||
"marked": "^4.0.10",
|
||||
"mkdirp": "^1.0.4",
|
||||
"requizzle": "^0.2.3",
|
||||
"strip-json-comments": "^3.1.0",
|
||||
"underscore": "~1.13.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"escape-string-regexp": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
|
||||
"integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
|
||||
"dev": true
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
|
||||
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"jsdoc-class-hierarchy": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/jsdoc-class-hierarchy/-/jsdoc-class-hierarchy-1.1.2.tgz",
|
||||
"integrity": "sha512-oU7UgWr0Qbtxd2J81/ee1lM8xAdyUU7B1ZosVwZxJwjhPWvtkX9ooHjD1Fk97OyOlpTBXxYVTpptvSCKRt8wvQ==",
|
||||
"dev": true
|
||||
},
|
||||
"jsdoc-type-pratt-parser": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz",
|
||||
"integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==",
|
||||
"dev": true
|
||||
},
|
||||
"jsdoc-wmf-theme": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsdoc-wmf-theme/-/jsdoc-wmf-theme-1.0.0.tgz",
|
||||
"integrity": "sha512-DAR0Rna+X5/Hzlmt297Y05BLPGdUfBUBXfdMwiSJjh8cpLZxt9lHjw2SYnzOpPAPuJYWW3t6MkoJMG0i9cv+uQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jsdoc/salty": "^0.2.7",
|
||||
"@wikimedia/codex-design-tokens": "1.1.1",
|
||||
"domino": "^2.1.6",
|
||||
"lunr": "2.3.9",
|
||||
"marked": "^12.0.1",
|
||||
"normalize.css": "8.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"marked": {
|
||||
"version": "12.0.2",
|
||||
"resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz",
|
||||
"integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"jsesc": {
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
|
||||
|
@ -12010,6 +12393,15 @@
|
|||
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
|
||||
"dev": true
|
||||
},
|
||||
"klaw": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz",
|
||||
"integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.9"
|
||||
}
|
||||
},
|
||||
"known-css-properties": {
|
||||
"version": "0.28.0",
|
||||
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz",
|
||||
|
@ -12155,6 +12547,15 @@
|
|||
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
|
||||
"dev": true
|
||||
},
|
||||
"linkify-it": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
|
||||
"integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"uc.micro": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"livereload-js": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz",
|
||||
|
@ -12283,6 +12684,12 @@
|
|||
"yallist": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"lunr": {
|
||||
"version": "2.3.9",
|
||||
"resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz",
|
||||
"integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==",
|
||||
"dev": true
|
||||
},
|
||||
"make-dir": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
|
||||
|
@ -12321,6 +12728,40 @@
|
|||
"integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
|
||||
"dev": true
|
||||
},
|
||||
"markdown-it": {
|
||||
"version": "12.3.2",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
|
||||
"integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"argparse": "^2.0.1",
|
||||
"entities": "~2.1.0",
|
||||
"linkify-it": "^3.0.1",
|
||||
"mdurl": "^1.0.1",
|
||||
"uc.micro": "^1.0.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"entities": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
|
||||
"integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"markdown-it-anchor": {
|
||||
"version": "8.6.7",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz",
|
||||
"integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==",
|
||||
"dev": true,
|
||||
"requires": {}
|
||||
},
|
||||
"marked": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz",
|
||||
"integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==",
|
||||
"dev": true
|
||||
},
|
||||
"mathml-tag-names": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
|
||||
|
@ -12333,6 +12774,12 @@
|
|||
"integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
|
||||
"dev": true
|
||||
},
|
||||
"mdurl": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
|
||||
"integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
|
||||
"dev": true
|
||||
},
|
||||
"media-typer": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||
|
@ -12630,6 +13077,12 @@
|
|||
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
|
||||
"dev": true
|
||||
},
|
||||
"normalize.css": {
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz",
|
||||
"integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==",
|
||||
"dev": true
|
||||
},
|
||||
"nth-check": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
|
||||
|
@ -13274,6 +13727,15 @@
|
|||
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
|
||||
"dev": true
|
||||
},
|
||||
"requizzle": {
|
||||
"version": "0.2.4",
|
||||
"resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz",
|
||||
"integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash": "^4.17.21"
|
||||
}
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.22.8",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
|
||||
|
@ -14155,12 +14617,24 @@
|
|||
"integrity": "sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ==",
|
||||
"dev": true
|
||||
},
|
||||
"uc.micro": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
|
||||
"integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
|
||||
"dev": true
|
||||
},
|
||||
"unc-path-regex": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
|
||||
"integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
|
||||
"dev": true
|
||||
},
|
||||
"underscore": {
|
||||
"version": "1.13.6",
|
||||
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
|
||||
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==",
|
||||
"dev": true
|
||||
},
|
||||
"underscore.string": {
|
||||
"version": "3.3.6",
|
||||
"resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz",
|
||||
|
@ -14357,6 +14831,12 @@
|
|||
"integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
|
||||
"dev": true
|
||||
},
|
||||
"xmlcreate": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz",
|
||||
"integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==",
|
||||
"dev": true
|
||||
},
|
||||
"xtend": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
"test": "grunt test",
|
||||
"prepare": "grunt build",
|
||||
"postinstall": "cd rebaser && npm ci",
|
||||
"doc": "jsduck"
|
||||
"doc": "jsdoc -c .jsdoc.json"
|
||||
},
|
||||
"homepage": "https://www.mediawiki.org/wiki/VisualEditor",
|
||||
"repository": {
|
||||
|
@ -39,6 +39,9 @@
|
|||
"grunt-karma": "4.0.2",
|
||||
"grunt-stylelint": "0.19.0",
|
||||
"grunt-tyops": "0.1.1",
|
||||
"jsdoc": "4.0.2",
|
||||
"jsdoc-class-hierarchy": "1.1.2",
|
||||
"jsdoc-wmf-theme": "1.0.0",
|
||||
"karma": "6.4.2",
|
||||
"karma-chrome-launcher": "3.2.0",
|
||||
"karma-coverage": "2.2.0",
|
||||
|
|
|
@ -7,6 +7,7 @@ const ve = require( '../dist/ve-rebaser.js' ),
|
|||
/**
|
||||
* Parse log file contents.
|
||||
*
|
||||
* @ignore
|
||||
* @param {string} log Newline-separated list of JSON objects
|
||||
* @return {Object[]} Array of parsed objects
|
||||
*/
|
||||
|
|
|
@ -54,15 +54,16 @@ ve.ce.NailedAnnotation.static.makeNail = function ( type ) {
|
|||
|
||||
/* Methods */
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.ce.Annotation
|
||||
* @see ve.ce.Annotation
|
||||
*/
|
||||
ve.ce.NailedAnnotation.prototype.getContentContainer = function () {
|
||||
return this.contentFragment;
|
||||
};
|
||||
|
||||
/**
|
||||
* @inheritdoc ve.ce.Annotation
|
||||
* @see ve.ce.Annotation
|
||||
*/
|
||||
ve.ce.NailedAnnotation.prototype.attachContents = function () {
|
||||
var element = this.$element[ 0 ];
|
||||
|
@ -72,8 +73,9 @@ ve.ce.NailedAnnotation.prototype.attachContents = function () {
|
|||
element.appendChild( this.constructor.static.makeNail( 'pre-close' ) );
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-param
|
||||
/**
|
||||
* @inheritdoc ve.ce.Annotation
|
||||
* @see ve.ce.Annotation
|
||||
*/
|
||||
ve.ce.NailedAnnotation.prototype.appendTo = function ( node ) {
|
||||
// Insert pre-open nail, element, and post-close nail into a parent node
|
||||
|
|
|
@ -33,9 +33,9 @@ ve.ce.LinearEscapeKeyDownHandler.static.supportedSelections = [ 'linear' ];
|
|||
/* Static methods */
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*
|
||||
* Handle escape key down events with a linear selection while table editing.
|
||||
*
|
||||
* @inheritdoc
|
||||
*/
|
||||
ve.ce.LinearEscapeKeyDownHandler.static.execute = function ( surface, e ) {
|
||||
var activeTableNode = surface.getActiveNode() && surface.getActiveNode().findParent( ve.ce.TableNode );
|
||||
|
|
|
@ -33,9 +33,9 @@ ve.ce.LinearTabKeyDownHandler.static.supportedSelections = [ 'linear' ];
|
|||
/* Static methods */
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*
|
||||
* Handle tab key down events with a linear selection while table editing.
|
||||
*
|
||||
* @inheritdoc
|
||||
*/
|
||||
ve.ce.LinearTabKeyDownHandler.static.execute = function ( surface, e ) {
|
||||
var activeTableNode = surface.getActiveNode() && surface.getActiveNode().findParent( ve.ce.TableNode ),
|
||||
|
|
|
@ -33,11 +33,11 @@ ve.ce.TableDeleteKeyDownHandler.static.supportedSelections = [ 'table' ];
|
|||
/* Static methods */
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*
|
||||
* Handle delete and backspace key down events with a table selection.
|
||||
*
|
||||
* Performs a strip-delete removing all the cell contents but not altering the structure.
|
||||
*
|
||||
* @inheritdoc
|
||||
*/
|
||||
ve.ce.TableDeleteKeyDownHandler.static.execute = function ( surface, e ) {
|
||||
var surfaceModel = surface.getModel(),
|
||||
|
|
|
@ -67,8 +67,9 @@ ve.ce.CommentNode.prototype.onAttributeChange = function ( key ) {
|
|||
|
||||
/* Method */
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.ce.FocusableNode
|
||||
* @see ve.ce.FocusableNode
|
||||
*/
|
||||
ve.ce.CommentNode.prototype.hasRendering = function () {
|
||||
// Comment nodes never have a rendering, don't bother with expensive DOM inspection
|
||||
|
|
|
@ -32,15 +32,7 @@ OO.initClass( ve.ce.GeneratedContentNode );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event setup
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event teardown
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event rerender
|
||||
* @event ve.ce.GeneratedContentNode#rerender
|
||||
*/
|
||||
|
||||
/* Static members */
|
||||
|
@ -184,8 +176,9 @@ ve.ce.GeneratedContentNode.prototype.filterRenderedDomElements = function ( domE
|
|||
*
|
||||
* @param {Object|string|Array} generatedContents Generated contents, in the default case an HTMLElement array
|
||||
* @param {boolean} [staged] Update happened in staging mode
|
||||
* @fires setup
|
||||
* @fires teardown
|
||||
* @fires ve.ce.View#setup
|
||||
* @fires ve.ce.View#teardown
|
||||
* @fires ve.dm.GeneratedContentNode#generatedContentsError
|
||||
*/
|
||||
ve.ce.GeneratedContentNode.prototype.render = function ( generatedContents, staged ) {
|
||||
var node = this;
|
||||
|
@ -269,7 +262,7 @@ ve.ce.GeneratedContentNode.prototype.preventTabbingInside = function () {
|
|||
*
|
||||
* Nodes may override this method if the rerender event needs to be deferred (e.g. until images have loaded)
|
||||
*
|
||||
* @fires rerender
|
||||
* @fires ve.ce.GeneratedContentNode#rerender
|
||||
*/
|
||||
ve.ce.GeneratedContentNode.prototype.afterRender = function () {
|
||||
this.emit( 'rerender' );
|
||||
|
|
|
@ -47,8 +47,9 @@ OO.mixinClass( ve.ce.ImageNode, ve.ce.ResizableNode );
|
|||
|
||||
/* Static Methods */
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-param, jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.ce.Node
|
||||
* @see ve.ce.Node
|
||||
*/
|
||||
ve.ce.ImageNode.static.getDescription = function ( model ) {
|
||||
return model.getAttribute( 'src' );
|
||||
|
|
|
@ -114,8 +114,9 @@ ve.ce.TableCellNode.prototype.onTableCellTeardown = function () {
|
|||
}
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.ce.ContentEditableNode
|
||||
* @see ve.ce.ContentEditableNode
|
||||
*/
|
||||
ve.ce.TableCellNode.prototype.setContentEditable = function () {
|
||||
// Overwite any state passed to setContentEditable with this.editing, so that
|
||||
|
|
|
@ -63,10 +63,9 @@ ve.ce.NullSelection.prototype.isNativeCursor = function () {
|
|||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*
|
||||
* Null selections don't exist in the view, so just return document directionality.
|
||||
*/
|
||||
ve.ce.NullSelection.prototype.getDirectionality = function ( doc ) {
|
||||
// Null selections don't exist in the view, so just return document directionality.
|
||||
return doc.getDir();
|
||||
};
|
||||
|
||||
|
|
|
@ -27,12 +27,13 @@ OO.inheritClass( ve.ce.AlignableNode, ve.ce.ClassAttributeNode );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event align
|
||||
* @event ve.ce.AlignableNode#align
|
||||
* @param {string} align New alignment
|
||||
*/
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
* @fires ve.ce.AlignableNode#align
|
||||
*/
|
||||
ve.ce.AlignableNode.prototype.updateAttributeClasses = function () {
|
||||
// Parent method
|
||||
|
|
|
@ -128,8 +128,8 @@ ve.ce.BranchNode.prototype.initialize = function () {
|
|||
* added using $.data() will be lost upon updating the wrapper. To retain information added to the
|
||||
* wrapper, subscribe to the 'teardown' and 'setup' events, or override #initialize.
|
||||
*
|
||||
* @fires teardown
|
||||
* @fires setup
|
||||
* @fires ve.ce.View#teardown
|
||||
* @fires ve.ce.View#setup
|
||||
*/
|
||||
ve.ce.BranchNode.prototype.updateTagName = function () {
|
||||
var tagName = this.getTagName();
|
||||
|
|
|
@ -43,12 +43,11 @@ OO.inheritClass( ve.ce.ContentBranchNode, ve.ce.BranchNode );
|
|||
/* Static Members */
|
||||
|
||||
/**
|
||||
* Whether Enter splits this node type. Must be true for ContentBranchNodes.
|
||||
* @property {boolean} Whether Enter splits this node type. Must be true for ContentBranchNodes.
|
||||
*
|
||||
* Warning: overriding this to false in a subclass will cause crashes on Enter key handling.
|
||||
*
|
||||
* @static
|
||||
* @property {boolean}
|
||||
* @inheritable
|
||||
*/
|
||||
ve.ce.ContentBranchNode.static.splitOnEnter = true;
|
||||
|
|
|
@ -37,7 +37,7 @@ OO.inheritClass( ve.ce.Document, ve.Document );
|
|||
/**
|
||||
* Language or direction changed
|
||||
*
|
||||
* @event langChange
|
||||
* @event ve.ce.Document#langChange
|
||||
*/
|
||||
|
||||
/* Methods */
|
||||
|
|
|
@ -78,11 +78,11 @@ OO.initClass( ve.ce.FocusableNode );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event focus
|
||||
* @event ve.ce.FocusableNode#focus
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event blur
|
||||
* @event ve.ce.FocusableNode#blur
|
||||
*/
|
||||
|
||||
/* Static properties */
|
||||
|
@ -617,8 +617,8 @@ ve.ce.FocusableNode.prototype.isFocused = function () {
|
|||
* Set the selected state of the node.
|
||||
*
|
||||
* @param {boolean} value Node is focused
|
||||
* @fires focus
|
||||
* @fires blur
|
||||
* @fires ve.ce.FocusableNode#focus
|
||||
* @fires ve.ce.FocusableNode#blur
|
||||
*/
|
||||
ve.ce.FocusableNode.prototype.setFocused = function ( value ) {
|
||||
value = !!value;
|
||||
|
|
|
@ -104,85 +104,97 @@ ve.ce.Node.static.getDescription = function () {
|
|||
|
||||
/* Methods */
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.getChildNodeTypes = function () {
|
||||
return this.model.getChildNodeTypes();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.getParentNodeTypes = function () {
|
||||
return this.model.getParentNodeTypes();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.getSuggestedParentNodeTypes = function () {
|
||||
return this.model.getSuggestedParentNodeTypes();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.canHaveChildren = function () {
|
||||
return this.model.canHaveChildren();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.canHaveChildrenNotContent = function () {
|
||||
return this.model.canHaveChildrenNotContent();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.isInternal = function () {
|
||||
return this.model.isInternal();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.isMetaData = function () {
|
||||
return this.model.isMetaData();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.isWrapped = function () {
|
||||
return this.model.isWrapped();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.isUnwrappable = function () {
|
||||
return this.model.isUnwrappable();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.canContainContent = function () {
|
||||
return this.model.canContainContent();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.isContent = function () {
|
||||
return this.model.isContent();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*
|
||||
* If this is set to true it should implement:
|
||||
*
|
||||
|
@ -193,64 +205,73 @@ ve.ce.Node.prototype.isFocusable = function () {
|
|||
return this.model.isFocusable();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.isAlignable = function () {
|
||||
return this.model.isAlignable();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.isCellable = function () {
|
||||
return this.model.isCellable();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.isCellEditable = function () {
|
||||
return this.model.isCellEditable();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.hasSignificantWhitespace = function () {
|
||||
return this.model.hasSignificantWhitespace();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.handlesOwnChildren = function () {
|
||||
return this.model.handlesOwnChildren();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.shouldIgnoreChildren = function () {
|
||||
return this.model.shouldIgnoreChildren();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.getLength = function () {
|
||||
return this.model.getLength();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.getOuterLength = function () {
|
||||
return this.model.getOuterLength();
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.ce.Node.prototype.getOffset = function () {
|
||||
return this.model.getOffset();
|
||||
|
|
|
@ -77,16 +77,16 @@ OO.initClass( ve.ce.ResizableNode );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event resizeStart
|
||||
* @event ve.ce.ResizableNode#resizeStart
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event resizing
|
||||
* @event ve.ce.ResizableNode#resizing
|
||||
* @param {Object} dimensions Dimension object containing width & height
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event resizeEnd
|
||||
* @event ve.ce.ResizableNode#resizeEnd
|
||||
*/
|
||||
|
||||
/* Methods */
|
||||
|
@ -380,7 +380,7 @@ ve.ce.ResizableNode.prototype.onResizableAttributeChange = function () {
|
|||
* Handle bounding box handle mousedown.
|
||||
*
|
||||
* @param {jQuery.Event} e Click event
|
||||
* @fires resizeStart
|
||||
* @fires ve.ce.ResizableNode#resizeStart
|
||||
*/
|
||||
ve.ce.ResizableNode.prototype.onResizeHandlesCornerMouseDown = function ( e ) {
|
||||
// Hide context menu
|
||||
|
@ -481,7 +481,7 @@ ve.ce.ResizableNode.prototype.setResizableHandlesPosition = function () {
|
|||
* Handle body mousemove.
|
||||
*
|
||||
* @param {jQuery.Event} e Click event
|
||||
* @fires resizing
|
||||
* @fires ve.ce.ResizableNode#resizing
|
||||
*/
|
||||
ve.ce.ResizableNode.prototype.onDocumentMouseMove = function ( e ) {
|
||||
var diff = {},
|
||||
|
@ -548,7 +548,7 @@ ve.ce.ResizableNode.prototype.onDocumentMouseMove = function ( e ) {
|
|||
/**
|
||||
* Handle body mouseup.
|
||||
*
|
||||
* @fires resizeEnd
|
||||
* @fires ve.ce.ResizableNode#resizeEnd
|
||||
*/
|
||||
ve.ce.ResizableNode.prototype.onDocumentMouseUp = function () {
|
||||
var width = this.$resizeHandles.outerWidth(),
|
||||
|
|
|
@ -242,42 +242,44 @@ OO.mixinClass( ve.ce.Surface, OO.EventEmitter );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event relocationStart
|
||||
* @event ve.ce.Surface#relocationStart
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event relocationEnd
|
||||
* @event ve.ce.Surface#relocationEnd
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event keyup
|
||||
* @event ve.ce.Surface#keyup
|
||||
*/
|
||||
|
||||
/**
|
||||
* When the surface or its contents changes position
|
||||
* (only after initialize has already been called).
|
||||
*
|
||||
* @event position
|
||||
* @event ve.ce.Surface#position
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event focus
|
||||
* Note that it's possible for a focus event to occur immediately after a blur event, if the focus
|
||||
* moves to or from a FocusableNode. In this case the surface doesn't lose focus conceptually, but
|
||||
* a pair of blur-focus events is emitted anyway.
|
||||
*
|
||||
* @event ve.ce.Surface#focus
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event blur
|
||||
* Note that it's possible for a focus event to occur immediately after a blur event, if the focus
|
||||
* moves to or from a FocusableNode. In this case the surface doesn't lose focus conceptually, but
|
||||
* a pair of blur-focus events is emitted anyway.
|
||||
*
|
||||
* @event ve.ce.Surface#blur
|
||||
*/
|
||||
|
||||
/**
|
||||
* Surface activation state has changed (i.e. on activate or deactivate)
|
||||
*
|
||||
* @event activation
|
||||
* @event ve.ce.Surface#activation
|
||||
*/
|
||||
|
||||
/* Static properties */
|
||||
|
@ -516,6 +518,8 @@ ve.ce.Surface.prototype.getSelectionDirectionality = function () {
|
|||
* Initialize surface.
|
||||
*
|
||||
* This should be called after the surface has been attached to the DOM.
|
||||
*
|
||||
* @fires ve.ce.Surface#position
|
||||
*/
|
||||
ve.ce.Surface.prototype.initialize = function () {
|
||||
this.attachedRoot.setLive( true );
|
||||
|
@ -745,7 +749,7 @@ ve.ce.Surface.prototype.isShownAsDeactivated = function () {
|
|||
* @param {boolean} [showAsActivated=true] Surface should still show as activated
|
||||
* @param {boolean} [noSelectionChange] Don't change the native selection.
|
||||
* @param {boolean} [hideSelection] Completely hide the selection
|
||||
* @fires activation
|
||||
* @fires ve.ce.Surface#activation
|
||||
*/
|
||||
ve.ce.Surface.prototype.deactivate = function ( showAsActivated, noSelectionChange, hideSelection ) {
|
||||
var surface = this;
|
||||
|
@ -783,7 +787,8 @@ ve.ce.Surface.prototype.deactivate = function ( showAsActivated, noSelectionChan
|
|||
/**
|
||||
* Reactivate the surface and restore the native selection
|
||||
*
|
||||
* @fires activation
|
||||
* @fires ve.ce.Surface#activation
|
||||
* @fires ve.dm.Surface#contextChange
|
||||
*/
|
||||
ve.ce.Surface.prototype.activate = function () {
|
||||
if ( this.deactivated ) {
|
||||
|
@ -1053,7 +1058,7 @@ ve.ce.Surface.prototype.redrawSelections = function () {
|
|||
*
|
||||
* This is triggered by a global focusin/focusout event noticing a selection on the document.
|
||||
*
|
||||
* @fires focus
|
||||
* @fires ve.ce.Surface#focus
|
||||
*/
|
||||
ve.ce.Surface.prototype.onDocumentFocus = function () {
|
||||
if ( this.getModel().getSelection().isNull() ) {
|
||||
|
@ -1074,7 +1079,7 @@ ve.ce.Surface.prototype.onDocumentFocus = function () {
|
|||
*
|
||||
* This is triggered by a global focusin/focusout event noticing no selection on the document.
|
||||
*
|
||||
* @fires blur
|
||||
* @fires ve.ce.Surface#blur
|
||||
*/
|
||||
ve.ce.Surface.prototype.onDocumentBlur = function () {
|
||||
var nullSelectionOnBlur = this.surface.nullSelectionOnBlur;
|
||||
|
@ -1328,7 +1333,7 @@ ve.ce.Surface.prototype.onDocumentSelectionChange = function () {
|
|||
* Handle document drag start events.
|
||||
*
|
||||
* @param {jQuery.Event} e Drag start event
|
||||
* @fires relocationStart
|
||||
* @fires ve.ce.Surface#relocationStart
|
||||
*/
|
||||
ve.ce.Surface.prototype.onDocumentDragStart = function ( e ) {
|
||||
this.onCopy( e );
|
||||
|
@ -1484,7 +1489,7 @@ ve.ce.Surface.prototype.onDocumentDragLeave = function () {
|
|||
* Limits native drag and drop behaviour.
|
||||
*
|
||||
* @param {jQuery.Event} e Drop event
|
||||
* @fires relocationEnd
|
||||
* @fires ve.ce.Surface#relocationEnd
|
||||
*/
|
||||
ve.ce.Surface.prototype.onDocumentDrop = function ( e ) {
|
||||
// Properties may be nullified by other events, so cache before setTimeout
|
||||
|
@ -2139,7 +2144,7 @@ ve.ce.Surface.prototype.cleanupUnicorns = function ( fixupCursor ) {
|
|||
* Handle document key up events.
|
||||
*
|
||||
* @param {jQuery.Event} e Key up event
|
||||
* @fires keyup
|
||||
* @fires ve.ce.Surface#keyup
|
||||
*/
|
||||
ve.ce.Surface.prototype.onDocumentKeyUp = function () {
|
||||
this.emit( 'keyup' );
|
||||
|
@ -3655,6 +3660,8 @@ ve.ce.Surface.prototype.findFocusedNode = function ( range ) {
|
|||
|
||||
/**
|
||||
* Handle documentUpdate events on the surface model.
|
||||
*
|
||||
* @fires ve.ce.Surface#position
|
||||
*/
|
||||
ve.ce.Surface.prototype.onModelDocumentUpdate = function () {
|
||||
var surface = this;
|
||||
|
@ -3888,6 +3895,7 @@ ve.ce.Surface.prototype.handleObservedChanges = function ( oldState, newState )
|
|||
* Create a slug out of a DOM element
|
||||
*
|
||||
* @param {HTMLElement} element Slug element
|
||||
* @fires ve.ce.Surface#position
|
||||
*/
|
||||
ve.ce.Surface.prototype.createSlug = function ( element ) {
|
||||
var surface = this,
|
||||
|
@ -4128,6 +4136,7 @@ ve.ce.Surface.prototype.maybeSetBreakpoint = function () {
|
|||
* Handle window resize event.
|
||||
*
|
||||
* @param {jQuery.Event} e Window resize event
|
||||
* @fires ve.ce.Surface#position
|
||||
*/
|
||||
ve.ce.Surface.prototype.onWindowResize = function () {
|
||||
this.emit( 'position' );
|
||||
|
@ -4144,6 +4153,8 @@ ve.ce.Surface.prototype.onWindowResize = function () {
|
|||
|
||||
/**
|
||||
* Start a relocation action.
|
||||
*
|
||||
* @fires ve.ce.Surface#relocationStart
|
||||
*/
|
||||
ve.ce.Surface.prototype.startRelocation = function () {
|
||||
// Cache the selection and selectedNode when the drag starts, to
|
||||
|
@ -4155,6 +4166,8 @@ ve.ce.Surface.prototype.startRelocation = function () {
|
|||
|
||||
/**
|
||||
* Complete a relocation action.
|
||||
*
|
||||
* @fires ve.ce.Surface#relocationEnd
|
||||
*/
|
||||
ve.ce.Surface.prototype.endRelocation = function () {
|
||||
this.relocatingSelection = null;
|
||||
|
@ -4928,6 +4941,7 @@ ve.ce.Surface.prototype.showSelectionState = function ( selection ) {
|
|||
*
|
||||
* @param {boolean|Node} [fromModelOrNode] If `true`, gather annotations from the model,
|
||||
* instead of the cusor focus point. If a Node is passed, gather annotations from that node.
|
||||
* @fires ve.dm.Surface#contextChange
|
||||
*/
|
||||
ve.ce.Surface.prototype.updateActiveAnnotations = function ( fromModelOrNode ) {
|
||||
var activeAnnotations,
|
||||
|
|
|
@ -49,11 +49,11 @@ OO.mixinClass( ve.ce.View, OO.EventEmitter );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event setup
|
||||
* @event ve.ce.View#setup
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event teardown
|
||||
* @event ve.ce.View#teardown
|
||||
*/
|
||||
|
||||
/* Static members */
|
||||
|
@ -72,6 +72,7 @@ OO.mixinClass( ve.ce.View, OO.EventEmitter );
|
|||
* @static
|
||||
* @property {boolean|Function}
|
||||
* @param {string} attribute
|
||||
* @return {boolean} Attibute is allowed
|
||||
* @inheritable
|
||||
*/
|
||||
ve.ce.View.static.renderHtmlAttributes = function ( attribute ) {
|
||||
|
@ -158,8 +159,8 @@ ve.ce.View.prototype.isLive = function () {
|
|||
* Set live state.
|
||||
*
|
||||
* @param {boolean} live The view has been attached to the live DOM (use false on detach)
|
||||
* @fires setup
|
||||
* @fires teardown
|
||||
* @fires ve.ce.View#setup
|
||||
* @fires ve.ce.View#teardown
|
||||
*/
|
||||
ve.ce.View.prototype.setLive = function ( live ) {
|
||||
this.live = live;
|
||||
|
|
|
@ -7,8 +7,7 @@
|
|||
/**
|
||||
* Namespace for all VisualEditor ContentEditable classes, static methods and static properties.
|
||||
*
|
||||
* @class
|
||||
* @singleton
|
||||
* @namespace
|
||||
*/
|
||||
ve.ce = {
|
||||
// nodeFactory: Initialized in ve.ce.NodeFactory.js
|
||||
|
|
|
@ -22,7 +22,7 @@ OO.initClass( ve.dm.GeneratedContentNode );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event generatedContentsError
|
||||
* @event ve.dm.GeneratedContentNode#generatedContentsError
|
||||
* @param {jQuery} $element Element containing the error message
|
||||
*/
|
||||
|
||||
|
|
|
@ -28,16 +28,18 @@ OO.mixinClass( ve.dm.ImageNode, ve.dm.ResizableNode );
|
|||
|
||||
/* Static Methods */
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-param, jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.dm.Model
|
||||
* @see ve.dm.Model
|
||||
*/
|
||||
ve.dm.ImageNode.static.isDiffComparable = function ( element, other ) {
|
||||
// Images with different src's shouldn't be diffed
|
||||
return element.type === other.type && element.attributes.src === other.attributes.src;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-param, jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.dm.Model
|
||||
* @see ve.dm.Model
|
||||
*/
|
||||
ve.dm.ImageNode.static.describeChanges = function ( attributeChanges, attributes ) {
|
||||
var customKeys = [ 'width', 'height' ],
|
||||
|
@ -70,8 +72,9 @@ ve.dm.ImageNode.static.describeChanges = function ( attributeChanges, attributes
|
|||
return descriptions;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-param, jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.dm.Node
|
||||
* @see ve.dm.Node
|
||||
*/
|
||||
ve.dm.ImageNode.static.describeChange = function ( key, change ) {
|
||||
switch ( key ) {
|
||||
|
|
|
@ -30,7 +30,7 @@ ve.dm.TableNode = function VeDmTableNode() {
|
|||
OO.inheritClass( ve.dm.TableNode, ve.dm.BranchNode );
|
||||
|
||||
/**
|
||||
* @event cellAttributeChange
|
||||
* @event ve.dm.TableNode#cellAttributeChange
|
||||
* @param {ve.dm.TableCellableNode} cell
|
||||
*/
|
||||
|
||||
|
@ -61,7 +61,7 @@ ve.dm.TableNode.prototype.onSplice = function () {
|
|||
* Handle cell attribute changes
|
||||
*
|
||||
* @param {ve.dm.TableCellableNode} cell
|
||||
* @fires cellAttributeChange
|
||||
* @fires ve.dm.TableNode#cellAttributeChange
|
||||
*/
|
||||
ve.dm.TableNode.prototype.onCellAttributeChange = function ( cell ) {
|
||||
this.emit( 'cellAttributeChange', cell );
|
||||
|
@ -144,12 +144,12 @@ OO.mixinClass( ve.dm.TableNodeCellIterator, OO.EventEmitter );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event newSection
|
||||
* @event ve.dm.TableNodeCellIterator#newSection
|
||||
* @param {ve.dm.TableSectionNode} node Table section node
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event newRow
|
||||
* @event ve.dm.TableNodeCellIterator#newRow
|
||||
* @param {ve.dm.TableRowNode} node Table row node
|
||||
*/
|
||||
|
||||
|
@ -181,7 +181,7 @@ ve.dm.TableNodeCellIterator.prototype.next = function () {
|
|||
/**
|
||||
* Move to the next table section
|
||||
*
|
||||
* @fires newSection
|
||||
* @fires ve.dm.TableNodeCellIterator#newSection
|
||||
*/
|
||||
ve.dm.TableNodeCellIterator.prototype.nextSection = function () {
|
||||
// If there are no sections left, finish
|
||||
|
@ -207,7 +207,7 @@ ve.dm.TableNodeCellIterator.prototype.nextSection = function () {
|
|||
/**
|
||||
* Move to the next table row
|
||||
*
|
||||
* @fires newRow
|
||||
* @fires ve.dm.TableNodeCellIterator#newRow
|
||||
*/
|
||||
ve.dm.TableNodeCellIterator.prototype.nextRow = function () {
|
||||
// If there are no rows left, go to the next section
|
||||
|
|
|
@ -26,11 +26,6 @@ ve.dm.TableRowNode = function VeDmTableRowNode() {
|
|||
|
||||
OO.inheritClass( ve.dm.TableRowNode, ve.dm.BranchNode );
|
||||
|
||||
/**
|
||||
* @event cellAttributeChange
|
||||
* @param {ve.dm.TableCellableNode} cell
|
||||
*/
|
||||
|
||||
/* Static Properties */
|
||||
|
||||
ve.dm.TableRowNode.static.name = 'tableRow';
|
||||
|
@ -88,7 +83,7 @@ ve.dm.TableRowNode.prototype.onSplice = function () {
|
|||
* Handle cell attribute changes
|
||||
*
|
||||
* @param {ve.dm.TableCellableNode} cell
|
||||
* @fires cellAttributeChange
|
||||
* @fires ve.dm.TableNode#cellAttributeChange
|
||||
*/
|
||||
ve.dm.TableRowNode.prototype.onCellAttributeChange = function ( cell ) {
|
||||
this.emit( 'cellAttributeChange', cell );
|
||||
|
|
|
@ -26,11 +26,6 @@ ve.dm.TableSectionNode = function VeDmTableSectionNode() {
|
|||
|
||||
OO.inheritClass( ve.dm.TableSectionNode, ve.dm.BranchNode );
|
||||
|
||||
/**
|
||||
* @event cellAttributeChange
|
||||
* @param {ve.dm.TableCellableNode} cell
|
||||
*/
|
||||
|
||||
/* Static Properties */
|
||||
|
||||
ve.dm.TableSectionNode.static.name = 'tableSection';
|
||||
|
@ -86,7 +81,7 @@ ve.dm.TableSectionNode.prototype.onSplice = function () {
|
|||
* Handle cell attribute changes
|
||||
*
|
||||
* @param {ve.dm.TableCellableNode} cell
|
||||
* @fires cellAttributeChange
|
||||
* @fires ve.dm.TableNode#cellAttributeChange
|
||||
*/
|
||||
ve.dm.TableSectionNode.prototype.onCellAttributeChange = function ( cell ) {
|
||||
this.emit( 'cellAttributeChange', cell );
|
||||
|
|
|
@ -215,11 +215,10 @@ ve.dm.TableSelection.prototype.getRanges = function ( doc ) {
|
|||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*
|
||||
* Note that this returns the table range, and not the minimal range covering
|
||||
* all cells, as that would be far more expensive to compute.
|
||||
*/
|
||||
ve.dm.TableSelection.prototype.getCoveringRange = function () {
|
||||
// Note that this returns the table range, and not the minimal range covering
|
||||
// all cells, as that would be far more expensive to compute.
|
||||
return this.tableRange;
|
||||
};
|
||||
|
||||
|
|
|
@ -34,17 +34,13 @@ ve.dm.BranchNode = function VeDmBranchNode( element, children ) {
|
|||
};
|
||||
|
||||
/**
|
||||
* @event splice
|
||||
* @event ve.dm.BranchNode#splice
|
||||
* @see #method-splice
|
||||
* @param {number} index
|
||||
* @param {number} howmany
|
||||
* @param {ve.dm.BranchNode} [childModel]
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event update
|
||||
*/
|
||||
|
||||
/* Inheritance */
|
||||
|
||||
OO.inheritClass( ve.dm.BranchNode, ve.dm.Node );
|
||||
|
@ -58,8 +54,6 @@ OO.mixinClass( ve.dm.BranchNode, ve.BranchNode );
|
|||
*
|
||||
* @param {ve.dm.BranchNode} childModel Item to add
|
||||
* @return {number} New number of children
|
||||
* @fires splice
|
||||
* @fires update
|
||||
*/
|
||||
ve.dm.BranchNode.prototype.push = function ( childModel ) {
|
||||
this.splice( this.children.length, 0, childModel );
|
||||
|
@ -69,9 +63,7 @@ ve.dm.BranchNode.prototype.push = function ( childModel ) {
|
|||
/**
|
||||
* Remove a child node from the end of the list.
|
||||
*
|
||||
* @return {ve.dm.BranchNode} Removed childModel
|
||||
* @fires splice
|
||||
* @fires update
|
||||
* @return {ve.dm.BranchNode|undefined} Removed childModel
|
||||
*/
|
||||
ve.dm.BranchNode.prototype.pop = function () {
|
||||
if ( this.children.length ) {
|
||||
|
@ -86,8 +78,6 @@ ve.dm.BranchNode.prototype.pop = function () {
|
|||
*
|
||||
* @param {ve.dm.BranchNode} childModel Item to add
|
||||
* @return {number} New number of children
|
||||
* @fires splice
|
||||
* @fires update
|
||||
*/
|
||||
ve.dm.BranchNode.prototype.unshift = function ( childModel ) {
|
||||
this.splice( 0, 0, childModel );
|
||||
|
@ -97,9 +87,7 @@ ve.dm.BranchNode.prototype.unshift = function ( childModel ) {
|
|||
/**
|
||||
* Remove a child node from the beginning of the list.
|
||||
*
|
||||
* @return {ve.dm.BranchNode} Removed childModel
|
||||
* @fires splice
|
||||
* @fires update
|
||||
* @return {ve.dm.BranchNode|undefined} Removed childModel
|
||||
*/
|
||||
ve.dm.BranchNode.prototype.shift = function () {
|
||||
if ( this.children.length ) {
|
||||
|
@ -115,7 +103,7 @@ ve.dm.BranchNode.prototype.shift = function () {
|
|||
* @param {number} index Index to remove and or insert nodes at
|
||||
* @param {number} howmany Number of nodes to remove
|
||||
* @param {...ve.dm.BranchNode} [nodes] Variadic list of nodes to insert
|
||||
* @fires splice
|
||||
* @fires ve.dm.BranchNode#splice
|
||||
* @return {ve.dm.BranchNode[]} Removed nodes
|
||||
*/
|
||||
ve.dm.BranchNode.prototype.splice = function () {
|
||||
|
|
|
@ -106,8 +106,9 @@ ve.dm.ClassAttributeNode.static.getClassAttrFromAttributes = function ( attribut
|
|||
return null;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-param
|
||||
/**
|
||||
* @inheritdoc ve.dm.Node
|
||||
* @see ve.dm.Node
|
||||
*/
|
||||
ve.dm.ClassAttributeNode.static.sanitize = function ( dataElement ) {
|
||||
if ( dataElement.attributes ) {
|
||||
|
|
|
@ -1188,7 +1188,7 @@ ve.dm.Converter.prototype.getDataFromDomSubtree = function ( domElement, wrapper
|
|||
* Get inner whitespace from linear data
|
||||
*
|
||||
* @param {ve.dm.ElementLinearData} data Linear model data
|
||||
* @return {(string|undefined)[]}
|
||||
* @return {Array.<string|undefined>} Sparse array of whitespace strings: [ innerLeft, innerRight ]
|
||||
*/
|
||||
ve.dm.Converter.prototype.getInnerWhitespace = function ( data ) {
|
||||
var innerWhitespace = new Array( 2 ),
|
||||
|
@ -1293,7 +1293,7 @@ ve.dm.Converter.prototype.getDomSubtreeFromModel = function ( model, container,
|
|||
*
|
||||
* @param {Array} data Linear model data
|
||||
* @param {HTMLElement} container DOM element to add the generated elements to. Should be empty.
|
||||
* @param {(string|undefined)[]} [innerWhitespace] Inner whitespace if the container is the body
|
||||
* @param {Array.<string|undefined>} [innerWhitespace] Inner whitespace if the container is the body
|
||||
* @throws Unbalanced data: looking for closing /type
|
||||
*/
|
||||
ve.dm.Converter.prototype.getDomSubtreeFromData = function ( data, container, innerWhitespace ) {
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
* ignored.
|
||||
* @param {ve.dm.Document} [parentDocument] Document to use as root for created nodes, used when cloning
|
||||
* @param {ve.dm.InternalList} [internalList] Internal list to clone; passed when creating a document slice
|
||||
* @param {(string|undefined)[]} [innerWhitespace] Inner whitespace to clone; passed when creating a document slice
|
||||
* @param {Array.<string|undefined>} [innerWhitespace] Inner whitespace to clone; passed when creating a document slice
|
||||
* @param {string} [lang] Language code
|
||||
* @param {string} [dir='ltr'] Directionality (ltr/rtl)
|
||||
* @param {ve.dm.Document} [originalDocument] Original document form which this was cloned.
|
||||
|
@ -92,17 +92,25 @@ OO.inheritClass( ve.dm.Document, ve.Document );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event precommit
|
||||
* Emitted when a transaction is about to be committed.
|
||||
*
|
||||
* @event ve.dm.Document#precommit
|
||||
* @param {ve.dm.Transaction} tx Transaction that is about to be committed
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event transact
|
||||
* Emitted when a transaction has been committed.
|
||||
*
|
||||
* @event ve.dm.Document#transact
|
||||
* @param {ve.dm.Transaction} tx Transaction that was just processed
|
||||
*/
|
||||
|
||||
/**
|
||||
* A value in persistent storage has changed
|
||||
*
|
||||
* @event ve.dm.Document#storage
|
||||
*/
|
||||
|
||||
/* Static methods */
|
||||
|
||||
/**
|
||||
|
@ -372,8 +380,8 @@ ve.dm.Document.prototype.isReadOnly = function () {
|
|||
*
|
||||
* @param {ve.dm.Transaction} transaction Transaction to apply
|
||||
* @param {boolean} isStaging Transaction is being applied in staging mode
|
||||
* @fires precommit
|
||||
* @fires transact
|
||||
* @fires ve.dm.Document#precommit
|
||||
* @fires ve.dm.Document#transact
|
||||
* @throws {Error} Cannot commit a transaction that has already been committed
|
||||
*/
|
||||
ve.dm.Document.prototype.commit = function ( transaction, isStaging ) {
|
||||
|
@ -468,7 +476,7 @@ ve.dm.Document.prototype.getInternalList = function () {
|
|||
/**
|
||||
* Get the document's inner whitespace
|
||||
*
|
||||
* @return {(string|undefined)[]} The document's inner whitespace
|
||||
* @return {Array.<string|undefined>} The document's inner whitespace
|
||||
*/
|
||||
ve.dm.Document.prototype.getInnerWhitespace = function () {
|
||||
return this.innerWhitespace;
|
||||
|
@ -1766,7 +1774,7 @@ ve.dm.Document.prototype.getDir = function () {
|
|||
*
|
||||
* @param {string|Object} [keyOrStorage] Key, or storage object to restore
|
||||
* @param {Mixed} [value] Serializable value, if key is set
|
||||
* @fires storage
|
||||
* @fires ve.dm.Document#storage
|
||||
*/
|
||||
ve.dm.Document.prototype.setStorage = function ( keyOrStorage, value ) {
|
||||
if ( typeof keyOrStorage === 'string' ) {
|
||||
|
|
|
@ -37,7 +37,7 @@ OO.mixinClass( ve.dm.InternalList, OO.EventEmitter );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event update
|
||||
* @event ve.dm.InternalList#update
|
||||
* @param {string[]} groupsChanged List of groups changed since the last transaction
|
||||
*/
|
||||
|
||||
|
@ -355,7 +355,7 @@ ve.dm.InternalList.prototype.markGroupAsChanged = function ( groupName ) {
|
|||
/**
|
||||
* Handle document transaction events
|
||||
*
|
||||
* @fires update
|
||||
* @fires ve.dm.InternalList#update
|
||||
*/
|
||||
ve.dm.InternalList.prototype.onTransact = function () {
|
||||
if ( this.groupsChanged.length > 0 ) {
|
||||
|
|
|
@ -37,12 +37,12 @@ OO.mixinClass( ve.dm.MetaList, OO.EventEmitter );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event insert
|
||||
* @event ve.dm.MetaList#insert
|
||||
* @param {ve.dm.MetaItem} item Item that was inserted
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event remove
|
||||
* @event ve.dm.MetaList#remove
|
||||
* @param {ve.dm.MetaItem} item Item that was removed
|
||||
*/
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ ve.dm.Model.static.matchTagNames = null;
|
|||
* For more information about element matching, see ve.dm.ModelRegistry.
|
||||
*
|
||||
* @static
|
||||
* @property {(string|RegExp)[]|null}
|
||||
* @property {Array.<string|RegExp>|null}
|
||||
* @inheritable
|
||||
*/
|
||||
ve.dm.Model.static.matchRdfaTypes = null;
|
||||
|
@ -64,7 +64,7 @@ ve.dm.Model.static.matchRdfaTypes = null;
|
|||
* For more information about element matching, see ve.dm.ModelRegistry.
|
||||
*
|
||||
* @static
|
||||
* @property {(string|RegExp)[]|null}
|
||||
* @property {Array.<string|RegExp>|null}
|
||||
* @inheritable
|
||||
*/
|
||||
ve.dm.Model.static.allowedRdfaTypes = [];
|
||||
|
@ -228,7 +228,7 @@ ve.dm.Model.static.getHashObject = function ( dataElement ) {
|
|||
* Array of RDFa types that this model should be a match candidate for.
|
||||
*
|
||||
* @static
|
||||
* @return {(string|RegExp)[]|null} Array of strings or regular expressions
|
||||
* @return {Array.<string|RegExp>|null} Array of strings or regular expressions
|
||||
*/
|
||||
ve.dm.Model.static.getMatchRdfaTypes = function () {
|
||||
return this.matchRdfaTypes;
|
||||
|
@ -238,7 +238,7 @@ ve.dm.Model.static.getMatchRdfaTypes = function () {
|
|||
* Extra RDFa types that the element is allowed to have.
|
||||
*
|
||||
* @static
|
||||
* @return {(string|RegExp)[]|null} Array of strings or regular expressions
|
||||
* @return {Array.<string|RegExp>|null} Array of strings or regular expressions
|
||||
*/
|
||||
ve.dm.Model.static.getAllowedRdfaTypes = function () {
|
||||
return this.allowedRdfaTypes;
|
||||
|
@ -293,6 +293,7 @@ ve.dm.Model.static.describeChange = function ( key, change ) {
|
|||
return ve.htmlMsg( 'visualeditor-changedesc-changed', key, this.wrapText( 'del', change.from ), this.wrapText( 'ins', change.to ) );
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -30,20 +30,19 @@ ve.dm.Node = function VeDmNode( element ) {
|
|||
};
|
||||
|
||||
/**
|
||||
* @event attributeChange
|
||||
* @event ve.dm.Node#attributeChange
|
||||
* @param {string} key
|
||||
* @param {Mixed} oldValue
|
||||
* @param {Mixed} newValue
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event lengthChange
|
||||
* @event ve.dm.Node#lengthChange
|
||||
* @param {number} diff
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event update
|
||||
* @param {boolean} staged Transaction was applied in staging mode
|
||||
* @event ve.dm.Node#update
|
||||
*/
|
||||
|
||||
/* Inheritance */
|
||||
|
@ -444,127 +443,145 @@ ve.dm.Node.prototype.getClonedElement = function ( preserveGenerated, resetAttri
|
|||
return this.constructor.static.cloneElement( this.element, store, preserveGenerated, resetAttributes );
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.getChildNodeTypes = function () {
|
||||
return this.constructor.static.childNodeTypes;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.getParentNodeTypes = function () {
|
||||
return this.constructor.static.parentNodeTypes;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.getSuggestedParentNodeTypes = function () {
|
||||
return this.constructor.static.suggestedParentNodeTypes;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.canHaveChildren = function () {
|
||||
return ve.dm.nodeFactory.canNodeHaveChildren( this.type );
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.canHaveChildrenNotContent = function () {
|
||||
return ve.dm.nodeFactory.canNodeHaveChildrenNotContent( this.type );
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.isInternal = function () {
|
||||
return this.constructor.static.isInternal;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.isMetaData = function () {
|
||||
return this.constructor.static.isMetaData;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.isWrapped = function () {
|
||||
return this.constructor.static.isWrapped;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.isUnwrappable = function () {
|
||||
return this.isWrapped() && this.constructor.static.isUnwrappable;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.canContainContent = function () {
|
||||
return this.constructor.static.canContainContent;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.isContent = function () {
|
||||
return this.constructor.static.isContent;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.isFocusable = function () {
|
||||
return this.constructor.static.isFocusable;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.isAlignable = function () {
|
||||
return this.constructor.static.isAlignable;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.isCellable = function () {
|
||||
return this.constructor.static.isCellable;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.isCellEditable = function () {
|
||||
return this.constructor.static.isCellEditable;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.isDiffedAsList = function () {
|
||||
return this.constructor.static.isDiffedAsList;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.isDiffedAsLeaf = function () {
|
||||
return this.constructor.static.isDiffedAsLeaf;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.isDiffedAsDocument = function () {
|
||||
return this.getChildNodeTypes() === null;
|
||||
|
@ -600,22 +617,25 @@ ve.dm.Node.prototype.suppressSlugType = function () {
|
|||
return null;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.hasSignificantWhitespace = function () {
|
||||
return this.constructor.static.hasSignificantWhitespace;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.handlesOwnChildren = function () {
|
||||
return this.constructor.static.handlesOwnChildren;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.shouldIgnoreChildren = function () {
|
||||
return this.constructor.static.ignoreChildren;
|
||||
|
@ -687,8 +707,9 @@ ve.dm.Node.prototype.compareAttributes = function ( attributes ) {
|
|||
return true;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.getLength = function () {
|
||||
return this.length;
|
||||
|
@ -701,8 +722,8 @@ ve.dm.Node.prototype.getLength = function () {
|
|||
* not change the document data.
|
||||
*
|
||||
* @param {number} length Length of content
|
||||
* @fires lengthChange
|
||||
* @fires update
|
||||
* @fires ve.dm.Node#lengthChange
|
||||
* @fires ve.dm.Node#update
|
||||
* @throws {Error} Invalid content length error if length is less than 0
|
||||
*/
|
||||
ve.dm.Node.prototype.setLength = function ( length ) {
|
||||
|
@ -729,16 +750,15 @@ ve.dm.Node.prototype.setLength = function ( length ) {
|
|||
* not change the document data.
|
||||
*
|
||||
* @param {number} adjustment Amount to adjust length by
|
||||
* @fires lengthChange
|
||||
* @fires update
|
||||
* @throws {Error} Invalid adjustment error if resulting length is less than 0
|
||||
*/
|
||||
ve.dm.Node.prototype.adjustLength = function ( adjustment ) {
|
||||
this.setLength( this.length + adjustment );
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.Node
|
||||
* @see ve.Node
|
||||
*/
|
||||
ve.dm.Node.prototype.getOffset = function () {
|
||||
if ( !this.parent ) {
|
||||
|
|
|
@ -78,35 +78,35 @@ OO.mixinClass( ve.dm.Scalable, OO.EventEmitter );
|
|||
/**
|
||||
* Current changed
|
||||
*
|
||||
* @event currentSizeChange
|
||||
* @event ve.dm.Scalable#currentSizeChange
|
||||
* @param {Object} currentDimensions Current dimensions width and height
|
||||
*/
|
||||
|
||||
/**
|
||||
* Default size or state changed
|
||||
*
|
||||
* @event defaultSizeChange
|
||||
* @event ve.dm.Scalable#defaultSizeChange
|
||||
* @param {boolean} isDefault The size is default
|
||||
*/
|
||||
|
||||
/**
|
||||
* Original size changed
|
||||
*
|
||||
* @event originalSizeChange
|
||||
* @event ve.dm.Scalable#originalSizeChange
|
||||
* @param {Object} originalDimensions Original dimensions width and height
|
||||
*/
|
||||
|
||||
/**
|
||||
* Min size changed
|
||||
*
|
||||
* @event minSizeChange
|
||||
* @event ve.dm.Scalable#minSizeChange
|
||||
* @param {Object} minDimensions Min dimensions width and height
|
||||
*/
|
||||
|
||||
/**
|
||||
* Max size changed
|
||||
*
|
||||
* @event maxSizeChange
|
||||
* @event ve.dm.Scalable#maxSizeChange
|
||||
* @param {Object} maxDimensions Max dimensions width and height
|
||||
*/
|
||||
|
||||
|
@ -225,7 +225,7 @@ ve.dm.Scalable.prototype.setRatioFromDimensions = function ( dimensions ) {
|
|||
* Also sets the aspect ratio if not set and in fixed ratio mode.
|
||||
*
|
||||
* @param {Object} dimensions Dimensions object with width & height
|
||||
* @fires currentSizeChange
|
||||
* @fires ve.dm.Scalable#currentSizeChange
|
||||
*/
|
||||
ve.dm.Scalable.prototype.setCurrentDimensions = function ( dimensions ) {
|
||||
if (
|
||||
|
@ -248,7 +248,7 @@ ve.dm.Scalable.prototype.setCurrentDimensions = function ( dimensions ) {
|
|||
* Also resets the aspect ratio if in fixed ratio mode.
|
||||
*
|
||||
* @param {Object} dimensions Dimensions object with width & height
|
||||
* @fires originalSizeChange
|
||||
* @fires ve.dm.Scalable#originalSizeChange
|
||||
*/
|
||||
ve.dm.Scalable.prototype.setOriginalDimensions = function ( dimensions ) {
|
||||
if (
|
||||
|
@ -269,7 +269,7 @@ ve.dm.Scalable.prototype.setOriginalDimensions = function ( dimensions ) {
|
|||
* Set the default dimensions
|
||||
*
|
||||
* @param {Object} dimensions Dimensions object with width & height
|
||||
* @fires defaultSizeChange
|
||||
* @fires ve.dm.Scalable#defaultSizeChange
|
||||
*/
|
||||
ve.dm.Scalable.prototype.setDefaultDimensions = function ( dimensions ) {
|
||||
if (
|
||||
|
@ -285,7 +285,7 @@ ve.dm.Scalable.prototype.setDefaultDimensions = function ( dimensions ) {
|
|||
/**
|
||||
* Reset and remove the default dimensions
|
||||
*
|
||||
* @fires defaultSizeChange
|
||||
* @fires ve.dm.Scalable#defaultSizeChange
|
||||
*/
|
||||
ve.dm.Scalable.prototype.clearDefaultDimensions = function () {
|
||||
if ( this.defaultDimensions !== null ) {
|
||||
|
@ -298,7 +298,7 @@ ve.dm.Scalable.prototype.clearDefaultDimensions = function () {
|
|||
/**
|
||||
* Reset and remove the default dimensions
|
||||
*
|
||||
* @fires originalSizeChange
|
||||
* @fires ve.dm.Scalable#originalSizeChange
|
||||
*/
|
||||
ve.dm.Scalable.prototype.clearOriginalDimensions = function () {
|
||||
if ( this.originalDimensions !== null ) {
|
||||
|
@ -312,7 +312,7 @@ ve.dm.Scalable.prototype.clearOriginalDimensions = function () {
|
|||
* Toggle the default size setting, or set it to particular value
|
||||
*
|
||||
* @param {boolean} [isDefault] Default or not, toggles if unset
|
||||
* @fires defaultSizeChange
|
||||
* @fires ve.dm.Scalable#defaultSizeChange
|
||||
*/
|
||||
ve.dm.Scalable.prototype.toggleDefault = function ( isDefault ) {
|
||||
if ( isDefault === undefined ) {
|
||||
|
@ -333,7 +333,7 @@ ve.dm.Scalable.prototype.toggleDefault = function ( isDefault ) {
|
|||
* Set the minimum dimensions
|
||||
*
|
||||
* @param {Object} dimensions Dimensions object with width & height
|
||||
* @fires minSizeChange
|
||||
* @fires ve.dm.Scalable#minSizeChange
|
||||
*/
|
||||
ve.dm.Scalable.prototype.setMinDimensions = function ( dimensions ) {
|
||||
if (
|
||||
|
@ -350,7 +350,7 @@ ve.dm.Scalable.prototype.setMinDimensions = function ( dimensions ) {
|
|||
* Set the maximum dimensions
|
||||
*
|
||||
* @param {Object} dimensions Dimensions object with width & height
|
||||
* @fires maxSizeChange
|
||||
* @fires ve.dm.Scalable#maxSizeChange
|
||||
*/
|
||||
ve.dm.Scalable.prototype.setMaxDimensions = function ( dimensions ) {
|
||||
if (
|
||||
|
@ -366,7 +366,7 @@ ve.dm.Scalable.prototype.setMaxDimensions = function ( dimensions ) {
|
|||
/**
|
||||
* Clear the minimum dimensions
|
||||
*
|
||||
* @fires minSizeChange
|
||||
* @fires ve.dm.Scalable#minSizeChange
|
||||
*/
|
||||
ve.dm.Scalable.prototype.clearMinDimensions = function () {
|
||||
if ( this.minDimensions !== null ) {
|
||||
|
@ -379,7 +379,7 @@ ve.dm.Scalable.prototype.clearMinDimensions = function () {
|
|||
/**
|
||||
* Clear the maximum dimensions
|
||||
*
|
||||
* @fires maxSizeChange
|
||||
* @fires ve.dm.Scalable#maxSizeChange
|
||||
*/
|
||||
ve.dm.Scalable.prototype.clearMaxDimensions = function () {
|
||||
if ( this.maxDimensions !== null ) {
|
||||
|
|
|
@ -87,54 +87,56 @@ OO.mixinClass( ve.dm.Surface, OO.EventEmitter );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event select
|
||||
* @event ve.dm.Surface#select
|
||||
* @param {ve.dm.Selection} selection
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event focus
|
||||
*
|
||||
* The selection was just set to a non-null selection
|
||||
*
|
||||
* @event ve.dm.Surface#focus
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event blur
|
||||
*
|
||||
* The selection was just set to a null selection
|
||||
*
|
||||
* @event ve.dm.Surface#blur
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event documentUpdate
|
||||
*
|
||||
* Emitted when a transaction has been processed on the document and the selection has been
|
||||
* translated to account for that transaction. You should only use this event if you need
|
||||
* to access the selection; in most cases, you should use {ve.dm.Document#event-transact}.
|
||||
*
|
||||
* @event ve.dm.Surface#documentUpdate
|
||||
* @param {ve.dm.Transaction} tx Transaction that was processed on the document
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event contextChange
|
||||
* @event ve.dm.Surface#contextChange
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event insertionAnnotationsChange
|
||||
* @event ve.dm.Surface#insertionAnnotationsChange
|
||||
* @param {ve.dm.AnnotationSet} insertionAnnotations AnnotationSet being inserted
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event history
|
||||
* Emitted when the history stacks change, or the ability to use them changes.
|
||||
*
|
||||
* @event ve.dm.Surface#history
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event undoStackChange
|
||||
* Emitted when the main undo stack changes (this.undoStack or this.undoIndex).
|
||||
*
|
||||
* @event ve.dm.Surface#undoStackChange
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event autosaveFailed
|
||||
* Auto-save failed to store a change
|
||||
*
|
||||
* @event ve.dm.Surface#autosaveFailed
|
||||
*/
|
||||
|
||||
/* Methods */
|
||||
|
@ -169,7 +171,7 @@ ve.dm.Surface.prototype.isReadOnly = function () {
|
|||
/**
|
||||
* Initialize the surface model
|
||||
*
|
||||
* @fires contextChange
|
||||
* @fires ve.dm.Surface#contextChange
|
||||
*/
|
||||
ve.dm.Surface.prototype.initialize = function () {
|
||||
this.startHistoryTracking();
|
||||
|
@ -330,6 +332,7 @@ ve.dm.Surface.prototype.getStagingTransactions = function () {
|
|||
* Push another level of staging to the staging stack
|
||||
*
|
||||
* @param {boolean} [allowUndo=false] Allow undo while staging
|
||||
* @fires ve.dm.Surface#history
|
||||
*/
|
||||
ve.dm.Surface.prototype.pushStaging = function ( allowUndo ) {
|
||||
// If we're starting staging stop history tracking
|
||||
|
@ -354,7 +357,7 @@ ve.dm.Surface.prototype.pushStaging = function ( allowUndo ) {
|
|||
/**
|
||||
* Pop a level of staging from the staging stack
|
||||
*
|
||||
* @fires history
|
||||
* @fires ve.dm.Surface#history
|
||||
* @return {ve.dm.Transaction[]|undefined} Staging transactions, or undefined if not staging
|
||||
*/
|
||||
ve.dm.Surface.prototype.popStaging = function () {
|
||||
|
@ -387,7 +390,7 @@ ve.dm.Surface.prototype.popStaging = function () {
|
|||
/**
|
||||
* Apply a level of staging from the staging stack
|
||||
*
|
||||
* @fires history
|
||||
* @fires ve.dm.Surface#history
|
||||
*/
|
||||
ve.dm.Surface.prototype.applyStaging = function () {
|
||||
if ( !this.isStaging() ) {
|
||||
|
@ -459,8 +462,8 @@ ve.dm.Surface.prototype.getInsertionAnnotations = function () {
|
|||
* Set annotations that will be used upon insertion.
|
||||
*
|
||||
* @param {ve.dm.AnnotationSet|null} annotations Insertion annotations to use or null to disable them
|
||||
* @fires insertionAnnotationsChange
|
||||
* @fires contextChange
|
||||
* @fires ve.dm.Surface#insertionAnnotationsChange
|
||||
* @fires ve.dm.Surface#contextChange
|
||||
*/
|
||||
ve.dm.Surface.prototype.setInsertionAnnotations = function ( annotations ) {
|
||||
if ( this.readOnly ) {
|
||||
|
@ -478,8 +481,8 @@ ve.dm.Surface.prototype.setInsertionAnnotations = function ( annotations ) {
|
|||
* Add an annotation to be used upon insertion.
|
||||
*
|
||||
* @param {ve.dm.Annotation|ve.dm.AnnotationSet} annotations Insertion annotation to add
|
||||
* @fires insertionAnnotationsChange
|
||||
* @fires contextChange
|
||||
* @fires ve.dm.Surface#insertionAnnotationsChange
|
||||
* @fires ve.dm.Surface#contextChange
|
||||
*/
|
||||
ve.dm.Surface.prototype.addInsertionAnnotations = function ( annotations ) {
|
||||
if ( this.readOnly ) {
|
||||
|
@ -501,8 +504,8 @@ ve.dm.Surface.prototype.addInsertionAnnotations = function ( annotations ) {
|
|||
* Remove an annotation from those that will be used upon insertion.
|
||||
*
|
||||
* @param {ve.dm.Annotation|ve.dm.AnnotationSet} annotations Insertion annotation to remove
|
||||
* @fires insertionAnnotationsChange
|
||||
* @fires contextChange
|
||||
* @fires ve.dm.Surface#insertionAnnotationsChange
|
||||
* @fires ve.dm.Surface#contextChange
|
||||
*/
|
||||
ve.dm.Surface.prototype.removeInsertionAnnotations = function ( annotations ) {
|
||||
if ( this.readOnly ) {
|
||||
|
@ -618,7 +621,7 @@ ve.dm.Surface.prototype.getLinearFragment = function ( range, noAutoSelect, excl
|
|||
*
|
||||
* Callers should eventually emit a 'history' event after using this method.
|
||||
*
|
||||
* @fires undoStackChange
|
||||
* @fires ve.dm.Surface#undoStackChange
|
||||
*/
|
||||
ve.dm.Surface.prototype.truncateUndoStack = function () {
|
||||
if ( this.undoIndex ) {
|
||||
|
@ -653,7 +656,7 @@ ve.dm.Surface.prototype.startQueueingContextChanges = function () {
|
|||
* is deferred until #stopQueueingContextChanges is called.
|
||||
*
|
||||
* @private
|
||||
* @fires contextChange
|
||||
* @fires ve.dm.Surface#contextChange
|
||||
*/
|
||||
ve.dm.Surface.prototype.emitContextChange = function () {
|
||||
if ( this.queueingContextChanges ) {
|
||||
|
@ -669,7 +672,7 @@ ve.dm.Surface.prototype.emitContextChange = function () {
|
|||
* event immediately.
|
||||
*
|
||||
* @private
|
||||
* @fires contextChange
|
||||
* @fires ve.dm.Surface#contextChange
|
||||
*/
|
||||
ve.dm.Surface.prototype.stopQueueingContextChanges = function () {
|
||||
if ( this.queueingContextChanges ) {
|
||||
|
@ -751,8 +754,9 @@ ve.dm.Surface.prototype.fixupRangeForLinks = function ( range ) {
|
|||
*
|
||||
* @param {ve.dm.Selection} selection New selection
|
||||
*
|
||||
* @fires select
|
||||
* @fires contextChange
|
||||
* @fires ve.dm.Surface#select
|
||||
* @fires ve.dm.Surface#focus
|
||||
* @fires ve.dm.Surface#blur
|
||||
*/
|
||||
ve.dm.Surface.prototype.setSelection = function ( selection ) {
|
||||
var oldSelection = this.selection;
|
||||
|
@ -918,7 +922,6 @@ ve.dm.Surface.prototype.setSelection = function ( selection ) {
|
|||
* @param {ve.dm.Transaction|ve.dm.Transaction[]|null} transactions One or more transactions to
|
||||
* process, or null to process none
|
||||
* @param {ve.dm.Selection} [selection] Selection to apply
|
||||
* @fires contextChange
|
||||
*/
|
||||
ve.dm.Surface.prototype.change = function ( transactions, selection ) {
|
||||
this.changeInternal( transactions, selection, false );
|
||||
|
@ -931,9 +934,8 @@ ve.dm.Surface.prototype.change = function ( transactions, selection ) {
|
|||
* @param {ve.dm.Transaction|ve.dm.Transaction[]|null} transactions
|
||||
* @param {ve.dm.Selection} [selection]
|
||||
* @param {boolean} [skipUndoStack=false] If true, do not modify the undo stack. Used by undo/redo
|
||||
* @fires select
|
||||
* @fires history
|
||||
* @fires contextChange
|
||||
* @fires ve.dm.Surface#select
|
||||
* @fires ve.dm.Surface#history
|
||||
*/
|
||||
ve.dm.Surface.prototype.changeInternal = function ( transactions, selection, skipUndoStack ) {
|
||||
var selectionBefore = this.selection,
|
||||
|
@ -1014,7 +1016,7 @@ ve.dm.Surface.prototype.changeInternal = function ( transactions, selection, ski
|
|||
* Set a history state breakpoint.
|
||||
*
|
||||
* @return {boolean} A breakpoint was added
|
||||
* @fires undoStackChange
|
||||
* @fires ve.dm.Surface#undoStackChange
|
||||
*/
|
||||
ve.dm.Surface.prototype.breakpoint = function () {
|
||||
if ( this.readOnly ) {
|
||||
|
@ -1041,7 +1043,8 @@ ve.dm.Surface.prototype.breakpoint = function () {
|
|||
/**
|
||||
* Step backwards in history.
|
||||
*
|
||||
* @fires undoStackChange
|
||||
* @fires ve.dm.Surface#undoStackChange
|
||||
* @fires ve.dm.Surface#history
|
||||
*/
|
||||
ve.dm.Surface.prototype.undo = function () {
|
||||
if ( !this.canUndo() ) {
|
||||
|
@ -1114,7 +1117,7 @@ ve.dm.Surface.prototype.undo = function () {
|
|||
/**
|
||||
* Step forwards in history.
|
||||
*
|
||||
* @fires undoStackChange
|
||||
* @fires ve.dm.Surface#undoStackChange
|
||||
*/
|
||||
ve.dm.Surface.prototype.redo = function () {
|
||||
if ( !this.canRedo() ) {
|
||||
|
@ -1137,7 +1140,7 @@ ve.dm.Surface.prototype.redo = function () {
|
|||
* other state.
|
||||
*
|
||||
* @param {ve.dm.Transaction} tx Transaction that was processed
|
||||
* @fires documentUpdate
|
||||
* @fires ve.dm.Surface#documentUpdate
|
||||
*/
|
||||
ve.dm.Surface.prototype.onDocumentTransact = function ( tx ) {
|
||||
this.setSelection( this.getSelection().translateByTransactionWithAuthor( tx, this.authorId ) );
|
||||
|
@ -1332,6 +1335,8 @@ ve.dm.Surface.prototype.setAuthorId = function ( authorId ) {
|
|||
|
||||
/**
|
||||
* Store latest transactions into session storage
|
||||
*
|
||||
* @fires ve.dm.Surface#autosaveFailed
|
||||
*/
|
||||
ve.dm.Surface.prototype.storeChanges = function () {
|
||||
if ( this.autosaveFailed ) {
|
||||
|
|
|
@ -126,31 +126,32 @@ OO.mixinClass( ve.dm.SurfaceSynchronizer, ve.dm.RebaseClient );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event authorSelect
|
||||
* @event ve.dm.SurfaceSynchronizer#authorSelect
|
||||
* @param {number} authorId The author whose selection has changed
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event authorChange
|
||||
* @event ve.dm.SurfaceSynchronizer#authorChange
|
||||
* @param {number} authorId The author whose data has changed
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event wrongDoc
|
||||
* @event ve.dm.SurfaceSynchronizer#wrongDoc
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event initDoc
|
||||
* @event ve.dm.SurfaceSynchronizer#initDoc
|
||||
* @param {Error} error Error, if there was a problem initializing the document
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event disconnect
|
||||
* @event ve.dm.SurfaceSynchronizer#disconnect
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event pause
|
||||
* The synchronizer is paused or resumes
|
||||
*
|
||||
* @event ve.dm.SurfaceSynchronizer#pause
|
||||
*/
|
||||
|
||||
/* Methods */
|
||||
|
@ -167,6 +168,8 @@ ve.dm.SurfaceSynchronizer.prototype.destroy = function () {
|
|||
|
||||
/**
|
||||
* Pause sending/receiving changes
|
||||
*
|
||||
* @fires ve.dm.SurfaceSynchronizer#pause
|
||||
*/
|
||||
ve.dm.SurfaceSynchronizer.prototype.pauseChanges = function () {
|
||||
if ( this.paused ) {
|
||||
|
@ -179,6 +182,8 @@ ve.dm.SurfaceSynchronizer.prototype.pauseChanges = function () {
|
|||
|
||||
/**
|
||||
* Resume sending/receiving changes
|
||||
*
|
||||
* @fires ve.dm.SurfaceSynchronizer#pause
|
||||
*/
|
||||
ve.dm.SurfaceSynchronizer.prototype.resumeChanges = function () {
|
||||
if ( !this.paused ) {
|
||||
|
@ -330,7 +335,7 @@ ve.dm.SurfaceSynchronizer.prototype.onSurfaceSelect = function () {
|
|||
*
|
||||
* @param {Object} newSelections Each author (key) maps to a new incoming ve.dm.Selection
|
||||
* @param {ve.dm.Change|ve.dm.Transaction} [changeOrTx] Object to translate over, if any
|
||||
* @fires authorSelect
|
||||
* @fires ve.dm.SurfaceSynchronizer#authorSelect
|
||||
*/
|
||||
ve.dm.SurfaceSynchronizer.prototype.applyNewSelections = function ( newSelections, changeOrTx ) {
|
||||
var change = changeOrTx instanceof ve.dm.Change ? changeOrTx : null,
|
||||
|
@ -394,7 +399,7 @@ ve.dm.SurfaceSynchronizer.prototype.onAuthorDisconnect = function ( authorId ) {
|
|||
* @param {Object} data
|
||||
* @param {number} data.authorId The author ID allocated by the server
|
||||
* @param {string} data.token
|
||||
* @fires wrongDoc
|
||||
* @fires ve.dm.SurfaceSynchronizer#wrongDoc
|
||||
*/
|
||||
ve.dm.SurfaceSynchronizer.prototype.onRegistered = function ( data ) {
|
||||
if ( this.serverId && this.serverId !== data.serverId ) {
|
||||
|
@ -433,7 +438,7 @@ ve.dm.SurfaceSynchronizer.prototype.loadSessionKey = function () {
|
|||
* @param {Object} data
|
||||
* @param {Object} data.history Serialized change representing the server's history
|
||||
* @param {Object} data.authors Object mapping author IDs to author data objects (name/color)
|
||||
* @fires initDoc
|
||||
* @fires ve.dm.SurfaceSynchronizer#initDoc
|
||||
*/
|
||||
ve.dm.SurfaceSynchronizer.prototype.onInitDoc = function ( data ) {
|
||||
if ( this.initialized ) {
|
||||
|
|
|
@ -49,7 +49,7 @@ ve.dm.TableMatrix = function VeDmTableMatrix( tableNode ) {
|
|||
OO.mixinClass( ve.dm.TableMatrix, OO.EventEmitter );
|
||||
|
||||
/**
|
||||
* @event structureChange
|
||||
* @event ve.dm.TableMatrix#structureChange
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -57,7 +57,7 @@ OO.mixinClass( ve.dm.TableMatrix, OO.EventEmitter );
|
|||
*
|
||||
* This is called by ve.dm.TableNode on structural changes.
|
||||
*
|
||||
* @fires structureChange
|
||||
* @fires ve.dm.TableMatrix#structureChange
|
||||
*/
|
||||
ve.dm.TableMatrix.prototype.invalidate = function () {
|
||||
this.matrix = null;
|
||||
|
|
|
@ -55,7 +55,7 @@ OO.initClass( ve.dm.Transaction );
|
|||
* If a property's treatment isn't specified, its value is simply copied without modification.
|
||||
* If an operation type's treatment isn't specified, all properties are copied without modification.
|
||||
*
|
||||
* @type {Object.<string,Object.<string,string|Object.<string, string>>>}
|
||||
* @type {Object.<string,Object>}
|
||||
*/
|
||||
ve.dm.Transaction.static.reversers = {
|
||||
attribute: { from: 'to', to: 'from' }, // Swap .from with .to
|
||||
|
|
|
@ -274,7 +274,7 @@ ve.dm.VisualDiff.prototype.diffList = function ( oldNodes, newNodes ) {
|
|||
* unchanged nodes, or objects where the `node` property is the index for changed nodes.
|
||||
* @param {Object.<number,number|Object>} newToOld Map of newDoc nodes to corresponding oldDoc nodes.
|
||||
* Same format at oldToNew.
|
||||
* @return {(number|string)[]} Record of whether and how each newDoc node has moved
|
||||
* @return {Array.<number|string>} Record of whether and how each newDoc node has moved (0, 'up', 'down')
|
||||
*/
|
||||
ve.dm.VisualDiff.prototype.calculateDiffMoves = function ( oldToNew, newToOld ) {
|
||||
var oldPermuted = [],
|
||||
|
|
|
@ -7,8 +7,7 @@
|
|||
/**
|
||||
* Namespace for all VisualEditor DataModel classes, static methods and static properties.
|
||||
*
|
||||
* @class
|
||||
* @singleton
|
||||
* @namespace
|
||||
*/
|
||||
ve.dm = {
|
||||
// modelRegistry: Initialized in ve.dm.ModelRegistry.js
|
||||
|
|
|
@ -48,7 +48,7 @@ OO.inheritClass( ve.init.sa.Target, ve.init.Target );
|
|||
|
||||
/**
|
||||
* @inheritdoc
|
||||
* @fires surfaceReady
|
||||
* @fires ve.init.Target#surfaceReady
|
||||
*/
|
||||
ve.init.sa.Target.prototype.addSurface = function () {
|
||||
// Parent method
|
||||
|
|
|
@ -8,8 +8,7 @@
|
|||
* Namespace for all VisualEditor stand-alone Initialization classes, static methods and static
|
||||
* properties.
|
||||
*
|
||||
* @class
|
||||
* @singleton
|
||||
* @namespace
|
||||
*/
|
||||
ve.init.sa = {
|
||||
};
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
* use this to check for feature compatibility this file must be ES3-parsable.
|
||||
*
|
||||
* @method VisualEditorSupportCheck
|
||||
* @member global
|
||||
* @memberof ve
|
||||
* @return {boolean} True if the environment should support VisualEditor.
|
||||
*/
|
||||
window.VisualEditorSupportCheck = function () {
|
||||
|
|
|
@ -82,9 +82,9 @@ OO.mixinClass( ve.init.Target, OO.EventEmitter );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event surfaceReady
|
||||
*
|
||||
* Must be fired after the surface is initialized
|
||||
*
|
||||
* @event ve.init.Target#surfaceReady
|
||||
*/
|
||||
|
||||
/* Static Properties */
|
||||
|
@ -184,14 +184,14 @@ ve.init.Target.static.actionGroups = [];
|
|||
/**
|
||||
* List of commands which can be triggered anywhere from within the document
|
||||
*
|
||||
* @type {string[]} List of command names
|
||||
* @type {string[]}
|
||||
*/
|
||||
ve.init.Target.static.documentCommands = [];
|
||||
|
||||
/**
|
||||
* List of commands which can be triggered from within the target element
|
||||
*
|
||||
* @type {string[]} List of command names
|
||||
* @type {string[]}
|
||||
*/
|
||||
ve.init.Target.static.targetCommands = [ 'commandHelp', 'findAndReplace', 'findNext', 'findPrevious' ];
|
||||
|
||||
|
@ -200,14 +200,14 @@ ve.init.Target.static.targetCommands = [ 'commandHelp', 'findAndReplace', 'findN
|
|||
*
|
||||
* Null means all commands in the registry are used (excluding excludeCommands)
|
||||
*
|
||||
* @type {string[]|null} List of command names
|
||||
* @type {string[]|null}
|
||||
*/
|
||||
ve.init.Target.static.includeCommands = null;
|
||||
|
||||
/**
|
||||
* List of commands to exclude from the target entirely
|
||||
*
|
||||
* @type {string[]} List of command names
|
||||
* @type {string[]}
|
||||
*/
|
||||
ve.init.Target.static.excludeCommands = [];
|
||||
|
||||
|
|
|
@ -7,8 +7,7 @@
|
|||
/**
|
||||
* Namespace for all VisualEditor Initialization classes, static methods and static properties.
|
||||
*
|
||||
* @class
|
||||
* @singleton
|
||||
* @namespace
|
||||
*/
|
||||
ve.init = {
|
||||
// platform: Initialized in a file containing a subclass of ve.init.Platform
|
||||
|
|
|
@ -30,29 +30,26 @@ OO.inheritClass( ve.ui.CompletionAction, ve.ui.Action );
|
|||
/* Static Properties */
|
||||
|
||||
/**
|
||||
* Length to which to limit the list of returned completions
|
||||
* @property {number} Length to which to limit the list of returned completions
|
||||
*
|
||||
* @static
|
||||
* @property {number}
|
||||
*/
|
||||
ve.ui.CompletionAction.static.defaultLimit = 8;
|
||||
|
||||
/**
|
||||
* Length of the sequence which triggers the action
|
||||
* @property {number} Length of the trigger sequence for the action
|
||||
*
|
||||
* This many characters will be stripped from the start of the current input by
|
||||
* CompletionWidget when triggered by a sequence, see #getSequenceLength.
|
||||
*
|
||||
* @static
|
||||
* @property {number}
|
||||
*/
|
||||
ve.ui.CompletionAction.static.sequenceLength = 1;
|
||||
|
||||
/**
|
||||
* Whether the current input should be included as a completion automatically
|
||||
* @property {boolean} Whether the current input should be included as a completion automatically
|
||||
*
|
||||
* @static
|
||||
* @property {boolean}
|
||||
*/
|
||||
ve.ui.CompletionAction.static.alwaysIncludeInput = true;
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ ve.ui.FormatAction.prototype.convert = function ( type, attributes ) {
|
|||
fragmentSelection = fragment.getSelection();
|
||||
|
||||
if ( !( fragmentSelection instanceof ve.dm.LinearSelection ) ) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
var fragments = [];
|
||||
|
|
|
@ -28,9 +28,8 @@ OO.inheritClass( ve.ui.LinkAction, ve.ui.Action );
|
|||
ve.ui.LinkAction.static.name = 'link';
|
||||
|
||||
/**
|
||||
* RegExp matching an autolink + trailing space.
|
||||
* @property {RegExp} RegExp matching an autolink + trailing space.
|
||||
*
|
||||
* @property {RegExp}
|
||||
* @private
|
||||
*/
|
||||
ve.ui.LinkAction.static.autolinkRegExp = null; // Initialized below.
|
||||
|
|
|
@ -90,12 +90,6 @@ ve.ui.LinearContextItem = function VeUiLinearContextItem( context, model, config
|
|||
OO.inheritClass( ve.ui.LinearContextItem, ve.ui.ContextItem );
|
||||
OO.mixinClass( ve.ui.ContextItem, OO.ui.mixin.PendingElement );
|
||||
|
||||
/* Events */
|
||||
|
||||
/**
|
||||
* @event command
|
||||
*/
|
||||
|
||||
/* Static Properties */
|
||||
|
||||
ve.ui.LinearContextItem.static.editable = true;
|
||||
|
@ -118,6 +112,7 @@ ve.ui.LinearContextItem.static.embeddable = true;
|
|||
* @localdoc Executes the command related to #static-commandName on the context's surface
|
||||
*
|
||||
* @protected
|
||||
* @fires ve.ui.ContextItem#command
|
||||
*/
|
||||
ve.ui.LinearContextItem.prototype.onEditButtonClick = function () {
|
||||
var command = this.getCommand();
|
||||
|
|
|
@ -102,6 +102,8 @@ ve.ui.MobileActionsContextItem.prototype.onCopyButtonClick = function () {
|
|||
|
||||
/**
|
||||
* Handle delete button click events.
|
||||
*
|
||||
* @fires ve.ui.ContextItem#command
|
||||
*/
|
||||
ve.ui.MobileActionsContextItem.prototype.onDeleteButtonClick = function () {
|
||||
var surface = this.context.getSurface();
|
||||
|
|
|
@ -58,6 +58,7 @@ ve.ui.TableLineContextItem.static.title = null;
|
|||
* @localdoc Executes the command related to #static-commandName on the context's surface
|
||||
*
|
||||
* @protected
|
||||
* @fires ve.ui.ContextItem#command
|
||||
*/
|
||||
ve.ui.TableLineContextItem.prototype.onActionButtonClick = function () {
|
||||
var command = this.getCommand();
|
||||
|
|
|
@ -233,9 +233,7 @@ ve.ui.LinearContext.prototype.removePersistentSource = function ( name ) {
|
|||
};
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*
|
||||
* Also adds the `embeddable` property to each object.
|
||||
* @inheritdoc Also adds the `embeddable` property to each object.
|
||||
*/
|
||||
ve.ui.LinearContext.prototype.getRelatedSources = function () {
|
||||
var surfaceModel = this.surface.getModel(),
|
||||
|
|
|
@ -68,7 +68,7 @@ ve.ui.FragmentDialog.prototype.initialize = function ( data ) {
|
|||
};
|
||||
|
||||
/**
|
||||
* @inheritdoc OO.ui.Dialog
|
||||
* @inheritdoc
|
||||
*/
|
||||
ve.ui.FragmentDialog.prototype.getActionWidgetConfig = function ( config ) {
|
||||
// Mixin method
|
||||
|
|
|
@ -42,7 +42,7 @@ ve.ui.ToolbarDialog.static.padded = true;
|
|||
* For 'inline' the caller will be manually positioning the dialog.
|
||||
*
|
||||
* @static
|
||||
* @type {string} Toolbar position
|
||||
* @type {string}
|
||||
*/
|
||||
ve.ui.ToolbarDialog.static.position = 'above';
|
||||
|
||||
|
|
|
@ -191,7 +191,7 @@ ve.ui.DiffElement.prototype.positionDescriptions = function () {
|
|||
* Process a diff queue, skipping over sequential nodes with no changes
|
||||
*
|
||||
* @param {Array[]} queue Diff queue
|
||||
* @return {(Array|null)[]}
|
||||
* @return {Array.<Array|null>}
|
||||
*/
|
||||
ve.ui.DiffElement.prototype.processQueue = function processQueue( queue ) {
|
||||
var hasChanges = false,
|
||||
|
@ -278,7 +278,7 @@ ve.ui.DiffElement.prototype.processQueue = function processQueue( queue ) {
|
|||
};
|
||||
|
||||
/**
|
||||
* @param {(Array|null)[]} queue Diff queue
|
||||
* @param {Array.<Array|null>} queue Diff queue
|
||||
* @param {HTMLElement} parentNode Parent node to render to
|
||||
* @param {HTMLElement} spacerNode Spacer node template
|
||||
*/
|
||||
|
|
|
@ -40,7 +40,7 @@ ve.ui.PreviewElement = function VeUiPreviewElement( model, config ) {
|
|||
/**
|
||||
* The element rendering has been updated
|
||||
*
|
||||
* @event render
|
||||
* @event ve.ui.PreviewElement#render
|
||||
*/
|
||||
|
||||
/* Inheritance */
|
||||
|
@ -144,7 +144,7 @@ ve.ui.PreviewElement.prototype.updatePreview = function () {
|
|||
/**
|
||||
* Cleanup and emit events after render
|
||||
*
|
||||
* @fires render
|
||||
* @fires ve.ui.PreviewElement#render
|
||||
*/
|
||||
ve.ui.PreviewElement.prototype.afterRender = function () {
|
||||
// Cleanup
|
||||
|
|
|
@ -123,8 +123,9 @@ ve.ui.AnnotationInspector.prototype.getMatchingAnnotations = function ( fragment
|
|||
} );
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc ve.ui.FragmentWindow
|
||||
* @see ve.ui.FragmentWindow
|
||||
*/
|
||||
ve.ui.AnnotationInspector.prototype.isEditing = function () {
|
||||
// If initialSelection isn't set yet, default to assume we are editing,
|
||||
|
|
|
@ -117,7 +117,7 @@ ve.ui.FragmentInspector.prototype.getActionProcess = function ( action ) {
|
|||
};
|
||||
|
||||
/**
|
||||
* @inheritdoc OO.ui.Dialog
|
||||
* @inheritdoc
|
||||
*/
|
||||
ve.ui.FragmentInspector.prototype.getActionWidgetConfig = function ( config ) {
|
||||
// Mixin method
|
||||
|
|
|
@ -30,7 +30,7 @@ OO.initClass( ve.ui.Action );
|
|||
/* Static Properties */
|
||||
|
||||
/**
|
||||
* List of allowed methods for the action.
|
||||
* @property {string[]} List of allowed methods for the action.
|
||||
*
|
||||
* To avoid use of methods not intended to be executed via surface.execute(), the allowed methods
|
||||
* must be listed here. This information is checked by ve.ui.Surface before executing an action.
|
||||
|
@ -42,7 +42,6 @@ OO.initClass( ve.ui.Action );
|
|||
* be carried out.
|
||||
*
|
||||
* @static
|
||||
* @property {string[]}
|
||||
* @inheritable
|
||||
*/
|
||||
ve.ui.Action.static.methods = [];
|
||||
|
|
|
@ -56,7 +56,7 @@ OO.mixinClass( ve.ui.Context, OO.ui.mixin.GroupElement );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event resize
|
||||
* @event ve.ui.Context#resize
|
||||
*/
|
||||
|
||||
/* Static Properties */
|
||||
|
@ -224,7 +224,7 @@ ve.ui.Context.prototype.onContextItemCommand = function () {};
|
|||
*
|
||||
* @param {boolean} [show] Show the context, omit to toggle
|
||||
* @return {jQuery.Promise} Promise resolved when context is finished showing/hiding
|
||||
* @fires resize
|
||||
* @fires ve.ui.Context#resize
|
||||
*/
|
||||
ve.ui.Context.prototype.toggle = function ( show ) {
|
||||
show = show === undefined ? !this.visible : !!show;
|
||||
|
@ -241,7 +241,7 @@ ve.ui.Context.prototype.toggle = function ( show ) {
|
|||
*
|
||||
* @return {ve.ui.Context}
|
||||
* @chainable
|
||||
* @fires resize
|
||||
* @fires ve.ui.Context#resize
|
||||
*/
|
||||
ve.ui.Context.prototype.updateDimensions = function () {
|
||||
// Override in subclass if context is positioned relative to content
|
||||
|
|
|
@ -50,7 +50,9 @@ OO.inheritClass( ve.ui.ContextItem, OO.ui.Widget );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event command
|
||||
* The context executed a ve.ui.Command
|
||||
*
|
||||
* @event ve.ui.ContextItem#command
|
||||
*/
|
||||
|
||||
/* Static Properties */
|
||||
|
|
|
@ -34,8 +34,9 @@ ve.ui.FragmentWindow.prototype.getFragment = function () {
|
|||
return this.fragment;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-param, jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc OO.ui.Dialog
|
||||
* @see OO.ui.Dialog
|
||||
*/
|
||||
ve.ui.FragmentWindow.prototype.getActionWidgetConfig = function ( config ) {
|
||||
if ( config.action === 'done' && OO.ui.isMobile() ) {
|
||||
|
@ -48,8 +49,9 @@ ve.ui.FragmentWindow.prototype.getActionWidgetConfig = function ( config ) {
|
|||
return config;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-param, jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc OO.ui.Window
|
||||
* @see OO.ui.Window
|
||||
* @throws {Error} If fragment was not provided through data parameter
|
||||
*/
|
||||
ve.ui.FragmentWindow.prototype.getSetupProcess = function ( data, process ) {
|
||||
|
@ -72,8 +74,9 @@ ve.ui.FragmentWindow.prototype.getSetupProcess = function ( data, process ) {
|
|||
}, this );
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-param, jsdoc/require-returns
|
||||
/**
|
||||
* @inheritdoc OO.ui.Window
|
||||
* @see OO.ui.Window
|
||||
*/
|
||||
ve.ui.FragmentWindow.prototype.getTeardownProcess = function ( data, process ) {
|
||||
ve.track( 'activity.' + this.constructor.static.name, { action: 'dialog-' + ( data && data.action || 'abort' ) } );
|
||||
|
|
|
@ -74,9 +74,6 @@ ve.ui.NodeWindow.prototype.getSelectedNode = function () {
|
|||
return null;
|
||||
};
|
||||
|
||||
/**
|
||||
* @inheritdoc OO.ui.Window
|
||||
*/
|
||||
ve.ui.NodeWindow.prototype.getSetupProcess = function ( data, process ) {
|
||||
data = data || {};
|
||||
return process.next( function () {
|
||||
|
@ -84,9 +81,6 @@ ve.ui.NodeWindow.prototype.getSetupProcess = function ( data, process ) {
|
|||
}, this );
|
||||
};
|
||||
|
||||
/**
|
||||
* @inheritdoc OO.ui.Window
|
||||
*/
|
||||
ve.ui.NodeWindow.prototype.getTeardownProcess = function ( data, process ) {
|
||||
data = data || {};
|
||||
return process.next( function () {
|
||||
|
|
|
@ -83,11 +83,11 @@ ve.ui.PositionedTargetToolbar.prototype.detach = function () {
|
|||
};
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*
|
||||
* While toolbar floating is enabled,
|
||||
* the toolbar will stick to the top of the screen unless it would be over or under the last visible
|
||||
* branch node in the root of the document being edited, at which point it will stop just above it.
|
||||
*
|
||||
* @inheritdoc
|
||||
*/
|
||||
ve.ui.PositionedTargetToolbar.prototype.onWindowResize = function () {
|
||||
ve.ui.Toolbar.super.prototype.onWindowResize.call( this );
|
||||
|
|
|
@ -37,6 +37,14 @@ ve.ui.SequenceRegistry.prototype.register = function ( sequence ) {
|
|||
ve.ui.SequenceRegistry.super.prototype.register.call( this, sequence.getName(), sequence );
|
||||
};
|
||||
|
||||
/**
|
||||
* Matching sequence and corresponding range
|
||||
*
|
||||
* @type {Object} Match
|
||||
* @property {ve.ui.Sequence} sequence
|
||||
* @property {ve.Range} range
|
||||
*/
|
||||
|
||||
/**
|
||||
* Find sequence matches a given offset in the data
|
||||
*
|
||||
|
@ -44,9 +52,7 @@ ve.ui.SequenceRegistry.prototype.register = function ( sequence ) {
|
|||
* @param {number} offset
|
||||
* @param {boolean} [isPaste] Whether this in the context of a paste
|
||||
* @param {boolean} [isDelete] Whether this is after content being deleted
|
||||
* @return {{sequence:ve.ui.Sequence,range:ve.Range}[]}
|
||||
* Array of matching sequences, and the corresponding range of the match
|
||||
* for each.
|
||||
* @return {Match[]} Array of matching sequences, and the corresponding range of the match for each.
|
||||
*/
|
||||
ve.ui.SequenceRegistry.prototype.findMatching = function ( data, offset, isPaste, isDelete ) {
|
||||
// To avoid blowup when matching RegExp sequences, we're going to grab
|
||||
|
|
|
@ -159,38 +159,38 @@ OO.inheritClass( ve.ui.Surface, OO.ui.Widget );
|
|||
/**
|
||||
* When a surface has been initialized
|
||||
*
|
||||
* @event ready
|
||||
* @event ve.ui.Surface#ready
|
||||
*/
|
||||
|
||||
/**
|
||||
* When a surface is destroyed.
|
||||
*
|
||||
* @event destroy
|
||||
* @event ve.ui.Surface#destroy
|
||||
*/
|
||||
|
||||
/**
|
||||
* The surface was scrolled programmatically
|
||||
* as a result of a native selection change
|
||||
*
|
||||
* @event scroll
|
||||
* @event ve.ui.Surface#scroll
|
||||
*/
|
||||
|
||||
/**
|
||||
* The surface has been submitted by user action, e.g. Ctrl+Enter
|
||||
*
|
||||
* @event submit
|
||||
* @event ve.ui.Surface#submit
|
||||
*/
|
||||
|
||||
/**
|
||||
* The surface has been cancelled by user action, e.g. Escape
|
||||
*
|
||||
* @event cancel
|
||||
* @event ve.ui.Surface#cancel
|
||||
*/
|
||||
|
||||
/**
|
||||
* The surface read-only state has changed
|
||||
*
|
||||
* @event readOnly
|
||||
* @event ve.ui.Surface#readOnly
|
||||
* @param {boolean} readOnly The surface is read-only
|
||||
*/
|
||||
|
||||
|
@ -201,7 +201,7 @@ OO.inheritClass( ve.ui.Surface, OO.ui.Widget );
|
|||
*
|
||||
* @return {ve.ui.Surface}
|
||||
* @chainable
|
||||
* @fires destroy
|
||||
* @fires ve.ui.Surface#destroy
|
||||
*/
|
||||
ve.ui.Surface.prototype.destroy = function () {
|
||||
// Destroy the ce.Surface, the ui.Context and window managers
|
||||
|
@ -234,6 +234,7 @@ ve.ui.Surface.prototype.destroy = function () {
|
|||
*
|
||||
* @return {ve.ui.Surface}
|
||||
* @chainable
|
||||
* @fires ve.ui.Surface#ready
|
||||
*/
|
||||
ve.ui.Surface.prototype.initialize = function () {
|
||||
$( OO.ui.getTeleportTarget() ).append( this.globalOverlay.$element );
|
||||
|
@ -458,6 +459,7 @@ ve.ui.Surface.prototype.setDisabled = function ( disabled ) {
|
|||
* Set the read-only state of the surface
|
||||
*
|
||||
* @param {boolean} readOnly Make surface read-only
|
||||
* @fires ve.ui.Surface#readOnly
|
||||
*/
|
||||
ve.ui.Surface.prototype.setReadOnly = function ( readOnly ) {
|
||||
this.readOnly = !!readOnly;
|
||||
|
@ -523,7 +525,7 @@ ve.ui.Surface.prototype.onModelSelect = function () {
|
|||
*
|
||||
* @param {ve.dm.Selection} [selectionModel] Optional selection model, defaults to current selection
|
||||
* @param {Object} [scrollConfig] Scroll config options, passed to ve.scrollIntoView
|
||||
* @fires scroll
|
||||
* @fires ve.ui.Surface#scroll
|
||||
*/
|
||||
ve.ui.Surface.prototype.scrollSelectionIntoView = function ( selectionModel, scrollConfig ) {
|
||||
selectionModel = selectionModel || this.getModel().getSelection();
|
||||
|
|
|
@ -42,20 +42,20 @@ OO.inheritClass( ve.ui.Toolbar, OO.ui.Toolbar );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event updateState
|
||||
* @event ve.ui.Toolbar#updateState
|
||||
* @param {ve.dm.SurfaceFragment|null} fragment Surface fragment. Null if no surface is active.
|
||||
* @param {Object|null} direction Context direction with 'inline' & 'block' properties if a surface exists. Null if no surface is active.
|
||||
* @param {string[]} activeDialogs List of names of currently open dialogs.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event surfaceChange
|
||||
* @event ve.ui.Toolbar#surfaceChange
|
||||
* @param {ve.ui.Surface|null} oldSurface Old surface being controlled
|
||||
* @param {ve.ui.Surface|null} newSurface New surface being controlled
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event resize
|
||||
* @event ve.ui.Toolbar#resize
|
||||
*/
|
||||
|
||||
/* Methods */
|
||||
|
@ -65,6 +65,8 @@ OO.inheritClass( ve.ui.Toolbar, OO.ui.Toolbar );
|
|||
*
|
||||
* @param {Object} groups List of tool group configurations
|
||||
* @param {ve.ui.Surface} [surface] Surface to attach to
|
||||
* @fires ve.ui.Toolbar#surfaceChange
|
||||
* @fires ve.ui.Toolbar#resize
|
||||
*/
|
||||
ve.ui.Toolbar.prototype.setup = function ( groups, surface ) {
|
||||
var oldSurface,
|
||||
|
@ -160,7 +162,7 @@ ve.ui.Toolbar.prototype.onInspectorOrDialogOpeningOrClosing = function ( win, op
|
|||
/**
|
||||
* Handle context changes on the surface.
|
||||
*
|
||||
* @fires updateState
|
||||
* @fires ve.ui.Toolbar#updateState
|
||||
*/
|
||||
ve.ui.Toolbar.prototype.onContextChange = function () {
|
||||
this.updateToolStateDebounced();
|
||||
|
@ -168,6 +170,8 @@ ve.ui.Toolbar.prototype.onContextChange = function () {
|
|||
|
||||
/**
|
||||
* Update the state of the tools
|
||||
*
|
||||
* @fires ve.ui.Toolbar#updateState
|
||||
*/
|
||||
ve.ui.Toolbar.prototype.updateToolState = function () {
|
||||
if ( !this.getSurface() ) {
|
||||
|
|
|
@ -62,21 +62,17 @@ OO.initClass( ve.ui.Trigger );
|
|||
/* Static Properties */
|
||||
|
||||
/**
|
||||
* Symbolic modifier key names.
|
||||
*
|
||||
* The order of this array affects the canonical order of a trigger string.
|
||||
* @property {string[]} Symbolic modifier key names. The order of this array affects the canonical order of a trigger string.
|
||||
*
|
||||
* @static
|
||||
* @property {string[]}
|
||||
* @inheritable
|
||||
*/
|
||||
ve.ui.Trigger.static.modifierKeys = [ 'meta', 'ctrl', 'alt', 'shift' ];
|
||||
|
||||
/**
|
||||
* Symbolic primary key names.
|
||||
* @property {string[]} Symbolic primary key names.
|
||||
*
|
||||
* @static
|
||||
* @property {string[]}
|
||||
* @inheritable
|
||||
*/
|
||||
ve.ui.Trigger.static.primaryKeys = [
|
||||
|
@ -169,10 +165,9 @@ ve.ui.Trigger.static.primaryKeys = [
|
|||
];
|
||||
|
||||
/**
|
||||
* Mappings to use when rendering string for a specific platform.
|
||||
* @property {Object} Mappings to use when rendering string for a specific platform.
|
||||
*
|
||||
* @static
|
||||
* @property {Object}
|
||||
* @inheritable
|
||||
*/
|
||||
ve.ui.Trigger.static.platformMapping = {
|
||||
|
@ -201,10 +196,9 @@ ve.ui.Trigger.static.platformMapping = {
|
|||
};
|
||||
|
||||
/**
|
||||
* Symbol to use when concatenating keys in a sequence.
|
||||
* @property {Object} Symbol to use when concatenating keys in a sequence.
|
||||
*
|
||||
* @static
|
||||
* @property {Object}
|
||||
* @inheritable
|
||||
*/
|
||||
ve.ui.Trigger.static.platformStringJoiners = {
|
||||
|
@ -213,10 +207,9 @@ ve.ui.Trigger.static.platformStringJoiners = {
|
|||
};
|
||||
|
||||
/**
|
||||
* Special keys which have i18n messages
|
||||
* @property {string[]} Special keys which have i18n messages
|
||||
*
|
||||
* @static
|
||||
* @property {string[]}
|
||||
* @inheritable
|
||||
*/
|
||||
ve.ui.Trigger.static.translatableKeys = [
|
||||
|
@ -242,10 +235,9 @@ ve.ui.Trigger.static.translatableKeys = [
|
|||
];
|
||||
|
||||
/**
|
||||
* Aliases for modifier or primary key names.
|
||||
* @property {Object} Aliases for modifier or primary key names.
|
||||
*
|
||||
* @static
|
||||
* @property {Object}
|
||||
* @inheritable
|
||||
*/
|
||||
ve.ui.Trigger.static.keyAliases = {
|
||||
|
@ -272,10 +264,9 @@ ve.ui.Trigger.static.keyAliases = {
|
|||
};
|
||||
|
||||
/**
|
||||
* Mapping of key codes and symbolic key names.
|
||||
* @property {Object} Mapping of key codes and symbolic key names.
|
||||
*
|
||||
* @static
|
||||
* @property {Object}
|
||||
* @inheritable
|
||||
*/
|
||||
ve.ui.Trigger.static.primaryKeyMap = {
|
||||
|
|
|
@ -7,8 +7,7 @@
|
|||
/**
|
||||
* Namespace for all VisualEditor UserInterface classes, static methods and static properties.
|
||||
*
|
||||
* @class
|
||||
* @singleton
|
||||
* @namespace
|
||||
*/
|
||||
ve.ui = {
|
||||
// 'actionFactory' instantiated in ve.ui.ActionFactory.js
|
||||
|
|
|
@ -68,12 +68,12 @@ OO.inheritClass( ve.ui.DimensionsWidget, OO.ui.Widget );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event widthChange
|
||||
* @event ve.ui.DimensionsWidget#widthChange
|
||||
* @param {string} value The new width
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event heightChange
|
||||
* @event ve.ui.DimensionsWidget#heightChange
|
||||
* @param {string} value The new width
|
||||
*/
|
||||
|
||||
|
@ -83,7 +83,7 @@ OO.inheritClass( ve.ui.DimensionsWidget, OO.ui.Widget );
|
|||
* Respond to width change, propagate the input change event
|
||||
*
|
||||
* @param {string} value The new changed value
|
||||
* @fires widthChange
|
||||
* @fires ve.ui.DimensionsWidget#widthChange
|
||||
*/
|
||||
ve.ui.DimensionsWidget.prototype.onWidthChange = function ( value ) {
|
||||
this.emit( 'widthChange', value );
|
||||
|
@ -93,7 +93,7 @@ ve.ui.DimensionsWidget.prototype.onWidthChange = function ( value ) {
|
|||
* Respond to height change, propagate the input change event
|
||||
*
|
||||
* @param {string} value The new changed value
|
||||
* @fires heightChange
|
||||
* @fires ve.ui.DimensionsWidget#heightChange
|
||||
*/
|
||||
ve.ui.DimensionsWidget.prototype.onHeightChange = function ( value ) {
|
||||
this.emit( 'heightChange', value );
|
||||
|
|
|
@ -113,7 +113,7 @@ OO.inheritClass( ve.ui.LanguageInputWidget, OO.ui.Widget );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event change
|
||||
* @event ve.ui.LanguageInputWidget#change
|
||||
* @param {string} lang Language code
|
||||
* @param {string} dir Directionality
|
||||
*/
|
||||
|
@ -159,7 +159,7 @@ ve.ui.LanguageInputWidget.prototype.onChange = function () {
|
|||
*
|
||||
* @param {string|null} lang Language code
|
||||
* @param {string|null} dir Directionality
|
||||
* @fires change
|
||||
* @fires ve.ui.LanguageInputWidget#change
|
||||
* @return {ve.ui.LanguageInputWidget}
|
||||
* @chainable
|
||||
*/
|
||||
|
|
|
@ -38,10 +38,9 @@ OO.inheritClass( ve.ui.LinkAnnotationWidget, OO.ui.Widget );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event change
|
||||
*
|
||||
* A change event is emitted when the annotation value of the input changes.
|
||||
*
|
||||
* @event ve.ui.LinkAnnotationWidget#change
|
||||
* @param {ve.dm.LinkAnnotation|null} annotation
|
||||
*/
|
||||
|
||||
|
@ -147,6 +146,7 @@ ve.ui.LinkAnnotationWidget.prototype.onTextChange = function ( value ) {
|
|||
* @param {boolean} [fromText] Annotation was generated from text input
|
||||
* @return {ve.ui.LinkAnnotationWidget}
|
||||
* @chainable
|
||||
* @fires ve.ui.LinkAnnotationWidget#change
|
||||
*/
|
||||
ve.ui.LinkAnnotationWidget.prototype.setAnnotation = function ( annotation, fromText ) {
|
||||
if ( ve.compare(
|
||||
|
|
|
@ -124,17 +124,17 @@ OO.inheritClass( ve.ui.MediaSizeWidget, OO.ui.Widget );
|
|||
/* Events */
|
||||
|
||||
/**
|
||||
* @event change
|
||||
* @event ve.ui.MediaSizeWidget#change
|
||||
* @param {Object} dimensions Width and height dimensions
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event valid
|
||||
* @event ve.ui.MediaSizeWidget#valid
|
||||
* @param {boolean} isValid Current dimensions are valid
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event changeSizeType
|
||||
* @event ve.ui.MediaSizeWidget#changeSizeType
|
||||
* @param {string} sizeType 'default', 'custom' or 'scale'
|
||||
*/
|
||||
|
||||
|
@ -197,7 +197,7 @@ ve.ui.MediaSizeWidget.prototype.onScalableDefaultSizeChange = function ( isDefau
|
|||
*
|
||||
* @param {string} type The input that was updated, 'width' or 'height'
|
||||
* @param {string} value The new value of the input
|
||||
* @fires change
|
||||
* @fires ve.ui.MediaSizeWidget#change
|
||||
*/
|
||||
ve.ui.MediaSizeWidget.prototype.onDimensionsChange = function ( type, value ) {
|
||||
if ( +value === 0 && !this.noDefaultDimensions ) {
|
||||
|
@ -233,7 +233,7 @@ ve.ui.MediaSizeWidget.prototype.onScaleChange = function () {
|
|||
* Respond to size type change
|
||||
*
|
||||
* @param {OO.ui.OptionWidget} item Selected size type item
|
||||
* @fires changeSizeType
|
||||
* @fires ve.ui.MediaSizeWidget#changeSizeType
|
||||
*/
|
||||
ve.ui.MediaSizeWidget.prototype.onSizeTypeChoose = function ( item ) {
|
||||
var selectedType = item.getData(),
|
||||
|
@ -463,7 +463,7 @@ ve.ui.MediaSizeWidget.prototype.updateDisabled = function () {
|
|||
* Updates the current dimensions in the inputs, either one at a time or both
|
||||
*
|
||||
* @param {Object} dimensions Dimensions with width and height
|
||||
* @fires change
|
||||
* @fires ve.ui.MediaSizeWidget#change
|
||||
*/
|
||||
ve.ui.MediaSizeWidget.prototype.setCurrentDimensions = function ( dimensions ) {
|
||||
// Recursion protection
|
||||
|
@ -509,6 +509,7 @@ ve.ui.MediaSizeWidget.prototype.setCurrentDimensions = function ( dimensions ) {
|
|||
* class if needed.
|
||||
*
|
||||
* @return {boolean} Current dimensions are valid
|
||||
* @fires ve.ui.MediaSizeWidget#valid
|
||||
*/
|
||||
ve.ui.MediaSizeWidget.prototype.validateDimensions = function () {
|
||||
var isValid = this.isValid();
|
||||
|
@ -517,7 +518,7 @@ ve.ui.MediaSizeWidget.prototype.validateDimensions = function () {
|
|||
this.valid = isValid;
|
||||
this.errorLabel.toggle( !isValid );
|
||||
this.dimensions.setValidityFlag();
|
||||
// Emit change event
|
||||
// Emit validation change event
|
||||
this.emit( 'valid', this.valid );
|
||||
}
|
||||
return isValid;
|
||||
|
|
|
@ -73,25 +73,25 @@ OO.mixinClass( ve.ui.TargetWidget, OO.ui.mixin.PendingElement );
|
|||
/**
|
||||
* The target's surface has been changed.
|
||||
*
|
||||
* @event change
|
||||
* @event ve.ui.TargetWidget#change
|
||||
*/
|
||||
|
||||
/**
|
||||
* The target's surface has been submitted, e.g. Ctrl+Enter
|
||||
*
|
||||
* @event submit
|
||||
* @event ve.ui.TargetWidget#submit
|
||||
*/
|
||||
|
||||
/**
|
||||
* The target's surface has been cancelled, e.g. Escape
|
||||
*
|
||||
* @event cancel
|
||||
* @event ve.ui.TargetWidget#cancel
|
||||
*/
|
||||
|
||||
/**
|
||||
* A document has been attached to the target, and a toolbar and surface created.
|
||||
*
|
||||
* @event setup
|
||||
* @event ve.ui.TargetWidget#setup
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -114,6 +114,9 @@ ve.ui.TargetWidget.prototype.createTarget = function () {
|
|||
* This replaces the entire surface in the target.
|
||||
*
|
||||
* @param {ve.dm.Document} doc
|
||||
* @fires ve.ui.TargetWidget#change
|
||||
* @fires ve.ui.TargetWidget#setup
|
||||
* @fires ve.ce.Surface#position
|
||||
*/
|
||||
ve.ui.TargetWidget.prototype.setDocument = function ( doc ) {
|
||||
// Destroy the previous surface
|
||||
|
@ -155,7 +158,7 @@ ve.ui.TargetWidget.prototype.setDocument = function ( doc ) {
|
|||
/**
|
||||
* Handle surface submit events
|
||||
*
|
||||
* @fires submit
|
||||
* @fires ve.ui.TargetWidget#submit
|
||||
*/
|
||||
ve.ui.TargetWidget.prototype.onSurfaceSubmit = function () {
|
||||
var handled = this.emit( 'submit' );
|
||||
|
@ -171,7 +174,7 @@ ve.ui.TargetWidget.prototype.onSurfaceSubmit = function () {
|
|||
/**
|
||||
* Handle surface cancel events
|
||||
*
|
||||
* @fires cancel
|
||||
* @fires ve.ui.TargetWidget#cancel
|
||||
*/
|
||||
ve.ui.TargetWidget.prototype.onSurfaceCancel = function () {
|
||||
var handled = this.emit( 'cancel' );
|
||||
|
|
|
@ -33,7 +33,7 @@ OO.mixinClass( ve.Document, OO.EventEmitter );
|
|||
* to be attached too (and the event is emitted for descendants first, and for siblings
|
||||
* in their order in the children list)
|
||||
*
|
||||
* @event nodeAttached
|
||||
* @event ve.Document#nodeAttached
|
||||
* @param {ve.Node} node The node that has been attached
|
||||
*/
|
||||
|
||||
|
@ -42,7 +42,7 @@ OO.mixinClass( ve.Document, OO.EventEmitter );
|
|||
* to be detached too (and the event is emitted for descendants first, and for siblings
|
||||
* in their order in the children list)
|
||||
*
|
||||
* @event nodeDetached
|
||||
* @event ve.Document#nodeDetached
|
||||
* @param {ve.Node} node The node that has been detached
|
||||
*/
|
||||
|
||||
|
@ -582,6 +582,7 @@ ve.Document.prototype.rangeInsideOneLeafNode = function ( range ) {
|
|||
* The node and all its children are guaranteed to be attached
|
||||
*
|
||||
* @param {ve.Node} node The node attached
|
||||
* @fires ve.Document#nodeAttached
|
||||
*/
|
||||
ve.Document.prototype.nodeAttached = function ( node ) {
|
||||
this.emit( 'nodeAttached', node );
|
||||
|
@ -593,6 +594,7 @@ ve.Document.prototype.nodeAttached = function ( node ) {
|
|||
* The node and all its children are guaranteed to be attached
|
||||
*
|
||||
* @param {ve.Node} node The node detached
|
||||
* @fires ve.Document#nodeDetached
|
||||
*/
|
||||
ve.Document.prototype.nodeDetached = function ( node ) {
|
||||
this.emit( 'nodeDetached', node );
|
||||
|
|
|
@ -137,6 +137,7 @@ ve.EventSequencer.prototype.attach = function ( $node ) {
|
|||
return this;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line jsdoc/require-returns-check
|
||||
/**
|
||||
* Detach from a node (if attached), to stop listen to its jQuery events
|
||||
*
|
||||
|
|
|
@ -21,12 +21,12 @@ ve.Node = function VeNode() {
|
|||
};
|
||||
|
||||
/**
|
||||
* @event attach
|
||||
* @event ve.Node#attach
|
||||
* @param {ve.Node} New parent
|
||||
*/
|
||||
|
||||
/**
|
||||
* @event detach
|
||||
* @event ve.Node#detach
|
||||
* @param {ve.Node} Old parent
|
||||
*/
|
||||
|
||||
|
@ -36,7 +36,7 @@ ve.Node = function VeNode() {
|
|||
* The root will be consistent with that set in descendants and ancestors, but other parts of the
|
||||
* tree may be inconsistent.
|
||||
*
|
||||
* @event root
|
||||
* @event ve.Node#root
|
||||
* @param {ve.Node} New root
|
||||
*/
|
||||
|
||||
|
@ -46,7 +46,7 @@ ve.Node = function VeNode() {
|
|||
* The root will be consistent with that set in descendants and ancestors, but other parts of the
|
||||
* tree may be inconsistent.
|
||||
*
|
||||
* @event unroot
|
||||
* @event ve.Node#unroot
|
||||
* @param {ve.Node} Old root
|
||||
*/
|
||||
|
||||
|
@ -345,8 +345,8 @@ ve.Node.prototype.getRoot = function () {
|
|||
* This method is overridden by nodes with children.
|
||||
*
|
||||
* @param {ve.Node|null} root Node to use as root
|
||||
* @fires root
|
||||
* @fires unroot
|
||||
* @fires ve.Node#root
|
||||
* @fires ve.Node#unroot
|
||||
*/
|
||||
ve.Node.prototype.setRoot = function ( root ) {
|
||||
var oldRoot = this.root;
|
||||
|
@ -398,7 +398,7 @@ ve.Node.prototype.setDocument = function ( doc ) {
|
|||
* Attach the node to another as a child.
|
||||
*
|
||||
* @param {ve.Node} parent Node to attach to
|
||||
* @fires attach
|
||||
* @fires ve.Node#attach
|
||||
*/
|
||||
ve.Node.prototype.attach = function ( parent ) {
|
||||
this.parent = parent;
|
||||
|
@ -410,7 +410,7 @@ ve.Node.prototype.attach = function ( parent ) {
|
|||
/**
|
||||
* Detach the node from its parent.
|
||||
*
|
||||
* @fires detach
|
||||
* @fires ve.Node#detach
|
||||
*/
|
||||
ve.Node.prototype.detach = function () {
|
||||
var parent = this.parent;
|
||||
|
|
|
@ -8,16 +8,10 @@
|
|||
|
||||
/**
|
||||
* @property {boolean} debug
|
||||
* @member ve
|
||||
* @memberof ve
|
||||
*/
|
||||
ve.debug = true;
|
||||
|
||||
/**
|
||||
* @class ve.debug
|
||||
* @override ve
|
||||
* @singleton
|
||||
*/
|
||||
|
||||
/* Methods */
|
||||
|
||||
/**
|
||||
|
|
|
@ -7,8 +7,7 @@
|
|||
/**
|
||||
* Namespace for all VisualEditor classes, static methods and static properties.
|
||||
*
|
||||
* @class ve
|
||||
* @singleton
|
||||
* @namespace ve
|
||||
*/
|
||||
window.ve = {};
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* and reliability. VisualEditor does not transmit these events by default, but it provides a
|
||||
* generic interface for routing these events to an analytics framework.
|
||||
*
|
||||
* @member ve
|
||||
* @memberof ve
|
||||
* @param {string} topic Event name
|
||||
* @param {Object} [data] Additional data describing the event, encoded as an object
|
||||
*/
|
||||
|
@ -33,7 +33,7 @@
|
|||
* handler was registered, with the topic, event data payload, and event timestamp as the first,
|
||||
* second, and third arguments, respectively.
|
||||
*
|
||||
* @member ve
|
||||
* @memberof ve
|
||||
* @param {string} topic Handle events whose name starts with this string prefix
|
||||
* @param {Function} callback Handler to call for each matching tracked event
|
||||
*/
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
/**
|
||||
* @method
|
||||
* @inheritdoc OO.ui.Element#scrollIntoView
|
||||
* @see OO.ui.Element#scrollIntoView
|
||||
*/
|
||||
ve.scrollIntoView = OO.ui.Element.static.scrollIntoView.bind( OO.ui.Element.static );
|
||||
|
||||
|
|
|
@ -4,10 +4,6 @@
|
|||
* @copyright See AUTHORS.txt
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class ve
|
||||
*/
|
||||
|
||||
/**
|
||||
* Checks if an object is an instance of one or more classes.
|
||||
*
|
||||
|
@ -174,13 +170,13 @@ ve.copy = OO.copy;
|
|||
|
||||
/**
|
||||
* @method
|
||||
* @inheritdoc OO.ui#debounce
|
||||
* @see OO.ui#debounce
|
||||
*/
|
||||
ve.debounce = OO.ui.debounce;
|
||||
|
||||
/**
|
||||
* @method
|
||||
* @inheritdoc OO.ui#throttle
|
||||
* @see OO.ui#throttle
|
||||
*/
|
||||
ve.throttle = OO.ui.throttle;
|
||||
|
||||
|
|
|
@ -4,10 +4,6 @@
|
|||
* @copyright See AUTHORS.txt
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class ve
|
||||
*/
|
||||
|
||||
/**
|
||||
* Check whether a given DOM element has a block element type.
|
||||
*
|
||||
|
|
正在加载...
在新工单中引用