{"version":3,"file":"breeze-client-adapter-model-library-ko.mjs","sources":["../../src/adapter-model-library-ko.ts","../../src/breeze-client-adapter-model-library-ko.ts"],"sourcesContent":["import * as breeze from 'breeze-client';\r\n\r\nlet core = breeze.core;\r\n\r\nlet canIsolateES5Props = core.isES5Supported;\r\nlet ko: any;\r\n\r\nexport class ModelLibraryKnockoutAdapter implements breeze.ModelLibraryAdapter {\r\n  name: string;\r\n  constructor() {\r\n    this.name = \"ko\";\r\n  }\r\n\r\n  static register(config?: breeze.BreezeConfig) {\r\n    config = config || breeze.config;\r\n    config.registerAdapter(\"modelLibrary\", ModelLibraryKnockoutAdapter);\r\n    return config.initializeAdapterInstance(\"modelLibrary\", \"ko\", true) as ModelLibraryKnockoutAdapter;\r\n  }\r\n\r\n  initialize() {\r\n    ko = core.requireLib(\"ko;knockout\", \"The Knockout library\");\r\n    ko.extenders.intercept = function (target: any, interceptorOptions: any) {\r\n      let instance = interceptorOptions.instance;\r\n      let property = interceptorOptions.property;\r\n\r\n      // create a computed observable to intercept writes to our observable\r\n      let result: any;\r\n      if (target.splice) {\r\n        result = ko.computed({\r\n          read: target  //always return the original observables value\r\n        });\r\n      } else {\r\n        result = ko.computed({\r\n          read: target,  //always return the original observables value\r\n          write: function (newValue: any) {\r\n            instance._$interceptor(property, newValue, target);\r\n            return instance;\r\n          }\r\n        });\r\n      }\r\n      //return the new computed observable\r\n      return result;\r\n    };\r\n\r\n  }\r\n\r\n  getTrackablePropertyNames(entity: any) {\r\n    let names: string[] = [];\r\n    for (let p in entity) {\r\n      if (p === \"entityType\") continue;\r\n      if (p === \"_$typeName\") continue;\r\n\r\n      let propDescr = getES5PropDescriptor(entity, p);\r\n      if (propDescr && propDescr.get) {\r\n        names.push(p);\r\n      } else {\r\n        let val = entity[p];\r\n        if (ko.isObservable(val)) {\r\n          names.push(p);\r\n        } else if (!core.isFunction(val)) {\r\n          names.push(p);\r\n        }\r\n      }\r\n    }\r\n    return names;\r\n  }\r\n\r\n  initializeEntityPrototype(proto: any) {\r\n\r\n    proto.getProperty = function (propertyName: string) {\r\n      return this[propertyName]();\r\n    };\r\n\r\n    proto.setProperty = function (propertyName: string, value: any) {\r\n      this[propertyName](value);\r\n      // allow set property chaining.\r\n      return this;\r\n    };\r\n\r\n    if (canIsolateES5Props) {\r\n      isolateES5Props(proto);\r\n    }\r\n\r\n  }\r\n\r\n  startTracking(entity: any, proto: any) {\r\n    // create ko's for each property and assign defaultValues\r\n\r\n    let stype = (entity.entityType || entity.complexType) as breeze.StructuralType;\r\n    let es5Descriptors = stype._extra.es5Descriptors || {};\r\n\r\n    // sort unmapped properties to the end\r\n    stype.getProperties().sort(function (p1, p2) {\r\n      let v1 = p1.isUnmapped ? 1 : 0;\r\n      let v2 = p2.isUnmapped ? 1 : 0;\r\n      return v1 - v2;\r\n    }).forEach(function (prop) {\r\n      let propName = prop.name;\r\n      let val = entity[propName];\r\n      let propDescr = es5Descriptors[propName];\r\n      let koObj: any;\r\n\r\n      // check if property is an ES5 property\r\n      if (propDescr) {\r\n        let getFn = propDescr.get.bind(entity);\r\n        if (propDescr.set) {\r\n          let setFn = propDescr.set.bind(entity);\r\n          let rawAccessorFn = function (newValue: any) {\r\n            if (arguments.length === 0) {\r\n              getFn();\r\n              return;\r\n            } else {\r\n              setFn(newValue);\r\n            }\r\n          };\r\n          koObj = ko.computed({\r\n            read: function () {\r\n              (stype as any)._koDummy();\r\n              return getFn();\r\n            },\r\n            write: function (newValue: any) {\r\n              entity._$interceptor(prop, newValue, rawAccessorFn);\r\n              (stype as any)._koDummy.valueHasMutated();\r\n              return entity;\r\n            }\r\n          });\r\n        } else {\r\n          koObj = ko.computed({\r\n            read: getFn,\r\n            write: function () {\r\n            }\r\n\r\n          });\r\n        }\r\n        // check if property is already exposed as a ko object\r\n      } else if (ko.isObservable(val)) {\r\n        if (prop.isNavigationProperty) {\r\n          throw new Error(\"Cannot assign a navigation property in an entity ctor.: \" + propName);\r\n        }\r\n        koObj = val;\r\n        // otherwise\r\n      } else {\r\n        val = initializeValueForProp(entity, prop, val);\r\n        koObj = prop.isScalar ? ko.observable(val) : ko.observableArray(val);\r\n      }\r\n\r\n\r\n      if (prop.isScalar) {\r\n        if (propDescr) {\r\n          Object.defineProperty(entity, propName, {\r\n            enumerable: true,\r\n            configurable: true,\r\n            writable: true,\r\n            value: koObj\r\n          });\r\n        } else {\r\n          let koExt = koObj.extend({ intercept: { instance: entity, property: prop } });\r\n          entity[propName] = koExt;\r\n        }\r\n      } else {\r\n        val._koObj = koObj;\r\n        // code to suppress extra breeze notification when\r\n        // ko's array methods are called.\r\n        koObj.subscribe(onBeforeChange, null, \"beforeChange\");\r\n        // code to insure that any direct breeze changes notify ko\r\n        val.arrayChanged.subscribe(onArrayChanged);\r\n\r\n        koObj.equalityComparer = function () {\r\n          throw new Error(\"Collection navigation properties may NOT be set.\");\r\n        };\r\n        entity[propName] = koObj;\r\n      }\r\n\r\n    });\r\n\r\n  }\r\n}\r\n\r\nbreeze.config.registerAdapter(\"modelLibrary\", ModelLibraryKnockoutAdapter);\r\n\r\n\r\n// private fns\r\n\r\nfunction getES5PropDescriptor(proto: any, propName: string): any {\r\n  if (!canIsolateES5Props) {\r\n    return null;\r\n  }\r\n  if (proto.hasOwnProperty(propName)) {\r\n    return Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(proto, propName);\r\n  } else {\r\n    let nextProto = Object.getPrototypeOf(proto);\r\n    return nextProto ? getES5PropDescriptor(nextProto, propName) : null;\r\n  }\r\n}\r\n\r\nfunction initializeValueForProp(entity: any, prop: breeze.EntityProperty, val: any) {\r\n  if (prop instanceof breeze.DataProperty) {\r\n    if (prop.isComplexProperty) {\r\n      // TODO: right now we create Empty complexObjects here - these should actually come from the entity\r\n      if (prop.isScalar) {\r\n        val = (prop.dataType as breeze.ComplexType)._createInstanceCore(entity, prop);\r\n      } else {\r\n        val = breeze.makeComplexArray([], entity, prop);\r\n      }\r\n    } else if (!prop.isScalar) {\r\n      val = breeze.makePrimitiveArray([], entity, prop);\r\n    } else if (val === undefined) {\r\n      val = prop.defaultValue;\r\n    }\r\n\r\n  } else if (prop instanceof breeze.NavigationProperty) {\r\n    if (val !== undefined) {\r\n      throw new Error(\"Cannot assign a navigation property in an entity ctor.: \" + prop.name);\r\n    }\r\n    if (prop.isScalar) {\r\n      // TODO: change this to nullEntity later.\r\n      val = null;\r\n    } else {\r\n      val = breeze.makeRelationArray([], entity, prop);\r\n    }\r\n  } else {\r\n    throw new Error(\"unknown property: \" + (prop as any).name);\r\n  }\r\n  return val;\r\n}\r\n\r\n\r\nfunction onBeforeChange(args: any) {\r\n  args._koObj._suppressBreeze = true;\r\n}\r\n\r\nfunction onArrayChanged(args: any) {\r\n  let koObj = args.array._koObj;\r\n  if (koObj._suppressBreeze) {\r\n    koObj._suppressBreeze = false;\r\n  } else {\r\n    koObj.valueHasMutated();\r\n  }\r\n}\r\n\r\nfunction isolateES5Props(proto: any) {\r\n  let stype = (proto.entityType || proto.complexType) as breeze.StructuralType;\r\n  let es5Descriptors = {};\r\n  stype.getProperties().forEach(function (prop) {\r\n    let propDescr = getES5PropDescriptor(proto, prop.name);\r\n    if (propDescr) {\r\n      es5Descriptors[prop.name] = propDescr;\r\n    }\r\n  });\r\n  if (!core.isEmpty(es5Descriptors)) {\r\n    let extra = stype._extra;\r\n    extra.es5Descriptors = es5Descriptors;\r\n    (stype as any)._koDummy = ko.observable(null);\r\n  }\r\n}\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './adapter-model-library-ko';\n"],"names":[],"mappings":"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"}