@en-solutions/tgm-client-sdk 1.8.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kZWxzL2FwaS9jbXMubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENvbnRlbnRUeXBlU2NoZW1hIHtcbiAga2luZD86IHN0cmluZztcbiAgY29sbGVjdGlvbk5hbWU6IHN0cmluZztcbiAgaW5mbzoge1xuICAgIHNpbmd1bGFyTmFtZTogc3RyaW5nO1xuICAgIHBsdXJhbE5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB9O1xuICBvcHRpb25zPzogeyBkcmFmdEFuZFB1Ymxpc2g/OiBib29sZWFuIH07XG4gIGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIEZpZWxkRGVmaW5pdGlvbj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGREZWZpbml0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiAnc3RyaW5nJyB8ICd0ZXh0JyB8ICdyaWNodGV4dCcgfCAnaW50ZWdlcicgfCAnYmlnaW50ZWdlcicgfCAnZmxvYXQnIHwgJ2RlY2ltYWwnIHxcbiAgICAgICAgJ2Jvb2xlYW4nIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ2RhdGV0aW1lJyB8ICdqc29uJyB8ICdlbnVtZXJhdGlvbicgfCAnZW1haWwnIHxcbiAgICAgICAgJ21lZGlhJyB8ICdyZWxhdGlvbic7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdW5pcXVlPzogYm9vbGVhbjtcbiAgcHJpdmF0ZT86IGJvb2xlYW47XG4gIGRlZmF1bHQ/OiBhbnk7XG4gIG1pbkxlbmd0aD86IG51bWJlcjtcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbiAgcmVnZXg/OiBzdHJpbmc7XG4gIGVudW0/OiBzdHJpbmdbXTtcbiAgcmVsYXRpb24/OiAnb25lVG9PbmUnIHwgJ29uZVRvTWFueScgfCAnbWFueVRvT25lJyB8ICdtYW55VG9NYW55JztcbiAgdGFyZ2V0Pzogc3RyaW5nO1xuICBhbGxvd2VkVHlwZXM/OiBzdHJpbmdbXTtcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENtc1NhdmVkVmlldyB7XG4gIGlkPzogbnVtYmVyO1xuICBjb2xsZWN0aW9uTmFtZT86IHN0cmluZztcbiAgdXNlcklkPzogbnVtYmVyO1xuICB2aWV3TmFtZTogc3RyaW5nO1xuICBpc0RlZmF1bHQ/OiBib29sZWFuO1xuICBmaWx0ZXJDb25maWc/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBjb2x1bW5Db25maWc/OiBzdHJpbmdbXTtcbiAgc29ydENvbmZpZz86IHsgZmllbGQ6IHN0cmluZzsgb3JkZXI6ICdBU0MnIHwgJ0RFU0MnIH07XG4gIGNyZWF0ZWRBdD86IHN0cmluZztcbiAgdXBkYXRlZEF0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENtc1ZhbGlkYXRpb25SdWxlIHtcbiAgaWQ/OiBudW1iZXI7XG4gIGNvbGxlY3Rpb25OYW1lPzogc3RyaW5nO1xuICBydWxlTmFtZTogc3RyaW5nO1xuICBydWxlVHlwZTogJ1JFUVVJUkVEX0lGJyB8ICdDT01QQVJJU09OJyB8ICdSRUdFWCcgfCAnQ1VTVE9NX0VYUFJFU1NJT04nO1xuICBydWxlQ29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBkaXNwbGF5T3JkZXI/OiBudW1iZXI7XG4gIGNyZWF0ZWRBdD86IHN0cmluZztcbiAgdXBkYXRlZEF0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENtc1JlY29yZFR5cGUge1xuICBpZD86IG51bWJlcjtcbiAgY29sbGVjdGlvbk5hbWU/OiBzdHJpbmc7XG4gIHR5cGVOYW1lOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgaXNEZWZhdWx0PzogYm9vbGVhbjtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBmaWVsZE92ZXJyaWRlcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGNyZWF0ZWRBdD86IHN0cmluZztcbiAgdXBkYXRlZEF0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENtc1BhZ2VMYXlvdXQge1xuICBpZD86IG51bWJlcjtcbiAgY29sbGVjdGlvbk5hbWU/OiBzdHJpbmc7XG4gIGxheW91dE5hbWU6IHN0cmluZztcbiAgaXNEZWZhdWx0PzogYm9vbGVhbjtcbiAgcmVjb3JkVHlwZUlkPzogbnVtYmVyO1xuICBzZWN0aW9uczogQ21zTGF5b3V0U2VjdGlvbltdO1xuICBjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbXNMYXlvdXRTZWN0aW9uIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgY29sdW1uczogbnVtYmVyO1xuICBmaWVsZHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENtc0Zvcm11bGFGaWVsZCB7XG4gIGlkPzogbnVtYmVyO1xuICBjb2xsZWN0aW9uTmFtZT86IHN0cmluZztcbiAgZmllbGROYW1lOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGZvcm11bGE6IHN0cmluZztcbiAgcmVzdWx0VHlwZTogJ05VTUJFUicgfCAnU1RSSU5HJyB8ICdEQVRFJyB8ICdCT09MRUFOJztcbiAgZGlzcGxheU9yZGVyPzogbnVtYmVyO1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIGNyZWF0ZWRBdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbXNXb3JrZmxvd1J1bGUge1xuICBpZD86IG51bWJlcjtcbiAgY29sbGVjdGlvbk5hbWU/OiBzdHJpbmc7XG4gIHJ1bGVOYW1lOiBzdHJpbmc7XG4gIHRyaWdnZXJFdmVudDogJ09OX0NSRUFURScgfCAnT05fVVBEQVRFJyB8ICdPTl9DUkVBVEVfT1JfVVBEQVRFJztcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBldmFsdWF0aW9uT3JkZXI/OiBudW1iZXI7XG4gIGNvbmRpdGlvbkNvbmZpZz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGFjdGlvbnM6IENtc1dvcmtmbG93QWN0aW9uW107XG4gIGNyZWF0ZWRBdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbXNXb3JrZmxvd0FjdGlvbiB7XG4gIHR5cGU6ICdGSUVMRF9VUERBVEUnIHwgJ05PVElGSUNBVElPTicgfCAnTE9HJztcbiAgZmllbGQ/OiBzdHJpbmc7XG4gIHZhbHVlPzogYW55O1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENtc0FwcHJvdmFsUHJvY2VzcyB7XG4gIGlkPzogbnVtYmVyO1xuICBjb2xsZWN0aW9uTmFtZT86IHN0cmluZztcbiAgcHJvY2Vzc05hbWU6IHN0cmluZztcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICB0cmlnZ2VyRmllbGQ6IHN0cmluZztcbiAgdHJpZ2dlclZhbHVlOiBzdHJpbmc7XG4gIGZpbmFsQXBwcm92ZVZhbHVlPzogc3RyaW5nO1xuICBmaW5hbFJlamVjdFZhbHVlPzogc3RyaW5nO1xuICBzdGVwczogQ21zQXBwcm92YWxTdGVwW107XG4gIG5vdGlmeU9uU3VibWl0PzogYm9vbGVhbjtcbiAgbm90aWZ5T25BcHByb3ZlPzogYm9vbGVhbjtcbiAgbm90aWZ5T25SZWplY3Q/OiBib29sZWFuO1xuICBjcmVhdGVkQXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ21zQXBwcm92YWxTdGVwIHtcbiAgb3JkZXI6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBhcHByb3ZlckZpZWxkPzogc3RyaW5nO1xuICBhcHByb3ZlclJvbGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ21zQXBwcm92YWxJbnN0YW5jZSB7XG4gIGlkPzogbnVtYmVyO1xuICBwcm9jZXNzSWQ6IG51bWJlcjtcbiAgY29sbGVjdGlvbk5hbWU/OiBzdHJpbmc7XG4gIHJlY29yZElkOiBudW1iZXI7XG4gIGN1cnJlbnRTdGVwPzogbnVtYmVyO1xuICBzdGF0dXM/OiAnUEVORElORycgfCAnQVBQUk9WRUQnIHwgJ1JFSkVDVEVEJyB8ICdDQU5DRUxMRUQnO1xuICBzdWJtaXR0ZWRCeT86IG51bWJlcjtcbiAgc3VibWl0dGVkQXQ/OiBzdHJpbmc7XG4gIGNvbXBsZXRlZEF0Pzogc3RyaW5nO1xuICBjb21tZW50cz86IHN0cmluZztcbiAgc3RlcEhpc3Rvcnk/OiBhbnlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbXNSb2xsdXBSZXN1bHQge1xuICByZXN1bHQ6IGFueTtcbiAgZnVuY3Rpb246IHN0cmluZztcbiAgdGFyZ2V0Q29sbGVjdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENtc0RhdGFSZXNwb25zZTxUID0gYW55PiB7XG4gIGRhdGE6IFQ7XG4gIG1ldGE/OiB7XG4gICAgcGFnaW5hdGlvbj86IHtcbiAgICAgIHBhZ2U6IG51bWJlcjtcbiAgICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgICBwYWdlQ291bnQ6IG51bWJlcjtcbiAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kZWxzL2FwaS9jbXMubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENvbnRlbnRUeXBlU2NoZW1hIHtcbiAga2luZD86IHN0cmluZztcbiAgY29sbGVjdGlvbk5hbWU6IHN0cmluZztcbiAgaW5mbzoge1xuICAgIHNpbmd1bGFyTmFtZTogc3RyaW5nO1xuICAgIHBsdXJhbE5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIC8qKiBUYXJnZXQgbWVudSBzZWN0aW9uIGlkIChlLmcuLCBcInRnbS1vbVwiLCBcImFkbWluaXN0cmF0aW9uXCIsIFwidGdtLWludmVudG9yeS1tYW5hZ2VtZW50XCIpICovXG4gICAgbWVudVNlY3Rpb24/OiBzdHJpbmc7XG4gICAgLyoqIEljb24gbmFtZSBmb3Igc2lkZWJhciB0YWIgKGZlYXRoZXIvbHVjaWRlLCBlLmcuLCBcInNoaWVsZFwiLCBcImNsaXBib2FyZFwiKSAqL1xuICAgIG1lbnVJY29uPzogc3RyaW5nO1xuICB9O1xuICBvcHRpb25zPzogeyBkcmFmdEFuZFB1Ymxpc2g/OiBib29sZWFuIH07XG4gIGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIEZpZWxkRGVmaW5pdGlvbj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGREZWZpbml0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiAnc3RyaW5nJyB8ICd0ZXh0JyB8ICdyaWNodGV4dCcgfCAnaW50ZWdlcicgfCAnYmlnaW50ZWdlcicgfCAnZmxvYXQnIHwgJ2RlY2ltYWwnIHxcbiAgICAgICAgJ2Jvb2xlYW4nIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ2RhdGV0aW1lJyB8ICdqc29uJyB8ICdlbnVtZXJhdGlvbicgfCAnZW1haWwnIHxcbiAgICAgICAgJ21lZGlhJyB8ICdyZWxhdGlvbic7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdW5pcXVlPzogYm9vbGVhbjtcbiAgcHJpdmF0ZT86IGJvb2xlYW47XG4gIGRlZmF1bHQ/OiBhbnk7XG4gIG1pbkxlbmd0aD86IG51bWJlcjtcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbiAgcmVnZXg/OiBzdHJpbmc7XG4gIGVudW0/OiBzdHJpbmdbXTtcbiAgcmVsYXRpb24/OiAnb25lVG9PbmUnIHwgJ29uZVRvTWFueScgfCAnbWFueVRvT25lJyB8ICdtYW55VG9NYW55JztcbiAgdGFyZ2V0Pzogc3RyaW5nO1xuICBhbGxvd2VkVHlwZXM/OiBzdHJpbmdbXTtcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENtc1NhdmVkVmlldyB7XG4gIGlkPzogbnVtYmVyO1xuICBjb2xsZWN0aW9uTmFtZT86IHN0cmluZztcbiAgdXNlcklkPzogbnVtYmVyO1xuICB2aWV3TmFtZTogc3RyaW5nO1xuICBpc0RlZmF1bHQ/OiBib29sZWFuO1xuICBmaWx0ZXJDb25maWc/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBjb2x1bW5Db25maWc/OiBzdHJpbmdbXTtcbiAgc29ydENvbmZpZz86IHsgZmllbGQ6IHN0cmluZzsgb3JkZXI6ICdBU0MnIHwgJ0RFU0MnIH07XG4gIGNyZWF0ZWRBdD86IHN0cmluZztcbiAgdXBkYXRlZEF0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENtc1ZhbGlkYXRpb25SdWxlIHtcbiAgaWQ/OiBudW1iZXI7XG4gIGNvbGxlY3Rpb25OYW1lPzogc3RyaW5nO1xuICBydWxlTmFtZTogc3RyaW5nO1xuICBydWxlVHlwZTogJ1JFUVVJUkVEX0lGJyB8ICdDT01QQVJJU09OJyB8ICdSRUdFWCcgfCAnQ1VTVE9NX0VYUFJFU1NJT04nO1xuICBydWxlQ29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBkaXNwbGF5T3JkZXI/OiBudW1iZXI7XG4gIGNyZWF0ZWRBdD86IHN0cmluZztcbiAgdXBkYXRlZEF0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENtc1JlY29yZFR5cGUge1xuICBpZD86IG51bWJlcjtcbiAgY29sbGVjdGlvbk5hbWU/OiBzdHJpbmc7XG4gIHR5cGVOYW1lOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgaXNEZWZhdWx0PzogYm9vbGVhbjtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBmaWVsZE92ZXJyaWRlcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGNyZWF0ZWRBdD86IHN0cmluZztcbiAgdXBkYXRlZEF0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENtc1BhZ2VMYXlvdXQge1xuICBpZD86IG51bWJlcjtcbiAgY29sbGVjdGlvbk5hbWU/OiBzdHJpbmc7XG4gIGxheW91dE5hbWU6IHN0cmluZztcbiAgaXNEZWZhdWx0PzogYm9vbGVhbjtcbiAgcmVjb3JkVHlwZUlkPzogbnVtYmVyO1xuICBzZWN0aW9uczogQ21zTGF5b3V0U2VjdGlvbltdO1xuICBjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbXNMYXlvdXRTZWN0aW9uIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgY29sdW1uczogbnVtYmVyO1xuICBmaWVsZHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENtc0Zvcm11bGFGaWVsZCB7XG4gIGlkPzogbnVtYmVyO1xuICBjb2xsZWN0aW9uTmFtZT86IHN0cmluZztcbiAgZmllbGROYW1lOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGZvcm11bGE6IHN0cmluZztcbiAgcmVzdWx0VHlwZTogJ05VTUJFUicgfCAnU1RSSU5HJyB8ICdEQVRFJyB8ICdCT09MRUFOJztcbiAgZGlzcGxheU9yZGVyPzogbnVtYmVyO1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIGNyZWF0ZWRBdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbXNXb3JrZmxvd1J1bGUge1xuICBpZD86IG51bWJlcjtcbiAgY29sbGVjdGlvbk5hbWU/OiBzdHJpbmc7XG4gIHJ1bGVOYW1lOiBzdHJpbmc7XG4gIHRyaWdnZXJFdmVudDogJ09OX0NSRUFURScgfCAnT05fVVBEQVRFJyB8ICdPTl9DUkVBVEVfT1JfVVBEQVRFJztcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBldmFsdWF0aW9uT3JkZXI/OiBudW1iZXI7XG4gIGNvbmRpdGlvbkNvbmZpZz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGFjdGlvbnM6IENtc1dvcmtmbG93QWN0aW9uW107XG4gIGNyZWF0ZWRBdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbXNXb3JrZmxvd0FjdGlvbiB7XG4gIHR5cGU6ICdGSUVMRF9VUERBVEUnIHwgJ05PVElGSUNBVElPTicgfCAnTE9HJztcbiAgZmllbGQ/OiBzdHJpbmc7XG4gIHZhbHVlPzogYW55O1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENtc0FwcHJvdmFsUHJvY2VzcyB7XG4gIGlkPzogbnVtYmVyO1xuICBjb2xsZWN0aW9uTmFtZT86IHN0cmluZztcbiAgcHJvY2Vzc05hbWU6IHN0cmluZztcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICB0cmlnZ2VyRmllbGQ6IHN0cmluZztcbiAgdHJpZ2dlclZhbHVlOiBzdHJpbmc7XG4gIGZpbmFsQXBwcm92ZVZhbHVlPzogc3RyaW5nO1xuICBmaW5hbFJlamVjdFZhbHVlPzogc3RyaW5nO1xuICBzdGVwczogQ21zQXBwcm92YWxTdGVwW107XG4gIG5vdGlmeU9uU3VibWl0PzogYm9vbGVhbjtcbiAgbm90aWZ5T25BcHByb3ZlPzogYm9vbGVhbjtcbiAgbm90aWZ5T25SZWplY3Q/OiBib29sZWFuO1xuICBjcmVhdGVkQXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ21zQXBwcm92YWxTdGVwIHtcbiAgb3JkZXI6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBhcHByb3ZlckZpZWxkPzogc3RyaW5nO1xuICBhcHByb3ZlclJvbGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ21zQXBwcm92YWxJbnN0YW5jZSB7XG4gIGlkPzogbnVtYmVyO1xuICBwcm9jZXNzSWQ6IG51bWJlcjtcbiAgY29sbGVjdGlvbk5hbWU/OiBzdHJpbmc7XG4gIHJlY29yZElkOiBudW1iZXI7XG4gIGN1cnJlbnRTdGVwPzogbnVtYmVyO1xuICBzdGF0dXM/OiAnUEVORElORycgfCAnQVBQUk9WRUQnIHwgJ1JFSkVDVEVEJyB8ICdDQU5DRUxMRUQnO1xuICBzdWJtaXR0ZWRCeT86IG51bWJlcjtcbiAgc3VibWl0dGVkQXQ/OiBzdHJpbmc7XG4gIGNvbXBsZXRlZEF0Pzogc3RyaW5nO1xuICBjb21tZW50cz86IHN0cmluZztcbiAgc3RlcEhpc3Rvcnk/OiBhbnlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbXNSb2xsdXBSZXN1bHQge1xuICByZXN1bHQ6IGFueTtcbiAgZnVuY3Rpb246IHN0cmluZztcbiAgdGFyZ2V0Q29sbGVjdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENtc0RhdGFSZXNwb25zZTxUID0gYW55PiB7XG4gIGRhdGE6IFQ7XG4gIG1ldGE/OiB7XG4gICAgcGFnaW5hdGlvbj86IHtcbiAgICAgIHBhZ2U6IG51bWJlcjtcbiAgICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgICBwYWdlQ291bnQ6IG51bWJlcjtcbiAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
@@ -1,79 +1,78 @@
1
1
  import { Injectable, inject } from '@angular/core';
