{"version":3,"sources":["jsdelivr-header.js","/npm/valtio-yjs@0.7.0/dist/index.js"],"names":[],"mappings":"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","file":"/npm/valtio-yjs@0.7.0/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/valtio-yjs@0.7.0/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/* eslint @typescript-eslint/no-explicit-any: \"off\" */\nimport { unstable_enableOp as enableOp, subscribe, getVersion, } from 'valtio/vanilla';\nimport * as Y from 'yjs';\nimport { parseProxyOps } from './parseProxyOps.js';\nenableOp(true);\nconst NON_SERIALIZABLE_ERROR = new Error('Proxy type must be serializable');\nfunction deepEqual(a, b) {\n    // Adapted from\n    // https://github.com/epoberezkin/fast-deep-equal/blob/a8e7172/src/index.jst\n    if (a === b)\n        return true;\n    if (a && b && typeof a == 'object' && typeof b == 'object') {\n        if (a.constructor !== b.constructor)\n            return false;\n        if (Array.isArray(a)) {\n            const length = a.length;\n            if (length != b.length)\n                return false;\n            for (let i = length; i-- !== 0;)\n                if (!deepEqual(a[i], b[i]))\n                    return false;\n            return true;\n        }\n        if (a.constructor === RegExp)\n            return a.source === b.source && a.flags === b.flags;\n        if (a.valueOf !== Object.prototype.valueOf)\n            return a.valueOf() === b.valueOf();\n        if (a.toString !== Object.prototype.toString)\n            return a.toString() === b.toString();\n        const keys = Object.keys(a);\n        const length = keys.length;\n        if (length !== Object.keys(b).length)\n            return false;\n        for (let i = length; i-- !== 0;)\n            if (!Object.prototype.hasOwnProperty.call(b, keys[i]))\n                return false;\n        for (let i = length; i-- !== 0;) {\n            const key = keys[i];\n            if (!deepEqual(a[key], b[key]))\n                return false;\n        }\n        return true;\n    }\n    // This case was added to support comparing YJS null values\n    // against JavaScript null/undefined, as YJS doesn't support\n    // undefined values.\n    if ((a === undefined || a === null) && b === null) {\n        return true;\n    }\n    // true if both NaN, false otherwise\n    return a !== a && b !== b;\n}\nconst isProxyObject = (x) => typeof x === 'object' && x !== null && getVersion(x) !== undefined;\nconst isProxyArray = (x) => Array.isArray(x) && getVersion(x) !== undefined;\nconst isPrimitiveMapValue = (v) => v === null ||\n    typeof v === 'string' ||\n    typeof v === 'number' ||\n    typeof v === 'boolean';\nconst transact = (doc, opts, fn) => {\n    if (doc) {\n        doc.transact(fn, opts.transactionOrigin);\n    }\n    else {\n        fn();\n    }\n};\nconst toYValue = (val) => {\n    if (val === undefined) {\n        return undefined;\n    }\n    if (isProxyArray(val)) {\n        const arr = new Y.Array();\n        arr.insert(0, val.map(toYValue).filter((v) => v !== undefined && v !== null));\n        return arr;\n    }\n    if (isProxyObject(val)) {\n        const map = new Y.Map();\n        Object.entries(val).forEach(([key, value]) => {\n            const v = toYValue(value);\n            if (v !== undefined) {\n                map.set(key, v);\n            }\n        });\n        return map;\n    }\n    if (isPrimitiveMapValue(val)) {\n        return val;\n    }\n    throw NON_SERIALIZABLE_ERROR;\n};\nconst toJSON = (yv) => {\n    if (yv instanceof Y.AbstractType) {\n        return yv.toJSON();\n    }\n    return yv;\n};\nconst getNestedValues = (p, y, path) => {\n    let pv = p;\n    let yv = y;\n    for (let i = 0; i < path.length; i += 1) {\n        const k = path[i];\n        if (yv instanceof Y.Map) {\n            // child may already be deleted\n            if (!pv)\n                break;\n            pv = pv[k];\n            yv = yv.get(k);\n        }\n        else if (yv instanceof Y.Array) {\n            // child may already be deleted\n            if (!pv)\n                break;\n            const index = Number(k);\n            pv = pv[k];\n            yv = yv.get(index);\n        }\n        else {\n            pv = null;\n            yv = null;\n        }\n    }\n    return { p: pv, y: yv };\n};\nexport function bind(p, y, opts = {}) {\n    if (isProxyArray(p) && !(y instanceof Y.Array)) {\n        if (process.env.NODE_ENV !== 'production') {\n            console.warn('proxy not same type');\n        }\n    }\n    if (isProxyObject(p) && !isProxyArray(p) && !(y instanceof Y.Map)) {\n        if (process.env.NODE_ENV !== 'production') {\n            console.warn('proxy not same type');\n        }\n    }\n    // initialize from y\n    initializeFromY(p, y);\n    // initialize from p\n    initializeFromP(p, y, opts);\n    if (isProxyArray(p) && y instanceof Y.Array) {\n        p.splice(y.length);\n    }\n    // subscribe p\n    const unsubscribeP = subscribeP(p, y, opts);\n    // subscribe y\n    const unsubscribeY = subscribeY(y, p);\n    return () => {\n        unsubscribeP();\n        unsubscribeY();\n    };\n}\nfunction initializeFromP(p, y, opts) {\n    transact(y.doc, opts, () => {\n        if (isProxyObject(p) && y instanceof Y.Map) {\n            Object.entries(p).forEach(([k, pv]) => {\n                const yv = y.get(k);\n                if (!deepEqual(pv, toJSON(yv))) {\n                    insertPValueToY(pv, y, k);\n                }\n            });\n        }\n        if (isProxyArray(p) && y instanceof Y.Array) {\n            p.forEach((pv, i) => {\n                const yv = y.get(i);\n                if (!deepEqual(pv, toJSON(yv))) {\n                    insertPValueToY(pv, y, i);\n                }\n            });\n        }\n    });\n}\nfunction initializeFromY(p, y) {\n    if (isProxyObject(p) && y instanceof Y.Map) {\n        y.forEach((yv, k) => {\n            if (!deepEqual(p[k], toJSON(yv))) {\n                p[k] = toJSON(yv);\n            }\n        });\n    }\n    if (isProxyArray(p) && y instanceof Y.Array) {\n        y.forEach((yv, i) => {\n            if (!deepEqual(p[i], toJSON(yv))) {\n                insertYValueToP(yv, p, i);\n            }\n        });\n    }\n}\nfunction insertPValueToY(pv, y, k) {\n    let yv;\n    try {\n        yv = toYValue(pv);\n    }\n    catch (error) {\n        if (error === NON_SERIALIZABLE_ERROR) {\n            if (process.env.NODE_ENV !== 'production') {\n                console.warn('unsupported p type', pv);\n            }\n            return;\n        }\n        throw error;\n    }\n    if (y instanceof Y.Map && typeof k === 'string') {\n        y.set(k, yv);\n    }\n    else if (y instanceof Y.Array && typeof k === 'number') {\n        y.insert(k, [yv]);\n    }\n}\nfunction insertYValueToP(yv, p, k) {\n    if (isProxyObject(p) && typeof k === 'string') {\n        p[k] = toJSON(yv);\n    }\n    else if (isProxyArray(p) && typeof k === 'number') {\n        p.splice(k, 0, toJSON(yv));\n    }\n}\nfunction subscribeP(p, y, opts) {\n    return subscribe(p, (ops) => {\n        transact(y.doc, opts, () => {\n            ops.forEach((op) => {\n                const path = op[1].slice(0, -1);\n                const k = op[1][op[1].length - 1];\n                const parent = getNestedValues(p, y, path);\n                if (parent.y instanceof Y.Map) {\n                    if (op[0] === 'delete') {\n                        parent.y.delete(k);\n                    }\n                    else if (op[0] === 'set') {\n                        const pv = parent.p[k];\n                        const yv = parent.y.get(k);\n                        if (!deepEqual(pv, toJSON(yv))) {\n                            insertPValueToY(pv, parent.y, k);\n                        }\n                    }\n                }\n                else if (parent.y instanceof Y.Array) {\n                    if (deepEqual(parent.p, toJSON(parent.y))) {\n                        return;\n                    }\n                    const arrayOps = parseProxyOps(ops);\n                    arrayOps.forEach((aOp) => {\n                        const i = aOp[1];\n                        if (aOp[0] === 'delete') {\n                            if (parent.y.length > i) {\n                                parent.y.delete(i, 1);\n                            }\n                            return;\n                        }\n                        let pv = parent.p[i];\n                        if (pv === undefined) {\n                            if (aOp[0] === 'set' && i < parent.y.length) {\n                                return;\n                            }\n                            else {\n                                pv = null;\n                            }\n                        }\n                        if (aOp[0] === 'set') {\n                            if (parent.y.length > i) {\n                                parent.y.delete(i, 1);\n                            }\n                            insertPValueToY(pv, parent.y, i);\n                        }\n                        else if (aOp[0] === 'insert') {\n                            insertPValueToY(pv, parent.y, i);\n                        }\n                    });\n                }\n            });\n        });\n    });\n}\nfunction subscribeY(y, p) {\n    const observer = (events) => {\n        events.forEach((event) => {\n            const path = event.path;\n            const parent = getNestedValues(p, y, path);\n            if (parent.y instanceof Y.Map) {\n                event.changes.keys.forEach((item, k) => {\n                    if (item.action === 'delete') {\n                        delete parent.p[k];\n                    }\n                    else {\n                        const yv = toJSON(parent.y.get(k));\n                        if (deepEqual(yv, parent.p[k])) {\n                            return;\n                        }\n                        insertYValueToP(yv, parent.p, k);\n                    }\n                });\n            }\n            else if (parent.y instanceof Y.Array) {\n                if (deepEqual(parent.p, toJSON(parent.y))) {\n                    return;\n                }\n                let retain = 0;\n                event.changes.delta.forEach((item) => {\n                    if (item.retain) {\n                        retain += item.retain;\n                    }\n                    if (item.delete) {\n                        parent.p.splice(retain, item.delete);\n                    }\n                    if (item.insert) {\n                        if (Array.isArray(item.insert)) {\n                            item.insert.forEach((yv, i) => {\n                                insertYValueToP(yv, parent.p, retain + i);\n                            });\n                        }\n                        else {\n                            insertYValueToP(item.insert, parent.p, retain);\n                        }\n                        retain += item.insert.length;\n                    }\n                });\n            }\n        });\n    };\n    y.observeDeep(observer);\n    return () => {\n        y.unobserveDeep(observer);\n    };\n}\n"]}