diff options
Diffstat (limited to 'dist/settings-apps-view-settings-apps-view.js.map')
-rw-r--r-- | dist/settings-apps-view-settings-apps-view.js.map | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/dist/settings-apps-view-settings-apps-view.js.map b/dist/settings-apps-view-settings-apps-view.js.map new file mode 100644 index 00000000000..75dd41b1617 --- /dev/null +++ b/dist/settings-apps-view-settings-apps-view.js.map @@ -0,0 +1 @@ +{"version":3,"file":"settings-apps-view-settings-apps-view.js?v=b5d303f73eecf2ad87ca","mappings":";;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACvRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAaA;AACA;;;;;;;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;ACvCA;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AyBAA;AAGA;;;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack:///nextcloud/apps/settings/src/constants/AppsConstants.js","webpack:///nextcloud/apps/settings/src/mixins/AppManagement.js","webpack:///nextcloud/apps/settings/src/service/rebuild-navigation.js","webpack:///nextcloud/apps/settings/src/composables/useAppIcon.ts","webpack:///nextcloud/apps/settings/src/constants/AppstoreCategoryIcons.ts","webpack:///nextcloud/apps/settings/src/store/apps-store.ts","webpack:///nextcloud/apps/settings/src/utils/appDiscoverParser.ts","webpack:///nextcloud/apps/settings/src/components/AppList/AppLevelBadge.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/views/AppStore.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/views/AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/views/AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=template&id=6d1e92a4&scoped=true","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=template&id=429da85a&scoped=true","webpack:///nextcloud/apps/settings/src/components/AppList/AppLevelBadge.vue?vue&type=template&id=dbef4182&scoped=true","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=template&id=0ecce4fc&scoped=true","webpack:///nextcloud/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?vue&type=template&id=2c2ea092&scoped=true","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?vue&type=template&id=645c86d4&scoped=true","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?vue&type=template&id=564443e0&scoped=true","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?vue&type=template&id=2c452a5c&scoped=true","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=template&id=11f4a1b0&scoped=true","webpack:///nextcloud/apps/settings/src/views/AppStore.vue?vue&type=template&id=6f6912c9&scoped=true","webpack:///nextcloud/apps/settings/src/views/AppStoreNavigation.vue?vue&type=template&id=0208f5bd&scoped=true","webpack:///nextcloud/apps/settings/src/views/AppStoreSidebar.vue?vue&type=template&id=a38ee2fa&scoped=true","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=style&index=0&id=6d1e92a4&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=style&index=0&id=429da85a&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList/AppLevelBadge.vue?vue&type=style&index=0&id=dbef4182&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?vue&type=style&index=0&id=2c2ea092&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?vue&type=style&index=0&id=645c86d4&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?vue&type=style&index=0&id=564443e0&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?vue&type=style&index=0&id=2c452a5c&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=style&index=0&id=11f4a1b0&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/views/AppStoreSidebar.vue?vue&type=style&index=0&id=a38ee2fa&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=style&index=0&id=0ecce4fc&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/views/AppStore.vue?vue&type=style&index=0&id=6f6912c9&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/views/AppStoreNavigation.vue?vue&type=style&index=0&id=0208f5bd&scoped=true&lang=css","webpack://nextcloud/./apps/settings/src/components/AppList.vue?bee1","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?4f04","webpack://nextcloud/./apps/settings/src/components/AppList/AppLevelBadge.vue?8e37","webpack://nextcloud/./apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?bfb0","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?7b08","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?21cc","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?4469","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?119b","webpack://nextcloud/./apps/settings/src/views/AppStoreSidebar.vue?b4eb","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?b466","webpack://nextcloud/./apps/settings/src/views/AppStore.vue?37d8","webpack://nextcloud/./apps/settings/src/views/AppStoreNavigation.vue?866f","webpack:///nextcloud/apps/settings/src/components/AppList.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppLevelBadge.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue","webpack:///nextcloud/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue","webpack:///nextcloud/apps/settings/src/components/Markdown.vue","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue","webpack:///nextcloud/apps/settings/src/views/AppStore.vue","webpack:///nextcloud/apps/settings/src/views/AppStoreNavigation.vue","webpack:///nextcloud/apps/settings/src/views/AppStoreSidebar.vue","webpack://nextcloud/./apps/settings/src/components/AppList/AppLevelBadge.vue?7e9e","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?54e5","webpack://nextcloud/./apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?fc81","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?e3fb","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?988b","webpack://nextcloud/./apps/settings/src/views/AppStore.vue?2563","webpack://nextcloud/./apps/settings/src/views/AppStoreNavigation.vue?1e26","webpack://nextcloud/./apps/settings/src/views/AppStoreSidebar.vue?b15d","webpack://nextcloud/./apps/settings/src/components/AppList.vue?3a97","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?0587","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?b48e","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?c9f1","webpack://nextcloud/./apps/settings/src/components/SvgFilterMixin.vue?dc4c","webpack://nextcloud/./apps/settings/src/components/AppList.vue?1f7c","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?6dab","webpack://nextcloud/./apps/settings/src/components/AppList/AppLevelBadge.vue?5ece","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?26c4","webpack://nextcloud/./apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?4ced","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?c4e3","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?fbaa","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?4c0c","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?8121","webpack://nextcloud/./apps/settings/src/views/AppStore.vue?0dbf","webpack://nextcloud/./apps/settings/src/views/AppStoreNavigation.vue?a2c5","webpack://nextcloud/./apps/settings/src/views/AppStoreSidebar.vue?894e","webpack://nextcloud/./apps/settings/src/components/AppList.vue?bb22","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?5ce1","webpack://nextcloud/./apps/settings/src/components/AppList/AppLevelBadge.vue?7131","webpack://nextcloud/./apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?08f0","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?23d5","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?d420","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?4cb2","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?8eb8","webpack://nextcloud/./apps/settings/src/views/AppStoreSidebar.vue?2403","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?5690","webpack://nextcloud/./apps/settings/src/views/AppStore.vue?9882","webpack://nextcloud/./apps/settings/src/views/AppStoreNavigation.vue?9462","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcAppSidebar.mjs","webpack:///nextcloud/node_modules/p-limit/index.js","webpack:///nextcloud/node_modules/yocto-queue/index.js","webpack:///nextcloud/node_modules/vue-router/composables.mjs"],"sourcesContent":["/**\n * @copyright 2022, Julia Kirschenheuter <julia.kirschenheuter@nextcloud.com>\n *\n * @author Julia Kirschenheuter <julia.kirschenheuter@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { translate as t } from '@nextcloud/l10n';\n\n/** Enum of verification constants, according to Apps */\nexport const APPS_SECTION_ENUM = Object.freeze({\n discover: t('settings', 'Discover'),\n installed: t('settings', 'Your apps'),\n enabled: t('settings', 'Active apps'),\n disabled: t('settings', 'Disabled apps'),\n updates: t('settings', 'Updates'),\n 'app-bundles': t('settings', 'App bundles'),\n featured: t('settings', 'Featured apps'),\n supported: t('settings', 'Supported apps') // From subscription\n});","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showError } from '@nextcloud/dialogs';\nimport rebuildNavigation from '../service/rebuild-navigation.js';\nexport default {\n computed: {\n appGroups() {\n return this.app.groups.map(group => {\n return {\n id: group,\n name: group\n };\n });\n },\n installing() {\n return this.$store.getters.loading('install');\n },\n isLoading() {\n return this.app && this.$store.getters.loading(this.app.id);\n },\n enableButtonText() {\n if (this.app.needsDownload) {\n return t('settings', 'Download and enable');\n }\n return t('settings', 'Enable');\n },\n forceEnableButtonText() {\n if (this.app.needsDownload) {\n return t('settings', 'Allow untested app');\n }\n return t('settings', 'Allow untested app');\n },\n enableButtonTooltip() {\n if (this.app.needsDownload) {\n return t('settings', 'The app will be downloaded from the App Store');\n }\n return null;\n },\n forceEnableButtonTooltip() {\n const base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.');\n if (this.app.needsDownload) {\n return base + ' ' + t('settings', 'The app will be downloaded from the App Store');\n }\n return base;\n }\n },\n data() {\n return {\n groupCheckedAppsData: false\n };\n },\n mounted() {\n if (this.app && this.app.groups && this.app.groups.length > 0) {\n this.groupCheckedAppsData = true;\n }\n },\n methods: {\n asyncFindGroup(query) {\n return this.$store.dispatch('getGroups', {\n search: query,\n limit: 5,\n offset: 0\n });\n },\n isLimitedToGroups(app) {\n if (this.app.groups.length || this.groupCheckedAppsData) {\n return true;\n }\n return false;\n },\n setGroupLimit() {\n if (!this.groupCheckedAppsData) {\n this.$store.dispatch('enableApp', {\n appId: this.app.id,\n groups: []\n });\n }\n },\n canLimitToGroups(app) {\n if (app.types && app.types.includes('filesystem') || app.types.includes('prelogin') || app.types.includes('authentication') || app.types.includes('logging') || app.types.includes('prevent_group_restriction')) {\n return false;\n }\n return true;\n },\n addGroupLimitation(groupArray) {\n const group = groupArray.pop();\n const groups = this.app.groups.concat([]).concat([group.id]);\n this.$store.dispatch('enableApp', {\n appId: this.app.id,\n groups\n });\n },\n removeGroupLimitation(group) {\n const currentGroups = this.app.groups.concat([]);\n const index = currentGroups.indexOf(group.id);\n if (index > -1) {\n currentGroups.splice(index, 1);\n }\n this.$store.dispatch('enableApp', {\n appId: this.app.id,\n groups: currentGroups\n });\n },\n forceEnable(appId) {\n this.$store.dispatch('forceEnableApp', {\n appId,\n groups: []\n }).then(response => {\n rebuildNavigation();\n }).catch(error => {\n showError(error);\n });\n },\n enable(appId) {\n this.$store.dispatch('enableApp', {\n appId,\n groups: []\n }).then(response => {\n rebuildNavigation();\n }).catch(error => {\n showError(error);\n });\n },\n disable(appId) {\n this.$store.dispatch('disableApp', {\n appId\n }).then(response => {\n rebuildNavigation();\n }).catch(error => {\n showError(error);\n });\n },\n remove(appId) {\n this.$store.dispatch('uninstallApp', {\n appId\n }).then(response => {\n rebuildNavigation();\n }).catch(error => {\n showError(error);\n });\n },\n install(appId) {\n this.$store.dispatch('enableApp', {\n appId\n }).then(response => {\n rebuildNavigation();\n }).catch(error => {\n showError(error);\n });\n },\n update(appId) {\n this.$store.dispatch('updateApp', {\n appId\n }).then(response => {\n rebuildNavigation();\n }).catch(error => {\n showError(error);\n });\n }\n }\n};","import axios from '@nextcloud/axios';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { emit } from '@nextcloud/event-bus';\nexport default (() => {\n return axios.get(generateOcsUrl('core/navigation', 2) + '/apps?format=json').then(_ref => {\n let {\n data\n } = _ref;\n if (data.ocs.meta.statuscode !== 200) {\n return;\n }\n emit('nextcloud:app-menu.refresh', {\n apps: data.ocs.data\n });\n window.dispatchEvent(new Event('resize'));\n });\n});","import { mdiCog } from '@mdi/js';\nimport { computed, ref, watchEffect } from 'vue';\nimport AppstoreCategoryIcons from '../constants/AppstoreCategoryIcons.ts';\nimport logger from '../logger.ts';\n/**\n * Get the app icon raw SVG for use with `NcIconSvgWrapper` (do never use without sanitizing)\n * It has a fallback to the categroy icon.\n *\n * @param app The app to get the icon for\n */\nexport function useAppIcon(app) {\n const appIcon = ref(null);\n /**\n * Fallback value if no app icon available\n */\n const categoryIcon = computed(() => {\n var _flat$map$filter$at, _app$value$category, _app$value;\n const path = (_flat$map$filter$at = [(_app$value$category = (_app$value = app.value) === null || _app$value === void 0 ? void 0 : _app$value.category) !== null && _app$value$category !== void 0 ? _app$value$category : []].flat().map(name => AppstoreCategoryIcons[name]).filter(icon => !!icon).at(0)) !== null && _flat$map$filter$at !== void 0 ? _flat$map$filter$at : mdiCog;\n return path ? \"<svg viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"\".concat(path, \"\\\" /></svg>\") : null;\n });\n watchEffect(async () => {\n var _app$value2;\n // Note: Only variables until the first `await` will be watched!\n if (!((_app$value2 = app.value) !== null && _app$value2 !== void 0 && _app$value2.preview)) {\n appIcon.value = categoryIcon.value;\n } else {\n appIcon.value = null;\n // Now try to load the real app icon\n try {\n const response = await window.fetch(app.value.preview);\n const blob = await response.blob();\n const rawSvg = await blob.text();\n appIcon.value = rawSvg.replaceAll(/fill=\"#(fff|ffffff)([a-z0-9]{1,2})?\"/ig, 'fill=\"currentColor\"');\n } catch (error) {\n appIcon.value = categoryIcon.value;\n logger.error('Could not load app icon', {\n error\n });\n }\n }\n });\n return {\n appIcon\n };\n}","/**\n * @copyright Copyright (c) 2024 Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { mdiAccount, mdiAccountMultiple, mdiArchive, mdiCheck, mdiClipboardFlow, mdiClose, mdiCog, mdiControllerClassic, mdiDownload, mdiFileDocumentEdit, mdiFolder, mdiKey, mdiMagnify, mdiMonitorEye, mdiMultimedia, mdiOfficeBuilding, mdiOpenInApp, mdiSecurity, mdiStar, mdiStarCircleOutline, mdiStarShooting, mdiTools, mdiViewDashboard } from '@mdi/js';\n/**\n * SVG paths used for appstore category icons\n */\nexport default Object.freeze({\n // system special categories\n discover: mdiStarCircleOutline,\n installed: mdiAccount,\n enabled: mdiCheck,\n disabled: mdiClose,\n bundles: mdiArchive,\n supported: mdiStarShooting,\n featured: mdiStar,\n updates: mdiDownload,\n // generic categories\n auth: mdiKey,\n customization: mdiCog,\n dashboard: mdiViewDashboard,\n files: mdiFolder,\n games: mdiControllerClassic,\n integration: mdiOpenInApp,\n monitoring: mdiMonitorEye,\n multimedia: mdiMultimedia,\n office: mdiFileDocumentEdit,\n organization: mdiOfficeBuilding,\n search: mdiMagnify,\n security: mdiSecurity,\n social: mdiAccountMultiple,\n tools: mdiTools,\n workflow: mdiClipboardFlow\n});","/**\n * @copyright Copyright (c) 2024 Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { showError } from '@nextcloud/dialogs';\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport axios from '@nextcloud/axios';\nimport logger from '../logger';\nimport APPSTORE_CATEGORY_ICONS from '../constants/AppstoreCategoryIcons.ts';\nconst showApiError = () => showError(t('settings', 'An error occurred during the request. Unable to proceed.'));\nexport const useAppsStore = defineStore('settings-apps', {\n state: () => ({\n apps: [],\n categories: [],\n updateCount: loadState('settings', 'appstoreUpdateCount', 0),\n loading: {\n apps: false,\n categories: false\n },\n loadingList: false,\n gettingCategoriesPromise: null\n }),\n actions: {\n async loadCategories() {\n let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (this.categories.length > 0 && !force) {\n return;\n }\n try {\n this.loading.categories = true;\n const {\n data: categories\n } = await axios.get(generateUrl('settings/apps/categories'));\n for (const category of categories) {\n var _APPSTORE_CATEGORY_IC;\n category.icon = (_APPSTORE_CATEGORY_IC = APPSTORE_CATEGORY_ICONS[category.id]) !== null && _APPSTORE_CATEGORY_IC !== void 0 ? _APPSTORE_CATEGORY_IC : '';\n }\n this.$patch({\n categories\n });\n } catch (error) {\n logger.error(error);\n showApiError();\n } finally {\n this.loading.categories = false;\n }\n },\n async loadApps() {\n let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (this.apps.length > 0 && !force) {\n return;\n }\n try {\n this.loading.apps = true;\n const {\n data\n } = await axios.get(generateUrl('settings/apps/list'));\n this.$patch({\n apps: data.apps\n });\n } catch (error) {\n logger.error(error);\n showApiError();\n } finally {\n this.loading.apps = false;\n }\n },\n getCategoryById(categoryId) {\n var _this$categories$find;\n return (_this$categories$find = this.categories.find(_ref => {\n let {\n id\n } = _ref;\n return id === categoryId;\n })) !== null && _this$categories$find !== void 0 ? _this$categories$find : null;\n },\n getAppById(appId) {\n var _this$apps$find;\n return (_this$apps$find = this.apps.find(_ref2 => {\n let {\n id\n } = _ref2;\n return id === appId;\n })) !== null && _this$apps$find !== void 0 ? _this$apps$find : null;\n }\n }\n});","/**\n * @copyright Copyright (c) 2024 Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/**\n * Helper to transform the JSON API results to proper frontend objects (app discover section elements)\n *\n * @param element The JSON API element to transform\n */\nexport const parseApiResponse = element => {\n var _element$type;\n const appElement = {\n ...element\n };\n if (appElement.date) {\n appElement.date = Date.parse(appElement.date);\n }\n if (appElement.expiryDate) {\n appElement.expiryDate = Date.parse(appElement.expiryDate);\n }\n if (appElement.type === 'post') {\n return appElement;\n } else if (appElement.type === 'showcase') {\n return appElement;\n } else if (appElement.type === 'carousel') {\n return appElement;\n }\n throw new Error(\"Invalid argument, app discover element with type \".concat((_element$type = element.type) !== null && _element$type !== void 0 ? _element$type : 'unknown', \" is unknown\"));\n};\n/**\n * Filter outdated or upcoming elements\n * @param element Element to check\n */\nexport const filterElements = element => {\n const now = Date.now();\n // Element not yet published\n if (element.date && element.date > now) {\n return false;\n }\n // Element expired\n if (element.expiryDate && element.expiryDate < now) {\n return false;\n }\n return true;\n};","import { defineComponent as _defineComponent } from 'vue';\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js';\nimport { mdiCheck, mdiStarShooting } from '@mdi/js';\nimport { translate as t } from '@nextcloud/l10n';\nimport { computed } from 'vue';\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AppLevelBadge',\n props: {\n level: {\n type: Number,\n required: false\n }\n },\n setup(__props) {\n const props = __props;\n const isSupported = computed(() => props.level === 300);\n const isFeatured = computed(() => props.level === 200);\n const badgeIcon = computed(() => isSupported.value ? mdiStarShooting : mdiCheck);\n const badgeText = computed(() => isSupported.value ? t('settings', 'Supported') : t('settings', 'Featured'));\n const badgeTitle = computed(() => isSupported.value ? t('settings', 'This app is supported via your current Nextcloud subscription.') : t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.'));\n return {\n __sfc: true,\n props,\n isSupported,\n isFeatured,\n badgeIcon,\n badgeText,\n badgeTitle,\n NcIconSvgWrapper\n };\n }\n});","import NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js';\nimport { mdiStar, mdiStarHalfFull, mdiStarOutline } from '@mdi/js';\nimport { translate as t } from '@nextcloud/l10n';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n name: 'AppScore',\n components: {\n NcIconSvgWrapper\n },\n props: {\n score: {\n type: Number,\n required: true\n }\n },\n setup() {\n return {\n mdiStar,\n mdiStarHalfFull,\n mdiStarOutline\n };\n },\n computed: {\n title() {\n const appScore = (this.score * 5).toFixed(1);\n return t('settings', 'Community rating: {score}/5', {\n score: appScore\n });\n },\n fullStars() {\n return Math.floor(this.score * 5 + 0.25);\n },\n emptyStars() {\n return Math.min(Math.floor((1 - this.score) * 5 + 0.25), 5 - this.fullStars);\n },\n hasHalfStar() {\n return this.fullStars + this.emptyStars < 5;\n }\n }\n});","import { defineComponent as _defineComponent } from 'vue';\nimport { mdiEyeOff } from '@mdi/js';\nimport { showError } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineAsyncComponent, defineComponent, onBeforeMount, ref } from 'vue';\nimport axios from '@nextcloud/axios';\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js';\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js';\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js';\nimport logger from '../../logger';\nimport { parseApiResponse, filterElements } from '../../utils/appDiscoverParser.ts';\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AppStoreDiscoverSection',\n setup(__props) {\n const PostType = defineAsyncComponent(() => import('./PostType.vue'));\n const CarouselType = defineAsyncComponent(() => import('./CarouselType.vue'));\n const ShowcaseType = defineAsyncComponent(() => import('./ShowcaseType.vue'));\n const hasError = ref(false);\n const elements = ref([]);\n /**\n * Shuffle using the Fisher-Yates algorithm\n * @param array The array to shuffle (in place)\n */\n const shuffleArray = array => {\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [array[i], array[j]] = [array[j], array[i]];\n }\n return array;\n };\n /**\n * Load the app discover section information\n */\n onBeforeMount(async () => {\n try {\n const {\n data\n } = await axios.get(generateUrl('/settings/api/apps/discover'));\n if (data.length === 0) {\n logger.info('No app discover elements available (empty response)');\n hasError.value = true;\n return;\n }\n // Parse data to ensure dates are useable and then filter out expired or future elements\n const parsedElements = data.map(parseApiResponse).filter(filterElements);\n // Shuffle elements to make it looks more interesting\n const shuffledElements = shuffleArray(parsedElements);\n // Sort pinned elements first\n shuffledElements.sort((a, b) => {\n var _a$order, _b$order;\n return ((_a$order = a.order) !== null && _a$order !== void 0 ? _a$order : Infinity) < ((_b$order = b.order) !== null && _b$order !== void 0 ? _b$order : Infinity) ? -1 : 1;\n });\n // Set the elements to the UI\n elements.value = shuffledElements;\n } catch (error) {\n hasError.value = true;\n logger.error(error);\n showError(t('settings', 'Could not load app discover section'));\n }\n });\n const getComponent = type => {\n if (type === 'post') {\n return PostType;\n } else if (type === 'carousel') {\n return CarouselType;\n } else if (type === 'showcase') {\n return ShowcaseType;\n }\n return defineComponent({\n mounted: () => logger.error('Unknown component requested ', type),\n render: h => h('div', t('settings', 'Could not render element'))\n });\n };\n return {\n __sfc: true,\n PostType,\n CarouselType,\n ShowcaseType,\n hasError,\n elements,\n shuffleArray,\n getComponent,\n mdiEyeOff,\n t,\n NcEmptyContent,\n NcIconSvgWrapper,\n NcLoadingIcon\n };\n }\n});","import { defineComponent as _defineComponent } from 'vue';\nimport { mdiTextShort } from '@mdi/js';\nimport { translate as t } from '@nextcloud/l10n';\nimport NcAppSidebarTab from '@nextcloud/vue/dist/Components/NcAppSidebarTab.js';\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js';\nimport Markdown from '../Markdown.vue';\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AppDescriptionTab',\n props: {\n app: {\n type: null,\n required: true\n }\n },\n setup(__props) {\n return {\n __sfc: true,\n mdiTextShort,\n t,\n NcAppSidebarTab,\n NcIconSvgWrapper,\n Markdown\n };\n }\n});","import { defineComponent as _defineComponent } from 'vue';\nimport { mdiClockFast } from '@mdi/js';\nimport { getLanguage, translate as t } from '@nextcloud/l10n';\nimport { computed } from 'vue';\nimport NcAppSidebarTab from '@nextcloud/vue/dist/Components/NcAppSidebarTab.js';\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js';\nimport Markdown from '../Markdown.vue';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AppReleasesTab',\n props: {\n app: {\n type: null,\n required: true\n }\n },\n setup(__props) {\n const props = __props;\n const hasChangelog = computed(() => {\n var _props$app$releases$, _props$app$releases;\n return Object.values((_props$app$releases$ = (_props$app$releases = props.app.releases) === null || _props$app$releases === void 0 || (_props$app$releases = _props$app$releases[0]) === null || _props$app$releases === void 0 ? void 0 : _props$app$releases.translations) !== null && _props$app$releases$ !== void 0 ? _props$app$releases$ : {}).some(_ref => {\n let {\n changelog\n } = _ref;\n return !!changelog;\n });\n });\n const createChangelogFromRelease = release => {\n var _ref2, _release$translations, _release$translations2, _release$translations3;\n return (_ref2 = (_release$translations = (_release$translations2 = release.translations) === null || _release$translations2 === void 0 || (_release$translations2 = _release$translations2[getLanguage()]) === null || _release$translations2 === void 0 ? void 0 : _release$translations2.changelog) !== null && _release$translations !== void 0 ? _release$translations : (_release$translations3 = release.translations) === null || _release$translations3 === void 0 || (_release$translations3 = _release$translations3.en) === null || _release$translations3 === void 0 ? void 0 : _release$translations3.changelog) !== null && _ref2 !== void 0 ? _ref2 : '';\n };\n return {\n __sfc: true,\n props,\n hasChangelog,\n createChangelogFromRelease,\n mdiClockFast,\n t,\n NcAppSidebarTab,\n NcIconSvgWrapper,\n Markdown\n };\n }\n});","import { defineComponent as _defineComponent } from 'vue';\nimport { translate as t } from '@nextcloud/l10n';\nimport { computed, getCurrentInstance, onBeforeMount, watchEffect } from 'vue';\nimport { useRoute } from 'vue-router/composables';\nimport { useAppsStore } from '../store/apps-store';\nimport { APPS_SECTION_ENUM } from '../constants/AppsConstants';\nimport NcAppContent from '@nextcloud/vue/dist/Components/NcAppContent.js';\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js';\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js';\nimport AppList from '../components/AppList.vue';\nimport AppStoreDiscoverSection from '../components/AppStoreDiscover/AppStoreDiscoverSection.vue';\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AppStore',\n setup(__props) {\n const route = useRoute();\n const store = useAppsStore();\n /**\n * ID of the current active category, default is `discover`\n */\n const currentCategory = computed(() => {\n var _route$params$categor, _route$params;\n return (_route$params$categor = (_route$params = route.params) === null || _route$params === void 0 ? void 0 : _route$params.category) !== null && _route$params$categor !== void 0 ? _route$params$categor : 'discover';\n });\n const appStoreLabel = t('settings', 'App Store');\n const viewLabel = computed(() => {\n var _ref, _APPS_SECTION_ENUM$cu, _store$getCategoryByI;\n return (_ref = (_APPS_SECTION_ENUM$cu = APPS_SECTION_ENUM[currentCategory.value]) !== null && _APPS_SECTION_ENUM$cu !== void 0 ? _APPS_SECTION_ENUM$cu : (_store$getCategoryByI = store.getCategoryById(currentCategory.value)) === null || _store$getCategoryByI === void 0 ? void 0 : _store$getCategoryByI.displayName) !== null && _ref !== void 0 ? _ref : appStoreLabel;\n });\n watchEffect(() => {\n window.document.title = \"\".concat(viewLabel.value, \" - \").concat(appStoreLabel, \" - Nextcloud\");\n });\n // TODO this part should be migrated to pinia\n const instance = getCurrentInstance();\n /** Is the app list loading */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isLoading = computed(() => (instance === null || instance === void 0 ? void 0 : instance.proxy).$store.getters.loading('list'));\n onBeforeMount(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (instance === null || instance === void 0 ? void 0 : instance.proxy).$store.dispatch('getCategories', {\n shouldRefetchCategories: true\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (instance === null || instance === void 0 ? void 0 : instance.proxy).$store.dispatch('getAllApps');\n });\n return {\n __sfc: true,\n route,\n store,\n currentCategory,\n appStoreLabel,\n viewLabel,\n instance,\n isLoading,\n t,\n NcAppContent,\n NcEmptyContent,\n NcLoadingIcon,\n AppList,\n AppStoreDiscoverSection\n };\n }\n});","import { defineComponent as _defineComponent } from 'vue';\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport { computed, onBeforeMount } from 'vue';\nimport { APPS_SECTION_ENUM } from '../constants/AppsConstants';\nimport { useAppsStore } from '../store/apps-store';\nimport NcAppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation.js';\nimport NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js';\nimport NcAppNavigationSpacer from '@nextcloud/vue/dist/Components/NcAppNavigationSpacer.js';\nimport NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble.js';\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js';\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js';\nimport APPSTORE_CATEGORY_ICONS from '../constants/AppstoreCategoryIcons.ts';\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AppStoreNavigation',\n setup(__props) {\n const updateCount = loadState('settings', 'appstoreUpdateCount', 0);\n const appstoreEnabled = loadState('settings', 'appstoreEnabled', true);\n const developerDocsUrl = loadState('settings', 'appstoreDeveloperDocs', '');\n const store = useAppsStore();\n const categories = computed(() => store.categories);\n const categoriesLoading = computed(() => store.loading.categories);\n /**\n * Check if the current instance has a support subscription from the Nextcloud GmbH\n *\n * For customers of the Nextcloud GmbH the app level will be set to `300` for apps that are supported in their subscription\n */\n const isSubscribed = computed(() => store.apps.find(_ref => {\n let {\n level\n } = _ref;\n return level === 300;\n }) !== undefined);\n // load categories when component is mounted\n onBeforeMount(() => {\n store.loadCategories();\n store.loadApps();\n });\n return {\n __sfc: true,\n updateCount,\n appstoreEnabled,\n developerDocsUrl,\n store,\n categories,\n categoriesLoading,\n isSubscribed,\n t,\n APPS_SECTION_ENUM,\n NcAppNavigation,\n NcAppNavigationItem,\n NcAppNavigationSpacer,\n NcCounterBubble,\n NcIconSvgWrapper,\n NcLoadingIcon,\n APPSTORE_CATEGORY_ICONS\n };\n }\n});","import { defineComponent as _defineComponent } from 'vue';\nimport { translate as t } from '@nextcloud/l10n';\nimport { computed, onMounted, ref, watch } from 'vue';\nimport { useRoute, useRouter } from 'vue-router/composables';\nimport { useAppsStore } from '../store/apps-store';\nimport NcAppSidebar from '@nextcloud/vue/dist/Components/NcAppSidebar.js';\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js';\nimport AppScore from '../components/AppList/AppScore.vue';\nimport AppDescriptionTab from '../components/AppStoreSidebar/AppDescriptionTab.vue';\nimport AppDetailsTab from '../components/AppStoreSidebar/AppDetailsTab.vue';\nimport AppReleasesTab from '../components/AppStoreSidebar/AppReleasesTab.vue';\nimport AppLevelBadge from '../components/AppList/AppLevelBadge.vue';\nimport { useAppIcon } from '../composables/useAppIcon.ts';\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AppStoreSidebar',\n setup(__props) {\n const route = useRoute();\n const router = useRouter();\n const store = useAppsStore();\n const appId = computed(() => {\n var _route$params$id;\n return (_route$params$id = route.params.id) !== null && _route$params$id !== void 0 ? _route$params$id : '';\n });\n const app = computed(() => store.getAppById(appId.value));\n const hasRating = computed(() => {\n var _app$value$appstoreDa;\n return ((_app$value$appstoreDa = app.value.appstoreData) === null || _app$value$appstoreDa === void 0 ? void 0 : _app$value$appstoreDa.ratingNumOverall) > 5;\n });\n const rating = computed(() => {\n var _app$value$appstoreDa2, _app$value$appstoreDa3, _app$value$appstoreDa4;\n return ((_app$value$appstoreDa2 = app.value.appstoreData) === null || _app$value$appstoreDa2 === void 0 ? void 0 : _app$value$appstoreDa2.ratingNumRecent) > 5 ? app.value.appstoreData.ratingRecent : (_app$value$appstoreDa3 = (_app$value$appstoreDa4 = app.value.appstoreData) === null || _app$value$appstoreDa4 === void 0 ? void 0 : _app$value$appstoreDa4.ratingOverall) !== null && _app$value$appstoreDa3 !== void 0 ? _app$value$appstoreDa3 : 0.5;\n });\n const showSidebar = computed(() => app.value !== null);\n const {\n appIcon\n } = useAppIcon(app);\n /**\n * The second text line shown on the sidebar\n */\n const licenseText = computed(() => app.value ? t('settings', 'Version {version}, {license}-licensed', {\n version: app.value.version,\n license: app.value.licence.toString().toUpperCase()\n }) : '');\n const activeTab = ref('details');\n watch([app], () => {\n activeTab.value = 'details';\n });\n /**\n * Hide the details sidebar by pushing a new route\n */\n const hideAppDetails = () => {\n router.push({\n name: 'apps-category',\n params: {\n category: route.params.category\n }\n });\n };\n /**\n * Whether the app screenshot is loaded\n */\n const screenshotLoaded = ref(false);\n const hasScreenshot = computed(() => {\n var _app$value;\n return ((_app$value = app.value) === null || _app$value === void 0 ? void 0 : _app$value.screenshot) && screenshotLoaded.value;\n });\n /**\n * Preload the app screenshot\n */\n const loadScreenshot = () => {\n var _app$value2, _app$value3;\n if ((_app$value2 = app.value) !== null && _app$value2 !== void 0 && _app$value2.releases && (_app$value3 = app.value) !== null && _app$value3 !== void 0 && _app$value3.screenshot) {\n const image = new Image();\n image.onload = () => {\n screenshotLoaded.value = true;\n };\n image.src = app.value.screenshot;\n }\n };\n // Watch app and set screenshot loaded when\n watch([app], loadScreenshot);\n onMounted(loadScreenshot);\n return {\n __sfc: true,\n route,\n router,\n store,\n appId,\n app,\n hasRating,\n rating,\n showSidebar,\n appIcon,\n licenseText,\n activeTab,\n hideAppDetails,\n screenshotLoaded,\n hasScreenshot,\n loadScreenshot,\n NcAppSidebar,\n NcIconSvgWrapper,\n AppScore,\n AppDescriptionTab,\n AppDetailsTab,\n AppReleasesTab,\n AppLevelBadge\n };\n }\n});","import { subscribe, unsubscribe } from '@nextcloud/event-bus';\nimport AppItem from './AppList/AppItem.vue';\nimport pLimit from 'p-limit';\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js';\nexport default {\n name: 'AppList',\n components: {\n AppItem,\n NcButton\n },\n props: {\n category: {\n type: String,\n required: true\n }\n },\n data() {\n return {\n search: ''\n };\n },\n computed: {\n counter() {\n return this.apps.filter(app => app.update).length;\n },\n loading() {\n return this.$store.getters.loading('list');\n },\n hasPendingUpdate() {\n return this.apps.filter(app => app.update).length > 0;\n },\n showUpdateAll() {\n return this.hasPendingUpdate && this.useListView;\n },\n apps() {\n const apps = this.$store.getters.getAllApps.filter(app => app.name.toLowerCase().search(this.search.toLowerCase()) !== -1).sort(function (a, b) {\n const sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1) + a.name;\n const sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1) + b.name;\n return OC.Util.naturalSortCompare(sortStringA, sortStringB);\n });\n if (this.category === 'installed') {\n return apps.filter(app => app.installed);\n }\n if (this.category === 'enabled') {\n return apps.filter(app => app.active && app.installed);\n }\n if (this.category === 'disabled') {\n return apps.filter(app => !app.active && app.installed);\n }\n if (this.category === 'app-bundles') {\n return apps.filter(app => app.bundles);\n }\n if (this.category === 'updates') {\n return apps.filter(app => app.update);\n }\n if (this.category === 'supported') {\n // For customers of the Nextcloud GmbH the app level will be set to `300` for apps that are supported in their subscription\n return apps.filter(app => app.level === 300);\n }\n if (this.category === 'featured') {\n // An app level of `200` will be set for apps featured on the app store\n return apps.filter(app => app.level === 200);\n }\n\n // filter app store categories\n return apps.filter(app => {\n return app.appstore && app.category !== undefined && (app.category === this.category || app.category.indexOf(this.category) > -1);\n });\n },\n bundles() {\n return this.$store.getters.getAppBundles.filter(bundle => this.bundleApps(bundle.id).length > 0);\n },\n bundleApps() {\n return function (bundle) {\n return this.$store.getters.getAllApps.filter(app => {\n return app.bundleIds !== undefined && app.bundleIds.includes(bundle);\n });\n };\n },\n searchApps() {\n if (this.search === '') {\n return [];\n }\n return this.$store.getters.getAllApps.filter(app => {\n if (app.name.toLowerCase().search(this.search.toLowerCase()) !== -1) {\n return !this.apps.find(_app => _app.id === app.id);\n }\n return false;\n });\n },\n useAppStoreView() {\n return !this.useListView && !this.useBundleView;\n },\n useListView() {\n return this.category === 'installed' || this.category === 'enabled' || this.category === 'disabled' || this.category === 'updates' || this.category === 'featured' || this.category === 'supported';\n },\n useBundleView() {\n return this.category === 'app-bundles';\n },\n allBundlesEnabled() {\n return id => {\n return this.bundleApps(id).filter(app => !app.active).length === 0;\n };\n },\n bundleToggleText() {\n return id => {\n if (this.allBundlesEnabled(id)) {\n return t('settings', 'Disable all');\n }\n return t('settings', 'Download and enable all');\n };\n }\n },\n beforeDestroy() {\n unsubscribe('nextcloud:unified-search.search', this.setSearch);\n unsubscribe('nextcloud:unified-search.reset', this.resetSearch);\n },\n mounted() {\n subscribe('nextcloud:unified-search.search', this.setSearch);\n subscribe('nextcloud:unified-search.reset', this.resetSearch);\n },\n methods: {\n setSearch(_ref) {\n let {\n query\n } = _ref;\n this.search = query;\n },\n resetSearch() {\n this.search = '';\n },\n toggleBundle(id) {\n if (this.allBundlesEnabled(id)) {\n return this.disableBundle(id);\n }\n return this.enableBundle(id);\n },\n enableBundle(id) {\n const apps = this.bundleApps(id).map(app => app.id);\n this.$store.dispatch('enableApp', {\n appId: apps,\n groups: []\n }).catch(error => {\n console.error(error);\n OC.Notification.show(error);\n });\n },\n disableBundle(id) {\n const apps = this.bundleApps(id).map(app => app.id);\n this.$store.dispatch('disableApp', {\n appId: apps,\n groups: []\n }).catch(error => {\n OC.Notification.show(error);\n });\n },\n updateAll() {\n const limit = pLimit(1);\n this.apps.filter(app => app.update).map(app => limit(() => this.$store.dispatch('updateApp', {\n appId: app.id\n })));\n }\n }\n};","import AppScore from './AppScore.vue';\nimport AppLevelBadge from './AppLevelBadge.vue';\nimport AppManagement from '../../mixins/AppManagement.js';\nimport SvgFilterMixin from '../SvgFilterMixin.vue';\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js';\nexport default {\n name: 'AppItem',\n components: {\n AppLevelBadge,\n AppScore,\n NcButton\n },\n mixins: [AppManagement, SvgFilterMixin],\n props: {\n app: {\n type: Object,\n required: true\n },\n category: {\n type: String,\n required: true\n },\n listView: {\n type: Boolean,\n default: true\n },\n useBundleView: {\n type: Boolean,\n default: false\n },\n headers: {\n type: String,\n default: null\n },\n inline: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n isSelected: false,\n scrolled: false,\n screenshotLoaded: false\n };\n },\n computed: {\n hasRating() {\n return this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5;\n },\n dataItemTag() {\n return this.listView ? 'td' : 'div';\n },\n withSidebar() {\n return !!this.$route.params.id;\n }\n },\n watch: {\n '$route.params.id'(id) {\n this.isSelected = this.app.id === id;\n }\n },\n mounted() {\n this.isSelected = this.app.id === this.$route.params.id;\n if (this.app.releases && this.app.screenshot) {\n const image = new Image();\n image.onload = () => {\n this.screenshotLoaded = true;\n };\n image.src = this.app.screenshot;\n }\n },\n watchers: {},\n methods: {\n prefix(prefix, content) {\n return prefix + '_' + content;\n },\n getDataItemHeaders(columnName) {\n return this.useBundleView ? [this.headers, columnName].join(' ') : null;\n }\n }\n};","import NcAppSidebarTab from '@nextcloud/vue/dist/Components/NcAppSidebarTab.js';\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js';\nimport NcDateTime from '@nextcloud/vue/dist/Components/NcDateTime.js';\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js';\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js';\nimport AppManagement from '../../mixins/AppManagement.js';\nimport { mdiBug, mdiFeatureSearch, mdiStar, mdiTextBox, mdiTooltipQuestion } from '@mdi/js';\nimport { useAppsStore } from '../../store/apps-store';\nexport default {\n name: 'AppDetailsTab',\n components: {\n NcAppSidebarTab,\n NcButton,\n NcDateTime,\n NcIconSvgWrapper,\n NcSelect\n },\n mixins: [AppManagement],\n props: {\n app: {\n type: Object,\n required: true\n }\n },\n setup() {\n const store = useAppsStore();\n return {\n store,\n mdiBug,\n mdiFeatureSearch,\n mdiStar,\n mdiTextBox,\n mdiTooltipQuestion\n };\n },\n data() {\n return {\n groupCheckedAppsData: false\n };\n },\n computed: {\n lastModified() {\n var _map$sort$at, _this$app$appstoreDat, _this$app$appstoreDat2;\n return (_map$sort$at = ((_this$app$appstoreDat = (_this$app$appstoreDat2 = this.app.appstoreData) === null || _this$app$appstoreDat2 === void 0 ? void 0 : _this$app$appstoreDat2.releases) !== null && _this$app$appstoreDat !== void 0 ? _this$app$appstoreDat : []).map(_ref => {\n let {\n lastModified\n } = _ref;\n return Date.parse(lastModified);\n }).sort().at(0)) !== null && _map$sort$at !== void 0 ? _map$sort$at : null;\n },\n /**\n * App authors as comma separated string\n */\n appAuthors() {\n console.warn(this.app);\n if (!this.app) {\n return '';\n }\n const authorName = xmlNode => {\n if (xmlNode['@value']) {\n // Complex node (with email or homepage attribute)\n return xmlNode['@value'];\n }\n // Simple text node\n return xmlNode;\n };\n const authors = Array.isArray(this.app.author) ? this.app.author.map(authorName) : [authorName(this.app.author)];\n return authors.sort((a, b) => a.split(' ').at(-1).localeCompare(b.split(' ').at(-1))).join(', ');\n },\n appstoreUrl() {\n return \"https://apps.nextcloud.com/apps/\".concat(this.app.id);\n },\n /**\n * Further external resources (e.g. website)\n */\n externalResources() {\n const resources = [];\n if (!this.app.internal) {\n resources.push({\n id: 'appstore',\n href: this.appstoreUrl,\n label: t('settings', 'View in store')\n });\n }\n if (this.app.website) {\n resources.push({\n id: 'website',\n href: this.app.website,\n label: t('settings', 'Visit website')\n });\n }\n if (this.app.documentation) {\n if (this.app.documentation.user) {\n resources.push({\n id: 'doc-user',\n href: this.app.documentation.user,\n label: t('settings', 'Usage documentation')\n });\n }\n if (this.app.documentation.admin) {\n resources.push({\n id: 'doc-admin',\n href: this.app.documentation.admin,\n label: t('settings', 'Admin documentation')\n });\n }\n if (this.app.documentation.developer) {\n resources.push({\n id: 'doc-developer',\n href: this.app.documentation.developer,\n label: t('settings', 'Developer documentation')\n });\n }\n }\n return resources;\n },\n appCategories() {\n return [this.app.category].flat().map(id => {\n var _this$store$getCatego, _this$store$getCatego2;\n return (_this$store$getCatego = (_this$store$getCatego2 = this.store.getCategoryById(id)) === null || _this$store$getCatego2 === void 0 ? void 0 : _this$store$getCatego2.displayName) !== null && _this$store$getCatego !== void 0 ? _this$store$getCatego : id;\n }).join(', ');\n },\n rateAppUrl() {\n return \"\".concat(this.appstoreUrl, \"#comments\");\n },\n appGroups() {\n return this.app.groups.map(group => {\n return {\n id: group,\n name: group\n };\n });\n },\n groups() {\n return this.$store.getters.getGroups.filter(group => group.id !== 'disabled').sort((a, b) => a.name.localeCompare(b.name));\n }\n },\n mounted() {\n if (this.app.groups.length > 0) {\n this.groupCheckedAppsData = true;\n }\n }\n};","import { marked } from 'marked';\nimport dompurify from 'dompurify';\nexport default {\n name: 'Markdown',\n props: {\n text: {\n type: String,\n default: ''\n },\n minHeading: {\n type: Number,\n default: 1\n }\n },\n computed: {\n renderMarkdown() {\n const renderer = new marked.Renderer();\n renderer.link = function (href, title, text) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href)).replace(/[^\\w:]/g, '').toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('http:') !== 0 && prot.indexOf('https:') !== 0) {\n return '';\n }\n let out = '<a href=\"' + href + '\" rel=\"noreferrer noopener\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n };\n renderer.heading = (text, level) => {\n level = Math.min(6, level + (this.minHeading - 1));\n return \"<h\".concat(level, \">\").concat(text, \"</h\").concat(level, \">\");\n };\n renderer.image = function (href, title, text) {\n if (text) {\n return text;\n }\n return title;\n };\n renderer.blockquote = function (quote) {\n return quote;\n };\n return dompurify.sanitize(marked(this.text.trim(), {\n renderer,\n gfm: false,\n highlight: false,\n tables: false,\n breaks: false,\n pedantic: false,\n sanitize: true,\n smartLists: true,\n smartypants: false\n }), {\n SAFE_FOR_JQUERY: true,\n ALLOWED_TAGS: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'strong', 'p', 'a', 'ul', 'ol', 'li', 'em', 'del', 'blockquote']\n });\n }\n }\n};","export default {\n name: 'SvgFilterMixin',\n data() {\n return {\n filterId: ''\n };\n },\n computed: {\n filterUrl() {\n return \"url(#\".concat(this.filterId, \")\");\n }\n },\n mounted() {\n this.filterId = 'invertIconApps-' + Math.random().toString(36).substring(2);\n }\n};","var render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n attrs: {\n id: \"app-content-inner\"\n }\n }, [_c(\"div\", {\n staticClass: \"apps-list\",\n class: {\n \"apps-list--list-view\": _vm.useBundleView || _vm.useListView,\n \"apps-list--store-view\": _vm.useAppStoreView\n },\n attrs: {\n id: \"apps-list\"\n }\n }, [_vm.useListView ? [_vm.showUpdateAll ? _c(\"div\", {\n staticClass: \"apps-list__toolbar\"\n }, [_vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.n(\"settings\", \"%n app has an update available\", \"%n apps have an update available\", _vm.counter)) + \"\\n\\t\\t\\t\\t\"), _vm.showUpdateAll ? _c(\"NcButton\", {\n attrs: {\n id: \"app-list-update-all\",\n type: \"primary\"\n },\n on: {\n click: _vm.updateAll\n }\n }, [_vm._v(\"\\n\\t\\t\\t\\t\\t\" + _vm._s(_vm.n(\"settings\", \"Update\", \"Update all\", _vm.counter)) + \"\\n\\t\\t\\t\\t\")]) : _vm._e()], 1) : _vm._e(), _vm._v(\" \"), !_vm.showUpdateAll ? _c(\"div\", {\n staticClass: \"apps-list__toolbar\"\n }, [_vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"All apps are up-to-date.\")) + \"\\n\\t\\t\\t\")]) : _vm._e(), _vm._v(\" \"), _c(\"TransitionGroup\", {\n staticClass: \"apps-list__list-container\",\n attrs: {\n name: \"apps-list\",\n tag: \"table\"\n }\n }, [_c(\"tr\", {\n key: \"app-list-view-header\"\n }, [_c(\"th\", [_c(\"span\", {\n staticClass: \"hidden-visually\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Icon\")))])]), _vm._v(\" \"), _c(\"th\", [_c(\"span\", {\n staticClass: \"hidden-visually\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Name\")))])]), _vm._v(\" \"), _c(\"th\", [_c(\"span\", {\n staticClass: \"hidden-visually\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Version\")))])]), _vm._v(\" \"), _c(\"th\", [_c(\"span\", {\n staticClass: \"hidden-visually\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Level\")))])]), _vm._v(\" \"), _c(\"th\", [_c(\"span\", {\n staticClass: \"hidden-visually\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Actions\")))])])]), _vm._v(\" \"), _vm._l(_vm.apps, function (app) {\n return _c(\"AppItem\", {\n key: app.id,\n attrs: {\n app: app,\n category: _vm.category\n }\n });\n })], 2)] : _vm._e(), _vm._v(\" \"), _vm.useBundleView ? _c(\"table\", {\n staticClass: \"apps-list__list-container\"\n }, [_c(\"tr\", {\n key: \"app-list-view-header\"\n }, [_c(\"th\", {\n attrs: {\n id: \"app-table-col-icon\"\n }\n }, [_c(\"span\", {\n staticClass: \"hidden-visually\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Icon\")))])]), _vm._v(\" \"), _c(\"th\", {\n attrs: {\n id: \"app-table-col-name\"\n }\n }, [_c(\"span\", {\n staticClass: \"hidden-visually\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Name\")))])]), _vm._v(\" \"), _c(\"th\", {\n attrs: {\n id: \"app-table-col-version\"\n }\n }, [_c(\"span\", {\n staticClass: \"hidden-visually\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Version\")))])]), _vm._v(\" \"), _c(\"th\", {\n attrs: {\n id: \"app-table-col-level\"\n }\n }, [_c(\"span\", {\n staticClass: \"hidden-visually\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Level\")))])]), _vm._v(\" \"), _c(\"th\", {\n attrs: {\n id: \"app-table-col-actions\"\n }\n }, [_c(\"span\", {\n staticClass: \"hidden-visually\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Actions\")))])])]), _vm._v(\" \"), _vm._l(_vm.bundles, function (bundle) {\n return [_c(\"tr\", {\n key: bundle.id\n }, [_c(\"th\", {\n attrs: {\n id: \"app-table-rowgroup-\".concat(bundle.id),\n colspan: \"5\",\n scope: \"rowgroup\"\n }\n }, [_c(\"div\", {\n staticClass: \"apps-list__bundle-heading\"\n }, [_c(\"span\", {\n staticClass: \"apps-list__bundle-header\"\n }, [_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\" + _vm._s(bundle.name) + \"\\n\\t\\t\\t\\t\\t\\t\\t\")]), _vm._v(\" \"), _c(\"NcButton\", {\n attrs: {\n type: \"secondary\"\n },\n on: {\n click: function ($event) {\n return _vm.toggleBundle(bundle.id);\n }\n }\n }, [_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", _vm.bundleToggleText(bundle.id))) + \"\\n\\t\\t\\t\\t\\t\\t\\t\")])], 1)])]), _vm._v(\" \"), _vm._l(_vm.bundleApps(bundle.id), function (app) {\n return _c(\"AppItem\", {\n key: bundle.id + app.id,\n attrs: {\n \"use-bundle-view\": true,\n headers: \"app-table-rowgroup-\".concat(bundle.id),\n app: app,\n category: _vm.category\n }\n });\n })];\n })], 2) : _vm._e(), _vm._v(\" \"), _vm.useAppStoreView ? _c(\"ul\", {\n staticClass: \"apps-list__store-container\"\n }, _vm._l(_vm.apps, function (app) {\n return _c(\"AppItem\", {\n key: app.id,\n attrs: {\n app: app,\n category: _vm.category,\n \"list-view\": false\n }\n });\n }), 1) : _vm._e()], 2), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"apps-list apps-list--list-view\",\n attrs: {\n id: \"apps-list-search\"\n }\n }, [_c(\"div\", {\n staticClass: \"apps-list__list-container\"\n }, [_vm.search !== \"\" && _vm.searchApps.length > 0 ? _c(\"table\", {\n staticClass: \"apps-list__list-container\"\n }, [_c(\"caption\", {\n staticClass: \"apps-list__bundle-header\"\n }, [_vm._v(\"\\n\\t\\t\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Results from other categories\")) + \"\\n\\t\\t\\t\\t\")]), _vm._v(\" \"), _c(\"tr\", {\n key: \"app-list-view-header\"\n }, [_c(\"th\", [_c(\"span\", {\n staticClass: \"hidden-visually\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Icon\")))])]), _vm._v(\" \"), _c(\"th\", [_c(\"span\", {\n staticClass: \"hidden-visually\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Name\")))])]), _vm._v(\" \"), _c(\"th\", [_c(\"span\", {\n staticClass: \"hidden-visually\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Version\")))])]), _vm._v(\" \"), _c(\"th\", [_c(\"span\", {\n staticClass: \"hidden-visually\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Level\")))])]), _vm._v(\" \"), _c(\"th\", [_c(\"span\", {\n staticClass: \"hidden-visually\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Actions\")))])])]), _vm._v(\" \"), _vm._l(_vm.searchApps, function (app) {\n return _c(\"AppItem\", {\n key: app.id,\n attrs: {\n app: app,\n category: _vm.category\n }\n });\n })], 2) : _vm._e()])]), _vm._v(\" \"), _vm.search !== \"\" && !_vm.loading && _vm.searchApps.length === 0 && _vm.apps.length === 0 ? _c(\"div\", {\n staticClass: \"emptycontent emptycontent-search\",\n attrs: {\n id: \"apps-list-empty\"\n }\n }, [_c(\"div\", {\n staticClass: \"icon-settings-dark\",\n attrs: {\n id: \"app-list-empty-icon\"\n }\n }), _vm._v(\" \"), _c(\"h2\", [_vm._v(_vm._s(_vm.t(\"settings\", \"No apps found for your version\")))])]) : _vm._e()]);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\nexport { render, staticRenderFns };","var render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(_vm.listView ? \"tr\" : _vm.inline ? \"article\" : \"li\", {\n tag: \"component\",\n staticClass: \"app-item\",\n class: {\n \"app-item--list-view\": _vm.listView,\n \"app-item--store-view\": !_vm.listView,\n \"app-item--selected\": _vm.isSelected,\n \"app-item--with-sidebar\": _vm.withSidebar\n }\n }, [_c(_vm.dataItemTag, {\n tag: \"component\",\n staticClass: \"app-image app-image-icon\",\n attrs: {\n headers: _vm.getDataItemHeaders(\"app-table-col-icon\")\n }\n }, [_vm.listView && !_vm.app.preview || !_vm.listView && !_vm.screenshotLoaded ? _c(\"div\", {\n staticClass: \"icon-settings-dark\"\n }) : _vm.listView && _vm.app.preview ? _c(\"svg\", {\n attrs: {\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\"\n }\n }, [_c(\"image\", {\n staticClass: \"app-icon\",\n attrs: {\n x: \"0\",\n y: \"0\",\n width: \"32\",\n height: \"32\",\n preserveAspectRatio: \"xMinYMin meet\",\n \"xlink:href\": _vm.app.preview\n }\n })]) : _vm._e(), _vm._v(\" \"), !_vm.listView && _vm.app.screenshot && _vm.screenshotLoaded ? _c(\"img\", {\n attrs: {\n src: _vm.app.screenshot,\n alt: \"\"\n }\n }) : _vm._e()]), _vm._v(\" \"), _c(_vm.dataItemTag, {\n tag: \"component\",\n staticClass: \"app-name\",\n attrs: {\n headers: _vm.getDataItemHeaders(\"app-table-col-name\")\n }\n }, [_c(\"router-link\", {\n staticClass: \"app-name--link\",\n attrs: {\n to: {\n name: \"apps-details\",\n params: {\n category: _vm.category,\n id: _vm.app.id\n }\n },\n \"aria-label\": _vm.t(\"settings\", \"Show details for {appName} app\", {\n appName: _vm.app.name\n })\n }\n }, [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.app.name) + \"\\n\\t\\t\")])], 1), _vm._v(\" \"), !_vm.listView ? _c(_vm.dataItemTag, {\n tag: \"component\",\n staticClass: \"app-summary\",\n attrs: {\n headers: _vm.getDataItemHeaders(\"app-version\")\n }\n }, [_vm._v(\"\\n\\t\\t\" + _vm._s(_vm.app.summary) + \"\\n\\t\")]) : _vm._e(), _vm._v(\" \"), _vm.listView ? _c(_vm.dataItemTag, {\n tag: \"component\",\n staticClass: \"app-version\",\n attrs: {\n headers: _vm.getDataItemHeaders(\"app-table-col-version\")\n }\n }, [_vm.app.version ? _c(\"span\", [_vm._v(_vm._s(_vm.app.version))]) : _vm.app.appstoreData.releases[0].version ? _c(\"span\", [_vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))]) : _vm._e()]) : _vm._e(), _vm._v(\" \"), _c(_vm.dataItemTag, {\n tag: \"component\",\n staticClass: \"app-level\",\n attrs: {\n headers: _vm.getDataItemHeaders(\"app-table-col-level\")\n }\n }, [_c(\"AppLevelBadge\", {\n attrs: {\n level: _vm.app.level\n }\n }), _vm._v(\" \"), _vm.hasRating && !_vm.listView ? _c(\"AppScore\", {\n attrs: {\n score: _vm.app.score\n }\n }) : _vm._e()], 1), _vm._v(\" \"), !_vm.inline ? _c(_vm.dataItemTag, {\n tag: \"component\",\n staticClass: \"app-actions\",\n attrs: {\n headers: _vm.getDataItemHeaders(\"app-table-col-actions\")\n }\n }, [_vm.app.error ? _c(\"div\", {\n staticClass: \"warning\"\n }, [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.app.error) + \"\\n\\t\\t\")]) : _vm._e(), _vm._v(\" \"), _vm.isLoading ? _c(\"div\", {\n staticClass: \"icon icon-loading-small\"\n }) : _vm._e(), _vm._v(\" \"), _vm.app.update ? _c(\"NcButton\", {\n attrs: {\n type: \"primary\",\n disabled: _vm.installing || _vm.isLoading\n },\n on: {\n click: function ($event) {\n $event.stopPropagation();\n return _vm.update(_vm.app.id);\n }\n }\n }, [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Update to {update}\", {\n update: _vm.app.update\n })) + \"\\n\\t\\t\")]) : _vm._e(), _vm._v(\" \"), _vm.app.canUnInstall ? _c(\"NcButton\", {\n staticClass: \"uninstall\",\n attrs: {\n type: \"tertiary\",\n disabled: _vm.installing || _vm.isLoading\n },\n on: {\n click: function ($event) {\n $event.stopPropagation();\n return _vm.remove(_vm.app.id);\n }\n }\n }, [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Remove\")) + \"\\n\\t\\t\")]) : _vm._e(), _vm._v(\" \"), _vm.app.active ? _c(\"NcButton\", {\n attrs: {\n disabled: _vm.installing || _vm.isLoading\n },\n on: {\n click: function ($event) {\n $event.stopPropagation();\n return _vm.disable(_vm.app.id);\n }\n }\n }, [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Disable\")) + \"\\n\\t\\t\")]) : _vm._e(), _vm._v(\" \"), !_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible) ? _c(\"NcButton\", {\n attrs: {\n title: _vm.enableButtonTooltip,\n \"aria-label\": _vm.enableButtonTooltip,\n type: \"primary\",\n disabled: !_vm.app.canInstall || _vm.installing || _vm.isLoading\n },\n on: {\n click: function ($event) {\n $event.stopPropagation();\n return _vm.enable(_vm.app.id);\n }\n }\n }, [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.enableButtonText) + \"\\n\\t\\t\")]) : !_vm.app.active ? _c(\"NcButton\", {\n attrs: {\n title: _vm.forceEnableButtonTooltip,\n \"aria-label\": _vm.forceEnableButtonTooltip,\n type: \"secondary\",\n disabled: _vm.installing || _vm.isLoading\n },\n on: {\n click: function ($event) {\n $event.stopPropagation();\n return _vm.forceEnable(_vm.app.id);\n }\n }\n }, [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.forceEnableButtonText) + \"\\n\\t\\t\")]) : _vm._e()], 1) : _vm._e()], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\nexport { render, staticRenderFns };","var render = function render() {\n var _vm = this,\n _c = _vm._self._c,\n _setup = _vm._self._setupProxy;\n return _setup.isSupported || _setup.isFeatured ? _c(\"span\", {\n staticClass: \"app-level-badge\",\n class: {\n \"app-level-badge--supported\": _setup.isSupported\n },\n attrs: {\n title: _setup.badgeTitle\n }\n }, [_c(_setup.NcIconSvgWrapper, {\n attrs: {\n path: _setup.badgeIcon,\n size: 20,\n inline: \"\"\n }\n }), _vm._v(\"\\n\\t\" + _vm._s(_setup.badgeText) + \"\\n\")], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\nexport { render, staticRenderFns };","var render = function render() {\n var _vm = this,\n _c = _vm._self._c,\n _setup = _vm._self._setupProxy;\n return _c(\"span\", {\n staticClass: \"app-score__wrapper\",\n attrs: {\n role: \"img\",\n \"aria-label\": _vm.title,\n title: _vm.title\n }\n }, [_vm._l(_vm.fullStars, function (index) {\n return _c(\"NcIconSvgWrapper\", {\n key: \"full-star-\".concat(index),\n attrs: {\n path: _vm.mdiStar,\n inline: \"\"\n }\n });\n }), _vm._v(\" \"), _vm.hasHalfStar ? _c(\"NcIconSvgWrapper\", {\n attrs: {\n path: _vm.mdiStarHalfFull,\n inline: \"\"\n }\n }) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.emptyStars, function (index) {\n return _c(\"NcIconSvgWrapper\", {\n key: \"empty-star-\".concat(index),\n attrs: {\n path: _vm.mdiStarOutline,\n inline: \"\"\n }\n });\n })], 2);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\nexport { render, staticRenderFns };","var render = function render() {\n var _vm = this,\n _c = _vm._self._c,\n _setup = _vm._self._setupProxy;\n return _c(\"div\", {\n staticClass: \"app-discover\"\n }, [_setup.hasError ? _c(_setup.NcEmptyContent, {\n attrs: {\n name: _setup.t(\"settings\", \"Nothing to show\"),\n description: _setup.t(\"settings\", \"Could not load section content from app store.\")\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(_setup.NcIconSvgWrapper, {\n attrs: {\n path: _setup.mdiEyeOff,\n size: 64\n }\n })];\n },\n proxy: true\n }], null, false, 638098482)\n }) : _setup.elements.length === 0 ? _c(_setup.NcEmptyContent, {\n attrs: {\n name: _setup.t(\"settings\", \"Loading\"),\n description: _setup.t(\"settings\", \"Fetching the latest news…\")\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(_setup.NcLoadingIcon, {\n attrs: {\n size: 64\n }\n })];\n },\n proxy: true\n }])\n }) : _vm._l(_setup.elements, function (entry, index) {\n var _entry$id;\n return _c(_setup.getComponent(entry.type), _vm._b({\n key: (_entry$id = entry.id) !== null && _entry$id !== void 0 ? _entry$id : index,\n tag: \"component\"\n }, \"component\", entry, false));\n })], 2);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\nexport { render, staticRenderFns };","var render = function render() {\n var _vm = this,\n _c = _vm._self._c,\n _setup = _vm._self._setupProxy;\n return _c(_setup.NcAppSidebarTab, {\n attrs: {\n id: \"desc\",\n name: _setup.t(\"settings\", \"Description\"),\n order: 0\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(_setup.NcIconSvgWrapper, {\n attrs: {\n path: _setup.mdiTextShort\n }\n })];\n },\n proxy: true\n }])\n }, [_vm._v(\" \"), _c(\"div\", {\n staticClass: \"app-description\"\n }, [_c(_setup.Markdown, {\n attrs: {\n text: _vm.app.description,\n \"min-heading\": 4\n }\n })], 1)]);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\nexport { render, staticRenderFns };","var render = function render() {\n var _vm$app$bugs, _vm$app$bugs2, _vm$app$appstoreData;\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"NcAppSidebarTab\", {\n attrs: {\n id: \"details\",\n name: _vm.t(\"settings\", \"Details\"),\n order: 1\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(\"NcIconSvgWrapper\", {\n attrs: {\n path: _vm.mdiTextBox\n }\n })];\n },\n proxy: true\n }])\n }, [_vm._v(\" \"), _c(\"div\", {\n staticClass: \"app-details\"\n }, [_c(\"div\", {\n staticClass: \"app-details__actions\"\n }, [_vm.app.active && _vm.canLimitToGroups(_vm.app) ? _c(\"div\", {\n staticClass: \"app-details__actions-groups\"\n }, [_c(\"input\", {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.groupCheckedAppsData,\n expression: \"groupCheckedAppsData\"\n }],\n staticClass: \"groups-enable__checkbox checkbox\",\n attrs: {\n id: \"groups_enable_\".concat(_vm.app.id),\n type: \"checkbox\"\n },\n domProps: {\n value: _vm.app.id,\n checked: Array.isArray(_vm.groupCheckedAppsData) ? _vm._i(_vm.groupCheckedAppsData, _vm.app.id) > -1 : _vm.groupCheckedAppsData\n },\n on: {\n change: [function ($event) {\n var $$a = _vm.groupCheckedAppsData,\n $$el = $event.target,\n $$c = $$el.checked ? true : false;\n if (Array.isArray($$a)) {\n var $$v = _vm.app.id,\n $$i = _vm._i($$a, $$v);\n if ($$el.checked) {\n $$i < 0 && (_vm.groupCheckedAppsData = $$a.concat([$$v]));\n } else {\n $$i > -1 && (_vm.groupCheckedAppsData = $$a.slice(0, $$i).concat($$a.slice($$i + 1)));\n }\n } else {\n _vm.groupCheckedAppsData = $$c;\n }\n }, _vm.setGroupLimit]\n }\n }), _vm._v(\" \"), _c(\"label\", {\n attrs: {\n for: \"groups_enable_\".concat(_vm.app.id)\n }\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"Limit to groups\")))]), _vm._v(\" \"), _c(\"input\", {\n staticClass: \"group_select\",\n attrs: {\n type: \"hidden\",\n title: _vm.t(\"settings\", \"All\"),\n value: \"\"\n }\n }), _vm._v(\" \"), _c(\"br\"), _vm._v(\" \"), _c(\"label\", {\n attrs: {\n for: \"limitToGroups\"\n }\n }, [_c(\"span\", [_vm._v(_vm._s(_vm.t(\"settings\", \"Limit app usage to groups\")))])]), _vm._v(\" \"), _vm.isLimitedToGroups(_vm.app) ? _c(\"NcSelect\", {\n attrs: {\n \"input-id\": \"limitToGroups\",\n options: _vm.groups,\n value: _vm.appGroups,\n limit: 5,\n label: \"name\",\n multiple: true,\n \"close-on-select\": false\n },\n on: {\n \"option:selected\": _vm.addGroupLimitation,\n \"option:deselected\": _vm.removeGroupLimitation,\n search: _vm.asyncFindGroup\n }\n }, [_c(\"span\", {\n attrs: {\n slot: \"noResult\"\n },\n slot: \"noResult\"\n }, [_vm._v(_vm._s(_vm.t(\"settings\", \"No results\")))])]) : _vm._e()], 1) : _vm._e(), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"app-details__actions-manage\"\n }, [_vm.app.update ? _c(\"input\", {\n staticClass: \"update primary\",\n attrs: {\n type: \"button\",\n value: _vm.t(\"settings\", \"Update to {version}\", {\n version: _vm.app.update\n }),\n disabled: _vm.installing || _vm.isLoading\n },\n on: {\n click: function ($event) {\n return _vm.update(_vm.app.id);\n }\n }\n }) : _vm._e(), _vm._v(\" \"), _vm.app.canUnInstall ? _c(\"input\", {\n staticClass: \"uninstall\",\n attrs: {\n type: \"button\",\n value: _vm.t(\"settings\", \"Remove\"),\n disabled: _vm.installing || _vm.isLoading\n },\n on: {\n click: function ($event) {\n return _vm.remove(_vm.app.id);\n }\n }\n }) : _vm._e(), _vm._v(\" \"), _vm.app.active ? _c(\"input\", {\n staticClass: \"enable\",\n attrs: {\n type: \"button\",\n value: _vm.t(\"settings\", \"Disable\"),\n disabled: _vm.installing || _vm.isLoading\n },\n on: {\n click: function ($event) {\n return _vm.disable(_vm.app.id);\n }\n }\n }) : _vm._e(), _vm._v(\" \"), !_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible) ? _c(\"input\", {\n staticClass: \"enable primary\",\n attrs: {\n title: _vm.enableButtonTooltip,\n \"aria-label\": _vm.enableButtonTooltip,\n type: \"button\",\n value: _vm.enableButtonText,\n disabled: !_vm.app.canInstall || _vm.installing || _vm.isLoading\n },\n on: {\n click: function ($event) {\n return _vm.enable(_vm.app.id);\n }\n }\n }) : !_vm.app.active && !_vm.app.canInstall ? _c(\"input\", {\n staticClass: \"enable force\",\n attrs: {\n title: _vm.forceEnableButtonTooltip,\n \"aria-label\": _vm.forceEnableButtonTooltip,\n type: \"button\",\n value: _vm.forceEnableButtonText,\n disabled: _vm.installing || _vm.isLoading\n },\n on: {\n click: function ($event) {\n return _vm.forceEnable(_vm.app.id);\n }\n }\n }) : _vm._e()])]), _vm._v(\" \"), _c(\"ul\", {\n staticClass: \"app-details__dependencies\"\n }, [_vm.app.missingMinOwnCloudVersion ? _c(\"li\", [_vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"This app has no minimum Nextcloud version assigned. This will be an error in the future.\")) + \"\\n\\t\\t\\t\")]) : _vm._e(), _vm._v(\" \"), _vm.app.missingMaxOwnCloudVersion ? _c(\"li\", [_vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"This app has no maximum Nextcloud version assigned. This will be an error in the future.\")) + \"\\n\\t\\t\\t\")]) : _vm._e(), _vm._v(\" \"), !_vm.app.canInstall ? _c(\"li\", [_vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"This app cannot be installed because the following dependencies are not fulfilled:\")) + \"\\n\\t\\t\\t\\t\"), _c(\"ul\", {\n staticClass: \"missing-dependencies\"\n }, _vm._l(_vm.app.missingDependencies, function (dep, index) {\n return _c(\"li\", {\n key: index\n }, [_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\" + _vm._s(dep) + \"\\n\\t\\t\\t\\t\\t\")]);\n }), 0)]) : _vm._e()]), _vm._v(\" \"), _vm.lastModified ? _c(\"div\", {\n staticClass: \"app-details__section\"\n }, [_c(\"h4\", [_vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Latest updated\")) + \"\\n\\t\\t\\t\")]), _vm._v(\" \"), _c(\"NcDateTime\", {\n attrs: {\n timestamp: _vm.lastModified\n }\n })], 1) : _vm._e(), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"app-details__section\"\n }, [_c(\"h4\", [_vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Author\")) + \"\\n\\t\\t\\t\")]), _vm._v(\" \"), _c(\"p\", {\n staticClass: \"app-details__authors\"\n }, [_vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.appAuthors) + \"\\n\\t\\t\\t\")])]), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"app-details__section\"\n }, [_c(\"h4\", [_vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Categories\")) + \"\\n\\t\\t\\t\")]), _vm._v(\" \"), _c(\"p\", [_vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.appCategories) + \"\\n\\t\\t\\t\")])]), _vm._v(\" \"), _vm.externalResources.length > 0 ? _c(\"div\", {\n staticClass: \"app-details__section\"\n }, [_c(\"h4\", [_vm._v(_vm._s(_vm.t(\"settings\", \"Resources\")))]), _vm._v(\" \"), _c(\"ul\", {\n staticClass: \"app-details__documentation\",\n attrs: {\n \"aria-label\": _vm.t(\"settings\", \"Documentation\")\n }\n }, _vm._l(_vm.externalResources, function (resource) {\n return _c(\"li\", {\n key: resource.id\n }, [_c(\"a\", {\n staticClass: \"appslink\",\n attrs: {\n href: resource.href,\n target: \"_blank\",\n rel: \"noreferrer noopener\"\n }\n }, [_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\" + _vm._s(resource.label) + \" ↗\\n\\t\\t\\t\\t\\t\")])]);\n }), 0)]) : _vm._e(), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"app-details__section\"\n }, [_c(\"h4\", [_vm._v(_vm._s(_vm.t(\"settings\", \"Interact\")))]), _vm._v(\" \"), _c(\"div\", {\n staticClass: \"app-details__interact\"\n }, [_c(\"NcButton\", {\n attrs: {\n disabled: !_vm.app.bugs,\n href: (_vm$app$bugs = _vm.app.bugs) !== null && _vm$app$bugs !== void 0 ? _vm$app$bugs : \"#\",\n \"aria-label\": _vm.t(\"settings\", \"Report a bug\"),\n title: _vm.t(\"settings\", \"Report a bug\")\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(\"NcIconSvgWrapper\", {\n attrs: {\n path: _vm.mdiBug\n }\n })];\n },\n proxy: true\n }])\n }), _vm._v(\" \"), _c(\"NcButton\", {\n attrs: {\n disabled: !_vm.app.bugs,\n href: (_vm$app$bugs2 = _vm.app.bugs) !== null && _vm$app$bugs2 !== void 0 ? _vm$app$bugs2 : \"#\",\n \"aria-label\": _vm.t(\"settings\", \"Request feature\"),\n title: _vm.t(\"settings\", \"Request feature\")\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(\"NcIconSvgWrapper\", {\n attrs: {\n path: _vm.mdiFeatureSearch\n }\n })];\n },\n proxy: true\n }])\n }), _vm._v(\" \"), (_vm$app$appstoreData = _vm.app.appstoreData) !== null && _vm$app$appstoreData !== void 0 && _vm$app$appstoreData.discussion ? _c(\"NcButton\", {\n attrs: {\n href: _vm.app.appstoreData.discussion,\n \"aria-label\": _vm.t(\"settings\", \"Ask questions or discuss\"),\n title: _vm.t(\"settings\", \"Ask questions or discuss\")\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(\"NcIconSvgWrapper\", {\n attrs: {\n path: _vm.mdiTooltipQuestion\n }\n })];\n },\n proxy: true\n }], null, false, 1288192462)\n }) : _vm._e(), _vm._v(\" \"), !_vm.app.internal ? _c(\"NcButton\", {\n attrs: {\n href: _vm.rateAppUrl,\n \"aria-label\": _vm.t(\"settings\", \"Rate the app\"),\n title: _vm.t(\"settings\", \"Rate\")\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(\"NcIconSvgWrapper\", {\n attrs: {\n path: _vm.mdiStar\n }\n })];\n },\n proxy: true\n }], null, false, 422450625)\n }) : _vm._e()], 1)])])]);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\nexport { render, staticRenderFns };","var render = function render() {\n var _vm = this,\n _c = _vm._self._c,\n _setup = _vm._self._setupProxy;\n return _setup.hasChangelog ? _c(_setup.NcAppSidebarTab, {\n attrs: {\n id: \"changelog\",\n name: _setup.t(\"settings\", \"Changelog\"),\n order: 2\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(_setup.NcIconSvgWrapper, {\n attrs: {\n path: _setup.mdiClockFast,\n size: 24\n }\n })];\n },\n proxy: true\n }], null, false, 1849836872)\n }, [_vm._v(\" \"), _vm._l(_vm.app.releases, function (release) {\n return _c(\"div\", {\n key: release.version,\n staticClass: \"app-sidebar-tabs__release\"\n }, [_c(\"h2\", [_vm._v(_vm._s(release.version))]), _vm._v(\" \"), _c(_setup.Markdown, {\n staticClass: \"app-sidebar-tabs__release-text\",\n attrs: {\n text: _setup.createChangelogFromRelease(release)\n }\n })], 1);\n })], 2) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\nexport { render, staticRenderFns };","var render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n staticClass: \"settings-markdown\",\n domProps: {\n innerHTML: _vm._s(_vm.renderMarkdown)\n }\n });\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\nexport { render, staticRenderFns };","var render = function render() {\n var _vm = this,\n _c = _vm._self._c,\n _setup = _vm._self._setupProxy;\n return _c(_setup.NcAppContent, {\n staticClass: \"app-settings-content\",\n attrs: {\n \"page-heading\": _setup.appStoreLabel\n }\n }, [_c(\"h2\", {\n staticClass: \"app-settings-content__label\",\n domProps: {\n textContent: _vm._s(_setup.viewLabel)\n }\n }), _vm._v(\" \"), _setup.currentCategory === \"discover\" ? _c(_setup.AppStoreDiscoverSection) : _setup.isLoading ? _c(_setup.NcEmptyContent, {\n staticClass: \"empty-content__loading\",\n attrs: {\n name: _setup.t(\"settings\", \"Loading app list\")\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(_setup.NcLoadingIcon, {\n attrs: {\n size: 64\n }\n })];\n },\n proxy: true\n }])\n }) : _c(_setup.AppList, {\n attrs: {\n category: _setup.currentCategory\n }\n })], 1);\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\nexport { render, staticRenderFns };","var render = function render() {\n var _vm = this,\n _c = _vm._self._c,\n _setup = _vm._self._setupProxy;\n return _c(_setup.NcAppNavigation, {\n attrs: {\n \"aria-label\": _setup.t(\"settings\", \"Apps\")\n },\n scopedSlots: _vm._u([{\n key: \"list\",\n fn: function () {\n return [_c(_setup.NcAppNavigationItem, {\n attrs: {\n id: \"app-category-discover\",\n to: {\n name: \"apps-category\",\n params: {\n category: \"discover\"\n }\n },\n name: _setup.APPS_SECTION_ENUM.discover\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(_setup.NcIconSvgWrapper, {\n attrs: {\n path: _setup.APPSTORE_CATEGORY_ICONS.discover\n }\n })];\n },\n proxy: true\n }])\n }), _vm._v(\" \"), _c(_setup.NcAppNavigationItem, {\n attrs: {\n id: \"app-category-installed\",\n to: {\n name: \"apps-category\",\n params: {\n category: \"installed\"\n }\n },\n name: _setup.APPS_SECTION_ENUM.installed\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(_setup.NcIconSvgWrapper, {\n attrs: {\n path: _setup.APPSTORE_CATEGORY_ICONS.installed\n }\n })];\n },\n proxy: true\n }])\n }), _vm._v(\" \"), _c(_setup.NcAppNavigationItem, {\n attrs: {\n id: \"app-category-enabled\",\n to: {\n name: \"apps-category\",\n params: {\n category: \"enabled\"\n }\n },\n name: _setup.APPS_SECTION_ENUM.enabled\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(_setup.NcIconSvgWrapper, {\n attrs: {\n path: _setup.APPSTORE_CATEGORY_ICONS.enabled\n }\n })];\n },\n proxy: true\n }])\n }), _vm._v(\" \"), _c(_setup.NcAppNavigationItem, {\n attrs: {\n id: \"app-category-disabled\",\n to: {\n name: \"apps-category\",\n params: {\n category: \"disabled\"\n }\n },\n name: _setup.APPS_SECTION_ENUM.disabled\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(_setup.NcIconSvgWrapper, {\n attrs: {\n path: _setup.APPSTORE_CATEGORY_ICONS.disabled\n }\n })];\n },\n proxy: true\n }])\n }), _vm._v(\" \"), _setup.updateCount > 0 ? _c(_setup.NcAppNavigationItem, {\n attrs: {\n id: \"app-category-updates\",\n to: {\n name: \"apps-category\",\n params: {\n category: \"updates\"\n }\n },\n name: _setup.APPS_SECTION_ENUM.updates\n },\n scopedSlots: _vm._u([{\n key: \"counter\",\n fn: function () {\n return [_c(_setup.NcCounterBubble, [_vm._v(_vm._s(_setup.updateCount))])];\n },\n proxy: true\n }, {\n key: \"icon\",\n fn: function () {\n return [_c(_setup.NcIconSvgWrapper, {\n attrs: {\n path: _setup.APPSTORE_CATEGORY_ICONS.updates\n }\n })];\n },\n proxy: true\n }], null, false, 2824895104)\n }) : _vm._e(), _vm._v(\" \"), _c(_setup.NcAppNavigationItem, {\n attrs: {\n id: \"app-category-your-bundles\",\n to: {\n name: \"apps-category\",\n params: {\n category: \"app-bundles\"\n }\n },\n name: _setup.APPS_SECTION_ENUM[\"app-bundles\"]\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(_setup.NcIconSvgWrapper, {\n attrs: {\n path: _setup.APPSTORE_CATEGORY_ICONS.bundles\n }\n })];\n },\n proxy: true\n }])\n }), _vm._v(\" \"), _c(_setup.NcAppNavigationSpacer), _vm._v(\" \"), _setup.appstoreEnabled && _setup.categoriesLoading ? _c(\"li\", {\n staticClass: \"categories--loading\"\n }, [_c(_setup.NcLoadingIcon, {\n attrs: {\n size: 20,\n \"aria-label\": _setup.t(\"settings\", \"Loading categories\")\n }\n })], 1) : _setup.appstoreEnabled && !_setup.categoriesLoading ? [_setup.isSubscribed ? _c(_setup.NcAppNavigationItem, {\n attrs: {\n id: \"app-category-supported\",\n to: {\n name: \"apps-category\",\n params: {\n category: \"supported\"\n }\n },\n name: _setup.APPS_SECTION_ENUM.supported\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(_setup.NcIconSvgWrapper, {\n attrs: {\n path: _setup.APPSTORE_CATEGORY_ICONS.supported\n }\n })];\n },\n proxy: true\n }], null, false, 613663011)\n }) : _vm._e(), _vm._v(\" \"), _c(_setup.NcAppNavigationItem, {\n attrs: {\n id: \"app-category-featured\",\n to: {\n name: \"apps-category\",\n params: {\n category: \"featured\"\n }\n },\n name: _setup.APPS_SECTION_ENUM.featured\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(_setup.NcIconSvgWrapper, {\n attrs: {\n path: _setup.APPSTORE_CATEGORY_ICONS.featured\n }\n })];\n },\n proxy: true\n }])\n }), _vm._v(\" \"), _vm._l(_setup.categories, function (category) {\n return _c(_setup.NcAppNavigationItem, {\n key: category.id,\n attrs: {\n id: \"app-category-\".concat(category.id),\n name: category.displayName,\n to: {\n name: \"apps-category\",\n params: {\n category: category.id\n }\n }\n },\n scopedSlots: _vm._u([{\n key: \"icon\",\n fn: function () {\n return [_c(_setup.NcIconSvgWrapper, {\n attrs: {\n path: category.icon\n }\n })];\n },\n proxy: true\n }], null, true)\n });\n })] : _vm._e(), _vm._v(\" \"), _c(_setup.NcAppNavigationItem, {\n attrs: {\n id: \"app-developer-docs\",\n name: _setup.t(\"settings\", \"Developer documentation ↗\"),\n href: _setup.developerDocsUrl\n }\n })];\n },\n proxy: true\n }])\n });\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\nexport { render, staticRenderFns };","var render = function render() {\n var _vm = this,\n _c = _vm._self._c,\n _setup = _vm._self._setupProxy;\n return _setup.showSidebar ? _c(_setup.NcAppSidebar, {\n staticClass: \"app-sidebar\",\n class: {\n \"app-sidebar--with-screenshot\": _setup.hasScreenshot\n },\n attrs: {\n active: _setup.activeTab,\n background: _setup.hasScreenshot ? _setup.app.screenshot : undefined,\n compact: !_setup.hasScreenshot,\n name: _setup.app.name,\n title: _setup.app.name,\n subname: _setup.licenseText,\n subtitle: _setup.licenseText\n },\n on: {\n \"update:active\": function ($event) {\n _setup.activeTab = $event;\n },\n close: _setup.hideAppDetails\n },\n scopedSlots: _vm._u([!_setup.hasScreenshot ? {\n key: \"header\",\n fn: function () {\n var _setup$appIcon;\n return [_c(_setup.NcIconSvgWrapper, {\n staticClass: \"app-sidebar__fallback-icon\",\n attrs: {\n svg: (_setup$appIcon = _setup.appIcon) !== null && _setup$appIcon !== void 0 ? _setup$appIcon : \"\",\n size: 64\n }\n })];\n },\n proxy: true\n } : null, {\n key: \"description\",\n fn: function () {\n return [_c(\"div\", {\n staticClass: \"app-sidebar__badges\"\n }, [_c(_setup.AppLevelBadge, {\n attrs: {\n level: _setup.app.level\n }\n }), _vm._v(\" \"), _setup.hasRating ? _c(_setup.AppScore, {\n attrs: {\n score: _setup.rating\n }\n }) : _vm._e()], 1)];\n },\n proxy: true\n }], null, true)\n }, [_vm._v(\" \"), _vm._v(\" \"), _c(_setup.AppDescriptionTab, {\n attrs: {\n app: _setup.app\n }\n }), _vm._v(\" \"), _c(_setup.AppDetailsTab, {\n attrs: {\n app: _setup.app\n }\n }), _vm._v(\" \"), _c(_setup.AppReleasesTab, {\n attrs: {\n app: _setup.app\n }\n })], 1) : _vm._e();\n};\nvar staticRenderFns = [];\nrender._withStripped = true;\nexport { render, staticRenderFns };","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.apps-list[data-v-6d1e92a4] {\n display: flex;\n flex-wrap: wrap;\n align-content: flex-start;\n}\n.apps-list--move[data-v-6d1e92a4] {\n transition: transform 1s;\n}\n.apps-list #app-list-update-all[data-v-6d1e92a4] {\n margin-left: 10px;\n}\n.apps-list__toolbar[data-v-6d1e92a4] {\n height: 60px;\n padding: 8px;\n padding-left: 60px;\n width: 100%;\n background-color: var(--color-main-background);\n position: sticky;\n top: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n}\n.apps-list--list-view[data-v-6d1e92a4] {\n margin-bottom: 100px;\n position: relative;\n}\n.apps-list__list-container[data-v-6d1e92a4] {\n width: 100%;\n}\n.apps-list__store-container[data-v-6d1e92a4] {\n display: flex;\n flex-wrap: wrap;\n}\n.apps-list__bundle-heading[data-v-6d1e92a4] {\n display: flex;\n align-items: center;\n margin: 20px 10px 20px 0;\n}\n.apps-list__bundle-header[data-v-6d1e92a4] {\n margin: 0 10px 0 50px;\n font-weight: bold;\n font-size: 20px;\n line-height: 30px;\n color: var(--color-text-light);\n}\n#apps-list-search .app-item h2[data-v-6d1e92a4] {\n margin-bottom: 0;\n}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n.app-item[data-v-429da85a] {\n position: relative;\n}\n.app-item[data-v-429da85a]:hover {\n background-color: var(--color-background-dark);\n}\n.app-item--list-view[data-v-429da85a] {\n --app-item-padding: calc(var(--default-grid-baseline) * 2);\n --app-item-height: calc(var(--default-clickable-area) + var(--app-item-padding) * 2);\n /* hide app version and level on narrower screens */\n /* Hide actions on a small screen. Click on app opens fill-screen sidebar with the buttons */\n}\n.app-item--list-view.app-item--selected[data-v-429da85a] {\n background-color: var(--color-background-dark);\n}\n.app-item--list-view > *[data-v-429da85a] {\n vertical-align: middle;\n border-bottom: 1px solid var(--color-border);\n padding: var(--app-item-padding);\n height: var(--app-item-height);\n}\n.app-item--list-view .app-image[data-v-429da85a] {\n width: var(--default-clickable-area);\n height: auto;\n text-align: right;\n}\n.app-item--list-view .app-image-icon svg[data-v-429da85a],\n.app-item--list-view .app-image-icon .icon-settings-dark[data-v-429da85a] {\n margin-top: 5px;\n width: 20px;\n height: 20px;\n opacity: 0.5;\n background-size: cover;\n display: inline-block;\n}\n.app-item--list-view .app-name[data-v-429da85a] {\n padding: 0 var(--app-item-padding);\n}\n.app-item--list-view .app-name--link[data-v-429da85a] {\n height: var(--app-item-height);\n display: flex;\n align-items: center;\n}\n.app-item--list-view .app-name--link[data-v-429da85a]::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: var(--app-item-height);\n}\n.app-item--list-view .app-actions[data-v-429da85a] {\n display: flex;\n gap: var(--app-item-padding);\n flex-wrap: wrap;\n justify-content: end;\n}\n.app-item--list-view .app-actions .icon-loading-small[data-v-429da85a] {\n display: inline-block;\n top: 4px;\n margin-right: 10px;\n}\n@media only screen and (max-width: 900px) {\n.app-item--list-view .app-version[data-v-429da85a],\n .app-item--list-view .app-level[data-v-429da85a] {\n display: none;\n}\n}\n@media only screen and (max-width: 512px) {\n.app-item--list-view .app-actions[data-v-429da85a] {\n display: none;\n}\n}\n.app-item--store-view[data-v-429da85a] {\n padding: 30px;\n}\n.app-item--store-view .app-image-icon .icon-settings-dark[data-v-429da85a] {\n width: 100%;\n height: 150px;\n background-size: 45px;\n opacity: 0.5;\n}\n.app-item--store-view .app-image-icon svg[data-v-429da85a] {\n position: absolute;\n bottom: 43px;\n /* position halfway vertically */\n width: 64px;\n height: 64px;\n opacity: 0.1;\n}\n.app-item--store-view .app-name[data-v-429da85a] {\n margin: 5px 0;\n}\n.app-item--store-view .app-name--link[data-v-429da85a]::after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n.app-item--store-view .app-actions[data-v-429da85a] {\n margin: 10px 0;\n}\n@media only screen and (min-width: 1601px) {\n.app-item--store-view[data-v-429da85a] {\n width: 25%;\n}\n.app-item--store-view.app-item--with-sidebar[data-v-429da85a] {\n width: 33%;\n}\n}\n@media only screen and (max-width: 1600px) {\n.app-item--store-view[data-v-429da85a] {\n width: 25%;\n}\n.app-item--store-view.app-item--with-sidebar[data-v-429da85a] {\n width: 33%;\n}\n}\n@media only screen and (max-width: 1400px) {\n.app-item--store-view[data-v-429da85a] {\n width: 33%;\n}\n.app-item--store-view.app-item--with-sidebar[data-v-429da85a] {\n width: 50%;\n}\n}\n@media only screen and (max-width: 900px) {\n.app-item--store-view[data-v-429da85a] {\n width: 50%;\n}\n.app-item--store-view.app-item--with-sidebar[data-v-429da85a] {\n width: 100%;\n}\n}\n@media only screen and (max-width: 1024px) {\n.app-item--store-view[data-v-429da85a] {\n width: 50%;\n}\n}\n@media only screen and (max-width: 480px) {\n.app-item--store-view[data-v-429da85a] {\n width: 100%;\n}\n}\n.app-icon[data-v-429da85a] {\n filter: var(--background-invert-if-bright);\n}\n.app-image[data-v-429da85a] {\n position: relative;\n height: 150px;\n opacity: 1;\n overflow: hidden;\n}\n.app-image img[data-v-429da85a] {\n width: 100%;\n}\n.app-version[data-v-429da85a] {\n color: var(--color-text-maxcontrast);\n}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-level-badge[data-v-dbef4182] {\n color: var(--color-text-maxcontrast);\n background-color: transparent;\n border: 1px solid var(--color-text-maxcontrast);\n border-radius: var(--border-radius);\n display: flex;\n flex-direction: row;\n gap: 6px;\n padding: 3px 6px;\n width: fit-content;\n}\n.app-level-badge--supported[data-v-dbef4182] {\n border-color: var(--color-success);\n color: var(--color-success);\n}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-discover[data-v-2c2ea092] {\n max-width: 1008px; /* 900px + 2x 54px padding for the carousel controls */\n margin-inline: auto;\n padding-inline: 54px;\n /* Padding required to make last element not bound to the bottom */\n padding-block-end: var(--default-clickable-area, 44px);\n display: flex;\n flex-direction: column;\n gap: var(--default-clickable-area, 44px);\n}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-description[data-v-645c86d4] {\n padding: 12px;\n}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-details[data-v-564443e0] {\n padding: 20px;\n}\n.app-details__actions-manage[data-v-564443e0] {\n display: flex;\n}\n.app-details__actions-manage input[data-v-564443e0] {\n flex: 0 1 auto;\n min-width: 0;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n.app-details__authors[data-v-564443e0] {\n color: var(--color-text-maxcontrast);\n}\n.app-details__section[data-v-564443e0] {\n margin-top: 15px;\n}\n.app-details__section h4[data-v-564443e0] {\n font-size: 16px;\n font-weight: bold;\n margin-block-end: 5px;\n}\n.app-details__interact[data-v-564443e0] {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n}\n.app-details__documentation a[data-v-564443e0] {\n text-decoration: underline;\n}\n.app-details__documentation li[data-v-564443e0] {\n padding-inline-start: 20px;\n}\n.app-details__documentation li[data-v-564443e0]::before {\n width: 5px;\n height: 5px;\n border-radius: 100%;\n background-color: var(--color-main-text);\n content: \"\";\n float: inline-start;\n margin-inline-start: -13px;\n position: relative;\n top: 10px;\n}\n.force[data-v-564443e0] {\n color: var(--color-error);\n border-color: var(--color-error);\n background: var(--color-main-background);\n}\n.force[data-v-564443e0]:hover,\n.force[data-v-564443e0]:active {\n color: var(--color-main-background);\n border-color: var(--color-error) !important;\n background: var(--color-error);\n}\n.missing-dependencies[data-v-564443e0] {\n list-style: initial;\n list-style-type: initial;\n list-style-position: inside;\n}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-sidebar-tabs__release h2[data-v-2c452a5c] {\n border-bottom: 1px solid var(--color-border);\n font-size: 24px;\n}\n.app-sidebar-tabs__release-text[data-v-2c452a5c] h3 {\n font-size: 20px;\n}\n.app-sidebar-tabs__release-text[data-v-2c452a5c] h4 {\n font-size: 17px;\n}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.settings-markdown[data-v-11f4a1b0] h1,\n.settings-markdown[data-v-11f4a1b0] h2,\n.settings-markdown[data-v-11f4a1b0] h3,\n.settings-markdown[data-v-11f4a1b0] h4,\n.settings-markdown[data-v-11f4a1b0] h5,\n.settings-markdown[data-v-11f4a1b0] h6 {\n font-weight: 600;\n line-height: 120%;\n margin-top: 24px;\n margin-bottom: 12px;\n color: var(--color-main-text);\n}\n.settings-markdown[data-v-11f4a1b0] h1 {\n font-size: 36px;\n margin-top: 48px;\n}\n.settings-markdown[data-v-11f4a1b0] h2 {\n font-size: 28px;\n margin-top: 48px;\n}\n.settings-markdown[data-v-11f4a1b0] h3 {\n font-size: 24px;\n}\n.settings-markdown[data-v-11f4a1b0] h4 {\n font-size: 21px;\n}\n.settings-markdown[data-v-11f4a1b0] h5 {\n font-size: 17px;\n}\n.settings-markdown[data-v-11f4a1b0] h6 {\n font-size: var(--default-font-size);\n}\n.settings-markdown[data-v-11f4a1b0] pre {\n white-space: pre;\n overflow-x: auto;\n background-color: var(--color-background-dark);\n border-radius: var(--border-radius);\n padding: 1em 1.3em;\n margin-bottom: 1em;\n}\n.settings-markdown[data-v-11f4a1b0] p code {\n background-color: var(--color-background-dark);\n border-radius: var(--border-radius);\n padding: 0.1em 0.3em;\n}\n.settings-markdown[data-v-11f4a1b0] li {\n position: relative;\n}\n.settings-markdown[data-v-11f4a1b0] ul, .settings-markdown[data-v-11f4a1b0] ol {\n padding-left: 10px;\n margin-left: 10px;\n}\n.settings-markdown[data-v-11f4a1b0] ul li {\n list-style-type: disc;\n}\n.settings-markdown[data-v-11f4a1b0] ul > li > ul > li {\n list-style-type: circle;\n}\n.settings-markdown[data-v-11f4a1b0] ul > li > ul > li ul li {\n list-style-type: square;\n}\n.settings-markdown[data-v-11f4a1b0] blockquote {\n padding-left: 1em;\n border-left: 4px solid var(--color-primary-element);\n color: var(--color-text-maxcontrast);\n margin-left: 0;\n margin-right: 0;\n}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-sidebar--with-screenshot[data-v-a38ee2fa] .app-sidebar-header__figure {\n background-size: cover;\n}\n.app-sidebar__fallback-icon[data-v-a38ee2fa] {\n width: 100%;\n height: 100%;\n}\n.app-sidebar__badges[data-v-a38ee2fa] {\n display: flex;\n flex-direction: row;\n gap: 12px;\n}\n.app-sidebar__version[data-v-a38ee2fa] {\n color: var(--color-text-maxcontrast);\n}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.app-score__wrapper[data-v-0ecce4fc] {\n\tdisplay: inline-flex;\n\tcolor: var(--color-favorite, #a08b00);\n> *[data-v-0ecce4fc] {\n\t\tvertical-align: text-bottom;\n}\n}\n`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.empty-content__loading[data-v-6f6912c9] {\n\theight: 100%;\n}\n.app-settings-content__label[data-v-6f6912c9] {\n\tmargin-block-start: var(--app-navigation-padding);\n\tmargin-inline-start: calc(var(--default-clickable-area) + var(--app-navigation-padding) * 2);\n\tmin-height: var(--default-clickable-area);\n\tline-height: var(--default-clickable-area);\n\tvertical-align: center;\n}\n`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n/* The categories-loading indicator */\n.categories--loading[data-v-0208f5bd] {\n\tflex: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=style&index=0&id=6d1e92a4&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=style&index=0&id=6d1e92a4&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=429da85a&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=429da85a&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=style&index=0&id=dbef4182&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=style&index=0&id=dbef4182&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=style&index=0&id=2c2ea092&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=style&index=0&id=2c2ea092&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=style&index=0&id=645c86d4&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=style&index=0&id=645c86d4&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=style&index=0&id=564443e0&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=style&index=0&id=564443e0&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=style&index=0&id=2c452a5c&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=style&index=0&id=2c452a5c&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=11f4a1b0&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=11f4a1b0&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=style&index=0&id=a38ee2fa&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=style&index=0&id=a38ee2fa&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=style&index=0&id=0ecce4fc&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=style&index=0&id=0ecce4fc&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=style&index=0&id=6f6912c9&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=style&index=0&id=6f6912c9&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=style&index=0&id=0208f5bd&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=style&index=0&id=0208f5bd&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppList.vue?vue&type=template&id=6d1e92a4&scoped=true\"\nimport script from \"./AppList.vue?vue&type=script&lang=js\"\nexport * from \"./AppList.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppList.vue?vue&type=style&index=0&id=6d1e92a4&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d1e92a4\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/git/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('6d1e92a4')) {\n api.createRecord('6d1e92a4', component.options)\n } else {\n api.reload('6d1e92a4', component.options)\n }\n module.hot.accept(\"./AppList.vue?vue&type=template&id=6d1e92a4&scoped=true\", function () {\n api.rerender('6d1e92a4', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/AppList.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./AppItem.vue?vue&type=template&id=429da85a&scoped=true\"\nimport script from \"./AppItem.vue?vue&type=script&lang=js\"\nexport * from \"./AppItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppItem.vue?vue&type=style&index=0&id=429da85a&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"429da85a\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/git/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('429da85a')) {\n api.createRecord('429da85a', component.options)\n } else {\n api.reload('429da85a', component.options)\n }\n module.hot.accept(\"./AppItem.vue?vue&type=template&id=429da85a&scoped=true\", function () {\n api.rerender('429da85a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/AppList/AppItem.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./AppLevelBadge.vue?vue&type=template&id=dbef4182&scoped=true\"\nimport script from \"./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppLevelBadge.vue?vue&type=style&index=0&id=dbef4182&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dbef4182\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/git/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('dbef4182')) {\n api.createRecord('dbef4182', component.options)\n } else {\n api.reload('dbef4182', component.options)\n }\n module.hot.accept(\"./AppLevelBadge.vue?vue&type=template&id=dbef4182&scoped=true\", function () {\n api.rerender('dbef4182', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/AppList/AppLevelBadge.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./AppScore.vue?vue&type=template&id=0ecce4fc&scoped=true\"\nimport script from \"./AppScore.vue?vue&type=script&lang=ts\"\nexport * from \"./AppScore.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppScore.vue?vue&type=style&index=0&id=0ecce4fc&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0ecce4fc\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/git/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('0ecce4fc')) {\n api.createRecord('0ecce4fc', component.options)\n } else {\n api.reload('0ecce4fc', component.options)\n }\n module.hot.accept(\"./AppScore.vue?vue&type=template&id=0ecce4fc&scoped=true\", function () {\n api.rerender('0ecce4fc', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/AppList/AppScore.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./AppStoreDiscoverSection.vue?vue&type=template&id=2c2ea092&scoped=true\"\nimport script from \"./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStoreDiscoverSection.vue?vue&type=style&index=0&id=2c2ea092&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2c2ea092\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/git/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('2c2ea092')) {\n api.createRecord('2c2ea092', component.options)\n } else {\n api.reload('2c2ea092', component.options)\n }\n module.hot.accept(\"./AppStoreDiscoverSection.vue?vue&type=template&id=2c2ea092&scoped=true\", function () {\n api.rerender('2c2ea092', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./AppDescriptionTab.vue?vue&type=template&id=645c86d4&scoped=true\"\nimport script from \"./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppDescriptionTab.vue?vue&type=style&index=0&id=645c86d4&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"645c86d4\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/git/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('645c86d4')) {\n api.createRecord('645c86d4', component.options)\n } else {\n api.reload('645c86d4', component.options)\n }\n module.hot.accept(\"./AppDescriptionTab.vue?vue&type=template&id=645c86d4&scoped=true\", function () {\n api.rerender('645c86d4', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./AppDetailsTab.vue?vue&type=template&id=564443e0&scoped=true\"\nimport script from \"./AppDetailsTab.vue?vue&type=script&lang=js\"\nexport * from \"./AppDetailsTab.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppDetailsTab.vue?vue&type=style&index=0&id=564443e0&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"564443e0\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/git/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('564443e0')) {\n api.createRecord('564443e0', component.options)\n } else {\n api.reload('564443e0', component.options)\n }\n module.hot.accept(\"./AppDetailsTab.vue?vue&type=template&id=564443e0&scoped=true\", function () {\n api.rerender('564443e0', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./AppReleasesTab.vue?vue&type=template&id=2c452a5c&scoped=true\"\nimport script from \"./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppReleasesTab.vue?vue&type=style&index=0&id=2c452a5c&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2c452a5c\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/git/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('2c452a5c')) {\n api.createRecord('2c452a5c', component.options)\n } else {\n api.reload('2c452a5c', component.options)\n }\n module.hot.accept(\"./AppReleasesTab.vue?vue&type=template&id=2c452a5c&scoped=true\", function () {\n api.rerender('2c452a5c', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./Markdown.vue?vue&type=template&id=11f4a1b0&scoped=true\"\nimport script from \"./Markdown.vue?vue&type=script&lang=js\"\nexport * from \"./Markdown.vue?vue&type=script&lang=js\"\nimport style0 from \"./Markdown.vue?vue&type=style&index=0&id=11f4a1b0&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"11f4a1b0\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/git/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('11f4a1b0')) {\n api.createRecord('11f4a1b0', component.options)\n } else {\n api.reload('11f4a1b0', component.options)\n }\n module.hot.accept(\"./Markdown.vue?vue&type=template&id=11f4a1b0&scoped=true\", function () {\n api.rerender('11f4a1b0', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/Markdown.vue\"\nexport default component.exports","var render, staticRenderFns\nimport script from \"./SvgFilterMixin.vue?vue&type=script&lang=js\"\nexport * from \"./SvgFilterMixin.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/git/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('9219d434')) {\n api.createRecord('9219d434', component.options)\n } else {\n api.reload('9219d434', component.options)\n }\n \n }\n}\ncomponent.options.__file = \"apps/settings/src/components/SvgFilterMixin.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./AppStore.vue?vue&type=template&id=6f6912c9&scoped=true\"\nimport script from \"./AppStore.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStore.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStore.vue?vue&type=style&index=0&id=6f6912c9&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6f6912c9\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/git/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('6f6912c9')) {\n api.createRecord('6f6912c9', component.options)\n } else {\n api.reload('6f6912c9', component.options)\n }\n module.hot.accept(\"./AppStore.vue?vue&type=template&id=6f6912c9&scoped=true\", function () {\n api.rerender('6f6912c9', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/views/AppStore.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./AppStoreNavigation.vue?vue&type=template&id=0208f5bd&scoped=true\"\nimport script from \"./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStoreNavigation.vue?vue&type=style&index=0&id=0208f5bd&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0208f5bd\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/git/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('0208f5bd')) {\n api.createRecord('0208f5bd', component.options)\n } else {\n api.reload('0208f5bd', component.options)\n }\n module.hot.accept(\"./AppStoreNavigation.vue?vue&type=template&id=0208f5bd&scoped=true\", function () {\n api.rerender('0208f5bd', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/views/AppStoreNavigation.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./AppStoreSidebar.vue?vue&type=template&id=a38ee2fa&scoped=true\"\nimport script from \"./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStoreSidebar.vue?vue&type=style&index=0&id=a38ee2fa&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a38ee2fa\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/git/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('a38ee2fa')) {\n api.createRecord('a38ee2fa', component.options)\n } else {\n api.reload('a38ee2fa', component.options)\n }\n module.hot.accept(\"./AppStoreSidebar.vue?vue&type=template&id=a38ee2fa&scoped=true\", function () {\n api.rerender('a38ee2fa', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/views/AppStoreSidebar.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=ts\"","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=script&setup=true&lang=ts\"","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js\"","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js\"","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=script&lang=js\"","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js\"","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js\"","export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=template&id=6d1e92a4&scoped=true\"","export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=template&id=429da85a&scoped=true\"","export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=template&id=dbef4182&scoped=true\"","export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=template&id=0ecce4fc&scoped=true\"","export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=template&id=2c2ea092&scoped=true\"","export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=template&id=645c86d4&scoped=true\"","export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=template&id=564443e0&scoped=true\"","export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=template&id=2c452a5c&scoped=true\"","export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=template&id=11f4a1b0&scoped=true\"","export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=template&id=6f6912c9&scoped=true\"","export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=template&id=0208f5bd&scoped=true\"","export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=template&id=a38ee2fa&scoped=true\"","export * from \"-!../../../../node_modules/style-loader/dist/cjs.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=style&index=0&id=6d1e92a4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/style-loader/dist/cjs.js!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=429da85a&scoped=true&lang=scss\"","export * from \"-!../../../../../node_modules/style-loader/dist/cjs.js!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=style&index=0&id=dbef4182&scoped=true&lang=scss\"","export * from \"-!../../../../../node_modules/style-loader/dist/cjs.js!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=style&index=0&id=2c2ea092&scoped=true&lang=scss\"","export * from \"-!../../../../../node_modules/style-loader/dist/cjs.js!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=style&index=0&id=645c86d4&scoped=true&lang=scss\"","export * from \"-!../../../../../node_modules/style-loader/dist/cjs.js!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=style&index=0&id=564443e0&scoped=true&lang=scss\"","export * from \"-!../../../../../node_modules/style-loader/dist/cjs.js!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=style&index=0&id=2c452a5c&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/style-loader/dist/cjs.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=11f4a1b0&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/style-loader/dist/cjs.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=style&index=0&id=a38ee2fa&scoped=true&lang=scss\"","export * from \"-!../../../../../node_modules/style-loader/dist/cjs.js!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=style&index=0&id=0ecce4fc&scoped=true&lang=css\"","export * from \"-!../../../../node_modules/style-loader/dist/cjs.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=style&index=0&id=6f6912c9&scoped=true&lang=css\"","export * from \"-!../../../../node_modules/style-loader/dist/cjs.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=style&index=0&id=0208f5bd&scoped=true&lang=css\"","import { N as f } from \"../chunks/NcAppSidebar-CqER6-dl.mjs\";\nexport {\n f as default\n};\n","import Queue from 'yocto-queue';\nexport default function pLimit(concurrency) {\n if (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n throw new TypeError('Expected `concurrency` to be a number from 1 and up');\n }\n const queue = new Queue();\n let activeCount = 0;\n const next = () => {\n activeCount--;\n if (queue.size > 0) {\n queue.dequeue()();\n }\n };\n const run = async (fn, resolve, args) => {\n activeCount++;\n const result = (async () => fn(...args))();\n resolve(result);\n try {\n await result;\n } catch {}\n next();\n };\n const enqueue = (fn, resolve, args) => {\n queue.enqueue(run.bind(undefined, fn, resolve, args));\n (async () => {\n // This function needs to wait until the next microtask before comparing\n // `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n // when the run function is dequeued and called. The comparison in the if-statement\n // needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n await Promise.resolve();\n if (activeCount < concurrency && queue.size > 0) {\n queue.dequeue()();\n }\n })();\n };\n const generator = function (fn) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return new Promise(resolve => {\n enqueue(fn, resolve, args);\n });\n };\n Object.defineProperties(generator, {\n activeCount: {\n get: () => activeCount\n },\n pendingCount: {\n get: () => queue.size\n },\n clearQueue: {\n value: () => {\n queue.clear();\n }\n }\n });\n return generator;\n}","let _Symbol$iterator;\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\nfunction _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\nfunction _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } descriptor.value = value; } }\nfunction _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError(\"attempted to \" + action + \" private field on non-instance\"); } return privateMap.get(receiver); }\nfunction _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : String(i); }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n constructor(value) {\n _defineProperty(this, \"value\", void 0);\n _defineProperty(this, \"next\", void 0);\n this.value = value;\n }\n}\nvar _head = /*#__PURE__*/new WeakMap();\nvar _tail = /*#__PURE__*/new WeakMap();\nvar _size = /*#__PURE__*/new WeakMap();\n_Symbol$iterator = Symbol.iterator;\nexport default class Queue {\n constructor() {\n _classPrivateFieldInitSpec(this, _head, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _tail, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _size, {\n writable: true,\n value: void 0\n });\n this.clear();\n }\n enqueue(value) {\n var _this$size, _this$size2;\n const node = new Node(value);\n if (_classPrivateFieldGet(this, _head)) {\n _classPrivateFieldGet(this, _tail).next = node;\n _classPrivateFieldSet(this, _tail, node);\n } else {\n _classPrivateFieldSet(this, _head, node);\n _classPrivateFieldSet(this, _tail, node);\n }\n _classPrivateFieldSet(this, _size, (_this$size = _classPrivateFieldGet(this, _size), _this$size2 = _this$size++, _this$size)), _this$size2;\n }\n dequeue() {\n var _this$size3, _this$size4;\n const current = _classPrivateFieldGet(this, _head);\n if (!current) {\n return;\n }\n _classPrivateFieldSet(this, _head, _classPrivateFieldGet(this, _head).next);\n _classPrivateFieldSet(this, _size, (_this$size3 = _classPrivateFieldGet(this, _size), _this$size4 = _this$size3--, _this$size3)), _this$size4;\n return current.value;\n }\n clear() {\n _classPrivateFieldSet(this, _head, undefined);\n _classPrivateFieldSet(this, _tail, undefined);\n _classPrivateFieldSet(this, _size, 0);\n }\n get size() {\n return _classPrivateFieldGet(this, _size);\n }\n *[_Symbol$iterator]() {\n let current = _classPrivateFieldGet(this, _head);\n while (current) {\n yield current.value;\n current = current.next;\n }\n }\n}","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\nimport { getCurrentInstance, effectScope, shallowReactive, onUnmounted, computed, unref } from 'vue';\n\n// dev only warn if no current instance\n\nfunction throwNoCurrentInstance (method) {\n if (!getCurrentInstance()) {\n throw new Error(\n (\"[vue-router]: Missing current instance. \" + method + \"() must be called inside <script setup> or setup().\")\n )\n }\n}\n\nfunction useRouter () {\n if (process.env.NODE_ENV !== 'production') {\n throwNoCurrentInstance('useRouter');\n }\n\n return getCurrentInstance().proxy.$root.$router\n}\n\nfunction useRoute () {\n if (process.env.NODE_ENV !== 'production') {\n throwNoCurrentInstance('useRoute');\n }\n\n var root = getCurrentInstance().proxy.$root;\n if (!root._$route) {\n var route = effectScope(true).run(function () { return shallowReactive(Object.assign({}, root.$router.currentRoute)); }\n );\n root._$route = route;\n\n root.$router.afterEach(function (to) {\n Object.assign(route, to);\n });\n }\n\n return root._$route\n}\n\nfunction onBeforeRouteUpdate (guard) {\n if (process.env.NODE_ENV !== 'production') {\n throwNoCurrentInstance('onBeforeRouteUpdate');\n }\n\n return useFilteredGuard(guard, isUpdateNavigation)\n}\nfunction isUpdateNavigation (to, from, depth) {\n var toMatched = to.matched;\n var fromMatched = from.matched;\n return (\n toMatched.length >= depth &&\n toMatched\n .slice(0, depth + 1)\n .every(function (record, i) { return record === fromMatched[i]; })\n )\n}\n\nfunction isLeaveNavigation (to, from, depth) {\n var toMatched = to.matched;\n var fromMatched = from.matched;\n return toMatched.length < depth || toMatched[depth] !== fromMatched[depth]\n}\n\nfunction onBeforeRouteLeave (guard) {\n if (process.env.NODE_ENV !== 'production') {\n throwNoCurrentInstance('onBeforeRouteLeave');\n }\n\n return useFilteredGuard(guard, isLeaveNavigation)\n}\n\nvar noop = function () {};\nfunction useFilteredGuard (guard, fn) {\n var instance = getCurrentInstance();\n var router = useRouter();\n\n var target = instance.proxy;\n // find the nearest RouterView to know the depth\n while (\n target &&\n target.$vnode &&\n target.$vnode.data &&\n target.$vnode.data.routerViewDepth == null\n ) {\n target = target.$parent;\n }\n\n var depth =\n target && target.$vnode && target.$vnode.data\n ? target.$vnode.data.routerViewDepth\n : null;\n\n if (depth != null) {\n var removeGuard = router.beforeEach(function (to, from, next) {\n return fn(to, from, depth) ? guard(to, from, next) : next()\n });\n\n onUnmounted(removeGuard);\n return removeGuard\n }\n\n return noop\n}\n\n/* */\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction includesParams (outer, inner) {\n var loop = function ( key ) {\n var innerValue = inner[key];\n var outerValue = outer[key];\n if (typeof innerValue === 'string') {\n if (innerValue !== outerValue) { return { v: false } }\n } else {\n if (\n !Array.isArray(outerValue) ||\n outerValue.length !== innerValue.length ||\n innerValue.some(function (value, i) { return value !== outerValue[i]; })\n ) {\n return { v: false }\n }\n }\n };\n\n for (var key in inner) {\n var returned = loop( key );\n\n if ( returned ) return returned.v;\n }\n\n return true\n}\n\n// helpers from vue router 4\n\nfunction isSameRouteLocationParamsValue (a, b) {\n return Array.isArray(a)\n ? isEquivalentArray(a, b)\n : Array.isArray(b)\n ? isEquivalentArray(b, a)\n : a === b\n}\n\nfunction isEquivalentArray (a, b) {\n return Array.isArray(b)\n ? a.length === b.length && a.every(function (value, i) { return value === b[i]; })\n : a.length === 1 && a[0] === b\n}\n\nfunction isSameRouteLocationParams (a, b) {\n if (Object.keys(a).length !== Object.keys(b).length) { return false }\n\n for (var key in a) {\n if (!isSameRouteLocationParamsValue(a[key], b[key])) { return false }\n }\n\n return true\n}\n\nfunction useLink (props) {\n if (process.env.NODE_ENV !== 'production') {\n throwNoCurrentInstance('useLink');\n }\n\n var router = useRouter();\n var currentRoute = useRoute();\n\n var resolvedRoute = computed(function () { return router.resolve(unref(props.to), currentRoute); });\n\n var activeRecordIndex = computed(function () {\n var route = resolvedRoute.value.route;\n var matched = route.matched;\n var length = matched.length;\n var routeMatched = matched[length - 1];\n var currentMatched = currentRoute.matched;\n if (!routeMatched || !currentMatched.length) { return -1 }\n var index = currentMatched.indexOf(routeMatched);\n if (index > -1) { return index }\n // possible parent record\n var parentRecord = currentMatched[currentMatched.length - 2];\n\n return (\n // we are dealing with nested routes\n length > 1 &&\n // if the parent and matched route have the same path, this link is\n // referring to the empty child. Or we currently are on a different\n // child of the same parent\n parentRecord && parentRecord === routeMatched.parent\n )\n });\n\n var isActive = computed(\n function () { return activeRecordIndex.value > -1 &&\n includesParams(currentRoute.params, resolvedRoute.value.route.params); }\n );\n var isExactActive = computed(\n function () { return activeRecordIndex.value > -1 &&\n activeRecordIndex.value === currentRoute.matched.length - 1 &&\n isSameRouteLocationParams(currentRoute.params, resolvedRoute.value.route.params); }\n );\n\n var navigate = function (e) {\n var href = resolvedRoute.value.route;\n if (guardEvent(e)) {\n return props.replace\n ? router.replace(href)\n : router.push(href)\n }\n return Promise.resolve()\n };\n\n return {\n href: computed(function () { return resolvedRoute.value.href; }),\n route: computed(function () { return resolvedRoute.value.route; }),\n isExactActive: isExactActive,\n isActive: isActive,\n navigate: navigate\n }\n}\n\nexport { isSameRouteLocationParams, onBeforeRouteLeave, onBeforeRouteUpdate, useLink, useRoute, useRouter };\n"],"names":[],"sourceRoot":""}
\ No newline at end of file |