{"code":"import * as tslib_1 from \"tslib\";\r\nimport { value, Action } from 'popmotion';\r\nimport { resolveProp, measureWithoutTransform } from './utils';\r\nvar ORIGIN_START = 0;\r\nvar ORIGIN_CENTER = '50%';\r\nvar ORIGIN_END = '100%';\r\nvar findCenter = function (_a) {\r\n    var top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left;\r\n    return ({\r\n        x: (left + right) / 2,\r\n        y: (top + bottom) / 2\r\n    });\r\n};\r\nvar positionalProps = ['width', 'height', 'top', 'left', 'bottom', 'right'];\r\nvar positionalPropsDict = new Set(positionalProps);\r\nvar checkPositionalProp = function (key) { return positionalPropsDict.has(key); };\r\nvar hasPositionalProps = function (pose) {\r\n    return Object.keys(pose).some(checkPositionalProp);\r\n};\r\nexport var isFlipPose = function (flip, key, state) {\r\n    return state.props.element instanceof HTMLElement &&\r\n        (flip === true || key === 'flip');\r\n};\r\nexport var setValue = function (_a, key, to) {\r\n    var values = _a.values, props = _a.props;\r\n    if (values.has(key)) {\r\n        var raw = values.get(key).raw;\r\n        raw.update(to);\r\n        raw.update(to);\r\n    }\r\n    else {\r\n        values.set(key, {\r\n            raw: value(to, function (v) { return props.elementStyler.set(key, v); })\r\n        });\r\n    }\r\n};\r\nvar explicitlyFlipPose = function (state, nextPose) {\r\n    var _a = state.props, dimensions = _a.dimensions, elementStyler = _a.elementStyler;\r\n    dimensions.measure();\r\n    var width = nextPose.width, height = nextPose.height, top = nextPose.top, left = nextPose.left, bottom = nextPose.bottom, right = nextPose.right, position = nextPose.position, remainingPose = tslib_1.__rest(nextPose, [\"width\", \"height\", \"top\", \"left\", \"bottom\", \"right\", \"position\"]);\r\n    var propsToSet = positionalProps.concat('position').reduce(function (acc, key) {\r\n        if (nextPose[key] !== undefined) {\r\n            acc[key] = resolveProp(nextPose[key], state.props);\r\n        }\r\n        return acc;\r\n    }, {});\r\n    elementStyler.set(propsToSet).render();\r\n    return implicitlyFlipPose(state, remainingPose);\r\n};\r\nvar implicitlyFlipPose = function (state, nextPose) {\r\n    var _a = state.props, dimensions = _a.dimensions, element = _a.element, elementStyler = _a.elementStyler;\r\n    if (!dimensions.has())\r\n        return {};\r\n    var prev = dimensions.get();\r\n    var next = measureWithoutTransform(element);\r\n    var originX = prev.left === next.left\r\n        ? ORIGIN_START\r\n        : prev.right === next.right ? ORIGIN_END : ORIGIN_CENTER;\r\n    var originY = prev.top === next.top\r\n        ? ORIGIN_START\r\n        : prev.bottom === next.bottom ? ORIGIN_END : ORIGIN_CENTER;\r\n    elementStyler.set({ originX: originX, originY: originY });\r\n    if (prev.width !== next.width) {\r\n        setValue(state, 'scaleX', prev.width / next.width);\r\n        nextPose.scaleX = 1;\r\n    }\r\n    if (prev.height !== next.height) {\r\n        setValue(state, 'scaleY', prev.height / next.height);\r\n        nextPose.scaleY = 1;\r\n    }\r\n    var prevCenter = findCenter(prev);\r\n    var nextCenter = findCenter(next);\r\n    if (originX === ORIGIN_CENTER) {\r\n        setValue(state, 'x', prevCenter.x - nextCenter.x);\r\n        nextPose.x = 0;\r\n    }\r\n    if (originY === ORIGIN_CENTER) {\r\n        setValue(state, 'y', prevCenter.y - nextCenter.y);\r\n        nextPose.y = 0;\r\n    }\r\n    elementStyler.render();\r\n    return nextPose;\r\n};\r\nexport var flipPose = function (props, nextPose) {\r\n    return hasPositionalProps(nextPose)\r\n        ? explicitlyFlipPose(props, nextPose)\r\n        : implicitlyFlipPose(props, nextPose);\r\n};\r\nexport { Action };\r\n//# sourceMappingURL=flip.js.map","map":"{\"version\":3,\"file\":\"flip.js\",\"sourceRoot\":\"\",\"sources\":[\"../src/dom/flip.ts\"],\"names\":[],\"mappings\":\";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAoB,MAAM,WAAW,CAAC;AAS5D,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAG/D,IAAM,YAAY,GAAG,CAAC,CAAC;AACvB,IAAM,aAAa,GAAG,KAAK,CAAC;AAC5B,IAAM,UAAU,GAAG,MAAM,CAAC;AAI1B,IAAM,UAAU,GAAG,UAAC,EAAyC;QAAvC,YAAG,EAAE,gBAAK,EAAE,kBAAM,EAAE,cAAI;IAAoB,OAAA,CAAC;QACjE,CAAC,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;QACrB,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;KACtB,CAAC;AAHgE,CAGhE,CAAC;AAEH,IAAM,eAAe,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC9E,IAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;AACrD,IAAM,mBAAmB,GAAG,UAAC,GAAW,IAAK,OAAA,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAA5B,CAA4B,CAAC;AAC1E,IAAM,kBAAkB,GAAG,UAAC,IAAU;IACpC,OAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAA3C,CAA2C,CAAC;AAE9C,MAAM,CAAC,IAAM,UAAU,GAAG,UAAC,IAAa,EAAE,GAAW,EAAE,KAAiB;IACtE,OAAA,KAAK,CAAC,KAAK,CAAC,OAAO,YAAY,WAAW;QAC1C,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,CAAC;AADjC,CACiC,CAAC;AAEpC,MAAM,CAAC,IAAM,QAAQ,GAAG,UACtB,EAA6B,EAC7B,GAAW,EACX,EAAO;QAFL,kBAAM,EAAE,gBAAK;IAIf,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAOX,IAAA,yBAAG,CAAqB;QAChC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KAChB;SAAM;QACL,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;YACd,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,UAAC,CAAM,IAAK,OAAA,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAA/B,CAA+B,CAAC;SAC5D,CAAC,CAAC;KACJ;AACH,CAAC,CAAC;AAEF,IAAM,kBAAkB,GAAG,UAAC,KAAiB,EAAE,QAAc;IACrD,IAAA,gBAA2C,EAAzC,0BAAU,EAAE,gCAAa,CAAiB;IAElD,UAAU,CAAC,OAAO,EAAE,CAAC;IAEnB,IAAA,sBAAK,EACL,wBAAM,EACN,kBAAG,EACH,oBAAI,EACJ,wBAAM,EACN,sBAAK,EACL,4BAAQ,EACR,2GAAgB,CACL;IAEb,IAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAC1D,UAAC,GAAG,EAAE,GAAG;QACP,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;SACpD;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAc,CACf,CAAC;IAEF,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC;IAEvC,OAAO,kBAAkB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,IAAM,kBAAkB,GAAG,UAAC,KAAiB,EAAE,QAAc;IACrD,IAAA,gBAAoD,EAAlD,0BAAU,EAAE,oBAAO,EAAE,gCAAa,CAAiB;IAC3D,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,CAAC;IAEjC,IAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAiB,CAAC;IAC7C,IAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAG9C,IAAM,OAAO,GACX,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;QACrB,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;IAE7D,IAAM,OAAO,GACX,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;QACnB,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;IAG/D,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,SAAA,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;IAGxC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;QAC7B,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;KACrB;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;QAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;KACrB;IAED,IAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,IAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAEpC,IAAI,OAAO,KAAK,aAAa,EAAE;QAC7B,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAClD,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;KAChB;IAED,IAAI,OAAO,KAAK,aAAa,EAAE;QAC7B,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAClD,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;KAChB;IAGD,aAAa,CAAC,MAAM,EAAE,CAAC;IAEvB,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,QAAQ,GAAG,UAAC,KAAiB,EAAE,QAAc;IACxD,OAAA,kBAAkB,CAAC,QAAQ,CAAC;QAC1B,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC;QACrC,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC;AAFvC,CAEuC,CAAC;AAI1C,OAAO,EACL,MAAM,EAMP,CAAC\"}","dts":{"name":"/Users/mattperry/Sites/popmotion/packages/popmotion-pose/dom/flip.d.ts","text":"import { Action, ColdSubscription } from 'popmotion';\r\nimport { Dimensions, Value, DomPopmotionPoser } from '../types';\r\nimport { Poser } from 'pose-core';\r\nexport declare const isFlipPose: (flip: boolean, key: string, state: import(\"pose-core/lib/types\").PoserState<Value, Action, ColdSubscription, DomPopmotionPoser>) => boolean;\r\nexport declare const setValue: ({ values, props }: import(\"pose-core/lib/types\").PoserState<Value, Action, ColdSubscription, DomPopmotionPoser>, key: string, to: any) => void;\r\nexport declare const flipPose: (props: import(\"pose-core/lib/types\").PoserState<Value, Action, ColdSubscription, DomPopmotionPoser>, nextPose: import(\"pose-core/lib/types\").Pose<Action>) => import(\"pose-core/lib/types\").Pose<Action>;\r\nexport { Action, Dimensions, ColdSubscription, DomPopmotionPoser, Poser, Value };\r\n"}}
