@djangocfg/ui-tools 2.1.140 → 2.1.144
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 +41 -1
- package/dist/{CronScheduler.client-MCNY3POV.mjs → CronScheduler.client-3O3VU4CI.mjs} +3 -3
- package/dist/{CronScheduler.client-MCNY3POV.mjs.map → CronScheduler.client-3O3VU4CI.mjs.map} +1 -1
- package/dist/{CronScheduler.client-3JXCOKFY.cjs → CronScheduler.client-A4GO6YBY.cjs} +11 -11
- package/dist/{CronScheduler.client-3JXCOKFY.cjs.map → CronScheduler.client-A4GO6YBY.cjs.map} +1 -1
- package/dist/{chunk-CY3CQS26.cjs → chunk-46VDB3BJ.cjs} +13 -13
- package/dist/{chunk-CY3CQS26.cjs.map → chunk-46VDB3BJ.cjs.map} +1 -1
- package/dist/{chunk-LTJX2JXE.mjs → chunk-5LBDYFWH.mjs} +2 -2
- package/dist/chunk-5LBDYFWH.mjs.map +1 -0
- package/dist/{chunk-TEFRA7GW.cjs → chunk-6RG7HOVF.cjs} +9 -9
- package/dist/{chunk-TEFRA7GW.cjs.map → chunk-6RG7HOVF.cjs.map} +1 -1
- package/dist/{chunk-XTBRWVIV.cjs → chunk-77HQWEQ6.cjs} +2 -2
- package/dist/chunk-77HQWEQ6.cjs.map +1 -0
- package/dist/{chunk-OVNC4KW6.mjs → chunk-7HP3GZFT.mjs} +2 -2
- package/dist/chunk-7HP3GZFT.mjs.map +1 -0
- package/dist/{chunk-AL7PTAS5.cjs → chunk-F2CMIIOH.cjs} +2 -2
- package/dist/{chunk-AL7PTAS5.cjs.map → chunk-F2CMIIOH.cjs.map} +1 -1
- package/dist/{chunk-EVGWYASL.cjs → chunk-KHHTBDWW.cjs} +2 -2
- package/dist/chunk-KHHTBDWW.cjs.map +1 -0
- package/dist/{chunk-2DSR7V2L.mjs → chunk-MADKYFI3.mjs} +3 -3
- package/dist/{chunk-2DSR7V2L.mjs.map → chunk-MADKYFI3.mjs.map} +1 -1
- package/dist/{chunk-QIAP4G5L.mjs → chunk-PZKAH7WQ.mjs} +2 -2
- package/dist/{chunk-QIAP4G5L.mjs.map → chunk-PZKAH7WQ.mjs.map} +1 -1
- package/dist/{chunk-4G4UGMOP.mjs → chunk-QKG4LERV.mjs} +3 -3
- package/dist/{chunk-4G4UGMOP.mjs.map → chunk-QKG4LERV.mjs.map} +1 -1
- package/dist/{components-Y64GTIMQ.cjs → components-7L3KMPQ5.cjs} +11 -11
- package/dist/{components-4YSJ5ALL.mjs.map → components-7L3KMPQ5.cjs.map} +1 -1
- package/dist/components-AALNUI3D.cjs +27 -0
- package/dist/{components-BSTP3VLD.cjs.map → components-AALNUI3D.cjs.map} +1 -1
- package/dist/components-GGZJFEII.mjs +5 -0
- package/dist/{components-C7ZL7OMY.mjs.map → components-GGZJFEII.mjs.map} +1 -1
- package/dist/{components-C7ZL7OMY.mjs → components-IPSHDNXP.mjs} +3 -3
- package/dist/{components-LDRFDV4A.cjs.map → components-IPSHDNXP.mjs.map} +1 -1
- package/dist/components-JOYIAXID.mjs +6 -0
- package/dist/components-JOYIAXID.mjs.map +1 -0
- package/dist/components-YC32T5D7.cjs +22 -0
- package/dist/components-YC32T5D7.cjs.map +1 -0
- package/dist/index.cjs +84 -84
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +11 -11
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -6
- package/src/components/markdown/useCollapsibleContent.ts +1 -1
- package/src/stores/mediaCache.ts +2 -1
- package/src/tools/AudioPlayer/hooks/useHybridAudio.ts +1 -1
- package/src/tools/AudioPlayer/hooks/useHybridAudioAnalysis.ts +2 -1
- package/src/tools/CronScheduler/context/hooks.ts +1 -0
- package/src/tools/Gallery/hooks/useGallery.ts +2 -1
- package/src/tools/Gallery/hooks/useImageDimensions.ts +2 -1
- package/src/tools/Gallery/hooks/usePinchZoom.ts +1 -1
- package/src/tools/Gallery/hooks/usePreloadImages.ts +2 -1
- package/src/tools/Gallery/hooks/useSwipe.ts +2 -1
- package/src/tools/Gallery/hooks/useVirtualList.ts +1 -1
- package/src/tools/Gallery/hooks/useZoom.ts +1 -1
- package/src/tools/ImageViewer/hooks/useImageLoading.ts +6 -3
- package/src/tools/ImageViewer/hooks/useImageTransform.ts +3 -2
- package/src/tools/ImageViewer/utils/lqip.ts +1 -1
- package/src/tools/Map/Map.story.tsx +160 -2
- package/src/tools/Map/components/MapCluster.tsx +0 -3
- package/src/tools/Map/hooks/index.ts +1 -0
- package/src/tools/Map/hooks/useMap.ts +1 -1
- package/src/tools/Map/hooks/useMapControl.ts +4 -2
- package/src/tools/Map/hooks/useMapEvents.ts +4 -2
- package/src/tools/Map/hooks/useMapLayers.ts +4 -3
- package/src/tools/Map/hooks/useMapViewport.ts +4 -2
- package/src/tools/Map/hooks/useMarkers.ts +5 -3
- package/src/tools/Map/hooks/useSpiderfy.ts +183 -0
- package/src/tools/Map/utils/index.ts +9 -0
- package/src/tools/Map/utils/spiderfy.ts +239 -0
- package/src/tools/VideoPlayer/hooks/useVideoPlayerSettings.ts +1 -0
- package/src/tools/VideoPlayer/hooks/useVideoPositionCache.ts +2 -1
- package/dist/chunk-EVGWYASL.cjs.map +0 -1
- package/dist/chunk-LTJX2JXE.mjs.map +0 -1
- package/dist/chunk-OVNC4KW6.mjs.map +0 -1
- package/dist/chunk-XTBRWVIV.cjs.map +0 -1
- package/dist/components-4YSJ5ALL.mjs +0 -6
- package/dist/components-BSTP3VLD.cjs +0 -27
- package/dist/components-LDRFDV4A.cjs +0 -22
- package/dist/components-VZKUTDJK.mjs +0 -5
- package/dist/components-VZKUTDJK.mjs.map +0 -1
- package/dist/components-Y64GTIMQ.cjs.map +0 -1
package/README.md
CHANGED
|
@@ -132,7 +132,7 @@ function LocationMap() {
|
|
|
132
132
|
| `MapContainer` | Main map container with controls |
|
|
133
133
|
| `MapMarker` | Custom marker with React children |
|
|
134
134
|
| `MapPopup` | Popup attached to marker |
|
|
135
|
-
| `MapCluster` | Clustered markers |
|
|
135
|
+
| `MapCluster` | Clustered markers with spiderfy |
|
|
136
136
|
| `MapSource` / `MapLayer` | Custom GeoJSON layers |
|
|
137
137
|
| `MapControls` | Navigation controls |
|
|
138
138
|
| `MapLegend` | Map legend component |
|
|
@@ -140,6 +140,46 @@ function LocationMap() {
|
|
|
140
140
|
| `DrawControl` | Drawing tools (optional) |
|
|
141
141
|
| `GeocoderControl` | Search/geocoding (optional) |
|
|
142
142
|
|
|
143
|
+
### Overlapping Markers
|
|
144
|
+
|
|
145
|
+
When multiple markers are at the same location, use `offsetOverlappingMarkers` to spread them out before rendering:
|
|
146
|
+
|
|
147
|
+
```tsx
|
|
148
|
+
import { MapCluster } from '@djangocfg/ui-tools/map';
|
|
149
|
+
import { offsetOverlappingMarkers } from '@djangocfg/ui-tools/map';
|
|
150
|
+
|
|
151
|
+
// Pre-process data to offset overlapping points
|
|
152
|
+
const processedData = useMemo(() => {
|
|
153
|
+
const markers = geojson.features.map((f, i) => ({
|
|
154
|
+
id: f.properties?.id || `point-${i}`,
|
|
155
|
+
longitude: f.geometry.coordinates[0],
|
|
156
|
+
latitude: f.geometry.coordinates[1],
|
|
157
|
+
data: f.properties,
|
|
158
|
+
}));
|
|
159
|
+
|
|
160
|
+
const offsetMarkers = offsetOverlappingMarkers(markers, {
|
|
161
|
+
spiralRadius: 0.0003, // ~30m spread
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
return {
|
|
165
|
+
type: 'FeatureCollection',
|
|
166
|
+
features: offsetMarkers.map((m) => ({
|
|
167
|
+
type: 'Feature',
|
|
168
|
+
properties: m.data,
|
|
169
|
+
geometry: { type: 'Point', coordinates: [m.longitude, m.latitude] },
|
|
170
|
+
})),
|
|
171
|
+
};
|
|
172
|
+
}, [geojson]);
|
|
173
|
+
|
|
174
|
+
<MapCluster sourceId="points" data={processedData} />
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
| Utility | Description |
|
|
178
|
+
|---------|-------------|
|
|
179
|
+
| `offsetOverlappingMarkers(markers, options)` | Spread overlapping markers using Fermat spiral |
|
|
180
|
+
| `hasOverlappingMarkers(markers)` | Check if any markers overlap |
|
|
181
|
+
| `getOverlapStats(markers)` | Get statistics about overlapping markers |
|
|
182
|
+
|
|
143
183
|
### Map Hooks
|
|
144
184
|
|
|
145
185
|
| Hook | Description |
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useCronType, ScheduleTypeSelector, TimeSelector, DayChips, MonthDayGrid, CustomInput, SchedulePreview, CronSchedulerProvider } from './chunk-
|
|
1
|
+
import { useCronType, ScheduleTypeSelector, TimeSelector, DayChips, MonthDayGrid, CustomInput, SchedulePreview, CronSchedulerProvider } from './chunk-PZKAH7WQ.mjs';
|
|
2
2
|
import { __name } from './chunk-CGILA3WO.mjs';
|
|
3
3
|
import { cn } from '@djangocfg/ui-core/lib';
|
|
4
4
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -63,5 +63,5 @@ __name(CronScheduler, "CronScheduler");
|
|
|
63
63
|
var CronScheduler_client_default = CronScheduler;
|
|
64
64
|
|
|
65
65
|
export { CronScheduler, CronScheduler_client_default as default };
|
|
66
|
-
//# sourceMappingURL=CronScheduler.client-
|
|
67
|
-
//# sourceMappingURL=CronScheduler.client-
|
|
66
|
+
//# sourceMappingURL=CronScheduler.client-3O3VU4CI.mjs.map
|
|
67
|
+
//# sourceMappingURL=CronScheduler.client-3O3VU4CI.mjs.map
|
package/dist/{CronScheduler.client-MCNY3POV.mjs.map → CronScheduler.client-3O3VU4CI.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tools/CronScheduler/CronScheduler.client.tsx"],"names":[],"mappings":";;;;;AAmCA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,WAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,WAAA,EAAY;AAE7B,EAAA,4BACG,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA,EAEvC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,wBAAqB,QAAA,EAAoB,CAAA;AAAA,IAGzC,SAAS,QAAA,oBACR,GAAA,CAAC,YAAA,EAAA,EAAa,MAAA,EAAQ,YAAY,QAAA,EAAoB,CAAA;AAAA,IAIvD,SAAS,QAAA,oBACR,GAAA,CAAC,QAAA,EAAA,EAAS,QAAA,EAAoB,aAAW,IAAA,EAAC,CAAA;AAAA,IAI3C,SAAS,SAAA,oBACR,GAAA,CAAC,YAAA,EAAA,EAAa,QAAA,EAAoB,aAAW,IAAA,EAAC,CAAA;AAAA,IAI/C,IAAA,KAAS,QAAA,oBACR,GAAA,CAAC,WAAA,EAAA,EAAY,QAAA,EAAoB,CAAA;AAAA,IAIlC,WAAA,oBACC,GAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAkB,IAAA;AAAA,QAClB;AAAA;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ;AA5CS,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AA2EF,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,OAAA;AAAA,EACd,WAAA,GAAc,IAAA;AAAA,EACd,kBAAA,GAAqB,KAAA;AAAA,EACrB,SAAA,GAAY,KAAA;AAAA,EACZ,UAAA,GAAa,KAAA;AAAA,EACb,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EAAuB;AACrB,EAAA,uBACE,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACC,WAAA;AAAA,UACA,kBAAA;AAAA,UACA,SAAA;AAAA,UACA,UAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;AA3BgB,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA;AA6BhB,IAAO,4BAAA,GAAQ","file":"CronScheduler.client-
|
|
1
|
+
{"version":3,"sources":["../src/tools/CronScheduler/CronScheduler.client.tsx"],"names":[],"mappings":";;;;;AAmCA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,WAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,WAAA,EAAY;AAE7B,EAAA,4BACG,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA,EAEvC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,wBAAqB,QAAA,EAAoB,CAAA;AAAA,IAGzC,SAAS,QAAA,oBACR,GAAA,CAAC,YAAA,EAAA,EAAa,MAAA,EAAQ,YAAY,QAAA,EAAoB,CAAA;AAAA,IAIvD,SAAS,QAAA,oBACR,GAAA,CAAC,QAAA,EAAA,EAAS,QAAA,EAAoB,aAAW,IAAA,EAAC,CAAA;AAAA,IAI3C,SAAS,SAAA,oBACR,GAAA,CAAC,YAAA,EAAA,EAAa,QAAA,EAAoB,aAAW,IAAA,EAAC,CAAA;AAAA,IAI/C,IAAA,KAAS,QAAA,oBACR,GAAA,CAAC,WAAA,EAAA,EAAY,QAAA,EAAoB,CAAA;AAAA,IAIlC,WAAA,oBACC,GAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAkB,IAAA;AAAA,QAClB;AAAA;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ;AA5CS,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AA2EF,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,OAAA;AAAA,EACd,WAAA,GAAc,IAAA;AAAA,EACd,kBAAA,GAAqB,KAAA;AAAA,EACrB,SAAA,GAAY,KAAA;AAAA,EACZ,UAAA,GAAa,KAAA;AAAA,EACb,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EAAuB;AACrB,EAAA,uBACE,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACC,WAAA;AAAA,UACA,kBAAA;AAAA,UACA,SAAA;AAAA,UACA,UAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;AA3BgB,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA;AA6BhB,IAAO,4BAAA,GAAQ","file":"CronScheduler.client-3O3VU4CI.mjs","sourcesContent":["'use client';\n\n/**\n * CronScheduler Client Component\n *\n * Compact cron expression builder following Apple HIG principles.\n * Uses context-based architecture for state management.\n */\n\nimport { cn } from '@djangocfg/ui-core/lib';\nimport { CronSchedulerProvider } from './context/CronSchedulerContext';\nimport { useCronType } from './context/hooks';\nimport {\n ScheduleTypeSelector,\n TimeSelector,\n DayChips,\n MonthDayGrid,\n CustomInput,\n SchedulePreview,\n} from './components';\nimport type { CronSchedulerProps } from './types';\n\n// ============================================================================\n// Inner Component (uses context)\n// ============================================================================\n\ninterface CronSchedulerInnerProps {\n showPreview: boolean;\n showCronExpression: boolean;\n allowCopy: boolean;\n timeFormat: '12h' | '24h';\n disabled: boolean;\n className?: string;\n}\n\nfunction CronSchedulerInner({\n showPreview,\n showCronExpression,\n allowCopy,\n timeFormat,\n disabled,\n className,\n}: CronSchedulerInnerProps) {\n const { type } = useCronType();\n\n return (\n <div className={cn('space-y-3', className)}>\n {/* Schedule Type Selector */}\n <ScheduleTypeSelector disabled={disabled} />\n\n {/* Time Selector (shown for daily, weekly, monthly) */}\n {type !== 'custom' && (\n <TimeSelector format={timeFormat} disabled={disabled} />\n )}\n\n {/* Day Chips (weekly only) */}\n {type === 'weekly' && (\n <DayChips disabled={disabled} showPresets />\n )}\n\n {/* Month Day Grid (monthly only) */}\n {type === 'monthly' && (\n <MonthDayGrid disabled={disabled} showPresets />\n )}\n\n {/* Custom Input (custom only) */}\n {type === 'custom' && (\n <CustomInput disabled={disabled} />\n )}\n\n {/* Preview - always show cron expression */}\n {showPreview && (\n <SchedulePreview\n showCronExpression\n allowCopy={allowCopy}\n />\n )}\n </div>\n );\n}\n\n// ============================================================================\n// Main Component (with Provider)\n// ============================================================================\n\n/**\n * CronScheduler - Compact cron expression builder\n *\n * A user-friendly interface for creating cron schedules without\n * needing to know cron syntax. Follows Apple HIG design principles.\n *\n * @example\n * // Basic usage\n * <CronScheduler\n * value={cronExpression}\n * onChange={setCronExpression}\n * />\n *\n * @example\n * // With all options\n * <CronScheduler\n * value=\"0 9 * * 1-5\"\n * onChange={handleChange}\n * defaultType=\"weekly\"\n * showPreview\n * showCronExpression\n * allowCopy\n * timeFormat=\"24h\"\n * />\n */\nexport function CronScheduler({\n value,\n onChange,\n defaultType = 'daily',\n showPreview = true,\n showCronExpression = false,\n allowCopy = false,\n timeFormat = '24h',\n disabled = false,\n className,\n}: CronSchedulerProps) {\n return (\n <CronSchedulerProvider\n value={value}\n onChange={onChange}\n defaultType={defaultType}\n >\n <CronSchedulerInner\n showPreview={showPreview}\n showCronExpression={showCronExpression}\n allowCopy={allowCopy}\n timeFormat={timeFormat}\n disabled={disabled}\n className={className}\n />\n </CronSchedulerProvider>\n );\n}\n\nexport default CronScheduler;\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var chunkF2CMIIOH_cjs = require('./chunk-F2CMIIOH.cjs');
|
|
6
6
|
var chunkWGEGR3DF_cjs = require('./chunk-WGEGR3DF.cjs');
|
|
7
7
|
var lib = require('@djangocfg/ui-core/lib');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -15,15 +15,15 @@ function CronSchedulerInner({
|
|
|
15
15
|
disabled,
|
|
16
16
|
className
|
|
17
17
|
}) {
|
|
18
|
-
const { type } =
|
|
18
|
+
const { type } = chunkF2CMIIOH_cjs.useCronType();
|
|
19
19
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: lib.cn("space-y-3", className), children: [
|
|
20
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
21
|
-
type !== "custom" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
22
|
-
type === "weekly" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
23
|
-
type === "monthly" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
24
|
-
type === "custom" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF2CMIIOH_cjs.ScheduleTypeSelector, { disabled }),
|
|
21
|
+
type !== "custom" && /* @__PURE__ */ jsxRuntime.jsx(chunkF2CMIIOH_cjs.TimeSelector, { format: timeFormat, disabled }),
|
|
22
|
+
type === "weekly" && /* @__PURE__ */ jsxRuntime.jsx(chunkF2CMIIOH_cjs.DayChips, { disabled, showPresets: true }),
|
|
23
|
+
type === "monthly" && /* @__PURE__ */ jsxRuntime.jsx(chunkF2CMIIOH_cjs.MonthDayGrid, { disabled, showPresets: true }),
|
|
24
|
+
type === "custom" && /* @__PURE__ */ jsxRuntime.jsx(chunkF2CMIIOH_cjs.CustomInput, { disabled }),
|
|
25
25
|
showPreview && /* @__PURE__ */ jsxRuntime.jsx(
|
|
26
|
-
|
|
26
|
+
chunkF2CMIIOH_cjs.SchedulePreview,
|
|
27
27
|
{
|
|
28
28
|
showCronExpression: true,
|
|
29
29
|
allowCopy
|
|
@@ -44,7 +44,7 @@ function CronScheduler({
|
|
|
44
44
|
className
|
|
45
45
|
}) {
|
|
46
46
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
47
|
-
|
|
47
|
+
chunkF2CMIIOH_cjs.CronSchedulerProvider,
|
|
48
48
|
{
|
|
49
49
|
value,
|
|
50
50
|
onChange,
|
|
@@ -68,5 +68,5 @@ var CronScheduler_client_default = CronScheduler;
|
|
|
68
68
|
|
|
69
69
|
exports.CronScheduler = CronScheduler;
|
|
70
70
|
exports.default = CronScheduler_client_default;
|
|
71
|
-
//# sourceMappingURL=CronScheduler.client-
|
|
72
|
-
//# sourceMappingURL=CronScheduler.client-
|
|
71
|
+
//# sourceMappingURL=CronScheduler.client-A4GO6YBY.cjs.map
|
|
72
|
+
//# sourceMappingURL=CronScheduler.client-A4GO6YBY.cjs.map
|
package/dist/{CronScheduler.client-3JXCOKFY.cjs.map → CronScheduler.client-A4GO6YBY.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tools/CronScheduler/CronScheduler.client.tsx"],"names":["useCronType","cn","jsx","ScheduleTypeSelector","TimeSelector","DayChips","MonthDayGrid","CustomInput","SchedulePreview","__name","CronSchedulerProvider"],"mappings":";;;;;;;;;AAmCA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,WAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,IAAA,EAAK,GAAIA,6BAAA,EAAY;AAE7B,EAAA,uCACG,KAAA,EAAA,EAAI,SAAA,EAAWC,MAAA,CAAG,WAAA,EAAa,SAAS,CAAA,EAEvC,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAACC,0CAAqB,QAAA,EAAoB,CAAA;AAAA,IAGzC,SAAS,QAAA,oBACRD,cAAA,CAACE,8BAAA,EAAA,EAAa,MAAA,EAAQ,YAAY,QAAA,EAAoB,CAAA;AAAA,IAIvD,SAAS,QAAA,oBACRF,cAAA,CAACG,0BAAA,EAAA,EAAS,QAAA,EAAoB,aAAW,IAAA,EAAC,CAAA;AAAA,IAI3C,SAAS,SAAA,oBACRH,cAAA,CAACI,8BAAA,EAAA,EAAa,QAAA,EAAoB,aAAW,IAAA,EAAC,CAAA;AAAA,IAI/C,IAAA,KAAS,QAAA,oBACRJ,cAAA,CAACK,6BAAA,EAAA,EAAY,QAAA,EAAoB,CAAA;AAAA,IAIlC,WAAA,oBACCL,cAAA;AAAA,MAACM,iCAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAkB,IAAA;AAAA,QAClB;AAAA;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ;AA5CSC,wBAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AA2EF,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,OAAA;AAAA,EACd,WAAA,GAAc,IAAA;AAAA,EACd,kBAAA,GAAqB,KAAA;AAAA,EACrB,SAAA,GAAY,KAAA;AAAA,EACZ,UAAA,GAAa,KAAA;AAAA,EACb,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EAAuB;AACrB,EAAA,uBACEP,cAAA;AAAA,IAACQ,uCAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MAEA,QAAA,kBAAAR,cAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACC,WAAA;AAAA,UACA,kBAAA;AAAA,UACA,SAAA;AAAA,UACA,UAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;AA3BgBO,wBAAA,CAAA,aAAA,EAAA,eAAA,CAAA;AA6BhB,IAAO,4BAAA,GAAQ","file":"CronScheduler.client-
|
|
1
|
+
{"version":3,"sources":["../src/tools/CronScheduler/CronScheduler.client.tsx"],"names":["useCronType","cn","jsx","ScheduleTypeSelector","TimeSelector","DayChips","MonthDayGrid","CustomInput","SchedulePreview","__name","CronSchedulerProvider"],"mappings":";;;;;;;;;AAmCA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,WAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,IAAA,EAAK,GAAIA,6BAAA,EAAY;AAE7B,EAAA,uCACG,KAAA,EAAA,EAAI,SAAA,EAAWC,MAAA,CAAG,WAAA,EAAa,SAAS,CAAA,EAEvC,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAACC,0CAAqB,QAAA,EAAoB,CAAA;AAAA,IAGzC,SAAS,QAAA,oBACRD,cAAA,CAACE,8BAAA,EAAA,EAAa,MAAA,EAAQ,YAAY,QAAA,EAAoB,CAAA;AAAA,IAIvD,SAAS,QAAA,oBACRF,cAAA,CAACG,0BAAA,EAAA,EAAS,QAAA,EAAoB,aAAW,IAAA,EAAC,CAAA;AAAA,IAI3C,SAAS,SAAA,oBACRH,cAAA,CAACI,8BAAA,EAAA,EAAa,QAAA,EAAoB,aAAW,IAAA,EAAC,CAAA;AAAA,IAI/C,IAAA,KAAS,QAAA,oBACRJ,cAAA,CAACK,6BAAA,EAAA,EAAY,QAAA,EAAoB,CAAA;AAAA,IAIlC,WAAA,oBACCL,cAAA;AAAA,MAACM,iCAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAkB,IAAA;AAAA,QAClB;AAAA;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ;AA5CSC,wBAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AA2EF,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,OAAA;AAAA,EACd,WAAA,GAAc,IAAA;AAAA,EACd,kBAAA,GAAqB,KAAA;AAAA,EACrB,SAAA,GAAY,KAAA;AAAA,EACZ,UAAA,GAAa,KAAA;AAAA,EACb,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EAAuB;AACrB,EAAA,uBACEP,cAAA;AAAA,IAACQ,uCAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MAEA,QAAA,kBAAAR,cAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACC,WAAA;AAAA,UACA,kBAAA;AAAA,UACA,SAAA;AAAA,UACA,UAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;AA3BgBO,wBAAA,CAAA,aAAA,EAAA,eAAA,CAAA;AA6BhB,IAAO,4BAAA,GAAQ","file":"CronScheduler.client-A4GO6YBY.cjs","sourcesContent":["'use client';\n\n/**\n * CronScheduler Client Component\n *\n * Compact cron expression builder following Apple HIG principles.\n * Uses context-based architecture for state management.\n */\n\nimport { cn } from '@djangocfg/ui-core/lib';\nimport { CronSchedulerProvider } from './context/CronSchedulerContext';\nimport { useCronType } from './context/hooks';\nimport {\n ScheduleTypeSelector,\n TimeSelector,\n DayChips,\n MonthDayGrid,\n CustomInput,\n SchedulePreview,\n} from './components';\nimport type { CronSchedulerProps } from './types';\n\n// ============================================================================\n// Inner Component (uses context)\n// ============================================================================\n\ninterface CronSchedulerInnerProps {\n showPreview: boolean;\n showCronExpression: boolean;\n allowCopy: boolean;\n timeFormat: '12h' | '24h';\n disabled: boolean;\n className?: string;\n}\n\nfunction CronSchedulerInner({\n showPreview,\n showCronExpression,\n allowCopy,\n timeFormat,\n disabled,\n className,\n}: CronSchedulerInnerProps) {\n const { type } = useCronType();\n\n return (\n <div className={cn('space-y-3', className)}>\n {/* Schedule Type Selector */}\n <ScheduleTypeSelector disabled={disabled} />\n\n {/* Time Selector (shown for daily, weekly, monthly) */}\n {type !== 'custom' && (\n <TimeSelector format={timeFormat} disabled={disabled} />\n )}\n\n {/* Day Chips (weekly only) */}\n {type === 'weekly' && (\n <DayChips disabled={disabled} showPresets />\n )}\n\n {/* Month Day Grid (monthly only) */}\n {type === 'monthly' && (\n <MonthDayGrid disabled={disabled} showPresets />\n )}\n\n {/* Custom Input (custom only) */}\n {type === 'custom' && (\n <CustomInput disabled={disabled} />\n )}\n\n {/* Preview - always show cron expression */}\n {showPreview && (\n <SchedulePreview\n showCronExpression\n allowCopy={allowCopy}\n />\n )}\n </div>\n );\n}\n\n// ============================================================================\n// Main Component (with Provider)\n// ============================================================================\n\n/**\n * CronScheduler - Compact cron expression builder\n *\n * A user-friendly interface for creating cron schedules without\n * needing to know cron syntax. Follows Apple HIG design principles.\n *\n * @example\n * // Basic usage\n * <CronScheduler\n * value={cronExpression}\n * onChange={setCronExpression}\n * />\n *\n * @example\n * // With all options\n * <CronScheduler\n * value=\"0 9 * * 1-5\"\n * onChange={handleChange}\n * defaultType=\"weekly\"\n * showPreview\n * showCronExpression\n * allowCopy\n * timeFormat=\"24h\"\n * />\n */\nexport function CronScheduler({\n value,\n onChange,\n defaultType = 'daily',\n showPreview = true,\n showCronExpression = false,\n allowCopy = false,\n timeFormat = '24h',\n disabled = false,\n className,\n}: CronSchedulerProps) {\n return (\n <CronSchedulerProvider\n value={value}\n onChange={onChange}\n defaultType={defaultType}\n >\n <CronSchedulerInner\n showPreview={showPreview}\n showCronExpression={showCronExpression}\n allowCopy={allowCopy}\n timeFormat={timeFormat}\n disabled={disabled}\n className={className}\n />\n </CronSchedulerProvider>\n );\n}\n\nexport default CronScheduler;\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkF2N7P5XU_cjs = require('./chunk-F2N7P5XU.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunk77HQWEQ6_cjs = require('./chunk-77HQWEQ6.cjs');
|
|
5
5
|
var chunkWGEGR3DF_cjs = require('./chunk-WGEGR3DF.cjs');
|
|
6
6
|
var react = require('react');
|
|
7
7
|
require('@vidstack/react/player/styles/base.css');
|
|
@@ -87,7 +87,7 @@ var VidstackProvider = react.forwardRef(
|
|
|
87
87
|
cachePosterUrl,
|
|
88
88
|
saveVideoPosition,
|
|
89
89
|
getVideoPosition
|
|
90
|
-
} =
|
|
90
|
+
} = chunk77HQWEQ6_cjs.useVideoCache();
|
|
91
91
|
const sourceKey = react.useMemo(() => {
|
|
92
92
|
switch (source.type) {
|
|
93
93
|
case "youtube":
|
|
@@ -322,7 +322,7 @@ var VidstackProvider = react.forwardRef(
|
|
|
322
322
|
);
|
|
323
323
|
VidstackProvider.displayName = "VidstackProvider";
|
|
324
324
|
function useVideoPlayerSettings2() {
|
|
325
|
-
const { settings, saveSettings } =
|
|
325
|
+
const { settings, saveSettings } = chunk77HQWEQ6_cjs.useVideoPlayerSettings();
|
|
326
326
|
const updateVolume = react.useCallback(
|
|
327
327
|
(volume) => {
|
|
328
328
|
saveSettings({ volume: Math.max(0, Math.min(1, volume)) });
|
|
@@ -612,11 +612,11 @@ var StreamProvider = react.forwardRef(
|
|
|
612
612
|
const videoRef = react.useRef(null);
|
|
613
613
|
const contentKeyRef = react.useRef(null);
|
|
614
614
|
const lastSavedTimeRef = react.useRef(0);
|
|
615
|
-
const getOrCreateBlobUrl =
|
|
616
|
-
const releaseBlobUrl =
|
|
617
|
-
const getOrCreateStreamUrl =
|
|
618
|
-
const saveVideoPosition =
|
|
619
|
-
const getVideoPosition =
|
|
615
|
+
const getOrCreateBlobUrl = chunk77HQWEQ6_cjs.useMediaCacheStore.getState().getOrCreateBlobUrl;
|
|
616
|
+
const releaseBlobUrl = chunk77HQWEQ6_cjs.useMediaCacheStore.getState().releaseBlobUrl;
|
|
617
|
+
const getOrCreateStreamUrl = chunk77HQWEQ6_cjs.useMediaCacheStore.getState().getOrCreateStreamUrl;
|
|
618
|
+
const saveVideoPosition = chunk77HQWEQ6_cjs.useMediaCacheStore.getState().saveVideoPosition;
|
|
619
|
+
const getVideoPosition = chunk77HQWEQ6_cjs.useMediaCacheStore.getState().getVideoPosition;
|
|
620
620
|
const { settings: savedSettings, updateVolume } = useVideoPlayerSettings2();
|
|
621
621
|
const retry = react.useCallback(() => {
|
|
622
622
|
setHasError(false);
|
|
@@ -672,14 +672,14 @@ var StreamProvider = react.forwardRef(
|
|
|
672
672
|
return () => {
|
|
673
673
|
isMountedRef.current = false;
|
|
674
674
|
if (contentKeyRef.current) {
|
|
675
|
-
|
|
675
|
+
chunk77HQWEQ6_cjs.useMediaCacheStore.getState().releaseBlobUrl(contentKeyRef.current);
|
|
676
676
|
contentKeyRef.current = null;
|
|
677
677
|
}
|
|
678
678
|
};
|
|
679
679
|
}, []);
|
|
680
680
|
react.useEffect(() => {
|
|
681
681
|
if (contentKeyRef.current) {
|
|
682
|
-
const newKey = source.type === "blob" ?
|
|
682
|
+
const newKey = source.type === "blob" ? chunk77HQWEQ6_cjs.generateContentKey(source.data) : null;
|
|
683
683
|
if (newKey !== contentKeyRef.current) {
|
|
684
684
|
releaseBlobUrl(contentKeyRef.current);
|
|
685
685
|
contentKeyRef.current = null;
|
|
@@ -701,7 +701,7 @@ var StreamProvider = react.forwardRef(
|
|
|
701
701
|
}
|
|
702
702
|
case "blob": {
|
|
703
703
|
const blobSource = source;
|
|
704
|
-
const contentKey =
|
|
704
|
+
const contentKey = chunk77HQWEQ6_cjs.generateContentKey(blobSource.data);
|
|
705
705
|
contentKeyRef.current = contentKey;
|
|
706
706
|
const url = getOrCreateBlobUrl(
|
|
707
707
|
contentKey,
|
|
@@ -1353,5 +1353,5 @@ exports.resolveFileSource = resolveFileSource;
|
|
|
1353
1353
|
exports.resolvePlayerMode = resolvePlayerMode;
|
|
1354
1354
|
exports.resolveStreamSource = resolveStreamSource;
|
|
1355
1355
|
exports.useVideoPlayerContext = useVideoPlayerContext;
|
|
1356
|
-
//# sourceMappingURL=chunk-
|
|
1357
|
-
//# sourceMappingURL=chunk-
|
|
1356
|
+
//# sourceMappingURL=chunk-46VDB3BJ.cjs.map
|
|
1357
|
+
//# sourceMappingURL=chunk-46VDB3BJ.cjs.map
|