jdzcaptcha 2.0.0

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.
Files changed (124) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +55 -0
  3. package/cli/jpack.js +3 -0
  4. package/config/jpack.js +129 -0
  5. package/config/jpack.template +5 -0
  6. package/config/jpack.wrapper.js +16 -0
  7. package/dist/assets/jdzcaptcha/placeholder.png +0 -0
  8. package/dist/assets/jdzcaptcha/streamline/light/icon-1.png +0 -0
  9. package/dist/assets/jdzcaptcha/streamline/light/icon-10.png +0 -0
  10. package/dist/assets/jdzcaptcha/streamline/light/icon-11.png +0 -0
  11. package/dist/assets/jdzcaptcha/streamline/light/icon-12.png +0 -0
  12. package/dist/assets/jdzcaptcha/streamline/light/icon-13.png +0 -0
  13. package/dist/assets/jdzcaptcha/streamline/light/icon-14.png +0 -0
  14. package/dist/assets/jdzcaptcha/streamline/light/icon-15.png +0 -0
  15. package/dist/assets/jdzcaptcha/streamline/light/icon-16.png +0 -0
  16. package/dist/assets/jdzcaptcha/streamline/light/icon-17.png +0 -0
  17. package/dist/assets/jdzcaptcha/streamline/light/icon-18.png +0 -0
  18. package/dist/assets/jdzcaptcha/streamline/light/icon-19.png +0 -0
  19. package/dist/assets/jdzcaptcha/streamline/light/icon-2.png +0 -0
  20. package/dist/assets/jdzcaptcha/streamline/light/icon-20.png +0 -0
  21. package/dist/assets/jdzcaptcha/streamline/light/icon-21.png +0 -0
  22. package/dist/assets/jdzcaptcha/streamline/light/icon-22.png +0 -0
  23. package/dist/assets/jdzcaptcha/streamline/light/icon-23.png +0 -0
  24. package/dist/assets/jdzcaptcha/streamline/light/icon-24.png +0 -0
  25. package/dist/assets/jdzcaptcha/streamline/light/icon-25.png +0 -0
  26. package/dist/assets/jdzcaptcha/streamline/light/icon-26.png +0 -0
  27. package/dist/assets/jdzcaptcha/streamline/light/icon-27.png +0 -0
  28. package/dist/assets/jdzcaptcha/streamline/light/icon-28.png +0 -0
  29. package/dist/assets/jdzcaptcha/streamline/light/icon-29.png +0 -0
  30. package/dist/assets/jdzcaptcha/streamline/light/icon-3.png +0 -0
  31. package/dist/assets/jdzcaptcha/streamline/light/icon-30.png +0 -0
  32. package/dist/assets/jdzcaptcha/streamline/light/icon-31.png +0 -0
  33. package/dist/assets/jdzcaptcha/streamline/light/icon-32.png +0 -0
  34. package/dist/assets/jdzcaptcha/streamline/light/icon-33.png +0 -0
  35. package/dist/assets/jdzcaptcha/streamline/light/icon-34.png +0 -0
  36. package/dist/assets/jdzcaptcha/streamline/light/icon-35.png +0 -0
  37. package/dist/assets/jdzcaptcha/streamline/light/icon-36.png +0 -0
  38. package/dist/assets/jdzcaptcha/streamline/light/icon-37.png +0 -0
  39. package/dist/assets/jdzcaptcha/streamline/light/icon-38.png +0 -0
  40. package/dist/assets/jdzcaptcha/streamline/light/icon-39.png +0 -0
  41. package/dist/assets/jdzcaptcha/streamline/light/icon-4.png +0 -0
  42. package/dist/assets/jdzcaptcha/streamline/light/icon-40.png +0 -0
  43. package/dist/assets/jdzcaptcha/streamline/light/icon-41.png +0 -0
  44. package/dist/assets/jdzcaptcha/streamline/light/icon-42.png +0 -0
  45. package/dist/assets/jdzcaptcha/streamline/light/icon-43.png +0 -0
  46. package/dist/assets/jdzcaptcha/streamline/light/icon-44.png +0 -0
  47. package/dist/assets/jdzcaptcha/streamline/light/icon-45.png +0 -0
  48. package/dist/assets/jdzcaptcha/streamline/light/icon-46.png +0 -0
  49. package/dist/assets/jdzcaptcha/streamline/light/icon-47.png +0 -0
  50. package/dist/assets/jdzcaptcha/streamline/light/icon-48.png +0 -0
  51. package/dist/assets/jdzcaptcha/streamline/light/icon-49.png +0 -0
  52. package/dist/assets/jdzcaptcha/streamline/light/icon-5.png +0 -0
  53. package/dist/assets/jdzcaptcha/streamline/light/icon-50.png +0 -0
  54. package/dist/assets/jdzcaptcha/streamline/light/icon-6.png +0 -0
  55. package/dist/assets/jdzcaptcha/streamline/light/icon-7.png +0 -0
  56. package/dist/assets/jdzcaptcha/streamline/light/icon-8.png +0 -0
  57. package/dist/assets/jdzcaptcha/streamline/light/icon-9.png +0 -0
  58. package/dist/public/css/jdzcaptcha.min.css +1 -0
  59. package/dist/public/js/jdzcaptcha.min.js +2 -0
  60. package/lib/iconsets/streamline/Icons by Streamline.txt +5 -0
  61. package/lib/iconsets/streamline/light/icon-1.png +0 -0
  62. package/lib/iconsets/streamline/light/icon-10.png +0 -0
  63. package/lib/iconsets/streamline/light/icon-11.png +0 -0
  64. package/lib/iconsets/streamline/light/icon-12.png +0 -0
  65. package/lib/iconsets/streamline/light/icon-13.png +0 -0
  66. package/lib/iconsets/streamline/light/icon-14.png +0 -0
  67. package/lib/iconsets/streamline/light/icon-15.png +0 -0
  68. package/lib/iconsets/streamline/light/icon-16.png +0 -0
  69. package/lib/iconsets/streamline/light/icon-17.png +0 -0
  70. package/lib/iconsets/streamline/light/icon-18.png +0 -0
  71. package/lib/iconsets/streamline/light/icon-19.png +0 -0
  72. package/lib/iconsets/streamline/light/icon-2.png +0 -0
  73. package/lib/iconsets/streamline/light/icon-20.png +0 -0
  74. package/lib/iconsets/streamline/light/icon-21.png +0 -0
  75. package/lib/iconsets/streamline/light/icon-22.png +0 -0
  76. package/lib/iconsets/streamline/light/icon-23.png +0 -0
  77. package/lib/iconsets/streamline/light/icon-24.png +0 -0
  78. package/lib/iconsets/streamline/light/icon-25.png +0 -0
  79. package/lib/iconsets/streamline/light/icon-26.png +0 -0
  80. package/lib/iconsets/streamline/light/icon-27.png +0 -0
  81. package/lib/iconsets/streamline/light/icon-28.png +0 -0
  82. package/lib/iconsets/streamline/light/icon-29.png +0 -0
  83. package/lib/iconsets/streamline/light/icon-3.png +0 -0
  84. package/lib/iconsets/streamline/light/icon-30.png +0 -0
  85. package/lib/iconsets/streamline/light/icon-31.png +0 -0
  86. package/lib/iconsets/streamline/light/icon-32.png +0 -0
  87. package/lib/iconsets/streamline/light/icon-33.png +0 -0
  88. package/lib/iconsets/streamline/light/icon-34.png +0 -0
  89. package/lib/iconsets/streamline/light/icon-35.png +0 -0
  90. package/lib/iconsets/streamline/light/icon-36.png +0 -0
  91. package/lib/iconsets/streamline/light/icon-37.png +0 -0
  92. package/lib/iconsets/streamline/light/icon-38.png +0 -0
  93. package/lib/iconsets/streamline/light/icon-39.png +0 -0
  94. package/lib/iconsets/streamline/light/icon-4.png +0 -0
  95. package/lib/iconsets/streamline/light/icon-40.png +0 -0
  96. package/lib/iconsets/streamline/light/icon-41.png +0 -0
  97. package/lib/iconsets/streamline/light/icon-42.png +0 -0
  98. package/lib/iconsets/streamline/light/icon-43.png +0 -0
  99. package/lib/iconsets/streamline/light/icon-44.png +0 -0
  100. package/lib/iconsets/streamline/light/icon-45.png +0 -0
  101. package/lib/iconsets/streamline/light/icon-46.png +0 -0
  102. package/lib/iconsets/streamline/light/icon-47.png +0 -0
  103. package/lib/iconsets/streamline/light/icon-48.png +0 -0
  104. package/lib/iconsets/streamline/light/icon-49.png +0 -0
  105. package/lib/iconsets/streamline/light/icon-5.png +0 -0
  106. package/lib/iconsets/streamline/light/icon-50.png +0 -0
  107. package/lib/iconsets/streamline/light/icon-6.png +0 -0
  108. package/lib/iconsets/streamline/light/icon-7.png +0 -0
  109. package/lib/iconsets/streamline/light/icon-8.png +0 -0
  110. package/lib/iconsets/streamline/light/icon-9.png +0 -0
  111. package/lib/index.less +5 -0
  112. package/lib/js/captcha.js +182 -0
  113. package/lib/js/constants.js +61 -0
  114. package/lib/js/fetch.js +51 -0
  115. package/lib/js/ui.js +117 -0
  116. package/lib/js/utils.js +159 -0
  117. package/lib/js/widget.js +624 -0
  118. package/lib/less/animations.less +45 -0
  119. package/lib/less/structure.less +259 -0
  120. package/lib/less/variables.less +2 -0
  121. package/lib/less/variants/dark.less +62 -0
  122. package/lib/less/variants/light.less +66 -0
  123. package/lib/placeholder.png +0 -0
  124. package/package.json +37 -0
