本文整理匯總了TypeScript中@ephox/katamari.Struct.immutableBag方法的典型用法代碼示例。如果您正苦於以下問題:TypeScript Struct.immutableBag方法的具體用法?TypeScript Struct.immutableBag怎麽用?TypeScript Struct.immutableBag使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類@ephox/katamari.Struct
的用法示例。
在下文中一共展示了Struct.immutableBag方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: function
export default function (editor, lazyResize) {
const handlerStruct = Struct.immutableBag(['mousedown', 'mouseover', 'mouseup', 'keyup', 'keydown'], []);
let handlers = Option.none();
const annotations = SelectionAnnotation.byAttr(Ephemera);
editor.on('init', function (e) {
const win = editor.getWin();
const body = Util.getBody(editor);
const isRoot = Util.getIsRoot(editor);
const syncSelection = function () {
const sel = editor.selection;
const start = Element.fromDom(sel.getStart());
const end = Element.fromDom(sel.getEnd());
const startTable = TableLookup.table(start);
const endTable = TableLookup.table(end);
const sameTable = startTable.bind(function (tableStart) {
return endTable.bind(function (tableEnd) {
return Compare.eq(tableStart, tableEnd) ? Option.some(true) : Option.none();
});
});
sameTable.fold(function () {
annotations.clear(body);
}, Fun.noop);
};
const mouseHandlers = InputHandlers.mouse(win, body, isRoot, annotations);
const keyHandlers = InputHandlers.keyboard(win, body, isRoot, annotations);
const hasShiftKey = (event) => event.raw().shiftKey === true;
const handleResponse = function (event, response) {
// Only handle shift key non shiftkey cell navigation is handled by core
if (!hasShiftKey(event)) {
return;
}
if (response.kill()) {
event.kill();
}
response.selection().each(function (ns) {
const relative = Selection.relative(ns.start(), ns.finish());
const rng = SelectionDirection.asLtrRange(win, relative);
editor.selection.setRng(rng);
});
};
const keyup = function (event) {
const wrappedEvent = wrapEvent(event);
// Note, this is an optimisation.
if (wrappedEvent.raw().shiftKey && SelectionKeys.isNavigation(wrappedEvent.raw().which)) {
const rng = editor.selection.getRng();
const start = Element.fromDom(rng.startContainer);
const end = Element.fromDom(rng.endContainer);
keyHandlers.keyup(wrappedEvent, start, rng.startOffset, end, rng.endOffset).each(function (response) {
handleResponse(wrappedEvent, response);
});
}
};
const checkLast = function (last) {
return !Attr.has(last, 'data-mce-bogus') && Node.name(last) !== 'br' && !(Node.isText(last) && Text.get(last).length === 0);
};
const getLast = function () {
const body = Element.fromDom(editor.getBody());
const lastChild = Traverse.lastChild(body);
const getPrevLast = function (last) {
return Traverse.prevSibling(last).bind(function (prevLast) {
return checkLast(prevLast) ? Option.some(prevLast) : getPrevLast(prevLast);
});
};
return lastChild.bind(function (last) {
return checkLast(last) ? Option.some(last) : getPrevLast(last);
});
};
const keydown = function (event) {
const wrappedEvent = wrapEvent(event);
lazyResize().each(function (resize) {
resize.hideBars();
});
if (event.which === 40) {
getLast().each(function (last) {
if (Node.name(last) === 'table') {
if (getForcedRootBlock(editor)) {
editor.dom.add(
editor.getBody(),
getForcedRootBlock(editor),
getForcedRootBlockAttrs(editor),
'<br/>'
);
} else {
editor.dom.add(editor.getBody(), 'br');
}
}
//.........這裏部分代碼省略.........
示例2: isScrolling
PlatformEditor.getActiveApi(platform.editor).each(function (editorApi) {
// TODO: Orientation changes.
// orientation = Orientation.onChange();
priorState.set({
socketHeight: Css.getRaw(platform.socket, 'height'),
iframeHeight: Css.getRaw(editorApi.frame(), 'height'),
outerScroll: document.body.scrollTop
});
scrollEvents.set({
// Allow only things that have scrollable class to be scrollable. Without this,
// the toolbar scrolling gets prevented
exclusives: Scrollables.exclusive(doc, '.' + Scrollable.scrollable())
});
Class.add(platform.container, Styles.resolve('fullscreen-maximized'));
Thor.clobberStyles(platform.container, editorApi.body());
meta.maximize();
/* NOTE: Making the toolbar scrollable is now done when the middle group is created */
Css.set(platform.socket, 'overflow', 'scroll');
Css.set(platform.socket, '-webkit-overflow-scrolling', 'touch');
Focus.focus(editorApi.body());
const setupBag = Struct.immutableBag([
'cWin',
'ceBody',
'socket',
'toolstrip',
'toolbar',
'dropup',
'contentElement',
'cursor',
'keyboardType',
'isScrolling',
'outerWindow',
'outerBody'
], []);
iosApi.set(
IosSetup.setup(setupBag({
cWin: editorApi.win(),
ceBody: editorApi.body(),
socket: platform.socket,
toolstrip: platform.toolstrip,
toolbar: platform.toolbar,
dropup: platform.dropup.element(),
contentElement: editorApi.frame(),
cursor: Fun.noop,
outerBody: platform.body,
outerWindow: platform.win,
keyboardType: IosKeyboard.stubborn,
isScrolling () {
return scrollEvents.get().exists(function (s) {
return s.socket.isScrolling();
});
}
}))
);
iosApi.run(function (api) {
api.syncHeight();
});
iosEvents.set(
IosEvents.initEvents(editorApi, iosApi, platform.toolstrip, platform.socket, platform.dropup)
);
});
示例3: function
export default function (editor, lazyResize) {
const handlerStruct = Struct.immutableBag(['mousedown', 'mouseover', 'mouseup', 'keyup', 'keydown'], []);
let handlers = Option.none();
const annotations = SelectionAnnotation.byAttr(Ephemera);
editor.on('init', function (e) {
const win = editor.getWin();
const body = Util.getBody(editor);
const isRoot = Util.getIsRoot(editor);
// When the selection changes through either the mouse or keyboard, and the selection is no longer within the table.
// Remove the selection.
const syncSelection = function () {
const sel = editor.selection;
const start = Element.fromDom(sel.getStart());
const end = Element.fromDom(sel.getEnd());
const shared = DomParent.sharedOne(TableLookup.table, [start, end]);
shared.fold(function () {
annotations.clear(body);
}, Fun.noop);
};
const mouseHandlers = InputHandlers.mouse(win, body, isRoot, annotations);
const keyHandlers = InputHandlers.keyboard(win, body, isRoot, annotations);
const hasShiftKey = (event) => event.raw().shiftKey === true;
const handleResponse = function (event, response) {
// Only handle shift key non shiftkey cell navigation is handled by core
if (!hasShiftKey(event)) {
return;
}
if (response.kill()) {
event.kill();
}
response.selection().each(function (ns) {
const relative = Selection.relative(ns.start(), ns.finish());
const rng = SelectionDirection.asLtrRange(win, relative);
editor.selection.setRng(rng);
});
};
const keyup = function (event) {
const wrappedEvent = wrapEvent(event);
// Note, this is an optimisation.
if (wrappedEvent.raw().shiftKey && SelectionKeys.isNavigation(wrappedEvent.raw().which)) {
const rng = editor.selection.getRng();
const start = Element.fromDom(rng.startContainer);
const end = Element.fromDom(rng.endContainer);
keyHandlers.keyup(wrappedEvent, start, rng.startOffset, end, rng.endOffset).each(function (response) {
handleResponse(wrappedEvent, response);
});
}
};
const keydown = function (event: KeyboardEvent) {
const wrappedEvent = wrapEvent(event);
lazyResize().each(function (resize) {
resize.hideBars();
});
const rng = editor.selection.getRng();
const startContainer = Element.fromDom(editor.selection.getStart());
const start = Element.fromDom(rng.startContainer);
const end = Element.fromDom(rng.endContainer);
const direction = Direction.directionAt(startContainer).isRtl() ? SelectionKeys.rtl : SelectionKeys.ltr;
keyHandlers.keydown(wrappedEvent, start, rng.startOffset, end, rng.endOffset, direction).each(function (response) {
handleResponse(wrappedEvent, response);
});
lazyResize().each(function (resize) {
resize.showBars();
});
};
const isMouseEvent = (event: any): event is MouseEvent => event.hasOwnProperty('x') && event.hasOwnProperty('y');
const wrapEvent = function (event: MouseEvent | KeyboardEvent) {
// IE9 minimum
const target = Element.fromDom(event.target as HTMLElement);
const stop = function () {
event.stopPropagation();
};
const prevent = function () {
event.preventDefault();
};
const kill = Fun.compose(prevent, stop); // more of a sequence than a compose, but same effect
// FIX: Don't just expose the raw event. Need to identify what needs standardisation.
return {
target: Fun.constant(target),
x: Fun.constant(isMouseEvent(event) ? event.x : null),
y: Fun.constant(isMouseEvent(event) ? event.y : null),
stop,
prevent,
kill,
raw: Fun.constant(event)
//.........這裏部分代碼省略.........