px-react-ui-components 1.0.29 → 1.1.1
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/README.md +48 -15
- package/dist/components/MyAlert/MyAlert.js +22 -3
- package/dist/components/MyEditor/MyEditor.js +99 -44
- package/dist/components/MyFileUpload/MyFileUpload.js +24 -7
- package/dist/components/MyImageCropper/MyImageCropper.js +40 -3
- package/dist/components/MyWaiting/MyWaiting.css +5 -0
- package/dist/components/MyWaiting/MyWaiting.js +21 -2
- package/dist/components/MyZoomImage/MyZoomImage.js +53 -4
- package/package.json +48 -5
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ A modern, customizable React UI components library designed to simplify web deve
|
|
|
7
7
|
- 🎨 Modern and responsive design
|
|
8
8
|
- 📱 Multiple input types (Text, Select, Date, Number, Phone, Email)
|
|
9
9
|
- 🧩 Customizable components with extensive props
|
|
10
|
-
- 🎯 Built with React 18 for optimal performance
|
|
10
|
+
- 🎯 Built with React 18/19 compatibility for optimal performance
|
|
11
11
|
- 🔧 Easy to integrate and use
|
|
12
12
|
- 📚 Comprehensive documentation
|
|
13
13
|
- 🎭 Tab navigation with rich features (labels, titles, descriptions, badges, icons)
|
|
@@ -20,29 +20,62 @@ A modern, customizable React UI components library designed to simplify web deve
|
|
|
20
20
|
npm install px-react-ui-components
|
|
21
21
|
|
|
22
22
|
# Install required peer dependencies
|
|
23
|
-
npm install react@^18.3.1 react-dom@^18.3.1
|
|
23
|
+
npm install react@^18.3.1 react-dom@^18.3.1 react-icons@^5.5.0
|
|
24
|
+
|
|
25
|
+
# Optional dependencies (install only if you need specific components)
|
|
26
|
+
# For MyEditor component:
|
|
27
|
+
npm install react-quill@^2.0.0 quill@^1.3.7 quill-image-resize-module-react@^3.0.0 quill-table-ui@^1.0.7 katex@^0.16.21
|
|
28
|
+
|
|
29
|
+
# For MyAlert component:
|
|
30
|
+
npm install react-confirm-alert@^3.0.6
|
|
31
|
+
|
|
32
|
+
# For MyImageCropper component:
|
|
33
|
+
npm install react-image-crop@^11.0.7
|
|
34
|
+
|
|
35
|
+
# For MyWaiting component:
|
|
36
|
+
npm install react-loader-spinner@^6.1.6
|
|
37
|
+
|
|
38
|
+
# For MyFileUpload component:
|
|
39
|
+
npm install react-image-file-resizer@^3.0.4 react-html5-camera-photo@^1.5.4
|
|
40
|
+
|
|
41
|
+
# For MyZoomImage component:
|
|
42
|
+
npm install react-zoom-pan-pinch@^3.7.0
|
|
24
43
|
```
|
|
25
44
|
|
|
26
|
-
##
|
|
45
|
+
## Dependencies
|
|
27
46
|
|
|
28
|
-
|
|
47
|
+
### Required Dependencies
|
|
48
|
+
These are always required:
|
|
29
49
|
|
|
30
50
|
```json
|
|
31
51
|
{
|
|
32
|
-
"react": "^18.3.1",
|
|
33
|
-
"react-dom": "^18.3.1",
|
|
34
|
-
"
|
|
35
|
-
"quill": "^1.3.7",
|
|
36
|
-
"quill-image-resize-module-react": "^3.0.0",
|
|
37
|
-
"quill-table-ui": "^1.0.7",
|
|
38
|
-
"react-confirm-alert": "^3.0.6",
|
|
39
|
-
"react-icons": "^5.5.0",
|
|
40
|
-
"react-image-crop": "^11.0.7",
|
|
41
|
-
"react-loader-spinner": "^6.1.6",
|
|
42
|
-
"react-zoom-pan-pinch": "^3.7.0"
|
|
52
|
+
"react": "^18.3.1 || ^19.0.0",
|
|
53
|
+
"react-dom": "^18.3.1 || ^19.0.0",
|
|
54
|
+
"react-icons": "^5.5.0"
|
|
43
55
|
}
|
|
44
56
|
```
|
|
45
57
|
|
|
58
|
+
### Optional Dependencies
|
|
59
|
+
These are only needed if you use specific components:
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"katex": "^0.16.21", // MyEditor
|
|
64
|
+
"quill": "^1.3.7", // MyEditor
|
|
65
|
+
"quill-image-resize-module-react": "^3.0.0", // MyEditor
|
|
66
|
+
"quill-table-ui": "^1.0.7", // MyEditor
|
|
67
|
+
"react-quill": "^2.0.0", // MyEditor
|
|
68
|
+
"react-confirm-alert": "^3.0.6", // MyAlert
|
|
69
|
+
"react-image-crop": "^11.0.7", // MyImageCropper
|
|
70
|
+
"react-loader-spinner": "^6.1.6", // MyWaiting
|
|
71
|
+
"react-image-file-resizer": "^3.0.4", // MyFileUpload
|
|
72
|
+
"react-html5-camera-photo": "^1.5.4", // MyFileUpload
|
|
73
|
+
"react-zoom-pan-pinch": "^3.7.0" // MyZoomImage
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Note:** If you try to use a component without its required dependencies, you'll see a helpful warning message with installation instructions.
|
|
78
|
+
|
|
46
79
|
## Available Components
|
|
47
80
|
|
|
48
81
|
The library includes the following components:
|
|
@@ -5,11 +5,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.MyAlertType = exports.MyAlert = void 0;
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
|
-
var _reactConfirmAlert = require("react-confirm-alert");
|
|
9
|
-
require("react-confirm-alert/src/react-confirm-alert.css");
|
|
10
8
|
require("./MyAlert.css");
|
|
11
9
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
// Opsiyonel bağımlılığı kontrol et
|
|
12
|
+
let confirmAlert;
|
|
13
|
+
let hasConfirmAlert = false;
|
|
14
|
+
try {
|
|
15
|
+
const reactConfirmAlert = require("react-confirm-alert");
|
|
16
|
+
confirmAlert = reactConfirmAlert.confirmAlert;
|
|
17
|
+
require("react-confirm-alert/src/react-confirm-alert.css");
|
|
18
|
+
hasConfirmAlert = true;
|
|
19
|
+
} catch (error) {
|
|
20
|
+
console.warn("MyAlert: react-confirm-alert bağımlılığı bulunamadı. MyAlert bileşenini kullanmak için 'react-confirm-alert' paketini yükleyin.");
|
|
21
|
+
}
|
|
22
|
+
|
|
13
23
|
// import Swal from "sweetalert2";
|
|
14
24
|
|
|
15
25
|
const MyAlertType = exports.MyAlertType = {
|
|
@@ -29,6 +39,15 @@ const MyAlert = (message, type = MyAlertType.INFO, {
|
|
|
29
39
|
},
|
|
30
40
|
callback = null
|
|
31
41
|
} = {}) => {
|
|
42
|
+
// Bağımlılık yoksa uyarı göster
|
|
43
|
+
if (!hasConfirmAlert) {
|
|
44
|
+
console.error("MyAlert: react-confirm-alert bağımlılığı bulunamadı. Bu bileşeni kullanmak için 'npm install react-confirm-alert' komutunu çalıştırın.");
|
|
45
|
+
if (callback) callback({
|
|
46
|
+
isConfirmed: false,
|
|
47
|
+
isDenied: true
|
|
48
|
+
});
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
32
51
|
let _showCancelButton = false;
|
|
33
52
|
switch (type) {
|
|
34
53
|
case MyAlertType.WARNING:
|
|
@@ -72,7 +91,7 @@ const MyAlert = (message, type = MyAlertType.INFO, {
|
|
|
72
91
|
}
|
|
73
92
|
});
|
|
74
93
|
}
|
|
75
|
-
|
|
94
|
+
confirmAlert({
|
|
76
95
|
title: title,
|
|
77
96
|
message: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
78
97
|
dangerouslySetInnerHTML: {
|
|
@@ -5,20 +5,31 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _reactQuill = _interopRequireDefault(require("react-quill"));
|
|
9
|
-
require("react-quill/dist/quill.snow.css");
|
|
10
|
-
var _quillImageResize = _interopRequireDefault(require("quill-image-resize"));
|
|
11
|
-
var _quill = _interopRequireDefault(require("quill"));
|
|
12
|
-
var _quillTable = _interopRequireDefault(require("quill-table"));
|
|
13
|
-
var _katex = _interopRequireDefault(require("katex"));
|
|
14
|
-
require("katex/dist/katex.min.css");
|
|
15
8
|
require("./MyEditor.scss");
|
|
16
9
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
10
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
19
11
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
20
|
-
//
|
|
21
|
-
|
|
12
|
+
// Opsiyonel bağımlılıkları kontrol et
|
|
13
|
+
let ReactQuill, Quill, ImageResize, QuillTable, katex;
|
|
14
|
+
let hasQuillDependencies = false;
|
|
15
|
+
try {
|
|
16
|
+
ReactQuill = require("react-quill");
|
|
17
|
+
require("react-quill/dist/quill.snow.css");
|
|
18
|
+
Quill = require("quill");
|
|
19
|
+
ImageResize = require("quill-image-resize");
|
|
20
|
+
QuillTable = require("quill-table");
|
|
21
|
+
katex = require("katex");
|
|
22
|
+
require("katex/dist/katex.min.css");
|
|
23
|
+
hasQuillDependencies = true;
|
|
24
|
+
} catch (error) {
|
|
25
|
+
console.warn("MyEditor: Quill bağımlılıkları bulunamadı. MyEditor bileşenini kullanmak için aşağıdaki paketleri yükleyin:", {
|
|
26
|
+
"react-quill": "^2.0.0",
|
|
27
|
+
"quill": "^1.3.7",
|
|
28
|
+
"quill-image-resize-module-react": "^3.0.0",
|
|
29
|
+
"quill-table-ui": "^1.0.7",
|
|
30
|
+
"katex": "^0.16.21"
|
|
31
|
+
});
|
|
32
|
+
}
|
|
22
33
|
|
|
23
34
|
// Özel font listesini tanımla
|
|
24
35
|
const fonts = [{
|
|
@@ -113,44 +124,58 @@ const fonts = [{
|
|
|
113
124
|
value: "segoe-ui"
|
|
114
125
|
}];
|
|
115
126
|
|
|
116
|
-
// Quill
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
127
|
+
// Quill bağımlılıkları varsa konfigürasyonu yap
|
|
128
|
+
if (hasQuillDependencies) {
|
|
129
|
+
// KaTeX'i global hale getir
|
|
130
|
+
if (katex) {
|
|
131
|
+
window.katex = katex;
|
|
132
|
+
}
|
|
120
133
|
|
|
121
|
-
// Quill
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
_quill.default.register(_quillTable.default.Table);
|
|
126
|
-
_quill.default.register(_quillTable.default.Contain);
|
|
127
|
-
_quill.default.register("modules/table", _quillTable.default.TableModule);
|
|
134
|
+
// Quill font formatını genişlet
|
|
135
|
+
const Font = Quill.import("formats/font");
|
|
136
|
+
Font.whitelist = fonts.map(f => f.value);
|
|
137
|
+
Quill.register(Font, true);
|
|
128
138
|
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
// Quill modüllerini kaydet
|
|
140
|
+
if (ImageResize) {
|
|
141
|
+
Quill.register("modules/imageResize", ImageResize);
|
|
142
|
+
}
|
|
143
|
+
if (QuillTable) {
|
|
144
|
+
Quill.register(QuillTable.TableCell);
|
|
145
|
+
Quill.register(QuillTable.TableRow);
|
|
146
|
+
Quill.register(QuillTable.Table);
|
|
147
|
+
Quill.register(QuillTable.Contain);
|
|
148
|
+
Quill.register("modules/table", QuillTable.TableModule);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Formula Embed için düzeltme
|
|
152
|
+
if (katex) {
|
|
153
|
+
const Embed = Quill.import("blots/embed");
|
|
154
|
+
class FormulaEmbed extends Embed {
|
|
155
|
+
static create(value) {
|
|
156
|
+
let node = super.create();
|
|
157
|
+
if (value) {
|
|
158
|
+
node.setAttribute("data-value", value);
|
|
159
|
+
try {
|
|
160
|
+
window.katex.render(value, node, {
|
|
161
|
+
throwOnError: false
|
|
162
|
+
});
|
|
163
|
+
} catch (err) {
|
|
164
|
+
console.error("KaTeX render error:", err);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return node;
|
|
168
|
+
}
|
|
169
|
+
static value(node) {
|
|
170
|
+
return node.getAttribute("data-value");
|
|
142
171
|
}
|
|
143
172
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
173
|
+
FormulaEmbed.blotName = "formula";
|
|
174
|
+
FormulaEmbed.tagName = "SPAN";
|
|
175
|
+
FormulaEmbed.className = "ql-formula";
|
|
176
|
+
Quill.register("formats/formula", FormulaEmbed);
|
|
148
177
|
}
|
|
149
178
|
}
|
|
150
|
-
FormulaEmbed.blotName = "formula";
|
|
151
|
-
FormulaEmbed.tagName = "SPAN";
|
|
152
|
-
FormulaEmbed.className = "ql-formula";
|
|
153
|
-
_quill.default.register("formats/formula", FormulaEmbed);
|
|
154
179
|
function MyEditor({
|
|
155
180
|
value,
|
|
156
181
|
onChange,
|
|
@@ -163,13 +188,43 @@ function MyEditor({
|
|
|
163
188
|
const editorRef = (0, _react.useRef)(null);
|
|
164
189
|
const timeoutRef = (0, _react.useRef)(null);
|
|
165
190
|
const isFirstRender = (0, _react.useRef)(true);
|
|
191
|
+
|
|
192
|
+
// Bağımlılıklar yoksa uyarı göster
|
|
193
|
+
if (!hasQuillDependencies) {
|
|
194
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
195
|
+
style: {
|
|
196
|
+
padding: "20px",
|
|
197
|
+
border: "2px dashed #ff6b6b",
|
|
198
|
+
borderRadius: "8px",
|
|
199
|
+
backgroundColor: "#fff5f5",
|
|
200
|
+
color: "#d63031",
|
|
201
|
+
textAlign: "center",
|
|
202
|
+
...style
|
|
203
|
+
},
|
|
204
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
|
|
205
|
+
children: "MyEditor Bile\u015Feni Kullan\u0131lam\u0131yor"
|
|
206
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
207
|
+
children: "Bu bile\u015Feni kullanmak i\xE7in a\u015Fa\u011F\u0131daki paketleri y\xFCklemeniz gerekiyor:"
|
|
208
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("pre", {
|
|
209
|
+
style: {
|
|
210
|
+
backgroundColor: "#f8f9fa",
|
|
211
|
+
padding: "10px",
|
|
212
|
+
borderRadius: "4px",
|
|
213
|
+
fontSize: "12px",
|
|
214
|
+
textAlign: "left",
|
|
215
|
+
overflow: "auto"
|
|
216
|
+
},
|
|
217
|
+
children: `npm install react-quill quill quill-image-resize-module-react quill-table-ui katex`
|
|
218
|
+
})]
|
|
219
|
+
});
|
|
220
|
+
}
|
|
166
221
|
const handleFullscreen = () => {
|
|
167
222
|
setIsFullscreen(!isFullscreen);
|
|
168
223
|
};
|
|
169
224
|
|
|
170
225
|
// Custom buton tanımı
|
|
171
226
|
(0, _react.useEffect)(() => {
|
|
172
|
-
const icons =
|
|
227
|
+
const icons = Quill.import('ui/icons');
|
|
173
228
|
icons['fullscreen'] = `<svg viewbox="0 0 18 18">
|
|
174
229
|
<path d="M4,4H0v2h6V0H4V4z M14,4V0h-2v6h6V4H14z M6,14H0v2h4v4h2V14z M14,18h2v-4h4v-2h-6V18z"/>
|
|
175
230
|
</svg>`;
|
|
@@ -293,7 +348,7 @@ function MyEditor({
|
|
|
293
348
|
d: "M4,4H0v2h6V0H4V4z M14,4V0h-2v6h6V4H14z M6,14H0v2h4v4h2V14z M14,18h2v-4h4v-2h-6V18z"
|
|
294
349
|
})
|
|
295
350
|
})
|
|
296
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
351
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(ReactQuill, {
|
|
297
352
|
ref: editorRef,
|
|
298
353
|
theme: "snow",
|
|
299
354
|
value: editorValue,
|
|
@@ -7,9 +7,6 @@ exports.AcceptType = void 0;
|
|
|
7
7
|
exports.default = MyFileUpload;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _pi = require("react-icons/pi");
|
|
10
|
-
var _reactImageFileResizer = _interopRequireDefault(require("react-image-file-resizer"));
|
|
11
|
-
var _reactHtml5CameraPhoto = _interopRequireWildcard(require("react-html5-camera-photo"));
|
|
12
|
-
require("react-html5-camera-photo/build/css/index.css");
|
|
13
10
|
var _MyWaiting = _interopRequireDefault(require("../MyWaiting/MyWaiting"));
|
|
14
11
|
var _MyAlert = require("../MyAlert/MyAlert");
|
|
15
12
|
var _MyFileUploadModule = _interopRequireDefault(require("./MyFileUpload.module.css"));
|
|
@@ -19,6 +16,26 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
19
16
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
17
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
21
18
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
19
|
+
// Opsiyonel bağımlılıkları kontrol et
|
|
20
|
+
let Resizer, Camera, FACING_MODES, IMAGE_TYPES;
|
|
21
|
+
let hasImageResizer = false;
|
|
22
|
+
let hasCamera = false;
|
|
23
|
+
try {
|
|
24
|
+
Resizer = require("react-image-file-resizer");
|
|
25
|
+
hasImageResizer = true;
|
|
26
|
+
} catch (error) {
|
|
27
|
+
console.warn("MyFileUpload: react-image-file-resizer bağımlılığı bulunamadı.");
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const cameraModule = require("react-html5-camera-photo");
|
|
31
|
+
Camera = cameraModule.default;
|
|
32
|
+
FACING_MODES = cameraModule.FACING_MODES;
|
|
33
|
+
IMAGE_TYPES = cameraModule.IMAGE_TYPES;
|
|
34
|
+
require("react-html5-camera-photo/build/css/index.css");
|
|
35
|
+
hasCamera = true;
|
|
36
|
+
} catch (error) {
|
|
37
|
+
console.warn("MyFileUpload: react-html5-camera-photo bağımlılığı bulunamadı.");
|
|
38
|
+
}
|
|
22
39
|
const AcceptType = exports.AcceptType = {
|
|
23
40
|
ALL: "all",
|
|
24
41
|
FILE: "file",
|
|
@@ -156,7 +173,7 @@ function MyFileUpload({
|
|
|
156
173
|
ext: file_ext,
|
|
157
174
|
type_image: type_image
|
|
158
175
|
};
|
|
159
|
-
|
|
176
|
+
Resizer.imageFileResizer(file, 2600, 2600, "JPEG", 100, 0, uri => {
|
|
160
177
|
fileReaderCalc++;
|
|
161
178
|
let fileitem = {
|
|
162
179
|
base64: uri,
|
|
@@ -281,7 +298,7 @@ function MyFileUpload({
|
|
|
281
298
|
closeOnEsc: false,
|
|
282
299
|
closeOnBackdropClick: false,
|
|
283
300
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
284
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
301
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Camera, {
|
|
285
302
|
videoConstraints: {
|
|
286
303
|
deviceId: selectedDeviceId ? {
|
|
287
304
|
exact: selectedDeviceId
|
|
@@ -298,12 +315,12 @@ function MyFileUpload({
|
|
|
298
315
|
onCameraStop: () => {
|
|
299
316
|
handleCameraStop();
|
|
300
317
|
},
|
|
301
|
-
idealFacingMode:
|
|
318
|
+
idealFacingMode: FACING_MODES.ENVIRONMENT,
|
|
302
319
|
idealResolution: {
|
|
303
320
|
width: 1024,
|
|
304
321
|
height: 1024
|
|
305
322
|
},
|
|
306
|
-
imageType:
|
|
323
|
+
imageType: IMAGE_TYPES.JPG,
|
|
307
324
|
isMaxResolution: true,
|
|
308
325
|
isImageMirror: false,
|
|
309
326
|
isSilentMode: false,
|
|
@@ -5,18 +5,55 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _reactImageCrop = _interopRequireDefault(require("react-image-crop"));
|
|
9
|
-
require("react-image-crop/dist/ReactCrop.css");
|
|
10
8
|
var _MyZoomImage = _interopRequireDefault(require("../MyZoomImage/MyZoomImage"));
|
|
11
9
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
11
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
14
12
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
+
// Opsiyonel bağımlılığı kontrol et
|
|
14
|
+
let ReactCrop;
|
|
15
|
+
let hasReactCrop = false;
|
|
16
|
+
try {
|
|
17
|
+
ReactCrop = require("react-image-crop").default;
|
|
18
|
+
require("react-image-crop/dist/ReactCrop.css");
|
|
19
|
+
hasReactCrop = true;
|
|
20
|
+
} catch (error) {
|
|
21
|
+
console.warn("MyImageCropper: react-image-crop bağımlılığı bulunamadı. MyImageCropper bileşenini kullanmak için 'react-image-crop' paketini yükleyin.");
|
|
22
|
+
}
|
|
15
23
|
const MyImageCropper = ({
|
|
16
24
|
image,
|
|
17
25
|
style = null,
|
|
18
26
|
onChange = null
|
|
19
27
|
}) => {
|
|
28
|
+
// Bağımlılık yoksa uyarı göster
|
|
29
|
+
if (!hasReactCrop) {
|
|
30
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
31
|
+
style: {
|
|
32
|
+
padding: "20px",
|
|
33
|
+
border: "2px dashed #ff6b6b",
|
|
34
|
+
borderRadius: "8px",
|
|
35
|
+
backgroundColor: "#fff5f5",
|
|
36
|
+
color: "#d63031",
|
|
37
|
+
textAlign: "center",
|
|
38
|
+
...style
|
|
39
|
+
},
|
|
40
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
|
|
41
|
+
children: "MyImageCropper Bile\u015Feni Kullan\u0131lam\u0131yor"
|
|
42
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
43
|
+
children: "Bu bile\u015Feni kullanmak i\xE7in a\u015Fa\u011F\u0131daki paketi y\xFCklemeniz gerekiyor:"
|
|
44
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("pre", {
|
|
45
|
+
style: {
|
|
46
|
+
backgroundColor: "#f8f9fa",
|
|
47
|
+
padding: "10px",
|
|
48
|
+
borderRadius: "4px",
|
|
49
|
+
fontSize: "12px",
|
|
50
|
+
textAlign: "left",
|
|
51
|
+
overflow: "auto"
|
|
52
|
+
},
|
|
53
|
+
children: `npm install react-image-crop`
|
|
54
|
+
})]
|
|
55
|
+
});
|
|
56
|
+
}
|
|
20
57
|
const [crop, setCrop] = (0, _react.useState)({
|
|
21
58
|
x: 0,
|
|
22
59
|
y: 0,
|
|
@@ -88,7 +125,7 @@ const MyImageCropper = ({
|
|
|
88
125
|
};
|
|
89
126
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
90
127
|
style: style,
|
|
91
|
-
children: image && /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
128
|
+
children: image && /*#__PURE__*/(0, _jsxRuntime.jsx)(ReactCrop, {
|
|
92
129
|
crop: crop,
|
|
93
130
|
onComplete: onCropComplete,
|
|
94
131
|
onChange: newCrop => setCrop(newCrop),
|
|
@@ -5,11 +5,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = MyWaiting;
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
|
-
var _reactLoaderSpinner = require("react-loader-spinner");
|
|
9
8
|
require("./MyWaiting.css");
|
|
10
9
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
11
|
// Modal için CSS dosyası
|
|
12
|
+
|
|
13
|
+
// Opsiyonel bağımlılığı kontrol et
|
|
14
|
+
let Oval;
|
|
15
|
+
let hasLoaderSpinner = false;
|
|
16
|
+
try {
|
|
17
|
+
const loaderSpinner = require("react-loader-spinner");
|
|
18
|
+
Oval = loaderSpinner.Oval;
|
|
19
|
+
hasLoaderSpinner = true;
|
|
20
|
+
} catch (error) {
|
|
21
|
+
console.warn("MyWaiting: react-loader-spinner bağımlılığı bulunamadı. MyWaiting bileşenini kullanmak için 'react-loader-spinner' paketini yükleyin.");
|
|
22
|
+
}
|
|
13
23
|
function MyWaiting({
|
|
14
24
|
show = false,
|
|
15
25
|
message = null
|
|
@@ -21,7 +31,7 @@ function MyWaiting({
|
|
|
21
31
|
className: "my-waiting-backdrop",
|
|
22
32
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
23
33
|
className: "my-waiting-content",
|
|
24
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
34
|
+
children: [hasLoaderSpinner ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Oval, {
|
|
25
35
|
visible: true,
|
|
26
36
|
height: "60",
|
|
27
37
|
width: "60",
|
|
@@ -29,6 +39,15 @@ function MyWaiting({
|
|
|
29
39
|
secondaryColor: "#cdcdcd",
|
|
30
40
|
ariaLabel: "oval-loading",
|
|
31
41
|
strokeWidth: 5
|
|
42
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
43
|
+
style: {
|
|
44
|
+
width: "60px",
|
|
45
|
+
height: "60px",
|
|
46
|
+
border: "5px solid #cdcdcd",
|
|
47
|
+
borderTop: "5px solid #fff",
|
|
48
|
+
borderRadius: "50%",
|
|
49
|
+
animation: "spin 1s linear infinite"
|
|
50
|
+
}
|
|
32
51
|
}), message && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
33
52
|
className: "my-waiting-message",
|
|
34
53
|
children: message
|
|
@@ -5,22 +5,34 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _reactZoomPanPinch = require("react-zoom-pan-pinch");
|
|
9
8
|
require("./MyZoomImage.css");
|
|
10
9
|
var _pi = require("react-icons/pi");
|
|
11
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
11
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
13
12
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
+
// Opsiyonel bağımlılığı kontrol et
|
|
14
|
+
let TransformWrapper, TransformComponent, useControls;
|
|
15
|
+
let hasZoomPanPinch = false;
|
|
16
|
+
try {
|
|
17
|
+
const zoomPanPinch = require("react-zoom-pan-pinch");
|
|
18
|
+
TransformWrapper = zoomPanPinch.TransformWrapper;
|
|
19
|
+
TransformComponent = zoomPanPinch.TransformComponent;
|
|
20
|
+
useControls = zoomPanPinch.useControls;
|
|
21
|
+
hasZoomPanPinch = true;
|
|
22
|
+
} catch (error) {
|
|
23
|
+
console.warn("MyZoomImage: react-zoom-pan-pinch bağımlılığı bulunamadı. MyZoomImage bileşenini kullanmak için 'react-zoom-pan-pinch' paketini yükleyin.");
|
|
24
|
+
}
|
|
14
25
|
const Controls = ({
|
|
15
26
|
wrapperRef,
|
|
16
27
|
openArrow
|
|
17
28
|
}) => {
|
|
29
|
+
if (!hasZoomPanPinch) return null;
|
|
18
30
|
const {
|
|
19
31
|
zoomIn,
|
|
20
32
|
zoomOut,
|
|
21
33
|
resetTransform,
|
|
22
34
|
centerView
|
|
23
|
-
} =
|
|
35
|
+
} = useControls();
|
|
24
36
|
const handlePan = (x, y) => {
|
|
25
37
|
if (wrapperRef.current) {
|
|
26
38
|
// debugger
|
|
@@ -103,6 +115,43 @@ const MyImageZoom = ({
|
|
|
103
115
|
}) => {
|
|
104
116
|
const wrapperRef = (0, _react.useRef)(null); // Ref oluştur
|
|
105
117
|
const [openArrow, setOpenArrow] = (0, _react.useState)(false);
|
|
118
|
+
|
|
119
|
+
// Bağımlılık yoksa uyarı göster
|
|
120
|
+
if (!hasZoomPanPinch) {
|
|
121
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
122
|
+
style: {
|
|
123
|
+
padding: "20px",
|
|
124
|
+
border: "2px dashed #ff6b6b",
|
|
125
|
+
borderRadius: "8px",
|
|
126
|
+
backgroundColor: "#fff5f5",
|
|
127
|
+
color: "#d63031",
|
|
128
|
+
textAlign: "center"
|
|
129
|
+
},
|
|
130
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
|
|
131
|
+
children: "MyZoomImage Bile\u015Feni Kullan\u0131lam\u0131yor"
|
|
132
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
133
|
+
children: "Bu bile\u015Feni kullanmak i\xE7in a\u015Fa\u011F\u0131daki paketi y\xFCklemeniz gerekiyor:"
|
|
134
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("pre", {
|
|
135
|
+
style: {
|
|
136
|
+
backgroundColor: "#f8f9fa",
|
|
137
|
+
padding: "10px",
|
|
138
|
+
borderRadius: "4px",
|
|
139
|
+
fontSize: "12px",
|
|
140
|
+
textAlign: "left",
|
|
141
|
+
overflow: "auto"
|
|
142
|
+
},
|
|
143
|
+
children: `npm install react-zoom-pan-pinch`
|
|
144
|
+
}), children || /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
|
|
145
|
+
src: image,
|
|
146
|
+
alt: "Image",
|
|
147
|
+
style: {
|
|
148
|
+
maxWidth: "100%",
|
|
149
|
+
marginTop: "10px",
|
|
150
|
+
borderRadius: "4px"
|
|
151
|
+
}
|
|
152
|
+
})]
|
|
153
|
+
});
|
|
154
|
+
}
|
|
106
155
|
const handlerTransform = e => {
|
|
107
156
|
setOpenArrow(e.state.scale != 1);
|
|
108
157
|
if (onZoomChange != null) {
|
|
@@ -111,14 +160,14 @@ const MyImageZoom = ({
|
|
|
111
160
|
};
|
|
112
161
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
113
162
|
className: "zoom-container flex justify-center items-center",
|
|
114
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(
|
|
163
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(TransformWrapper, {
|
|
115
164
|
ref: wrapperRef,
|
|
116
165
|
className: "w-full flex items-center justify-center",
|
|
117
166
|
onTransformed: handlerTransform,
|
|
118
167
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Controls, {
|
|
119
168
|
wrapperRef: wrapperRef,
|
|
120
169
|
openArrow: openArrow
|
|
121
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
170
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(TransformComponent, {
|
|
122
171
|
className: "w-full flex items-center justify-center",
|
|
123
172
|
children: children || /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
|
|
124
173
|
src: image,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "px-react-ui-components",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -41,17 +41,60 @@
|
|
|
41
41
|
"@babel/preset-react": "^7.26.3"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
|
+
"react": "^18.3.1 || ^19.0.0",
|
|
45
|
+
"react-dom": "^18.3.1 || ^19.0.0",
|
|
46
|
+
"react-icons": "^5.5.0"
|
|
47
|
+
},
|
|
48
|
+
"peerDependenciesMeta": {
|
|
49
|
+
"katex": {
|
|
50
|
+
"optional": true
|
|
51
|
+
},
|
|
52
|
+
"quill": {
|
|
53
|
+
"optional": true
|
|
54
|
+
},
|
|
55
|
+
"quill-image-resize-module-react": {
|
|
56
|
+
"optional": true
|
|
57
|
+
},
|
|
58
|
+
"quill-table-ui": {
|
|
59
|
+
"optional": true
|
|
60
|
+
},
|
|
61
|
+
"react-confirm-alert": {
|
|
62
|
+
"optional": true
|
|
63
|
+
},
|
|
64
|
+
"react-image-crop": {
|
|
65
|
+
"optional": true
|
|
66
|
+
},
|
|
67
|
+
"react-loader-spinner": {
|
|
68
|
+
"optional": true
|
|
69
|
+
},
|
|
70
|
+
"react-quill": {
|
|
71
|
+
"optional": true
|
|
72
|
+
},
|
|
73
|
+
"react-zoom-pan-pinch": {
|
|
74
|
+
"optional": true
|
|
75
|
+
},
|
|
76
|
+
"react-image-file-resizer": {
|
|
77
|
+
"optional": true
|
|
78
|
+
},
|
|
79
|
+
"react-html5-camera-photo": {
|
|
80
|
+
"optional": true
|
|
81
|
+
},
|
|
82
|
+
"react-router-dom": {
|
|
83
|
+
"optional": true
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"optionalDependencies": {
|
|
44
87
|
"katex": "^0.16.21",
|
|
45
88
|
"quill": "^1.3.7",
|
|
46
89
|
"quill-image-resize-module-react": "^3.0.0",
|
|
47
90
|
"quill-table-ui": "^1.0.7",
|
|
48
|
-
"react": "^18.3.1",
|
|
49
91
|
"react-confirm-alert": "^3.0.6",
|
|
50
|
-
"react-dom": "^18.3.1",
|
|
51
|
-
"react-icons": "^5.5.0",
|
|
52
92
|
"react-image-crop": "^11.0.7",
|
|
53
93
|
"react-loader-spinner": "^6.1.6",
|
|
54
94
|
"react-quill": "^2.0.0",
|
|
55
|
-
"react-zoom-pan-pinch": "^3.7.0"
|
|
95
|
+
"react-zoom-pan-pinch": "^3.7.0",
|
|
96
|
+
"react-image-file-resizer": "^3.0.4",
|
|
97
|
+
"react-html5-camera-photo": "^1.5.4",
|
|
98
|
+
"react-router-dom": "^6.28.0"
|
|
56
99
|
}
|
|
57
100
|
}
|