@dotglitch/ngx-common 1.1.30 → 1.1.32

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.
@@ -35,6 +35,7 @@ export class Fetch {
35
35
  // Generally we shouldn't need this to be anything other than JSON.
36
36
  options.responseType = options.responseType || "json";
37
37
  options.withCredentials = true;
38
+ let abort = false;
38
39
  const p = new Promise((resolve, reject) => {
39
40
  const o = this.http.request(method, url, options)
40
41
  .pipe(retry({
@@ -45,6 +46,8 @@ export class Fetch {
45
46
  return of({});
46
47
  if (error.status == 504 && isDevMode())
47
48
  alert("It looks like you can't reach your development backend anymore");
49
+ abort = true;
50
+ reject(error);
48
51
  throw error;
49
52
  },
50
53
  count: retryCount
@@ -68,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
68
71
  providedIn: "root"
69
72
  }]
70
73
  }], ctorParameters: () => [{ type: i1.HttpClient }] });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvc2VydmljZXMvZmV0Y2guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBRTFCLDZEQUE2RDtBQUM3RCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFvQnJCLE1BQU0sT0FBTyxLQUFLO0lBQ2QsWUFDWSxJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3hCLENBQUM7SUFFTCxnREFBZ0Q7SUFDekMsR0FBRyxDQUFJLEdBQVcsRUFBRSxVQUF3QixFQUFFLEVBQUUsV0FBVyxHQUFHLEtBQUs7UUFDdEUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDTSxHQUFHLENBQUksR0FBVyxFQUFFLElBQVMsRUFBRSxVQUF3QixFQUFFLEVBQUUsV0FBVyxHQUFHLEtBQUs7UUFDakYsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xHLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBSSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ00sSUFBSSxDQUFJLEdBQVcsRUFBRSxJQUFTLEVBQUUsVUFBd0IsRUFBRSxFQUFFLFdBQVcsR0FBRyxLQUFLO1FBQ2xGLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsRyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUksTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNNLEtBQUssQ0FBSSxHQUFXLEVBQUUsSUFBUyxFQUFFLFVBQXdCLEVBQUUsRUFBRSxXQUFXLEdBQUcsS0FBSztRQUNuRixPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEcsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDTSxNQUFNLENBQUksR0FBVyxFQUFFLFVBQXdCLEVBQUUsRUFBRSxXQUFXLEdBQUcsS0FBSztRQUN6RSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUksUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELGtEQUFrRDtJQUMxQyxPQUFPLENBQUksTUFBYyxFQUFFLEdBQVcsRUFBRSxVQUF3QixFQUFFLEVBQUUsV0FBVyxHQUFHLEtBQUs7UUFDM0YsT0FBTyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFOUIsOENBQThDO1FBQzlDLG1FQUFtRTtRQUNuRSxPQUFPLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksTUFBTSxDQUFDO1FBQ3RELE9BQU8sQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBRS9CLE1BQU0sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3RDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDO2lCQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUNSLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVTtvQkFDbkIsNkNBQTZDO29CQUM3QyxvREFBb0Q7b0JBQ3BELElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHO3dCQUMxQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFFbEIsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxTQUFTLEVBQUU7d0JBQ2xDLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO29CQUU1RSxNQUFNLEtBQUssQ0FBQztnQkFDaEIsQ0FBQztnQkFDRCxLQUFLLEVBQUUsVUFBVTthQUNwQixDQUFDLENBQUM7aUJBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxJQUFvQixDQUFDLENBQUM7Z0JBRTlCLHFEQUFxRDtnQkFDckQsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDWixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3BCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNWLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQWUsQ0FBQztJQUMzQixDQUFDOzhHQTdEUSxLQUFLO2tIQUFMLEtBQUssY0FGRixNQUFNOzsyRkFFVCxLQUFLO2tCQUhqQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBDb250ZXh0LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyByZXRyeSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5cbi8vIFRvdGFsIG51bWJlciBvZiBfcmV0cmllc18gaWYgdGhlcmUgaXMgYSA0MjkgcmVzcG9uc2UgY29kZS5cbmNvbnN0IHJldHJ5Q291bnQgPSAyO1xuXG5leHBvcnQgdHlwZSBGZXRjaE9wdGlvbnMgPSB7XG4gICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1xuICAgICAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwge1xuICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuICAgIH07XG4gICAgYm9keT86IGFueSxcbiAgICBvYnNlcnZlPzogJ2JvZHknIHwgJ2V2ZW50cycgfCAncmVzcG9uc2UnO1xuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBGZXRjaCB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxuICAgICkgeyB9XG5cbiAgICAvLyBQdWJsaWMgaW50ZXJmYWNlIGZvciBtYWtpbmcgQUpBWCB0cmFuc2FjdGlvbnNcbiAgICBwdWJsaWMgZ2V0PFQ+KHVybDogc3RyaW5nLCBvcHRpb25zOiBGZXRjaE9wdGlvbnMgPSB7fSwgcmV0dXJuRXJyb3IgPSBmYWxzZSk6IFByb21pc2U8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KFwiZ2V0XCIsIHVybCwgb3B0aW9ucywgcmV0dXJuRXJyb3IpO1xuICAgIH1cbiAgICBwdWJsaWMgcHV0PFQ+KHVybDogc3RyaW5nLCBib2R5OiBhbnksIG9wdGlvbnM6IEZldGNoT3B0aW9ucyA9IHt9LCByZXR1cm5FcnJvciA9IGZhbHNlKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIG9wdGlvbnMuYm9keSA9IChvcHRpb25zLmJvZHkgJiYgT2JqZWN0LmtleXMob3B0aW9ucy5ib2R5KS5sZW5ndGggPiAwID8gb3B0aW9ucy5ib2R5IDogYm9keSkgfHwge307XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oXCJwdXRcIiwgdXJsLCBvcHRpb25zLCByZXR1cm5FcnJvcik7XG4gICAgfVxuICAgIHB1YmxpYyBwb3N0PFQ+KHVybDogc3RyaW5nLCBib2R5OiBhbnksIG9wdGlvbnM6IEZldGNoT3B0aW9ucyA9IHt9LCByZXR1cm5FcnJvciA9IGZhbHNlKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIG9wdGlvbnMuYm9keSA9IChvcHRpb25zLmJvZHkgJiYgT2JqZWN0LmtleXMob3B0aW9ucy5ib2R5KS5sZW5ndGggPiAwID8gb3B0aW9ucy5ib2R5IDogYm9keSkgfHwge307XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oXCJwb3N0XCIsIHVybCwgb3B0aW9ucywgcmV0dXJuRXJyb3IpO1xuICAgIH1cbiAgICBwdWJsaWMgcGF0Y2g8VD4odXJsOiBzdHJpbmcsIGJvZHk6IGFueSwgb3B0aW9uczogRmV0Y2hPcHRpb25zID0ge30sIHJldHVybkVycm9yID0gZmFsc2UpOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgb3B0aW9ucy5ib2R5ID0gKG9wdGlvbnMuYm9keSAmJiBPYmplY3Qua2V5cyhvcHRpb25zLmJvZHkpLmxlbmd0aCA+IDAgPyBvcHRpb25zLmJvZHkgOiBib2R5KSB8fCB7fTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdDxUPihcInBhdGNoXCIsIHVybCwgb3B0aW9ucywgcmV0dXJuRXJyb3IpO1xuICAgIH1cbiAgICBwdWJsaWMgZGVsZXRlPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zOiBGZXRjaE9wdGlvbnMgPSB7fSwgcmV0dXJuRXJyb3IgPSBmYWxzZSk6IFByb21pc2U8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KFwiZGVsZXRlXCIsIHVybCwgb3B0aW9ucywgcmV0dXJuRXJyb3IpO1xuICAgIH1cblxuICAgIC8vIEludGVybmFsbHksIGhhbmRsZSB0aGUgb2JzZXJ2YWJsZSBhcyBhIHByb21pc2UuXG4gICAgcHJpdmF0ZSByZXF1ZXN0PFQ+KG1ldGhvZDogc3RyaW5nLCB1cmw6IHN0cmluZywgb3B0aW9uczogRmV0Y2hPcHRpb25zID0ge30sIHJldHVybkVycm9yID0gZmFsc2UpOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgb3B0aW9ucy5yZXBvcnRQcm9ncmVzcyA9IHRydWU7XG5cbiAgICAgICAgLy8gQWxsb3cgc3VwcG9ydCBmb3IgZGlmZmVyZW50IHJlc3BvbnNlIHR5cGVzLlxuICAgICAgICAvLyBHZW5lcmFsbHkgd2Ugc2hvdWxkbid0IG5lZWQgdGhpcyB0byBiZSBhbnl0aGluZyBvdGhlciB0aGFuIEpTT04uXG4gICAgICAgIG9wdGlvbnMucmVzcG9uc2VUeXBlID0gb3B0aW9ucy5yZXNwb25zZVR5cGUgfHwgXCJqc29uXCI7XG4gICAgICAgIG9wdGlvbnMud2l0aENyZWRlbnRpYWxzID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBwID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbyA9IHRoaXMuaHR0cC5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKVxuICAgICAgICAgICAgICAgIC5waXBlKHJldHJ5KHtcbiAgICAgICAgICAgICAgICAgICAgZGVsYXkoZXJyb3IsIHJldHJ5Q291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIDQyOSBhbmQgNTAyIGFyZSBtb3N0IGNvbW1vbiBmb3Igb3ZlcmxvYWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmFja2VuZHMgLS0gc28gd2UnbGwgcmV0cnkgaWYgd2UgZ2V0IHRoZXNlIGVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MjkgfHwgZXJyb3Iuc3RhdHVzID09IDUwMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Yoe30pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDUwNCAmJiBpc0Rldk1vZGUoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydChcIkl0IGxvb2tzIGxpa2UgeW91IGNhbid0IHJlYWNoIHlvdXIgZGV2ZWxvcG1lbnQgYmFja2VuZCBhbnltb3JlXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY291bnQ6IHJldHJ5Q291bnRcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEgYXMgdW5rbm93biBhcyBUKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBwcm92aWRlIDNtcyBzbGFja3RpbWUgYmVmb3JlIHJlbGVhc2luZyBvYnNlcnZhYmxlLlxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBwIGFzIFByb21pc2U8VD47XG4gICAgfVxufVxuIl19
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvc2VydmljZXMvZmV0Y2guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBRTFCLDZEQUE2RDtBQUM3RCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFvQnJCLE1BQU0sT0FBTyxLQUFLO0lBQ2QsWUFDWSxJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3hCLENBQUM7SUFFTCxnREFBZ0Q7SUFDekMsR0FBRyxDQUFJLEdBQVcsRUFBRSxVQUF3QixFQUFFLEVBQUUsV0FBVyxHQUFHLEtBQUs7UUFDdEUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDTSxHQUFHLENBQUksR0FBVyxFQUFFLElBQVMsRUFBRSxVQUF3QixFQUFFLEVBQUUsV0FBVyxHQUFHLEtBQUs7UUFDakYsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xHLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBSSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ00s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QUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFlLENBQUM7SUFDM0IsQ0FBQzs4R0FsRVEsS0FBSztrSEFBTCxLQUFLLGNBRkYsTUFBTTs7MkZBRVQsS0FBSztrQkFIakIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwQ29udGV4dCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7IEluamVjdGFibGUsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuXG4vLyBUb3RhbCBudW1iZXIgb2YgX3JldHJpZXNfIGlmIHRoZXJlIGlzIGEgNDI5IHJlc3BvbnNlIGNvZGUuXG5jb25zdCByZXRyeUNvdW50ID0gMjtcblxuZXhwb3J0IHR5cGUgRmV0Y2hPcHRpb25zID0ge1xuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtcbiAgICAgICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgfTtcbiAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgcGFyYW1zPzogSHR0cFBhcmFtcyB8IHtcbiAgICAgICAgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbiAgICB9O1xuICAgIGJvZHk/OiBhbnksXG4gICAgb2JzZXJ2ZT86ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcbiAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogXCJyb290XCJcbn0pXG5leHBvcnQgY2xhc3MgRmV0Y2gge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcbiAgICApIHsgfVxuXG4gICAgLy8gUHVibGljIGludGVyZmFjZSBmb3IgbWFraW5nIEFKQVggdHJhbnNhY3Rpb25zXG4gICAgcHVibGljIGdldDxUPih1cmw6IHN0cmluZywgb3B0aW9uczogRmV0Y2hPcHRpb25zID0ge30sIHJldHVybkVycm9yID0gZmFsc2UpOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdDxUPihcImdldFwiLCB1cmwsIG9wdGlvbnMsIHJldHVybkVycm9yKTtcbiAgICB9XG4gICAgcHVibGljIHB1dDxUPih1cmw6IHN0cmluZywgYm9keTogYW55LCBvcHRpb25zOiBGZXRjaE9wdGlvbnMgPSB7fSwgcmV0dXJuRXJyb3IgPSBmYWxzZSk6IFByb21pc2U8VD4ge1xuICAgICAgICBvcHRpb25zLmJvZHkgPSAob3B0aW9ucy5ib2R5ICYmIE9iamVjdC5rZXlzKG9wdGlvbnMuYm9keSkubGVuZ3RoID4gMCA/IG9wdGlvbnMuYm9keSA6IGJvZHkpIHx8IHt9O1xuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KFwicHV0XCIsIHVybCwgb3B0aW9ucywgcmV0dXJuRXJyb3IpO1xuICAgIH1cbiAgICBwdWJsaWMgcG9zdDxUPih1cmw6IHN0cmluZywgYm9keTogYW55LCBvcHRpb25zOiBGZXRjaE9wdGlvbnMgPSB7fSwgcmV0dXJuRXJyb3IgPSBmYWxzZSk6IFByb21pc2U8VD4ge1xuICAgICAgICBvcHRpb25zLmJvZHkgPSAob3B0aW9ucy5ib2R5ICYmIE9iamVjdC5rZXlzKG9wdGlvbnMuYm9keSkubGVuZ3RoID4gMCA/IG9wdGlvbnMuYm9keSA6IGJvZHkpIHx8IHt9O1xuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KFwicG9zdFwiLCB1cmwsIG9wdGlvbnMsIHJldHVybkVycm9yKTtcbiAgICB9XG4gICAgcHVibGljIHBhdGNoPFQ+KHVybDogc3RyaW5nLCBib2R5OiBhbnksIG9wdGlvbnM6IEZldGNoT3B0aW9ucyA9IHt9LCByZXR1cm5FcnJvciA9IGZhbHNlKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIG9wdGlvbnMuYm9keSA9IChvcHRpb25zLmJvZHkgJiYgT2JqZWN0LmtleXMob3B0aW9ucy5ib2R5KS5sZW5ndGggPiAwID8gb3B0aW9ucy5ib2R5IDogYm9keSkgfHwge307XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oXCJwYXRjaFwiLCB1cmwsIG9wdGlvbnMsIHJldHVybkVycm9yKTtcbiAgICB9XG4gICAgcHVibGljIGRlbGV0ZTxUPih1cmw6IHN0cmluZywgb3B0aW9uczogRmV0Y2hPcHRpb25zID0ge30sIHJldHVybkVycm9yID0gZmFsc2UpOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdDxUPihcImRlbGV0ZVwiLCB1cmwsIG9wdGlvbnMsIHJldHVybkVycm9yKTtcbiAgICB9XG5cbiAgICAvLyBJbnRlcm5hbGx5LCBoYW5kbGUgdGhlIG9ic2VydmFibGUgYXMgYSBwcm9taXNlLlxuICAgIHByaXZhdGUgcmVxdWVzdDxUPihtZXRob2Q6IHN0cmluZywgdXJsOiBzdHJpbmcsIG9wdGlvbnM6IEZldGNoT3B0aW9ucyA9IHt9LCByZXR1cm5FcnJvciA9IGZhbHNlKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIG9wdGlvbnMucmVwb3J0UHJvZ3Jlc3MgPSB0cnVlO1xuXG4gICAgICAgIC8vIEFsbG93IHN1cHBvcnQgZm9yIGRpZmZlcmVudCByZXNwb25zZSB0eXBlcy5cbiAgICAgICAgLy8gR2VuZXJhbGx5IHdlIHNob3VsZG4ndCBuZWVkIHRoaXMgdG8gYmUgYW55dGhpbmcgb3RoZXIgdGhhbiBKU09OLlxuICAgICAgICBvcHRpb25zLnJlc3BvbnNlVHlwZSA9IG9wdGlvbnMucmVzcG9uc2VUeXBlIHx8IFwianNvblwiO1xuICAgICAgICBvcHRpb25zLndpdGhDcmVkZW50aWFscyA9IHRydWU7XG5cblxuICAgICAgICBsZXQgYWJvcnQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgcCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG8gPSB0aGlzLmh0dHAucmVxdWVzdChtZXRob2QsIHVybCwgb3B0aW9ucylcbiAgICAgICAgICAgICAgICAucGlwZShyZXRyeSh7XG4gICAgICAgICAgICAgICAgICAgIGRlbGF5KGVycm9yLCByZXRyeUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyA0MjkgYW5kIDUwMiBhcmUgbW9zdCBjb21tb24gZm9yIG92ZXJsb2FkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJhY2tlbmRzIC0tIHNvIHdlJ2xsIHJldHJ5IGlmIHdlIGdldCB0aGVzZSBlcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDI5IHx8IGVycm9yLnN0YXR1cyA9PSA1MDIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHt9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA1MDQgJiYgaXNEZXZNb2RlKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoXCJJdCBsb29rcyBsaWtlIHlvdSBjYW4ndCByZWFjaCB5b3VyIGRldmVsb3BtZW50IGJhY2tlbmQgYW55bW9yZVwiKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvdW50OiByZXRyeUNvdW50XG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhIGFzIHVua25vd24gYXMgVCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gcHJvdmlkZSAzbXMgc2xhY2t0aW1lIGJlZm9yZSByZWxlYXNpbmcgb2JzZXJ2YWJsZS5cbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcCBhcyBQcm9taXNlPFQ+O1xuICAgIH1cbn1cbiJdfQ==
@@ -2180,6 +2180,7 @@ class Fetch {
2180
2180
  // Generally we shouldn't need this to be anything other than JSON.
2181
2181
  options.responseType = options.responseType || "json";
2182
2182
  options.withCredentials = true;
2183
+ let abort = false;
2183
2184
  const p = new Promise((resolve, reject) => {
2184
2185
  const o = this.http.request(method, url, options)
2185
2186
  .pipe(retry({
@@ -2190,6 +2191,8 @@ class Fetch {
2190
2191
  return of({});
2191
2192
  if (error.status == 504 && isDevMode())
2192
2193
  alert("It looks like you can't reach your development backend anymore");
2194
+ abort = true;
2195
+ reject(error);
2193
2196
  throw error;
2194
2197
  },
2195
2198
  count: retryCount
@@ -9715,7 +9718,7 @@ class FileGridComponent {
9715
9718
  const url = this.config.apiSettings.listEntriesUrlTemplate
9716
9719
  ? this.config.apiSettings.listEntriesUrlTemplate(this.path)
9717
9720
  : this.config.apiSettings.listEntriesUrl;
9718
- this.fetch.post(url, { path: this.path, showHidden: this.showHiddenFiles })
9721
+ this.fetch.post(url, { path: this.path, showHidden: this.showHiddenFiles }, {}, true)
9719
9722
  .then((data) => {
9720
9723
  const files = data?.files || [];
9721
9724
  const dirs = data?.dirs || [];
@@ -9944,7 +9947,7 @@ class FileGridComponent {
9944
9947
  }).then(r => this.loadFolder());
9945
9948
  }
9946
9949
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FileGridComponent, deps: [{ token: Fetch }, { token: KeyboardService }, { token: DialogService }, { token: i1.MatDialog }, { token: FilemanagerComponent }, { token: i0.ChangeDetectorRef }, { token: i1$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
9947
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: FileGridComponent, isStandalone: true, selector: "app-file-grid", inputs: { path: "path", config: "config", showHiddenFiles: "showHiddenFiles", viewMode: "viewMode", gridSize: "gridSize", tab: "tab", selection: "selection", value: "value", sortOrder: "sortOrder" }, outputs: { pathChange: "pathChange", fileSelect: "fileSelect", fileDblClick: "fileDblClick", folderSelect: "folderSelect", folderDblClick: "folderDblClick", newTab: "newTab", loadFiles: "loadFiles", selectionChange: "selectionChange", valueChange: "valueChange" }, viewQueries: [{ propertyName: "filesRef", first: true, predicate: ["fileViewport"], descendants: true }, { propertyName: "tabulator", first: true, predicate: TabulatorComponent, descendants: true }, { propertyName: "renameTemplate", first: true, predicate: ["renameTemplate"], descendants: true, read: TemplateRef }], ngImport: i0, template: "@if (showLoader) {\n <mat-progress-bar [class.hide]=\"hideLoader\" mode=\"query\"/>\n}\n\n<div\n style=\"display: contents\"\n [style.--filemanager-fileicon-backdrop]=\"'url(' + iconResolver.path + '/pop/generic.svg)'\"\n (dragstart)=\"userIsDraggingFile = true\"\n (dragend)=\"userIsDraggingFile = false\"\n (dragover)=\"draggingOver = true\"\n (dragleave)=\"draggingOver = false\"\n (ondrop)=\"onDrop($event)\"\n>\n\n @if (failedLoad) {\n <div style=\"display: flex; align-items: center; justify-items: center; height: 100%\">\n <div style=\"max-width: 400px; display: flex; flex-direction: column; align-items: center; justify-content: center;\">\n <img style=\"width: 200px\" src=\"data:image/svg+xml,%3Csvg fill='var(--text-color)' id='Capa_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='800px' height='800px' viewBox='0 0 600.525 600.525' xml:space='preserve'%3E%3Cg%3E%3Cg%3E%3Cpath d='M57.375,138.656L43.031,95.146c-23.428,8.128-40.162,29.166-42.553,54.028l45.9,3.825 C46.856,146.306,51.16,140.568,57.375,138.656z'/%3E%3Crect y='288.309' width='45.9' height='45.901'/%3E%3Cpath d='M554.625,446.091c0,3.346-0.956,6.215-2.868,9.084l38.25,25.34c6.693-10.039,10.04-21.992,10.04-34.424V423.14h-45.899 v22.951H554.625z'/%3E%3Crect x='456.609' y='146.306' width='45.9' height='45.9'/%3E%3Crect x='485.297' y='462.825' width='45.9' height='45.9'/%3E%3Crect x='393.497' y='462.825' width='45.9' height='45.9'/%3E%3Crect x='364.81' y='146.306' width='45.9' height='45.9'/%3E%3Crect x='118.097' y='462.825' width='45.9' height='45.9'/%3E%3Crect y='380.108' width='45.9' height='45.9'/%3E%3Crect y='196.509' width='45.9' height='45.9'/%3E%3Cpath d='M330.385,143.437c-2.391-1.434-3.825-2.391-4.304-2.869l-28.209-29.166c-1.913-1.913-4.303-3.825-6.694-5.737 l-27.253,36.815c0.478,0.478,0.956,0.956,0.956,0.956s37.772,34.425,44.465,41.119L330.385,143.437z'/%3E%3Crect x='554.625' y='239.541' width='45.9' height='45.9'/%3E%3Crect x='301.697' y='462.825' width='45.899' height='45.9'/%3E%3Cpath d='M559.885,146.306h-10.997v47.812h5.737h45.9v-7.172C600.525,164.475,582.356,146.306,559.885,146.306z'/%3E%3Crect x='187.425' y='91.8' width='45.9' height='45.9'/%3E%3Crect x='554.625' y='331.341' width='45.9' height='45.9'/%3E%3Crect x='95.625' y='91.8' width='45.9' height='45.9'/%3E%3Crect x='209.897' y='462.825' width='45.9' height='45.9'/%3E%3Cpath d='M49.247,456.132l-36.337,27.73c11.953,15.777,30.122,24.863,49.725,24.863h9.562v-45.9h-9.562 C57.375,462.825,52.594,460.435,49.247,456.132z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\">\n\n <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->\n <svg\n fill=\"var(--text-color)\"\n width=\"200px\"\n viewBox=\"0 0 600.525 600.525\"\n >\n <path d=\"M57.375,138.656L43.031,95.146c-23.428,8.128-40.162,29.166-42.553,54.028l45.9,3.825C46.856,146.306,51.16,140.568,57.375,138.656z\" />\n <rect y=\"288.309\" width=\"45.9\" height=\"45.901\" />\n <path d=\"M554.625,446.091c0,3.346-0.956,6.215-2.868,9.084l38.25,25.34c6.693-10.039,10.04-21.992,10.04-34.424V423.14h-45.899v22.951H554.625z\" />\n <rect x=\"456.609\" y=\"146.306\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"485.297\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"393.497\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"364.81\" y=\"146.306\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"118.097\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <rect y=\"380.108\" width=\"45.9\" height=\"45.9\" />\n <rect y=\"196.509\" width=\"45.9\" height=\"45.9\" />\n <path d=\"M330.385,143.437c-2.391-1.434-3.825-2.391-4.304-2.869l-28.209-29.166c-1.913-1.913-4.303-3.825-6.694-5.737l-27.253,36.815c0.478,0.478,0.956,0.956,0.956,0.956s37.772,34.425,44.465,41.119L330.385,143.437z\" />\n <rect x=\"554.625\" y=\"239.541\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"301.697\" y=\"462.825\" width=\"45.899\" height=\"45.9\" />\n <path d=\"M559.885,146.306h-10.997v47.812h5.737h45.9v-7.172C600.525,164.475,582.356,146.306,559.885,146.306z\" />\n <rect x=\"187.425\" y=\"91.8\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"554.625\" y=\"331.341\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"95.625\" y=\"91.8\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"209.897\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <path d=\"M49.247,456.132l-36.337,27.73c11.953,15.777,30.122,24.863,49.725,24.863h9.562v-45.9h-9.562C57.375,462.825,52.594,460.435,49.247,456.132z\" />\n </svg>\n\n <h3>Sorry about that.</h3>\n <p>\n Our servers aren't doing their thing right now.\n You can try again later or contact an administrator about this.\n </p>\n <hr style=\"width: 100%; opacity: .5;\"/>\n <p>\n Error:\n <span style=\"color: var(--mat-tab-header-active-focus-label-text-color)\">{{error.status}}</span>\n\n @if (error.error?.message) {\n Message: {{error.error?.message}}\n }\n @if (error.error?.message) {\n Message: {{error.error?.message}}\n }\n @if (error.error?.message) {\n Message: {{error.error?.message}}\n }\n </p>\n </div>\n </div>\n }\n @else {\n <!-- <ng-container *ngIf=\"draggingOver\"></ng-container> -->\n <!-- Grid mode -->\n @if (viewMode == 'grid') {\n <ng-scrollbar\n class=\"grid content-area {{gridSize}} {{config.imageSize || 'normal'}}\"\n [class.selectionMode]=\"config.mode == 'focusFiles'\"\n [class.showDropArea]=\"draggingOver\"\n style=\"height: 100%; width: 100%\"\n track=\"vertical\"\n pointerEventsMethod=\"scrollbar\"\n [ngx-contextmenu]=\"folderContextMenu\"\n >\n <div class=\"resize-observer\" #fileViewport></div>\n <cdk-virtual-scroll-viewport\n itemSize=\"134\"\n scrollViewport\n (click)=\"selection = []; selectionText = ''\"\n >\n <div class=\"row\" *cdkVirtualFor=\"let row of sortedFolders\">\n @for (item of row; track item) {\n <div class=\"file\"\n [class.selected]=\"selection.includes(item)\"\n [class.generic]=\"item['_icon'].needsBackdrop\"\n [ngx-contextmenu]=\"fileContextMenu\"\n [ngx-menu-context]=\"item\"\n >\n @if (config.mode == 'focusFiles' && item.kind == 'file') {\n <mat-checkbox\n #checkbox\n [checked]=\"item['_value']\"\n (change)=\"onToggle(item, $event)\"\n />\n }\n <div\n style=\"display: contents\"\n (click)=\"onSelect(item, $event)\"\n (dblclick)=\"onItemClick(item)\"\n (dragstart)=\"onDragStart($event, item)\"\n >\n <img [src]=\"item['_icon'].path\"/>\n <p>{{item['vanityName'] || item.name}}</p>\n </div>\n </div>\n }\n </div>\n </cdk-virtual-scroll-viewport>\n </ng-scrollbar>\n }\n\n <!-- List mode -->\n @if (viewMode == 'list') {\n <div\n class=\"content-area\"\n style=\"width: 100%; height: 100%\"\n [class.showDropArea]=\"draggingOver\"\n [ngx-contextmenu]=\"folderContextMenu\"\n >\n <app-tabulator\n [dataSource]=\"directoryContents\"\n [columns]=\"[\n { field: 'name', title: 'Name', formatter: nameCellFormatter },\n { field: '_size', title: 'Size' },\n { field: '_ctime', title: 'Created' },\n { field: '_mtime', title: 'Modified' },\n ]\"\n [options]=\"{\n rowHeight: 32\n }\"\n (rowClick)=\"onRowClick($event)\"\n (rowDblClick)=\"onItemClick($event.data)\"\n (rowContext)=\"onRowCtx($event)\"\n />\n </div>\n }\n }\n</div>\n\n@if (selectionText?.trim()?.length > 0) {\n <div class=\"select-hint\">\n {{selectionText}}\n </div>\n}\n\n<div class=\"controls\">\n <button\n mat-flat-button\n class=\"upload-button\"\n (click)=\"onCreateFolder()\"\n >\n <mat-icon>create_new_folder</mat-icon>\n New Folder\n </button>\n <button\n mat-flat-button\n class=\"upload-button\"\n (click)=\"onUploadFile()\"\n >\n <mat-icon>upload_file</mat-icon>\n Upload\n </button>\n</div>\n", styles: [":host{display:block;height:100%;width:100%;overflow:hidden}.resize-observer{position:absolute;inset:0}.grid .row{flex:1;display:grid;grid-template-columns:repeat(auto-fill,80px);justify-content:space-between;grid-gap:20px;grid-auto-rows:min-content;padding:10px;margin-right:10px}.grid .file{width:80px;z-index:1;position:relative;transition:opacity 50ms ease-in-out;display:flex;flex-direction:column;align-items:center;text-align:center}.grid .file.selected p{background-color:#8ad9d9;color:#000}.grid .file.generic:before{content:\" \";position:absolute;background:var(--filemanager-fileicon-backdrop);background-repeat:no-repeat;width:100%;height:100%;z-index:-1;left:0}.grid .file.generic img{height:44px;width:44px;margin-top:28px;margin-bottom:8px}.grid .file img{-webkit-user-select:none;user-select:none}.grid .file p{height:50px;width:100%;margin:0;padding:2px;font-size:14px;line-height:16px;border-radius:4px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;text-overflow:ellipsis;overflow-wrap:break-word;transition:background-color 50ms ease-in-out,color 50ms ease-in-out}.grid .file mat-checkbox{position:absolute;left:-32px;top:-16px}:host ::ng-deep .small .file{width:46px}:host ::ng-deep .grid.selectionMode .row{padding-left:30px}:host ::ng-deep .grid.selectionMode .cdk-virtual-scroll-content-wrapper{padding-top:10px}:host ::ng-deep .tabulator .tabulator-row .tabulator-cell:not(:first-of-type){padding-top:9px}.list .row{flex:1;display:flex;align-items:center;padding:5px 10px;height:42px}.list .row p{margin:0}.list .row:hover{background-color:var(--filemanager-row-hover-background-color, #343434)}.list .row.selected p{background-color:#8ad9d9;color:#000;border-radius:5px;padding:0 4px}.list .row.odd{background-color:var(--filemanager-row-alt-background-color, #323232)}.controls{position:absolute;bottom:12px;right:12px;display:flex;gap:12px}.select-hint{position:absolute;font-size:14px;bottom:0;right:0;background-color:#000a;padding:2px 10px;border:1px solid black;border-top-right-radius:5px;border-bottom:none;border-right:none;z-index:9999}.select-hint:hover{display:none}.content-area{border:4px dashed rgba(0,0,0,0)}.showDropArea{border:4px dashed var(--theme-primary, rgba(128, 128, 128, .8));transition:border-color .25s ease}:host ::ng-deep ng-scrollbar.ng-scrollbar{box-sizing:border-box!important;--scrollbar-thumb-color: #666;min-height:200px;min-width:200px}mat-progress-bar{--mdc-linear-progress-track-height: 2px;position:absolute;top:0;left:0;width:100%;animation:dropIn .2s ease;transition:position .2s ease;z-index:100}mat-progress-bar.hide{top:-2px}@keyframes dropIn{0%{top:-2px}to{top:0}}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: NgScrollbarModule }, { kind: "component", type: i7.NgScrollbar, selector: "ng-scrollbar", inputs: ["disabled", "sensorDisabled", "pointerEventsDisabled", "viewportPropagateMouseMove", "autoHeightDisabled", "autoWidthDisabled", "viewClass", "trackClass", "thumbClass", "minThumbSize", "trackClickScrollDuration", "pointerEventsMethod", "track", "visibility", "appearance", "position", "sensorDebounce", "scrollAuditTime"], outputs: ["updated"], exportAs: ["ngScrollbar"] }, { kind: "directive", type: i7.ScrollViewport, selector: "[scrollViewport]" }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i7$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: TabulatorComponent, selector: "app-tabulator", inputs: ["dataSource", "columns", "key", "options"], outputs: ["cellClick", "cellDblClick", "rowClick", "rowContext", "rowDblClick"] }, { kind: "directive", type: MenuDirective, selector: "[ngx-contextmenu],[ngx-menu]", inputs: ["ngx-menu-context", "ngx-contextmenu", "ngx-menu", "ngx-menu-config"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i6.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i6.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i6.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }] }); }
9950
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: FileGridComponent, isStandalone: true, selector: "app-file-grid", inputs: { path: "path", config: "config", showHiddenFiles: "showHiddenFiles", viewMode: "viewMode", gridSize: "gridSize", tab: "tab", selection: "selection", value: "value", sortOrder: "sortOrder" }, outputs: { pathChange: "pathChange", fileSelect: "fileSelect", fileDblClick: "fileDblClick", folderSelect: "folderSelect", folderDblClick: "folderDblClick", newTab: "newTab", loadFiles: "loadFiles", selectionChange: "selectionChange", valueChange: "valueChange" }, viewQueries: [{ propertyName: "filesRef", first: true, predicate: ["fileViewport"], descendants: true }, { propertyName: "tabulator", first: true, predicate: TabulatorComponent, descendants: true }, { propertyName: "renameTemplate", first: true, predicate: ["renameTemplate"], descendants: true, read: TemplateRef }], ngImport: i0, template: "@if (showLoader) {\n <mat-progress-bar [class.hide]=\"hideLoader\" mode=\"query\"/>\n}\n\n<div\n style=\"display: contents\"\n [style.--filemanager-fileicon-backdrop]=\"'url(' + iconResolver.path + '/pop/generic.svg)'\"\n (dragstart)=\"userIsDraggingFile = true\"\n (dragend)=\"userIsDraggingFile = false\"\n (dragover)=\"draggingOver = true\"\n (dragleave)=\"draggingOver = false\"\n (ondrop)=\"onDrop($event)\"\n>\n\n @if (failedLoad) {\n <div style=\"display: flex; align-items: center; justify-content: center; height: 100%\">\n <div style=\"max-width: 400px; display: flex; flex-direction: column; align-items: center; justify-content: center;\">\n <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->\n <svg\n fill=\"var(--text-color)\"\n width=\"200px\"\n viewBox=\"0 0 600.525 600.525\"\n >\n <path d=\"M57.375,138.656L43.031,95.146c-23.428,8.128-40.162,29.166-42.553,54.028l45.9,3.825C46.856,146.306,51.16,140.568,57.375,138.656z\" />\n <rect y=\"288.309\" width=\"45.9\" height=\"45.901\" />\n <path d=\"M554.625,446.091c0,3.346-0.956,6.215-2.868,9.084l38.25,25.34c6.693-10.039,10.04-21.992,10.04-34.424V423.14h-45.899v22.951H554.625z\" />\n <rect x=\"456.609\" y=\"146.306\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"485.297\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"393.497\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"364.81\" y=\"146.306\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"118.097\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <rect y=\"380.108\" width=\"45.9\" height=\"45.9\" />\n <rect y=\"196.509\" width=\"45.9\" height=\"45.9\" />\n <path d=\"M330.385,143.437c-2.391-1.434-3.825-2.391-4.304-2.869l-28.209-29.166c-1.913-1.913-4.303-3.825-6.694-5.737l-27.253,36.815c0.478,0.478,0.956,0.956,0.956,0.956s37.772,34.425,44.465,41.119L330.385,143.437z\" />\n <rect x=\"554.625\" y=\"239.541\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"301.697\" y=\"462.825\" width=\"45.899\" height=\"45.9\" />\n <path d=\"M559.885,146.306h-10.997v47.812h5.737h45.9v-7.172C600.525,164.475,582.356,146.306,559.885,146.306z\" />\n <rect x=\"187.425\" y=\"91.8\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"554.625\" y=\"331.341\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"95.625\" y=\"91.8\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"209.897\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <path d=\"M49.247,456.132l-36.337,27.73c11.953,15.777,30.122,24.863,49.725,24.863h9.562v-45.9h-9.562C57.375,462.825,52.594,460.435,49.247,456.132z\" />\n </svg>\n\n <h3>Sorry about that.</h3>\n <p>\n Our servers aren't doing their thing right now.\n You can try again later or contact an administrator about this.\n </p>\n <hr style=\"width: 100%; opacity: .5;\"/>\n <p>\n Error:\n <span style=\"color: var(--mat-tab-header-active-focus-label-text-color)\">{{error.status}}</span>\n <br/>\n @if (error.error?.message) {\n Message: {{error.error?.message}}\n }\n </p>\n </div>\n </div>\n }\n @else {\n <!-- <ng-container *ngIf=\"draggingOver\"></ng-container> -->\n <!-- Grid mode -->\n @if (viewMode == 'grid') {\n <ng-scrollbar\n class=\"grid content-area {{gridSize}} {{config.imageSize || 'normal'}}\"\n [class.selectionMode]=\"config.mode == 'focusFiles'\"\n [class.showDropArea]=\"draggingOver\"\n style=\"height: 100%; width: 100%\"\n track=\"vertical\"\n pointerEventsMethod=\"scrollbar\"\n [ngx-contextmenu]=\"folderContextMenu\"\n >\n <div class=\"resize-observer\" #fileViewport></div>\n <cdk-virtual-scroll-viewport\n itemSize=\"150\"\n scrollViewport\n (click)=\"selection = []; selectionText = ''\"\n >\n <div class=\"row\" *cdkVirtualFor=\"let row of sortedFolders\">\n @for (item of row; track item) {\n <div class=\"file\"\n [class.selected]=\"selection.includes(item)\"\n [class.generic]=\"item['_icon'].needsBackdrop\"\n [ngx-contextmenu]=\"fileContextMenu\"\n [ngx-menu-context]=\"item\"\n >\n @if (config.mode == 'focusFiles' && item.kind == 'file') {\n <mat-checkbox\n #checkbox\n [checked]=\"item['_value']\"\n (change)=\"onToggle(item, $event)\"\n />\n }\n <div\n style=\"display: contents\"\n (click)=\"onSelect(item, $event)\"\n (dblclick)=\"onItemClick(item)\"\n (dragstart)=\"onDragStart($event, item)\"\n >\n <img [src]=\"item['_icon'].path\"/>\n <p>{{item['vanityName'] || item.name}}</p>\n </div>\n </div>\n }\n </div>\n </cdk-virtual-scroll-viewport>\n </ng-scrollbar>\n }\n\n <!-- List mode -->\n @if (viewMode == 'list') {\n <div\n class=\"content-area\"\n style=\"width: 100%; height: 100%\"\n [class.showDropArea]=\"draggingOver\"\n [ngx-contextmenu]=\"folderContextMenu\"\n >\n <app-tabulator\n [dataSource]=\"directoryContents\"\n [columns]=\"[\n { field: 'name', title: 'Name', formatter: nameCellFormatter },\n { field: '_size', title: 'Size' },\n { field: '_ctime', title: 'Created' },\n { field: '_mtime', title: 'Modified' },\n ]\"\n [options]=\"{\n rowHeight: 32\n }\"\n (rowClick)=\"onRowClick($event)\"\n (rowDblClick)=\"onItemClick($event.data)\"\n (rowContext)=\"onRowCtx($event)\"\n />\n </div>\n }\n }\n</div>\n\n@if (selectionText?.trim()?.length > 0) {\n <div class=\"select-hint\">\n {{selectionText}}\n </div>\n}\n\n<div class=\"controls\">\n <button\n mat-flat-button\n class=\"upload-button\"\n (click)=\"onCreateFolder()\"\n >\n <mat-icon>create_new_folder</mat-icon>\n New Folder\n </button>\n <button\n mat-flat-button\n class=\"upload-button\"\n (click)=\"onUploadFile()\"\n >\n <mat-icon>upload_file</mat-icon>\n Upload\n </button>\n</div>\n", styles: [":host{display:block;height:100%;width:100%;overflow:hidden}.resize-observer{position:absolute;inset:0}.grid .row{flex:1;display:grid;grid-template-columns:repeat(auto-fill,80px);justify-content:space-between;grid-gap:20px;grid-auto-rows:min-content;padding:10px;margin-right:10px}.grid .file{width:80px;z-index:1;position:relative;transition:opacity 50ms ease-in-out;display:flex;flex-direction:column;align-items:center;text-align:center}.grid .file.selected p{background-color:#8ad9d9;color:#000}.grid .file.generic:before{content:\" \";position:absolute;background:var(--filemanager-fileicon-backdrop);background-repeat:no-repeat;width:100%;height:100%;z-index:-1;left:0}.grid .file.generic img{height:44px;width:44px;margin-top:28px;margin-bottom:8px}.grid .file img{-webkit-user-select:none;user-select:none}.grid .file p{height:50px;width:100%;margin:0;padding:2px;font-size:14px;line-height:16px;border-radius:4px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;text-overflow:ellipsis;overflow-wrap:break-word;transition:background-color 50ms ease-in-out,color 50ms ease-in-out}.grid .file mat-checkbox{position:absolute;left:-32px;top:-16px}:host ::ng-deep .small .file{width:46px}:host ::ng-deep .grid.selectionMode .row{padding-left:30px}:host ::ng-deep .grid.selectionMode .cdk-virtual-scroll-content-wrapper{padding-top:10px}:host ::ng-deep .tabulator .tabulator-row .tabulator-cell:not(:first-of-type){padding-top:9px}.list .row{flex:1;display:flex;align-items:center;padding:5px 10px;height:42px}.list .row p{margin:0}.list .row:hover{background-color:var(--filemanager-row-hover-background-color, #343434)}.list .row.selected p{background-color:#8ad9d9;color:#000;border-radius:5px;padding:0 4px}.list .row.odd{background-color:var(--filemanager-row-alt-background-color, #323232)}.controls{position:absolute;bottom:12px;right:12px;display:flex;gap:12px}.select-hint{position:absolute;font-size:14px;bottom:0;right:0;background-color:#000a;padding:2px 10px;border:1px solid black;border-top-right-radius:5px;border-bottom:none;border-right:none;z-index:9999}.select-hint:hover{display:none}.content-area{border:4px dashed rgba(0,0,0,0)}.showDropArea{border:4px dashed var(--theme-primary, rgba(128, 128, 128, .8));transition:border-color .25s ease}:host ::ng-deep ng-scrollbar.ng-scrollbar{box-sizing:border-box!important;--scrollbar-thumb-color: #666;min-height:200px;min-width:200px}mat-progress-bar{--mdc-linear-progress-track-height: 2px;position:absolute;top:0;left:0;width:100%;animation:dropIn .2s ease;transition:position .2s ease;z-index:100}mat-progress-bar.hide{top:-2px}@keyframes dropIn{0%{top:-2px}to{top:0}}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: NgScrollbarModule }, { kind: "component", type: i7.NgScrollbar, selector: "ng-scrollbar", inputs: ["disabled", "sensorDisabled", "pointerEventsDisabled", "viewportPropagateMouseMove", "autoHeightDisabled", "autoWidthDisabled", "viewClass", "trackClass", "thumbClass", "minThumbSize", "trackClickScrollDuration", "pointerEventsMethod", "track", "visibility", "appearance", "position", "sensorDebounce", "scrollAuditTime"], outputs: ["updated"], exportAs: ["ngScrollbar"] }, { kind: "directive", type: i7.ScrollViewport, selector: "[scrollViewport]" }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i7$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: TabulatorComponent, selector: "app-tabulator", inputs: ["dataSource", "columns", "key", "options"], outputs: ["cellClick", "cellDblClick", "rowClick", "rowContext", "rowDblClick"] }, { kind: "directive", type: MenuDirective, selector: "[ngx-contextmenu],[ngx-menu]", inputs: ["ngx-menu-context", "ngx-contextmenu", "ngx-menu", "ngx-menu-config"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i6.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i6.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i6.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }] }); }
9948
9951
  }
9949
9952
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FileGridComponent, decorators: [{
9950
9953
  type: Component,
@@ -9962,7 +9965,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
9962
9965
  TabulatorComponent,
9963
9966
  MenuDirective,
9964
9967
  ScrollingModule
9965
- ], standalone: true, template: "@if (showLoader) {\n <mat-progress-bar [class.hide]=\"hideLoader\" mode=\"query\"/>\n}\n\n<div\n style=\"display: contents\"\n [style.--filemanager-fileicon-backdrop]=\"'url(' + iconResolver.path + '/pop/generic.svg)'\"\n (dragstart)=\"userIsDraggingFile = true\"\n (dragend)=\"userIsDraggingFile = false\"\n (dragover)=\"draggingOver = true\"\n (dragleave)=\"draggingOver = false\"\n (ondrop)=\"onDrop($event)\"\n>\n\n @if (failedLoad) {\n <div style=\"display: flex; align-items: center; justify-items: center; height: 100%\">\n <div style=\"max-width: 400px; display: flex; flex-direction: column; align-items: center; justify-content: center;\">\n <img style=\"width: 200px\" src=\"data:image/svg+xml,%3Csvg fill='var(--text-color)' id='Capa_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='800px' height='800px' viewBox='0 0 600.525 600.525' xml:space='preserve'%3E%3Cg%3E%3Cg%3E%3Cpath d='M57.375,138.656L43.031,95.146c-23.428,8.128-40.162,29.166-42.553,54.028l45.9,3.825 C46.856,146.306,51.16,140.568,57.375,138.656z'/%3E%3Crect y='288.309' width='45.9' height='45.901'/%3E%3Cpath d='M554.625,446.091c0,3.346-0.956,6.215-2.868,9.084l38.25,25.34c6.693-10.039,10.04-21.992,10.04-34.424V423.14h-45.899 v22.951H554.625z'/%3E%3Crect x='456.609' y='146.306' width='45.9' height='45.9'/%3E%3Crect x='485.297' y='462.825' width='45.9' height='45.9'/%3E%3Crect x='393.497' y='462.825' width='45.9' height='45.9'/%3E%3Crect x='364.81' y='146.306' width='45.9' height='45.9'/%3E%3Crect x='118.097' y='462.825' width='45.9' height='45.9'/%3E%3Crect y='380.108' width='45.9' height='45.9'/%3E%3Crect y='196.509' width='45.9' height='45.9'/%3E%3Cpath d='M330.385,143.437c-2.391-1.434-3.825-2.391-4.304-2.869l-28.209-29.166c-1.913-1.913-4.303-3.825-6.694-5.737 l-27.253,36.815c0.478,0.478,0.956,0.956,0.956,0.956s37.772,34.425,44.465,41.119L330.385,143.437z'/%3E%3Crect x='554.625' y='239.541' width='45.9' height='45.9'/%3E%3Crect x='301.697' y='462.825' width='45.899' height='45.9'/%3E%3Cpath d='M559.885,146.306h-10.997v47.812h5.737h45.9v-7.172C600.525,164.475,582.356,146.306,559.885,146.306z'/%3E%3Crect x='187.425' y='91.8' width='45.9' height='45.9'/%3E%3Crect x='554.625' y='331.341' width='45.9' height='45.9'/%3E%3Crect x='95.625' y='91.8' width='45.9' height='45.9'/%3E%3Crect x='209.897' y='462.825' width='45.9' height='45.9'/%3E%3Cpath d='M49.247,456.132l-36.337,27.73c11.953,15.777,30.122,24.863,49.725,24.863h9.562v-45.9h-9.562 C57.375,462.825,52.594,460.435,49.247,456.132z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\">\n\n <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->\n <svg\n fill=\"var(--text-color)\"\n width=\"200px\"\n viewBox=\"0 0 600.525 600.525\"\n >\n <path d=\"M57.375,138.656L43.031,95.146c-23.428,8.128-40.162,29.166-42.553,54.028l45.9,3.825C46.856,146.306,51.16,140.568,57.375,138.656z\" />\n <rect y=\"288.309\" width=\"45.9\" height=\"45.901\" />\n <path d=\"M554.625,446.091c0,3.346-0.956,6.215-2.868,9.084l38.25,25.34c6.693-10.039,10.04-21.992,10.04-34.424V423.14h-45.899v22.951H554.625z\" />\n <rect x=\"456.609\" y=\"146.306\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"485.297\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"393.497\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"364.81\" y=\"146.306\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"118.097\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <rect y=\"380.108\" width=\"45.9\" height=\"45.9\" />\n <rect y=\"196.509\" width=\"45.9\" height=\"45.9\" />\n <path d=\"M330.385,143.437c-2.391-1.434-3.825-2.391-4.304-2.869l-28.209-29.166c-1.913-1.913-4.303-3.825-6.694-5.737l-27.253,36.815c0.478,0.478,0.956,0.956,0.956,0.956s37.772,34.425,44.465,41.119L330.385,143.437z\" />\n <rect x=\"554.625\" y=\"239.541\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"301.697\" y=\"462.825\" width=\"45.899\" height=\"45.9\" />\n <path d=\"M559.885,146.306h-10.997v47.812h5.737h45.9v-7.172C600.525,164.475,582.356,146.306,559.885,146.306z\" />\n <rect x=\"187.425\" y=\"91.8\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"554.625\" y=\"331.341\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"95.625\" y=\"91.8\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"209.897\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <path d=\"M49.247,456.132l-36.337,27.73c11.953,15.777,30.122,24.863,49.725,24.863h9.562v-45.9h-9.562C57.375,462.825,52.594,460.435,49.247,456.132z\" />\n </svg>\n\n <h3>Sorry about that.</h3>\n <p>\n Our servers aren't doing their thing right now.\n You can try again later or contact an administrator about this.\n </p>\n <hr style=\"width: 100%; opacity: .5;\"/>\n <p>\n Error:\n <span style=\"color: var(--mat-tab-header-active-focus-label-text-color)\">{{error.status}}</span>\n\n @if (error.error?.message) {\n Message: {{error.error?.message}}\n }\n @if (error.error?.message) {\n Message: {{error.error?.message}}\n }\n @if (error.error?.message) {\n Message: {{error.error?.message}}\n }\n </p>\n </div>\n </div>\n }\n @else {\n <!-- <ng-container *ngIf=\"draggingOver\"></ng-container> -->\n <!-- Grid mode -->\n @if (viewMode == 'grid') {\n <ng-scrollbar\n class=\"grid content-area {{gridSize}} {{config.imageSize || 'normal'}}\"\n [class.selectionMode]=\"config.mode == 'focusFiles'\"\n [class.showDropArea]=\"draggingOver\"\n style=\"height: 100%; width: 100%\"\n track=\"vertical\"\n pointerEventsMethod=\"scrollbar\"\n [ngx-contextmenu]=\"folderContextMenu\"\n >\n <div class=\"resize-observer\" #fileViewport></div>\n <cdk-virtual-scroll-viewport\n itemSize=\"134\"\n scrollViewport\n (click)=\"selection = []; selectionText = ''\"\n >\n <div class=\"row\" *cdkVirtualFor=\"let row of sortedFolders\">\n @for (item of row; track item) {\n <div class=\"file\"\n [class.selected]=\"selection.includes(item)\"\n [class.generic]=\"item['_icon'].needsBackdrop\"\n [ngx-contextmenu]=\"fileContextMenu\"\n [ngx-menu-context]=\"item\"\n >\n @if (config.mode == 'focusFiles' && item.kind == 'file') {\n <mat-checkbox\n #checkbox\n [checked]=\"item['_value']\"\n (change)=\"onToggle(item, $event)\"\n />\n }\n <div\n style=\"display: contents\"\n (click)=\"onSelect(item, $event)\"\n (dblclick)=\"onItemClick(item)\"\n (dragstart)=\"onDragStart($event, item)\"\n >\n <img [src]=\"item['_icon'].path\"/>\n <p>{{item['vanityName'] || item.name}}</p>\n </div>\n </div>\n }\n </div>\n </cdk-virtual-scroll-viewport>\n </ng-scrollbar>\n }\n\n <!-- List mode -->\n @if (viewMode == 'list') {\n <div\n class=\"content-area\"\n style=\"width: 100%; height: 100%\"\n [class.showDropArea]=\"draggingOver\"\n [ngx-contextmenu]=\"folderContextMenu\"\n >\n <app-tabulator\n [dataSource]=\"directoryContents\"\n [columns]=\"[\n { field: 'name', title: 'Name', formatter: nameCellFormatter },\n { field: '_size', title: 'Size' },\n { field: '_ctime', title: 'Created' },\n { field: '_mtime', title: 'Modified' },\n ]\"\n [options]=\"{\n rowHeight: 32\n }\"\n (rowClick)=\"onRowClick($event)\"\n (rowDblClick)=\"onItemClick($event.data)\"\n (rowContext)=\"onRowCtx($event)\"\n />\n </div>\n }\n }\n</div>\n\n@if (selectionText?.trim()?.length > 0) {\n <div class=\"select-hint\">\n {{selectionText}}\n </div>\n}\n\n<div class=\"controls\">\n <button\n mat-flat-button\n class=\"upload-button\"\n (click)=\"onCreateFolder()\"\n >\n <mat-icon>create_new_folder</mat-icon>\n New Folder\n </button>\n <button\n mat-flat-button\n class=\"upload-button\"\n (click)=\"onUploadFile()\"\n >\n <mat-icon>upload_file</mat-icon>\n Upload\n </button>\n</div>\n", styles: [":host{display:block;height:100%;width:100%;overflow:hidden}.resize-observer{position:absolute;inset:0}.grid .row{flex:1;display:grid;grid-template-columns:repeat(auto-fill,80px);justify-content:space-between;grid-gap:20px;grid-auto-rows:min-content;padding:10px;margin-right:10px}.grid .file{width:80px;z-index:1;position:relative;transition:opacity 50ms ease-in-out;display:flex;flex-direction:column;align-items:center;text-align:center}.grid .file.selected p{background-color:#8ad9d9;color:#000}.grid .file.generic:before{content:\" \";position:absolute;background:var(--filemanager-fileicon-backdrop);background-repeat:no-repeat;width:100%;height:100%;z-index:-1;left:0}.grid .file.generic img{height:44px;width:44px;margin-top:28px;margin-bottom:8px}.grid .file img{-webkit-user-select:none;user-select:none}.grid .file p{height:50px;width:100%;margin:0;padding:2px;font-size:14px;line-height:16px;border-radius:4px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;text-overflow:ellipsis;overflow-wrap:break-word;transition:background-color 50ms ease-in-out,color 50ms ease-in-out}.grid .file mat-checkbox{position:absolute;left:-32px;top:-16px}:host ::ng-deep .small .file{width:46px}:host ::ng-deep .grid.selectionMode .row{padding-left:30px}:host ::ng-deep .grid.selectionMode .cdk-virtual-scroll-content-wrapper{padding-top:10px}:host ::ng-deep .tabulator .tabulator-row .tabulator-cell:not(:first-of-type){padding-top:9px}.list .row{flex:1;display:flex;align-items:center;padding:5px 10px;height:42px}.list .row p{margin:0}.list .row:hover{background-color:var(--filemanager-row-hover-background-color, #343434)}.list .row.selected p{background-color:#8ad9d9;color:#000;border-radius:5px;padding:0 4px}.list .row.odd{background-color:var(--filemanager-row-alt-background-color, #323232)}.controls{position:absolute;bottom:12px;right:12px;display:flex;gap:12px}.select-hint{position:absolute;font-size:14px;bottom:0;right:0;background-color:#000a;padding:2px 10px;border:1px solid black;border-top-right-radius:5px;border-bottom:none;border-right:none;z-index:9999}.select-hint:hover{display:none}.content-area{border:4px dashed rgba(0,0,0,0)}.showDropArea{border:4px dashed var(--theme-primary, rgba(128, 128, 128, .8));transition:border-color .25s ease}:host ::ng-deep ng-scrollbar.ng-scrollbar{box-sizing:border-box!important;--scrollbar-thumb-color: #666;min-height:200px;min-width:200px}mat-progress-bar{--mdc-linear-progress-track-height: 2px;position:absolute;top:0;left:0;width:100%;animation:dropIn .2s ease;transition:position .2s ease;z-index:100}mat-progress-bar.hide{top:-2px}@keyframes dropIn{0%{top:-2px}to{top:0}}\n"] }]
9968
+ ], standalone: true, template: "@if (showLoader) {\n <mat-progress-bar [class.hide]=\"hideLoader\" mode=\"query\"/>\n}\n\n<div\n style=\"display: contents\"\n [style.--filemanager-fileicon-backdrop]=\"'url(' + iconResolver.path + '/pop/generic.svg)'\"\n (dragstart)=\"userIsDraggingFile = true\"\n (dragend)=\"userIsDraggingFile = false\"\n (dragover)=\"draggingOver = true\"\n (dragleave)=\"draggingOver = false\"\n (ondrop)=\"onDrop($event)\"\n>\n\n @if (failedLoad) {\n <div style=\"display: flex; align-items: center; justify-content: center; height: 100%\">\n <div style=\"max-width: 400px; display: flex; flex-direction: column; align-items: center; justify-content: center;\">\n <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->\n <svg\n fill=\"var(--text-color)\"\n width=\"200px\"\n viewBox=\"0 0 600.525 600.525\"\n >\n <path d=\"M57.375,138.656L43.031,95.146c-23.428,8.128-40.162,29.166-42.553,54.028l45.9,3.825C46.856,146.306,51.16,140.568,57.375,138.656z\" />\n <rect y=\"288.309\" width=\"45.9\" height=\"45.901\" />\n <path d=\"M554.625,446.091c0,3.346-0.956,6.215-2.868,9.084l38.25,25.34c6.693-10.039,10.04-21.992,10.04-34.424V423.14h-45.899v22.951H554.625z\" />\n <rect x=\"456.609\" y=\"146.306\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"485.297\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"393.497\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"364.81\" y=\"146.306\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"118.097\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <rect y=\"380.108\" width=\"45.9\" height=\"45.9\" />\n <rect y=\"196.509\" width=\"45.9\" height=\"45.9\" />\n <path d=\"M330.385,143.437c-2.391-1.434-3.825-2.391-4.304-2.869l-28.209-29.166c-1.913-1.913-4.303-3.825-6.694-5.737l-27.253,36.815c0.478,0.478,0.956,0.956,0.956,0.956s37.772,34.425,44.465,41.119L330.385,143.437z\" />\n <rect x=\"554.625\" y=\"239.541\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"301.697\" y=\"462.825\" width=\"45.899\" height=\"45.9\" />\n <path d=\"M559.885,146.306h-10.997v47.812h5.737h45.9v-7.172C600.525,164.475,582.356,146.306,559.885,146.306z\" />\n <rect x=\"187.425\" y=\"91.8\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"554.625\" y=\"331.341\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"95.625\" y=\"91.8\" width=\"45.9\" height=\"45.9\" />\n <rect x=\"209.897\" y=\"462.825\" width=\"45.9\" height=\"45.9\" />\n <path d=\"M49.247,456.132l-36.337,27.73c11.953,15.777,30.122,24.863,49.725,24.863h9.562v-45.9h-9.562C57.375,462.825,52.594,460.435,49.247,456.132z\" />\n </svg>\n\n <h3>Sorry about that.</h3>\n <p>\n Our servers aren't doing their thing right now.\n You can try again later or contact an administrator about this.\n </p>\n <hr style=\"width: 100%; opacity: .5;\"/>\n <p>\n Error:\n <span style=\"color: var(--mat-tab-header-active-focus-label-text-color)\">{{error.status}}</span>\n <br/>\n @if (error.error?.message) {\n Message: {{error.error?.message}}\n }\n </p>\n </div>\n </div>\n }\n @else {\n <!-- <ng-container *ngIf=\"draggingOver\"></ng-container> -->\n <!-- Grid mode -->\n @if (viewMode == 'grid') {\n <ng-scrollbar\n class=\"grid content-area {{gridSize}} {{config.imageSize || 'normal'}}\"\n [class.selectionMode]=\"config.mode == 'focusFiles'\"\n [class.showDropArea]=\"draggingOver\"\n style=\"height: 100%; width: 100%\"\n track=\"vertical\"\n pointerEventsMethod=\"scrollbar\"\n [ngx-contextmenu]=\"folderContextMenu\"\n >\n <div class=\"resize-observer\" #fileViewport></div>\n <cdk-virtual-scroll-viewport\n itemSize=\"150\"\n scrollViewport\n (click)=\"selection = []; selectionText = ''\"\n >\n <div class=\"row\" *cdkVirtualFor=\"let row of sortedFolders\">\n @for (item of row; track item) {\n <div class=\"file\"\n [class.selected]=\"selection.includes(item)\"\n [class.generic]=\"item['_icon'].needsBackdrop\"\n [ngx-contextmenu]=\"fileContextMenu\"\n [ngx-menu-context]=\"item\"\n >\n @if (config.mode == 'focusFiles' && item.kind == 'file') {\n <mat-checkbox\n #checkbox\n [checked]=\"item['_value']\"\n (change)=\"onToggle(item, $event)\"\n />\n }\n <div\n style=\"display: contents\"\n (click)=\"onSelect(item, $event)\"\n (dblclick)=\"onItemClick(item)\"\n (dragstart)=\"onDragStart($event, item)\"\n >\n <img [src]=\"item['_icon'].path\"/>\n <p>{{item['vanityName'] || item.name}}</p>\n </div>\n </div>\n }\n </div>\n </cdk-virtual-scroll-viewport>\n </ng-scrollbar>\n }\n\n <!-- List mode -->\n @if (viewMode == 'list') {\n <div\n class=\"content-area\"\n style=\"width: 100%; height: 100%\"\n [class.showDropArea]=\"draggingOver\"\n [ngx-contextmenu]=\"folderContextMenu\"\n >\n <app-tabulator\n [dataSource]=\"directoryContents\"\n [columns]=\"[\n { field: 'name', title: 'Name', formatter: nameCellFormatter },\n { field: '_size', title: 'Size' },\n { field: '_ctime', title: 'Created' },\n { field: '_mtime', title: 'Modified' },\n ]\"\n [options]=\"{\n rowHeight: 32\n }\"\n (rowClick)=\"onRowClick($event)\"\n (rowDblClick)=\"onItemClick($event.data)\"\n (rowContext)=\"onRowCtx($event)\"\n />\n </div>\n }\n }\n</div>\n\n@if (selectionText?.trim()?.length > 0) {\n <div class=\"select-hint\">\n {{selectionText}}\n </div>\n}\n\n<div class=\"controls\">\n <button\n mat-flat-button\n class=\"upload-button\"\n (click)=\"onCreateFolder()\"\n >\n <mat-icon>create_new_folder</mat-icon>\n New Folder\n </button>\n <button\n mat-flat-button\n class=\"upload-button\"\n (click)=\"onUploadFile()\"\n >\n <mat-icon>upload_file</mat-icon>\n Upload\n </button>\n</div>\n", styles: [":host{display:block;height:100%;width:100%;overflow:hidden}.resize-observer{position:absolute;inset:0}.grid .row{flex:1;display:grid;grid-template-columns:repeat(auto-fill,80px);justify-content:space-between;grid-gap:20px;grid-auto-rows:min-content;padding:10px;margin-right:10px}.grid .file{width:80px;z-index:1;position:relative;transition:opacity 50ms ease-in-out;display:flex;flex-direction:column;align-items:center;text-align:center}.grid .file.selected p{background-color:#8ad9d9;color:#000}.grid .file.generic:before{content:\" \";position:absolute;background:var(--filemanager-fileicon-backdrop);background-repeat:no-repeat;width:100%;height:100%;z-index:-1;left:0}.grid .file.generic img{height:44px;width:44px;margin-top:28px;margin-bottom:8px}.grid .file img{-webkit-user-select:none;user-select:none}.grid .file p{height:50px;width:100%;margin:0;padding:2px;font-size:14px;line-height:16px;border-radius:4px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;text-overflow:ellipsis;overflow-wrap:break-word;transition:background-color 50ms ease-in-out,color 50ms ease-in-out}.grid .file mat-checkbox{position:absolute;left:-32px;top:-16px}:host ::ng-deep .small .file{width:46px}:host ::ng-deep .grid.selectionMode .row{padding-left:30px}:host ::ng-deep .grid.selectionMode .cdk-virtual-scroll-content-wrapper{padding-top:10px}:host ::ng-deep .tabulator .tabulator-row .tabulator-cell:not(:first-of-type){padding-top:9px}.list .row{flex:1;display:flex;align-items:center;padding:5px 10px;height:42px}.list .row p{margin:0}.list .row:hover{background-color:var(--filemanager-row-hover-background-color, #343434)}.list .row.selected p{background-color:#8ad9d9;color:#000;border-radius:5px;padding:0 4px}.list .row.odd{background-color:var(--filemanager-row-alt-background-color, #323232)}.controls{position:absolute;bottom:12px;right:12px;display:flex;gap:12px}.select-hint{position:absolute;font-size:14px;bottom:0;right:0;background-color:#000a;padding:2px 10px;border:1px solid black;border-top-right-radius:5px;border-bottom:none;border-right:none;z-index:9999}.select-hint:hover{display:none}.content-area{border:4px dashed rgba(0,0,0,0)}.showDropArea{border:4px dashed var(--theme-primary, rgba(128, 128, 128, .8));transition:border-color .25s ease}:host ::ng-deep ng-scrollbar.ng-scrollbar{box-sizing:border-box!important;--scrollbar-thumb-color: #666;min-height:200px;min-width:200px}mat-progress-bar{--mdc-linear-progress-track-height: 2px;position:absolute;top:0;left:0;width:100%;animation:dropIn .2s ease;transition:position .2s ease;z-index:100}mat-progress-bar.hide{top:-2px}@keyframes dropIn{0%{top:-2px}to{top:0}}\n"] }]
9966
9969
  }], ctorParameters: () => [{ type: Fetch }, { type: KeyboardService }, { type: DialogService }, { type: i1.MatDialog }, { type: FilemanagerComponent }, { type: i0.ChangeDetectorRef }, { type: i1$1.DomSanitizer }], propDecorators: { filesRef: [{
9967
9970
  type: ViewChild,
9968
9971
  args: ["fileViewport"]