--- /dev/null
+/**
+ * @file
+ * A Backbone Model subclass that enforces validation when calling set().
+ */
+
+(function (Drupal, Backbone) {
+ Drupal.quickedit.BaseModel = Backbone.Model.extend(/** @lends Drupal.quickedit.BaseModel# */{
+
+ /**
+ * @constructs
+ *
+ * @augments Backbone.Model
+ *
+ * @param {object} options
+ * Options for the base model-
+ *
+ * @return {Drupal.quickedit.BaseModel}
+ * A quickedit base model.
+ */
+ initialize(options) {
+ this.__initialized = true;
+ return Backbone.Model.prototype.initialize.call(this, options);
+ },
+
+ /**
+ * Set a value on the model
+ *
+ * @param {object|string} key
+ * The key to set a value for.
+ * @param {*} val
+ * The value to set.
+ * @param {object} [options]
+ * Options for the model.
+ *
+ * @return {*}
+ * The result of `Backbone.Model.prototype.set` with the specified
+ * parameters.
+ */
+ set(key, val, options) {
+ if (this.__initialized) {
+ // Deal with both the "key", value and {key:value}-style arguments.
+ if (typeof key === 'object') {
+ key.validate = true;
+ }
+ else {
+ if (!options) {
+ options = {};
+ }
+ options.validate = true;
+ }
+ }
+ return Backbone.Model.prototype.set.call(this, key, val, options);
+ },
+
+ });
+}(Drupal, Backbone));