2
- import { map } from 'rxjs';
2
+ import { map, shareReplay } from 'rxjs';
3
3
  import { CmsContentTypeService } from './cms.service';
4
4
  import * as i0 from "@angular/core";
5
5
  /**
6
- * Menu item structure matching tgm-manager-ui's CoreMenuItem interface.
7
- * Frontend devs can inject these into the sidebar dynamically.
6
+ * Transforms CMS content types into sidebar menu items.
8
7
  *
9
- * Usage in tgm-manager-ui:
8
+ * Each content type can specify where it appears via info.menuSection:
9
+ * - "tgm-om" → TGM O&M section
10
+ * - "tgm-economics" → TGM Economics section
11
+ * - "tgm-inventory-management" → Inventory section
12
+ * - "administration" (default) → Administration → Custom Objects
13
+ * - Any other menu section id from menu.ts
10
14
  *
11
- * ```typescript
12
- * // In AppComponent or a module initializer:
13
- * cmsMenuHelper.getMenuItems('administration/cms').subscribe(items => {
14
- * // items is a CoreMenuItem[] array ready to inject into the sidebar
15
- * const adminSection = menu.find(m => m.id === 'administration');
16
- * const cmsGroup = {
17
- * id: 'custom-objects',
18
- * type: 'section' as const,
19
- * title: 'Custom Objects',
20
- * icon: 'layers',
21
- * role: [Role['Administration.Read']],
22
- * children: items
23
- * };
24
- * const moreIdx = adminSection.children.findIndex(c => c.id === 'more');
25
- * adminSection.children.splice(moreIdx, 0, cmsGroup);
26
- * });
27
- * ```
15
+ * Usage in AppComponent.initializeMenu():
28
16
  *
29
- * Route setup in administraton.module.ts:
30
17
  * ```typescript
31
- * {
32
- * path: 'cms/:collectionName',
33
- * loadChildren: () => import('./cms/cms.module').then(m => m.CmsModule),
34
- * canActivate: [AuthGuard]
35
- * }
18
+ * this.cmsMenuHelper.getMenuItemsBySection('cms').subscribe(grouped => {
19
+ * for (const [sectionId, items] of Object.entries(grouped)) {
20
+ * const section = menu.find(m => m.id === sectionId);
21
+ * if (section?.children) {
22
+ * section.children.push(...items);
23
+ * }
24
+ * }
25
+ * });
36
26
  * ```
37
27
  */
