Astro Classes

This commit is contained in:
2015-08-14 21:06:23 +08:00
parent d3f924adf3
commit 0a25f87965
157 changed files with 11676 additions and 2 deletions

View File

@@ -0,0 +1,154 @@
(function ()
{
var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
/** @type {System.utils.IKey} */
var IKey = __import( "System.utils.IKey" );
/** @type {System.utils.DataKey} */
var DataKey = __import( "System.utils.DataKey" );
/** @type {Dandelion.IDOMElement} */
var IDOMElement = __import( "Dandelion.IDOMElement" );
/** @type {Dandelion} */
var Dand = __import( "Dandelion" );
/** @type {Components.MessageBox} */
var MessageBox = __import( "Components.MessageBox" );
var compileProp = ns[ NS_INVOKE ]( "compileProp" );
var spoiler = function(insertSnippet, snippetWrap, createContext, override)
{
var temp, i, j
, handler = function ()
{
// Input fields
var v_snippetInput = Dand.wrap('textarea', null, "v_snippet_input")
, input_title = Dand.wrap('input', null, "v_snippet_input_single", null, new IKey("type", "text"))
, input_expanded = Dand.wrapna('input', new IKey("type", "checkbox"))
if (this._stage)
{
v_snippetInput.value = this._content;
input_title.value = this._title;
input_expanded.checked = (this._expanded == "on");
}
// Popup MessageBox
new MessageBox("Insert spoiler content"
, Dand.wrape([
Dand.wrapc("v_instruction flsf", "Title")
, input_title
, Dand.wrapc("v_instruction flsf", "Content")
, v_snippetInput
, Dand.wrape([ input_expanded, Dand.textNode( "Expanded" ) ])
]
)
, "OK", "Cancel", visualizer.bind({title: input_title, content:v_snippetInput, expanded: input_expanded, stage: this._stage})).show();
}
, visualizer = function (submitted, override)
{
var content, title, expanded
, stage = this.stage;
if (override)
{
content = override.value;
title = override.title;
expanded = override.expanded ? "on" : "";
}
else
{
content = this.content.value;
title = this.title.value;
expanded = this.expanded.checked ? "on" : "";
}
if (submitted && content)
{
// Shared Clause
i = Dand.textNode(title || "Spoiler");
if (!stage)
{
if (!content) return;
// Visualize component
temp = Dand.wrapc('v_box',
[
// caption
Dand.wrapc('v_caption', i)
, Dand.textNode(content)
],
[
new DataKey("value", content)
, new DataKey("title", title)
, new DataKey("expanded", expanded)
]
);
insertSnippet(j = snippetWrap("Spoiler", temp), Boolean(override));
}
else
{
IDOMElement(stage).setAttribute
(
[
new DataKey("value", content)
, new DataKey("title", title)
, new DataKey("expanded", expanded)
]
);
temp = stage.firstChild;
temp.removeChild(temp.firstChild);
temp.appendChild(i);
stage.removeChild(stage.lastChild);
stage.appendChild(Dand.textNode(content));
// set temp back to stage
temp = stage;
}
i = {
_title: title
, _content: content
, _expanded: expanded || "off"
, _stage: temp
};
// Set context menu
createContext(i, j, handler);
}
}
;
if (override)
{
visualizer(true, override);
override = false;
}
else
{
return handler;
}
return true;
};
var compile = function ( stage )
{
var element = IDOMElement( stage )
, props = ["title", "expanded"];
return "[spoiler"
+ compileProp( element, props )
+ "]"
+ element.getDAttribute( "value" )
+ "[/spoiler]";
};
__static_method( spoiler, "compile", compile );
ns[ NS_EXPORT ]( EX_CLASS, "Spoiler", spoiler );
})();