diff --git a/dist/datamodel/node/BaseNode.d.ts b/dist/datamodel/node/BaseNode.d.ts index 89912761..eb4f97b4 100644 --- a/dist/datamodel/node/BaseNode.d.ts +++ b/dist/datamodel/node/BaseNode.d.ts @@ -11,6 +11,7 @@ export interface PropClass { unformat?: (text: string) => string; sourceKeys?: string[]; format: (value: unknown) => string; + editableFor?: (node: BaseNode) => boolean; } export interface PropInfo { key: string; diff --git a/dist/datamodel/node/BaseNode.d.ts.map b/dist/datamodel/node/BaseNode.d.ts.map index 34817b28..d1122911 100644 --- a/dist/datamodel/node/BaseNode.d.ts.map +++ b/dist/datamodel/node/BaseNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAGhD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,EAAE,CAAC;IAM3C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAIpC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IAKnC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;CAC3C;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IAMf,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACjG,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IAIzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAQ/B,QAAQ,CAAC,EAAE,MAAM,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,MAAM,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC;IAC5G,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC;AAE5F;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;AAEnE,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE;QAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAAC,MAAM,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;IAC5D,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAkBD,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAmBxE,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACpF;IAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvC;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAOlF;AAED,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAIjB,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;gBAEjC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI;IAMjD,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAID,IAAI,SAAS,IAAI,MAAM,CAEtB;IAKD,YAAY,IAAI,MAAM;IAMtB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAKD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAID,IAAI,aAAa,IAAI,OAAO,CAK3B;IAQD,IAAI,aAAa,IAAI,OAAO,CAE3B;IAQD,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAOD,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,YAAY,IAAI,OAAO,CAqB1B;IAQD,qBAAqB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;IAE7C,WAAW,IAAI,OAAO;IAItB,YAAY,IAAI,QAAQ,GAAG,IAAI;IAI/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ;IAenD,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAUlC,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO;IAyBxC,wBAAwB,IAAI,IAAI;IAchC,gBAAgB,IAAI,IAAI;IA0CxB,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS;IAkC5C,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS;IAejE,OAAO,IAAI,QAAQ,EAAE;IA6BrB,OAAO,CAAC,kBAAkB;IAS1B,IAAI,WAAW,IAAI,MAAM,CAGxB;IAED;;;;;OAKG;IACH,IAAI,UAAU,IAAI,MAAM,CASvB;IAED;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI;IA0CrD,IAAI,aAAa,IAAI,OAAO,CAU3B;IAgBD,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED,WAAW,CAAC,YAAY,EAAE,SAAS,GAAG,QAAQ;IAgD9C,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,GAAG,IAAI;IA8FzC,aAAa,IAAI,SAAS,EAAE;IAW5B,WAAW,IAAI,UAAU,EAAE,GAAG,IAAI;IAIlC,UAAU,IAAI,QAAQ,GAAG,IAAI;IAmH7B,SAAS,IAAI,OAAO;CAGrB"} \ No newline at end of file diff --git a/dist/datamodel/node/BaseNode.js b/dist/datamodel/node/BaseNode.js index e380457c..76b4b108 100644 --- a/dist/datamodel/node/BaseNode.js +++ b/dist/datamodel/node/BaseNode.js @@ -428,6 +428,9 @@ export default class BaseNode { if (key === 'Description') { editable = editable && this.descriptionEditable; } + if (editable && PropClassRef.editableFor) { + editable = PropClassRef.editableFor(this); + } // Every other column of a node whose value is still an encoded stream, schema-projected // ones included (Storage Class, Data Type…): they are all inside the stream. The Name // was answered above, by nameEditable. diff --git a/dist/datamodel/node/BaseNode.js.map b/dist/datamodel/node/BaseNode.js.map index 073a9d59..c2dfbede 100644 --- a/dist/datamodel/node/BaseNode.js.map +++ b/dist/datamodel/node/BaseNode.js.map @@ -1 +1 @@ -{"version":3,"file":"BaseNode.js","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAqHlE,gFAAgF;AAChF,yEAAyE;AACzE,gFAAgF;AAChF,6DAA6D;AAC7D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAmCrH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,IAAiC;IAC/D,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAE,CAA0C,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/F,IAAK,CAAuC,CAAC,QAAQ,EAAE,CAAC;YACtD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,QAAQ;IAa3B,YAAY,IAAY,EAAE,MAAuB;QAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACpE,CAAC;IAED,IAAI,IAAI;QACN,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,6EAA6E;IAC7E,UAAU;IACV,IAAI,SAAS;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,8FAA8F;IAC9F,0FAA0F;IAC1F,wEAAwE;IACxE,YAAY;QACV,OAAO,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,0EAA0E;IAC1E,8EAA8E;IAC9E,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,gDAAgD;IAChD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gFAAgF;IAChF,kEAAkE;IAClE,IAAI,aAAa;QACf,OAAO,CAAC,CAAC,CACP,IAAI,CAAC,MAAM;YACX,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAClG,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,8EAA8E;IAC9E,iFAAiF;IACjF,iFAAiF;IACjF,kFAAkF;IAClF,qCAAqC;IACrC,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IACxE,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,+EAA+E;IAC/E,iFAAiF;IACjF,0CAA0C;IAC1C,IAAI,mBAAmB;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mFAAmF;IACnF,sFAAsF;IACtF,kFAAkF;IAClF,uFAAuF;IACvF,gDAAgD;IAChD,IAAI,eAAe;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,YAAY;QACd,oFAAoF;QACpF,0EAA0E;QAC1E,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,0DAA0D;QAC1D,IAAI,IAAI,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+EAA+E;IAC/E,iFAAiF;IACjF,8EAA8E;IAC9E,+EAA+E;IAC/E,6EAA6E;IAC7E,0CAA0C;IAC1C,qBAAqB,CAAC,MAAgB,IAAS,CAAC;IAEhD,WAAW;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,KAAe,EAAE,KAAc;QACtC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,uFAAuF;QACvF,8EAA8E;QAC9E,qFAAqF;QACrF,yFAAyF;QACzF,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW,CAAC,KAAe;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YACpB,yEAAyE;YACzE,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED,YAAY,CAAC,OAAiB;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,EAAE;IACF,wFAAwF;IACxF,sFAAsF;IACtF,uFAAuF;IACvF,6EAA6E;IAC7E,0CAA0C;IAC1C,EAAE;IACF,uFAAuF;IACvF,wFAAwF;IACxF,mBAAmB;IACnB,wBAAwB;QACtB,IAAI,IAAI,GAAa,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACA,IAAgD,CAAC,cAAc,GAAG,IAAI,CAAC;IAC1E,CAAC;IAED,gFAAgF;IAChF,gFAAgF;IAChF,4EAA4E;IAC5E,gFAAgF;IAChF,gFAAgF;IAChF,sCAAsC;IACtC,gBAAgB;QACd,IAAI,IAAI,GAAa,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,MAAM,MAAM,GAAG,IAAsC,CAAC;QACtD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,wFAAwF;QACxF,sFAAsF;QACtF,sDAAsD;QACtD,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAED,8EAA8E;IAC9E,EAAE;IACF,qFAAqF;IACrF,gFAAgF;IAChF,sFAAsF;IACtF,oFAAoF;IACpF,6EAA6E;IAC7E,kFAAkF;IAClF,oFAAoF;IACpF,mFAAmF;IACnF,uFAAuF;IACvF,uEAAuE;IACvE,EAAE;IACF,sFAAsF;IACtF,wFAAwF;IACxF,sFAAsF;IACtF,wFAAwF;IACxF,uFAAuF;IACvF,iFAAiF;IACjF,wFAAwF;IACxF,uFAAuF;IACvF,sFAAsF;IACtF,cAAc;IACd,EAAE;IACF,mFAAmF;IACnF,qFAAqF;IACrF,wBAAwB;IACxB,WAAW;QACT,IAAI,IAAI,GAAa,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,MAAM,OAAO,GAAI,IAAsD,CAAC,cAAc,CAAC;QACvF,oFAAoF;QACpF,oFAAoF;QACpF,+EAA+E;QAC/E,8EAA8E;QAC9E,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,qFAAqF;QACrF,sFAAsF;QACtF,sFAAsF;QACtF,8CAA8C;QAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;IACzF,CAAC;IAED,kFAAkF;IAClF,yFAAyF;IACzF,uFAAuF;IACvF,gEAAgE;IAChE,EAAE;IACF,uFAAuF;IACvF,wFAAwF;IACxF,uFAAuF;IACvF,oFAAoF;IACpF,6EAA6E;IAC7E,aAAa,CAAC,QAAiB;QAC7B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YACpD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,GAAa,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,MAAM,OAAO,GAAI,IAA4D,CAAC,iBAAiB,CAAC;QAChG,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,SAAS,CAAC;IACtD,CAAC;IAED,OAAO;QACL,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAe,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,oFAAoF;IACpF,+CAA+C;IAC/C,EAAE;IACF,qFAAqF;IACrF,iFAAiF;IACjF,mFAAmF;IACnF,oFAAoF;IACpF,+EAA+E;IAC/E,EAAE;IACF,kFAAkF;IAClF,mFAAmF;IACnF,kFAAkF;IAClF,0EAA0E;IAC1E,qEAAqE;IACrE,4EAA4E;IAC5E,+DAA+D;IACvD,kBAAkB;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAO,CAAC,QAAQ,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,WAAW;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC;IAClG,CAAC;IAED;;;;;OAKG;IACH,IAAI,UAAU;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC9B,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,IAAK,MAA+C,CAAC,WAAW,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;IAC1F,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,WAAyB;QACnC,iFAAiF;QACjF,oFAAoF;QACpF,oFAAoF;QACpF,mFAAmF;QACnF,SAAS;QACT,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YAC1B,OAAO,IAAI,IAAI,CAAC;gBACd,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC;gBACjD,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACzE,CAAC;QACD,IACE,IAAI,CAAC,MAAM;YACX,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,EACjG,CAAC;YACD,yEAAyE;YACzE,sEAAsE;YACtE,EAAE;YACF,sEAAsE;YACtE,8DAA8D;YAC9D,qEAAqE;YACrE,2EAA2E;YAC3E,2EAA2E;YAC3E,2EAA2E;YAC3E,uEAAuE;YACvE,EAAE;YACF,wEAAwE;YACxE,4EAA4E;YAC5E,uEAAuE;YACvE,iCAAiC;YACjC,OAAO,cAAc,CACnB,WAAW,EAAE,EACb,IAAI,CAAC,kBAAkB,EAAE,EACzB,IAAI,CAAC,MAAM,CAAC,KAAK,EACjB,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,EAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC3C,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,aAAa;QACf,kFAAkF;QAClF,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qFAAqF;IACrF,kFAAkF;IAClF,qFAAqF;IACrF,uEAAuE;IACvE,mFAAmF;IACnF,qCAAqC;IACrC,EAAE;IACF,sFAAsF;IACtF,oFAAoF;IACpF,uFAAuF;IACvF,EAAE;IACF,8EAA8E;IAC9E,oFAAoF;IACpF,8BAA8B;IAC9B,IAAI,mBAAmB;QACrB,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,WAAW,CAAC,YAAuB;QACjC,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;QAC7B,IAAI,YAAoB,CAAC;QACzB,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;YAC3B,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,YAAY,CAAC,MAAM,CAAE,IAA2C,CAAC,GAAG,CAAC,CAAC,CAAC;QACxF,CAAC;QAED,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,KAAK,OAAO,CAAC;QAC/C,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC;QAC3C,CAAC;QACD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC;QAC5C,CAAC;QACD,oFAAoF;QACpF,qFAAqF;QACrF,iBAAiB;QACjB,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAC1B,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC;QAClD,CAAC;QACD,wFAAwF;QACxF,sFAAsF;QACtF,uCAAuC;QACvC,IAAI,GAAG,KAAK,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;QAED,OAAO;YACL,GAAG;YACH,WAAW,EAAE,YAAY,CAAC,WAAW;YACrC,KAAK,EAAG,IAA2C,CAAC,YAAY,CAAC,YAAY,IAAI,GAAG,CAAC;YACrF,YAAY;YACZ,QAAQ;YACR,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC/E,CAAC;IACJ,CAAC;IAED,sFAAsF;IACtF,8EAA8E;IAC9E,mFAAmF;IACnF,uFAAuF;IACvF,kFAAkF;IAClF,KAAK,CAAC,IAAkB;QACtB,MAAM,QAAQ,GACZ,IAAI,CAAC,MAAM,IAAI,CAAE,IAAI,CAAC,MAA+C,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5G,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,MAAM,GAAG,GAAY;YACnB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAG,IAAuC,CAAC,MAAM,IAAI,EAAE;SAC9D,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC;YAElC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5I,CAAC;iBAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,oEAAoE;gBACpE,yDAAyD;gBACzD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC7B,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBAClH,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;gBAChC,CAAC;gBACD,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;YACrC,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3D,wEAAwE;gBACxE,uEAAuE;gBACvE,0EAA0E;gBAC1E,0EAA0E;gBAC1E,+DAA+D;gBAC/D,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YACxG,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YAClC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/I,CAAC;QACD,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;YAC9B,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,CAAC,aAAa,IAAI,GAAG,CAAC,EAAE,CAAC;YAC5B,GAAG,CAAC,WAAW,GAAI,IAA4C,CAAC,WAAW,IAAI,EAAE,CAAC;QACpF,CAAC;QACD,gFAAgF;QAChF,uEAAuE;QACvE,iFAAiF;QACjF,qEAAqE;QACrE,GAAG,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAEpD,mFAAmF;QACnF,mFAAmF;QACnF,mFAAmF;QACnF,qFAAqF;QACrF,qFAAqF;QACrF,sEAAsE;QACtE,mFAAmF;QACnF,oFAAoF;QACpF,0EAA0E;QAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,CAAC;QAED,sFAAsF;QACtF,+EAA+E;QAC/E,sFAAsF;QACtF,oFAAoF;QACpF,uFAAuF;QACvF,qFAAqF;QACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,CAAC;IAED,aAAa;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,uEAAuE;IACvE,wEAAwE;IACxE,2EAA2E;IAC3E,4EAA4E;IAC5E,gFAAgF;IAChF,8EAA8E;IAC9E,iCAAiC;IACjC,WAAW;QACT,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,UAAU;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,UAAU,GAAc,EAAE,CAAC;QACjC,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,MAAM,GAAG,GAA4B,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;QAElE,+EAA+E;QAC/E,6EAA6E;QAC7E,yEAAyE;QACzE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,UAAU,GAAc,EAAE,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC5C,0EAA0E;gBAC1E,+EAA+E;gBAC/E,0CAA0C;gBAC1C,EAAE;gBACF,iFAAiF;gBACjF,kFAAkF;gBAClF,gFAAgF;gBAChF,kFAAkF;gBAClF,sDAAsD;gBACtD,EAAE;gBACF,kFAAkF;gBAClF,oFAAoF;gBACpF,qFAAqF;gBACrF,mFAAmF;gBACnF,mFAAmF;gBACnF,8DAA8D;gBAC9D,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC;gBACrC,MAAM,MAAM,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC;gBAC/D,MAAM,QAAQ,GAAG,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3F,MAAM,SAAS,GACb,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ;oBACjF,CAAC,CAAC,QAAQ,CAAC,UAAU;oBACrB,CAAC,CAAC,SAAS,CAAC;gBAChB,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,IAAI,CAAC,GAAG;oBACd,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,QAAQ,EAAE,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;oBACrD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,sCAAsC;oBAC3G,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,IAAI;oBAC9E,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,KAAK,EAAE,IAAI;oBACX,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;iBAClD,CAAC,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;gBACtD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;gBAClC,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;gBACxF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;oBACrB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,6EAA6E;YAC7E,8EAA8E;YAC9E,8EAA8E;YAC9E,gFAAgF;YAChF,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACvE,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,GAAG,OAAO;gBACzD,IAAI,EAAE,OAAO;gBACb,WAAW;gBACX,KAAK,EAAE,UAAU;gBACjB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,+EAA+E;QAC/E,4DAA4D;QAC5D,MAAM,QAAQ,GAAI,IAA0D,CAAC,MAAM,EAAE,WAAW,CAAC;QACjG,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,UAAU,GAAc,EAAE,CAAC;YACjC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;gBACrC,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,GAAG,CAAC,IAAI;oBACrB,QAAQ,EAAE,MAAM;oBAChB,QAAQ,EAAE,sCAAsC;oBAChD,aAAa,EAAE,IAAI;oBACnB,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,KAAK;oBACf,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;gBACtD,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;YAC5B,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,OAAO;gBACpB,KAAK,EAAE,UAAU;gBACjB,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;YACrC,OAAO,EAAE,CAAC,GAAG,CAAC;YACd,UAAU,EAAE,IAAI;YAChB,gBAAgB,EAAE,KAAK;SACxB,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC;IACd,CAAC;CACF"} \ No newline at end of file +{"version":3,"file":"BaseNode.js","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/data/BreakpointNode.d.ts b/dist/datamodel/node/data/BreakpointNode.d.ts index fc40b274..4d5affca 100644 --- a/dist/datamodel/node/data/BreakpointNode.d.ts +++ b/dist/datamodel/node/data/BreakpointNode.d.ts @@ -1,6 +1,7 @@ import SimulinkObjectNode from '../SimulinkObjectNode.js'; import type { PropClass } from '../BaseNode.js'; import type BaseNode from '../BaseNode.js'; +import type { SetPropertyResult } from '../DataNode.js'; export default class BreakpointNode extends SimulinkObjectNode { Description: string; constructor(name: string, parent: BaseNode | null, props: Record, serial: Record); @@ -9,7 +10,8 @@ export default class BreakpointNode extends SimulinkObjectNode { get displayValue(): string; get valueEditable(): boolean; getProperties(): PropClass[]; - _serializedOverrides(): Record; + get descriptionEditable(): boolean; + setProperty(propName: string, stringValue: string): true | SetPropertyResult; static get defaultName(): string; static createDefault(name: string, parent: BaseNode | null): BreakpointNode; static parse(rawVal: Record, name: string, parent: BaseNode | null): BreakpointNode; diff --git a/dist/datamodel/node/data/BreakpointNode.d.ts.map b/dist/datamodel/node/data/BreakpointNode.d.ts.map index 450c8c42..dad49c9b 100644 --- a/dist/datamodel/node/data/BreakpointNode.d.ts.map +++ b/dist/datamodel/node/data/BreakpointNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"BreakpointNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/BreakpointNode.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAK3C,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,kBAAkB;IAC1D,WAAW,EAAE,MAAM,CAAC;gBACR,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClH,IAAI,IAAI,IAAI,MAAM,CAAmC;IACrD,IAAI,SAAS,IAAI,MAAM,CAAuB;IAE9C,IAAI,YAAY,IAAI,MAAM,CAAe;IACzC,IAAI,aAAa,IAAI,OAAO,CAAkB;IAC9C,aAAa,IAAI,SAAS,EAAE;IAE5B,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/C,MAAM,KAAK,WAAW,IAAI,MAAM,CAAyB;IAQzD,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,cAAc;IAC3E,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,cAAc;CACvG"} \ No newline at end of file +{"version":3,"file":"BreakpointNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/BreakpointNode.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAIxD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,kBAAkB;IAO1D,WAAW,EAAE,MAAM,CAAC;gBACR,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClH,IAAI,IAAI,IAAI,MAAM,CAAmC;IACrD,IAAI,SAAS,IAAI,MAAM,CAAuB;IAE9C,IAAI,YAAY,IAAI,MAAM,CAAe;IACzC,IAAI,aAAa,IAAI,OAAO,CAAkB;IAC9C,aAAa,IAAI,SAAS,EAAE;IAG5B,IAAI,mBAAmB,IAAI,OAAO,CAAkB;IAGpD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,iBAAiB;IAM5E,MAAM,KAAK,WAAW,IAAI,MAAM,CAAyB;IAQzD,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,cAAc;IAC3E,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,cAAc;CACvG"} \ No newline at end of file diff --git a/dist/datamodel/node/data/BreakpointNode.js b/dist/datamodel/node/data/BreakpointNode.js index a8c8e29d..b852a4a6 100644 --- a/dist/datamodel/node/data/BreakpointNode.js +++ b/dist/datamodel/node/data/BreakpointNode.js @@ -2,7 +2,6 @@ import SimulinkObjectNode from '../SimulinkObjectNode.js'; import PropName from '../../prop/PropName.js'; import PropDataType from '../../prop/PropDataType.js'; -import PropDescription from '../../prop/PropDescription.js'; const CLASS_NAME = 'Simulink.Breakpoint'; export default class BreakpointNode extends SimulinkObjectNode { constructor(name, parent, props, serial) { super(name, parent, serial); this.Description = props.Description || ''; } @@ -11,9 +10,18 @@ export default class BreakpointNode extends SimulinkObjectNode { // A Breakpoint has no scalar "value" — the Value column is empty and not editable. get displayValue() { return ''; } get valueEditable() { return false; } - getProperties() { return [PropName, PropDataType, PropDescription]; } + getProperties() { return [PropName, PropDataType]; } // PI layout: schema-driven "General" group (classes/breakpoint.json). - _serializedOverrides() { return this._gatedProps({ Description: this.Description }); } + // No editor in the table (`row._descriptionEditable`) or the Property Inspector. + get descriptionEditable() { return false; } + // An edit is refused in MATLAB's words, rather than accepted and saved as a key MATLAB + // ignores on load, which is what an edit here used to do. + setProperty(propName, stringValue) { + if (propName === 'Description') { + return { error: true, reason: `Unrecognized property 'Description' for class '${CLASS_NAME}'.`, invalidValue: stringValue, validValue: this.Description }; + } + return super.setProperty(propName, stringValue); + } static get defaultName() { return 'Breakpoint'; } // MEASURED from what MATLAB R2027a writes for `Simulink.Breakpoint` with nothing set, in // MATLAB's own alphabetical key order. Three of the four properties are themselves nested diff --git a/dist/datamodel/node/data/BreakpointNode.js.map b/dist/datamodel/node/data/BreakpointNode.js.map index c60009c4..1d082902 100644 --- a/dist/datamodel/node/data/BreakpointNode.js.map +++ b/dist/datamodel/node/data/BreakpointNode.js.map @@ -1 +1 @@ -{"version":3,"file":"BreakpointNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/BreakpointNode.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAG1D,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAC5D,MAAM,UAAU,GAAG,qBAAqB,CAAC;AACzC,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,kBAAkB;IAE1D,YAAY,IAAY,EAAE,MAAuB,EAAE,KAA8B,EAAE,MAA+B,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAI,KAAK,CAAC,WAAsB,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5M,IAAI,IAAI,KAAa,OAAO,sBAAsB,CAAC,CAAC,CAAC;IACrD,IAAI,SAAS,KAAa,OAAO,UAAU,CAAC,CAAC,CAAC;IAC9C,mFAAmF;IACnF,IAAI,YAAY,KAAa,OAAO,EAAE,CAAC,CAAC,CAAC;IACzC,IAAI,aAAa,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAC9C,aAAa,KAAkB,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAClF,sEAAsE;IACtE,oBAAoB,KAA8B,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/G,MAAM,KAAK,WAAW,KAAa,OAAO,YAAY,CAAC,CAAC,CAAC;IACzD,yFAAyF;IACzF,0FAA0F;IAC1F,8FAA8F;IAC9F,4FAA4F;IAC5F,oFAAoF;IACpF,wFAAwF;IACxF,oFAAoF;IACpF,MAAM,CAAC,aAAa,CAAC,IAAY,EAAE,MAAuB,IAAoB,MAAM,MAAM,GAAG,cAAc,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,WAAW,EAAE,EAAE,aAAa,EAAE,iCAAiC,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,cAAc,EAAE,EAAE,aAAa,EAAE,qCAAqC,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAA6B,CAAC,CAAC,CAAC,CAAC;IACnuB,MAAM,CAAC,KAAK,CAAC,MAA+B,EAAE,IAAY,EAAE,MAAuB,IAAoB,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAA6B,CAAC,CAAC,CAAC,CAAC;CAC9Q"} \ No newline at end of file +{"version":3,"file":"BreakpointNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/BreakpointNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/data/LookupTableNode.d.ts b/dist/datamodel/node/data/LookupTableNode.d.ts index 2f26aee7..e033f9bc 100644 --- a/dist/datamodel/node/data/LookupTableNode.d.ts +++ b/dist/datamodel/node/data/LookupTableNode.d.ts @@ -1,6 +1,7 @@ import SimulinkObjectNode from '../SimulinkObjectNode.js'; import type { PropClass } from '../BaseNode.js'; import type BaseNode from '../BaseNode.js'; +import type { SetPropertyResult } from '../DataNode.js'; export default class LookupTableNode extends SimulinkObjectNode { Description: string; constructor(name: string, parent: BaseNode | null, props: Record, serial: Record); @@ -9,7 +10,8 @@ export default class LookupTableNode extends SimulinkObjectNode { get displayValue(): string; get valueEditable(): boolean; getProperties(): PropClass[]; - _serializedOverrides(): Record; + get descriptionEditable(): boolean; + setProperty(propName: string, stringValue: string): true | SetPropertyResult; static get defaultName(): string; static createDefault(name: string, parent: BaseNode | null): LookupTableNode; static parse(rawVal: Record, name: string, parent: BaseNode | null): LookupTableNode; diff --git a/dist/datamodel/node/data/LookupTableNode.d.ts.map b/dist/datamodel/node/data/LookupTableNode.d.ts.map index c61a111f..e41508bf 100644 --- a/dist/datamodel/node/data/LookupTableNode.d.ts.map +++ b/dist/datamodel/node/data/LookupTableNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"LookupTableNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/LookupTableNode.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAK3C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,kBAAkB;IAC3D,WAAW,EAAE,MAAM,CAAC;gBACR,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClH,IAAI,IAAI,IAAI,MAAM,CAAuB;IACzC,IAAI,SAAS,IAAI,MAAM,CAAuB;IAE9C,IAAI,YAAY,IAAI,MAAM,CAAe;IACzC,IAAI,aAAa,IAAI,OAAO,CAAkB;IAC9C,aAAa,IAAI,SAAS,EAAE;IAE5B,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/C,MAAM,KAAK,WAAW,IAAI,MAAM,CAA0B;IAQ1D,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,eAAe;IAC5E,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,eAAe;CACxG"} \ No newline at end of file +{"version":3,"file":"LookupTableNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/LookupTableNode.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAIxD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,kBAAkB;IAO3D,WAAW,EAAE,MAAM,CAAC;gBACR,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClH,IAAI,IAAI,IAAI,MAAM,CAAuB;IACzC,IAAI,SAAS,IAAI,MAAM,CAAuB;IAE9C,IAAI,YAAY,IAAI,MAAM,CAAe;IACzC,IAAI,aAAa,IAAI,OAAO,CAAkB;IAC9C,aAAa,IAAI,SAAS,EAAE;IAG5B,IAAI,mBAAmB,IAAI,OAAO,CAAkB;IAGpD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,iBAAiB;IAM5E,MAAM,KAAK,WAAW,IAAI,MAAM,CAA0B;IAQ1D,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,eAAe;IAC5E,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,eAAe;CACxG"} \ No newline at end of file diff --git a/dist/datamodel/node/data/LookupTableNode.js b/dist/datamodel/node/data/LookupTableNode.js index 49572f65..c53bf370 100644 --- a/dist/datamodel/node/data/LookupTableNode.js +++ b/dist/datamodel/node/data/LookupTableNode.js @@ -2,7 +2,6 @@ import SimulinkObjectNode from '../SimulinkObjectNode.js'; import PropName from '../../prop/PropName.js'; import PropDataType from '../../prop/PropDataType.js'; -import PropDescription from '../../prop/PropDescription.js'; const CLASS_NAME = 'Simulink.LookupTable'; export default class LookupTableNode extends SimulinkObjectNode { constructor(name, parent, props, serial) { super(name, parent, serial); this.Description = props.Description || ''; } @@ -11,9 +10,18 @@ export default class LookupTableNode extends SimulinkObjectNode { // A LookupTable has no scalar "value" — the Value column is empty and not editable. get displayValue() { return ''; } get valueEditable() { return false; } - getProperties() { return [PropName, PropDataType, PropDescription]; } + getProperties() { return [PropName, PropDataType]; } // PI layout: schema-driven "General" group (classes/lookupTable.json). - _serializedOverrides() { return this._gatedProps({ Description: this.Description }); } + // No editor in the table (`row._descriptionEditable`) or the Property Inspector. + get descriptionEditable() { return false; } + // An edit is refused in MATLAB's words, rather than accepted and saved as a key MATLAB + // ignores on load, which is what an edit here used to do. + setProperty(propName, stringValue) { + if (propName === 'Description') { + return { error: true, reason: `Unrecognized property 'Description' for class '${CLASS_NAME}'.`, invalidValue: stringValue, validValue: this.Description }; + } + return super.setProperty(propName, stringValue); + } static get defaultName() { return 'LookupTable'; } // MEASURED from what MATLAB R2027a writes for `Simulink.LookupTable` with nothing set, in // MATLAB's own alphabetical key order. Four nested objects and two scalars, where the bag used diff --git a/dist/datamodel/node/data/LookupTableNode.js.map b/dist/datamodel/node/data/LookupTableNode.js.map index b3fbd150..3a4e7574 100644 --- a/dist/datamodel/node/data/LookupTableNode.js.map +++ b/dist/datamodel/node/data/LookupTableNode.js.map @@ -1 +1 @@ -{"version":3,"file":"LookupTableNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/LookupTableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"LookupTableNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/LookupTableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/data/SignalNode.d.ts b/dist/datamodel/node/data/SignalNode.d.ts index a11449e7..48b8015b 100644 --- a/dist/datamodel/node/data/SignalNode.d.ts +++ b/dist/datamodel/node/data/SignalNode.d.ts @@ -1,6 +1,6 @@ import DataNode from '../DataNode.js'; import type { SetPropertyResult } from '../DataNode.js'; -import type { PropClass } from '../BaseNode.js'; +import type { PropClass, PIGroupDef } from '../BaseNode.js'; import type BaseNode from '../BaseNode.js'; export default class SignalNode extends DataNode { DataType: string; @@ -8,6 +8,8 @@ export default class SignalNode extends DataNode { Max: number | undefined; Unit: string; Description: string; + Complexity: string; + DimensionsMode: string; constructor(name: string, parent: BaseNode | null, props: Record, serial: Record); get icon(): string; get className(): string; @@ -15,9 +17,11 @@ export default class SignalNode extends DataNode { get valueEditable(): boolean; get dataType(): string; getProperties(): PropClass[]; + getPILayout(): PIGroupDef[] | null; setProperty(propName: string, stringValue: string): true | SetPropertyResult; _getSerializedProperties(): Record; serializeValue(): unknown; + _enumOverrides(sp: Record): Record; static get defaultName(): string; static createDefault(name: string, parent: BaseNode | null): SignalNode; static parse(rawVal: Record, name: string, parent: BaseNode | null): SignalNode; diff --git a/dist/datamodel/node/data/SignalNode.d.ts.map b/dist/datamodel/node/data/SignalNode.d.ts.map index 49fca774..83e258ce 100644 --- a/dist/datamodel/node/data/SignalNode.d.ts.map +++ b/dist/datamodel/node/data/SignalNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"SignalNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/SignalNode.ts"],"names":[],"mappings":"AAEA,OAAO,QAAgC,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAa3C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,QAAQ;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;gBAER,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAgBlH,IAAI,IAAI,IAAI,MAAM,CAA8D;IAKhF,IAAI,SAAS,IAAI,MAAM,CAAmI;IAE1J,IAAI,YAAY,IAAI,MAAM,CAAe;IACzC,IAAI,aAAa,IAAI,OAAO,CAAkB;IAM9C,IAAI,QAAQ,IAAI,MAAM,CAA0B;IAEhD,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,iBAAiB;IAgB5E,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAWnD,cAAc,IAAI,OAAO;IAczB,MAAM,KAAK,WAAW,IAAI,MAAM,CAAqB;IAErD,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU;IAUvE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU;CAMnG"} \ No newline at end of file +{"version":3,"file":"SignalNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/SignalNode.ts"],"names":[],"mappings":"AAEA,OAAO,QAAgC,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AA0B3C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,QAAQ;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IAGpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;gBAEX,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkBlH,IAAI,IAAI,IAAI,MAAM,CAA8D;IAKhF,IAAI,SAAS,IAAI,MAAM,CAAmI;IAE1J,IAAI,YAAY,IAAI,MAAM,CAAe;IACzC,IAAI,aAAa,IAAI,OAAO,CAAkB;IAM9C,IAAI,QAAQ,IAAI,MAAM,CAA0B;IAEhD,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,IAAI,UAAU,EAAE,GAAG,IAAI;IAKlC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,iBAAiB;IAyB5E,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAYnD,cAAc,IAAI,OAAO;IAuBzB,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASpE,MAAM,KAAK,WAAW,IAAI,MAAM,CAAqB;IAErD,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU;IAUvE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU;CAMnG"} \ No newline at end of file diff --git a/dist/datamodel/node/data/SignalNode.js b/dist/datamodel/node/data/SignalNode.js index 729f9074..a06a0aa8 100644 --- a/dist/datamodel/node/data/SignalNode.js +++ b/dist/datamodel/node/data/SignalNode.js @@ -7,10 +7,22 @@ import PropMin from '../../prop/PropMin.js'; import PropMax from '../../prop/PropMax.js'; import PropUnit from '../../prop/PropUnit.js'; import PropDescription from '../../prop/PropDescription.js'; +import PropSignalComplexity from '../../prop/PropSignalComplexity.js'; +import PropSignalDimensionsMode from '../../prop/PropSignalDimensionsMode.js'; import { withSourceKeys } from './BaseBusNode.js'; import { schemaColumns } from '../schemaBridge.js'; import { oneWrite, writeUnderWay } from '../../parser/MatWriter.js'; const CLASS_NAME = 'Simulink.Signal'; +// Complexity and DimensionsMode are editable node fields, so the table and the Property Inspector +// read them through these atoms (the Signal's own enums, auto included) rather than through the +// schema descriptors, which read the source bag and are labels. In place, by key, so the column +// order and the schema layout's order stay what the schema authored. The schema keeps both +// descriptors: Parameter's complexity is one too, and stays a label, derived from its Value. +const ENUM_ATOMS = new Map([ + ['complexity', PropSignalComplexity], + ['dimensionsMode', PropSignalDimensionsMode], +]); +const withEnumAtoms = (props) => props.map((p) => ENUM_ATOMS.get(p.key) ?? p); export default class SignalNode extends DataNode { constructor(name, parent, props, serial) { super(name, parent, serial); @@ -26,6 +38,8 @@ export default class SignalNode extends DataNode { this.Max = props.Max; this.Unit = props.DocUnits || props.Unit || ''; this.Description = props.Description || ''; + this.Complexity = props.Complexity || 'auto'; + this.DimensionsMode = props.DimensionsMode || 'auto'; } get icon() { return this.isDerived ? 'serviceInterfaces' : 'wsSignal'; } // Report the class the FILE actually holds — same reason as ParameterNode's: @@ -41,9 +55,14 @@ export default class SignalNode extends DataNode { // Data Type column. Without this the column and the PI row were blank for // every Signal in every channel even though all four carry the key. get dataType() { return this.DataType; } - getProperties() { return [PropName, withSourceKeys(PropDataType, ['DataType', 'DataType_internal']), PropMin, PropMax, PropUnit, PropDescription, ...schemaColumns(this.className)]; } - // PI layout is now declarative — see schema/classes/signal.json `layout`, - // resolved by the inherited BaseNode.getPILayout via buildPILayout. + getProperties() { return [PropName, withSourceKeys(PropDataType, ['DataType', 'DataType_internal']), PropMin, PropMax, PropUnit, PropDescription, ...withEnumAtoms(schemaColumns(this.className))]; } + // PI layout is declarative (schema/classes/signal.json `layout`, resolved by buildPILayout), + // with the two enum atoms in place of their descriptors, so an edit the table makes shows in + // the PI too (ValueTypeNode.getPILayout gives the full account of that gap). + getPILayout() { + const layout = super.getPILayout(); + return layout && layout.map((g) => ({ ...g, items: withEnumAtoms(g.items) })); + } setProperty(propName, stringValue) { // Its own shown text, set back, is no edit (DataNode._isUnchangedCommit). if (this._isUnchangedCommit(propName, stringValue)) { @@ -57,6 +76,15 @@ export default class SignalNode extends DataNode { if (propName === 'Min' || propName === 'Max') { return this._setMinMax(propName, stringValue); } + // Complexity and DimensionsMode take only the Signal's own enumerals, as MATLAB does; + // the shared check reads the set off the atom the dropdown is built from. Only these + // two: Storage Class is a select too, and the schema path refuses it in its own words. + if (ENUM_ATOMS.has(propName)) { + const notAnEnumeral = this._rejectUnknownEnumeral(propName, stringValue); + if (notAnEnumeral) { + return notAnEnumeral; + } + } return DataNode.prototype.setProperty.call(this, propName, stringValue); } _getSerializedProperties() { @@ -75,6 +103,7 @@ export default class SignalNode extends DataNode { if ('Description' in sp || this.Description) { props.Description = this.Description; } + Object.assign(props, this._enumOverrides(sp)); return props; } serializeValue() { @@ -96,8 +125,29 @@ export default class SignalNode extends DataNode { if ('Description' in sp || this.Description) { overrides.Description = this.Description; } + Object.assign(overrides, this._enumOverrides(sp)); return this._serializeSimulinkObject(overrides); } + // Complexity and DimensionsMode, as both save paths write them: the key when the file had + // it, or when the value is not MATLAB's default. MATLAB's text form has a non-default value + // as a top-level key and no key at 'auto', even for a Signal set to 'complex' and back + // (measured in R2027a), so a Signal whose text file had no key saves with none until it + // leaves 'auto'. A key the file had stays, at 'auto' if set there, which MATLAB reads the + // same; a binary file always has both keys. A clear stores '' (DataNode._rejectUnknownEnumeral), + // which is no value either property has, so it is written as 'auto', what an absent key + // means, and never as ''. + _enumOverrides(sp) { + const overrides = {}; + const complexity = this.Complexity || 'auto'; + if ('Complexity' in sp || complexity !== 'auto') { + overrides.Complexity = complexity; + } + const dimensionsMode = this.DimensionsMode || 'auto'; + if ('DimensionsMode' in sp || dimensionsMode !== 'auto') { + overrides.DimensionsMode = dimensionsMode; + } + return overrides; + } static get defaultName() { return 'Signal'; } static createDefault(name, parent) { // Verified property-for-property against MATLAB R2027a's own default `Simulink.Signal`: diff --git a/dist/datamodel/node/data/SignalNode.js.map b/dist/datamodel/node/data/SignalNode.js.map index 501f1dbe..289be7f4 100644 --- a/dist/datamodel/node/data/SignalNode.js.map +++ b/dist/datamodel/node/data/SignalNode.js.map @@ -1 +1 @@ -{"version":3,"file":"SignalNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/SignalNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"SignalNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/SignalNode.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,QAAQ,EAAE,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAE9D,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAG1D,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAC5D,OAAO,oBAAoB,MAAM,oCAAoC,CAAC;AACtE,OAAO,wBAAwB,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAErC,kGAAkG;AAClG,gGAAgG;AAChG,gGAAgG;AAChG,2FAA2F;AAC3F,6FAA6F;AAC7F,MAAM,UAAU,GAAG,IAAI,GAAG,CAAoB;IAC1C,CAAC,YAAY,EAAE,oBAA4C,CAAC;IAC5D,CAAC,gBAAgB,EAAE,wBAAgD,CAAC;CACvE,CAAC,CAAC;AACH,MAAM,aAAa,GAAG,CAAC,KAAkB,EAAe,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAExG,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,QAAQ;IAW5C,YAAY,IAAY,EAAE,MAAuB,EAAE,KAA8B,EAAE,MAA+B;QAC9G,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,uEAAuE;QACvE,4EAA4E;QAC5E,0EAA0E;QAC1E,sEAAsE;QACtE,yEAAyE;QACzE,kEAAkE;QAClE,MAAM,WAAW,GAAG,KAAK,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QACrG,IAAI,CAAC,QAAQ,GAAI,WAAsB,IAAI,MAAM,CAAC;QAClD,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAyB,CAAC;QAC3C,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAyB,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAI,KAAK,CAAC,QAAmB,IAAK,KAAK,CAAC,IAAe,IAAI,EAAE,CAAC;QACvE,IAAI,CAAC,WAAW,GAAI,KAAK,CAAC,WAAsB,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,UAAU,GAAI,KAAK,CAAC,UAAqB,IAAI,MAAM,CAAC;QACzD,IAAI,CAAC,cAAc,GAAI,KAAK,CAAC,cAAyB,IAAI,MAAM,CAAC;IACrE,CAAC;IAED,IAAI,IAAI,KAAa,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAChF,6EAA6E;IAC7E,6EAA6E;IAC7E,gFAAgF;IAChF,uCAAuC;IACvC,IAAI,SAAS,KAAa,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAA8C,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;IAC1J,+EAA+E;IAC/E,IAAI,YAAY,KAAa,OAAO,EAAE,CAAC,CAAC,CAAC;IACzC,IAAI,aAAa,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAE9C,8EAA8E;IAC9E,8EAA8E;IAC9E,0EAA0E;IAC1E,oEAAoE;IACpE,IAAI,QAAQ,KAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEhD,aAAa,KAAkB,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClN,6FAA6F;IAC7F,6FAA6F;IAC7F,6EAA6E;IAC7E,WAAW;QACP,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACnC,OAAO,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,WAAW,CAAC,QAAgB,EAAE,WAAmB;QAC7C,0EAA0E;QAC1E,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,mGAAmG;QACnG,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACtE,IAAI,cAAc,EAAE,CAAC;YACjB,OAAO,cAAc,CAAC;QAC1B,CAAC;QACD,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAClD,CAAC;QACD,sFAAsF;QACtF,qFAAqF;QACrF,uFAAuF;QACvF,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACzE,IAAI,aAAa,EAAE,CAAC;gBAChB,OAAO,aAAa,CAAC;YACzB,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC5E,CAAC;IAED,wBAAwB;QACpB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAsC,CAAC;QAC9D,MAAM,OAAO,GAAG,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;QACxB,IAAI,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAAC,CAAC;QAClG,IAAI,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAAC,CAAC;QAClG,IAAI,OAAO,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAAC,CAAC;QAC/D,IAAI,aAAa,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAAC,CAAC;QACtF,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,cAAc;QACV,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACnB,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAsC,CAAC;QAC9D,MAAM,OAAO,GAAG,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,IAAI,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAAC,CAAC;QACxE,IAAI,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAAC,CAAC;QACxE,IAAI,OAAO,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAAC,CAAC;QACnE,IAAI,aAAa,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAAC,CAAC;QAC1F,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,0FAA0F;IAC1F,4FAA4F;IAC5F,uFAAuF;IACvF,wFAAwF;IACxF,0FAA0F;IAC1F,iGAAiG;IACjG,wFAAwF;IACxF,0BAA0B;IAC1B,cAAc,CAAC,EAA2B;QACtC,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC;QAC7C,IAAI,YAAY,IAAI,EAAE,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAAC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC;QAAC,CAAC;QACvF,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC;QACrD,IAAI,gBAAgB,IAAI,EAAE,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;YAAC,SAAS,CAAC,cAAc,GAAG,cAAc,CAAC;QAAC,CAAC;QACvG,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,WAAW,KAAa,OAAO,QAAQ,CAAC,CAAC,CAAC;IAErD,MAAM,CAAC,aAAa,CAAC,IAAY,EAAE,MAAuB;QACtD,wFAAwF;QACxF,gFAAgF;QAChF,2FAA2F;QAC3F,iBAAiB;QACjB,MAAM,MAAM,GAAG,kBAAkB,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,EAAE,aAAa,EAAE,sBAAsB,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACrM,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAA6B,CAAC,CAAC;IACnH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAA+B,EAAE,IAAY,EAAE,MAAuB;QAC/E,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,IAAK,MAAM,CAAC,SAAuB,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,IAAK,IAAgC,CAAC,WAAW,CAAC,IAAI,EAAE,CAA4B,CAAC;QACzG,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACvD,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAiC,CAAC,CAAC;IAClF,CAAC;CACJ"} \ No newline at end of file diff --git a/dist/datamodel/node/data/VariantBankCoderInfoNode.d.ts b/dist/datamodel/node/data/VariantBankCoderInfoNode.d.ts index b3abc00b..79563bdc 100644 --- a/dist/datamodel/node/data/VariantBankCoderInfoNode.d.ts +++ b/dist/datamodel/node/data/VariantBankCoderInfoNode.d.ts @@ -1,13 +1,17 @@ import SimulinkObjectNode from '../SimulinkObjectNode.js'; import type { PropClass } from '../BaseNode.js'; import type BaseNode from '../BaseNode.js'; +import type { SetPropertyResult } from '../DataNode.js'; export default class VariantBankCoderInfoNode extends SimulinkObjectNode { Value: unknown; + readonly _valueInFile: boolean; constructor(name: string, parent: BaseNode | null, props: Record, serial: Record); get icon(): string; get className(): string; get displayValue(): string; + get valueEditable(): boolean; getProperties(): PropClass[]; + setProperty(propName: string, stringValue: string): true | SetPropertyResult; _serializedOverrides(): Record; static get defaultName(): string; static createDefault(name: string, parent: BaseNode | null): VariantBankCoderInfoNode; diff --git a/dist/datamodel/node/data/VariantBankCoderInfoNode.d.ts.map b/dist/datamodel/node/data/VariantBankCoderInfoNode.d.ts.map index 9f952c11..6aad5303 100644 --- a/dist/datamodel/node/data/VariantBankCoderInfoNode.d.ts.map +++ b/dist/datamodel/node/data/VariantBankCoderInfoNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"VariantBankCoderInfoNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/VariantBankCoderInfoNode.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAK3C,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,kBAAkB;IACpE,KAAK,EAAE,OAAO,CAAC;gBACH,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClH,IAAI,IAAI,IAAI,MAAM,CAAyC;IAC3D,IAAI,SAAS,IAAI,MAAM,CAAuB;IAC9C,IAAI,YAAY,IAAI,MAAM,CAAyC;IACnE,aAAa,IAAI,SAAS,EAAE;IAG5B,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/C,MAAM,KAAK,WAAW,IAAI,MAAM,CAAmC;IAKnE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,wBAAwB;IACrF,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,wBAAwB;CACjH"} \ No newline at end of file +{"version":3,"file":"VariantBankCoderInfoNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/VariantBankCoderInfoNode.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAcxD,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,kBAAkB;IACpE,KAAK,EAAE,OAAO,CAAC;IAGf,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;gBACnB,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClH,IAAI,IAAI,IAAI,MAAM,CAAyC;IAC3D,IAAI,SAAS,IAAI,MAAM,CAAuB;IAC9C,IAAI,YAAY,IAAI,MAAM,CAAkE;IAE5F,IAAI,aAAa,IAAI,OAAO,CAAkB;IAC9C,aAAa,IAAI,SAAS,EAAE;IAK5B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,iBAAiB;IAe5E,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/C,MAAM,KAAK,WAAW,IAAI,MAAM,CAAmC;IAMnE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,wBAAwB;IACrF,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,wBAAwB;CACjH"} \ No newline at end of file diff --git a/dist/datamodel/node/data/VariantBankCoderInfoNode.js b/dist/datamodel/node/data/VariantBankCoderInfoNode.js index 16b27ce5..0b05dd72 100644 --- a/dist/datamodel/node/data/VariantBankCoderInfoNode.js +++ b/dist/datamodel/node/data/VariantBankCoderInfoNode.js @@ -4,17 +4,44 @@ import PropName from '../../prop/PropName.js'; import PropValue from '../../prop/PropValue.js'; import PropDataType from '../../prop/PropDataType.js'; const CLASS_NAME = 'Simulink.VariantBankCoderInfo'; +// MATLAB's Simulink.VariantBankCoderInfo has no Value (R2027a: `isprop(Simulink.VariantBankCoderInfo, +// 'Value')` is 0, and setting one fails with "Unrecognized property 'Value' for class +// 'Simulink.VariantBankCoderInfo'."). Its properties are HeaderFile, DefinitionFile, PreStatement, +// PostStatement and Qualifier, which are also the fields of the saveobj envelope a dictionary +// holds it as; none of them is modelled here yet. So, as for VariantBankNode (and a bus element, +// BaseBusElementNode), the Value column offers no editor and a Value edit is refused. A Value key +// a file already carries, which only this package ever wrote (MATLAB reads such a file without a +// warning, builds the object with no Value, and drops the key on its next save), is shown and +// written back as it was read, read-only. export default class VariantBankCoderInfoNode extends SimulinkObjectNode { - constructor(name, parent, props, serial) { super(name, parent, serial); this.Value = props.Value !== undefined ? props.Value : ''; } + constructor(name, parent, props, serial) { super(name, parent, serial); this._valueInFile = props.Value !== undefined; this.Value = this._valueInFile ? props.Value : ''; } get icon() { return 'wsParameters_bankCoderInfo'; } get className() { return CLASS_NAME; } - get displayValue() { return PropValue.format(this.Value); } + get displayValue() { return this._valueInFile ? PropValue.format(this.Value) : ''; } + // The column stays, read-only, for a Value a file already carries. + get valueEditable() { return false; } getProperties() { return [PropName, PropValue, PropDataType]; } // PI layout: schema-driven "General" group (classes/variantBankCoderInfo.json). - // UNGATED, as VariantBankNode's Value is. - _serializedOverrides() { return { Value: this.Value }; } + // Refused rather than taken: DataNode's generic tail would keep the text, mark the entry + // Modified and answer `true`, and the file would gain a key MATLAB ignores. One still in the + // encoded stream it was read from keeps that refusal's own reason. + setProperty(propName, stringValue) { + if (this._resolveProperty(propName) === 'Value') { + return (this._refuseEncodedEdit(propName, stringValue) ?? { + error: true, + reason: `'${this.displayName}' is a ${this.className}, which has no Value, so none can be set on it.`, + invalidValue: stringValue, + validValue: this.displayValue, + }); + } + return super.setProperty(propName, stringValue); + } + // Nothing overridden: the bag is written as it was read, so a file's own Value key (and + // only that) passes through `_mergeProps` unchanged, and no new one is ever written. + _serializedOverrides() { return {}; } static get defaultName() { return 'VariantBankCoderInfo'; } - // A saveobj envelope, as VariantBankNode's is, and the invented `Value` goes the same way. + // A saveobj envelope, as VariantBankNode's is, and nothing beside it: MATLAB has no `Value` + // property on this class, so none is written. // The only field here whose default is not empty is Qualifier, which MATLAB defaults to the // string 'None' — every field is a plain char, so this class's envelope is spelled // identically in both formats. Measured from a MATLAB-written dictionary. diff --git a/dist/datamodel/node/data/VariantBankCoderInfoNode.js.map b/dist/datamodel/node/data/VariantBankCoderInfoNode.js.map index 669f4982..e894843a 100644 --- a/dist/datamodel/node/data/VariantBankCoderInfoNode.js.map +++ b/dist/datamodel/node/data/VariantBankCoderInfoNode.js.map @@ -1 +1 @@ -{"version":3,"file":"VariantBankCoderInfoNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/VariantBankCoderInfoNode.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAG1D,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAChD,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,MAAM,UAAU,GAAG,+BAA+B,CAAC;AACnD,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,kBAAkB;IAEpE,YAAY,IAAY,EAAE,MAAuB,EAAE,KAA8B,EAAE,MAA+B,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/M,IAAI,IAAI,KAAa,OAAO,4BAA4B,CAAC,CAAC,CAAC;IAC3D,IAAI,SAAS,KAAa,OAAO,UAAU,CAAC,CAAC,CAAC;IAC9C,IAAI,YAAY,KAAa,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnE,aAAa,KAAkB,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5E,gFAAgF;IAChF,0CAA0C;IAC1C,oBAAoB,KAA8B,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACjF,MAAM,KAAK,WAAW,KAAa,OAAO,sBAAsB,CAAC,CAAC,CAAC;IACnE,2FAA2F;IAC3F,4FAA4F;IAC5F,mFAAmF;IACnF,0EAA0E;IAC1E,MAAM,CAAC,aAAa,CAAC,IAAY,EAAE,MAAuB,IAA8B,MAAM,MAAM,GAAG,wBAAwB,CAAC,wBAAwB,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAA6B,CAAC,CAAC,CAAC,CAAC;IAC9gB,MAAM,CAAC,KAAK,CAAC,MAA+B,EAAE,IAAY,EAAE,MAAuB,IAA8B,MAAM,KAAK,GAAG,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAA6B,CAAC,CAAC,CAAC,CAAC;CAC5S"} \ No newline at end of file +{"version":3,"file":"VariantBankCoderInfoNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/VariantBankCoderInfoNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/data/VariantBankNode.d.ts b/dist/datamodel/node/data/VariantBankNode.d.ts index 9c1f9cde..bdf67af3 100644 --- a/dist/datamodel/node/data/VariantBankNode.d.ts +++ b/dist/datamodel/node/data/VariantBankNode.d.ts @@ -1,13 +1,17 @@ import SimulinkObjectNode from '../SimulinkObjectNode.js'; import type { PropClass } from '../BaseNode.js'; import type BaseNode from '../BaseNode.js'; +import type { SetPropertyResult } from '../DataNode.js'; export default class VariantBankNode extends SimulinkObjectNode { Value: unknown; + readonly _valueInFile: boolean; constructor(name: string, parent: BaseNode | null, props: Record, serial: Record); get icon(): string; get className(): string; get displayValue(): string; + get valueEditable(): boolean; getProperties(): PropClass[]; + setProperty(propName: string, stringValue: string): true | SetPropertyResult; _serializedOverrides(): Record; static get defaultName(): string; static createDefault(name: string, parent: BaseNode | null): VariantBankNode; diff --git a/dist/datamodel/node/data/VariantBankNode.d.ts.map b/dist/datamodel/node/data/VariantBankNode.d.ts.map index a90cbf3e..97b51140 100644 --- a/dist/datamodel/node/data/VariantBankNode.d.ts.map +++ b/dist/datamodel/node/data/VariantBankNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"VariantBankNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/VariantBankNode.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAK3C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,kBAAkB;IAC3D,KAAK,EAAE,OAAO,CAAC;gBACH,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClH,IAAI,IAAI,IAAI,MAAM,CAAgC;IAClD,IAAI,SAAS,IAAI,MAAM,CAAuB;IAC9C,IAAI,YAAY,IAAI,MAAM,CAAyC;IACnE,aAAa,IAAI,SAAS,EAAE;IAI5B,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/C,MAAM,KAAK,WAAW,IAAI,MAAM,CAA0B;IAM1D,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,eAAe;IAC5E,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,eAAe;CACxG"} \ No newline at end of file +{"version":3,"file":"VariantBankNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/VariantBankNode.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAcxD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,kBAAkB;IAC3D,KAAK,EAAE,OAAO,CAAC;IAGf,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;gBACnB,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClH,IAAI,IAAI,IAAI,MAAM,CAAgC;IAClD,IAAI,SAAS,IAAI,MAAM,CAAuB;IAC9C,IAAI,YAAY,IAAI,MAAM,CAAkE;IAE5F,IAAI,aAAa,IAAI,OAAO,CAAkB;IAC9C,aAAa,IAAI,SAAS,EAAE;IAK5B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,iBAAiB;IAe5E,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/C,MAAM,KAAK,WAAW,IAAI,MAAM,CAA0B;IAK1D,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,eAAe;IAC5E,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,eAAe;CACxG"} \ No newline at end of file diff --git a/dist/datamodel/node/data/VariantBankNode.js b/dist/datamodel/node/data/VariantBankNode.js index 41f07d48..c324a364 100644 --- a/dist/datamodel/node/data/VariantBankNode.js +++ b/dist/datamodel/node/data/VariantBankNode.js @@ -4,22 +4,46 @@ import PropName from '../../prop/PropName.js'; import PropValue from '../../prop/PropValue.js'; import PropDataType from '../../prop/PropDataType.js'; const CLASS_NAME = 'Simulink.VariantBank'; +// MATLAB's Simulink.VariantBank has no Value (R2027a: `isprop(Simulink.VariantBank, 'Value')` +// is 0, and setting one fails with "Unrecognized property 'Value' for class +// 'Simulink.VariantBank'."). Its properties are Name, Description, VariantConditions, +// AllChoicesCoderInfo and ActiveChoiceCoderInfo, and the saveobj envelope a dictionary holds it +// as adds BankCoderInfo; none of them is modelled here yet. So the Value column offers no editor +// and a Value edit is refused, as a bus element's is (BaseBusElementNode). A Value key a file +// already carries, which only this package ever wrote (MATLAB reads such a file without a +// warning, builds a bank with no Value, and drops the key on its next save), is shown and +// written back as it was read, read-only. export default class VariantBankNode extends SimulinkObjectNode { - constructor(name, parent, props, serial) { super(name, parent, serial); this.Value = props.Value !== undefined ? props.Value : ''; } + constructor(name, parent, props, serial) { super(name, parent, serial); this._valueInFile = props.Value !== undefined; this.Value = this._valueInFile ? props.Value : ''; } get icon() { return 'wsParameters_bank'; } get className() { return CLASS_NAME; } - get displayValue() { return PropValue.format(this.Value); } + get displayValue() { return this._valueInFile ? PropValue.format(this.Value) : ''; } + // The column stays, read-only, for a Value a file already carries. + get valueEditable() { return false; } getProperties() { return [PropName, PropValue, PropDataType]; } // PI layout: schema-driven "General" group (classes/variantBank.json). - // UNGATED: the Value is what the bank IS, so it is written whether or not the file - // carried the key. - _serializedOverrides() { return { Value: this.Value }; } + // Refused rather than taken: DataNode's generic tail would keep the text, mark the entry + // Modified and answer `true`, and the file would gain a key MATLAB ignores. One still in the + // encoded stream it was read from keeps that refusal's own reason. + setProperty(propName, stringValue) { + if (this._resolveProperty(propName) === 'Value') { + return (this._refuseEncodedEdit(propName, stringValue) ?? { + error: true, + reason: `'${this.displayName}' is a ${this.className}, which has no Value, so none can be set on it.`, + invalidValue: stringValue, + validValue: this.displayValue, + }); + } + return super.setProperty(propName, stringValue); + } + // Nothing overridden: the bag is written as it was read, so a file's own Value key (and + // only that) passes through `_mergeProps` unchanged, and no new one is ever written. + _serializedOverrides() { return {}; } static get defaultName() { return 'VariantBank'; } - // A saveobj envelope, for the reason VariantVariableNode's carries one. MATLAB has no - // `Value` property on this class at all, so the `{ Value: '' }` this used to write was pure - // invention; under an envelope `_mergeProps` drops an empty override, so the - // `_serializedOverrides` above now writes nothing until the user gives Value a value. - // Fields, order and defaults measured from a MATLAB-written dictionary. + // A saveobj envelope, for the reason VariantVariableNode's carries one, and nothing beside + // it: MATLAB has no `Value` property on this class at all, so the `{ Value: '' }` this used + // to write was pure invention. Fields, order and defaults measured from a MATLAB-written + // dictionary. static createDefault(name, parent) { const rawVal = VariantBankNode._defaultCustomSaveRawVal(CLASS_NAME, ['Name', 'Description', 'VariantConditions', 'AllChoicesCoderInfo', 'ActiveChoiceCoderInfo', 'BankCoderInfo'], { Name: '', Description: '', VariantConditions: VariantBankNode._emptyCell(), AllChoicesCoderInfo: '', ActiveChoiceCoderInfo: '', BankCoderInfo: '' }); const props = VariantBankNode._propsOf(rawVal); return new VariantBankNode(name, parent, props, { _rawVal: rawVal, _properties: props }); } static parse(rawVal, name, parent) { const props = VariantBankNode._propsOf(rawVal); return new VariantBankNode(name, parent, props, { _rawVal: rawVal, _properties: props }); } } diff --git a/dist/datamodel/node/data/VariantBankNode.js.map b/dist/datamodel/node/data/VariantBankNode.js.map index 3c85207d..43eee4c2 100644 --- a/dist/datamodel/node/data/VariantBankNode.js.map +++ b/dist/datamodel/node/data/VariantBankNode.js.map @@ -1 +1 @@ -{"version":3,"file":"VariantBankNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/VariantBankNode.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAG1D,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAChD,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAC1C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,kBAAkB;IAE3D,YAAY,IAAY,EAAE,MAAuB,EAAE,KAA8B,EAAE,MAA+B,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/M,IAAI,IAAI,KAAa,OAAO,mBAAmB,CAAC,CAAC,CAAC;IAClD,IAAI,SAAS,KAAa,OAAO,UAAU,CAAC,CAAC,CAAC;IAC9C,IAAI,YAAY,KAAa,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnE,aAAa,KAAkB,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5E,uEAAuE;IACvE,mFAAmF;IACnF,mBAAmB;IACnB,oBAAoB,KAA8B,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACjF,MAAM,KAAK,WAAW,KAAa,OAAO,aAAa,CAAC,CAAC,CAAC;IAC1D,sFAAsF;IACtF,4FAA4F;IAC5F,6EAA6E;IAC7E,sFAAsF;IACtF,wEAAwE;IACxE,MAAM,CAAC,aAAa,CAAC,IAAY,EAAE,MAAuB,IAAqB,MAAM,MAAM,GAAG,eAAe,CAAC,wBAAwB,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,iBAAiB,EAAE,eAAe,CAAC,UAAU,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,qBAAqB,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAA6B,CAAC,CAAC,CAAC,CAAC;IAChkB,MAAM,CAAC,KAAK,CAAC,MAA+B,EAAE,IAAY,EAAE,MAAuB,IAAqB,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAA6B,CAAC,CAAC,CAAC,CAAC;CACjR"} \ No newline at end of file +{"version":3,"file":"VariantBankNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/VariantBankNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/data/VariantConfigurationDataNode.d.ts.map b/dist/datamodel/node/data/VariantConfigurationDataNode.d.ts.map index 30c5cfb1..380f49db 100644 --- a/dist/datamodel/node/data/VariantConfigurationDataNode.d.ts.map +++ b/dist/datamodel/node/data/VariantConfigurationDataNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"VariantConfigurationDataNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/VariantConfigurationDataNode.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAI3C,MAAM,CAAC,OAAO,OAAO,4BAA6B,SAAQ,kBAAkB;IACxE,KAAK,EAAE,OAAO,CAAC;gBACH,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClH,IAAI,IAAI,IAAI,MAAM,CAA8B;IAGhD,IAAI,SAAS,IAAI,MAAM,CAAmI;IAE1J,IAAI,YAAY,IAAI,MAAM,CAAe;IACzC,IAAI,aAAa,IAAI,OAAO,CAAkB;IAC9C,aAAa,IAAI,SAAS,EAAE;IAG5B,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/C,MAAM,KAAK,WAAW,IAAI,MAAM,CAAuC;IAqCvE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,4BAA4B;IAwBzF,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,4BAA4B;CACrH"} \ No newline at end of file +{"version":3,"file":"VariantConfigurationDataNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/VariantConfigurationDataNode.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAI3C,MAAM,CAAC,OAAO,OAAO,4BAA6B,SAAQ,kBAAkB;IACxE,KAAK,EAAE,OAAO,CAAC;gBACH,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClH,IAAI,IAAI,IAAI,MAAM,CAA8B;IAGhD,IAAI,SAAS,IAAI,MAAM,CAAmI;IAE1J,IAAI,YAAY,IAAI,MAAM,CAAe;IACzC,IAAI,aAAa,IAAI,OAAO,CAAkB;IAC9C,aAAa,IAAI,SAAS,EAAE;IAI5B,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/C,MAAM,KAAK,WAAW,IAAI,MAAM,CAAuC;IAqCvE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,4BAA4B;IAwBzF,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,4BAA4B;CACrH"} \ No newline at end of file diff --git a/dist/datamodel/node/data/VariantConfigurationDataNode.js b/dist/datamodel/node/data/VariantConfigurationDataNode.js index faeb3b31..556dca66 100644 --- a/dist/datamodel/node/data/VariantConfigurationDataNode.js +++ b/dist/datamodel/node/data/VariantConfigurationDataNode.js @@ -15,7 +15,8 @@ export default class VariantConfigurationDataNode extends SimulinkObjectNode { get valueEditable() { return false; } getProperties() { return [PropName, PropDataType]; } // PI layout: schema-driven "General" group (classes/variantConfigurationData.json). - // UNGATED, as VariantBankNode's Value is. + // UNGATED. (VariantBankNode's Value was too, until it stopped writing one at all: MATLAB's + // Simulink.VariantBank has no Value.) _serializedOverrides() { return { Value: this.Value }; } static get defaultName() { return 'VariantConfigurationData'; } // The one entry the Add gallery produced that MATLAB REFUSED to load, in both formats: diff --git a/dist/datamodel/node/data/VariantConfigurationDataNode.js.map b/dist/datamodel/node/data/VariantConfigurationDataNode.js.map index 3978ed30..ab4df3e8 100644 --- a/dist/datamodel/node/data/VariantConfigurationDataNode.js.map +++ b/dist/datamodel/node/data/VariantConfigurationDataNode.js.map @@ -1 +1 @@ -{"version":3,"file":"VariantConfigurationDataNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/VariantConfigurationDataNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"VariantConfigurationDataNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/VariantConfigurationDataNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/schemaBridge.d.ts.map b/dist/datamodel/node/schemaBridge.d.ts.map index 0f42d573..f9b67499 100644 --- a/dist/datamodel/node/schemaBridge.d.ts.map +++ b/dist/datamodel/node/schemaBridge.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"schemaBridge.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/schemaBridge.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAkHvD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,IAAI,CAcpE;AAMD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,CAE5D;AAUD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,iBAAiB,GAAG,IAAI,CAgCtH;AAMD,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ3D"} \ No newline at end of file +{"version":3,"file":"schemaBridge.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/schemaBridge.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAuHvD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,IAAI,CAcpE;AAMD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,CAE5D;AAUD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,iBAAiB,GAAG,IAAI,CA0CtH;AA8ID,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ3D"} \ No newline at end of file diff --git a/dist/datamodel/node/schemaBridge.js b/dist/datamodel/node/schemaBridge.js index d849c41b..c65d47b0 100644 --- a/dist/datamodel/node/schemaBridge.js +++ b/dist/datamodel/node/schemaBridge.js @@ -12,7 +12,7 @@ // - schemaColumns / schemaColumnLabels: the schema-driven read-only table // columns (Dimensions, Complexity, Storage Class, …). Column GROUPING is NOT // here — it is a global table concern owned by host/rowBuilder.COLUMN_GROUPS. -import { getSchema, getSchemaClasses, getLayout, hydrate, writeSourcePath } from '../schema/index.js'; +import { getSchema, getSchemaClasses, getLayout, hydrate, isTypedScalar, sourceLeaf, writeSourcePath } from '../schema/index.js'; import PropName from '../prop/PropName.js'; import PropValue from '../prop/PropValue.js'; import PropDataType from '../prop/PropDataType.js'; @@ -69,6 +69,8 @@ function formatSchemaValue(value) { // for a prop the table renders editable). readValue reads the node's // serial._properties bag — display-only, never mutating serial. A 'select' prop // with an options list contributes readOptions so the cell can render a dropdown. +// Alignment contributes editableFor: MATLAB takes no edit of it under StorageClass +// 'Auto', so on such a node its cell is a plain string. function toPropClass(prop, column, editorOverride) { const pc = { key: prop.key, @@ -89,6 +91,9 @@ function toPropClass(prop, column, editorOverride) { const opts = prop.options; pc.readOptions = () => opts; } + if (isAlignment(prop)) { + pc.editableFor = (node) => storageClassOf(node) !== 'Auto'; + } return pc; } // The schema props the schema itself surfaces into the UI (PI groups + table @@ -160,27 +165,167 @@ export function trySetSchemaProperty(node, key, stringValue) { if (!prop || prop.editor === 'label') { return null; } - // Every writable projected prop today is an enumerated 'select' — the two - // other projected props (headerFile, alignment) are 'label' and returned - // above. A prop of some other editor would fall through here unvalidated, so - // adding one means adding its validation alongside; there is deliberately no - // speculative branch for a type we do not yet expose (notably `int`: MATLAB - // constrains Alignment to -1 or a power of 2, which Number.isInteger does - // not express, so a generic int check would accept values MATLAB rejects). + // The writable projected props are the enumerated 'select's (Storage Class) and + // Alignment, a 'text' with a rule of its own. A prop of some other editor would + // fall through below unvalidated, so adding one means adding its validation + // alongside; there is deliberately no generic branch for a type (notably `int`: + // Number.isInteger accepts 3, which MATLAB refuses as an Alignment). + if (isAlignment(prop)) { + return setAlignment(node, prop, stringValue); + } if (prop.editor === 'select') { const options = prop.options ?? []; if (options.length > 0 && !options.includes(stringValue)) { return { error: true, reason: 'Invalid value for ' + prop.label, invalidValue: stringValue, validValue: '' }; } } - const props = node.serial?._properties; + const props = propertiesOf(node); const ok = writeSourcePath(props, prop.sourcePath, stringValue); if (!ok) { return { error: true, reason: 'Cannot set ' + prop.label + ' (target property is absent)', invalidValue: stringValue, validValue: '' }; } + // MATLAB resets Alignment to -1 when StorageClass becomes 'Auto' (and warns + // "Alignment is ignored when StorageClass is 'Auto'.", which has no channel here). + // Undoing this edit restores the StorageClass and not the Alignment, as in MATLAB. + if (prop.key === 'storageClass' && stringValue === 'Auto') { + const alignment = resolved?.find(isAlignment); + if (alignment) { + writeAlignment(node, alignment, -1); + } + } node._markModified?.(); return true; } +function propertiesOf(node) { + return node.serial?._properties; +} +// ---- Alignment (CoderInfo.Alignment on a Simulink.Parameter or Simulink.Signal) ---- +// +// MATLAB's rule, measured in R2027a (27.1.0.3409468; test/alignmentEdit.test.ts): +// - The value is converted as int32 first (round half away from zero, saturating; +// NaN is 0, true is 1), then must be -1 or a power of two from 1 to 2^30. MATLAB's +// refusal says "no more than 128", which is not what it does (256 through 2^30 +// are accepted), so that clause is left out of the refusal here. A char value is +// refused with "Value must be numeric or logical."; a cell's text is read as the +// number it spells. +// - Then, under StorageClass 'Auto', every value but -1 is refused. +// - A text .sldd holds a non-default Alignment as {"_type":"int32","_value":"8"}, +// the first key of CoderInfo's _properties, and leaves the key out at -1. A binary +// one always holds an int32. A typed int32, a typed double and a bare number all +// read back; a STRING "16" reads back as -1, silently, so a string is never written. +// +// Bus's Alignment is not this one: it is top-level, a double, PI-only and read-only. +const ALIGNMENT_AUTO = "Cannot set Alignment when StorageClass is 'Auto'."; +const ALIGNMENT_NOT_NUMERIC = 'Value must be numeric or logical.'; +const INT32_MIN = -2147483648; +const INT32_MAX = 2147483647; +const ALIGNMENT_MAX = 2 ** 30; +function isAlignment(prop) { + return prop.key === 'alignment' && prop.editor === 'text'; +} +// The StorageClass of the node's CoderInfo, as its class's storageClass prop shows it +// (an absent one is that prop's default, 'Auto'). +function storageClassOf(node) { + const className = node.className; + const storageClass = className ? getSchema(className)?.find((p) => p.key === 'storageClass') : undefined; + return storageClass ? hydrate(propertiesOf(node), storageClass) : 'Auto'; +} +// A cell's text as the number MATLAB would be given: a decimal literal, Inf, NaN, or +// the logical true/false. Null for anything else, the empty text included. +function alignmentNumber(text) { + const t = text.trim(); + if (t === 'true' || t === 'false') { + return t === 'true' ? 1 : 0; + } + if (/^[+-]?(Inf|inf)$/.test(t)) { + return t.startsWith('-') ? -Infinity : Infinity; + } + if (/^[+-]?(NaN|nan)$/.test(t)) { + return NaN; + } + return /^[+-]?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?$/.test(t) ? Number(t) : null; +} +// MATLAB's int32(x): round half away from zero, saturate, NaN to 0. +function toInt32(x) { + if (Number.isNaN(x)) { + return 0; + } + const r = Math.sign(x) * Math.round(Math.abs(x)); + return Math.min(INT32_MAX, Math.max(INT32_MIN, r)); +} +function isAlignmentBoundary(n) { + return n === -1 || (n >= 1 && n <= ALIGNMENT_MAX && (n & (n - 1)) === 0); +} +function setAlignment(node, prop, stringValue) { + const shown = formatSchemaValue(hydrate(propertiesOf(node), prop)); + const refuse = (reason) => ({ error: true, reason, invalidValue: stringValue, validValue: shown }); + const x = alignmentNumber(stringValue); + if (x === null) { + return refuse(ALIGNMENT_NOT_NUMERIC); + } + const n = toInt32(x); + if (!isAlignmentBoundary(n)) { + return refuse(n + ' is not a valid alignment boundary. The alignment boundary must be either -1 or a power of two.'); + } + if (n !== -1 && storageClassOf(node) === 'Auto') { + return refuse(ALIGNMENT_AUTO); + } + const leaf = sourceLeaf(propertiesOf(node), prop.sourcePath); + if (!leaf) { + return refuse('Cannot set ' + prop.label + ' (target property is absent)'); + } + const before = JSON.stringify(leaf.bag[leaf.key]); + writeAlignment(node, prop, n); + // Setting the value it already holds (-1 where there is no key, or under Auto) is no + // edit: nothing is marked, as DataNode._isUnchangedCommit answers for the shown text. + if (JSON.stringify(leaf.bag[leaf.key]) !== before) { + node._markModified?.(); + } + return true; +} +// Write a validated Alignment `n` in the form MATLAB writes it, keeping the form the file +// already holds: a typed leaf keeps its _type, a bare number stays bare. -1 removes the key +// from a text dictionary, as MATLAB leaves it out there, and an absent key at -1 stays +// absent in any format (absence reads as -1). A new key is a typed int32, inserted where +// MATLAB's sorted text puts it (first in CoderInfo). Never a string: MATLAB reads "16" as -1. +function writeAlignment(node, prop, n) { + const leaf = sourceLeaf(propertiesOf(node), prop.sourcePath); + if (!leaf) { + return; + } + const { bag, key } = leaf; + const existing = bag[key]; + const format = node._ownerFormat?.(); + if (n === -1 && (format === 'json' || existing === undefined)) { + delete bag[key]; + } + else if (isTypedScalar(existing)) { + existing._value = String(n); + } + else if (typeof existing === 'number') { + bag[key] = n; + } + else if (existing === undefined) { + insertSorted(bag, key, { _type: 'int32', _value: String(n) }); + } + else { + bag[key] = { _type: 'int32', _value: String(n) }; + } +} +// Add `key` to `bag` in place, before the first key that sorts after it, as MATLAB's text +// writer orders a bag. The bag keeps its identity: the keys after it are re-added in order. +function insertSorted(bag, key, value) { + const keys = Object.keys(bag); + const at = keys.findIndex((k) => k > key); + const tail = at < 0 ? [] : keys.slice(at).map((k) => [k, bag[k]]); + for (const [k] of tail) { + delete bag[k]; + } + bag[key] = value; + for (const [k, v] of tail) { + bag[k] = v; + } +} // Column-key → display label for every schema-driven read-only column, unioned // across all schema classes. The label lives once in the shared prop registry, // so the host merges this over its base-column labels instead of hand-copying diff --git a/dist/datamodel/node/schemaBridge.js.map b/dist/datamodel/node/schemaBridge.js.map index 7f15a388..b1d7affb 100644 --- a/dist/datamodel/node/schemaBridge.js.map +++ b/dist/datamodel/node/schemaBridge.js.map @@ -1 +1 @@ -{"version":3,"file":"schemaBridge.js","sourceRoot":"","sources":["../../../src/datamodel/node/schemaBridge.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"schemaBridge.js","sourceRoot":"","sources":["../../../src/datamodel/node/schemaBridge.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/prop/PropComplexity.d.ts.map b/dist/datamodel/prop/PropComplexity.d.ts.map index 536f56f5..caecc804 100644 --- a/dist/datamodel/prop/PropComplexity.d.ts.map +++ b/dist/datamodel/prop/PropComplexity.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"PropComplexity.d.ts","sourceRoot":"","sources":["../../../src/datamodel/prop/PropComplexity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAgC7C,MAAM,CAAC,OAAO,OAAO,cAAc;IAC/B,MAAM,CAAC,GAAG,SAAgB;IAC1B,MAAM,CAAC,WAAW,SAAgB;IAClC,MAAM,CAAC,MAAM,SAAY;IACzB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAgB;IAE5C,MAAM,CAAC,YAAY,SAAgB;IAGnC,MAAM,CAAC,UAAU,WAAkB;IAEnC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAIxC,MAAM,CAAC,WAAW,IAAI,MAAM,EAAE;IAI9B,MAAM,CAAC,MAAM,oBAAc;CAC9B"} \ No newline at end of file +{"version":3,"file":"PropComplexity.d.ts","sourceRoot":"","sources":["../../../src/datamodel/prop/PropComplexity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiC7C,MAAM,CAAC,OAAO,OAAO,cAAc;IAC/B,MAAM,CAAC,GAAG,SAAgB;IAC1B,MAAM,CAAC,WAAW,SAAgB;IAClC,MAAM,CAAC,MAAM,SAAY;IACzB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAgB;IAE5C,MAAM,CAAC,YAAY,SAAgB;IAGnC,MAAM,CAAC,UAAU,WAAkB;IAEnC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAIxC,MAAM,CAAC,WAAW,IAAI,MAAM,EAAE;IAI9B,MAAM,CAAC,MAAM,oBAAc;CAC9B"} \ No newline at end of file diff --git a/dist/datamodel/prop/PropComplexity.js b/dist/datamodel/prop/PropComplexity.js index cdc5a759..01c86d26 100644 --- a/dist/datamodel/prop/PropComplexity.js +++ b/dist/datamodel/prop/PropComplexity.js @@ -24,10 +24,11 @@ import { formatText } from './formatText.js'; // DEX_MATLAB_CMD set, "MATLAB accepts what we write here" is an expectation, not a // result. // -// Only Simulink.BusElement uses this atom. The `complexity` COLUMN is also filled -// for Parameter/Signal/ValueType, but through the declarative schema -// (schema/props/dataObject.json), which still declares it a label — deliberately, -// because those classes admit a third value ('auto') and are a separate unlock. +// Simulink.BusElement and Simulink.ValueType use this atom. A Simulink.Signal's +// Complexity admits a third value, 'auto' (its default), so it has its own atom over +// its own set, PropSignalComplexity. A Parameter's `complexity` column still comes +// from the declarative schema (schema/props/dataObject.json), as a label, because a +// Parameter's Complexity is derived from its Value. const OPTIONS = ['real', 'complex']; export default class PropComplexity { static { this.key = 'complexity'; } diff --git a/dist/datamodel/prop/PropComplexity.js.map b/dist/datamodel/prop/PropComplexity.js.map index a5f340da..729dd9b9 100644 --- a/dist/datamodel/prop/PropComplexity.js.map +++ b/dist/datamodel/prop/PropComplexity.js.map @@ -1 +1 @@ -{"version":3,"file":"PropComplexity.js","sourceRoot":"","sources":["../../../src/datamodel/prop/PropComplexity.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAGrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,2EAA2E;AAC3E,kFAAkF;AAClF,gFAAgF;AAChF,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,kFAAkF;AAClF,+EAA+E;AAC/E,oDAAoD;AACpD,EAAE;AACF,mFAAmF;AACnF,wEAAwE;AACxE,8EAA8E;AAC9E,+EAA+E;AAC/E,gBAAgB;AAChB,EAAE;AACF,mFAAmF;AACnF,mFAAmF;AACnF,6EAA6E;AAC7E,mFAAmF;AACnF,sEAAsE;AACtE,mFAAmF;AACnF,UAAU;AACV,EAAE;AACF,kFAAkF;AAClF,qEAAqE;AACrE,kFAAkF;AAClF,gFAAgF;AAChF,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEpC,MAAM,CAAC,OAAO,OAAO,cAAc;aACxB,QAAG,GAAG,YAAY,CAAC;aACnB,gBAAW,GAAG,YAAY,CAAC;aAC3B,WAAM,GAAG,QAAQ,CAAC;aAClB,WAAM,GAAkB,YAAY,CAAC;IAC5C,oEAAoE;aAC7D,iBAAY,GAAG,YAAY,CAAC;IACnC,yEAAyE;IACzE,gDAAgD;aACzC,eAAU,GAAG,CAAC,YAAY,CAAC,CAAC;IAEnC,MAAM,CAAC,SAAS,CAAC,IAAc;QAC3B,OAAO,CAAE,IAA2C,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,WAAW;QACd,OAAO,OAAO,CAAC;IACnB,CAAC;aAEM,WAAM,GAAG,UAAU,CAAC"} \ No newline at end of file +{"version":3,"file":"PropComplexity.js","sourceRoot":"","sources":["../../../src/datamodel/prop/PropComplexity.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAGrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,2EAA2E;AAC3E,kFAAkF;AAClF,gFAAgF;AAChF,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,kFAAkF;AAClF,+EAA+E;AAC/E,oDAAoD;AACpD,EAAE;AACF,mFAAmF;AACnF,wEAAwE;AACxE,8EAA8E;AAC9E,+EAA+E;AAC/E,gBAAgB;AAChB,EAAE;AACF,mFAAmF;AACnF,mFAAmF;AACnF,6EAA6E;AAC7E,mFAAmF;AACnF,sEAAsE;AACtE,mFAAmF;AACnF,UAAU;AACV,EAAE;AACF,gFAAgF;AAChF,qFAAqF;AACrF,mFAAmF;AACnF,oFAAoF;AACpF,oDAAoD;AACpD,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEpC,MAAM,CAAC,OAAO,OAAO,cAAc;aACxB,QAAG,GAAG,YAAY,CAAC;aACnB,gBAAW,GAAG,YAAY,CAAC;aAC3B,WAAM,GAAG,QAAQ,CAAC;aAClB,WAAM,GAAkB,YAAY,CAAC;IAC5C,oEAAoE;aAC7D,iBAAY,GAAG,YAAY,CAAC;IACnC,yEAAyE;IACzE,gDAAgD;aACzC,eAAU,GAAG,CAAC,YAAY,CAAC,CAAC;IAEnC,MAAM,CAAC,SAAS,CAAC,IAAc;QAC3B,OAAO,CAAE,IAA2C,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,WAAW;QACd,OAAO,OAAO,CAAC;IACnB,CAAC;aAEM,WAAM,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/dist/datamodel/prop/PropDimensionsMode.d.ts.map b/dist/datamodel/prop/PropDimensionsMode.d.ts.map index 9aa4c08e..053c560f 100644 --- a/dist/datamodel/prop/PropDimensionsMode.d.ts.map +++ b/dist/datamodel/prop/PropDimensionsMode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"PropDimensionsMode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/prop/PropDimensionsMode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAgC7C,MAAM,CAAC,OAAO,OAAO,kBAAkB;IACnC,MAAM,CAAC,GAAG,SAAoB;IAC9B,MAAM,CAAC,WAAW,SAAqB;IACvC,MAAM,CAAC,MAAM,SAAY;IACzB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAoB;IAEhD,MAAM,CAAC,YAAY,SAAoB;IAGvC,MAAM,CAAC,UAAU,WAAsB;IAEvC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAIxC,MAAM,CAAC,WAAW,IAAI,MAAM,EAAE;IAI9B,MAAM,CAAC,MAAM,oBAAc;CAC9B"} \ No newline at end of file +{"version":3,"file":"PropDimensionsMode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/prop/PropDimensionsMode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA8B7C,MAAM,CAAC,OAAO,OAAO,kBAAkB;IACnC,MAAM,CAAC,GAAG,SAAoB;IAC9B,MAAM,CAAC,WAAW,SAAqB;IACvC,MAAM,CAAC,MAAM,SAAY;IACzB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAoB;IAEhD,MAAM,CAAC,YAAY,SAAoB;IAGvC,MAAM,CAAC,UAAU,WAAsB;IAEvC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAIxC,MAAM,CAAC,WAAW,IAAI,MAAM,EAAE;IAI9B,MAAM,CAAC,MAAM,oBAAc;CAC9B"} \ No newline at end of file diff --git a/dist/datamodel/prop/PropDimensionsMode.js b/dist/datamodel/prop/PropDimensionsMode.js index 72691b28..10a1f209 100644 --- a/dist/datamodel/prop/PropDimensionsMode.js +++ b/dist/datamodel/prop/PropDimensionsMode.js @@ -23,11 +23,9 @@ import { formatText } from './formatText.js'; // DEX_MATLAB_CMD set, "MATLAB accepts what we write here" is an expectation, not a // result. // -// Only Simulink.BusElement uses this atom. The `dimensionsMode` COLUMN is also -// filled for Simulink.Signal, but through the declarative schema -// (schema/props/dataObject.json), which still declares it a label — deliberately, -// because a Signal's DimensionsMode defaults to 'auto', a value this set does not -// contain, so the two are separate unlocks with separate enums. +// Simulink.BusElement and Simulink.ValueType use this atom. A Simulink.Signal's +// DimensionsMode defaults to 'auto', a value this set does not contain, so it has +// its own atom over its own set, PropSignalDimensionsMode. const OPTIONS = ['Fixed', 'Variable']; export default class PropDimensionsMode { static { this.key = 'dimensionsMode'; } diff --git a/dist/datamodel/prop/PropDimensionsMode.js.map b/dist/datamodel/prop/PropDimensionsMode.js.map index d3daf674..8ac51e5b 100644 --- a/dist/datamodel/prop/PropDimensionsMode.js.map +++ b/dist/datamodel/prop/PropDimensionsMode.js.map @@ -1 +1 @@ -{"version":3,"file":"PropDimensionsMode.js","sourceRoot":"","sources":["../../../src/datamodel/prop/PropDimensionsMode.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAGrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,+EAA+E;AAC/E,uEAAuE;AACvE,kFAAkF;AAClF,iFAAiF;AACjF,mFAAmF;AACnF,uEAAuE;AACvE,kFAAkF;AAClF,yEAAyE;AACzE,EAAE;AACF,mFAAmF;AACnF,4EAA4E;AAC5E,8EAA8E;AAC9E,iFAAiF;AACjF,sBAAsB;AACtB,EAAE;AACF,mFAAmF;AACnF,mFAAmF;AACnF,6EAA6E;AAC7E,mFAAmF;AACnF,sEAAsE;AACtE,mFAAmF;AACnF,UAAU;AACV,EAAE;AACF,+EAA+E;AAC/E,iEAAiE;AACjE,kFAAkF;AAClF,kFAAkF;AAClF,gEAAgE;AAChE,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAEtC,MAAM,CAAC,OAAO,OAAO,kBAAkB;aAC5B,QAAG,GAAG,gBAAgB,CAAC;aACvB,gBAAW,GAAG,iBAAiB,CAAC;aAChC,WAAM,GAAG,QAAQ,CAAC;aAClB,WAAM,GAAkB,gBAAgB,CAAC;IAChD,oEAAoE;aAC7D,iBAAY,GAAG,gBAAgB,CAAC;IACvC,yEAAyE;IACzE,gDAAgD;aACzC,eAAU,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEvC,MAAM,CAAC,SAAS,CAAC,IAAc;QAC3B,OAAO,CAAE,IAA+C,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACnF,CAAC;IAED,MAAM,CAAC,WAAW;QACd,OAAO,OAAO,CAAC;IACnB,CAAC;aAEM,WAAM,GAAG,UAAU,CAAC"} \ No newline at end of file +{"version":3,"file":"PropDimensionsMode.js","sourceRoot":"","sources":["../../../src/datamodel/prop/PropDimensionsMode.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAGrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,+EAA+E;AAC/E,uEAAuE;AACvE,kFAAkF;AAClF,iFAAiF;AACjF,mFAAmF;AACnF,uEAAuE;AACvE,kFAAkF;AAClF,yEAAyE;AACzE,EAAE;AACF,mFAAmF;AACnF,4EAA4E;AAC5E,8EAA8E;AAC9E,iFAAiF;AACjF,sBAAsB;AACtB,EAAE;AACF,mFAAmF;AACnF,mFAAmF;AACnF,6EAA6E;AAC7E,mFAAmF;AACnF,sEAAsE;AACtE,mFAAmF;AACnF,UAAU;AACV,EAAE;AACF,gFAAgF;AAChF,kFAAkF;AAClF,2DAA2D;AAC3D,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAEtC,MAAM,CAAC,OAAO,OAAO,kBAAkB;aAC5B,QAAG,GAAG,gBAAgB,CAAC;aACvB,gBAAW,GAAG,iBAAiB,CAAC;aAChC,WAAM,GAAG,QAAQ,CAAC;aAClB,WAAM,GAAkB,gBAAgB,CAAC;IAChD,oEAAoE;aAC7D,iBAAY,GAAG,gBAAgB,CAAC;IACvC,yEAAyE;IACzE,gDAAgD;aACzC,eAAU,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEvC,MAAM,CAAC,SAAS,CAAC,IAAc;QAC3B,OAAO,CAAE,IAA+C,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACnF,CAAC;IAED,MAAM,CAAC,WAAW;QACd,OAAO,OAAO,CAAC;IACnB,CAAC;aAEM,WAAM,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/dist/datamodel/prop/PropSignalComplexity.d.ts b/dist/datamodel/prop/PropSignalComplexity.d.ts new file mode 100644 index 00000000..39fb7d9a --- /dev/null +++ b/dist/datamodel/prop/PropSignalComplexity.d.ts @@ -0,0 +1,14 @@ +import type BaseNode from '../node/BaseNode.js'; +import { formatText } from './formatText.js'; +export default class PropSignalComplexity { + static key: string; + static displayName: string; + static editor: string; + static column: string | null; + static nodeProperty: string; + static sourceKeys: string[]; + static readValue(node: BaseNode): string; + static readOptions(): string[]; + static format: typeof formatText; +} +//# sourceMappingURL=PropSignalComplexity.d.ts.map \ No newline at end of file diff --git a/dist/datamodel/prop/PropSignalComplexity.d.ts.map b/dist/datamodel/prop/PropSignalComplexity.d.ts.map new file mode 100644 index 00000000..cc8f8a0f --- /dev/null +++ b/dist/datamodel/prop/PropSignalComplexity.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PropSignalComplexity.d.ts","sourceRoot":"","sources":["../../../src/datamodel/prop/PropSignalComplexity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAmB7C,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACrC,MAAM,CAAC,GAAG,SAAgB;IAC1B,MAAM,CAAC,WAAW,SAAgB;IAClC,MAAM,CAAC,MAAM,SAAY;IACzB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAgB;IAE5C,MAAM,CAAC,YAAY,SAAgB;IAEnC,MAAM,CAAC,UAAU,WAAkB;IAEnC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAIxC,MAAM,CAAC,WAAW,IAAI,MAAM,EAAE;IAI9B,MAAM,CAAC,MAAM,oBAAc;CAC9B"} \ No newline at end of file diff --git a/dist/datamodel/prop/PropSignalComplexity.js b/dist/datamodel/prop/PropSignalComplexity.js new file mode 100644 index 00000000..dfd5aa9d --- /dev/null +++ b/dist/datamodel/prop/PropSignalComplexity.js @@ -0,0 +1,36 @@ +// Copyright 2026 The MathWorks, Inc. +import { formatText } from './formatText.js'; +// A Simulink.Signal's Complexity: an editable dropdown over the Signal's own enum, +// 'auto' | 'real' | 'complex'. Measured in R2027a: `set(Simulink.Signal, 'Complexity')` is +// exactly that set, mpt.Signal's is the same, the default is 'auto', and any other value is +// refused with "There is no enumerated value named 'X'." So this is PropComplexity's mechanism +// with the Signal's set. PropComplexity stays BusElement's and ValueType's, whose classes +// have no 'auto'; the two share the column and nothing else. +// +// SignalNode.setProperty validates an edit against readOptions (DataNode._rejectUnknownEnumeral), +// so the dropdown and the rule that refuses a typed-in value are one list. `nodeProperty` sends +// an edit to the node field, which both panes read: SignalNode puts this atom in the table and +// in the Property Inspector, in place of the schema descriptor that reads the source bag. +// +// readValue falls back to 'auto', not '': a cleared cell stores '' (the licence +// _rejectUnknownEnumeral gives a clear), which SignalNode saves as 'auto', so the cell shows +// what the save writes. +const OPTIONS = ['auto', 'real', 'complex']; +export default class PropSignalComplexity { + static { this.key = 'complexity'; } + static { this.displayName = 'Complexity'; } + static { this.editor = 'select'; } + static { this.column = 'complexity'; } + // The node field (and raw `_properties` key) an edit is written to. + static { this.nodeProperty = 'Complexity'; } + // Raw _properties key, so the PI "Other" catch-all treats it as already shown. + static { this.sourceKeys = ['Complexity']; } + static readValue(node) { + return (node.Complexity) || 'auto'; + } + static readOptions() { + return OPTIONS; + } + static { this.format = formatText; } +} +//# sourceMappingURL=PropSignalComplexity.js.map \ No newline at end of file diff --git a/dist/datamodel/prop/PropSignalComplexity.js.map b/dist/datamodel/prop/PropSignalComplexity.js.map new file mode 100644 index 00000000..da7fe65a --- /dev/null +++ b/dist/datamodel/prop/PropSignalComplexity.js.map @@ -0,0 +1 @@ +{"version":3,"file":"PropSignalComplexity.js","sourceRoot":"","sources":["../../../src/datamodel/prop/PropSignalComplexity.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAGrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,mFAAmF;AACnF,2FAA2F;AAC3F,4FAA4F;AAC5F,+FAA+F;AAC/F,0FAA0F;AAC1F,6DAA6D;AAC7D,EAAE;AACF,kGAAkG;AAClG,gGAAgG;AAChG,+FAA+F;AAC/F,0FAA0F;AAC1F,EAAE;AACF,gFAAgF;AAChF,6FAA6F;AAC7F,wBAAwB;AACxB,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,oBAAoB;aAC9B,QAAG,GAAG,YAAY,CAAC;aACnB,gBAAW,GAAG,YAAY,CAAC;aAC3B,WAAM,GAAG,QAAQ,CAAC;aAClB,WAAM,GAAkB,YAAY,CAAC;IAC5C,oEAAoE;aAC7D,iBAAY,GAAG,YAAY,CAAC;IACnC,+EAA+E;aACxE,eAAU,GAAG,CAAC,YAAY,CAAC,CAAC;IAEnC,MAAM,CAAC,SAAS,CAAC,IAAc;QAC3B,OAAO,CAAE,IAA2C,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC;IAC/E,CAAC;IAED,MAAM,CAAC,WAAW;QACd,OAAO,OAAO,CAAC;IACnB,CAAC;aAEM,WAAM,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/dist/datamodel/prop/PropSignalDimensionsMode.d.ts b/dist/datamodel/prop/PropSignalDimensionsMode.d.ts new file mode 100644 index 00000000..9d59ab82 --- /dev/null +++ b/dist/datamodel/prop/PropSignalDimensionsMode.d.ts @@ -0,0 +1,14 @@ +import type BaseNode from '../node/BaseNode.js'; +import { formatText } from './formatText.js'; +export default class PropSignalDimensionsMode { + static key: string; + static displayName: string; + static editor: string; + static column: string | null; + static nodeProperty: string; + static sourceKeys: string[]; + static readValue(node: BaseNode): string; + static readOptions(): string[]; + static format: typeof formatText; +} +//# sourceMappingURL=PropSignalDimensionsMode.d.ts.map \ No newline at end of file diff --git a/dist/datamodel/prop/PropSignalDimensionsMode.d.ts.map b/dist/datamodel/prop/PropSignalDimensionsMode.d.ts.map new file mode 100644 index 00000000..9931c8fd --- /dev/null +++ b/dist/datamodel/prop/PropSignalDimensionsMode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PropSignalDimensionsMode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/prop/PropSignalDimensionsMode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAmB7C,MAAM,CAAC,OAAO,OAAO,wBAAwB;IACzC,MAAM,CAAC,GAAG,SAAoB;IAC9B,MAAM,CAAC,WAAW,SAAqB;IACvC,MAAM,CAAC,MAAM,SAAY;IACzB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAoB;IAEhD,MAAM,CAAC,YAAY,SAAoB;IAEvC,MAAM,CAAC,UAAU,WAAsB;IAEvC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAIxC,MAAM,CAAC,WAAW,IAAI,MAAM,EAAE;IAI9B,MAAM,CAAC,MAAM,oBAAc;CAC9B"} \ No newline at end of file diff --git a/dist/datamodel/prop/PropSignalDimensionsMode.js b/dist/datamodel/prop/PropSignalDimensionsMode.js new file mode 100644 index 00000000..652d0e05 --- /dev/null +++ b/dist/datamodel/prop/PropSignalDimensionsMode.js @@ -0,0 +1,36 @@ +// Copyright 2026 The MathWorks, Inc. +import { formatText } from './formatText.js'; +// A Simulink.Signal's DimensionsMode: an editable dropdown over the Signal's own enum, +// 'auto' | 'Fixed' | 'Variable'. Measured in R2027a: `set(Simulink.Signal, 'DimensionsMode')` +// is exactly that set, with that casing, mpt.Signal's is the same, the default is 'auto', and +// any other value is refused with "There is no enumerated value named 'X'." So this is +// PropDimensionsMode's mechanism with the Signal's set. PropDimensionsMode stays BusElement's +// and ValueType's, whose classes have no 'auto'. +// +// SignalNode.setProperty validates an edit against readOptions (DataNode._rejectUnknownEnumeral), +// so the dropdown and the rule that refuses a typed-in value are one list. `nodeProperty` sends +// an edit to the node field, which both panes read: SignalNode puts this atom in the table and +// in the Property Inspector, in place of the schema descriptor that reads the source bag. +// +// readValue falls back to 'auto', not '': a cleared cell stores '' (the licence +// _rejectUnknownEnumeral gives a clear), which SignalNode saves as 'auto', so the cell shows +// what the save writes. +const OPTIONS = ['auto', 'Fixed', 'Variable']; +export default class PropSignalDimensionsMode { + static { this.key = 'dimensionsMode'; } + static { this.displayName = 'Dimensions Mode'; } + static { this.editor = 'select'; } + static { this.column = 'dimensionsMode'; } + // The node field (and raw `_properties` key) an edit is written to. + static { this.nodeProperty = 'DimensionsMode'; } + // Raw _properties key, so the PI "Other" catch-all treats it as already shown. + static { this.sourceKeys = ['DimensionsMode']; } + static readValue(node) { + return (node.DimensionsMode) || 'auto'; + } + static readOptions() { + return OPTIONS; + } + static { this.format = formatText; } +} +//# sourceMappingURL=PropSignalDimensionsMode.js.map \ No newline at end of file diff --git a/dist/datamodel/prop/PropSignalDimensionsMode.js.map b/dist/datamodel/prop/PropSignalDimensionsMode.js.map new file mode 100644 index 00000000..a8d211a1 --- /dev/null +++ b/dist/datamodel/prop/PropSignalDimensionsMode.js.map @@ -0,0 +1 @@ +{"version":3,"file":"PropSignalDimensionsMode.js","sourceRoot":"","sources":["../../../src/datamodel/prop/PropSignalDimensionsMode.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAGrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,uFAAuF;AACvF,8FAA8F;AAC9F,8FAA8F;AAC9F,uFAAuF;AACvF,8FAA8F;AAC9F,iDAAiD;AACjD,EAAE;AACF,kGAAkG;AAClG,gGAAgG;AAChG,+FAA+F;AAC/F,0FAA0F;AAC1F,EAAE;AACF,gFAAgF;AAChF,6FAA6F;AAC7F,wBAAwB;AACxB,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAE9C,MAAM,CAAC,OAAO,OAAO,wBAAwB;aAClC,QAAG,GAAG,gBAAgB,CAAC;aACvB,gBAAW,GAAG,iBAAiB,CAAC;aAChC,WAAM,GAAG,QAAQ,CAAC;aAClB,WAAM,GAAkB,gBAAgB,CAAC;IAChD,oEAAoE;aAC7D,iBAAY,GAAG,gBAAgB,CAAC;IACvC,+EAA+E;aACxE,eAAU,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEvC,MAAM,CAAC,SAAS,CAAC,IAAc;QAC3B,OAAO,CAAE,IAA+C,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC;IACvF,CAAC;IAED,MAAM,CAAC,WAAW;QACd,OAAO,OAAO,CAAC;IACnB,CAAC;aAEM,WAAM,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/dist/datamodel/prop/PropValue.js b/dist/datamodel/prop/PropValue.js index b888279f..a688a01e 100644 --- a/dist/datamodel/prop/PropValue.js +++ b/dist/datamodel/prop/PropValue.js @@ -55,7 +55,7 @@ export default class PropValue { } // The inverse of the quoting above — see PropClass.unformat. Consulted only by // DataNode's generic string path, i.e. by the nodes that store a bare string - // and let this atom decorate it (Simulink.VariantBank and friends). The classes + // and let this atom decorate it (Simulink.VariantExpression and friends). The classes // whose Value is a real MATLAB expression (Parameter, a MATLAB variable, // VariantControl) override setProperty and parse the text themselves, so their // quotes stay meaningful and this is never reached for them. diff --git a/dist/datamodel/prop/PropValue.js.map b/dist/datamodel/prop/PropValue.js.map index 6e2e9ae3..4759cfa4 100644 --- a/dist/datamodel/prop/PropValue.js.map +++ b/dist/datamodel/prop/PropValue.js.map @@ -1 +1 @@ -{"version":3,"file":"PropValue.js","sourceRoot":"","sources":["../../../src/datamodel/prop/PropValue.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAGrC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE3G,MAAM,CAAC,OAAO,OAAO,SAAS;aACnB,QAAG,GAAG,OAAO,CAAC;aACd,gBAAW,GAAG,OAAO,CAAC;aACtB,WAAM,GAAG,MAAM,CAAC;aAChB,WAAM,GAAG,OAAO,CAAC;IAExB,MAAM,CAAC,SAAS,CAAC,IAAc;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAAc;QACxB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,aAAa,CAAC;QACzB,CAAC;QACD,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,qEAAqE;QACrE,iBAAiB;QACjB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,4EAA4E;QAC5E,0EAA0E;QAC1E,4EAA4E;QAC5E,uEAAuE;QACvE,mEAAmE;QACnE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAAC,OAAO,aAAa,CAAC;YAAC,CAAC;YACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACrD,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,uEAAuE;YACvE,uEAAuE;YACvE,sEAAsE;YACtE,sEAAsE;YACtE,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/B,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAC,OAAO,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YAChE,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACzE,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,+EAA+E;IAC/E,6EAA6E;IAC7E,gFAAgF;IAChF,yEAAyE;IACzE,+EAA+E;IAC/E,6DAA6D;aACtD,aAAQ,GAAG,iBAAiB,CAAC"} \ No newline at end of file +{"version":3,"file":"PropValue.js","sourceRoot":"","sources":["../../../src/datamodel/prop/PropValue.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAGrC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE3G,MAAM,CAAC,OAAO,OAAO,SAAS;aACnB,QAAG,GAAG,OAAO,CAAC;aACd,gBAAW,GAAG,OAAO,CAAC;aACtB,WAAM,GAAG,MAAM,CAAC;aAChB,WAAM,GAAG,OAAO,CAAC;IAExB,MAAM,CAAC,SAAS,CAAC,IAAc;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAAc;QACxB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,aAAa,CAAC;QACzB,CAAC;QACD,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,qEAAqE;QACrE,iBAAiB;QACjB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,4EAA4E;QAC5E,0EAA0E;QAC1E,4EAA4E;QAC5E,uEAAuE;QACvE,mEAAmE;QACnE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAAC,OAAO,aAAa,CAAC;YAAC,CAAC;YACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACrD,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,uEAAuE;YACvE,uEAAuE;YACvE,sEAAsE;YACtE,sEAAsE;YACtE,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/B,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAC,OAAO,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YAChE,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACzE,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,+EAA+E;IAC/E,6EAA6E;IAC7E,sFAAsF;IACtF,yEAAyE;IACzE,+EAA+E;IAC/E,6DAA6D;aACtD,aAAQ,GAAG,iBAAiB,CAAC"} \ No newline at end of file diff --git a/dist/datamodel/schema/classes/breakpoint.json b/dist/datamodel/schema/classes/breakpoint.json index a36d4119..8cad95c0 100644 --- a/dist/datamodel/schema/classes/breakpoint.json +++ b/dist/datamodel/schema/classes/breakpoint.json @@ -8,7 +8,7 @@ "supportTunableSize" ], "layout": [ - { "group": "General", "items": ["name", "value", "dataType", "kind", "class", "description"] }, + { "group": "General", "items": ["name", "value", "dataType", "kind", "class"] }, { "group": "Code Generation", "items": ["storageClass", "structTypeName", "structTypeDataScope", "structTypeHeaderFile"] }, { "group": "Advanced", "items": ["supportTunableSize"] } ] diff --git a/dist/datamodel/schema/classes/lookupTable.json b/dist/datamodel/schema/classes/lookupTable.json index 2ec50ecb..fd31dbf8 100644 --- a/dist/datamodel/schema/classes/lookupTable.json +++ b/dist/datamodel/schema/classes/lookupTable.json @@ -10,7 +10,7 @@ "supportTunableSize" ], "layout": [ - { "group": "General", "items": ["name", "value", "dataType", "kind", "class", "description"] }, + { "group": "General", "items": ["name", "value", "dataType", "kind", "class"] }, { "group": "Value Properties", "items": ["breakpointsSpecification"] }, { "group": "Code Generation", "items": ["storageClass", "structTypeName", "structTypeDataScope", "structTypeHeaderFile"] }, { "group": "Advanced", "items": ["allowDifferentTableBpSizes", "supportTunableSize"] } diff --git a/dist/datamodel/schema/classes/parameter.json b/dist/datamodel/schema/classes/parameter.json index 648da38b..ad54780c 100644 --- a/dist/datamodel/schema/classes/parameter.json +++ b/dist/datamodel/schema/classes/parameter.json @@ -13,7 +13,7 @@ "storedIntMax", "storageClass", { "$ref": "headerFile", "sourcePath": "CoderInfo.CustomAttributes.HeaderFile", "projected": true }, - { "$ref": "alignment", "sourcePath": "CoderInfo.Alignment", "projected": true }, + { "$ref": "alignment", "sourcePath": "CoderInfo.Alignment", "projected": true, "editor": "text" }, "identifier", "definitionFile", "owner", diff --git a/dist/datamodel/schema/classes/signal.json b/dist/datamodel/schema/classes/signal.json index 36746299..ed89e497 100644 --- a/dist/datamodel/schema/classes/signal.json +++ b/dist/datamodel/schema/classes/signal.json @@ -16,7 +16,7 @@ { "$ref": "samplingMode", "default": "auto" }, "storageClass", "identifier", - { "$ref": "alignment", "sourcePath": "CoderInfo.Alignment", "projected": true }, + { "$ref": "alignment", "sourcePath": "CoderInfo.Alignment", "projected": true, "editor": "text" }, { "$ref": "dataScope", "sourcePath": "CoderInfo.CustomAttributes.DataScope" }, { "$ref": "headerFile", "sourcePath": "CoderInfo.CustomAttributes.HeaderFile", "projected": true }, "definitionFile", diff --git a/dist/datamodel/schema/index.d.ts b/dist/datamodel/schema/index.d.ts index fecc62fb..35384096 100644 --- a/dist/datamodel/schema/index.d.ts +++ b/dist/datamodel/schema/index.d.ts @@ -4,5 +4,13 @@ export declare function getLayout(className: string): PILayoutGroup[] | undefine export declare function getSchemaClasses(): string[]; export declare function resolveSourcePath(properties: Record | undefined, path: string): unknown; export declare function writeSourcePath(properties: Record | undefined, path: string, value: unknown): boolean; +export declare function isTypedScalar(value: unknown): value is { + _type: unknown; + _value: unknown; +}; +export declare function sourceLeaf(properties: Record | undefined, path: string): { + bag: Record; + key: string; +} | null; export declare function hydrate(properties: Record | undefined, prop: ResolvedProp): unknown; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/dist/datamodel/schema/index.d.ts.map b/dist/datamodel/schema/index.d.ts.map index 3253e676..f7a5f6c8 100644 --- a/dist/datamodel/schema/index.d.ts.map +++ b/dist/datamodel/schema/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/datamodel/schema/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAA+B,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAqH3F,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,GAAG,SAAS,CAQvE;AAMD,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,SAAS,CAExE;AAID,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAiDD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAcxG;AAgCD,wBAAgB,eAAe,CAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC/C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACf,OAAO,CAsBT;AAMD,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAGpG"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/datamodel/schema/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAA+B,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAqH3F,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,GAAG,SAAS,CAQvE;AAMD,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,SAAS,CAExE;AAID,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAiDD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAcxG;AAgCD,wBAAgB,eAAe,CAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC/C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACf,OAAO,CAYT;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAE1F;AAOD,wBAAgB,UAAU,CACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC/C,IAAI,EAAE,MAAM,GACb;IAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CActD;AAMD,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAGpG"} \ No newline at end of file diff --git a/dist/datamodel/schema/index.js b/dist/datamodel/schema/index.js index 7c81e3e7..a2409896 100644 --- a/dist/datamodel/schema/index.js +++ b/dist/datamodel/schema/index.js @@ -218,28 +218,42 @@ function writableBag(container) { // (we never synthesize e.g. a missing CoderInfo). Display/edit-only; the caller // owns dirty-marking and serialization. export function writeSourcePath(properties, path, value) { - if (!properties) { + const leaf = sourceLeaf(properties, path); + if (!leaf) { return false; } + const existing = leaf.bag[leaf.key]; + if (isTypedScalar(existing)) { + existing._value = String(value); + } + else { + leaf.bag[leaf.key] = value; + } + return true; +} +// Whether `value` is a typed-scalar leaf `{ _type, _value }`, the form unwrapScalar reads. +export function isTypedScalar(value) { + return !!value && typeof value === 'object' && !Array.isArray(value) && '_type' in value && '_value' in value; +} +// The bag a dotted sourcePath's leaf is (or would be) written into, and the leaf's key: the +// place writeSourcePath writes, for a caller whose write is not a plain assignment (removing +// the key, or choosing the leaf's form from the one already there). Null, with nothing +// touched, when an intermediate sub-object is absent: a missing CoderInfo is never +// synthesized, as for writeSourcePath. +export function sourceLeaf(properties, path) { + if (!properties) { + return null; + } const parts = path.split('.'); let current = properties; for (let i = 0; i < parts.length - 1; i++) { const next = propertyBag(current, parts[i])[parts[i]]; if (next === null || next === undefined || typeof next !== 'object') { - return false; + return null; } current = next; } - const leafKey = parts[parts.length - 1]; - const bag = writableBag(current); - const existing = bag[leafKey]; - if (existing && typeof existing === 'object' && !Array.isArray(existing) && '_type' in existing && '_value' in existing) { - existing._value = String(value); - } - else { - bag[leafKey] = value; - } - return true; + return { bag: writableBag(current), key: parts[parts.length - 1] }; } // Read a property's value from a `_properties` bag for DISPLAY, substituting the // descriptor's declared default when the value is absent. This is display-only: diff --git a/dist/datamodel/schema/index.js.map b/dist/datamodel/schema/index.js.map index 4552aaf7..429a02d0 100644 --- a/dist/datamodel/schema/index.js.map +++ b/dist/datamodel/schema/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/datamodel/schema/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAOrC,OAAO,IAAI,MAAM,mBAAmB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,OAAO,UAAU,MAAM,yBAAyB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACvE,OAAO,OAAO,MAAM,sBAAsB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACjE,OAAO,UAAU,MAAM,yBAAyB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACvE,OAAO,SAAS,MAAM,0BAA0B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACvE,OAAO,MAAM,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACjE,OAAO,SAAS,MAAM,0BAA0B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACvE,OAAO,SAAS,MAAM,0BAA0B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACvE,OAAO,WAAW,MAAM,4BAA4B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3E,OAAO,QAAQ,MAAM,yBAAyB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACrE,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,OAAO,aAAa,MAAM,8BAA8B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/E,OAAO,UAAU,MAAM,2BAA2B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACzE,OAAO,cAAc,MAAM,+BAA+B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACjF,OAAO,iBAAiB,MAAM,kCAAkC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACvF,OAAO,eAAe,MAAM,gCAAgC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACnF,OAAO,WAAW,MAAM,4BAA4B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3E,OAAO,oBAAoB,MAAM,qCAAqC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7F,OAAO,wBAAwB,MAAM,yCAAyC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACrG,OAAO,SAAS,MAAM,0BAA0B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACvE,OAAO,YAAY,MAAM,6BAA6B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7E,OAAO,WAAW,MAAM,4BAA4B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3E,OAAO,UAAU,MAAM,2BAA2B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACzE,OAAO,YAAY,MAAM,6BAA6B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAE7E,+EAA+E;AAC/E,6EAA6E;AAC7E,iFAAiF;AACjF,kEAAkE;AAClE,MAAM,QAAQ,GAA4B;IACtC,GAAG,IAAI;IACP,GAAG,UAAU;IACb,GAAG,OAAO;IACV,GAAG,UAAU;CAChB,CAAC;AAEF,gFAAgF;AAChF,+EAA+E;AAC/E,6EAA6E;AAC7E,4EAA4E;AAC5E,+EAA+E;AAC/E,sDAAsD;AACtD,MAAM,UAAU,GAA6B;IACzC,GAAG,SAAS;IACZ,GAAG,MAAM;IACT,GAAG,SAAS;IACZ,GAAG,SAAS;IACZ,GAAG,WAAW;IACd,GAAG,QAAQ;IACX,GAAG,GAAG;IACN,GAAG,aAAa;IAChB,GAAG,UAAU;IACb,GAAG,cAAc;IACjB,GAAG,iBAAiB;IACpB,GAAG,eAAe;IAClB,GAAG,WAAW;IACd,GAAG,oBAAoB;IACvB,GAAG,wBAAwB;IAC3B,GAAG,SAAS;IACZ,GAAG,YAAY;IACf,GAAG,WAAW;IACd,GAAG,UAAU;IACb,GAAG,YAAY;CAClB,CAAC;AAEF,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,yDAAyD;AACzD,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,iFAAiF;AACjF,kFAAkF;AAClF,gFAAgF;AAChF,+EAA+E;AAC/E,kFAAkF;AAClF,gFAAgF;AAChF,8DAA8D;AAC9D,MAAM,aAAa,GAA2B;IAC1C,gCAAgC,EAAE,mCAAmC;IACrE,eAAe,EAAE,oBAAoB;IACrC,YAAY,EAAE,iBAAiB;CAClC,CAAC;AAEF,qFAAqF;AACrF,mFAAmF;AACnF,sFAAsF;AACtF,qFAAqF;AACrF,2DAA2D;AAC3D,SAAS,GAAG,CAAI,KAAwB,EAAE,GAAW;IACjD,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACrF,CAAC;AAED,SAAS,QAAQ,CAAC,SAAiB;IAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC5C,OAAO,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsC,CAAC;AAE5D,SAAS,UAAU,CAAC,GAAa;IAC7B,MAAM,GAAG,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,0EAA0E;IAC1E,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,EAAiC,CAAC;IACvE,OAAO,MAAM,CAAC,IAAI,CAAC;IACnB,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED,yEAAyE;AACzE,+EAA+E;AAC/E,MAAM,UAAU,SAAS,CAAC,SAAiB;IACvC,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1G,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,4EAA4E;AAC5E,gFAAgF;AAChF,gFAAgF;AAChF,8CAA8C;AAC9C,MAAM,UAAU,SAAS,CAAC,SAAiB;IACvC,OAAO,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;AACvC,CAAC;AAED,iFAAiF;AACjF,gFAAgF;AAChF,MAAM,UAAU,gBAAgB;IAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnC,CAAC;AAED,6EAA6E;AAC7E,gFAAgF;AAChF,iEAAiE;AACjE,oHAAoH;AACpH,8EAA8E;AAC9E,gFAAgF;AAChF,+CAA+C;AAC/C,SAAS,WAAW,CAAC,SAAkC,EAAE,GAAW;IAChE,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC;IACpC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,IAAK,KAAiC,EAAE,CAAC;QAClF,OAAO,KAAgC,CAAC;IAC5C,CAAC;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC;IACrC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC5E,MAAM,SAAS,GAAI,QAAQ,CAAC,CAAC,CAA6B,CAAC,WAAW,CAAC;QACvE,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC7C,OAAO,SAAoC,CAAC;QAChD,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,0EAA0E;AAC1E,iFAAiF;AACjF,+EAA+E;AAC/E,SAAS,YAAY,CAAC,KAAc;IAChC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;QAC3C,IAAI,OAAO,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC3B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO,CAAC,CAAC,MAAM,CAAC;QACpB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,kFAAkF;AAClF,wEAAwE;AACxE,mFAAmF;AACnF,gFAAgF;AAChF,MAAM,UAAU,iBAAiB,CAAC,UAA+C,EAAE,IAAY;IAC3F,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,GAAY,UAAU,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC3E,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,GAAG,WAAW,CAAC,OAAkC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,gFAAgF;AAChF,iFAAiF;AACjF,+EAA+E;AAC/E,yEAAyE;AACzE,kFAAkF;AAClF,0EAA0E;AAC1E,oBAAoB;AACpB,SAAS,WAAW,CAAC,SAAkC;IACnD,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC;IACpC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,KAAgC,CAAC;IAC5C,CAAC;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC;IACrC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC5E,MAAM,SAAS,GAAI,QAAQ,CAAC,CAAC,CAA6B,CAAC,WAAW,CAAC;QACvE,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC7C,OAAO,SAAoC,CAAC;QAChD,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,kFAAkF;AAClF,2EAA2E;AAC3E,kFAAkF;AAClF,kFAAkF;AAClF,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,wCAAwC;AACxC,MAAM,UAAU,eAAe,CAC3B,UAA+C,EAC/C,IAAY,EACZ,KAAc;IAEd,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,GAA4B,UAAU,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClE,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,GAAG,IAA+B,CAAC;IAC9C,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,IAAK,QAAoC,IAAI,QAAQ,IAAK,QAAoC,EAAE,CAAC;QAC/K,QAAoC,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;SAAM,CAAC;QACJ,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,iFAAiF;AACjF,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,MAAM,UAAU,OAAO,CAAC,UAA+C,EAAE,IAAkB;IACvF,MAAM,GAAG,GAAG,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3D,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAClD,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/datamodel/schema/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/datamodel/node/BaseNode.ts b/src/datamodel/node/BaseNode.ts index e89d6f2c..144001ce 100644 --- a/src/datamodel/node/BaseNode.ts +++ b/src/datamodel/node/BaseNode.ts @@ -27,6 +27,11 @@ export interface PropClass { // data. When omitted, toPIObject falls back to [nodeProperty ?? key]. sourceKeys?: string[]; format: (value: unknown) => string; + // Whether THIS node takes an edit of a prop whose editor is not 'label', for a prop + // whose editability depends on the node's other values rather than on its class alone: + // MATLAB refuses a CoderInfo.Alignment under StorageClass 'Auto' (schemaBridge). Omitted, + // the editor alone decides. It can only take editability away, never grant it. + editableFor?: (node: BaseNode) => boolean; } export interface PropInfo { @@ -634,6 +639,9 @@ export default class BaseNode { if (key === 'Description') { editable = editable && this.descriptionEditable; } + if (editable && PropClassRef.editableFor) { + editable = PropClassRef.editableFor(this); + } // Every other column of a node whose value is still an encoded stream, schema-projected // ones included (Storage Class, Data Type…): they are all inside the stream. The Name // was answered above, by nameEditable. diff --git a/src/datamodel/node/data/BreakpointNode.ts b/src/datamodel/node/data/BreakpointNode.ts index 2dbc99aa..ed60c3ee 100644 --- a/src/datamodel/node/data/BreakpointNode.ts +++ b/src/datamodel/node/data/BreakpointNode.ts @@ -2,11 +2,17 @@ import SimulinkObjectNode from '../SimulinkObjectNode.js'; import type { PropClass } from '../BaseNode.js'; import type BaseNode from '../BaseNode.js'; +import type { SetPropertyResult } from '../DataNode.js'; import PropName from '../../prop/PropName.js'; import PropDataType from '../../prop/PropDataType.js'; -import PropDescription from '../../prop/PropDescription.js'; const CLASS_NAME = 'Simulink.Breakpoint'; export default class BreakpointNode extends SimulinkObjectNode { + // What the FILE says, shown read-only. MATLAB's Simulink.Breakpoint has no Description: + // `isprop` is 0, setting one fails with MATLAB:noPublicFieldForClass (R2027a, measured + // 2026-10-16), and a dictionary MATLAB writes carries no such key. A key some other writer + // left is read here for the Description column and written back exactly as read: nothing + // overrides it (`_serializedOverrides` is the inherited empty one), so the file's own bag + // passes through. Simulink.FunctionElement is the precedent (ServiceBusNode.ts). Description: string; constructor(name: string, parent: BaseNode | null, props: Record, serial: Record) { super(name, parent, serial); this.Description = (props.Description as string) || ''; } get icon(): string { return 'wsSimulinkBreakpoint'; } @@ -14,9 +20,18 @@ export default class BreakpointNode extends SimulinkObjectNode { // A Breakpoint has no scalar "value" — the Value column is empty and not editable. get displayValue(): string { return ''; } get valueEditable(): boolean { return false; } - getProperties(): PropClass[] { return [PropName, PropDataType, PropDescription]; } + getProperties(): PropClass[] { return [PropName, PropDataType]; } // PI layout: schema-driven "General" group (classes/breakpoint.json). - _serializedOverrides(): Record { return this._gatedProps({ Description: this.Description }); } + // No editor in the table (`row._descriptionEditable`) or the Property Inspector. + get descriptionEditable(): boolean { return false; } + // An edit is refused in MATLAB's words, rather than accepted and saved as a key MATLAB + // ignores on load, which is what an edit here used to do. + setProperty(propName: string, stringValue: string): true | SetPropertyResult { + if (propName === 'Description') { + return { error: true, reason: `Unrecognized property 'Description' for class '${CLASS_NAME}'.`, invalidValue: stringValue, validValue: this.Description }; + } + return super.setProperty(propName, stringValue); + } static get defaultName(): string { return 'Breakpoint'; } // MEASURED from what MATLAB R2027a writes for `Simulink.Breakpoint` with nothing set, in // MATLAB's own alphabetical key order. Three of the four properties are themselves nested diff --git a/src/datamodel/node/data/CodeGeneration.schema-columns.md b/src/datamodel/node/data/CodeGeneration.schema-columns.md index 1f1ae487..afa31fb2 100644 --- a/src/datamodel/node/data/CodeGeneration.schema-columns.md +++ b/src/datamodel/node/data/CodeGeneration.schema-columns.md @@ -11,14 +11,17 @@ The Code Generation group contributes three schema-projected columns to the Property Inspector and data table: **Storage Class** (editable dropdown), -**Header File** (read-only label), and **Alignment** (read-only label). These -are properties of the `Simulink.CoderInfo` sub-object nested at -`_properties.CoderInfo._properties.*` in the serialized entry. - -Only **Storage Class** is editable in the UI. Edits flow through -`trySetSchemaProperty` in `schemaBridge.ts`, which validates the value against -the schema's `options` list and then writes directly to -`CoderInfo._properties.StorageClass` via `writeSourcePath`. +**Header File** (read-only label), and **Alignment** (editable text, except +under StorageClass `Auto`). These are properties of the `Simulink.CoderInfo` +sub-object nested at `_properties.CoderInfo._properties.*` in the serialized +entry. + +**Storage Class** and **Alignment** are editable in the table. The Property +Inspector shows all three read-only: it has no edit channel for schema rows. +Edits flow through `trySetSchemaProperty` in `schemaBridge.ts`. Storage Class is +validated against the schema's `options` list and written to +`CoderInfo._properties.StorageClass` via `writeSourcePath`. Alignment has its +own rule and write form (below). ## Property table @@ -26,7 +29,7 @@ the schema's `options` list and then writes directly to |------------|-------|------------|------|--------|----------|-------| | storageClass | Storage Class | CoderInfo.StorageClass | string | select | **yes** | Code Generation | | headerFile | Header File | CoderInfo.CustomAttributes.HeaderFile | string | label | no | Code Generation | -| alignment | Alignment | CoderInfo.Alignment | int | label | no | Code Generation | +| alignment | Alignment | CoderInfo.Alignment | int | text | **yes**, unless StorageClass is `Auto` | Code Generation | ## StorageClass — allowed values (via CoderInfo.StorageClass path) @@ -94,24 +97,48 @@ selected. Because: It is rendered with `editor: 'label'` — `trySetSchemaProperty` returns `null` (not a writable schema prop), so the edit path is never reached. -## alignment — why read-only - -`CoderInfo.Alignment` is typed `int` in the schema but rendered with -`editor: 'label'`. MATLAB accepts `-1` (inherit/default) and positive powers of -2 (1, 2, 4, 8, ..., up to platform limit). The rejection: - -> "Invalid setting for property 'Alignment'. Must be a positive integer that is a -> power of 2, or -1." - -Because of the power-of-2 constraint (which requires non-trivial validation) and -the `-1` sentinel, it is kept read-only. The `trySetSchemaProperty` code path for -`editor: 'label'` returns `null` immediately. - -Note that a *generic* `int` check (`Number.isInteger`) would NOT be the right -validation if Alignment were ever made editable: it accepts 3, 5, 6, … which -MATLAB rejects. Making it editable means writing the power-of-2 + `-1` rule -explicitly, so no generic int branch is carried in `trySetSchemaProperty` -speculatively — see below. +## alignment — MATLAB's rule + +`CoderInfo.Alignment` is an int32. Measured in R2027a (27.1.0.3409468, +2026-10-16), on `Simulink.Parameter`, `Simulink.Signal` and their `mpt.*` +subclasses: + +- The value is converted as int32 first: round half away from zero, + saturating, with NaN as 0 and `true` as 1. So 1.5 is stored as 2, 2.5 becomes + 3 and is refused, and 2^31 becomes 2147483647 and is refused. +- The value must then be -1 (the default) or a power of two from 1 to 2^30. + Anything else is refused with " is not a valid alignment boundary. The + alignment boundary must be either -1 or a power of two no more than 128." We + leave out "no more than 128", because MATLAB does not apply it: 256 through + 2^30 are all accepted. +- A char value is refused with "Value must be numeric or logical." A table + cell's text is read as the number it spells: a decimal literal, `Inf`, `NaN`, + `true` or `false`. Anything else, including empty text, gets that refusal. +- Only after the value check, under StorageClass `Auto` (the default, and most + entries), every value but -1 is refused: "Cannot set Alignment when + StorageClass is 'Auto'." So 3 under `Auto` is refused as 3. The table cell is + a plain string there, through the `editableFor` hook on the column's + PropClass, which `BaseNode.getPropInfo` honours. +- Setting StorageClass to `Auto` resets Alignment to -1 (MATLAB also warns + "Alignment is ignored when StorageClass is 'Auto'.", which has no channel + here). Undoing that edit restores the StorageClass and not the Alignment, as + in MATLAB. + +### The written form + +- In a text `.sldd`, MATLAB writes a non-default value as + `"Alignment": {"_type": "int32", "_value": "8"}`, the first key of + CoderInfo's `_properties`, and leaves the key out at -1. A binary `.sldd` + always holds `

8

`, or -1. +- On read-back, a typed int32, a typed double and a bare number all load. A + **string** `"16"` loads as -1, silently, so the edit would be lost. An + invalid value, or any value under `Auto`, also loads as -1. +- So the write keeps the form the file already holds: a typed leaf keeps its + `_type`, and a bare number stays bare. A new key is a typed int32, inserted + where MATLAB's sorted text puts it. A string leaf is replaced by a typed one, + and a string is never written. Setting -1 removes the key in a text + dictionary and writes int32 -1 in a binary one. An absent key at -1 stays + absent. Setting the value already held marks nothing. ## Validation mirrored in code @@ -119,21 +146,29 @@ speculatively — see below. validates `stringValue` is in `prop.options`; rejects with `"Invalid value for Storage Class"`. Test: `test/parity/fidelity/schemaColumns.fidelity.test.ts`. -- `headerFile` and `alignment` (editor 'label'): `trySetSchemaProperty` returns - `null` (not writable), so `DataNode.setProperty` falls through to field-based - logic which also does not handle them → effectively read-only. -- **No dead validation code.** `trySetSchemaProperty` validates only the 'select' - editor, because `storageClass` is the sole prop that is both `projected: true` - and not `editor: 'label'` — i.e. the only writable schema prop that exists. - A generic `int` branch was removed for this reason (it was unreachable, and - would have been wrong for Alignment anyway; see above). Adding a writable prop - of a new editor type requires adding its validation at the same time. +- `alignment` (editor 'text', on Parameter and Signal): `setAlignment` and + `writeAlignment` in `schemaBridge.ts` apply the rule and the written form + above, and a `storageClass` write to `Auto` resets it. Test: + `test/alignmentEdit.test.ts`, which runs over the MATLAB-written entries in + `test/fixtures/classes_r2027a_{text,binary}.sldd`. +- `headerFile` (editor 'label'): `trySetSchemaProperty` returns `null` (not + writable), so `DataNode.setProperty` falls through to field-based logic, + which also does not handle it. It is effectively read-only. +- **No generic validation.** `trySetSchemaProperty` validates each writable + prop by its own rule: the 'select' options, and Alignment's. There is no + generic `int` branch, because `Number.isInteger` accepts 3, which MATLAB + refuses as an Alignment. Adding a writable prop of a new editor type + requires adding its validation at the same time. ## Round-trip coverage - JSON sldd: set storageClass → serialize → re-parse → value preserved. Test: `test/parity/fidelity/schemaColumns.fidelity.test.ts` (format 'json'). - Binary sldd: same. Test: same file (format 'binary'). +- Alignment, both formats: an edit saves as MATLAB wrote the same value + (pSC set to 8 gives pAl8's CoderInfo exactly). Set back to -1, it gives + pAlM1's. StorageClass set to `Auto` gives pNo's. Each re-parses. Test: + `test/alignmentEdit.test.ts`. - MATLAB re-open value-equality gate: set CoderInfo.StorageClass to 'ExportedGlobal' → MATLAB reads it back as 'ExportedGlobal'. Set to 'Auto' → reads back 'Auto'. Test: same file (gated on DEX_MATLAB_CMD). diff --git a/src/datamodel/node/data/LookupTableNode.ts b/src/datamodel/node/data/LookupTableNode.ts index 10ba25fe..a1a4ec9d 100644 --- a/src/datamodel/node/data/LookupTableNode.ts +++ b/src/datamodel/node/data/LookupTableNode.ts @@ -2,11 +2,17 @@ import SimulinkObjectNode from '../SimulinkObjectNode.js'; import type { PropClass } from '../BaseNode.js'; import type BaseNode from '../BaseNode.js'; +import type { SetPropertyResult } from '../DataNode.js'; import PropName from '../../prop/PropName.js'; import PropDataType from '../../prop/PropDataType.js'; -import PropDescription from '../../prop/PropDescription.js'; const CLASS_NAME = 'Simulink.LookupTable'; export default class LookupTableNode extends SimulinkObjectNode { + // What the FILE says, shown read-only. MATLAB's Simulink.LookupTable has no Description: + // `isprop` is 0, setting one fails with MATLAB:noPublicFieldForClass (R2027a, measured + // 2026-10-16), and a dictionary MATLAB writes carries no such key. A key some other writer + // left is read here for the Description column and written back exactly as read: nothing + // overrides it (`_serializedOverrides` is the inherited empty one), so the file's own bag + // passes through. Simulink.FunctionElement is the precedent (ServiceBusNode.ts). Description: string; constructor(name: string, parent: BaseNode | null, props: Record, serial: Record) { super(name, parent, serial); this.Description = (props.Description as string) || ''; } get icon(): string { return 'wsLookup'; } @@ -14,9 +20,18 @@ export default class LookupTableNode extends SimulinkObjectNode { // A LookupTable has no scalar "value" — the Value column is empty and not editable. get displayValue(): string { return ''; } get valueEditable(): boolean { return false; } - getProperties(): PropClass[] { return [PropName, PropDataType, PropDescription]; } + getProperties(): PropClass[] { return [PropName, PropDataType]; } // PI layout: schema-driven "General" group (classes/lookupTable.json). - _serializedOverrides(): Record { return this._gatedProps({ Description: this.Description }); } + // No editor in the table (`row._descriptionEditable`) or the Property Inspector. + get descriptionEditable(): boolean { return false; } + // An edit is refused in MATLAB's words, rather than accepted and saved as a key MATLAB + // ignores on load, which is what an edit here used to do. + setProperty(propName: string, stringValue: string): true | SetPropertyResult { + if (propName === 'Description') { + return { error: true, reason: `Unrecognized property 'Description' for class '${CLASS_NAME}'.`, invalidValue: stringValue, validValue: this.Description }; + } + return super.setProperty(propName, stringValue); + } static get defaultName(): string { return 'LookupTable'; } // MEASURED from what MATLAB R2027a writes for `Simulink.LookupTable` with nothing set, in // MATLAB's own alphabetical key order. Four nested objects and two scalars, where the bag used diff --git a/src/datamodel/node/data/SignalNode.ts b/src/datamodel/node/data/SignalNode.ts index 263a1eaf..2abdf3fe 100644 --- a/src/datamodel/node/data/SignalNode.ts +++ b/src/datamodel/node/data/SignalNode.ts @@ -3,7 +3,7 @@ import DataNode, { objectValueClassOf } from '../DataNode.js'; import type { SetPropertyResult } from '../DataNode.js'; import SimulinkObjectNode from '../SimulinkObjectNode.js'; -import type { PropClass } from '../BaseNode.js'; +import type { PropClass, PIGroupDef } from '../BaseNode.js'; import type BaseNode from '../BaseNode.js'; import PropName from '../../prop/PropName.js'; import PropDataType from '../../prop/PropDataType.js'; @@ -11,18 +11,35 @@ import PropMin from '../../prop/PropMin.js'; import PropMax from '../../prop/PropMax.js'; import PropUnit from '../../prop/PropUnit.js'; import PropDescription from '../../prop/PropDescription.js'; +import PropSignalComplexity from '../../prop/PropSignalComplexity.js'; +import PropSignalDimensionsMode from '../../prop/PropSignalDimensionsMode.js'; import { withSourceKeys } from './BaseBusNode.js'; import { schemaColumns } from '../schemaBridge.js'; import { oneWrite, writeUnderWay } from '../../parser/MatWriter.js'; const CLASS_NAME = 'Simulink.Signal'; +// Complexity and DimensionsMode are editable node fields, so the table and the Property Inspector +// read them through these atoms (the Signal's own enums, auto included) rather than through the +// schema descriptors, which read the source bag and are labels. In place, by key, so the column +// order and the schema layout's order stay what the schema authored. The schema keeps both +// descriptors: Parameter's complexity is one too, and stays a label, derived from its Value. +const ENUM_ATOMS = new Map([ + ['complexity', PropSignalComplexity as unknown as PropClass], + ['dimensionsMode', PropSignalDimensionsMode as unknown as PropClass], +]); +const withEnumAtoms = (props: PropClass[]): PropClass[] => props.map((p) => ENUM_ATOMS.get(p.key) ?? p); + export default class SignalNode extends DataNode { DataType: string; Min: number | undefined; Max: number | undefined; Unit: string; Description: string; + // MATLAB's default for both is 'auto', and a text dictionary leaves the key out at 'auto' + // (measured in R2027a), so an absent key reads as 'auto'. + Complexity: string; + DimensionsMode: string; constructor(name: string, parent: BaseNode | null, props: Record, serial: Record) { super(name, parent, serial); @@ -38,6 +55,8 @@ export default class SignalNode extends DataNode { this.Max = props.Max as number | undefined; this.Unit = (props.DocUnits as string) || (props.Unit as string) || ''; this.Description = (props.Description as string) || ''; + this.Complexity = (props.Complexity as string) || 'auto'; + this.DimensionsMode = (props.DimensionsMode as string) || 'auto'; } get icon(): string { return this.isDerived ? 'serviceInterfaces' : 'wsSignal'; } @@ -56,9 +75,14 @@ export default class SignalNode extends DataNode { // every Signal in every channel even though all four carry the key. get dataType(): string { return this.DataType; } - getProperties(): PropClass[] { return [PropName, withSourceKeys(PropDataType, ['DataType', 'DataType_internal']), PropMin, PropMax, PropUnit, PropDescription, ...schemaColumns(this.className)]; } - // PI layout is now declarative — see schema/classes/signal.json `layout`, - // resolved by the inherited BaseNode.getPILayout via buildPILayout. + getProperties(): PropClass[] { return [PropName, withSourceKeys(PropDataType, ['DataType', 'DataType_internal']), PropMin, PropMax, PropUnit, PropDescription, ...withEnumAtoms(schemaColumns(this.className))]; } + // PI layout is declarative (schema/classes/signal.json `layout`, resolved by buildPILayout), + // with the two enum atoms in place of their descriptors, so an edit the table makes shows in + // the PI too (ValueTypeNode.getPILayout gives the full account of that gap). + getPILayout(): PIGroupDef[] | null { + const layout = super.getPILayout(); + return layout && layout.map((g) => ({ ...g, items: withEnumAtoms(g.items) })); + } setProperty(propName: string, stringValue: string): true | SetPropertyResult { // Its own shown text, set back, is no edit (DataNode._isUnchangedCommit). @@ -73,6 +97,15 @@ export default class SignalNode extends DataNode { if (propName === 'Min' || propName === 'Max') { return this._setMinMax(propName, stringValue); } + // Complexity and DimensionsMode take only the Signal's own enumerals, as MATLAB does; + // the shared check reads the set off the atom the dropdown is built from. Only these + // two: Storage Class is a select too, and the schema path refuses it in its own words. + if (ENUM_ATOMS.has(propName)) { + const notAnEnumeral = this._rejectUnknownEnumeral(propName, stringValue); + if (notAnEnumeral) { + return notAnEnumeral; + } + } return DataNode.prototype.setProperty.call(this, propName, stringValue); } @@ -84,6 +117,7 @@ export default class SignalNode extends DataNode { if ('Max' in sp || this.Max !== undefined) { props.Max = this.Max !== undefined ? this.Max : []; } if (unitKey in sp || this.Unit) { props[unitKey] = this.Unit; } if ('Description' in sp || this.Description) { props.Description = this.Description; } + Object.assign(props, this._enumOverrides(sp)); return props; } @@ -98,9 +132,27 @@ export default class SignalNode extends DataNode { if ('Max' in sp || this.Max !== undefined) { overrides.Max = this.Max; } if (unitKey in sp || this.Unit) { overrides[unitKey] = this.Unit; } if ('Description' in sp || this.Description) { overrides.Description = this.Description; } + Object.assign(overrides, this._enumOverrides(sp)); return this._serializeSimulinkObject(overrides); } + // Complexity and DimensionsMode, as both save paths write them: the key when the file had + // it, or when the value is not MATLAB's default. MATLAB's text form has a non-default value + // as a top-level key and no key at 'auto', even for a Signal set to 'complex' and back + // (measured in R2027a), so a Signal whose text file had no key saves with none until it + // leaves 'auto'. A key the file had stays, at 'auto' if set there, which MATLAB reads the + // same; a binary file always has both keys. A clear stores '' (DataNode._rejectUnknownEnumeral), + // which is no value either property has, so it is written as 'auto', what an absent key + // means, and never as ''. + _enumOverrides(sp: Record): Record { + const overrides: Record = {}; + const complexity = this.Complexity || 'auto'; + if ('Complexity' in sp || complexity !== 'auto') { overrides.Complexity = complexity; } + const dimensionsMode = this.DimensionsMode || 'auto'; + if ('DimensionsMode' in sp || dimensionsMode !== 'auto') { overrides.DimensionsMode = dimensionsMode; } + return overrides; + } + static get defaultName(): string { return 'Signal'; } static createDefault(name: string, parent: BaseNode | null): SignalNode { diff --git a/src/datamodel/node/data/Simulink.Breakpoint.md b/src/datamodel/node/data/Simulink.Breakpoint.md index 79fe8e6d..30c6a39f 100644 --- a/src/datamodel/node/data/Simulink.Breakpoint.md +++ b/src/datamodel/node/data/Simulink.Breakpoint.md @@ -4,8 +4,10 @@ **Node class:** `BreakpointNode` (`src/datamodel/node/data/BreakpointNode.ts`) **MATLAB class:** `Simulink.Breakpoint` -**Editable in our UI:** Name, Description, and Storage Class (the table's Storage Class -column, a 17-value dropdown). Everything else is a read-only projection of the source bag. +**Editable in our UI:** Name and Storage Class (the table's Storage Class column, a +17-value dropdown). Everything else is a read-only projection of the source bag. There is +no Description: MATLAB's class has none, so none is offered and an edit to one is refused +(see "Description" below). **Verified against:** MATLAB R2027a (probe_class('Simulink.Breakpoint')) ## Overview @@ -15,19 +17,19 @@ table blocks. It contains a Breakpoints sub-object (with Value, DataType, Dimensions, Unit), CoderInfo, StructTypeInfo, and a SupportTunableSize flag. In our UI the Breakpoint has no scalar value: the Value column is empty and not editable (`valueEditable = false`). Its Property Inspector groups (from -`schema/classes/breakpoint.json`) are General (Name, Value, Data Type, Kind, Class, -Description), Code Generation (Storage Class and the three StructTypeInfo keys under their +`schema/classes/breakpoint.json`) are General (Name, Value, Data Type, Kind, Class), +Code Generation (Storage Class and the three StructTypeInfo keys under their MATLAB labels Name / Data Scope / Header File) and Advanced (Support Tunable Size) — plus the "Other" catch-all for what stays unmodelled. There is no Value Properties group, -because a Breakpoint has no `BreakpointsSpecification`. Every PI row but Name and -Description is a label; Storage Class is editable in the TABLE, not the PI. +because a Breakpoint has no `BreakpointsSpecification`. Every PI row but Name is a +label; Storage Class is editable in the TABLE, not the PI. ## Property table | Property | MATLAB type | SetAccess | Editable here | Serialized key (JSON / binary) | Editor | Allowed values / constraint | |---------------------|-----------------------------------|-----------|---------------|--------------------------------|--------|-----------------------------| | Name | char | (entry) | yes | name / name | text | Valid MATLAB identifier, unique in namespace | -| Description | char | public | yes | (nested or top-level) | text | Any string | +| Description | — (not a property) | — | no (refused) | top-level key, only as read | — | A key the file already has is shown read-only and kept | | Breakpoints | Simulink.lookuptable.Breakpoint | public | no | Breakpoints / Breakpoints | — | Sub-object (Value, DataType, Dimensions, Unit, FieldName) | | CoderInfo | Simulink.CoderInfo | protected | no | CoderInfo / CoderInfo | — | Sub-object | | StructTypeInfo | Simulink.lookuptable.StructTypeInfo | public | no | StructTypeInfo / StructTypeInfo | — | Sub-object (DataScope, HeaderFileName, Name) | @@ -55,10 +57,23 @@ parentheses where the two differ. ### Description -- The Breakpoint's Description (when present) is stored at the top level or - within nested sub-objects. Non-string assignment in MATLAB produces "Value must be - a character vector or a string scalar." — unreachable from our string editor. - Type-guarded by the string editor. +- `Simulink.Breakpoint` has no Description property. In MATLAB R2027a (27.1.0.3409468, + measured 2026-10-16) `isprop(Simulink.Breakpoint, 'Description')` is 0, and setting one + fails with MATLAB:noPublicFieldForClass, "Unrecognized property 'Description' for class + 'Simulink.Breakpoint'." A dictionary MATLAB writes carries no top-level Description key, + in either format. The `Breakpoints` sub-object has a Description of its own; that one is + nested, unmodelled, and passes through as read. +- So none is offered, as for `Simulink.FunctionElement`: Description is not in + `getProperties` or in the General group, `descriptionEditable` is false (the table cell + has no editor), and `setProperty('Description', …)` is refused in MATLAB's words and + leaves the entry unmodified. It used to be offered, accepted, and written as a top-level + key. +- A top-level Description key the file already has (written by another tool, or by this + package before the change) is shown read-only, in the Description column and in the + Property Inspector's "Other" group, and is written back as read on both save paths. + MATLAB opens such a file cleanly and ignores the key: measured in both formats with a key + added by hand and with our former writer's output, 14 of 14 entries read and no warning. + Test: `test/lutBreakpointNoDescription.test.ts`. ### Sub-objects @@ -127,7 +142,9 @@ unmodelled. identifier, unique in namespace, max 63 chars, not a keyword). Test: `test/parity/fidelity/typedef.fidelity.test.ts`. -- No additional validation for Description (any string accepted). +- Description: refused outright by `BreakpointNode.setProperty`, with MATLAB's message, + because the class has no such property. + Test: `test/lutBreakpointNoDescription.test.ts`. - `storageClass`: enforced by `trySetSchemaProperty` against this class's own 17-value `options` list — the only one of the five with a write path at all. A value outside the @@ -146,7 +163,9 @@ unmodelled. Test: `test/parity/fidelity/typedef.fidelity.test.ts` (json format loop). - Binary sldd: same. Test: `test/parity/fidelity/typedef.fidelity.test.ts` (binary format loop). -- MATLAB gate: Description edit → MATLAB reads back. PASS. +- MATLAB gate: none for Description, which MATLAB does not have. An earlier line here read + "Description edit → MATLAB reads back. PASS.", but that gate asserted only the class. + A file carrying a top-level Description key opens in MATLAB, and the key is ignored. - The five flat properties, in-process only: a configured Breakpoint renders all five, including the two that travel through a nested sub-object, and a `storageClass` write lands at `CoderInfo.StorageClass`. **No MATLAB re-open gate was run for any of the five.** @@ -154,14 +173,6 @@ unmodelled. ## Open questions / deferred -- **Description not a MATLAB property**: MATLAB's Simulink.Breakpoint does NOT - expose a top-level `Description` property (attempting `obj.Description` errors: - "Unrecognized method, property, or field 'Description' for class - 'Simulink.Breakpoint'"). Our node stores/restores Description via the JSON - `_properties` for in-process round-trip fidelity, but the MATLAB gate cannot - assert it via the standard property-read path. The field is preserved in the - serialized file but is not accessible from the MATLAB API at the top level. - - **Breakpoint array editing**: The numeric data in Breakpoints.Value is a 1-D array that requires a dedicated editor UX. Not exposed via the scalar text editor; fully deferred. diff --git a/src/datamodel/node/data/Simulink.LookupTable.md b/src/datamodel/node/data/Simulink.LookupTable.md index c63e26f5..3be11472 100644 --- a/src/datamodel/node/data/Simulink.LookupTable.md +++ b/src/datamodel/node/data/Simulink.LookupTable.md @@ -4,8 +4,10 @@ **Node class:** `LookupTableNode` (`src/datamodel/node/data/LookupTableNode.ts`) **MATLAB class:** `Simulink.LookupTable` -**Editable in our UI:** Name, Description, and Storage Class (the table's Storage Class -column, a 17-value dropdown). Everything else is a read-only projection of the source bag. +**Editable in our UI:** Name and Storage Class (the table's Storage Class column, a +17-value dropdown). Everything else is a read-only projection of the source bag. There is +no Description: MATLAB's class has none, so none is offered and an edit to one is refused +(see "Description" below). **Verified against:** MATLAB R2027a (probe_class('Simulink.LookupTable')) ## Overview @@ -15,18 +17,18 @@ blocks. It contains a Table sub-object, one or more Breakpoint sub-objects, CoderInfo, StructTypeInfo, and configuration flags. In our UI the LookupTable has no scalar value: the Value column is empty and not editable (`valueEditable = false`). Its Property Inspector groups (from `schema/classes/lookupTable.json`) are General (Name, -Value, Data Type, Kind, Class, Description), Value Properties (Breakpoints +Value, Data Type, Kind, Class), Value Properties (Breakpoints Specification), Code Generation (Storage Class, and the three StructTypeInfo keys under their MATLAB labels Name / Data Scope / Header File) and Advanced (the two tunable-size switches) — plus the "Other" catch-all for what stays unmodelled. Every PI row but Name -and Description is a label; Storage Class is editable in the TABLE, not the PI. +is a label; Storage Class is editable in the TABLE, not the PI. ## Property table | Property | MATLAB type | SetAccess | Editable here | Serialized key (JSON / binary) | Editor | Allowed values / constraint | |---------------------|------------------------------|-----------|---------------|--------------------------------|--------|-----------------------------| | Name | char | (entry) | yes | name / name | text | Valid MATLAB identifier, unique in namespace | -| Description | char | public | yes | (nested in sub-objects) | text | Any string | +| Description | — (not a property) | — | no (refused) | top-level key, only as read | — | A key the file already has is shown read-only and kept | | Table | Simulink.lookuptable.Table | public | no | Table / Table | — | Sub-object (Value, DataType, Dimensions, Unit, FieldName) | | Breakpoints | Simulink.lookuptable.Breakpoint | public | no | Breakpoints / Breakpoints | — | Sub-object (Value, DataType, Dimensions, Unit, FieldName) | | CoderInfo | Simulink.CoderInfo | protected | no | CoderInfo / CoderInfo | — | Sub-object | @@ -56,10 +58,23 @@ in parentheses where the two differ. ### Description -- The LookupTable's Description property is stored at the top-level _properties - (when present). Non-string assignment in MATLAB produces "Value must be a - character vector or a string scalar." — unreachable from our string editor. - Type-guarded by the string editor. +- `Simulink.LookupTable` has no Description property. In MATLAB R2027a (27.1.0.3409468, + measured 2026-10-16) `isprop(Simulink.LookupTable, 'Description')` is 0, and setting one + fails with MATLAB:noPublicFieldForClass, "Unrecognized property 'Description' for class + 'Simulink.LookupTable'." A dictionary MATLAB writes carries no top-level Description key, + in either format. The `Table` and `Breakpoints` sub-objects each have a Description of + their own; those are nested, unmodelled, and pass through as read. +- So none is offered, as for `Simulink.FunctionElement`: Description is not in + `getProperties` or in the General group, `descriptionEditable` is false (the table cell + has no editor), and `setProperty('Description', …)` is refused in MATLAB's words and + leaves the entry unmodified. It used to be offered, accepted, and written as a top-level + key. +- A top-level Description key the file already has (written by another tool, or by this + package before the change) is shown read-only, in the Description column and in the + Property Inspector's "Other" group, and is written back as read on both save paths. + MATLAB opens such a file cleanly and ignores the key: measured in both formats with a key + added by hand and with our former writer's output, 14 of 14 entries read and no warning. + Test: `test/lutBreakpointNoDescription.test.ts`. ### Sub-objects @@ -175,7 +190,9 @@ read-only and unmodelled. identifier, unique in namespace, max 63 chars, not a keyword). Test: `test/parity/fidelity/typedef.fidelity.test.ts`. -- No additional validation for Description (any string accepted). +- Description: refused outright by `LookupTableNode.setProperty`, with MATLAB's message, + because the class has no such property. + Test: `test/lutBreakpointNoDescription.test.ts`. - `storageClass`: enforced by `trySetSchemaProperty` against the class's own 17-value `options` list, returning `{ error: true, reason: 'Invalid value for Storage Class' }` on @@ -194,7 +211,9 @@ read-only and unmodelled. Test: `test/parity/fidelity/typedef.fidelity.test.ts` (json format loop). - Binary sldd: same. Test: `test/parity/fidelity/typedef.fidelity.test.ts` (binary format loop). -- MATLAB gate: Description edit → MATLAB reads back. PASS. +- MATLAB gate: none for Description, which MATLAB does not have. An earlier line here read + "Description edit → MATLAB reads back. PASS.", but that gate asserted only the class. + A file carrying a top-level Description key opens in MATLAB, and the key is ignored. - The six flat properties, in-process only: a LookupTable that carries them renders every value including the two nested paths; one that omits them renders each descriptor default; and both bags keep exactly the keys they arrived with on both save paths after @@ -204,14 +223,6 @@ read-only and unmodelled. ## Open questions / deferred -- **Description not a MATLAB property**: MATLAB's Simulink.LookupTable does NOT - expose a top-level `Description` property (attempting `obj.Description` errors: - "Unrecognized method, property, or field 'Description' for class - 'Simulink.LookupTable'"). Our node stores/restores Description via the JSON - `_properties` for in-process round-trip fidelity, but the MATLAB gate cannot - assert it via the standard property-read path. The field is preserved in the - serialized file but is not accessible from the MATLAB API at the top level. - - **Table/Breakpoint array editing**: The numeric data in Table.Value and Breakpoints[].Value is complex multi-dimensional data that requires a dedicated editor UX. Not exposed via the scalar text editor; fully deferred. diff --git a/src/datamodel/node/data/Simulink.Parameter.md b/src/datamodel/node/data/Simulink.Parameter.md index d4de5e7d..706fe93e 100644 --- a/src/datamodel/node/data/Simulink.Parameter.md +++ b/src/datamodel/node/data/Simulink.Parameter.md @@ -30,6 +30,7 @@ schema-projected CoderInfo columns (StorageClass, Alias, etc.). | Complexity | char (enum) | public | no (hidden) | Complexity / Complexity | — | 'real' or 'complex' | | Dimensions | double row vector | public | no | Dimensions / Dimensions | — | Positive integer row vector | | StorageClass | char (enum) | public | yes (schema) | CoderInfo.StorageClass | combo | schemaBridge-validated | +| Alignment | int32 | public | yes (schema), not under StorageClass `Auto` | CoderInfo.Alignment | text | -1 or a power of two from 1 to 2^30; see CodeGeneration.schema-columns.md | | CoderInfo | Simulink.CoderInfo | protected | nested | CoderInfo / CoderInfo | — | Sub-object, not directly assigned | ## Non-obvious behavior (the reason this doc exists) diff --git a/src/datamodel/node/data/Simulink.Signal.md b/src/datamodel/node/data/Simulink.Signal.md index 8d3f2759..a6a46f68 100644 --- a/src/datamodel/node/data/Simulink.Signal.md +++ b/src/datamodel/node/data/Simulink.Signal.md @@ -16,8 +16,10 @@ dimensions, sampling mode, etc.) that a Simulink model can reference. Unlike and `valueEditable` is `false`. The only directly-editable numeric properties surfaced in our UI are **Min** and -**Max** (validated by `_setMinMax` on `DataNode`). All other properties are either -read-only labels or delegated to the schema bridge (Code Generation columns). +**Max** (validated by `_setMinMax` on `DataNode`). **Complexity** and +**DimensionsMode** are editable dropdowns over the Signal's own enums (validated by +`_rejectUnknownEnumeral` on `DataNode`). All other properties are either read-only +labels or delegated to the schema bridge (Code Generation columns). ## Property table @@ -30,8 +32,8 @@ read-only labels or delegated to the schema bridge (Code Generation columns). | Unit | char | public | no | DocUnits or Unit | label | unit expression (parser too complex to mirror) | | Description | char | public | yes | Description | textArea | any string | | Dimensions | double/char | public | no | — | — | not an editable column (complex multi-type acceptance) | -| DimensionsMode | char (enum) | public | no | — | — | enum {Fixed, Variable, auto}; not surfaced as editable column | -| Complexity | char (enum) | public | no | — | — | enum {real, complex, auto}; not surfaced as editable column | +| DimensionsMode | char (enum) | public | yes | DimensionsMode | select | enum {auto, Fixed, Variable}; default auto | +| Complexity | char (enum) | public | yes | Complexity | select | enum {auto, real, complex}; default auto | | SampleTime | double | public | no | — | — | not surfaced | | SamplingMode | char (enum) | public | no | — | — | enum {auto}; not surfaced | | InitialValue | char | public | no | — | — | free-form char; not surfaced as editable column | @@ -87,8 +89,29 @@ These accept only specific tokens (case-insensitive on first char for some): - **Complexity**: `real`, `complex`, `auto`. Same error pattern. - **SamplingMode**: `auto` only. Same error pattern. -These are NOT editable columns in our UI — they are either non-projected or -read-only. Validation not mirrored. +Measured in R2027a (27.1.0.3409468, 2026-10-16): `set(Simulink.Signal, 'Complexity')` +is `auto|real|complex` and `set(Simulink.Signal, 'DimensionsMode')` is +`auto|Fixed|Variable`, both defaulting to `auto`, and `mpt.Signal` has the same two. +`''` is refused too. A text `.sldd` holds a non-default value as a top-level key +(`"Complexity": "complex"`) and has no key at `auto`, even for a Signal set to +`complex` and back; a binary one always holds the key +(`

auto

`). + +**Complexity** and **DimensionsMode** are editable dropdowns (C-030, the 2026-10-16 +group E ruling): `PropSignalComplexity` and `PropSignalDimensionsMode`, in the table +and in the Property Inspector, both reading the node field. `setProperty` refuses any +other value with MATLAB's message. Two deliberate differences: +- MATLAB matches case-insensitively and stores the canonical spelling (`'Complex'` → + `complex`, `'fixed'` → `Fixed`). We match exactly, as for BusElement and ValueType; + the dropdown only offers canonical spellings. +- An empty value is a CLEAR (the licence `_rejectUnknownEnumeral` gives every enum), + so an undo of an edit can restore absence. It shows and saves as `auto`, never as `''`. + +Both save paths write the key when the file had it or the value is not `auto`, so an +untouched Signal, or one set back to `auto`, saves with no new key, as MATLAB does. +Test: `test/signalEnumProps.test.ts`. + +**SamplingMode** is still a label; its validation is not mirrored. ### Dimensions — complex multi-type @@ -110,9 +133,13 @@ validation is not mirrored. which enforces the finite-real-double-scalar rule. Returns `{error, reason: "