38
28
  export class CmsMenuHelper {
39
29
  contentTypeService = inject(CmsContentTypeService);
30
+ /** Cached content types — shared across subscribers, auto-refreshes on invalidate() */
31
+ _cache$ = null;
32
+ getContentTypes() {
33
+ if (!this._cache$) {
34
+ this._cache$ = this.getContentTypes().pipe(shareReplay({ bufferSize: 1, refCount: false }));
35
+ }
36
+ return this._cache$;
37
+ }
38
+ /** Invalidate the cache — call after creating/updating/deleting a content type */
39
+ invalidate() {
40
+ this._cache$ = null;
41
+ }
40
42
  /**
41
- * Fetch all active content types and transform them into menu items.
43
+ * Fetch all content types and return menu items grouped by menuSection.
44
+ * Each key is a menu section id (e.g., "tgm-om", "administration").
45
+ * Items without menuSection default to "administration".
42
46
  *
43
- * @param baseUrl - The base route path (e.g., 'administration/cms')
44
- * @param defaultIcon - Default icon for items without a specific one (default: 'database')
45
- * @returns Observable of menu items array
47
+ * @param baseUrl - Route base path for CMS pages
48
+ * @param defaultIcon - Default icon when menuIcon not set
46
49
  */
47
- getMenuItems(baseUrl = 'administration/cms', defaultIcon = 'database') {
48
- return this.contentTypeService.getAll().pipe(map((contentTypes) => contentTypes.map(ct => this.toMenuItem(ct, baseUrl, defaultIcon))));
50
+ getMenuItemsBySection(baseUrl = 'cms', defaultIcon = 'database') {
51
+ return this.getContentTypes().pipe(map((contentTypes) => {
52
+ const grouped = {};
53
+ for (const ct of contentTypes) {
54
+ const section = ct.info?.menuSection || 'administration';
55
+ const item = this.toMenuItem(ct, baseUrl, defaultIcon);
56
+ if (!grouped[section])
57
+ grouped[section] = [];
58
+ grouped[section].push(item);
59
+ }
60
+ return grouped;
61
+ }));
49
62
  }
50
63
  /**
51
- * Transform a single content type into a menu item.
64
+ * Fetch all content types as a flat list of menu items.
65
+ * Use getMenuItemsBySection() instead if you need placement control.
52
66
  */
53
- toMenuItem(ct, baseUrl, defaultIcon) {
54
- return {
55
- id: `cms-${ct.collectionName}`,
56
- title: ct.info?.displayName || ct.collectionName,
57
- type: 'item',
58
- icon: defaultIcon,
59
- url: `${baseUrl}/${ct.collectionName}`,
60
- // These match CoreMenuItem from tgm-manager-ui
61
- availableOnMobileNative: false,
62
- mobileOnly: false,
63
- badge: ct.options?.draftAndPublish
64
- ? { title: 'D/P', classes: 'badge-light-primary' }
65
- : undefined,
66
- };
67
+ getMenuItems(baseUrl = 'cms', defaultIcon = 'database') {
68
+ return this.getContentTypes().pipe(map((contentTypes) => contentTypes.map(ct => this.toMenuItem(ct, baseUrl, defaultIcon))));
67
69
  }
68
70
  /**
69
- * Build a complete "Custom Objects" collapsible menu section.
70
- * Ready to inject directly into the sidebar menu array.
71
- *
72
- * @param baseUrl - Route base path
73
- * @param roles - Required roles to see this section
71
+ * Build a "Custom Objects" section for items that target "administration".
72
+ * Items targeting other sections are excluded use getMenuItemsBySection() for those.
74
73
  */
75
- getMenuSection(baseUrl = 'administration/cms', roles = ['Administration.Read']) {
76
- return this.getMenuItems(baseUrl).pipe(map(items => ({
74
+ getMenuSection(baseUrl = 'cms', roles = ['Administration.Read']) {
75
+ return this.getMenuItemsBySection(baseUrl).pipe(map(grouped => ({
77
76
  id: 'custom-objects',
78
77
  type: 'section',
79
78
  title: 'Custom Objects',
@@ -82,9 +81,22 @@ export class CmsMenuHelper {
82
81
  role: roles,
83
82
  availableOnMobileNative: false,
84
83
  mobileOnly: false,
85
- children: items,
84
+ children: grouped['administration'] || [],
86
85
  })));
87
86
  }
87
+ toMenuItem(ct, baseUrl, defaultIcon) {
88
+ return {
89
+ id: `cms-${ct.collectionName}`,
90
+ title: ct.info?.displayName || ct.collectionName,
91
+ type: 'item',
92
+ icon: ct.info?.menuIcon || defaultIcon,
93
+ url: `${baseUrl}/${ct.collectionName}`,
94
+ availableOnMobileNative: false,
95
+ mobileOnly: false,
96
+ // Store the target section for grouping
97
+ _menuSection: ct.info?.menuSection || 'administration',
98
+ };
99
+ }
88
100
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CmsMenuHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
89
101
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CmsMenuHelper, providedIn: 'root' });
90
102
  }
@@ -92,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
92
104
  type: Injectable,
93
105
  args: [{ providedIn: 'root' }]
94
106
  }] });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLW1lbnUuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hcGkvY21zLW1lbnUuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUd0RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ0c7QUFFSCxNQUFNLE9BQU8sYUFBYTtJQUVoQixrQkFBa0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUUzRDs7Ozs7O09BTUc7SUFDSCxZQUFZLENBQUMsT0FBTyxHQUFHLG9CQUFvQixFQUFFLFdBQVcsR0FBRyxVQUFVO1FBQ25FLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FDMUMsR0FBRyxDQUFDLENBQUMsWUFBaUMsRUFBRSxFQUFFLENBQ3hDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FDbEUsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssVUFBVSxDQUFDLEVBQXFCLEVBQUUsT0FBZSxFQUFFLFdBQW1CO1FBQzVFLE9BQU87WUFDTCxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFO1lBQzlCLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUMsY0FBYztZQUNoRCxJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxXQUFXO1lBQ2pCLEdBQUcsRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFO1lBQ3RDLCtDQUErQztZQUMvQyx1QkFBdUIsRUFBRSxLQUFLO1lBQzlCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLGVBQWU7Z0JBQ2hDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFO2dCQUNsRCxDQUFDLENBQUMsU0FBUztTQUNkLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsY0FBYyxDQUNaLE9BQU8sR0FBRyxvQkFBb0IsRUFDOUIsUUFBa0IsQ0FBQyxxQkFBcUIsQ0FBQztRQUV6QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNwQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1osRUFBRSxFQUFFLGdCQUFnQjtZQUNwQixJQUFJLEVBQUUsU0FBa0I7WUFDeEIsS0FBSyxFQUFFLGdCQUFnQjtZQUN2QixTQUFTLEVBQUUsb0NBQW9DO1lBQy9DLElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLEtBQUs7WUFDWCx1QkFBdUIsRUFBRSxLQUFLO1lBQzlCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxLQUFLO1NBQ2hCLENBQUMsQ0FBQyxDQUNKLENBQUM7SUFDSixDQUFDO3dHQTlEVSxhQUFhOzRHQUFiLGFBQWEsY0FEQSxNQUFNOzs0RkFDbkIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ21zQ29udGVudFR5cGVTZXJ2aWNlIH0gZnJvbSAnLi9jbXMuc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZW50VHlwZVNjaGVtYSB9IGZyb20gJy4uLy4uL21vZGVscy9hcGkvY21zLm1vZGVscyc7XG5cbi8qKlxuICogTWVudSBpdGVtIHN0cnVjdHVyZSBtYXRjaGluZyB0Z20tbWFuYWdlci11aSdzIENvcmVNZW51SXRlbSBpbnRlcmZhY2UuXG4gKiBGcm9udGVuZCBkZXZzIGNhbiBpbmplY3QgdGhlc2UgaW50byB0aGUgc2lkZWJhciBkeW5hbWljYWxseS5cbiAqXG4gKiBVc2FnZSBpbiB0Z20tbWFuYWdlci11aTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBJbiBBcHBDb21wb25lbnQgb3IgYSBtb2R1bGUgaW5pdGlhbGl6ZXI6XG4gKiBjbXNNZW51SGVscGVyLmdldE1lbnVJdGVtcygnYWRtaW5pc3RyYXRpb24vY21zJykuc3Vic2NyaWJlKGl0ZW1zID0+IHtcbiAqICAgLy8gaXRlbXMgaXMgYSBDb3JlTWVudUl0ZW1bXSBhcnJheSByZWFkeSB0byBpbmplY3QgaW50byB0aGUgc2lkZWJhclxuICogICBjb25zdCBhZG1pblNlY3Rpb24gPSBtZW51LmZpbmQobSA9PiBtLmlkID09PSAnYWRtaW5pc3RyYXRpb24nKTtcbiAqICAgY29uc3QgY21zR3JvdXAgPSB7XG4gKiAgICAgaWQ6ICdjdXN0b20tb2JqZWN0cycsXG4gKiAgICAgdHlwZTogJ3NlY3Rpb24nIGFzIGNvbnN0LFxuICogICAgIHRpdGxlOiAnQ3VzdG9tIE9iamVjdHMnLFxuICogICAgIGljb246ICdsYXllcnMnLFxuICogICAgIHJvbGU6IFtSb2xlWydBZG1pbmlzdHJhdGlvbi5SZWFkJ11dLFxuICogICAgIGNoaWxkcmVuOiBpdGVtc1xuICogICB9O1xuICogICBjb25zdCBtb3JlSWR4ID0gYWRtaW5TZWN0aW9uLmNoaWxkcmVuLmZpbmRJbmRleChjID0+IGMuaWQgPT09ICdtb3JlJyk7XG4gKiAgIGFkbWluU2VjdGlvbi5jaGlsZHJlbi5zcGxpY2UobW9yZUlkeCwgMCwgY21zR3JvdXApO1xuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBSb3V0ZSBzZXR1cCBpbiBhZG1pbmlzdHJhdG9uLm1vZHVsZS50czpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHtcbiAqICAgcGF0aDogJ2Ntcy86Y29sbGVjdGlvbk5hbWUnLFxuICogICBsb2FkQ2hpbGRyZW46ICgpID0+IGltcG9ydCgnLi9jbXMvY21zLm1vZHVsZScpLnRoZW4obSA9PiBtLkNtc01vZHVsZSksXG4gKiAgIGNhbkFjdGl2YXRlOiBbQXV0aEd1YXJkXVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQ21zTWVudUhlbHBlciB7XG5cbiAgcHJpdmF0ZSBjb250ZW50VHlwZVNlcnZpY2UgPSBpbmplY3QoQ21zQ29udGVudFR5cGVTZXJ2aWNlKTtcblxuICAvKipcbiAgICogRmV0Y2ggYWxsIGFjdGl2ZSBjb250ZW50IHR5cGVzIGFuZCB0cmFuc2Zvcm0gdGhlbSBpbnRvIG1lbnUgaXRlbXMuXG4gICAqXG4gICAqIEBwYXJhbSBiYXNlVXJsIC0gVGhlIGJhc2Ugcm91dGUgcGF0aCAoZS5nLiwgJ2FkbWluaXN0cmF0aW9uL2NtcycpXG4gICAqIEBwYXJhbSBkZWZhdWx0SWNvbiAtIERlZmF1bHQgaWNvbiBmb3IgaXRlbXMgd2l0aG91dCBhIHNwZWNpZmljIG9uZSAoZGVmYXVsdDogJ2RhdGFiYXNlJylcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiBtZW51IGl0ZW1zIGFycmF5XG4gICAqL1xuICBnZXRNZW51SXRlbXMoYmFzZVVybCA9ICdhZG1pbmlzdHJhdGlvbi9jbXMnLCBkZWZhdWx0SWNvbiA9ICdkYXRhYmFzZScpOiBPYnNlcnZhYmxlPENtc01lbnVJdGVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50VHlwZVNlcnZpY2UuZ2V0QWxsKCkucGlwZShcbiAgICAgIG1hcCgoY29udGVudFR5cGVzOiBDb250ZW50VHlwZVNjaGVtYVtdKSA9PlxuICAgICAgICBjb250ZW50VHlwZXMubWFwKGN0ID0+IHRoaXMudG9NZW51SXRlbShjdCwgYmFzZVVybCwgZGVmYXVsdEljb24pKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIGEgc2luZ2xlIGNvbnRlbnQgdHlwZSBpbnRvIGEgbWVudSBpdGVtLlxuICAgKi9cbiAgcHJpdmF0ZSB0b01lbnVJdGVtKGN0OiBDb250ZW50VHlwZVNjaGVtYSwgYmFzZVVybDogc3RyaW5nLCBkZWZhdWx0SWNvbjogc3RyaW5nKTogQ21zTWVudUl0ZW0ge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogYGNtcy0ke2N0LmNvbGxlY3Rpb25OYW1lfWAsXG4gICAgICB0aXRsZTogY3QuaW5mbz8uZGlzcGxheU5hbWUgfHwgY3QuY29sbGVjdGlvbk5hbWUsXG4gICAgICB0eXBlOiAnaXRlbScsXG4gICAgICBpY29uOiBkZWZhdWx0SWNvbixcbiAgICAgIHVybDogYCR7YmFzZVVybH0vJHtjdC5jb2xsZWN0aW9uTmFtZX1gLFxuICAgICAgLy8gVGhlc2UgbWF0Y2ggQ29yZU1lbnVJdGVtIGZyb20gdGdtLW1hbmFnZXItdWlcbiAgICAgIGF2YWlsYWJsZU9uTW9iaWxlTmF0aXZlOiBmYWxzZSxcbiAgICAgIG1vYmlsZU9ubHk6IGZhbHNlLFxuICAgICAgYmFkZ2U6IGN0Lm9wdGlvbnM/LmRyYWZ0QW5kUHVibGlzaFxuICAgICAgICA/IHsgdGl0bGU6ICdEL1AnLCBjbGFzc2VzOiAnYmFkZ2UtbGlnaHQtcHJpbWFyeScgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgY29tcGxldGUgXCJDdXN0b20gT2JqZWN0c1wiIGNvbGxhcHNpYmxlIG1lbnUgc2VjdGlvbi5cbiAgICogUmVhZHkgdG8gaW5qZWN0IGRpcmVjdGx5IGludG8gdGhlIHNpZGViYXIgbWVudSBhcnJheS5cbiAgICpcbiAgICogQHBhcmFtIGJhc2VVcmwgLSBSb3V0ZSBiYXNlIHBhdGhcbiAgICogQHBhcmFtIHJvbGVzIC0gUmVxdWlyZWQgcm9sZXMgdG8gc2VlIHRoaXMgc2VjdGlvblxuICAgKi9cbiAgZ2V0TWVudVNlY3Rpb24oXG4gICAgYmFzZVVybCA9ICdhZG1pbmlzdHJhdGlvbi9jbXMnLFxuICAgIHJvbGVzOiBzdHJpbmdbXSA9IFsnQWRtaW5pc3RyYXRpb24uUmVhZCddXG4gICk6IE9ic2VydmFibGU8Q21zTWVudVNlY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRNZW51SXRlbXMoYmFzZVVybCkucGlwZShcbiAgICAgIG1hcChpdGVtcyA9PiAoe1xuICAgICAgICBpZDogJ2N1c3RvbS1vYmplY3RzJyxcbiAgICAgICAgdHlwZTogJ3NlY3Rpb24nIGFzIGNvbnN0LFxuICAgICAgICB0aXRsZTogJ0N1c3RvbSBPYmplY3RzJyxcbiAgICAgICAgdHJhbnNsYXRlOiAnTUVOVS5BRE1JTklTVFJBVElPTi5DVVNUT01fT0JKRUNUUycsXG4gICAgICAgIGljb246ICdsYXllcnMnLFxuICAgICAgICByb2xlOiByb2xlcyxcbiAgICAgICAgYXZhaWxhYmxlT25Nb2JpbGVOYXRpdmU6IGZhbHNlLFxuICAgICAgICBtb2JpbGVPbmx5OiBmYWxzZSxcbiAgICAgICAgY2hpbGRyZW46IGl0ZW1zLFxuICAgICAgfSkpXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIE1lbnUgaXRlbSBzdHJ1Y3R1cmUgY29tcGF0aWJsZSB3aXRoIHRnbS1tYW5hZ2VyLXVpJ3MgQ29yZU1lbnVJdGVtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENtc01lbnVJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdHlwZTogJ2l0ZW0nIHwgJ3NlY3Rpb24nIHwgJ2NvbGxhcHNpYmxlJztcbiAgaWNvbj86IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xuICByb2xlPzogc3RyaW5nW107XG4gIHRyYW5zbGF0ZT86IHN0cmluZztcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBhdmFpbGFibGVPbk1vYmlsZU5hdGl2ZT86IGJvb2xlYW47XG4gIG1vYmlsZU9ubHk/OiBib29sZWFuO1xuICBiYWRnZT86IHsgdGl0bGU/OiBzdHJpbmc7IHRyYW5zbGF0ZT86IHN0cmluZzsgY2xhc3Nlcz86IHN0cmluZyB9O1xuICBjaGlsZHJlbj86IENtc01lbnVJdGVtW107XG59XG5cbi8qKlxuICogQ29tcGxldGUgbWVudSBzZWN0aW9uIHJlYWR5IGZvciBzaWRlYmFyIGluamVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbXNNZW51U2VjdGlvbiBleHRlbmRzIENtc01lbnVJdGVtIHtcbiAgY2hpbGRyZW46IENtc01lbnVJdGVtW107XG59XG4iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLW1lbnUuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hcGkvY21zLW1lbnUuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxHQUFHLEVBQUUsV0FBVyxFQUFPLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHdEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxNQUFNLE9BQU8sYUFBYTtJQUVoQixrQkFBa0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUUzRCx1RkFBdUY7SUFDL0UsT0FBTyxHQUEyQyxJQUFJLENBQUM7SUFFdkQsZUFBZTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FDeEMsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FDaEQsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELGtGQUFrRjtJQUNsRixVQUFVO1FBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxxQkFBcUIsQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLFdBQVcsR0FBRyxVQUFVO1FBQzdELE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FDaEMsR0FBRyxDQUFDLENBQUMsWUFBaUMsRUFBRSxFQUFFO1lBQ3hDLE1BQU0sT0FBTyxHQUFrQyxFQUFFLENBQUM7WUFFbEQsS0FBSyxNQUFNLEVBQUUsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxXQUFXLElBQUksZ0JBQWdCLENBQUM7Z0JBQ3pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFFdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7b0JBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDN0MsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixDQUFDO1lBRUQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsT0FBTyxHQUFHLEtBQUssRUFBRSxXQUFXLEdBQUcsVUFBVTtRQUNwRCxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQ2hDLEdBQUcsQ0FBQyxDQUFDLFlBQWlDLEVBQUUsRUFBRSxDQUN4QyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQ2xFLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLENBQ1osT0FBTyxHQUFHLEtBQUssRUFDZixRQUFrQixDQUFDLHFCQUFxQixDQUFDO1FBRXpDLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDN0MsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNkLEVBQUUsRUFBRSxnQkFBZ0I7WUFDcEIsSUFBSSxFQUFFLFNBQWtCO1lBQ3hCLEtBQUssRUFBRSxnQkFBZ0I7WUFDdkIsU0FBUyxFQUFFLG9DQUFvQztZQUMvQyxJQUFJLEVBQUUsUUFBUTtZQUNkLElBQUksRUFBRSxLQUFLO1lBQ1gsdUJBQXVCLEVBQUUsS0FBSztZQUM5QixVQUFVLEVBQUUsS0FBSztZQUNqQixRQUFRLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRTtTQUMxQyxDQUFDLENBQUMsQ0FDSixDQUFDO0lBQ0osQ0FBQztJQUVPLFVBQVUsQ0FBQyxFQUFxQixFQUFFLE9BQWUsRUFBRSxXQUFtQjtRQUM1RSxPQUFPO1lBQ0wsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRTtZQUM5QixLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDLGNBQWM7WUFDaEQsSUFBSSxFQUFFLE1BQU07WUFDWixJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksV0FBVztZQUN0QyxHQUFHLEVBQUUsR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDLGNBQWMsRUFBRTtZQUN0Qyx1QkFBdUIsRUFBRSxLQUFLO1lBQzlCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLHdDQUF3QztZQUN4QyxZQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxXQUFXLElBQUksZ0JBQWdCO1NBQ3ZELENBQUM7SUFDSixDQUFDO3dHQTlGVSxhQUFhOzRHQUFiLGFBQWEsY0FEQSxNQUFNOzs0RkFDbkIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCwgc2hhcmVSZXBsYXksIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ21zQ29udGVudFR5cGVTZXJ2aWNlIH0gZnJvbSAnLi9jbXMuc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZW50VHlwZVNjaGVtYSB9IGZyb20gJy4uLy4uL21vZGVscy9hcGkvY21zLm1vZGVscyc7XG5cbi8qKlxuICogVHJhbnNmb3JtcyBDTVMgY29udGVudCB0eXBlcyBpbnRvIHNpZGViYXIgbWVudSBpdGVtcy5cbiAqXG4gKiBFYWNoIGNvbnRlbnQgdHlwZSBjYW4gc3BlY2lmeSB3aGVyZSBpdCBhcHBlYXJzIHZpYSBpbmZvLm1lbnVTZWN0aW9uOlxuICogLSBcInRnbS1vbVwiIOKGkiBUR00gTyZNIHNlY3Rpb25cbiAqIC0gXCJ0Z20tZWNvbm9taWNzXCIg4oaSIFRHTSBFY29ub21pY3Mgc2VjdGlvblxuICogLSBcInRnbS1pbnZlbnRvcnktbWFuYWdlbWVudFwiIOKGkiBJbnZlbnRvcnkgc2VjdGlvblxuICogLSBcImFkbWluaXN0cmF0aW9uXCIgKGRlZmF1bHQpIOKGkiBBZG1pbmlzdHJhdGlvbiDihpIgQ3VzdG9tIE9iamVjdHNcbiAqIC0gQW55IG90aGVyIG1lbnUgc2VjdGlvbiBpZCBmcm9tIG1lbnUudHNcbiAqXG4gKiBVc2FnZSBpbiBBcHBDb21wb25lbnQuaW5pdGlhbGl6ZU1lbnUoKTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0aGlzLmNtc01lbnVIZWxwZXIuZ2V0TWVudUl0ZW1zQnlTZWN0aW9uKCdjbXMnKS5zdWJzY3JpYmUoZ3JvdXBlZCA9PiB7XG4gKiAgIGZvciAoY29uc3QgW3NlY3Rpb25JZCwgaXRlbXNdIG9mIE9iamVjdC5lbnRyaWVzKGdyb3VwZWQpKSB7XG4gKiAgICAgY29uc3Qgc2VjdGlvbiA9IG1lbnUuZmluZChtID0+IG0uaWQgPT09IHNlY3Rpb25JZCk7XG4gKiAgICAgaWYgKHNlY3Rpb24/LmNoaWxkcmVuKSB7XG4gKiAgICAgICBzZWN0aW9uLmNoaWxkcmVuLnB1c2goLi4uaXRlbXMpO1xuICogICAgIH1cbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDbXNNZW51SGVscGVyIHtcblxuICBwcml2YXRlIGNvbnRlbnRUeXBlU2VydmljZSA9IGluamVjdChDbXNDb250ZW50VHlwZVNlcnZpY2UpO1xuXG4gIC8qKiBDYWNoZWQgY29udGVudCB0eXBlcyDigJQgc2hhcmVkIGFjcm9zcyBzdWJzY3JpYmVycywgYXV0by1yZWZyZXNoZXMgb24gaW52YWxpZGF0ZSgpICovXG4gIHByaXZhdGUgX2NhY2hlJDogT2JzZXJ2YWJsZTxDb250ZW50VHlwZVNjaGVtYVtdPiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgZ2V0Q29udGVudFR5cGVzKCk6IE9ic2VydmFibGU8Q29udGVudFR5cGVTY2hlbWFbXT4ge1xuICAgIGlmICghdGhpcy5fY2FjaGUkKSB7XG4gICAgICB0aGlzLl9jYWNoZSQgPSB0aGlzLmdldENvbnRlbnRUeXBlcygpLnBpcGUoXG4gICAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IGZhbHNlIH0pXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY2FjaGUkO1xuICB9XG5cbiAgLyoqIEludmFsaWRhdGUgdGhlIGNhY2hlIOKAlCBjYWxsIGFmdGVyIGNyZWF0aW5nL3VwZGF0aW5nL2RlbGV0aW5nIGEgY29udGVudCB0eXBlICovXG4gIGludmFsaWRhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5fY2FjaGUkID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhbGwgY29udGVudCB0eXBlcyBhbmQgcmV0dXJuIG1lbnUgaXRlbXMgZ3JvdXBlZCBieSBtZW51U2VjdGlvbi5cbiAgICogRWFjaCBrZXkgaXMgYSBtZW51IHNlY3Rpb24gaWQgKGUuZy4sIFwidGdtLW9tXCIsIFwiYWRtaW5pc3RyYXRpb25cIikuXG4gICAqIEl0ZW1zIHdpdGhvdXQgbWVudVNlY3Rpb24gZGVmYXVsdCB0byBcImFkbWluaXN0cmF0aW9uXCIuXG4gICAqXG4gICAqIEBwYXJhbSBiYXNlVXJsIC0gUm91dGUgYmFzZSBwYXRoIGZvciBDTVMgcGFnZXNcbiAgICogQHBhcmFtIGRlZmF1bHRJY29uIC0gRGVmYXVsdCBpY29uIHdoZW4gbWVudUljb24gbm90IHNldFxuICAgKi9cbiAgZ2V0TWVudUl0ZW1zQnlTZWN0aW9uKGJhc2VVcmwgPSAnY21zJywgZGVmYXVsdEljb24gPSAnZGF0YWJhc2UnKTogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBDbXNNZW51SXRlbVtdPj4ge1xuICAgIHJldHVybiB0aGlzLmdldENvbnRlbnRUeXBlcygpLnBpcGUoXG4gICAgICBtYXAoKGNvbnRlbnRUeXBlczogQ29udGVudFR5cGVTY2hlbWFbXSkgPT4ge1xuICAgICAgICBjb25zdCBncm91cGVkOiBSZWNvcmQ8c3RyaW5nLCBDbXNNZW51SXRlbVtdPiA9IHt9O1xuXG4gICAgICAgIGZvciAoY29uc3QgY3Qgb2YgY29udGVudFR5cGVzKSB7XG4gICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IGN0LmluZm8/Lm1lbnVTZWN0aW9uIHx8ICdhZG1pbmlzdHJhdGlvbic7XG4gICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMudG9NZW51SXRlbShjdCwgYmFzZVVybCwgZGVmYXVsdEljb24pO1xuXG4gICAgICAgICAgaWYgKCFncm91cGVkW3NlY3Rpb25dKSBncm91cGVkW3NlY3Rpb25dID0gW107XG4gICAgICAgICAgZ3JvdXBlZFtzZWN0aW9uXS5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwZWQ7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYWxsIGNvbnRlbnQgdHlwZXMgYXMgYSBmbGF0IGxpc3Qgb2YgbWVudSBpdGVtcy5cbiAgICogVXNlIGdldE1lbnVJdGVtc0J5U2VjdGlvbigpIGluc3RlYWQgaWYgeW91IG5lZWQgcGxhY2VtZW50IGNvbnRyb2wuXG4gICAqL1xuICBnZXRNZW51SXRlbXMoYmFzZVVybCA9ICdjbXMnLCBkZWZhdWx0SWNvbiA9ICdkYXRhYmFzZScpOiBPYnNlcnZhYmxlPENtc01lbnVJdGVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRDb250ZW50VHlwZXMoKS5waXBlKFxuICAgICAgbWFwKChjb250ZW50VHlwZXM6IENvbnRlbnRUeXBlU2NoZW1hW10pID0+XG4gICAgICAgIGNvbnRlbnRUeXBlcy5tYXAoY3QgPT4gdGhpcy50b01lbnVJdGVtKGN0LCBiYXNlVXJsLCBkZWZhdWx0SWNvbikpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIFwiQ3VzdG9tIE9iamVjdHNcIiBzZWN0aW9uIGZvciBpdGVtcyB0aGF0IHRhcmdldCBcImFkbWluaXN0cmF0aW9uXCIuXG4gICAqIEl0ZW1zIHRhcmdldGluZyBvdGhlciBzZWN0aW9ucyBhcmUgZXhjbHVkZWQg4oCUIHVzZSBnZXRNZW51SXRlbXNCeVNlY3Rpb24oKSBmb3IgdGhvc2UuXG4gICAqL1xuICBnZXRNZW51U2VjdGlvbihcbiAgICBiYXNlVXJsID0gJ2NtcycsXG4gICAgcm9sZXM6IHN0cmluZ1tdID0gWydBZG1pbmlzdHJhdGlvbi5SZWFkJ11cbiAgKTogT2JzZXJ2YWJsZTxDbXNNZW51U2VjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldE1lbnVJdGVtc0J5U2VjdGlvbihiYXNlVXJsKS5waXBlKFxuICAgICAgbWFwKGdyb3VwZWQgPT4gKHtcbiAgICAgICAgaWQ6ICdjdXN0b20tb2JqZWN0cycsXG4gICAgICAgIHR5cGU6ICdzZWN0aW9uJyBhcyBjb25zdCxcbiAgICAgICAgdGl0bGU6ICdDdXN0b20gT2JqZWN0cycsXG4gICAgICAgIHRyYW5zbGF0ZTogJ01FTlUuQURNSU5JU1RSQVRJT04uQ1VTVE9NX09CSkVDVFMnLFxuICAgICAgICBpY29uOiAnbGF5ZXJzJyxcbiAgICAgICAgcm9sZTogcm9sZXMsXG4gICAgICAgIGF2YWlsYWJsZU9uTW9iaWxlTmF0aXZlOiBmYWxzZSxcbiAgICAgICAgbW9iaWxlT25seTogZmFsc2UsXG4gICAgICAgIGNoaWxkcmVuOiBncm91cGVkWydhZG1pbmlzdHJhdGlvbiddIHx8IFtdLFxuICAgICAgfSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9NZW51SXRlbShjdDogQ29udGVudFR5cGVTY2hlbWEsIGJhc2VVcmw6IHN0cmluZywgZGVmYXVsdEljb246IHN0cmluZyk6IENtc01lbnVJdGVtIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGBjbXMtJHtjdC5jb2xsZWN0aW9uTmFtZX1gLFxuICAgICAgdGl0bGU6IGN0LmluZm8/LmRpc3BsYXlOYW1lIHx8IGN0LmNvbGxlY3Rpb25OYW1lLFxuICAgICAgdHlwZTogJ2l0ZW0nLFxuICAgICAgaWNvbjogY3QuaW5mbz8ubWVudUljb24gfHwgZGVmYXVsdEljb24sXG4gICAgICB1cmw6IGAke2Jhc2VVcmx9LyR7Y3QuY29sbGVjdGlvbk5hbWV9YCxcbiAgICAgIGF2YWlsYWJsZU9uTW9iaWxlTmF0aXZlOiBmYWxzZSxcbiAgICAgIG1vYmlsZU9ubHk6IGZhbHNlLFxuICAgICAgLy8gU3RvcmUgdGhlIHRhcmdldCBzZWN0aW9uIGZvciBncm91cGluZ1xuICAgICAgX21lbnVTZWN0aW9uOiBjdC5pbmZvPy5tZW51U2VjdGlvbiB8fCAnYWRtaW5pc3RyYXRpb24nLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBNZW51IGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRnbS1tYW5hZ2VyLXVpIENvcmVNZW51SXRlbS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbXNNZW51SXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHR5cGU6ICdpdGVtJyB8ICdzZWN0aW9uJyB8ICdjb2xsYXBzaWJsZSc7XG4gIGljb24/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbiAgcm9sZT86IHN0cmluZ1tdO1xuICB0cmFuc2xhdGU/OiBzdHJpbmc7XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgYXZhaWxhYmxlT25Nb2JpbGVOYXRpdmU/OiBib29sZWFuO1xuICBtb2JpbGVPbmx5PzogYm9vbGVhbjtcbiAgYmFkZ2U/OiB7IHRpdGxlPzogc3RyaW5nOyB0cmFuc2xhdGU/OiBzdHJpbmc7IGNsYXNzZXM/OiBzdHJpbmcgfTtcbiAgY2hpbGRyZW4/OiBDbXNNZW51SXRlbVtdO1xuICAvKiogSW50ZXJuYWw6IHRhcmdldCBtZW51IHNlY3Rpb24gaWQgKi9cbiAgX21lbnVTZWN0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbXBsZXRlIG1lbnUgc2VjdGlvbiByZWFkeSBmb3Igc2lkZWJhciBpbmplY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ21zTWVudVNlY3Rpb24gZXh0ZW5kcyBDbXNNZW51SXRlbSB7XG4gIGNoaWxkcmVuOiBDbXNNZW51SXRlbVtdO1xufVxuIl19
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { InjectionToken, Injectable, Inject, Optional, NgModule, inject, ViewChild, Input, Component, EventEmitter, Output, HostListener } from '@angular/core';
3
3
  import * as i1 from '@angular/common/http';
4
4
  import { HttpClient, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
5
- import { BehaviorSubject, Subject, catchError, throwError, take, switchMap, takeUntil, share, tap, map } from 'rxjs';
5
+ import { BehaviorSubject, Subject, catchError, throwError, take, switchMap, takeUntil, share, tap, shareReplay, map } from 'rxjs';
6
6
  import { Client } from '@stomp/stompjs';
7
7
  import * as SockJSModule from 'sockjs-client';
8
8
  import * as i2 from '@angular/common';
@@ -6893,77 +6893,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6893
6893
  }], ctorParameters: () => [{ type: TgmHttpClient }] });
