Index: site/try/src/selection.dart |
diff --git a/site/try/src/selection.dart b/site/try/src/selection.dart |
deleted file mode 100644 |
index c0d606eb7d11ff4eb01d1c5e731a914b908cadb3..0000000000000000000000000000000000000000 |
--- a/site/try/src/selection.dart |
+++ /dev/null |
@@ -1,103 +0,0 @@ |
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-library trydart.selection; |
- |
-import 'dart:html' show |
- CharacterData, |
- Element, |
- Node, |
- NodeFilter, |
- Selection, |
- Text, |
- TreeWalker; |
- |
-import 'shadow_root.dart' show |
- WALKER_NEXT, |
- WALKER_RETURN, |
- walkNodes; |
- |
-import 'decoration.dart'; |
- |
-class TrySelection { |
- final Node root; |
- Node anchorNode; |
- int anchorOffset; |
- |
- String text; |
- int globalOffset = -1; |
- |
- TrySelection(this.root, Selection selection) |
- : anchorNode = isCollapsed(selection) ? selection.anchorNode : null, |
- anchorOffset = isCollapsed(selection) ? selection.anchorOffset : -1; |
- |
- TrySelection.empty(this.root) |
- : anchorNode = null, |
- anchorOffset = -1; |
- |
- Text addNodeFromSubstring(int start, |
- int end, |
- List<Node> nodes, |
- [Decoration decoration]) { |
- if (start == end) return null; |
- |
- Text textNode = new Text(text.substring(start, end)); |
- |
- if (start <= globalOffset && globalOffset <= end) { |
- anchorNode = textNode; |
- anchorOffset = globalOffset - start; |
- } |
- |
- nodes.add(decoration == null ? textNode : decoration.applyTo(textNode)); |
- |
- return textNode; |
- } |
- |
- void adjust(Selection selection) { |
- if (anchorOffset >= 0) { |
- selection.collapse(anchorNode, anchorOffset); |
- } |
- } |
- |
- void updateText(String newText) { |
- text = newText; |
- globalOffset = computeGlobalOffset(root, anchorNode, anchorOffset); |
- } |
- |
- TrySelection copyWithRoot(Node root) { |
- return new TrySelection.empty(root) |
- ..anchorNode = anchorNode |
- ..anchorOffset = anchorOffset; |
- } |
- |
- /// Computes the global offset, that is, the offset from [root]. |
- static int computeGlobalOffset(Node root, Node anchorNode, int anchorOffset) { |
- if (anchorOffset == -1) return -1; |
- |
- int offset = 0; |
- bool found = false; |
- walkNodes(root, (Node node) { |
- if (anchorNode == node) { |
- offset += anchorOffset; |
- found = true; |
- return WALKER_RETURN; |
- } |
- switch (node.nodeType) { |
- case Node.CDATA_SECTION_NODE: |
- case Node.TEXT_NODE: |
- CharacterData text = node; |
- offset += text.data.length; |
- break; |
- } |
- return WALKER_NEXT; |
- }); |
- return found ? offset : -1; |
- } |
-} |
- |
-bool isCollapsed(Selection selection) { |
- // Firefox and Chrome don't agree on if the selection is collapsed if there |
- // is no node selected. |
- return selection.isCollapsed && selection.anchorNode != null; |
-} |