@@ -0,0 +1,259 @@
1
+ .jdzc {
2
+ width: 99%;
3
+ max-width: 330px;
4
+ min-height: 50px;
5
+ height: auto;
6
+ margin-left: auto;
7
+ margin-right: auto;
8
+ border-radius: 8px;
9
+ font-family: inherit;
10
+ text-shadow: none;
11
+ line-height: 1;
12
+ text-rendering: optimizeLegibility;
13
+ -webkit-font-smoothing: antialiased;
14
+ position: relative;
15
+ user-select: none;
16
+
17
+ * {
18
+ box-sizing: border-box;
19
+ -webkit-tap-highlight-color: transparent;
20
+ -webkit-font-smoothing: antialiased;
21
+ }
22
+
23
+ *::selection {
24
+ background: none !important;
25
+ }
26
+
27
+ a {
28
+ text-decoration: none;
29
+ }
30
+
31
+ .jdzc-box {
32
+ width: 100%;
33
+ display: block;
34
+ }
35
+
36
+ .jdzc-box-title {
37
+ font-size: 20px;
38
+ font-weight: 700;
39
+ text-transform: uppercase;
40
+ display: inline-block;
41
+ width: 100%;
42
+ position: absolute;
43
+ left: 0;
44
+ right: 0;
45
+ top: 8px;
46
+ }
47
+
48
+ .jdzc-box-subtitle {
49
+ font-size: 12px;
50
+ display: inline-block;
51
+ width: 100%;
52
+ position: absolute;
53
+ left: 0;
54
+ right: 0;
55
+ top: 35px;
56
+ }
57
+
58
+ .jdzc-box-h {
59
+ height: auto;
60
+ padding: 0 10px;
61
+ display: block;
62
+
63
+ span {
64
+ padding: 6px 0;
65
+ display: block;
66
+ text-align: center;
67
+ font-size: 11px;
68
+ line-height: 14px;
69
+ font-weight: 700;
70
+ cursor: default;
71
+
72
+ &::selection {
73
+ background: none !important;
74
+ }
75
+ }
76
+ }
77
+
78
+ .jdzc-box-b {
79
+ display: block;
80
+ overflow: hidden;
81
+ position: relative;
82
+ height: 50px;
83
+ min-height: 50px;
84
+ padding: 2px 4px;
85
+ text-align: center;
86
+ box-sizing: initial;
87
+ }
88
+
89
+ .jdzc-box-icons {
90
+ position: relative;
91
+ height: 50px;
92
+ background-repeat: no-repeat;
93
+ background-position: 50% 50%;
94
+ z-index: 1;
95
+ }
96
+
97
+ .jdzc-box-selection {
98
+ position: absolute;
99
+ left: 0;
100
+ top: 2px;
101
+ bottom: 0;
102
+ right: 0;
103
+ margin: 2px 4px;
104
+ z-index: 999;
105
+ cursor: none;
106
+ height: 50px;
107
+
108
+ >i {
109
+ content: "";
110
+ width: 14px;
111
+ height: 14px;
112
+ border-radius: 100%;
113
+ background: #52b3d9;
114
+ position: absolute;
115
+ display: none;
116
+ }
117
+ }
118
+
119
+ .jdzc-box-icons,
120
+ .jdzc-box-selection {
121
+ width: 100%;
122
+ max-width: 320px;
123
+ margin: 0 auto;
124
+ }
125
+
126
+ .jdzc-box-info {
127
+ position: absolute;
128
+ right: 6px;
129
+ bottom: 4px;
130
+ font-size: 9px;
131
+
132
+ &:hover {
133
+ text-decoration: underline;
134
+ }
135
+ }
136
+
137
+ .jdzc-box-b {
138
+ .jdzc-loader {
139
+ margin: auto;
140
+ position: absolute;
141
+ width: 34px;
142
+ height: 34px;
143
+ border-radius: 100%;
144
+ border: 6px solid #52b3d9;
145
+ z-index: 10;
146
+ top: 0;
147
+ left: 0;
148
+ bottom: 0;
149
+ right: 0;
150
+ box-sizing: border-box;
151
+ animation: jdzc-breath 2s infinite ease-in-out;
152
+ }
153
+
154
+ &.jdzc-opacity {
155
+ >div:not(.jdzc-loader) {
156
+ opacity: .15;
157
+ cursor: default;
158
+ pointer-events: none;
159
+
160
+ &:after,
161
+ &:hover:after {
162
+ content: none
163
+ }
164
+ }
165
+ }
166
+ }
167
+
168
+ .jdzc-box-checkmark {
169
+ width: 28px;
170
+ height: 28px;
171
+ position: absolute;
172
+ top: 13px;
173
+ left: 15px;
174
+ background-image: url("data: image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E%3Csvg enable-background='new 0 0 98.5 98.5' version='1.1' viewBox='0 0 98.5 98.5' xml: space='preserve' xmlns='http: //www.w3.org/2000/svg'%3E%3Cpath class='checkmark' d='M81.7,17.8C73.5,9.3,62,4,49.2,4 C24.3,4,4,24.3,4,49.2s20.3,45.2,45.2,45.2s45.2-20.3,45.2-45.2c0-8.6-2.4-16.6-6.5-23.4l0,0L45.6,68.2L24.7,47.3' fill='none' stroke-miterlimit='10' stroke-width='8' stroke='none'/%3E%3C/svg%3E ");
175
+ }
176
+
177
+ .jdzc-box-f {
178
+ display: block !important;
179
+ font-size: 9px;
180
+ padding: 3px;
181
+ cursor: default;
182
+ text-align: center;
183
+
184
+ >span a {
185
+ text-decoration: none;
186
+ transition: color .1s linear;
187
+ text-align: center;
188
+
189
+ &:hover {
190
+ transition: color .1s linear;
191
+ }
192
+ }
193
+ }
194
+
195
+ .jdzc-box-f-hide {
196
+ visibility: hidden;
197
+ }
198
+
199
+ .jdzc-fields {
200
+ display: none;
201
+ visibility: hidden;
202
+
203
+ input[type="text"] {
204
+ display: none;
205
+ visibility: hidden;
206
+ }
207
+ }
208
+
209
+ &.jdzc-init {
210
+ transition: background 150ms linear;
211
+
212
+ .jdzc-box-b {
213
+ cursor: pointer;
214
+ }
215
+
216
+ .jdzc-box-circle {
217
+ width: 28px;
218
+ height: 28px;
219
+ border-radius: 100%;
220
+ border: 6px solid @jdz-color;
221
+ position: absolute;
222
+ top: 13px;
223
+ left: 15px;
224
+ transition: opacity .1s linear;
225
+ animation: jdzc-breath 5s infinite linear;
226
+ }
227
+
228
+ // .jdzc-box-circle--speed {
229
+ // animation-duration: 2s;
230
+ // }
231
+
232
+ &:hover {
233
+ transition: background 150ms linear;
234
+ }
235
+
236
+ &:hover .jdzc-box-circle {
237
+ opacity: .75;
238
+ transition: opacity .1s linear;
239
+ }
240
+ }
241
+
242
+ &.jdzc-success,
243
+ &.jdzc-error {
244
+ cursor: default;
245
+ }
246
+
247
+ &.jdzc-init .jdzc-box-title,
248
+ &.jdzc-success .jdzc-box-title {
249
+ font-size: 15px;
250
+ // font-weight: 700;
251
+ top: 19px;
252
+ text-align: left;
253
+ white-space: nowrap;
254
+ overflow: hidden;
255
+ text-overflow: ellipsis;
256
+ padding-right: 20px;
257
+ padding-left: 60px;
258
+ }
259
+ }
@@ -0,0 +1,2 @@
1
+ @jdz-color: #11243c;
2
+ @jdz-color-light: #8e8a94;
@@ -0,0 +1,62 @@
1
+ .jdzc.jdzc-theme-dark {
2
+ background: #4c4c4c;
3
+ border: 1px solid #404040;
4
+
5
+ .jdzc-box-subtitle {
6
+ color: #b1b1b1;
7
+ }
8
+
9
+ .jdzc-box-h {
10
+ border-bottom: 2px solid #404040;
11
+
12
+ span {
13
+ color: #dadada;
14
+ }
15
+ }
16
+
17
+ .jdzc-box-f {
18
+ color: #a7a7a7;
19
+ border-top: 2px solid #404040;
20
+ padding-top: 6px;
21
+ padding-bottom: 5px;
22
+
23
+ > span a {
24
+ color: #fff;
25
+ text-transform: uppercase;
26
+ font-weight: 700;
27
+
28
+ &:hover {
29
+ color: #f0f0f0;
30
+ }
31
+ }
32
+ }
33
+
34
+ .jdzc-box-info span,
35
+ .jdzc-box-info a {
36
+ color: #b1b1b1;
37
+ }
38
+
39
+ &.jdzc-init {
40
+ &:hover {
41
+ background: #454545;
42
+ }
43
+
44
+ .jdzc-box-title {
45
+ color: #dadada;
46
+ }
47
+ }
48
+
49
+ &.jdzc-success {
50
+ .jdzc-box-checkmark svg {
51
+ stroke: #93d293;
52
+ }
53
+
54
+ .jdzc-box-title {
55
+ color: #93d293;
56
+ }
57
+ }
58
+
59
+ &.jdzc-error .jdzc-box-title {
60
+ color: #ef5858;
61
+ }
62
+ }
@@ -0,0 +1,66 @@
1
+ .jdzc.jdzc-theme-light {
2
+ background: #fafafa;
3
+ border: 1px solid #d8d8d8;
4
+
5
+ .jdzc-box-subtitle {
6
+ color: #9e9e9e;
7
+ }
8
+
9
+ .jdzc-box-h {
10
+ border-bottom: 2px solid #d8d8d8;
11
+
12
+ span {
13
+ color: #1d1d1d;
14
+ }
15
+ }
16
+
17
+ .jdzc-box-f {
18
+ color: #a7a7a7;
19
+ border-top: 2px solid #d8d8d8;
20
+ padding-top: 6px;
21
+ padding-bottom: 5px;
22
+
23
+ > span {
24
+ color: #448aff;
25
+
26
+ a {
27
+ color: #448aff;
28
+ text-transform: uppercase;
29
+ font-weight: 700;
30
+
31
+ &:hover {
32
+ color: #74a8ff;
33
+ }
34
+ }
35
+ }
36
+ }
37
+
38
+ .jdzc-box-info span,
39
+ .jdzc-box-info a {
40
+ color: #afafaf;
41
+ }
42
+
43
+ &.jdzc-init {
44
+ &:hover {
45
+ background: #f1f1f1;
46
+ }
47
+
48
+ .jdzc-box-title {
49
+ color: #464646;
50
+ }
51
+ }
52
+
53
+ &.jdzc-success {
54
+ .jdzc-box-checkmark svg {
55
+ stroke: #5bd25b;
56
+ }
57
+
58
+ .jdzc-box-title {
59
+ color: #5bd25b;
60
+ }
61
+ }
62
+
63
+ &.jdzc-error .jdzc-box-title {
64
+ color: #ef5858;
65
+ }
66
+ }
Binary file
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "jdzcaptcha",
3
+ "version": "2.0.0",
4
+ "browser": "dist/public/js/jdzcaptcha.min.js",
5
+ "type": "module",
6
+ "jizy": "dist/",
7
+ "license": "MIT",
8
+ "description": "JDZ Captcha is a simple and lightweight captcha solution for web applications. It is designed to be easy to implement and customize, providing a user-friendly experience while ensuring security against automated bots.",
9
+ "keywords": [
10
+ "jizy",
11
+ "jdz",
12
+ "captcha"
13
+ ],
14
+ "files": [
15
+ "cli/jpack.js",
16
+ "config/jpack.js",
17
+ "config/jpack.template",
18
+ "config/jpack.wrapper.js",
19
+ "dist/*",
20
+ "lib/*"
21
+ ],
22
+ "scripts": {
23
+ "jpack:build": "node ./cli/jpack.js --action build --name export",
24
+ "jpack:build-debug": "node ./cli/jpack.js --action build --name export --debug",
25
+ "jpack:dist": "node ./cli/jpack.js",
26
+ "jpack:dist-debug": "node ./cli/jpack.js --debug"
27
+ },
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/joffreydemetz/jizy-captcha.git"
31
+ },
32
+ "author": "Joffrey Demetz <joffrey.demetz@gmail.com> (https://joffreydemetz.com/)",
33
+ "devDependencies": {
34
+ "jizy-packer": "^2.1.44",
35
+ "less": "^4.5.1"
36
+ }
37
+ }