{"version":3,"sources":["../../src/structs/Box.ts"],"sourcesContent":["import { Struct, required } from '@thisisagile/easy';\nimport { Dimension } from './Dimension';\n\nexport class Box extends Struct {\n  @required() readonly l: Dimension = new Dimension(this.state.l);\n  @required() readonly w: Dimension = new Dimension(this.state.w);\n  @required() readonly h: Dimension = new Dimension(this.state.h);\n\n  private readonly sorted: Dimension[] = [this.l, this.w, this.h].sort((n1, n2) => n1.inMilliMeters - n2.inMilliMeters);\n  lowestDim: Dimension = this.sorted[0];\n  medianDim: Dimension = this.sorted[1];\n  maxDim: Dimension = this.sorted[2];\n\n  get isValid(): boolean {\n    return super.isValid && this.l.isValid && this.w.isValid && this.h.isValid;\n  }\n\n  static with = (l: Dimension, w: Dimension, h: Dimension) => new Box({ l, w, h });\n\n  stack(qty: number): Box {\n    return Box.with(this.maxDim, this.medianDim, Dimension.with(this.lowestDim.value * qty, this.lowestDim.uom));\n  }\n\n  fits(contents: Box, qty = 1): boolean {\n    const stackedContent = contents.stack(qty);\n    return this.lowestDim.gte(stackedContent.lowestDim) && this.medianDim.gte(stackedContent.medianDim) && this.maxDim.gte(stackedContent.maxDim);\n  }\n}\n"],"mappings":";;;;;;;;;AAAA,SAAS,QAAQ,gBAAgB;AAG1B,IAAM,OAAN,MAAM,aAAY,OAAO;AAAA,EACT,IAAe,IAAI,UAAU,KAAK,MAAM,CAAC;AAAA,EACzC,IAAe,IAAI,UAAU,KAAK,MAAM,CAAC;AAAA,EACzC,IAAe,IAAI,UAAU,KAAK,MAAM,CAAC;AAAA,EAE7C,SAAsB,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,GAAG,gBAAgB,GAAG,aAAa;AAAA,EACpH,YAAuB,KAAK,OAAO,CAAC;AAAA,EACpC,YAAuB,KAAK,OAAO,CAAC;AAAA,EACpC,SAAoB,KAAK,OAAO,CAAC;AAAA,EAEjC,IAAI,UAAmB;AACrB,WAAO,MAAM,WAAW,KAAK,EAAE,WAAW,KAAK,EAAE,WAAW,KAAK,EAAE;AAAA,EACrE;AAAA,EAEA,OAAO,OAAO,CAAC,GAAc,GAAc,MAAiB,IAAI,KAAI,EAAE,GAAG,GAAG,EAAE,CAAC;AAAA,EAE/E,MAAM,KAAkB;AACtB,WAAO,KAAI,KAAK,KAAK,QAAQ,KAAK,WAAW,UAAU,KAAK,KAAK,UAAU,QAAQ,KAAK,KAAK,UAAU,GAAG,CAAC;AAAA,EAC7G;AAAA,EAEA,KAAK,UAAe,MAAM,GAAY;AACpC,UAAM,iBAAiB,SAAS,MAAM,GAAG;AACzC,WAAO,KAAK,UAAU,IAAI,eAAe,SAAS,KAAK,KAAK,UAAU,IAAI,eAAe,SAAS,KAAK,KAAK,OAAO,IAAI,eAAe,MAAM;AAAA,EAC9I;AACF;AAvBuB;AAAA,EAApB,SAAS;AAAA,GADC,KACU;AACA;AAAA,EAApB,SAAS;AAAA,GAFC,KAEU;AACA;AAAA,EAApB,SAAS;AAAA,GAHC,KAGU;AAHhB,IAAM,MAAN;","names":[]}