コード例 #1
0
ファイル: Pattern.ts プロジェクト: danielpunkass/tinymce
const createPatternSet = (patterns: Pattern[]): PatternSet => {
  return {
    inlinePatterns: sortPatterns(Arr.filter(patterns, isInlinePattern)),
    blockPatterns: sortPatterns(Arr.filter(patterns, isBlockPattern)),
    replacementPatterns: Arr.filter(patterns, isReplacementPattern),
  };
};
コード例 #2
0
ファイル: Settings.ts プロジェクト: tinymce/tinymce
const getMultipleToolbarsSetting = (editor: Editor) => {
  const keys = Obj.keys(editor.settings);
  const toolbarKeys = Arr.filter(keys, (key) => /^toolbar([1-9])$/.test(key));
  const toolbars = Arr.map(toolbarKeys, (key) => editor.getParam(key, false, 'string'));
  const toolbarArray = Arr.filter(toolbars, (toolbar) => typeof toolbar === 'string');
  return toolbarArray.length > 0 ? Option.some(toolbarArray) : Option.none();
};
コード例 #3
0
const trimMenuItems = function (menuItems) {
  const menuItems2 = Arr.filter(menuItems, function (menuItem, i, menuItems) {
    return !isSeparator(menuItem) || !isSeparator(menuItems[i - 1]);
  });

  return Arr.filter(menuItems2, function (menuItem, i, menuItems) {
    return !isSeparator(menuItem) || i > 0 && i < menuItems.length - 1;
  });
};
コード例 #4
0
ファイル: Menubar.ts プロジェクト: howardjing/tinymce
const cleanupMenu = function (namedMenuItems, removedMenuItems) {
  const menuItemsPass1 = Arr.filter(namedMenuItems, function (namedMenuItem) {
    return removedMenuItems.hasOwnProperty(namedMenuItem.name) === false;
  });

  const menuItemsPass2 = Arr.filter(menuItemsPass1, function (namedMenuItem, i, namedMenuItems) {
    return !isSeparator(namedMenuItem) || !isSeparator(namedMenuItems[i - 1]);
  });

  return Arr.filter(menuItemsPass2, function (namedMenuItem, i, namedMenuItems) {
    return !isSeparator(namedMenuItem) || i > 0 && i < namedMenuItems.length - 1;
  });
};
コード例 #5
0
ファイル: CefNavigation.ts プロジェクト: mdgbayly/tinymce
const moveToCeFalseVertically = function (direction: LineWalker.VDirection, editor, walkerFn, range: Range) {
  let caretPosition, linePositions, nextLinePositions;
  let closestNextLineRect, caretClientRect, clientX;
  let dist1, dist2, contentEditableFalseNode;

  contentEditableFalseNode = getSelectedNode(range);
  caretPosition = CaretUtils.getNormalizedRangeEndPoint(direction, editor.getBody(), range);
  linePositions = walkerFn(editor.getBody(), LineWalker.isAboveLine(1), caretPosition);
  nextLinePositions = Arr.filter(linePositions, LineWalker.isLine(1));
  caretClientRect = ArrUtils.last(caretPosition.getClientRects());

  if (isBeforeContentEditableFalse(caretPosition) || CaretUtils.isBeforeTable(caretPosition)) {
    contentEditableFalseNode = caretPosition.getNode();
  }

  if (isAfterContentEditableFalse(caretPosition) || CaretUtils.isAfterTable(caretPosition)) {
    contentEditableFalseNode = caretPosition.getNode(true);
  }

  if (!caretClientRect) {
    return null;
  }

  clientX = caretClientRect.left;

  closestNextLineRect = LineUtils.findClosestClientRect(nextLinePositions, clientX);
  if (closestNextLineRect) {
    if (isContentEditableFalse(closestNextLineRect.node)) {
      dist1 = Math.abs(clientX - closestNextLineRect.left);
      dist2 = Math.abs(clientX - closestNextLineRect.right);

      return CefUtils.showCaret(direction, editor, closestNextLineRect.node, dist1 < dist2, true);
    }
  }

  if (contentEditableFalseNode) {
    const caretPositions = LineWalker.positionsUntil(direction, editor.getBody(), LineWalker.isAboveLine(1), contentEditableFalseNode);

    closestNextLineRect = LineUtils.findClosestClientRect(Arr.filter(caretPositions, LineWalker.isLine(1)), clientX);
    if (closestNextLineRect) {
      return CefUtils.renderRangeCaret(editor, closestNextLineRect.position.toRange(), true);
    }

    closestNextLineRect = ArrUtils.last(Arr.filter(caretPositions, LineWalker.isLine(0)));
    if (closestNextLineRect) {
      return CefUtils.renderRangeCaret(editor, closestNextLineRect.position.toRange(), true);
    }
  }
};
コード例 #6
0
const removeTrailingBr = function (elm) {
  const allBrs = SelectorFilter.descendants(elm, 'br');
  const brs = Arr.filter(getLastChildren(elm).slice(-1), ElementType.isBr);
  if (allBrs.length === brs.length) {
    Arr.each(brs, Remove.remove);
  }
};
コード例 #7
0
const normalizePlugins = function (plugins) {
  const pluginNames = Type.isArray(plugins) ? plugins.join(' ') : plugins;
  const trimmedPlugins = Arr.map(Type.isString(pluginNames) ? pluginNames.split(' ') : [ ], Strings.trim);
  return Arr.filter(trimmedPlugins, function (item) {
    return item.length > 0;
  });
};
コード例 #8
0
ファイル: FilePicker.ts プロジェクト: howardjing/tinymce
  const fromMenuItems = function (type) {
    const filteredTargets = Arr.filter(targets, function (target) {
      return target.type === type;
    });

    return toMenuItems(filteredTargets);
  };
コード例 #9
0
ファイル: TableCells.ts プロジェクト: abstask/tinymce
const getClosestCell = (getYAxisValue: GetAxisValue, isTargetCorner: IsTargetCorner, table: HTMLElement, x: number, y: number): Option<HTMLElement> => {
  const cells = SelectorFilter.descendants(Element.fromDom(table), 'td,th').map((e) => e.dom());
  const corners = Arr.filter(getCorners(getYAxisValue, cells), (corner) => isTargetCorner(corner, y));

  return findClosestCorner(corners, x, y).map((corner) => {
    return corner.cell;
  });
};
コード例 #10
0
ファイル: FormatChanged.ts プロジェクト: tinymce/tinymce
  Arr.each(formats.split(','), (format) => {
    formatChangeItems[format].callbacks = Arr.filter(formatChangeItems[format].callbacks, (c) => {
      return c !== callback;
    });

    if (formatChangeItems[format].callbacks.length === 0) {
      delete formatChangeItems[format];
    }
  });