{"ast":null,"code":"import { __assign } from 'tslib';\nimport { Presence } from '../types.js';\nimport { elementDragControls } from '../../../gestures/drag/VisualElementDragControls.js';\nimport { createCrossfader } from './crossfader.js';\nfunction layoutStack() {\n  var stack = new Set();\n  var state = {\n    leadIsExiting: false\n  };\n  var prevState = __assign({}, state);\n  var prevValues;\n  var prevViewportBox;\n  var prevDragCursor;\n  var crossfader = createCrossfader();\n  var needsCrossfadeAnimation = false;\n  function getFollowViewportBox() {\n    return state.follow ? state.follow.prevViewportBox : prevViewportBox;\n  }\n  function getFollowLayout() {\n    var _a;\n    return (_a = state.follow) === null || _a === void 0 ? void 0 : _a.getLayoutState().layout;\n  }\n  return {\n    add: function add(element) {\n      element.setCrossfader(crossfader);\n      stack.add(element);\n      /**\n       * Hydrate new element with previous drag position if we have one\n       */\n      if (prevDragCursor) element.prevDragCursor = prevDragCursor;\n      if (!state.lead) state.lead = element;\n    },\n    remove: function remove(element) {\n      stack[\"delete\"](element);\n    },\n    getLead: function getLead() {\n      return state.lead;\n    },\n    updateSnapshot: function updateSnapshot() {\n      if (!state.lead) return;\n      prevValues = crossfader.isActive() ? crossfader.getLatestValues() : state.lead.getLatestValues();\n      prevViewportBox = state.lead.prevViewportBox;\n      var dragControls = elementDragControls.get(state.lead);\n      if (dragControls && dragControls.isDragging) {\n        prevDragCursor = dragControls.cursorProgress;\n      }\n    },\n    clearSnapshot: function clearSnapshot() {\n      prevDragCursor = prevViewportBox = undefined;\n    },\n    updateLeadAndFollow: function updateLeadAndFollow() {\n      var _a;\n      prevState = __assign({}, state);\n      var lead;\n      var follow;\n      var order = Array.from(stack);\n      for (var i = order.length; i--; i >= 0) {\n        var element = order[i];\n        if (lead) follow !== null && follow !== void 0 ? follow : follow = element;\n        lead !== null && lead !== void 0 ? lead : lead = element;\n        if (lead && follow) break;\n      }\n      state.lead = lead;\n      state.follow = follow;\n      state.leadIsExiting = ((_a = state.lead) === null || _a === void 0 ? void 0 : _a.presence) === Presence.Exiting;\n      crossfader.setOptions({\n        lead: lead,\n        follow: follow,\n        prevValues: prevValues,\n        crossfadeOpacity: (follow === null || follow === void 0 ? void 0 : follow.isPresenceRoot) || (lead === null || lead === void 0 ? void 0 : lead.isPresenceRoot)\n      });\n      if (\n      // Don't crossfade if we've just animated back from lead and switched the\n      // old follow to the new lead.\n      state.lead !== prevState.follow && (prevState.lead !== state.lead || prevState.leadIsExiting !== state.leadIsExiting)) {\n        needsCrossfadeAnimation = true;\n      }\n    },\n    animate: function animate(child, shouldCrossfade) {\n      var _a;\n      if (shouldCrossfade === void 0) {\n        shouldCrossfade = false;\n      }\n      if (child === state.lead) {\n        if (shouldCrossfade) {\n          /**\n           * Point a lead to itself in case it was previously pointing\n           * to a different visual element\n           */\n          child.pointTo(state.lead);\n        } else {\n          child.setVisibility(true);\n        }\n        var config = {};\n        var prevParent = (_a = state.follow) === null || _a === void 0 ? void 0 : _a.getProjectionParent();\n        if (prevParent) {\n          /**\n           * We'll use this to determine if the element or its layoutId has been reparented.\n           */\n          config.prevParent = prevParent;\n        }\n        if (child.presence === Presence.Entering) {\n          config.originBox = getFollowViewportBox();\n        } else if (child.presence === Presence.Exiting) {\n          config.targetBox = getFollowLayout();\n        }\n        if (needsCrossfadeAnimation) {\n          needsCrossfadeAnimation = false;\n          var transition = child.getDefaultTransition();\n          child.presence === Presence.Entering ? crossfader.toLead(transition) : crossfader.fromLead(transition);\n        }\n        child.notifyLayoutReady(config);\n      } else {\n        if (shouldCrossfade) {\n          state.lead && child.pointTo(state.lead);\n        } else {\n          child.setVisibility(false);\n        }\n      }\n    }\n  };\n}\nexport { layoutStack };","map":{"version":3,"names":["__assign","Presence","elementDragControls","createCrossfader","layoutStack","stack","Set","state","leadIsExiting","prevState","prevValues","prevViewportBox","prevDragCursor","crossfader","needsCrossfadeAnimation","getFollowViewportBox","follow","getFollowLayout","_a","getLayoutState","layout","add","element","setCrossfader","lead","remove","getLead","updateSnapshot","isActive","getLatestValues","dragControls","get","isDragging","cursorProgress","clearSnapshot","undefined","updateLeadAndFollow","order","Array","from","i","length","presence","Exiting","setOptions","crossfadeOpacity","isPresenceRoot","animate","child","shouldCrossfade","pointTo","setVisibility","config","prevParent","getProjectionParent","Entering","originBox","targetBox","transition","getDefaultTransition","toLead","fromLead","notifyLayoutReady"],"sources":["C:/ldt/LDT/Safemate_Management/node_modules/framer-motion/dist/es/components/AnimateSharedLayout/utils/stack.js"],"sourcesContent":["import { __assign } from 'tslib';\nimport { Presence } from '../types.js';\nimport { elementDragControls } from '../../../gestures/drag/VisualElementDragControls.js';\nimport { createCrossfader } from './crossfader.js';\n\nfunction layoutStack() {\n    var stack = new Set();\n    var state = { leadIsExiting: false };\n    var prevState = __assign({}, state);\n    var prevValues;\n    var prevViewportBox;\n    var prevDragCursor;\n    var crossfader = createCrossfader();\n    var needsCrossfadeAnimation = false;\n    function getFollowViewportBox() {\n        return state.follow ? state.follow.prevViewportBox : prevViewportBox;\n    }\n    function getFollowLayout() {\n        var _a;\n        return (_a = state.follow) === null || _a === void 0 ? void 0 : _a.getLayoutState().layout;\n    }\n    return {\n        add: function (element) {\n            element.setCrossfader(crossfader);\n            stack.add(element);\n            /**\n             * Hydrate new element with previous drag position if we have one\n             */\n            if (prevDragCursor)\n                element.prevDragCursor = prevDragCursor;\n            if (!state.lead)\n                state.lead = element;\n        },\n        remove: function (element) {\n            stack.delete(element);\n        },\n        getLead: function () { return state.lead; },\n        updateSnapshot: function () {\n            if (!state.lead)\n                return;\n            prevValues = crossfader.isActive()\n                ? crossfader.getLatestValues()\n                : state.lead.getLatestValues();\n            prevViewportBox = state.lead.prevViewportBox;\n            var dragControls = elementDragControls.get(state.lead);\n            if (dragControls && dragControls.isDragging) {\n                prevDragCursor = dragControls.cursorProgress;\n            }\n        },\n        clearSnapshot: function () {\n            prevDragCursor = prevViewportBox = undefined;\n        },\n        updateLeadAndFollow: function () {\n            var _a;\n            prevState = __assign({}, state);\n            var lead;\n            var follow;\n            var order = Array.from(stack);\n            for (var i = order.length; i--; i >= 0) {\n                var element = order[i];\n                if (lead)\n                    follow !== null && follow !== void 0 ? follow : (follow = element);\n                lead !== null && lead !== void 0 ? lead : (lead = element);\n                if (lead && follow)\n                    break;\n            }\n            state.lead = lead;\n            state.follow = follow;\n            state.leadIsExiting = ((_a = state.lead) === null || _a === void 0 ? void 0 : _a.presence) === Presence.Exiting;\n            crossfader.setOptions({\n                lead: lead,\n                follow: follow,\n                prevValues: prevValues,\n                crossfadeOpacity: (follow === null || follow === void 0 ? void 0 : follow.isPresenceRoot) || (lead === null || lead === void 0 ? void 0 : lead.isPresenceRoot),\n            });\n            if (\n            // Don't crossfade if we've just animated back from lead and switched the\n            // old follow to the new lead.\n            state.lead !== prevState.follow &&\n                (prevState.lead !== state.lead ||\n                    prevState.leadIsExiting !== state.leadIsExiting)) {\n                needsCrossfadeAnimation = true;\n            }\n        },\n        animate: function (child, shouldCrossfade) {\n            var _a;\n            if (shouldCrossfade === void 0) { shouldCrossfade = false; }\n            if (child === state.lead) {\n                if (shouldCrossfade) {\n                    /**\n                     * Point a lead to itself in case it was previously pointing\n                     * to a different visual element\n                     */\n                    child.pointTo(state.lead);\n                }\n                else {\n                    child.setVisibility(true);\n                }\n                var config = {};\n                var prevParent = (_a = state.follow) === null || _a === void 0 ? void 0 : _a.getProjectionParent();\n                if (prevParent) {\n                    /**\n                     * We'll use this to determine if the element or its layoutId has been reparented.\n                     */\n                    config.prevParent = prevParent;\n                }\n                if (child.presence === Presence.Entering) {\n                    config.originBox = getFollowViewportBox();\n                }\n                else if (child.presence === Presence.Exiting) {\n                    config.targetBox = getFollowLayout();\n                }\n                if (needsCrossfadeAnimation) {\n                    needsCrossfadeAnimation = false;\n                    var transition = child.getDefaultTransition();\n                    child.presence === Presence.Entering\n                        ? crossfader.toLead(transition)\n                        : crossfader.fromLead(transition);\n                }\n                child.notifyLayoutReady(config);\n            }\n            else {\n                if (shouldCrossfade) {\n                    state.lead && child.pointTo(state.lead);\n                }\n                else {\n                    child.setVisibility(false);\n                }\n            }\n        },\n    };\n}\n\nexport { layoutStack };\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}