px-react-ui-components 1.0.28 → 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 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 katex@^0.16.21 quill@^1.3.7 quill-image-resize-module-react@^3.0.0 quill-table-ui@^1.0.7 react-confirm-alert@^3.0.6 react-icons@^5.5.0 react-image-crop@^11.0.7 react-loader-spinner@^6.1.6 react-zoom-pan-pinch@^3.7.0
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
- ## Peer Dependencies
45
+ ## Dependencies
27
46
 
28
- This library requires the following peer dependencies to be installed in your project:
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
- "katex": "^0.16.21",
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
- (0, _reactConfirmAlert.confirmAlert)({
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
- // KaTeX'i global hale getir
21
- window.katex = _katex.default;
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 font formatını genişlet
117
- const Font = _quill.default.import("formats/font");
118
- Font.whitelist = fonts.map(f => f.value);
119
- _quill.default.register(Font, true);
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 modüllerini kaydet
122
- _quill.default.register("modules/imageResize", _quillImageResize.default);
123
- _quill.default.register(_quillTable.default.TableCell);
124
- _quill.default.register(_quillTable.default.TableRow);
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
- // Formula Embed için düzeltme
130
- const Embed = _quill.default.import("blots/embed");
131
- class FormulaEmbed extends Embed {
132
- static create(value) {
133
- let node = super.create();
134
- if (value) {
135
- node.setAttribute("data-value", value);
136
- try {
137
- window.katex.render(value, node, {
138
- throwOnError: false
139
- });
140
- } catch (err) {
141
- console.error("KaTeX render error:", err);
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
- return node;
145
- }
146
- static value(node) {
147
- return node.getAttribute("data-value");
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 = _quill.default.import('ui/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)(_reactQuill.default, {
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
- _reactImageFileResizer.default.imageFileResizer(file, 2600, 2600, "JPEG", 100, 0, uri => {
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)(_reactHtml5CameraPhoto.default, {
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: _reactHtml5CameraPhoto.FACING_MODES.ENVIRONMENT,
318
+ idealFacingMode: FACING_MODES.ENVIRONMENT,
302
319
  idealResolution: {
303
320
  width: 1024,
304
321
  height: 1024
305
322
  },
306
- imageType: _reactHtml5CameraPhoto.IMAGE_TYPES.JPG,
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)(_reactImageCrop.default, {
128
+ children: image && /*#__PURE__*/(0, _jsxRuntime.jsx)(ReactCrop, {
92
129
  crop: crop,
93
130
  onComplete: onCropComplete,
94
131
  onChange: newCrop => setCrop(newCrop),
@@ -246,22 +246,16 @@ function MyInput({
246
246
  if (onMouseUp != null) onMouseUp(e);
247
247
  };
248
248
  const onMyMouseEnter = e => {
249
- // MONEY input için formatlanmış değeri kullan
250
- if (type === MyInputType.MONEY) {
251
- e.target.value = moneyFormat(myValue);
252
- e.value = moneyFormat(myValue);
253
- } else {
249
+ // MONEY input için displayValue'yu koru, sadece diğer tipler için değer ata
250
+ if (type !== MyInputType.MONEY) {
254
251
  e.target.value = myValue;
255
252
  e.value = myValue;
256
253
  }
257
254
  if (onMouseEnter != null) onMouseEnter(e);
258
255
  };
259
256
  const onMyMouseLeave = e => {
260
- // MONEY input için formatlanmış değeri kullan
261
- if (type === MyInputType.MONEY) {
262
- e.target.value = moneyFormat(myValue);
263
- e.value = moneyFormat(myValue);
264
- } else {
257
+ // MONEY input için displayValue'yu koru, sadece diğer tipler için değer ata
258
+ if (type !== MyInputType.MONEY) {
265
259
  e.target.value = myValue;
266
260
  e.value = myValue;
267
261
  }
@@ -25,4 +25,9 @@
25
25
  display: block;
26
26
  padding: 15px 0;
27
27
  text-align: center;
28
+ }
29
+
30
+ @keyframes spin {
31
+ 0% { transform: rotate(0deg); }
32
+ 100% { transform: rotate(360deg); }
28
33
  }
@@ -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)(_reactLoaderSpinner.Oval, {
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
- } = (0, _reactZoomPanPinch.useControls)();
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)(_reactZoomPanPinch.TransformWrapper, {
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)(_reactZoomPanPinch.TransformComponent, {
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.0.28",
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
  }