diff options
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.js | 57 |
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); |