This commit is contained in:
324
node_modules/decap-cms-widget-file/CHANGELOG.md
generated
vendored
Normal file
324
node_modules/decap-cms-widget-file/CHANGELOG.md
generated
vendored
Normal file
@@ -0,0 +1,324 @@
|
||||
# Change Log
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [3.1.3](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@3.1.2...decap-cms-widget-file@3.1.3) (2024-08-13)
|
||||
|
||||
### Reverts
|
||||
|
||||
- Revert "Update dependencies (#7264)" ([22d483a](https://github.com/decaporg/decap-cms/commit/22d483a5b0c654071ae05735ac4f49abdc13d38c)), closes [#7264](https://github.com/decaporg/decap-cms/issues/7264)
|
||||
|
||||
## [3.1.2](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@3.1.1...decap-cms-widget-file@3.1.2) (2024-08-13)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
## [3.1.1](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@3.1.0-beta.2...decap-cms-widget-file@3.1.1) (2024-03-21)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
# [3.1.0](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@3.1.0-beta.2...decap-cms-widget-file@3.1.0) (2024-02-01)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
# [3.1.0-beta.2](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@3.1.0-beta.1...decap-cms-widget-file@3.1.0-beta.2) (2024-01-31)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
# [3.1.0-beta.1](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@3.1.0-beta.0...decap-cms-widget-file@3.1.0-beta.1) (2024-01-16)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- cancelling empty prompt ([#7010](https://github.com/decaporg/decap-cms/issues/7010)) ([2ec8406](https://github.com/decaporg/decap-cms/commit/2ec8406a9261d34712a63ef9e51aa8d42d0cdba1))
|
||||
|
||||
# [3.1.0-beta.0](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@3.1.0...decap-cms-widget-file@3.1.0-beta.0) (2023-10-20)
|
||||
|
||||
### Reverts
|
||||
|
||||
- Revert "chore(release): publish" ([b89fc89](https://github.com/decaporg/decap-cms/commit/b89fc894dfbb5f4136b2e5427fd25a29378a58c6))
|
||||
|
||||
## [3.0.4](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@3.0.3...decap-cms-widget-file@3.0.4) (2023-10-13)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
## [3.0.3](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@3.0.2...decap-cms-widget-file@3.0.3) (2023-10-10)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- change file-control default value to string ([#6934](https://github.com/decaporg/decap-cms/issues/6934)) ([90c9844](https://github.com/decaporg/decap-cms/commit/90c984477488ed08c55a42eb1d3b45accf46c832))
|
||||
|
||||
## [3.0.2](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@3.0.1...decap-cms-widget-file@3.0.2) (2023-09-06)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
## [3.0.1](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@3.0.0...decap-cms-widget-file@3.0.1) (2023-08-25)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- update peer dependencies ([#6886](https://github.com/decaporg/decap-cms/issues/6886)) ([e580ce5](https://github.com/decaporg/decap-cms/commit/e580ce52ce5f80fa040e8fbcab7fed0744f4f695))
|
||||
|
||||
# [3.0.0](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@2.13.0...decap-cms-widget-file@3.0.0) (2023-08-18)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
# [2.13.0](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@2.13.0-beta.0...decap-cms-widget-file@2.13.0) (2023-08-18)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
# 2.13.0-beta.0 (2023-08-18)
|
||||
|
||||
### Features
|
||||
|
||||
- rename packages ([#6863](https://github.com/decaporg/decap-cms/issues/6863)) ([d515e7b](https://github.com/decaporg/decap-cms/commit/d515e7bd33216a775d96887b08c4f7b1962941bb))
|
||||
|
||||
## [2.12.2-beta.0](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@2.12.1...decap-cms-widget-file@2.12.2-beta.0) (2023-07-27)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
## [2.12.1](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@2.12.0...decap-cms-widget-file@2.12.1) (2022-04-13)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
# [2.12.0](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@2.11.1...decap-cms-widget-file@2.12.0) (2022-03-28)
|
||||
|
||||
### Features
|
||||
|
||||
- **image-widget:** media library gallery tools ([#6087](https://github.com/decaporg/decap-cms/issues/6087)) ([#6236](https://github.com/decaporg/decap-cms/issues/6236)) ([80c577a](https://github.com/decaporg/decap-cms/commit/80c577a462e91e29ce3517cf1419af35d9de3928))
|
||||
|
||||
## [2.11.1](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@2.11.0...decap-cms-widget-file@2.11.1) (2021-08-17)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- **deps:** update dependency array-move to v4 ([#5713](https://github.com/decaporg/decap-cms/issues/5713)) ([ca06a0b](https://github.com/decaporg/decap-cms/commit/ca06a0b23ec0885be0b80caf1cbf37b083a47f42))
|
||||
|
||||
# [2.11.0](https://github.com/decaporg/decap-cms/compare/decap-cms-widget-file@2.10.1...decap-cms-widget-file@2.11.0) (2021-07-05)
|
||||
|
||||
### Features
|
||||
|
||||
- image widget insert from url should be optional ([#5572](https://github.com/decaporg/decap-cms/issues/5572)) ([18724ff](https://github.com/decaporg/decap-cms/commit/18724ff991c4b8b16de1df40511dad368578a4b2))
|
||||
|
||||
## [2.10.1](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.10.0...decap-cms-widget-file@2.10.1) (2021-05-12)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- **deps:** update dependency react-sortable-hoc to v2 ([#5371](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/5371)) ([b5dabc2](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/b5dabc212953348bee83d41c36ca1f949c87b6b5))
|
||||
|
||||
# [2.10.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.9.2...decap-cms-widget-file@2.10.0) (2021-05-04)
|
||||
|
||||
### Features
|
||||
|
||||
- added react 17 as peer dependency in packages ([#5316](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/5316)) ([9e42380](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/9e423805707321396eec137f5b732a5b07a0dd3f))
|
||||
|
||||
## [2.9.2](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.9.1...decap-cms-widget-file@2.9.2) (2021-02-23)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
## [2.9.1](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.9.0...decap-cms-widget-file@2.9.1) (2021-02-10)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
# [2.9.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.8.0...decap-cms-widget-file@2.9.0) (2021-02-01)
|
||||
|
||||
### Features
|
||||
|
||||
- **widget-image:** enable images ordering ([#4857](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/4857)) ([30c1195](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/30c11954d586c43a00c8c61fa467873bfe1ed1fc))
|
||||
|
||||
# [2.8.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.7.4...decap-cms-widget-file@2.8.0) (2021-01-14)
|
||||
|
||||
### Features
|
||||
|
||||
- **widget-file:** allow adding file from url ([#4700](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/4700)) ([9e277ad](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/9e277ad851ea598405e02a7c11624f337da18260))
|
||||
|
||||
## [2.7.4](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.7.3...decap-cms-widget-file@2.7.4) (2020-09-15)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
## 2.7.3 (2020-09-08)
|
||||
|
||||
### Reverts
|
||||
|
||||
- Revert "chore(release): publish" ([828bb16](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/828bb16415b8c22a34caa19c50c38b24ffe9ceae))
|
||||
|
||||
## 2.7.2 (2020-08-20)
|
||||
|
||||
### Reverts
|
||||
|
||||
- Revert "chore(release): publish" ([8262487](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/82624879ccbcb16610090041db28f00714d924c8))
|
||||
|
||||
## 2.7.1 (2020-07-27)
|
||||
|
||||
### Reverts
|
||||
|
||||
- Revert "chore(release): publish" ([118d50a](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/118d50a7a70295f25073e564b5161aa2b9883056))
|
||||
|
||||
# [2.7.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.6.4...decap-cms-widget-file@2.7.0) (2020-06-18)
|
||||
|
||||
### Features
|
||||
|
||||
- add widgets schema validation ([#3841](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/3841)) ([2b46608](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/2b46608f86d22c8ad34f75e396be7c34462d9e99))
|
||||
|
||||
## [2.6.4](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.6.3...decap-cms-widget-file@2.6.4) (2020-04-06)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- **widget-image:** multiple image support ([#3538](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/3538)) ([76732f7](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/76732f7208d8f46bbb6fd009729639ded30fae6e))
|
||||
|
||||
## [2.6.3](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.6.2...decap-cms-widget-file@2.6.3) (2020-03-30)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- allow widgets to control value to be validated ([#3448](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/3448)) ([ae1917c](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/ae1917c8181892a439d0828d98992788fb48d65c))
|
||||
|
||||
## [2.6.2](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.6.1...decap-cms-widget-file@2.6.2) (2020-02-14)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
## [2.6.1](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.6.0...decap-cms-widget-file@2.6.1) (2020-02-13)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- change getAsset to not return a promise ([#3232](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/3232)) ([ab685e8](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/ab685e85943d1ac48142f157683bc2126fd6af16))
|
||||
|
||||
# [2.6.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.5.3...decap-cms-widget-file@2.6.0) (2020-02-10)
|
||||
|
||||
### Features
|
||||
|
||||
- field based media/public folders ([#3208](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/3208)) ([97bc0c8](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/97bc0c8dc489e736f89d748ba832d78400fe4332))
|
||||
|
||||
### Reverts
|
||||
|
||||
- Revert "chore(release): publish" ([a015d1d](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/a015d1d92a4b1c0130c44fcef1c9ecdb157a0f07))
|
||||
|
||||
## [2.5.3](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.5.2...decap-cms-widget-file@2.5.3) (2020-02-06)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- **locale:** remove hard coded strings ([#3193](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/3193)) ([fc91bf8](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/fc91bf8781e65ce1dc946363dbb10419a145c66b))
|
||||
|
||||
## [2.5.2](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.5.1...decap-cms-widget-file@2.5.2) (2020-01-26)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- **media-library:** pass correct value to Asset component ([#3140](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/3140)) ([b1026c9](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/b1026c980c70f0b45b47cbe555f4984aa9eea310))
|
||||
|
||||
## [2.5.1](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.5.0...decap-cms-widget-file@2.5.1) (2020-01-23)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- **widget-image:** hide image overflow in widget control ([#3131](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/3131)) ([db2cbb6](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/db2cbb6f5d4136cc7fadba1c2d8977b0fd813c9b))
|
||||
|
||||
# [2.5.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.5.0-beta.0...decap-cms-widget-file@2.5.0) (2020-01-07)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
# [2.5.0-beta.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.4.3...decap-cms-widget-file@2.5.0-beta.0) (2019-12-18)
|
||||
|
||||
### Features
|
||||
|
||||
- bundle assets with content ([#2958](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/2958)) ([2b41d8a](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/2b41d8a838a9c8a6b21cde2ddd16b9288334e298))
|
||||
|
||||
## [2.4.3](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.4.2...decap-cms-widget-file@2.4.3) (2019-07-24)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
## [2.4.2](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.4.2-beta.0...decap-cms-widget-file@2.4.2) (2019-04-10)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
## [2.4.2-beta.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.4.1...decap-cms-widget-file@2.4.2-beta.0) (2019-04-05)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
## [2.4.1](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.4.1-beta.2...decap-cms-widget-file@2.4.1) (2019-03-29)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
## [2.4.1-beta.2](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.4.1-beta.1...decap-cms-widget-file@2.4.1-beta.2) (2019-03-28)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
## [2.4.1-beta.1](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.4.1-beta.0...decap-cms-widget-file@2.4.1-beta.1) (2019-03-26)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- export on decap-cms and maps on esm ([#2244](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/2244)) ([6ffd13b](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/6ffd13b))
|
||||
|
||||
## [2.4.1-beta.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.4.0...decap-cms-widget-file@2.4.1-beta.0) (2019-03-25)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- update peer dep versions ([#2234](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/2234)) ([7987091](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/7987091))
|
||||
|
||||
# [2.4.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.3.0...decap-cms-widget-file@2.4.0) (2019-03-22)
|
||||
|
||||
### Features
|
||||
|
||||
- add ES module builds ([#2215](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/2215)) ([d142b32](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/d142b32))
|
||||
|
||||
# [2.3.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.3.0-beta.0...decap-cms-widget-file@2.3.0) (2019-03-22)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
# [2.3.0-beta.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.2.1-beta.0...decap-cms-widget-file@2.3.0-beta.0) (2019-03-21)
|
||||
|
||||
### Features
|
||||
|
||||
- provide usable UMD builds for all packages ([#2141](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/2141)) ([82cc794](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/82cc794))
|
||||
|
||||
## [2.2.1-beta.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.2.1-alpha.0...decap-cms-widget-file@2.2.1-beta.0) (2019-03-15)
|
||||
|
||||
### Features
|
||||
|
||||
- upgrade to Emotion 10 ([#2166](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/2166)) ([ccef446](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/ccef446))
|
||||
|
||||
## [2.2.1-alpha.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.2.0...decap-cms-widget-file@2.2.1-alpha.0) (2019-03-14)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
# [2.2.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.1.0...decap-cms-widget-file@2.2.0) (2018-12-04)
|
||||
|
||||
### Features
|
||||
|
||||
- add cloudinary support ([#1932](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/1932)) ([1fc2f50](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/1fc2f50))
|
||||
|
||||
<a name="2.1.0"></a>
|
||||
|
||||
# [2.1.0](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.0.5...decap-cms-widget-file@2.1.0) (2018-09-06)
|
||||
|
||||
### Features
|
||||
|
||||
- **media:** add external media library support, Uploadcare integration ([#1602](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/issues/1602)) ([0596904](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/commit/0596904))
|
||||
|
||||
<a name="2.0.5"></a>
|
||||
|
||||
## [2.0.5](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.0.4...decap-cms-widget-file@2.0.5) (2018-08-24)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
<a name="2.0.4"></a>
|
||||
|
||||
## [2.0.4](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.0.3...decap-cms-widget-file@2.0.4) (2018-08-07)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
<a name="2.0.3"></a>
|
||||
|
||||
## [2.0.3](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.0.2...decap-cms-widget-file@2.0.3) (2018-08-01)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
<a name="2.0.2"></a>
|
||||
|
||||
## [2.0.2](https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file/compare/decap-cms-widget-file@2.0.1...decap-cms-widget-file@2.0.2) (2018-07-28)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
|
||||
<a name="2.0.1"></a>
|
||||
|
||||
## 2.0.1 (2018-07-26)
|
||||
|
||||
<a name="2.0.0"></a>
|
||||
|
||||
# 2.0.0 (2018-07-26)
|
||||
|
||||
**Note:** Version bump only for package decap-cms-widget-file
|
||||
22
node_modules/decap-cms-widget-file/LICENSE
generated
vendored
Normal file
22
node_modules/decap-cms-widget-file/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
Copyright (c) 2016 Netlify <decap@p-m.si>
|
||||
|
||||
MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
9
node_modules/decap-cms-widget-file/README.md
generated
vendored
Normal file
9
node_modules/decap-cms-widget-file/README.md
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
# Docs coming soon!
|
||||
|
||||
Decap CMS was converted from a single npm package to a "monorepo" of over 20 packages.
|
||||
We haven't created a README for this package yet, but you can:
|
||||
|
||||
1. Check out the [main readme](https://github.com/decaporg/decap-cms/#readme) or the [documentation
|
||||
site](https://www.decapcms.org) for more info.
|
||||
2. Reach out to the [community chat](https://decapcms.org/chat/) if you need help.
|
||||
3. Help out and [write the readme yourself](https://github.com/decaporg/decap-cms/edit/main/packages/decap-cms-widget-file/README.md)!
|
||||
8
node_modules/decap-cms-widget-file/dist/decap-cms-widget-file.js
generated
vendored
Normal file
8
node_modules/decap-cms-widget-file/dist/decap-cms-widget-file.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
35
node_modules/decap-cms-widget-file/dist/decap-cms-widget-file.js.LICENSE.txt
generated
vendored
Normal file
35
node_modules/decap-cms-widget-file/dist/decap-cms-widget-file.js.LICENSE.txt
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
/*!
|
||||
localForage -- Offline Storage, Improved
|
||||
Version 1.10.0
|
||||
https://localforage.github.io/localForage
|
||||
(c) 2013-2017 Mozilla, Apache License 2.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* @license React
|
||||
* react-dom.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @license React
|
||||
* scheduler.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/**
|
||||
* [js-sha256]{@link https://github.com/emn178/js-sha256}
|
||||
*
|
||||
* @version 0.9.0
|
||||
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
||||
* @copyright Chen, Yi-Cyuan 2014-2017
|
||||
* @license MIT
|
||||
*/
|
||||
1
node_modules/decap-cms-widget-file/dist/decap-cms-widget-file.js.map
generated
vendored
Normal file
1
node_modules/decap-cms-widget-file/dist/decap-cms-widget-file.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
71
node_modules/decap-cms-widget-file/dist/esm/FilePreview.js
generated
vendored
Normal file
71
node_modules/decap-cms-widget-file/dist/esm/FilePreview.js
generated
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var _base = _interopRequireDefault(require("@emotion/styled/base"));
|
||||
var _react = _interopRequireDefault(require("react"));
|
||||
var _propTypes = _interopRequireDefault(require("prop-types"));
|
||||
var _immutable = require("immutable");
|
||||
var _decapCmsUiDefault = require("decap-cms-ui-default");
|
||||
var _react2 = require("@emotion/react");
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
||||
const FileLink = /*#__PURE__*/(0, _base.default)(({
|
||||
href,
|
||||
path
|
||||
}) => (0, _react2.jsx)("a", {
|
||||
href: href,
|
||||
rel: "noopener noreferrer",
|
||||
target: "_blank"
|
||||
}, path), {
|
||||
target: "ecp3s3o0",
|
||||
label: "FileLink"
|
||||
})(process.env.NODE_ENV === "production" ? {
|
||||
name: "4zleql",
|
||||
styles: "display:block"
|
||||
} : {
|
||||
name: "4zleql",
|
||||
styles: "display:block",
|
||||
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9GaWxlUHJldmlldy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVRSIsImZpbGUiOiIuLi8uLi9zcmMvRmlsZVByZXZpZXcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IExpc3QgfSBmcm9tICdpbW11dGFibGUnO1xuaW1wb3J0IHsgV2lkZ2V0UHJldmlld0NvbnRhaW5lciB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuY29uc3QgRmlsZUxpbmsgPSBzdHlsZWQoKHsgaHJlZiwgcGF0aCB9KSA9PiAoXG4gIDxhIGhyZWY9e2hyZWZ9IHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICB7cGF0aH1cbiAgPC9hPlxuKSlgXG4gIGRpc3BsYXk6IGJsb2NrO1xuYDtcblxuZnVuY3Rpb24gRmlsZUxpbmtMaXN0KHsgdmFsdWVzLCBnZXRBc3NldCwgZmllbGQgfSkge1xuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICB7dmFsdWVzLm1hcCh2YWx1ZSA9PiAoXG4gICAgICAgIDxGaWxlTGluayBrZXk9e3ZhbHVlfSBwYXRoPXt2YWx1ZX0gaHJlZj17Z2V0QXNzZXQodmFsdWUsIGZpZWxkKX0gLz5cbiAgICAgICkpfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBGaWxlQ29udGVudChwcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBnZXRBc3NldCwgZmllbGQgfSA9IHByb3BzO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgTGlzdC5pc0xpc3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIDxGaWxlTGlua0xpc3QgdmFsdWVzPXt2YWx1ZX0gZ2V0QXNzZXQ9e2dldEFzc2V0fSBmaWVsZD17ZmllbGR9IC8+O1xuICB9XG4gIHJldHVybiA8RmlsZUxpbmsga2V5PXt2YWx1ZX0gcGF0aD17dmFsdWV9IGhyZWY9e2dldEFzc2V0KHZhbHVlLCBmaWVsZCl9IC8+O1xufVxuXG5mdW5jdGlvbiBGaWxlUHJldmlldyhwcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxXaWRnZXRQcmV2aWV3Q29udGFpbmVyPlxuICAgICAge3Byb3BzLnZhbHVlID8gPEZpbGVDb250ZW50IHsuLi5wcm9wc30gLz4gOiBudWxsfVxuICAgIDwvV2lkZ2V0UHJldmlld0NvbnRhaW5lcj5cbiAgKTtcbn1cblxuRmlsZVByZXZpZXcucHJvcFR5cGVzID0ge1xuICBnZXRBc3NldDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5ub2RlLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsZVByZXZpZXc7XG4iXX0= */",
|
||||
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
||||
});
|
||||
function FileLinkList({
|
||||
values,
|
||||
getAsset,
|
||||
field
|
||||
}) {
|
||||
return (0, _react2.jsx)("div", null, values.map(value => (0, _react2.jsx)(FileLink, {
|
||||
key: value,
|
||||
path: value,
|
||||
href: getAsset(value, field)
|
||||
})));
|
||||
}
|
||||
function FileContent(props) {
|
||||
const {
|
||||
value,
|
||||
getAsset,
|
||||
field
|
||||
} = props;
|
||||
if (Array.isArray(value) || _immutable.List.isList(value)) {
|
||||
return (0, _react2.jsx)(FileLinkList, {
|
||||
values: value,
|
||||
getAsset: getAsset,
|
||||
field: field
|
||||
});
|
||||
}
|
||||
return (0, _react2.jsx)(FileLink, {
|
||||
key: value,
|
||||
path: value,
|
||||
href: getAsset(value, field)
|
||||
});
|
||||
}
|
||||
function FilePreview(props) {
|
||||
return (0, _react2.jsx)(_decapCmsUiDefault.WidgetPreviewContainer, null, props.value ? (0, _react2.jsx)(FileContent, props) : null);
|
||||
}
|
||||
FilePreview.propTypes = {
|
||||
getAsset: _propTypes.default.func.isRequired,
|
||||
value: _propTypes.default.node
|
||||
};
|
||||
var _default = exports.default = FilePreview;
|
||||
31
node_modules/decap-cms-widget-file/dist/esm/index.js
generated
vendored
Normal file
31
node_modules/decap-cms-widget-file/dist/esm/index.js
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = exports.DecapCmsWidgetFile = void 0;
|
||||
var _withFileControl = _interopRequireDefault(require("./withFileControl"));
|
||||
var _FilePreview = _interopRequireDefault(require("./FilePreview"));
|
||||
var _schema = _interopRequireDefault(require("./schema"));
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
||||
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
||||
function _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; }
|
||||
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
||||
function _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); }
|
||||
const controlComponent = (0, _withFileControl.default)();
|
||||
function Widget(opts = {}) {
|
||||
return _objectSpread({
|
||||
name: 'file',
|
||||
controlComponent,
|
||||
previewComponent: _FilePreview.default,
|
||||
schema: _schema.default
|
||||
}, opts);
|
||||
}
|
||||
const DecapCmsWidgetFile = exports.DecapCmsWidgetFile = {
|
||||
Widget,
|
||||
controlComponent,
|
||||
previewComponent: _FilePreview.default,
|
||||
withFileControl: _withFileControl.default
|
||||
};
|
||||
var _default = exports.default = DecapCmsWidgetFile;
|
||||
13
node_modules/decap-cms-widget-file/dist/esm/schema.js
generated
vendored
Normal file
13
node_modules/decap-cms-widget-file/dist/esm/schema.js
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var _default = exports.default = {
|
||||
properties: {
|
||||
allow_multiple: {
|
||||
type: 'boolean'
|
||||
}
|
||||
}
|
||||
};
|
||||
470
node_modules/decap-cms-widget-file/dist/esm/withFileControl.js
generated
vendored
Normal file
470
node_modules/decap-cms-widget-file/dist/esm/withFileControl.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
42
node_modules/decap-cms-widget-file/package.json
generated
vendored
Normal file
42
node_modules/decap-cms-widget-file/package.json
generated
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"name": "decap-cms-widget-file",
|
||||
"description": "Widget for uploading files in Decap CMS.",
|
||||
"version": "3.1.3",
|
||||
"homepage": "https://www.decapcms.org/docs/widgets/#file",
|
||||
"repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file",
|
||||
"bugs": "https://github.com/decaporg/decap-cms/issues",
|
||||
"module": "dist/esm/index.js",
|
||||
"main": "dist/decap-cms-widget-file.js",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"decap-cms",
|
||||
"widget",
|
||||
"file",
|
||||
"upload",
|
||||
"file-upload"
|
||||
],
|
||||
"sideEffects": false,
|
||||
"scripts": {
|
||||
"develop": "npm run build:esm -- --watch",
|
||||
"build": "cross-env NODE_ENV=production webpack",
|
||||
"build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward"
|
||||
},
|
||||
"dependencies": {
|
||||
"@dnd-kit/core": "^6.0.8",
|
||||
"@dnd-kit/modifiers": "^6.0.1",
|
||||
"@dnd-kit/sortable": "^7.0.2",
|
||||
"array-move": "4.0.0",
|
||||
"common-tags": "^1.8.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@emotion/react": "^11.11.1",
|
||||
"@emotion/styled": "^11.11.0",
|
||||
"decap-cms-ui-default": "^3.0.0",
|
||||
"immutable": "^3.7.6",
|
||||
"prop-types": "^15.7.2",
|
||||
"react": "^18.2.0",
|
||||
"react-immutable-proptypes": "^2.1.0",
|
||||
"uuid": "^8.3.2"
|
||||
},
|
||||
"gitHead": "64d91b8bb3d0a93dd36c53800cdac4ba2e435000"
|
||||
}
|
||||
46
node_modules/decap-cms-widget-file/src/FilePreview.js
generated
vendored
Normal file
46
node_modules/decap-cms-widget-file/src/FilePreview.js
generated
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import styled from '@emotion/styled';
|
||||
import { List } from 'immutable';
|
||||
import { WidgetPreviewContainer } from 'decap-cms-ui-default';
|
||||
|
||||
const FileLink = styled(({ href, path }) => (
|
||||
<a href={href} rel="noopener noreferrer" target="_blank">
|
||||
{path}
|
||||
</a>
|
||||
))`
|
||||
display: block;
|
||||
`;
|
||||
|
||||
function FileLinkList({ values, getAsset, field }) {
|
||||
return (
|
||||
<div>
|
||||
{values.map(value => (
|
||||
<FileLink key={value} path={value} href={getAsset(value, field)} />
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function FileContent(props) {
|
||||
const { value, getAsset, field } = props;
|
||||
if (Array.isArray(value) || List.isList(value)) {
|
||||
return <FileLinkList values={value} getAsset={getAsset} field={field} />;
|
||||
}
|
||||
return <FileLink key={value} path={value} href={getAsset(value, field)} />;
|
||||
}
|
||||
|
||||
function FilePreview(props) {
|
||||
return (
|
||||
<WidgetPreviewContainer>
|
||||
{props.value ? <FileContent {...props} /> : null}
|
||||
</WidgetPreviewContainer>
|
||||
);
|
||||
}
|
||||
|
||||
FilePreview.propTypes = {
|
||||
getAsset: PropTypes.func.isRequired,
|
||||
value: PropTypes.node,
|
||||
};
|
||||
|
||||
export default FilePreview;
|
||||
18
node_modules/decap-cms-widget-file/src/index.js
generated
vendored
Normal file
18
node_modules/decap-cms-widget-file/src/index.js
generated
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
import withFileControl from './withFileControl';
|
||||
import previewComponent from './FilePreview';
|
||||
import schema from './schema';
|
||||
|
||||
const controlComponent = withFileControl();
|
||||
|
||||
function Widget(opts = {}) {
|
||||
return {
|
||||
name: 'file',
|
||||
controlComponent,
|
||||
previewComponent,
|
||||
schema,
|
||||
...opts,
|
||||
};
|
||||
}
|
||||
|
||||
export const DecapCmsWidgetFile = { Widget, controlComponent, previewComponent, withFileControl };
|
||||
export default DecapCmsWidgetFile;
|
||||
5
node_modules/decap-cms-widget-file/src/schema.js
generated
vendored
Normal file
5
node_modules/decap-cms-widget-file/src/schema.js
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
export default {
|
||||
properties: {
|
||||
allow_multiple: { type: 'boolean' },
|
||||
},
|
||||
};
|
||||
494
node_modules/decap-cms-widget-file/src/withFileControl.js
generated
vendored
Normal file
494
node_modules/decap-cms-widget-file/src/withFileControl.js
generated
vendored
Normal file
@@ -0,0 +1,494 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import styled from '@emotion/styled';
|
||||
import { css } from '@emotion/react';
|
||||
import { Map, List } from 'immutable';
|
||||
import { once } from 'lodash';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { oneLine } from 'common-tags';
|
||||
import {
|
||||
lengths,
|
||||
components,
|
||||
buttons,
|
||||
borders,
|
||||
effects,
|
||||
shadows,
|
||||
IconButton,
|
||||
} from 'decap-cms-ui-default';
|
||||
import { basename } from 'decap-cms-lib-util';
|
||||
import { arrayMoveImmutable as arrayMove } from 'array-move';
|
||||
import {
|
||||
DndContext,
|
||||
MouseSensor,
|
||||
TouchSensor,
|
||||
closestCenter,
|
||||
useSensor,
|
||||
useSensors,
|
||||
} from '@dnd-kit/core';
|
||||
import { SortableContext, useSortable } from '@dnd-kit/sortable';
|
||||
import { CSS } from '@dnd-kit/utilities';
|
||||
import { restrictToParentElement } from '@dnd-kit/modifiers';
|
||||
|
||||
const MAX_DISPLAY_LENGTH = 50;
|
||||
|
||||
const ImageWrapper = styled.div`
|
||||
flex-basis: 155px;
|
||||
width: 155px;
|
||||
height: 100px;
|
||||
margin-right: 20px;
|
||||
margin-bottom: 20px;
|
||||
border: ${borders.textField};
|
||||
border-radius: ${lengths.borderRadius};
|
||||
overflow: hidden;
|
||||
${effects.checkerboard};
|
||||
${shadows.inset};
|
||||
cursor: ${props => (props.sortable ? 'pointer' : 'auto')};
|
||||
`;
|
||||
|
||||
const SortableImageButtonsWrapper = styled.div`
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
column-gap: 10px;
|
||||
margin-right: 20px;
|
||||
margin-top: -10px;
|
||||
margin-bottom: 10px;
|
||||
`;
|
||||
|
||||
const StyledImage = styled.img`
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: contain;
|
||||
`;
|
||||
|
||||
function Image(props) {
|
||||
return <StyledImage role="presentation" {...props} />;
|
||||
}
|
||||
|
||||
function SortableImageButtons({ onRemove, onReplace }) {
|
||||
return (
|
||||
<SortableImageButtonsWrapper>
|
||||
<IconButton size="small" type="media" onClick={onReplace}></IconButton>
|
||||
<IconButton size="small" type="close" onClick={onRemove}></IconButton>
|
||||
</SortableImageButtonsWrapper>
|
||||
);
|
||||
}
|
||||
|
||||
function SortableImage(props) {
|
||||
const { attributes, listeners, setNodeRef, transform, transition } = useSortable({
|
||||
id: props.id,
|
||||
});
|
||||
|
||||
const style = {
|
||||
transform: CSS.Transform.toString(transform),
|
||||
transition,
|
||||
};
|
||||
|
||||
const { itemValue, getAsset, field, onRemove, onReplace } = props;
|
||||
|
||||
return (
|
||||
<div ref={setNodeRef} style={style} {...attributes} {...listeners}>
|
||||
<ImageWrapper sortable>
|
||||
<Image src={getAsset(itemValue, field) || ''} />
|
||||
</ImageWrapper>
|
||||
<SortableImageButtons
|
||||
item={itemValue}
|
||||
onRemove={onRemove}
|
||||
onReplace={onReplace}
|
||||
></SortableImageButtons>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function SortableMultiImageWrapper({
|
||||
items,
|
||||
getAsset,
|
||||
field,
|
||||
onSortEnd,
|
||||
onRemoveOne,
|
||||
onReplaceOne,
|
||||
}) {
|
||||
const activationConstraint = { distance: 4 };
|
||||
const sensors = useSensors(
|
||||
useSensor(MouseSensor, { activationConstraint }),
|
||||
useSensor(TouchSensor, { activationConstraint }),
|
||||
);
|
||||
|
||||
function handleSortEnd({ active, over }) {
|
||||
onSortEnd({
|
||||
oldIndex: items.findIndex(item => item.id === active.id),
|
||||
newIndex: items.findIndex(item => item.id === over.id),
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
<div
|
||||
// eslint-disable-next-line react/no-unknown-property
|
||||
css={css`
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
`}
|
||||
>
|
||||
<DndContext
|
||||
modifiers={[restrictToParentElement]}
|
||||
collisionDetection={closestCenter}
|
||||
sensors={sensors}
|
||||
onDragEnd={handleSortEnd}
|
||||
>
|
||||
<SortableContext items={items}>
|
||||
{items.map((item, index) => (
|
||||
<SortableImage
|
||||
key={item.id}
|
||||
id={item.id}
|
||||
index={index}
|
||||
itemValue={item.value}
|
||||
getAsset={getAsset}
|
||||
field={field}
|
||||
onRemove={onRemoveOne(index)}
|
||||
onReplace={onReplaceOne(index)}
|
||||
></SortableImage>
|
||||
))}
|
||||
</SortableContext>
|
||||
</DndContext>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
const FileLink = styled.a`
|
||||
margin-bottom: 20px;
|
||||
font-weight: normal;
|
||||
color: inherit;
|
||||
|
||||
&:hover,
|
||||
&:active,
|
||||
&:focus {
|
||||
text-decoration: underline;
|
||||
}
|
||||
`;
|
||||
|
||||
const FileLinks = styled.div`
|
||||
margin-bottom: 12px;
|
||||
`;
|
||||
|
||||
const FileLinkList = styled.ul`
|
||||
list-style-type: none;
|
||||
`;
|
||||
|
||||
const FileWidgetButton = styled.button`
|
||||
${buttons.button};
|
||||
${components.badge};
|
||||
margin-bottom: 12px;
|
||||
`;
|
||||
|
||||
const FileWidgetButtonRemove = styled.button`
|
||||
${buttons.button};
|
||||
${components.badgeDanger};
|
||||
`;
|
||||
|
||||
function isMultiple(value) {
|
||||
return Array.isArray(value) || List.isList(value);
|
||||
}
|
||||
|
||||
function sizeOfValue(value) {
|
||||
if (Array.isArray(value)) {
|
||||
return value.length;
|
||||
}
|
||||
|
||||
if (List.isList(value)) {
|
||||
return value.size;
|
||||
}
|
||||
|
||||
return value ? 1 : 0;
|
||||
}
|
||||
|
||||
function valueListToArray(value) {
|
||||
return List.isList(value) ? value.toArray() : value ?? '';
|
||||
}
|
||||
|
||||
function valueListToSortableArray(value) {
|
||||
if (!isMultiple(value)) {
|
||||
return value;
|
||||
}
|
||||
|
||||
const valueArray = valueListToArray(value).map(value => ({
|
||||
id: uuid(),
|
||||
value,
|
||||
}));
|
||||
|
||||
return valueArray;
|
||||
}
|
||||
|
||||
const warnDeprecatedOptions = once(field =>
|
||||
console.warn(oneLine`
|
||||
Decap CMS config: ${field.get('name')} field: property "options" has been deprecated for the
|
||||
${field.get('widget')} widget and will be removed in the next major release. Rather than
|
||||
\`field.options.media_library\`, apply media library options for this widget under
|
||||
\`field.media_library\`.
|
||||
`),
|
||||
);
|
||||
|
||||
export default function withFileControl({ forImage } = {}) {
|
||||
return class FileControl extends React.Component {
|
||||
static propTypes = {
|
||||
field: PropTypes.object.isRequired,
|
||||
getAsset: PropTypes.func.isRequired,
|
||||
mediaPaths: ImmutablePropTypes.map.isRequired,
|
||||
onAddAsset: PropTypes.func.isRequired,
|
||||
onChange: PropTypes.func.isRequired,
|
||||
onRemoveInsertedMedia: PropTypes.func.isRequired,
|
||||
onOpenMediaLibrary: PropTypes.func.isRequired,
|
||||
onClearMediaControl: PropTypes.func.isRequired,
|
||||
onRemoveMediaControl: PropTypes.func.isRequired,
|
||||
classNameWrapper: PropTypes.string.isRequired,
|
||||
value: PropTypes.oneOfType([
|
||||
PropTypes.string,
|
||||
PropTypes.arrayOf(PropTypes.string),
|
||||
ImmutablePropTypes.listOf(PropTypes.string),
|
||||
]),
|
||||
t: PropTypes.func.isRequired,
|
||||
};
|
||||
|
||||
static defaultProps = {
|
||||
value: '',
|
||||
};
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.controlID = uuid();
|
||||
}
|
||||
|
||||
shouldComponentUpdate(nextProps) {
|
||||
/**
|
||||
* Always update if the value or getAsset changes.
|
||||
*/
|
||||
if (this.props.value !== nextProps.value || this.props.getAsset !== nextProps.getAsset) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* If there is a media path for this control in the state object, and that
|
||||
* path is different than the value in `nextProps`, update.
|
||||
*/
|
||||
const mediaPath = nextProps.mediaPaths.get(this.controlID);
|
||||
if (mediaPath && nextProps.value !== mediaPath) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
componentDidUpdate() {
|
||||
const { mediaPaths, value, onRemoveInsertedMedia, onChange } = this.props;
|
||||
const mediaPath = mediaPaths.get(this.controlID);
|
||||
if (mediaPath && mediaPath !== value) {
|
||||
onChange(mediaPath);
|
||||
} else if (mediaPath && mediaPath === value) {
|
||||
onRemoveInsertedMedia(this.controlID);
|
||||
}
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
this.props.onRemoveMediaControl(this.controlID);
|
||||
}
|
||||
|
||||
handleChange = e => {
|
||||
const { field, onOpenMediaLibrary, value } = this.props;
|
||||
e.preventDefault();
|
||||
const mediaLibraryFieldOptions = this.getMediaLibraryFieldOptions();
|
||||
|
||||
return onOpenMediaLibrary({
|
||||
controlID: this.controlID,
|
||||
forImage,
|
||||
privateUpload: field.get('private'),
|
||||
value: valueListToArray(value),
|
||||
allowMultiple: !!mediaLibraryFieldOptions.get('allow_multiple', true),
|
||||
config: mediaLibraryFieldOptions.get('config'),
|
||||
field,
|
||||
});
|
||||
};
|
||||
|
||||
handleUrl = subject => e => {
|
||||
e.preventDefault();
|
||||
|
||||
const url = window.prompt(this.props.t(`editor.editorWidgets.${subject}.promptUrl`));
|
||||
|
||||
if (url) {
|
||||
return this.props.onChange(url);
|
||||
}
|
||||
};
|
||||
|
||||
handleRemove = e => {
|
||||
e.preventDefault();
|
||||
this.props.onClearMediaControl(this.controlID);
|
||||
return this.props.onChange('');
|
||||
};
|
||||
|
||||
onRemoveOne = index => () => {
|
||||
const value = valueListToArray(this.props.value);
|
||||
value.splice(index, 1);
|
||||
return this.props.onChange(sizeOfValue(value) > 0 ? [...value] : null);
|
||||
};
|
||||
|
||||
onReplaceOne = index => () => {
|
||||
const { field, onOpenMediaLibrary, value } = this.props;
|
||||
const mediaLibraryFieldOptions = this.getMediaLibraryFieldOptions();
|
||||
|
||||
return onOpenMediaLibrary({
|
||||
controlID: this.controlID,
|
||||
forImage,
|
||||
privateUpload: field.get('private'),
|
||||
value: valueListToArray(value),
|
||||
replaceIndex: index,
|
||||
allowMultiple: false,
|
||||
config: mediaLibraryFieldOptions.get('config'),
|
||||
field,
|
||||
});
|
||||
};
|
||||
|
||||
getMediaLibraryFieldOptions = () => {
|
||||
const { field } = this.props;
|
||||
|
||||
if (field.hasIn(['options', 'media_library'])) {
|
||||
warnDeprecatedOptions(field);
|
||||
return field.getIn(['options', 'media_library'], Map());
|
||||
}
|
||||
|
||||
return field.get('media_library', Map());
|
||||
};
|
||||
|
||||
allowsMultiple = () => {
|
||||
const mediaLibraryFieldOptions = this.getMediaLibraryFieldOptions();
|
||||
return (
|
||||
mediaLibraryFieldOptions.get('config', false) &&
|
||||
mediaLibraryFieldOptions.get('config').get('multiple', false)
|
||||
);
|
||||
};
|
||||
|
||||
onSortEnd = ({ oldIndex, newIndex }) => {
|
||||
const { value } = this.props;
|
||||
const newValue = arrayMove(value, oldIndex, newIndex);
|
||||
return this.props.onChange(newValue);
|
||||
};
|
||||
|
||||
getValidateValue = () => {
|
||||
const { value } = this.props;
|
||||
if (value) {
|
||||
return isMultiple(value) ? value.map(v => basename(v)) : basename(value);
|
||||
}
|
||||
|
||||
return value;
|
||||
};
|
||||
|
||||
renderFileLink = value => {
|
||||
const size = MAX_DISPLAY_LENGTH;
|
||||
if (!value || value.length <= size) {
|
||||
return value;
|
||||
}
|
||||
const text = `${value.slice(0, size / 2)}\u2026${value.slice(-(size / 2) + 1)}`;
|
||||
return (
|
||||
<FileLink href={value} rel="noopener" target="_blank">
|
||||
{text}
|
||||
</FileLink>
|
||||
);
|
||||
};
|
||||
|
||||
renderFileLinks = () => {
|
||||
const { value } = this.props;
|
||||
|
||||
if (isMultiple(value)) {
|
||||
return (
|
||||
<FileLinks>
|
||||
<FileLinkList>
|
||||
{value.map(val => (
|
||||
<li key={val}>{this.renderFileLink(val)}</li>
|
||||
))}
|
||||
</FileLinkList>
|
||||
</FileLinks>
|
||||
);
|
||||
}
|
||||
return <FileLinks>{this.renderFileLink(value)}</FileLinks>;
|
||||
};
|
||||
|
||||
renderImages = () => {
|
||||
const { getAsset, value, field } = this.props;
|
||||
const items = valueListToSortableArray(value);
|
||||
if (isMultiple(value)) {
|
||||
return (
|
||||
<SortableMultiImageWrapper
|
||||
items={items}
|
||||
onSortEnd={this.onSortEnd}
|
||||
onRemoveOne={this.onRemoveOne}
|
||||
onReplaceOne={this.onReplaceOne}
|
||||
distance={4}
|
||||
getAsset={getAsset}
|
||||
field={field}
|
||||
axis="xy"
|
||||
lockToContainerEdges={true}
|
||||
></SortableMultiImageWrapper>
|
||||
);
|
||||
}
|
||||
|
||||
const src = getAsset(value, field);
|
||||
return (
|
||||
<ImageWrapper>
|
||||
<Image src={src || ''} />
|
||||
</ImageWrapper>
|
||||
);
|
||||
};
|
||||
|
||||
renderSelection = subject => {
|
||||
const { t, field } = this.props;
|
||||
const allowsMultiple = this.allowsMultiple();
|
||||
return (
|
||||
<div>
|
||||
{forImage ? this.renderImages() : null}
|
||||
<div>
|
||||
{forImage ? null : this.renderFileLinks()}
|
||||
<FileWidgetButton onClick={this.handleChange}>
|
||||
{t(
|
||||
`editor.editorWidgets.${subject}.${
|
||||
this.allowsMultiple() ? 'addMore' : 'chooseDifferent'
|
||||
}`,
|
||||
)}
|
||||
</FileWidgetButton>
|
||||
{field.get('choose_url', true) && !this.allowsMultiple() ? (
|
||||
<FileWidgetButton onClick={this.handleUrl(subject)}>
|
||||
{t(`editor.editorWidgets.${subject}.replaceUrl`)}
|
||||
</FileWidgetButton>
|
||||
) : null}
|
||||
<FileWidgetButtonRemove onClick={this.handleRemove}>
|
||||
{t(`editor.editorWidgets.${subject}.remove${allowsMultiple ? 'All' : ''}`)}
|
||||
</FileWidgetButtonRemove>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
renderNoSelection = subject => {
|
||||
const { t, field } = this.props;
|
||||
return (
|
||||
<>
|
||||
<FileWidgetButton onClick={this.handleChange}>
|
||||
{t(`editor.editorWidgets.${subject}.choose${this.allowsMultiple() ? 'Multiple' : ''}`)}
|
||||
</FileWidgetButton>
|
||||
{field.get('choose_url', true) ? (
|
||||
<FileWidgetButton onClick={this.handleUrl(subject)}>
|
||||
{t(`editor.editorWidgets.${subject}.chooseUrl`)}
|
||||
</FileWidgetButton>
|
||||
) : null}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
render() {
|
||||
const { value, classNameWrapper } = this.props;
|
||||
const subject = forImage ? 'image' : 'file';
|
||||
|
||||
return (
|
||||
<div className={classNameWrapper}>
|
||||
<span>{value ? this.renderSelection(subject) : this.renderNoSelection(subject)}</span>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
};
|
||||
}
|
||||
3
node_modules/decap-cms-widget-file/webpack.config.js
generated
vendored
Normal file
3
node_modules/decap-cms-widget-file/webpack.config.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
const { getConfig } = require('../../scripts/webpack.js');
|
||||
|
||||
module.exports = getConfig();
|
||||
Reference in New Issue
Block a user