aboutsummaryrefslogtreecommitdiff
path: root/catapult/third_party/polymer/components/web-animations-js/src/box-handler.js
diff options
context:
space:
mode:
Diffstat (limited to 'catapult/third_party/polymer/components/web-animations-js/src/box-handler.js')
-rw-r--r--catapult/third_party/polymer/components/web-animations-js/src/box-handler.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/catapult/third_party/polymer/components/web-animations-js/src/box-handler.js b/catapult/third_party/polymer/components/web-animations-js/src/box-handler.js
new file mode 100644
index 00000000..3399263a
--- /dev/null
+++ b/catapult/third_party/polymer/components/web-animations-js/src/box-handler.js
@@ -0,0 +1,57 @@
+// Copyright 2014 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+(function(scope, testing) {
+ function consumeLengthPercentOrAuto(string) {
+ return scope.consumeLengthOrPercent(string) || scope.consumeToken(/^auto/, string);
+ }
+ function parseBox(string) {
+ var result = scope.consumeList([
+ scope.ignore(scope.consumeToken.bind(null, /^rect/)),
+ scope.ignore(scope.consumeToken.bind(null, /^\(/)),
+ scope.consumeRepeated.bind(null, consumeLengthPercentOrAuto, /^,/),
+ scope.ignore(scope.consumeToken.bind(null, /^\)/)),
+ ], string);
+ if (result && result[0].length == 4) {
+ return result[0];
+ }
+ }
+
+ function mergeComponent(left, right) {
+ if (left == 'auto' || right == 'auto') {
+ return [true, false, function(t) {
+ var result = t ? left : right;
+ if (result == 'auto') {
+ return 'auto';
+ }
+ // FIXME: There's probably a better way to turn a dimension back into a string.
+ var merged = scope.mergeDimensions(result, result);
+ return merged[2](merged[0]);
+ }];
+ }
+ return scope.mergeDimensions(left, right);
+ }
+
+ function wrap(result) {
+ return 'rect(' + result + ')';
+ }
+
+ var mergeBoxes = scope.mergeWrappedNestedRepeated.bind(null, wrap, mergeComponent, ', ');
+
+ scope.parseBox = parseBox;
+ scope.mergeBoxes = mergeBoxes;
+
+ scope.addPropertiesHandler(parseBox, mergeBoxes, ['clip']);
+
+})(webAnimations1, webAnimationsTesting);