sk-front-lib 0.14.8 → 0.15.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/package.json +5 -6
- package/api/sk-api.module.d.ts +7 -0
- package/api/sk-api.service.d.ts +3 -0
- package/api/sk-front-lib-api.d.ts +1 -0
- package/article/package.json +5 -6
- package/article/sk-article-editor-server.component.d.ts +3 -0
- package/article/sk-article-editor.component.d.ts +3 -0
- package/article/sk-article-server.module.d.ts +6 -0
- package/article/sk-article.module.d.ts +7 -0
- package/article/sk-article.service.d.ts +3 -0
- package/article/sk-froala-editor.directive.d.ts +3 -0
- package/article/sk-front-lib-article.d.ts +1 -0
- package/crud/package.json +5 -6
- package/crud/sk-account.service.d.ts +3 -0
- package/crud/sk-auth-admin.guard.d.ts +3 -0
- package/crud/sk-auth.guard.d.ts +3 -0
- package/crud/sk-auth.service.d.ts +3 -0
- package/crud/sk-board.service.d.ts +3 -0
- package/crud/sk-brand.service.d.ts +3 -0
- package/crud/sk-cart.service.d.ts +7 -0
- package/crud/sk-category.service.d.ts +3 -0
- package/crud/sk-comment.service.d.ts +3 -0
- package/crud/sk-config.service.d.ts +3 -0
- package/crud/sk-contact.service.d.ts +3 -0
- package/crud/sk-coupon.service.d.ts +3 -0
- package/crud/sk-document.service.d.ts +3 -0
- package/crud/sk-etc.service.d.ts +3 -0
- package/crud/sk-file.service.d.ts +3 -0
- package/crud/sk-front-lib-crud.d.ts +1 -1
- package/crud/sk-keyword.service.d.ts +3 -0
- package/crud/sk-order.service.d.ts +3 -0
- package/crud/sk-point.service.d.ts +3 -0
- package/crud/sk-product.service.d.ts +4 -0
- package/crud/sk-promotion.service.d.ts +3 -0
- package/crud/sk-search.service.d.ts +3 -0
- package/crud/sk-store.service.d.ts +3 -0
- package/crud/sk-user.service.d.ts +3 -0
- package/{esm2015/api/model/api-config.js → esm2020/api/model/api-config.mjs} +0 -0
- package/{esm2015/api/model/api-pageable-param.js → esm2020/api/model/api-pageable-param.mjs} +0 -0
- package/{esm2015/api/model/api-pageable.js → esm2020/api/model/api-pageable.mjs} +0 -0
- package/{esm2015/api/model/api-response.js → esm2020/api/model/api-response.mjs} +0 -0
- package/{esm2015/api/model/index.js → esm2020/api/model/index.mjs} +0 -0
- package/{esm2015/api/public_api.js → esm2020/api/public_api.mjs} +0 -0
- package/esm2020/api/sk-api.module.mjs +35 -0
- package/esm2020/api/sk-api.service.mjs +145 -0
- package/{esm2015/api/sk-front-lib-api.js → esm2020/api/sk-front-lib-api.mjs} +0 -0
- package/{esm2015/article/public_api.js → esm2020/article/public_api.mjs} +0 -0
- package/esm2020/article/sk-article-editor-server.component.mjs +51 -0
- package/esm2020/article/sk-article-editor.component.mjs +93 -0
- package/esm2020/article/sk-article-server.module.mjs +33 -0
- package/esm2020/article/sk-article.module.mjs +32 -0
- package/esm2020/article/sk-article.service.mjs +248 -0
- package/esm2020/article/sk-froala-editor.directive.mjs +325 -0
- package/{esm2015/article/sk-front-lib-article.js → esm2020/article/sk-front-lib-article.mjs} +0 -0
- package/{esm2015/crud/public_api.js → esm2020/crud/public_api.mjs} +0 -0
- package/esm2020/crud/sk-account.service.mjs +36 -0
- package/esm2020/crud/sk-auth-admin.guard.mjs +31 -0
- package/esm2020/crud/sk-auth.guard.mjs +31 -0
- package/esm2020/crud/sk-auth.service.mjs +67 -0
- package/esm2020/crud/sk-board.service.mjs +54 -0
- package/esm2020/crud/sk-brand.service.mjs +46 -0
- package/esm2020/crud/sk-cart.service.mjs +255 -0
- package/esm2020/crud/sk-category.service.mjs +63 -0
- package/esm2020/crud/sk-comment.service.mjs +43 -0
- package/esm2020/crud/sk-config.service.mjs +31 -0
- package/esm2020/crud/sk-contact.service.mjs +39 -0
- package/esm2020/crud/sk-coupon.service.mjs +62 -0
- package/esm2020/crud/sk-document.service.mjs +95 -0
- package/esm2020/crud/sk-etc.service.mjs +25 -0
- package/esm2020/crud/sk-file.service.mjs +37 -0
- package/esm2020/crud/sk-front-lib-crud.mjs +5 -0
- package/esm2020/crud/sk-keyword.service.mjs +46 -0
- package/esm2020/crud/sk-order.service.mjs +133 -0
- package/esm2020/crud/sk-point.service.mjs +45 -0
- package/esm2020/crud/sk-product.service.mjs +156 -0
- package/esm2020/crud/sk-promotion.service.mjs +81 -0
- package/esm2020/crud/sk-search.service.mjs +25 -0
- package/esm2020/crud/sk-store.service.mjs +47 -0
- package/esm2020/crud/sk-user.service.mjs +69 -0
- package/esm2020/google-analytics/google-analytics-router.module.mjs +30 -0
- package/esm2020/google-analytics/google-analytics.module.mjs +40 -0
- package/esm2020/google-analytics/initializers/google-analytics-router.initializer.mjs +24 -0
- package/esm2020/google-analytics/initializers/google-analytics.initializer.mjs +46 -0
- package/{esm2015/google-analytics/interfaces/google-analytics-command.js → esm2020/google-analytics/interfaces/google-analytics-command.mjs} +0 -0
- package/{esm2015/google-analytics/interfaces/google-analytics-settings.js → esm2020/google-analytics/interfaces/google-analytics-settings.mjs} +0 -0
- package/{esm2015/google-analytics/public_api.js → esm2020/google-analytics/public_api.mjs} +0 -0
- package/esm2020/google-analytics/services/google-analytics.service.mjs +200 -0
- package/{esm2015/google-analytics/sk-front-lib-google-analytics.js → esm2020/google-analytics/sk-front-lib-google-analytics.mjs} +0 -0
- package/{esm2015/google-analytics/tokens/google-analytics-settings-token.js → esm2020/google-analytics/tokens/google-analytics-settings-token.mjs} +0 -0
- package/{esm2015/google-analytics/types/ga-action.type.js → esm2020/google-analytics/types/ga-action.type.mjs} +0 -0
- package/{esm2015/google-analytics/types/ga-bind.type.js → esm2020/google-analytics/types/ga-bind.type.mjs} +0 -0
- package/esm2020/image/public_api.mjs +3 -0
- package/esm2020/image/sk-front-lib-image.mjs +5 -0
- package/esm2020/image/sk-image.component.mjs +262 -0
- package/esm2020/image/sk-image.module.mjs +43 -0
- package/{esm2015/lib/sk-animations.js → esm2020/lib/sk-animations.mjs} +0 -0
- package/esm2020/lib/sk-byte.pipe.mjs +18 -0
- package/esm2020/lib/sk-date-time.pipe.mjs +16 -0
- package/esm2020/lib/sk-date.pipe.mjs +16 -0
- package/esm2020/lib/sk-front-lib.module.mjs +42 -0
- package/esm2020/lib/sk-keys.pipe.mjs +23 -0
- package/esm2020/lib/sk-time.pipe.mjs +16 -0
- package/{esm2015/lib/sk-utils.js → esm2020/lib/sk-utils.mjs} +0 -0
- package/{esm2015/model/lib/article.js → esm2020/model/lib/article.mjs} +0 -0
- package/{esm2015/model/lib/audit.js → esm2020/model/lib/audit.mjs} +0 -0
- package/{esm2015/model/lib/auth.js → esm2020/model/lib/auth.mjs} +0 -0
- package/{esm2015/model/lib/board.js → esm2020/model/lib/board.mjs} +0 -0
- package/{esm2015/model/lib/cart.js → esm2020/model/lib/cart.mjs} +0 -0
- package/{esm2015/model/lib/comment.js → esm2020/model/lib/comment.mjs} +0 -0
- package/{esm2015/model/lib/contact.js → esm2020/model/lib/contact.mjs} +0 -0
- package/{esm2015/model/lib/coupon.js → esm2020/model/lib/coupon.mjs} +0 -0
- package/{esm2015/model/lib/document.js → esm2020/model/lib/document.mjs} +0 -0
- package/{esm2015/model/lib/etc.js → esm2020/model/lib/etc.mjs} +0 -0
- package/{esm2015/model/lib/file.js → esm2020/model/lib/file.mjs} +0 -0
- package/{esm2015/model/lib/filetype.js → esm2020/model/lib/filetype.mjs} +0 -0
- package/{esm2015/model/lib/grid.js → esm2020/model/lib/grid.mjs} +0 -0
- package/{esm2015/model/lib/nicepay.js → esm2020/model/lib/nicepay.mjs} +0 -0
- package/{esm2015/model/lib/order.js → esm2020/model/lib/order.mjs} +0 -0
- package/{esm2015/model/lib/payment.js → esm2020/model/lib/payment.mjs} +0 -0
- package/{esm2015/model/lib/point.js → esm2020/model/lib/point.mjs} +0 -0
- package/{esm2015/model/lib/product-series.js → esm2020/model/lib/product-series.mjs} +0 -0
- package/{esm2015/model/lib/product.js → esm2020/model/lib/product.mjs} +1 -1
- package/esm2020/model/lib/promotion.mjs +79 -0
- package/{esm2015/model/lib/shipping.js → esm2020/model/lib/shipping.mjs} +0 -0
- package/{esm2015/model/lib/user.js → esm2020/model/lib/user.mjs} +0 -0
- package/{esm2015/model/public_api.js → esm2020/model/public_api.mjs} +0 -0
- package/{esm2015/model/sk-front-lib-model.js → esm2020/model/sk-front-lib-model.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +2 -1
- package/esm2020/search-address/dialog/dialog.component.mjs +27 -0
- package/{esm2015/search-address/public_api.js → esm2020/search-address/public_api.mjs} +0 -0
- package/esm2020/search-address/sk-front-lib-search-address.mjs +5 -0
- package/esm2020/search-address/sk-search-address.directive.mjs +41 -0
- package/{esm2015/search-address/sk-search-address.model.js → esm2020/search-address/sk-search-address.model.mjs} +0 -0
- package/esm2020/search-address/sk-search-address.module.mjs +52 -0
- package/{esm2015/search-address/sk-search-address.service.js → esm2020/search-address/sk-search-address.service.mjs} +10 -8
- package/esm2020/sk-front-lib.mjs +5 -0
- package/{esm2015/uploader/public_api.js → esm2020/uploader/public_api.mjs} +0 -0
- package/esm2020/uploader/sk-front-lib-uploader.mjs +5 -0
- package/{esm2015/uploader/sk-uploader-file-item.model.js → esm2020/uploader/sk-uploader-file-item.model.mjs} +0 -0
- package/{esm2015/uploader/sk-uploader.animation.js → esm2020/uploader/sk-uploader.animation.mjs} +0 -0
- package/{esm2015/uploader/sk-uploader.class.js → esm2020/uploader/sk-uploader.class.mjs} +0 -0
- package/esm2020/uploader/sk-uploader.component.mjs +120 -0
- package/esm2020/uploader/sk-uploader.directive.mjs +44 -0
- package/esm2020/uploader/sk-uploader.module.mjs +62 -0
- package/fesm2015/sk-front-lib-api.mjs +218 -0
- package/fesm2015/sk-front-lib-api.mjs.map +1 -0
- package/fesm2015/{sk-front-lib-article.js → sk-front-lib-article.mjs} +183 -158
- package/fesm2015/sk-front-lib-article.mjs.map +1 -0
- package/fesm2015/sk-front-lib-crud.mjs +1403 -0
- package/fesm2015/sk-front-lib-crud.mjs.map +1 -0
- package/fesm2015/{sk-front-lib-google-analytics.js → sk-front-lib-google-analytics.mjs} +54 -33
- package/fesm2015/sk-front-lib-google-analytics.mjs.map +1 -0
- package/fesm2015/{sk-front-lib-image.js → sk-front-lib-image.mjs} +64 -48
- package/fesm2015/sk-front-lib-image.mjs.map +1 -0
- package/fesm2015/{sk-front-lib-model.js → sk-front-lib-model.mjs} +9 -2
- package/fesm2015/sk-front-lib-model.mjs.map +1 -0
- package/fesm2015/sk-front-lib-search-address.mjs +188 -0
- package/fesm2015/sk-front-lib-search-address.mjs.map +1 -0
- package/fesm2015/sk-front-lib-uploader.mjs +551 -0
- package/fesm2015/sk-front-lib-uploader.mjs.map +1 -0
- package/fesm2015/{sk-front-lib.js → sk-front-lib.mjs} +69 -41
- package/fesm2015/sk-front-lib.mjs.map +1 -0
- package/{fesm2015/sk-front-lib-api.js → fesm2020/sk-front-lib-api.mjs} +41 -26
- package/fesm2020/sk-front-lib-api.mjs.map +1 -0
- package/fesm2020/sk-front-lib-article.mjs +771 -0
- package/fesm2020/sk-front-lib-article.mjs.map +1 -0
- package/{fesm2015/sk-front-lib-crud.js → fesm2020/sk-front-lib-crud.mjs} +213 -236
- package/fesm2020/sk-front-lib-crud.mjs.map +1 -0
- package/fesm2020/sk-front-lib-google-analytics.mjs +336 -0
- package/fesm2020/sk-front-lib-google-analytics.mjs.map +1 -0
- package/fesm2020/sk-front-lib-image.mjs +309 -0
- package/fesm2020/sk-front-lib-image.mjs.map +1 -0
- package/fesm2020/sk-front-lib-model.mjs +1052 -0
- package/fesm2020/sk-front-lib-model.mjs.map +1 -0
- package/fesm2020/sk-front-lib-search-address.mjs +186 -0
- package/fesm2020/sk-front-lib-search-address.mjs.map +1 -0
- package/fesm2020/sk-front-lib-uploader.mjs +549 -0
- package/fesm2020/sk-front-lib-uploader.mjs.map +1 -0
- package/fesm2020/sk-front-lib.mjs +539 -0
- package/fesm2020/sk-front-lib.mjs.map +1 -0
- package/google-analytics/google-analytics-router.module.d.ts +6 -0
- package/google-analytics/google-analytics.module.d.ts +5 -0
- package/google-analytics/package.json +5 -6
- package/google-analytics/services/google-analytics.service.d.ts +3 -0
- package/google-analytics/sk-front-lib-google-analytics.d.ts +1 -0
- package/image/package.json +5 -6
- package/image/public_api.d.ts +1 -0
- package/image/sk-front-lib-image.d.ts +1 -1
- package/image/sk-image.component.d.ts +6 -3
- package/image/sk-image.module.d.ts +10 -0
- package/lib/sk-byte.pipe.d.ts +3 -0
- package/lib/sk-date-time.pipe.d.ts +3 -0
- package/lib/sk-date.pipe.d.ts +3 -0
- package/lib/sk-front-lib.module.d.ts +9 -0
- package/lib/sk-keys.pipe.d.ts +3 -0
- package/lib/sk-time.pipe.d.ts +3 -0
- package/model/lib/product.d.ts +1 -0
- package/model/lib/promotion.d.ts +12 -1
- package/model/package.json +5 -6
- package/model/sk-front-lib-model.d.ts +1 -0
- package/package.json +96 -20
- package/public-api.d.ts +1 -0
- package/search-address/dialog/dialog.component.d.ts +3 -0
- package/search-address/package.json +5 -6
- package/search-address/sk-front-lib-search-address.d.ts +1 -2
- package/search-address/sk-search-address.directive.d.ts +3 -0
- package/search-address/sk-search-address.module.d.ts +12 -0
- package/search-address/sk-search-address.service.d.ts +3 -0
- package/sk-front-lib.d.ts +1 -1
- package/uploader/package.json +5 -6
- package/uploader/sk-front-lib-uploader.d.ts +1 -1
- package/uploader/sk-uploader.component.d.ts +3 -0
- package/uploader/sk-uploader.directive.d.ts +3 -0
- package/uploader/sk-uploader.module.d.ts +14 -0
- package/api/sk-front-lib-api.metadata.json +0 -1
- package/article/sk-front-lib-article.metadata.json +0 -1
- package/bundles/sk-front-lib-api.umd.js +0 -230
- package/bundles/sk-front-lib-api.umd.js.map +0 -1
- package/bundles/sk-front-lib-api.umd.min.js +0 -2
- package/bundles/sk-front-lib-api.umd.min.js.map +0 -1
- package/bundles/sk-front-lib-article.umd.js +0 -772
- package/bundles/sk-front-lib-article.umd.js.map +0 -1
- package/bundles/sk-front-lib-article.umd.min.js +0 -2
- package/bundles/sk-front-lib-article.umd.min.js.map +0 -1
- package/bundles/sk-front-lib-crud.umd.js +0 -1846
- package/bundles/sk-front-lib-crud.umd.js.map +0 -1
- package/bundles/sk-front-lib-crud.umd.min.js +0 -2
- package/bundles/sk-front-lib-crud.umd.min.js.map +0 -1
- package/bundles/sk-front-lib-google-analytics.umd.js +0 -673
- package/bundles/sk-front-lib-google-analytics.umd.js.map +0 -1
- package/bundles/sk-front-lib-google-analytics.umd.min.js +0 -16
- package/bundles/sk-front-lib-google-analytics.umd.min.js.map +0 -1
- package/bundles/sk-front-lib-image.umd.js +0 -312
- package/bundles/sk-front-lib-image.umd.js.map +0 -1
- package/bundles/sk-front-lib-image.umd.min.js +0 -2
- package/bundles/sk-front-lib-image.umd.min.js.map +0 -1
- package/bundles/sk-front-lib-model.umd.js +0 -1464
- package/bundles/sk-front-lib-model.umd.js.map +0 -1
- package/bundles/sk-front-lib-model.umd.min.js +0 -16
- package/bundles/sk-front-lib-model.umd.min.js.map +0 -1
- package/bundles/sk-front-lib-search-address.umd.js +0 -182
- package/bundles/sk-front-lib-search-address.umd.js.map +0 -1
- package/bundles/sk-front-lib-search-address.umd.min.js +0 -2
- package/bundles/sk-front-lib-search-address.umd.min.js.map +0 -1
- package/bundles/sk-front-lib-uploader.umd.js +0 -534
- package/bundles/sk-front-lib-uploader.umd.js.map +0 -1
- package/bundles/sk-front-lib-uploader.umd.min.js +0 -2
- package/bundles/sk-front-lib-uploader.umd.min.js.map +0 -1
- package/bundles/sk-front-lib.umd.js +0 -546
- package/bundles/sk-front-lib.umd.js.map +0 -1
- package/bundles/sk-front-lib.umd.min.js +0 -2
- package/bundles/sk-front-lib.umd.min.js.map +0 -1
- package/crud/sk-front-lib-crud.metadata.json +0 -1
- package/esm2015/api/sk-api.module.js +0 -24
- package/esm2015/api/sk-api.service.js +0 -144
- package/esm2015/article/sk-article-editor-server.component.js +0 -54
- package/esm2015/article/sk-article-editor.component.js +0 -85
- package/esm2015/article/sk-article-server.module.js +0 -26
- package/esm2015/article/sk-article.module.js +0 -23
- package/esm2015/article/sk-article.service.js +0 -235
- package/esm2015/article/sk-froala-editor.directive.js +0 -320
- package/esm2015/crud/sk-account.service.js +0 -38
- package/esm2015/crud/sk-auth-admin.guard.js +0 -35
- package/esm2015/crud/sk-auth.guard.js +0 -35
- package/esm2015/crud/sk-auth.service.js +0 -71
- package/esm2015/crud/sk-board.service.js +0 -55
- package/esm2015/crud/sk-brand.service.js +0 -47
- package/esm2015/crud/sk-cart.service.js +0 -260
- package/esm2015/crud/sk-category.service.js +0 -64
- package/esm2015/crud/sk-comment.service.js +0 -44
- package/esm2015/crud/sk-config.service.js +0 -33
- package/esm2015/crud/sk-contact.service.js +0 -40
- package/esm2015/crud/sk-coupon.service.js +0 -63
- package/esm2015/crud/sk-document.service.js +0 -96
- package/esm2015/crud/sk-etc.service.js +0 -27
- package/esm2015/crud/sk-file.service.js +0 -38
- package/esm2015/crud/sk-front-lib-crud.js +0 -6
- package/esm2015/crud/sk-keyword.service.js +0 -47
- package/esm2015/crud/sk-order.service.js +0 -134
- package/esm2015/crud/sk-point.service.js +0 -46
- package/esm2015/crud/sk-product.service.js +0 -154
- package/esm2015/crud/sk-promotion.service.js +0 -82
- package/esm2015/crud/sk-search.service.js +0 -26
- package/esm2015/crud/sk-store.service.js +0 -48
- package/esm2015/crud/sk-user.service.js +0 -70
- package/esm2015/google-analytics/google-analytics-router.module.js +0 -19
- package/esm2015/google-analytics/google-analytics.module.js +0 -33
- package/esm2015/google-analytics/initializers/google-analytics-router.initializer.js +0 -25
- package/esm2015/google-analytics/initializers/google-analytics.initializer.js +0 -47
- package/esm2015/google-analytics/services/google-analytics.service.js +0 -199
- package/esm2015/image/public_api.js +0 -2
- package/esm2015/image/sk-front-lib-image.js +0 -6
- package/esm2015/image/sk-image.component.js +0 -258
- package/esm2015/image/sk-image.module.js +0 -28
- package/esm2015/lib/sk-byte.pipe.js +0 -14
- package/esm2015/lib/sk-date-time.pipe.js +0 -12
- package/esm2015/lib/sk-date.pipe.js +0 -12
- package/esm2015/lib/sk-front-lib.module.js +0 -29
- package/esm2015/lib/sk-keys.pipe.js +0 -19
- package/esm2015/lib/sk-time.pipe.js +0 -12
- package/esm2015/model/lib/promotion.js +0 -72
- package/esm2015/search-address/dialog/dialog.component.js +0 -28
- package/esm2015/search-address/sk-front-lib-search-address.js +0 -7
- package/esm2015/search-address/sk-search-address.directive.js +0 -39
- package/esm2015/search-address/sk-search-address.module.js +0 -34
- package/esm2015/sk-front-lib.js +0 -6
- package/esm2015/uploader/sk-front-lib-uploader.js +0 -6
- package/esm2015/uploader/sk-uploader.component.js +0 -106
- package/esm2015/uploader/sk-uploader.directive.js +0 -40
- package/esm2015/uploader/sk-uploader.module.js +0 -39
- package/fesm2015/sk-front-lib-api.js.map +0 -1
- package/fesm2015/sk-front-lib-article.js.map +0 -1
- package/fesm2015/sk-front-lib-crud.js.map +0 -1
- package/fesm2015/sk-front-lib-google-analytics.js.map +0 -1
- package/fesm2015/sk-front-lib-image.js.map +0 -1
- package/fesm2015/sk-front-lib-model.js.map +0 -1
- package/fesm2015/sk-front-lib-search-address.js +0 -166
- package/fesm2015/sk-front-lib-search-address.js.map +0 -1
- package/fesm2015/sk-front-lib-uploader.js +0 -510
- package/fesm2015/sk-front-lib-uploader.js.map +0 -1
- package/fesm2015/sk-front-lib.js.map +0 -1
- package/google-analytics/sk-front-lib-google-analytics.metadata.json +0 -1
- package/image/sk-front-lib-image.metadata.json +0 -1
- package/model/sk-front-lib-model.metadata.json +0 -1
- package/search-address/sk-front-lib-search-address.metadata.json +0 -1
- package/sk-front-lib.metadata.json +0 -1
- package/uploader/sk-front-lib-uploader.metadata.json +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/common"),require("@angular/core"),require("@angular/material/button"),require("@angular/material/dialog"),require("@angular/material/icon"),require("@angular/material/list"),require("@angular/material/progress-bar"),require("@angular/material/toolbar"),require("sk-front-lib"),require("sk-front-lib/api"),require("sk-front-lib/model"),require("@angular/animations"),require("@angular/common/http"),require("rxjs"),require("rxjs/operators"),require("lodash")):"function"==typeof define&&define.amd?define("sk-front-lib/uploader",["exports","@angular/common","@angular/core","@angular/material/button","@angular/material/dialog","@angular/material/icon","@angular/material/list","@angular/material/progress-bar","@angular/material/toolbar","sk-front-lib","sk-front-lib/api","sk-front-lib/model","@angular/animations","@angular/common/http","rxjs","rxjs/operators","lodash"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self)["sk-front-lib"]=e["sk-front-lib"]||{},e["sk-front-lib"].uploader={}),e.ng.common,e.ng.core,e.ng.material.button,e.ng.material.dialog,e.ng.material.icon,e.ng.material.list,e.ng.material.progressBar,e.ng.material.toolbar,e["sk-front-lib"],e["sk-front-lib"].api,e["sk-front-lib"].model,e.ng.animations,e.ng.common.http,e.rxjs,e.rxjs.operators,e._)}(this,(function(e,t,i,n,o,a,r,l,s,p,u,d,c,m,f,g,h){"use strict";var y,v;!function(e){e[e.Local=0]="Local",e[e.API=1]="API",e[e.Unidentified=2]="Unidentified"}(y||(y={})),function(e){e[e.WAIT=0]="WAIT",e[e.READY=1]="READY",e[e.UPLOADING=2]="UPLOADING",e[e.PROCESS=3]="PROCESS",e[e.DONE=4]="DONE",e[e.ERROR=5]="ERROR"}(v||(v={}));var b=function(){function e(e,t){this.localFile=e,this.skFile=t,this.state=v.WAIT,this.progress=0,this.localFile&&!this.skFile?this.itemType=y.Local:!this.localFile&&this.skFile?(this.itemType=y.API,this.state=v.DONE,this.progress=100):this.itemType=y.Unidentified}return Object.defineProperty(e.prototype,"filename",{get:function(){return this.itemType===y.Local?this.localFile.name:this.itemType===y.API?this.skFile.sourceFilename:"Unknown File"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"size",{get:function(){return this.itemType===y.Local?this.localFile.size:this.itemType===y.API?this.skFile.fileSize:-1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"mime",{get:function(){return this.itemType===y.Local?this.localFile.type:this.itemType===y.API?this.skFile.mime:""},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"icon",{get:function(){return this.itemType===y.Local?d.FileType.getMimeClass(this.localFile):this.itemType===y.API?d.FileType.getMimeClass(this.skFile):"application"},enumerable:!1,configurable:!0}),e.fromLocalFile=function(t){return new e(t)},e.fromApi=function(t){return new e(null,t)},e.prototype.prepareUpload=function(){this.state=v.READY},e}(),k=c.animation([c.style({opacity:"{{opacity}}",transform:"scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})"}),c.animate("{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)",c.style("*"))],{params:{duration:"200ms",delay:"0ms",opacity:"0",scale:"1",x:"0",y:"0",z:"0"}}),F=c.animation([c.style("*"),c.animate("{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)",c.style({opacity:"{{opacity}}",transform:"scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})"}))],{params:{duration:"200ms",delay:"0ms",opacity:"0",scale:"1",x:"0",y:"0",z:"0"}}),x=[c.trigger("animate",[c.transition("void => *",[c.useAnimation(k)])]),c.trigger("animateOut",[c.transition("* => void",[c.useAnimation(F)])]),c.trigger("animateStagger",[c.transition("* => *",c.query("@*",[c.stagger("100ms",[c.animateChild()])],{optional:!0}))])],S=function(){function e(e,t,i){void 0===i&&(i=[]),this.apiService=e,this.queue=[],this.progress=0,this.options={autoUpload:!1,filters:[],maxFileSize:2147483648,queueLimit:1,asyncLimit:2},this.setOptions(t),this.setSelectedFiles(i)}return e.prototype.setOptions=function(e){this.options=Object.assign(this.options,e),this.options.filters.unshift({name:"queueLimit",fn:this._queueLimitFilter}),this.options.maxFileSize&&this.options.filters.unshift({name:"fileSize",fn:this._fileSizeFilter}),this.options.allowedFileType&&this.options.filters.unshift({name:"fileType",fn:this._fileTypeFilter}),this.options.allowedMimeType&&this.options.filters.unshift({name:"mimeType",fn:this._mimeTypeFilter})},e.prototype.setSelectedFiles=function(e){var t=e.map((function(e){return b.fromApi(e)}));this.addToQueue(t)},e.prototype.addToQueue=function(e,t){var i=this,n=this._getFilters(t);e.forEach((function(e){i._isValidFile(e,n,i.options)&&!i._findByFilenameInQueue(e.filename)&&i.queue.push(e)})),this.updateProgress()},e.prototype.removeFromQueue=function(e){var t=this.queue.findIndex((function(t){return t.filename===e.filename}));this.queue.splice(t,1),this.updateProgress()},e.prototype.clearQueue=function(){for(;this.queue.length;)this.removeFromQueue(this.queue[0]);this.progress=0},e.prototype.upload=function(e){this._processUpload(e)},e.prototype.uploadAll=function(){var e=this.getNotUploadedItems();if(e.forEach((function(e){e.prepareUpload()})),e.length>0)for(var t=Math.min(e.length,this.options.asyncLimit),i=0;i<t;i++)this.upload(e[i])},e.prototype.updateProgress=function(){var e=this.getDoneItems().length/this.queue.length*100;this.progress=Math.ceil(e)},e.prototype._isValidFile=function(e,t,i){var n=this;return this._failFilterIndex=-1,!t.length||t.every((function(t){return n._failFilterIndex++,t.fn.call(n,e,i)}))},e.prototype._getFilters=function(e){if(!e)return this.options.filters;if(Array.isArray(e))return e;if("string"==typeof e){var t=e.match(/[^\s,]+/g);return this.options.filters.filter((function(e){return-1!==t.indexOf(e.name)}))}return this.options.filters},e.prototype._queueLimitFilter=function(){return void 0===this.options.queueLimit||this.queue.length<this.options.queueLimit},e.prototype._mimeTypeFilter=function(e){return!(this.options.allowedMimeType&&-1===this.options.allowedMimeType.indexOf(e.mime))},e.prototype._fileSizeFilter=function(e){return!(this.options.maxFileSize&&e.size>this.options.maxFileSize)},e.prototype._fileTypeFilter=function(e){return!(this.options.allowedFileType&&-1===this.options.allowedFileType.indexOf(d.FileType.getMimeClass(e.localFile?e.localFile:e.skFile)))},e.prototype._processUpload=function(e){var t=this;if(e.state===v.READY){var i=new FormData;i.append("file",e.localFile,e.filename);var n=new m.HttpRequest("POST",this.apiService.apiServer+"/api/public/files/upload",i,{reportProgress:!0,headers:(new m.HttpHeaders).set("Authorization","Bearer "+this.apiService.getToken()).set("ngsw-bypass","true")});this.apiService.rawRequest(n).pipe(g.tap((function(t){switch(t.type){case m.HttpEventType.UploadProgress:var i=Math.ceil(100*t.loaded/t.total);return e.progress=i,void(e.progress>=99?e.state=v.PROCESS:e.state=v.UPLOADING);case m.HttpEventType.Response:return void(e.state=v.DONE);default:return}})),g.last(),g.map((function(e){return e.body.data?new d.SkFile(e.body.data):null})),g.catchError((function(t){return console.log(t),e.state=v.ERROR,f.of(null)}))).subscribe((function(i){i instanceof d.SkFile&&(e.skFile=i),t.updateProgress();var n=t.getReadyItems();n.length>0&&t.upload(n[0])}))}},e.prototype._findByFilenameInQueue=function(e){return this.queue.findIndex((function(t){return t.filename===e}))>-1},e.prototype.getNotUploadedItems=function(){return this.queue.filter((function(e){return e.state===v.WAIT}))},e.prototype.getReadyItems=function(){return this.queue.filter((function(e){return e.state===v.READY}))},e.prototype.getDoneItems=function(){return this.queue.filter((function(e){return e.state===v.DONE}))},e}(),T=function(){function e(e,t,i){this.data=e,this.dialogRef=t,this._apiService=i,this.dragClassActive=!1,this.uploader=new S(this._apiService,e.options,e.selectedFile)}return e._getTransfer=function(e){return e.dataTransfer?e.dataTransfer:e.originalEvent.dataTransfer},e._haveFiles=function(e){return!!e&&(e.indexOf?-1!==e.indexOf("Files"):!!e.contains&&e.contains("Files"))},e.prototype.ngOnInit=function(){},e.prototype.save=function(){this.dialogRef.close(this.uploader.getDoneItems())},e.prototype.onDrop=function(t){var i=e._getTransfer(t);i&&(this.preventAndStop(t),this.fileAdd(i.files),this.dragClassActive=!1)},e.prototype.onDragOver=function(t){var i=e._getTransfer(t);e._haveFiles(i.types)&&(this.preventAndStop(t),this.dragClassActive=!0)},e.prototype.onDragLeave=function(e){e.relatedTarget!==this.dragEl.nativeElement&&(this.preventAndStop(e),this.dragClassActive=!1)},e.prototype.fileAdd=function(e){if(e instanceof FileList){for(var t=[],i=0;i<e.length;i++)t.push(b.fromLocalFile(e.item(i)));this.uploader.addToQueue(t)}},e.prototype.onBrowseFileComplete=function(){var e=this.fileEl.nativeElement.files;this.fileAdd(e)},e.prototype.onDragComponentClick=function(){this.fileEl.nativeElement.click()},e.prototype.preventAndStop=function(e){e.preventDefault(),e.stopPropagation()},e}();T.decorators=[{type:i.Component,args:[{selector:"sk-uploader",template:'<mat-toolbar class="dialog-title" color="primary">\n <span class="title dialog-title">File Uploader</span>\n <div class="space-fill"></div>\n <button mat-icon-button mat-dialog-close aria-label="Close dialog">\n <mat-icon>close</mat-icon>\n </button>\n</mat-toolbar>\n<div class="dialog-content">\n <input type="file" style="display: none" #file (change)="onBrowseFileComplete()" multiple />\n <div class="drag-section" #drag (click)="onDragComponentClick()" [class.active]="dragClassActive">\n <mat-icon>cloud_upload</mat-icon>\n <p>Drag and drop or <strong>click to browse</strong></p>\n </div>\n <mat-list [@animateStagger]="{value:uploader.queue.length}">\n <h3 mat-subheader>Selected Files ({{uploader.queue.length}})</h3>\n <mat-list-item class="selected-file" *ngFor="let file of uploader.queue"\n [@animate]="{value:\'*\',params:{x:\'-25px\', opacity:\'0\',duration:\'200ms\'}}"\n [@animateOut]="{value:\'*\',params:{delay:\'100ms\',x:\'-25px\', opacity:\'0\',duration:\'200ms\'}}"\n dense>\n <mat-icon class="type-icon" [ngClass]="file.icon" matListIcon></mat-icon>\n <div mat-line>\n <span class="file-name">{{ file.filename }}</span>\n <span>{{ file.size | skByte }}</span>\n </div>\n <mat-progress-bar mat-line [mode]="file.state == 3 ? \'query\' : \'determinate\'" [value]="file.progress" color="accent"></mat-progress-bar>\n <div mat-line>\n <ng-container [ngSwitch]="file.state">\n <div *ngSwitchCase="0">\n Selected\n </div>\n <div *ngSwitchCase="1">\n Wait for upload\n </div>\n <div *ngSwitchCase="2">\n Uploading\n </div>\n <div *ngSwitchCase="3">\n Processing..\n </div>\n <div *ngSwitchCase="4">\n Done.\n </div>\n <div *ngSwitchCase="5">\n Failed\n </div>\n </ng-container>\n </div>\n <button mat-icon-button (click)="uploader.removeFromQueue(file)">\n <mat-icon>delete</mat-icon>\n </button>\n </mat-list-item>\n <mat-divider *ngIf="uploader.queue.length === 0"\n [@animate]="{value:\'*\',params:{delay: \'300ms\', opacity:\'0\',duration:\'200ms\'}}"></mat-divider>\n <mat-list-item class="empty" *ngIf="uploader.queue.length === 0"\n [@animate]="{value:\'*\',params:{delay: \'300ms\', opacity:\'0\',duration:\'200ms\'}}">\n <h2 mat-line>No file selected..</h2>\n </mat-list-item>\n </mat-list>\n</div>\n<mat-progress-bar mat-line mode="determinate" [value]="uploader.progress"></mat-progress-bar>\n<div class="dialog-actions">\n <div>\n <button mat-flat-button color="warn" (click)="uploader.clearQueue()" [disabled]="uploader.queue.length === 0">Clear all</button>\n </div>\n <div>\n <button mat-flat-button color="primary"\n *ngIf="uploader.getNotUploadedItems().length > 0"\n (click)="uploader.uploadAll()">Start Upload</button>\n <button mat-flat-button color="accent"\n *ngIf="uploader.getDoneItems().length === uploader.queue.length && uploader.getDoneItems().length > 0 "\n style="margin-left: 8px" (click)="save()">Save</button>\n </div>\n</div>\n',encapsulation:i.ViewEncapsulation.None,animations:x,styles:["sk-uploader{display:flex;flex-direction:column;min-width:50vw;position:relative}sk-uploader .dialog-title{flex-shrink:0}sk-uploader .dialog-title .space-fill{flex:1 0 auto}sk-uploader .dialog-content{padding:16px;margin:0;overflow:scroll;overflow-x:hidden;flex:0 0 500px;max-height:500px}sk-uploader .dialog-content .drag-section{border:3px dashed #ccc;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px}sk-uploader .dialog-content .drag-section .mat-icon{width:64px;height:64px;line-height:64px;font-size:64px}sk-uploader .dialog-content .drag-section p{cursor:pointer;font-size:14px}sk-uploader .dialog-content .drag-section .mat-icon,sk-uploader .dialog-content .drag-section p{color:#ccc}sk-uploader .dialog-content .drag-section.active{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;z-index:10;background-color:#2c393f}sk-uploader .dialog-content mat-list mat-list-item.selected-file{box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);margin-bottom:8px}sk-uploader .dialog-content mat-list mat-list-item.selected-file .mat-list-icon,sk-uploader .dialog-content mat-list mat-list-item.selected-file mat-icon{width:32px!important;height:32px!important;line-height:32px!important;font-size:32px!important}sk-uploader .dialog-content mat-list mat-list-item.selected-file .mat-icon-button{margin-left:16px}sk-uploader .dialog-content mat-list mat-list-item.selected-file .mat-line{display:flex;flex-direction:row;align-items:center;justify-content:space-between}sk-uploader .dialog-content mat-list mat-list-item.selected-file .file-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}sk-uploader .dialog-actions{padding:16px;flex-shrink:0;border-top:1px solid rgba(0,0,0,.12);display:flex;justify-content:space-between}"]}]}],T.ctorParameters=function(){return[{type:void 0,decorators:[{type:i.Inject,args:[o.MAT_DIALOG_DATA]}]},{type:o.MatDialogRef},{type:u.SkApiService}]},T.propDecorators={fileEl:[{type:i.ViewChild,args:["file",{static:!1}]}],dragEl:[{type:i.ViewChild,args:["drag",{static:!1}]}],onDrop:[{type:i.HostListener,args:["drop",["$event"]]}],onDragOver:[{type:i.HostListener,args:["dragover",["$event"]]}],onDragLeave:[{type:i.HostListener,args:["dragleave",["$event"]]}]};var w=function(){function e(e){this._dialog=e,this.skUploaderFileSelected=new i.EventEmitter}return e.prototype.onClick=function(){var e=this;this._dialog.open(T,{panelClass:"mat-dialog-no-padding",closeOnNavigation:!0,autoFocus:!1,data:{options:this.skUploaderOptions,selectedFile:this.skSelected?h.isArray(this.skSelected)?this.skSelected:[this.skSelected]:[]}}).afterClosed().subscribe((function(t){t&&e.skUploaderFileSelected.emit(t.map((function(e){return e.skFile})))}))},e}();w.decorators=[{type:i.Directive,args:[{selector:"[skUploader]"}]}],w.ctorParameters=function(){return[{type:o.MatDialog}]},w.propDecorators={skUploaderOptions:[{type:i.Input}],skSelected:[{type:i.Input}],skUploaderFileSelected:[{type:i.Output}],onClick:[{type:i.HostListener,args:["click"]}]};var A=function(){};A.decorators=[{type:i.NgModule,args:[{imports:[t.CommonModule,o.MatDialogModule,s.MatToolbarModule,n.MatButtonModule,a.MatIconModule,r.MatListModule,l.MatProgressBarModule,p.SkFrontLibModule],declarations:[T,w],exports:[T,w],entryComponents:[T]}]}],e.SkUploaderComponent=T,e.SkUploaderDirective=w,e.SkUploaderModule=A,e.ɵa=x,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
-
//# sourceMappingURL=sk-front-lib-uploader.umd.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../projects/sk-front-lib/uploader/src/sk-uploader-file-item.model.ts","../../../projects/sk-front-lib/uploader/src/sk-uploader.animation.ts","../../../projects/sk-front-lib/uploader/src/sk-uploader.class.ts","../../../projects/sk-front-lib/uploader/src/sk-uploader.component.ts","../../../projects/sk-front-lib/uploader/src/sk-uploader.directive.ts","../../../projects/sk-front-lib/uploader/src/sk-uploader.module.ts"],"names":["SkUploaderFileItemType","SkUploaderFileItemStatus","SkUploaderFileItem","localFile","skFile","this","state","WAIT","progress","itemType","Local","API","DONE","Unidentified","Object","defineProperty","prototype","name","sourceFilename","size","fileSize","type","mime","FileType","getMimeClass","fromLocalFile","fromApi","prepareUpload","READY","customAnimation","animation","style","opacity","transform","animate","params","duration","delay","scale","x","y","z","customOutAnimation","uploaderAnimations","trigger","transition","useAnimation","query","stagger","animateChild","optional","SkFileUploader","apiService","options","selectedFiles","queue","autoUpload","filters","maxFileSize","queueLimit","asyncLimit","setOptions","setSelectedFiles","assign","unshift","fn","_queueLimitFilter","_fileSizeFilter","allowedFileType","_fileTypeFilter","allowedMimeType","_mimeTypeFilter","files","items","map","file","addToQueue","_this","arrayOfFilters","_getFilters","forEach","item","_isValidFile","_findByFilenameInQueue","filename","push","updateProgress","removeFromQueue","index","findIndex","value","splice","clearQueue","length","upload","_processUpload","uploadAll","targetItems","getNotUploadedItems","max","Math","min","i","current","getDoneItems","ceil","_failFilterIndex","every","filter","call","Array","isArray","names_1","match","indexOf","undefined","formData","FormData","append","request","HttpRequest","apiServer","reportProgress","headers","HttpHeaders","set","getToken","rawRequest","pipe","tap","event","HttpEventType","UploadProgress","percentDone","loaded","total","PROCESS","UPLOADING","Response","last","result","body","data","SkFile","catchError","err","console","log","ERROR","of","subscribe","nextItems","getReadyItems","SkUploaderComponent","dialogRef","_apiService","dragClassActive","uploader","selectedFile","_getTransfer","dataTransfer","originalEvent","_haveFiles","types","contains","ngOnInit","save","close","onDrop","transfer","preventAndStop","fileAdd","onDragOver","onDragLeave","relatedTarget","dragEl","nativeElement","FileList","list","onBrowseFileComplete","fileEl","onDragComponentClick","click","preventDefault","stopPropagation","Component","args","selector","template","encapsulation","ViewEncapsulation","None","animations","Inject","MAT_DIALOG_DATA","MatDialogRef","SkApiService","ViewChild","static","HostListener","SkUploaderDirective","_dialog","skUploaderFileSelected","EventEmitter","onClick","open","panelClass","closeOnNavigation","autoFocus","skUploaderOptions","skSelected","_.isArray","afterClosed","emit","Directive","MatDialog","Input","Output","NgModule","imports","CommonModule","MatDialogModule","MatToolbarModule","MatButtonModule","MatIconModule","MatListModule","MatProgressBarModule","SkFrontLibModule","declarations","exports","entryComponents"],"mappings":"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","sourcesContent":["import {FileType, SkFile} from 'sk-front-lib/model';\n\nexport enum SkUploaderFileItemType {\n Local,\n API,\n Unidentified\n}\n\nexport enum SkUploaderFileItemStatus {\n WAIT,\n READY,\n UPLOADING,\n PROCESS,\n DONE,\n ERROR\n}\n\nexport class SkUploaderFileItem {\n\n private constructor(localFile?: File, skFile?: SkFile) {\n this.localFile = localFile;\n this.skFile = skFile;\n\n this.state = SkUploaderFileItemStatus.WAIT;\n this.progress = 0;\n\n if (this.localFile && !this.skFile) {\n this.itemType = SkUploaderFileItemType.Local;\n } else if (!this.localFile && this.skFile) {\n this.itemType = SkUploaderFileItemType.API;\n this.state = SkUploaderFileItemStatus.DONE;\n this.progress = 100;\n } else {\n this.itemType = SkUploaderFileItemType.Unidentified;\n }\n }\n\n get filename(): string {\n if (this.itemType === SkUploaderFileItemType.Local) {\n return this.localFile.name;\n } else if (this.itemType === SkUploaderFileItemType.API) {\n return this.skFile.sourceFilename;\n } else {\n return 'Unknown File';\n }\n }\n\n get size(): number {\n if (this.itemType === SkUploaderFileItemType.Local) {\n return this.localFile.size;\n } else if (this.itemType === SkUploaderFileItemType.API) {\n return this.skFile.fileSize;\n } else {\n return -1;\n }\n }\n\n get mime(): string {\n if (this.itemType === SkUploaderFileItemType.Local) {\n return this.localFile.type;\n } else if (this.itemType === SkUploaderFileItemType.API) {\n return this.skFile.mime;\n } else {\n return '';\n }\n }\n\n get icon(): string {\n if (this.itemType === SkUploaderFileItemType.Local) {\n return FileType.getMimeClass(this.localFile);\n } else if (this.itemType === SkUploaderFileItemType.API) {\n return FileType.getMimeClass(this.skFile);\n } else {\n return 'application';\n }\n }\n\n public localFile: File;\n public skFile: SkFile;\n public itemType: SkUploaderFileItemType;\n\n public state: SkUploaderFileItemStatus;\n public progress: number;\n\n\n\n // -----------------------------------------------------------------------------------------------------\n // @ Static Builder\n // -----------------------------------------------------------------------------------------------------\n\n static fromLocalFile(localFile: File): SkUploaderFileItem {\n return new SkUploaderFileItem(localFile);\n }\n\n static fromApi(skFile: SkFile): SkUploaderFileItem {\n return new SkUploaderFileItem(null, skFile);\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ State Method\n // -----------------------------------------------------------------------------------------------------\n\n public prepareUpload(): void {\n this.state = SkUploaderFileItemStatus.READY;\n }\n}\n","import {animate, animateChild, animation, query, stagger, style, transition, trigger, useAnimation} from '@angular/animations';\n\nconst customAnimation = animation([\n style({\n opacity : '{{opacity}}',\n transform: 'scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})'\n }),\n animate('{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)', style('*'))\n], {\n params: {\n duration: '200ms',\n delay : '0ms',\n opacity : '0',\n scale : '1',\n x : '0',\n y : '0',\n z : '0'\n }\n});\n\nconst customOutAnimation = animation([\n style('*'),\n animate('{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)', style({\n opacity : '{{opacity}}',\n transform: 'scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})'\n }))\n], {\n params: {\n duration: '200ms',\n delay : '0ms',\n opacity : '0',\n scale : '1',\n x : '0',\n y : '0',\n z : '0'\n }\n});\n\nexport const uploaderAnimations = [\n trigger('animate', [transition('void => *', [useAnimation(customAnimation)])]),\n trigger('animateOut', [transition('* => void', [useAnimation(customOutAnimation)])]),\n\n trigger('animateStagger', [\n transition('* => *',\n query('@*',\n [\n stagger('100ms', [\n animateChild()\n ])\n ], {optional: true})),\n ]),\n];\n","import {HttpEventType, HttpHeaders, HttpRequest, HttpResponse} from '@angular/common/http';\nimport {of} from 'rxjs';\nimport {catchError, last, map, tap} from 'rxjs/operators';\n\nimport {SkApiService} from 'sk-front-lib/api';\nimport {FileType, SkFile} from 'sk-front-lib/model';\nimport {SkUploaderFileItem, SkUploaderFileItemStatus} from './sk-uploader-file-item.model';\n\nexport interface FilterFunction {\n name: string;\n fn: (item?: SkUploaderFileItem, options?: SkFileUploaderOptions) => boolean;\n}\n\nexport interface SkFileUploaderOptions {\n allowedMimeType?: string[];\n allowedFileType?: string[];\n autoUpload?: boolean;\n filters?: FilterFunction[];\n maxFileSize?: number;\n queueLimit?: number;\n asyncLimit?: number;\n additionalParameter?: { [key: string]: any };\n parametersBeforeFiles?: boolean;\n}\n\nexport class SkFileUploader {\n\n public queue: SkUploaderFileItem[] = [];\n public progress = 0;\n\n private _failFilterIndex: number;\n\n public options: SkFileUploaderOptions = {\n autoUpload: false,\n filters: [],\n maxFileSize: 2 * 1024 * 1024 * 1024, // 2GB\n queueLimit: 1,\n asyncLimit: 2,\n };\n\n constructor(private apiService: SkApiService, options?: SkFileUploaderOptions, selectedFiles: SkFile[] = []) {\n this.setOptions(options);\n this.setSelectedFiles(selectedFiles);\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Data Accessor\n // -----------------------------------------------------------------------------------------------------\n\n\n // -----------------------------------------------------------------------------------------------------\n // @ Uploader - Public methods\n // -----------------------------------------------------------------------------------------------------\n\n public setOptions(options: SkFileUploaderOptions): void {\n this.options = Object.assign(this.options, options);\n\n this.options.filters.unshift({ name: 'queueLimit', fn: this._queueLimitFilter });\n\n if (this.options.maxFileSize) {\n this.options.filters.unshift({ name: 'fileSize', fn: this._fileSizeFilter });\n }\n\n if (this.options.allowedFileType) {\n this.options.filters.unshift({ name: 'fileType', fn: this._fileTypeFilter });\n }\n\n if (this.options.allowedMimeType) {\n this.options.filters.unshift({ name: 'mimeType', fn: this._mimeTypeFilter });\n }\n }\n\n public setSelectedFiles(files: SkFile[]): void {\n const items: SkUploaderFileItem[] = files.map(file => SkUploaderFileItem.fromApi(file));\n this.addToQueue(items);\n }\n\n public addToQueue(files: SkUploaderFileItem[], filters?: FilterFunction[] | string): void {\n const arrayOfFilters = this._getFilters(filters);\n\n files.forEach(item => {\n if (this._isValidFile(item, arrayOfFilters, this.options) && !this._findByFilenameInQueue(item.filename)) {\n this.queue.push(item);\n }\n });\n\n this.updateProgress();\n }\n\n public removeFromQueue(file: SkUploaderFileItem): void {\n const index = this.queue.findIndex(value => value.filename === file.filename);\n\n this.queue.splice(index, 1);\n this.updateProgress();\n }\n\n public clearQueue(): void {\n while (this.queue.length) {\n this.removeFromQueue(this.queue[0]);\n }\n this.progress = 0;\n }\n\n public upload(item: SkUploaderFileItem) {\n this._processUpload(item);\n }\n\n public uploadAll(): void {\n const targetItems = this.getNotUploadedItems();\n targetItems.forEach(item => {\n item.prepareUpload();\n });\n\n if (targetItems.length > 0) {\n const max = Math.min(targetItems.length, this.options.asyncLimit);\n for (let i = 0; i < max; i++) {\n this.upload(targetItems[i]);\n }\n }\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Private methods.\n // -----------------------------------------------------------------------------------------------------\n\n private updateProgress() {\n const uploaded = this.getDoneItems().length;\n const current = uploaded / this.queue.length * 100;\n this.progress = Math.ceil(current);\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Uploader - Filters\n // -----------------------------------------------------------------------------------------------------\n\n protected _isValidFile(file: SkUploaderFileItem, filters: FilterFunction[], options: SkFileUploaderOptions): boolean {\n this._failFilterIndex = -1;\n return !filters.length ? true : filters.every((filter: FilterFunction) => {\n this._failFilterIndex++;\n return filter.fn.call(this, file, options);\n });\n }\n\n protected _getFilters(filters: FilterFunction[] | string): FilterFunction[] {\n if (!filters) {\n return this.options.filters;\n }\n if (Array.isArray(filters)) {\n return filters;\n }\n if (typeof filters === 'string') {\n const names = filters.match(/[^\\s,]+/g);\n return this.options.filters\n .filter((filter: any) => names.indexOf(filter.name) !== -1);\n }\n return this.options.filters;\n }\n\n protected _queueLimitFilter(): boolean {\n return this.options.queueLimit === undefined || this.queue.length < this.options.queueLimit;\n }\n\n public _mimeTypeFilter(item: SkUploaderFileItem): boolean {\n return !(this.options.allowedMimeType && this.options.allowedMimeType.indexOf(item.mime) === -1);\n }\n\n public _fileSizeFilter(item: SkUploaderFileItem): boolean {\n return !(this.options.maxFileSize && item.size > this.options.maxFileSize);\n }\n\n public _fileTypeFilter(item: SkUploaderFileItem): boolean {\n return !(this.options.allowedFileType &&\n this.options.allowedFileType.indexOf(FileType.getMimeClass(item.localFile ? item.localFile : item.skFile)) === -1);\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Uploader - Upload biz logic\n // -----------------------------------------------------------------------------------------------------\n\n private _processUpload(item: SkUploaderFileItem) {\n if (item.state !== SkUploaderFileItemStatus.READY) {\n return;\n }\n\n const formData = new FormData();\n formData.append('file', item.localFile, item.filename);\n\n const request = new HttpRequest<any>('POST', this.apiService.apiServer + '/api/public/files/upload', formData, {\n reportProgress: true,\n headers: new HttpHeaders().set('Authorization', 'Bearer ' + this.apiService.getToken()).set('ngsw-bypass', 'true')\n });\n\n this.apiService.rawRequest<SkFile>(request).pipe(\n tap(event => {\n switch (event.type) {\n case HttpEventType.UploadProgress:\n // Compute and show the % done:\n const percentDone = Math.ceil(100 * event.loaded / event.total);\n item.progress = percentDone;\n\n if (item.progress >= 99) {\n item.state = SkUploaderFileItemStatus.PROCESS;\n } else {\n item.state = SkUploaderFileItemStatus.UPLOADING;\n }\n return;\n case HttpEventType.Response:\n item.state = SkUploaderFileItemStatus.DONE;\n return;\n default:\n return;\n }\n }),\n last(), // return last (completed) message to caller\n map((result: HttpResponse<any>) => result.body.data ? new SkFile(result.body.data) : null),\n catchError(err => {\n console.log(err);\n item.state = SkUploaderFileItemStatus.ERROR;\n return of(null);\n })\n ).subscribe(result => {\n if (result instanceof SkFile) {\n item.skFile = result;\n }\n\n this.updateProgress();\n const nextItems = this.getReadyItems();\n if (nextItems.length > 0) {\n this.upload(nextItems[0]);\n }\n });\n }\n\n\n\n\n\n\n\n\n // -----------------------------------------------------------------------------------------------------\n // @ Data Handlers\n // -----------------------------------------------------------------------------------------------------\n\n private _findByFilenameInQueue(name: string): boolean {\n return this.queue.findIndex(value => value.filename === name) > -1;\n }\n\n public getNotUploadedItems(): SkUploaderFileItem[] {\n return this.queue.filter((item: SkUploaderFileItem) => item.state === SkUploaderFileItemStatus.WAIT);\n }\n\n public getReadyItems(): SkUploaderFileItem[] {\n return this.queue.filter((item: SkUploaderFileItem) => item.state === SkUploaderFileItemStatus.READY);\n }\n\n public getDoneItems(): SkUploaderFileItem[] {\n return this.queue.filter((item: SkUploaderFileItem) => item.state === SkUploaderFileItemStatus.DONE);\n }\n\n}\n","import {Component, ElementRef, HostListener, Inject, OnInit, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\nimport {SkApiService} from 'sk-front-lib/api';\nimport {SkUploaderFileItem} from './sk-uploader-file-item.model';\nimport {uploaderAnimations} from './sk-uploader.animation';\nimport {SkFileUploader} from './sk-uploader.class';\n\n@Component({\n selector: 'sk-uploader',\n templateUrl: './sk-uploader.component.html',\n styleUrls: ['./sk-uploader.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: uploaderAnimations\n})\nexport class SkUploaderComponent implements OnInit {\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: any,\n public dialogRef: MatDialogRef<SkUploaderComponent>,\n private _apiService: SkApiService) {\n this.uploader = new SkFileUploader(this._apiService, data.options, data.selectedFile);\n }\n uploader: SkFileUploader;\n\n @ViewChild('file', {static: false})\n fileEl: ElementRef;\n\n @ViewChild('drag', {static: false})\n dragEl: ElementRef;\n\n\n dragClassActive = false;\n\n private static _getTransfer(event: any) {\n return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer;\n }\n\n private static _haveFiles(types: any): any {\n if (!types) {\n return false;\n }\n\n if (types.indexOf) {\n return types.indexOf('Files') !== -1;\n } else if (types.contains) {\n return types.contains('Files');\n } else {\n return false;\n }\n }\n\n ngOnInit(): void {\n\n }\n\n save() {\n this.dialogRef.close(this.uploader.getDoneItems());\n }\n\n @HostListener('drop', ['$event'])\n public onDrop(event: any): void {\n const transfer = SkUploaderComponent._getTransfer(event);\n if (!transfer) {\n return;\n }\n this.preventAndStop(event);\n this.fileAdd(transfer.files);\n this.dragClassActive = false;\n }\n\n @HostListener('dragover', ['$event'])\n public onDragOver(event: any): void {\n const transfer = SkUploaderComponent._getTransfer(event);\n if (!SkUploaderComponent._haveFiles(transfer.types)) {\n return;\n }\n this.preventAndStop(event);\n this.dragClassActive = true;\n }\n\n @HostListener('dragleave', ['$event'])\n public onDragLeave(event: any): any {\n if (event.relatedTarget === this.dragEl.nativeElement) {\n return;\n }\n\n this.preventAndStop(event);\n this.dragClassActive = false;\n }\n\n\n // File methods\n // onFile\n\n public fileAdd(files: any) {\n if (!(files instanceof FileList)) {\n return;\n }\n\n const list: SkUploaderFileItem[] = [];\n for (let i = 0; i < files.length; i++) {\n list.push(SkUploaderFileItem.fromLocalFile(files.item(i)));\n }\n\n this.uploader.addToQueue(list);\n }\n\n public onBrowseFileComplete(): any {\n const files = this.fileEl.nativeElement.files;\n this.fileAdd(files);\n }\n\n public onDragComponentClick(): any {\n this.fileEl.nativeElement.click();\n }\n\n public preventAndStop(event: any): any {\n event.preventDefault();\n event.stopPropagation();\n }\n\n\n}\n","import {Directive, EventEmitter, HostListener, Input, Output} from '@angular/core';\nimport {MatDialog} from '@angular/material/dialog';\nimport * as _ from 'lodash';\nimport {SkFile} from 'sk-front-lib/model';\nimport {SkUploaderFileItem} from './sk-uploader-file-item.model';\nimport {SkFileUploaderOptions} from './sk-uploader.class';\nimport {SkUploaderComponent} from './sk-uploader.component';\n\n@Directive({\n selector: '[skUploader]'\n})\nexport class SkUploaderDirective {\n\n @Input() skUploaderOptions: SkFileUploaderOptions;\n @Input() skSelected: SkFile[] | SkFile;\n\n @Output() skUploaderFileSelected: EventEmitter<any> = new EventEmitter<any>();\n\n @HostListener('click') onClick() {\n this._dialog.open(SkUploaderComponent, {\n panelClass: 'mat-dialog-no-padding',\n closeOnNavigation: true,\n autoFocus: false,\n data: {\n options: this.skUploaderOptions,\n selectedFile: !this.skSelected ? [] : (_.isArray(this.skSelected) ? this.skSelected : [<SkFile>this.skSelected])\n }\n }).afterClosed().subscribe((result: SkUploaderFileItem[]) => {\n if (result) {\n this.skUploaderFileSelected.emit(result.map(item => item.skFile));\n }\n });\n }\n\n constructor(private _dialog: MatDialog) { }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatListModule} from '@angular/material/list';\nimport {MatProgressBarModule} from '@angular/material/progress-bar';\nimport {MatToolbarModule} from '@angular/material/toolbar';\n\nimport {SkFrontLibModule} from 'sk-front-lib';\n\nimport {SkUploaderComponent} from './sk-uploader.component';\nimport {SkUploaderDirective} from './sk-uploader.directive';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatDialogModule,\n MatToolbarModule,\n MatButtonModule,\n MatIconModule,\n MatListModule,\n MatProgressBarModule,\n\n SkFrontLibModule\n ],\n declarations: [\n SkUploaderComponent,\n SkUploaderDirective\n ],\n exports: [\n SkUploaderComponent,\n SkUploaderDirective\n ],\n entryComponents: [\n SkUploaderComponent\n ]\n})\nexport class SkUploaderModule {\n}\n"]}
|