6894
6894
 
6895
6895
  /**
6896
- * Menu item structure matching tgm-manager-ui's CoreMenuItem interface.
6897
- * Frontend devs can inject these into the sidebar dynamically.
6896
+ * Transforms CMS content types into sidebar menu items.
6898
6897
  *
6899
- * Usage in tgm-manager-ui:
6898
+ * Each content type can specify where it appears via info.menuSection:
6899
+ * - "tgm-om" → TGM O&M section
6900
+ * - "tgm-economics" → TGM Economics section
6901
+ * - "tgm-inventory-management" → Inventory section
6902
+ * - "administration" (default) → Administration → Custom Objects
6903
+ * - Any other menu section id from menu.ts
6900
6904
  *
6901
- * ```typescript
6902
- * // In AppComponent or a module initializer:
6903
- * cmsMenuHelper.getMenuItems('administration/cms').subscribe(items => {
6904
- * // items is a CoreMenuItem[] array ready to inject into the sidebar
6905
- * const adminSection = menu.find(m => m.id === 'administration');
6906
- * const cmsGroup = {
6907
- * id: 'custom-objects',
6908
- * type: 'section' as const,
6909
- * title: 'Custom Objects',
6910
- * icon: 'layers',
6911
- * role: [Role['Administration.Read']],
6912
- * children: items
6913
- * };
6914
- * const moreIdx = adminSection.children.findIndex(c => c.id === 'more');
6915
- * adminSection.children.splice(moreIdx, 0, cmsGroup);
6916
- * });
6917
- * ```
6905
+ * Usage in AppComponent.initializeMenu():
6918
6906
  *
6919
- * Route setup in administraton.module.ts:
6920
6907
  * ```typescript
6921
- * {
6922
- * path: 'cms/:collectionName',
6923
- * loadChildren: () => import('./cms/cms.module').then(m => m.CmsModule),
6924
- * canActivate: [AuthGuard]
6925
- * }
6908
+ * this.cmsMenuHelper.getMenuItemsBySection('cms').subscribe(grouped => {
6909
+ * for (const [sectionId, items] of Object.entries(grouped)) {
6910
+ * const section = menu.find(m => m.id === sectionId);
6911
+ * if (section?.children) {
6912
+ * section.children.push(...items);
6913
+ * }
6914
+ * }
6915
+ * });
6926
6916
  * ```
6927
6917
  */
