diff --git a/elements/design-host/design-host.html b/elements/design-host/design-host.html
index 27f11408..c562f158 100644
--- a/elements/design-host/design-host.html
+++ b/elements/design-host/design-host.html
@@ -57,7 +57,10 @@
var props = [];
Object.keys(this.model).forEach(function(k) {
if (serializeScriptBlacklist.indexOf(k) < 0) {
- props.push(serializePropertyValue(k, this.model, indent, tab));
+ var propString = serializePropertyValue(k, this.model, indent, tab);
+ if (propString) {
+ props.push(propString);
+ }
}
}, this);
s += props.join(',\n' + indent + tab);
@@ -146,7 +149,7 @@
});
var serializeScriptBlacklist = ['$'];
-var MAX_SERIALIZE_ARRAY_LENGTH = 5;
+var MAX_SERIALIZE_LENGTH = 5;
function serializePropertyValue(name, obj, indent, tab) {
var value = obj[name], type = typeof value;
@@ -158,11 +161,17 @@
value = '\'' + value + '\'';
break;
case 'object':
- if (Array.isArray(value) && value.length > MAX_SERIALIZE_ARRAY_LENGTH) {
+ var length = value ? (Array.isArray(value) ? value.length :
+ Object.keys(value).length) : 0;
+ if (length > MAX_SERIALIZE_LENGTH) {
value = null;
} else {
- value = JSON.stringify(value, null, tab);
- value = value.replace(/\n/g, '\n' + indent + tab);
+ try {
+ value = JSON.stringify(value, null, tab);
+ value = value.replace(/\n/g, '\n' + indent + tab);
+ } catch(e) {
+ value = null;
+ }
}
break;
}