6928
6918
  class CmsMenuHelper {
6929
6919
  contentTypeService = inject(CmsContentTypeService);
6920
+ /** Cached content types — shared across subscribers, auto-refreshes on invalidate() */
6921
+ _cache$ = null;
6922
+ getContentTypes() {
6923
+ if (!this._cache$) {
6924
+ this._cache$ = this.getContentTypes().pipe(shareReplay({ bufferSize: 1, refCount: false }));
6925
+ }
6926
+ return this._cache$;
6927
+ }
6928
+ /** Invalidate the cache — call after creating/updating/deleting a content type */
6929
+ invalidate() {
6930
+ this._cache$ = null;
6931
+ }
6930
6932
  /**
6931
- * Fetch all active content types and transform them into menu items.
6933
+ * Fetch all content types and return menu items grouped by menuSection.
6934
+ * Each key is a menu section id (e.g., "tgm-om", "administration").
6935
+ * Items without menuSection default to "administration".
6932
6936
  *
6933
- * @param baseUrl - The base route path (e.g., 'administration/cms')
6934
- * @param defaultIcon - Default icon for items without a specific one (default: 'database')
6935
- * @returns Observable of menu items array
6937
+ * @param baseUrl - Route base path for CMS pages
6938
+ * @param defaultIcon - Default icon when menuIcon not set
6936
6939
  */
6937
- getMenuItems(baseUrl = 'administration/cms', defaultIcon = 'database') {
6938
- return this.contentTypeService.getAll().pipe(map((contentTypes) => contentTypes.map(ct => this.toMenuItem(ct, baseUrl, defaultIcon))));
6940
+ getMenuItemsBySection(baseUrl = 'cms', defaultIcon = 'database') {
6941
+ return this.getContentTypes().pipe(map((contentTypes) => {
6942
+ const grouped = {};
6943
+ for (const ct of contentTypes) {
6944
+ const section = ct.info?.menuSection || 'administration';
6945
+ const item = this.toMenuItem(ct, baseUrl, defaultIcon);
6946
+ if (!grouped[section])
6947
+ grouped[section] = [];
6948
+ grouped[section].push(item);
6949
+ }
6950
+ return grouped;
6951
+ }));
6939
6952
  }
6940
6953
  /**
6941
- * Transform a single content type into a menu item.
6954
+ * Fetch all content types as a flat list of menu items.
6955
+ * Use getMenuItemsBySection() instead if you need placement control.
6942
6956
  */
6943
- toMenuItem(ct, baseUrl, defaultIcon) {
6944
- return {
6945
- id: `cms-${ct.collectionName}`,
6946
- title: ct.info?.displayName || ct.collectionName,
6947
- type: 'item',
6948
- icon: defaultIcon,
6949
- url: `${baseUrl}/${ct.collectionName}`,
6950
- // These match CoreMenuItem from tgm-manager-ui
6951
- availableOnMobileNative: false,
6952
- mobileOnly: false,
6953
- badge: ct.options?.draftAndPublish
6954
- ? { title: 'D/P', classes: 'badge-light-primary' }
6955
- : undefined,
6956
- };
6957
+ getMenuItems(baseUrl = 'cms', defaultIcon = 'database') {
6958
+ return this.getContentTypes().pipe(map((contentTypes) => contentTypes.map(ct => this.toMenuItem(ct, baseUrl, defaultIcon))));
6957
6959
  }
6958
6960
  /**
6959
- * Build a complete "Custom Objects" collapsible menu section.
6960
- * Ready to inject directly into the sidebar menu array.
6961
- *
6962
- * @param baseUrl - Route base path
6963
- * @param roles - Required roles to see this section
6961
+ * Build a "Custom Objects" section for items that target "administration".
6962
+ * Items targeting other sections are excluded use getMenuItemsBySection() for those.
6964
6963
  */
6965
- getMenuSection(baseUrl = 'administration/cms', roles = ['Administration.Read']) {
6966
- return this.getMenuItems(baseUrl).pipe(map(items => ({
6964
+ getMenuSection(baseUrl = 'cms', roles = ['Administration.Read']) {
6965
+ return this.getMenuItemsBySection(baseUrl).pipe(map(grouped => ({
6967
6966
  id: 'custom-objects',
6968
6967
  type: 'section',
6969
6968
  title: 'Custom Objects',
@@ -6972,9 +6971,22 @@ class CmsMenuHelper {
6972
6971
  role: roles,
6973
6972
  availableOnMobileNative: false,
6974
6973
  mobileOnly: false,
6975
- children: items,
6974
+ children: grouped['administration'] || [],
6976
6975
  })));
6977
6976
  }
6977
+ toMenuItem(ct, baseUrl, defaultIcon) {
6978
+ return {
6979
+ id: `cms-${ct.collectionName}`,
6980
+ title: ct.info?.displayName || ct.collectionName,
6981
+ type: 'item',
6982
+ icon: ct.info?.menuIcon || defaultIcon,
6983
+ url: `${baseUrl}/${ct.collectionName}`,
6984
+ availableOnMobileNative: false,
6985
+ mobileOnly: false,
6986
+ // Store the target section for grouping
6987
+ _menuSection: ct.info?.menuSection || 'administration',
6988
+ };
6989
+ }
6978
6990
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CmsMenuHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6979
6991
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CmsMenuHelper, providedIn: 'root' });
6980
6992
  }