@ablogcms/lib 3.2.28-beta.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.
- package/README.md +29 -0
- package/dist/a-table/index.d.ts +10 -0
- package/dist/a-table/index.mjs +48 -0
- package/dist/a-table/index.mjs.map +1 -0
- package/dist/acms.d.ts +8 -0
- package/dist/acms.mjs +1 -0
- package/dist/acms.mjs.map +1 -0
- package/dist/chunk-AMZYQ4DG.mjs +344 -0
- package/dist/chunk-AMZYQ4DG.mjs.map +1 -0
- package/dist/chunk-W7TT2YZB.mjs +271 -0
- package/dist/chunk-W7TT2YZB.mjs.map +1 -0
- package/dist/chunk-ZPZHEKTI.mjs +20 -0
- package/dist/chunk-ZPZHEKTI.mjs.map +1 -0
- package/dist/command.d.ts +5 -0
- package/dist/command.mjs +63 -0
- package/dist/command.mjs.map +1 -0
- package/dist/create-pdf.d.ts +1 -0
- package/dist/create-pdf.mjs +27 -0
- package/dist/create-pdf.mjs.map +1 -0
- package/dist/events.d.ts +210 -0
- package/dist/flatpicker/date-picker.d.ts +6 -0
- package/dist/flatpicker/date-picker.mjs +28 -0
- package/dist/flatpicker/date-picker.mjs.map +1 -0
- package/dist/flatpicker/time-picker.d.ts +6 -0
- package/dist/flatpicker/time-picker.mjs +28 -0
- package/dist/flatpicker/time-picker.mjs.map +1 -0
- package/dist/geolocation.d.ts +1 -0
- package/dist/geolocation.mjs +30 -0
- package/dist/geolocation.mjs.map +1 -0
- package/dist/google-maps/google-maps.d.ts +6 -0
- package/dist/google-maps/google-maps.mjs +105 -0
- package/dist/google-maps/google-maps.mjs.map +1 -0
- package/dist/google-maps/loader.d.ts +9 -0
- package/dist/google-maps/loader.mjs +7 -0
- package/dist/google-maps/loader.mjs.map +1 -0
- package/dist/google-maps/picker/google-maps-picker.d.ts +72 -0
- package/dist/google-maps/picker/index.d.ts +5 -0
- package/dist/google-maps/picker/index.mjs +483 -0
- package/dist/google-maps/picker/index.mjs.map +1 -0
- package/dist/google-maps/street-view.d.ts +2 -0
- package/dist/google-maps/street-view.mjs +25 -0
- package/dist/google-maps/street-view.mjs.map +1 -0
- package/dist/htmx/geolocation.d.ts +1 -0
- package/dist/htmx/geolocation.mjs +40 -0
- package/dist/htmx/geolocation.mjs.map +1 -0
- package/dist/icons.d.ts +2 -0
- package/dist/icons.mjs +181 -0
- package/dist/icons.mjs.map +1 -0
- package/dist/lazy-load/index.d.ts +2 -0
- package/dist/lazy-load/index.mjs +21 -0
- package/dist/lazy-load/index.mjs.map +1 -0
- package/dist/lite-editor/index.d.ts +87 -0
- package/dist/lite-editor/index.mjs +274 -0
- package/dist/lite-editor/index.mjs.map +1 -0
- package/dist/lite-editor-field/index.d.ts +8 -0
- package/dist/lite-editor-field/index.mjs +18 -0
- package/dist/lite-editor-field/index.mjs.map +1 -0
- package/dist/loader/index.d.ts +2 -0
- package/dist/loader/index.mjs +262 -0
- package/dist/loader/index.mjs.map +1 -0
- package/dist/loader/loader.d.ts +29 -0
- package/dist/loader/sync-loader.d.ts +104 -0
- package/dist/open-street-map/open-street-map.d.ts +2 -0
- package/dist/open-street-map/open-street-map.mjs +60 -0
- package/dist/open-street-map/open-street-map.mjs.map +1 -0
- package/dist/open-street-map/picker/index.d.ts +6 -0
- package/dist/open-street-map/picker/index.mjs +50 -0
- package/dist/open-street-map/picker/index.mjs.map +1 -0
- package/dist/open-street-map/picker/open-street-map-picker.d.ts +55 -0
- package/dist/open-street-map/picker/open-street-map-picker.mjs +7 -0
- package/dist/open-street-map/picker/open-street-map-picker.mjs.map +1 -0
- package/dist/pdf2image.d.ts +21 -0
- package/dist/pdf2image.mjs +115 -0
- package/dist/pdf2image.mjs.map +1 -0
- package/dist/polyfill/index.d.ts +1 -0
- package/dist/polyfill/index.mjs +40 -0
- package/dist/polyfill/index.mjs.map +1 -0
- package/dist/read-files.d.ts +14 -0
- package/dist/read-files.mjs +62 -0
- package/dist/read-files.mjs.map +1 -0
- package/dist/resize-image/resize-image.d.ts +71 -0
- package/dist/resize-image/resize-image.mjs +308 -0
- package/dist/resize-image/resize-image.mjs.map +1 -0
- package/dist/resize-image/util.d.ts +134 -0
- package/dist/resize-image/util.mjs +7 -0
- package/dist/resize-image/util.mjs.map +1 -0
- package/dist/select2/index.d.ts +1 -0
- package/dist/select2/index.mjs +33 -0
- package/dist/select2/index.mjs.map +1 -0
- package/dist/trumbowyg.d.ts +12 -0
- package/dist/wysiwyg.d.ts +2 -0
- package/dist/wysiwyg.mjs +21 -0
- package/dist/wysiwyg.mjs.map +1 -0
- package/dist/zxcvbn/index.d.ts +2 -0
- package/dist/zxcvbn/index.mjs +35 -0
- package/dist/zxcvbn/index.mjs.map +1 -0
- package/package.json +203 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// src/flatpicker/date-picker.ts
|
|
2
|
+
import flatPicker from "flatpickr";
|
|
3
|
+
import "flatpickr/dist/l10n/ja";
|
|
4
|
+
import "flatpickr/dist/flatpickr.min.css";
|
|
5
|
+
function setupDatePicker(element, options = {}) {
|
|
6
|
+
if (element.flatPicker !== void 0) {
|
|
7
|
+
return element.flatPicker;
|
|
8
|
+
}
|
|
9
|
+
const defaultOptions = {
|
|
10
|
+
...ACMS.Config.flatDatePickerConfig,
|
|
11
|
+
locale: /^ja/.test(ACMS.i18n.lng) ? "ja" : void 0,
|
|
12
|
+
defaultDate: element.value
|
|
13
|
+
};
|
|
14
|
+
const picker = flatPicker(element, { ...defaultOptions, ...options });
|
|
15
|
+
element.setAttribute("autocomplete", "off");
|
|
16
|
+
element.addEventListener("change", (event) => {
|
|
17
|
+
if (event.target instanceof HTMLInputElement) {
|
|
18
|
+
picker.jumpToDate(event.target.value);
|
|
19
|
+
picker.setDate(event.target.value);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
element.flatPicker = picker;
|
|
23
|
+
return picker;
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
setupDatePicker as default
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=date-picker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/flatpicker/date-picker.ts"],"sourcesContent":["import flatPicker from 'flatpickr';\nimport 'flatpickr/dist/l10n/ja';\nimport 'flatpickr/dist/flatpickr.min.css';\n\nexport default function setupDatePicker(\n element: HTMLInputElement & { flatPicker?: flatPicker.Instance },\n options: flatPicker.Options.Options = {}\n) {\n if (element.flatPicker !== undefined) {\n return element.flatPicker;\n }\n const defaultOptions: flatPicker.Options.Options = {\n ...ACMS.Config.flatDatePickerConfig,\n locale: /^ja/.test(ACMS.i18n.lng) ? 'ja' : undefined,\n defaultDate: element.value,\n };\n const picker = flatPicker(element, { ...defaultOptions, ...options });\n element.setAttribute('autocomplete', 'off');\n element.addEventListener('change', (event: Event) => {\n if (event.target instanceof HTMLInputElement) {\n picker.jumpToDate(event.target.value);\n picker.setDate(event.target.value);\n }\n });\n element.flatPicker = picker;\n\n return picker;\n}\n"],"mappings":";AAAA,OAAO,gBAAgB;AACvB,OAAO;AACP,OAAO;AAEQ,SAAR,gBACL,SACA,UAAsC,CAAC,GACvC;AACA,MAAI,QAAQ,eAAe,QAAW;AACpC,WAAO,QAAQ;AAAA,EACjB;AACA,QAAM,iBAA6C;AAAA,IACjD,GAAG,KAAK,OAAO;AAAA,IACf,QAAQ,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI,OAAO;AAAA,IAC3C,aAAa,QAAQ;AAAA,EACvB;AACA,QAAM,SAAS,WAAW,SAAS,EAAE,GAAG,gBAAgB,GAAG,QAAQ,CAAC;AACpE,UAAQ,aAAa,gBAAgB,KAAK;AAC1C,UAAQ,iBAAiB,UAAU,CAAC,UAAiB;AACnD,QAAI,MAAM,kBAAkB,kBAAkB;AAC5C,aAAO,WAAW,MAAM,OAAO,KAAK;AACpC,aAAO,QAAQ,MAAM,OAAO,KAAK;AAAA,IACnC;AAAA,EACF,CAAC;AACD,UAAQ,aAAa;AAErB,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import flatPicker from 'flatpickr';
|
|
2
|
+
import 'flatpickr/dist/l10n/ja';
|
|
3
|
+
|
|
4
|
+
export default function setupDatePicker(element: HTMLInputElement & {
|
|
5
|
+
flatPicker?: flatPicker.Instance;
|
|
6
|
+
}, options?: flatPicker.Options.Options): import("flatpickr/dist/types/instance").Instance;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// src/flatpicker/time-picker.ts
|
|
2
|
+
import flatPicker from "flatpickr";
|
|
3
|
+
import "flatpickr/dist/l10n/ja";
|
|
4
|
+
import "flatpickr/dist/flatpickr.min.css";
|
|
5
|
+
function setupDatePicker(element, options = {}) {
|
|
6
|
+
if (element.flatPicker !== void 0) {
|
|
7
|
+
return element.flatPicker;
|
|
8
|
+
}
|
|
9
|
+
const defaultOptions = {
|
|
10
|
+
...ACMS.Config.flatTimePickerConfig,
|
|
11
|
+
locale: /^ja/.test(ACMS.i18n.lng) ? "ja" : void 0,
|
|
12
|
+
defaultDate: element.value
|
|
13
|
+
};
|
|
14
|
+
const picker = flatPicker(element, { ...defaultOptions, ...options });
|
|
15
|
+
element.setAttribute("autocomplete", "off");
|
|
16
|
+
element.addEventListener("change", (event) => {
|
|
17
|
+
if (event.target instanceof HTMLInputElement) {
|
|
18
|
+
picker.jumpToDate(event.target.value);
|
|
19
|
+
picker.setDate(event.target.value);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
element.flatPicker = picker;
|
|
23
|
+
return picker;
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
setupDatePicker as default
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=time-picker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/flatpicker/time-picker.ts"],"sourcesContent":["import flatPicker from 'flatpickr';\nimport 'flatpickr/dist/l10n/ja';\nimport 'flatpickr/dist/flatpickr.min.css';\n\nexport default function setupDatePicker(\n element: HTMLInputElement & { flatPicker?: flatPicker.Instance },\n options: flatPicker.Options.Options = {}\n) {\n if (element.flatPicker !== undefined) {\n return element.flatPicker;\n }\n const defaultOptions: flatPicker.Options.Options = {\n ...ACMS.Config.flatTimePickerConfig,\n locale: /^ja/.test(ACMS.i18n.lng) ? 'ja' : undefined,\n defaultDate: element.value,\n };\n const picker = flatPicker(element, { ...defaultOptions, ...options });\n element.setAttribute('autocomplete', 'off');\n element.addEventListener('change', (event: Event) => {\n if (event.target instanceof HTMLInputElement) {\n picker.jumpToDate(event.target.value);\n picker.setDate(event.target.value);\n }\n });\n element.flatPicker = picker;\n\n return picker;\n}\n"],"mappings":";AAAA,OAAO,gBAAgB;AACvB,OAAO;AACP,OAAO;AAEQ,SAAR,gBACL,SACA,UAAsC,CAAC,GACvC;AACA,MAAI,QAAQ,eAAe,QAAW;AACpC,WAAO,QAAQ;AAAA,EACjB;AACA,QAAM,iBAA6C;AAAA,IACjD,GAAG,KAAK,OAAO;AAAA,IACf,QAAQ,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI,OAAO;AAAA,IAC3C,aAAa,QAAQ;AAAA,EACvB;AACA,QAAM,SAAS,WAAW,SAAS,EAAE,GAAG,gBAAgB,GAAG,QAAQ,CAAC;AACpE,UAAQ,aAAa,gBAAgB,KAAK;AAC1C,UAAQ,iBAAiB,UAAU,CAAC,UAAiB;AACnD,QAAI,MAAM,kBAAkB,kBAAkB;AAC5C,aAAO,WAAW,MAAM,OAAO,KAAK;AACpC,aAAO,QAAQ,MAAM,OAAO,KAAK;AAAA,IACnC;AAAA,EACF,CAAC;AACD,UAAQ,aAAa;AAErB,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function geolocation(successCallable: (latitude: number, longitude: number) => void, errorCallable: (message: string) => void): void;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// src/geolocation.ts
|
|
2
|
+
function geolocation(successCallable, errorCallable) {
|
|
3
|
+
if (!navigator.geolocation) {
|
|
4
|
+
errorCallable(ACMS.i18n("geo_location.not_supported"));
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
window.navigator.geolocation.getCurrentPosition(
|
|
8
|
+
(position) => {
|
|
9
|
+
successCallable(position.coords.latitude, position.coords.longitude);
|
|
10
|
+
},
|
|
11
|
+
(error) => {
|
|
12
|
+
const errorMessage = {
|
|
13
|
+
0: ACMS.i18n("geo_location.unknown_error"),
|
|
14
|
+
1: ACMS.i18n("geo_location.user_denied"),
|
|
15
|
+
2: ACMS.i18n("geo_location.information_error"),
|
|
16
|
+
3: ACMS.i18n("geo_location.timed_out")
|
|
17
|
+
};
|
|
18
|
+
errorCallable(errorMessage[error.code]);
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
enableHighAccuracy: true,
|
|
22
|
+
timeout: 3e4,
|
|
23
|
+
maximumAge: 1e4
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
export {
|
|
28
|
+
geolocation as default
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=geolocation.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/geolocation.ts"],"sourcesContent":["export default function geolocation(\n successCallable: (latitude: number, longitude: number) => void,\n errorCallable: (message: string) => void\n): void {\n if (!navigator.geolocation) {\n errorCallable(ACMS.i18n('geo_location.not_supported'));\n return;\n }\n window.navigator.geolocation.getCurrentPosition(\n (position) => {\n successCallable(position.coords.latitude, position.coords.longitude);\n },\n (error) => {\n const errorMessage: Record<number, string> = {\n 0: ACMS.i18n('geo_location.unknown_error'),\n 1: ACMS.i18n('geo_location.user_denied'),\n 2: ACMS.i18n('geo_location.information_error'),\n 3: ACMS.i18n('geo_location.timed_out'),\n };\n errorCallable(errorMessage[error.code]);\n },\n {\n enableHighAccuracy: true,\n timeout: 30000,\n maximumAge: 10000,\n }\n );\n}\n"],"mappings":";AAAe,SAAR,YACL,iBACA,eACM;AACN,MAAI,CAAC,UAAU,aAAa;AAC1B,kBAAc,KAAK,KAAK,4BAA4B,CAAC;AACrD;AAAA,EACF;AACA,SAAO,UAAU,YAAY;AAAA,IAC3B,CAAC,aAAa;AACZ,sBAAgB,SAAS,OAAO,UAAU,SAAS,OAAO,SAAS;AAAA,IACrE;AAAA,IACA,CAAC,UAAU;AACT,YAAM,eAAuC;AAAA,QAC3C,GAAG,KAAK,KAAK,4BAA4B;AAAA,QACzC,GAAG,KAAK,KAAK,0BAA0B;AAAA,QACvC,GAAG,KAAK,KAAK,gCAAgC;AAAA,QAC7C,GAAG,KAAK,KAAK,wBAAwB;AAAA,MACvC;AACA,oBAAc,aAAa,MAAM,IAAI,CAAC;AAAA,IACxC;AAAA,IACA;AAAA,MACE,oBAAoB;AAAA,MACpB,SAAS;AAAA,MACT,YAAY;AAAA,IACd;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import {
|
|
2
|
+
loader_default
|
|
3
|
+
} from "../chunk-ZPZHEKTI.mjs";
|
|
4
|
+
|
|
5
|
+
// src/google-maps/google-maps.ts
|
|
6
|
+
import qs from "qs";
|
|
7
|
+
import { isString, isStringArray } from "@ablogcms/utils/type-guard";
|
|
8
|
+
var google_maps_default = async (elment) => {
|
|
9
|
+
if (!elment.parentNode) {
|
|
10
|
+
throw new Error("Google Map element must be a child of a parent element");
|
|
11
|
+
}
|
|
12
|
+
const { search } = new URL(elment.src);
|
|
13
|
+
const query = qs.parse(search, { ignoreQueryPrefix: true });
|
|
14
|
+
const msgs = elment.alt.split("[[:split:]]");
|
|
15
|
+
if (!isString(query.key)) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (query.key === "") {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (!isString(query.size)) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (query.size === "") {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (!isString(query.center)) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (!isString(query.zoom)) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const google = await loader_default(query.key);
|
|
34
|
+
const output = document.createElement("div");
|
|
35
|
+
const size = query.size.split("x");
|
|
36
|
+
const width = parseInt(size[0], 10) || null;
|
|
37
|
+
const height = parseInt(size[1], 10) || null;
|
|
38
|
+
const centerLatLng = query.center.split(",");
|
|
39
|
+
const markerCollections = [];
|
|
40
|
+
const googleInfoWindow = new google.maps.InfoWindow();
|
|
41
|
+
const googleMap = new google.maps.Map(output, {
|
|
42
|
+
center: { lat: parseFloat(centerLatLng[0]), lng: parseFloat(centerLatLng[1]) },
|
|
43
|
+
zoom: parseInt(query.zoom, 10),
|
|
44
|
+
mapTypeId: google.maps.MapTypeId.ROADMAP,
|
|
45
|
+
scrollwheel: false,
|
|
46
|
+
styles: ACMS.Config.s2dStyle
|
|
47
|
+
});
|
|
48
|
+
output.className = elment.className;
|
|
49
|
+
output.style.aspectRatio = `${width} / ${height}`;
|
|
50
|
+
output.style.overflow = "hidden";
|
|
51
|
+
elment.parentNode.replaceChild(output, elment);
|
|
52
|
+
const markers = isString(query.markers) ? [query.markers] : isStringArray(query.markers) ? query.markers : [];
|
|
53
|
+
markers.forEach((marker) => {
|
|
54
|
+
const params = marker.split("|");
|
|
55
|
+
const markerCollection = {
|
|
56
|
+
icon: void 0,
|
|
57
|
+
options: []
|
|
58
|
+
};
|
|
59
|
+
if (!params.length) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
for (let i = 0; i < params.length; i += 1) {
|
|
63
|
+
if (params[i].indexOf("icon:") === 0) {
|
|
64
|
+
markerCollection.icon = params[i].slice(5);
|
|
65
|
+
} else {
|
|
66
|
+
const latLng = params[i].split(",");
|
|
67
|
+
if (!latLng[0].length) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
markerCollection.options.push({
|
|
71
|
+
position: new google.maps.LatLng(parseFloat(latLng[0]), parseFloat(latLng[1])),
|
|
72
|
+
map: googleMap
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
markerCollections.push(markerCollection);
|
|
77
|
+
});
|
|
78
|
+
let msgI = 0;
|
|
79
|
+
markerCollections.forEach((markerCollection) => {
|
|
80
|
+
for (let i = 0; i < markerCollection.options.length; i += 1) {
|
|
81
|
+
const markerOption = markerCollection.options[i];
|
|
82
|
+
const marker = new google.maps.Marker({ ...markerOption, icon: markerCollection.icon });
|
|
83
|
+
if (msgs[msgI] !== void 0 && width !== null && width >= 180) {
|
|
84
|
+
((gMarker, msg) => {
|
|
85
|
+
if (msg) {
|
|
86
|
+
google.maps.event.addListener(gMarker, "click", () => {
|
|
87
|
+
googleInfoWindow.setOptions({
|
|
88
|
+
content: msg
|
|
89
|
+
});
|
|
90
|
+
googleInfoWindow.open(googleMap, gMarker);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
})(
|
|
94
|
+
marker,
|
|
95
|
+
msgs[msgI].replace(/\[\[:quot:\]\]/gim, '"').replace(/\[\[:lt:\]\]/gim, "<").replace(/\[\[:gt:\]\]/gim, ">").replace(/\[\[:amp:\]\]/gim, "&")
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
msgI += 1;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
export {
|
|
103
|
+
google_maps_default as default
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=google-maps.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/google-maps/google-maps.ts"],"sourcesContent":["import qs from 'qs';\nimport { isString, isStringArray } from '@ablogcms/utils/type-guard';\nimport loadGoogleMap from './loader';\n\n/**\n * マーカーのコレクション\n * マーカーのアイコン1つに対して、複数のマーカーを配置することができる\n */\ninterface MarkerCollection {\n icon: google.maps.MarkerOptions['icon'];\n options: google.maps.MarkerOptions[];\n}\n\n/**\n * Google Map\n * @param {HTMLImageElement} elment\n */\nexport default async (elment: HTMLImageElement) => {\n if (!elment.parentNode) {\n throw new Error('Google Map element must be a child of a parent element');\n }\n const { search } = new URL(elment.src);\n const query = qs.parse(search, { ignoreQueryPrefix: true });\n const msgs = elment.alt.split('[[:split:]]');\n if (!isString(query.key)) {\n // APIキーは文字列\n return;\n }\n\n if (query.key === '') {\n // APIキーは必須パラメータ\n return;\n }\n\n if (!isString(query.size)) {\n // サイズは必須パラメータ\n return;\n }\n\n if (query.size === '') {\n // サイズは必須パラメータ\n return;\n }\n\n if (!isString(query.center)) {\n // マーカーが存在しない場合、必須パラメータ\n return;\n }\n\n if (!isString(query.zoom)) {\n // ズームレベルは必須パラメータ\n return;\n }\n\n const google = await loadGoogleMap(query.key);\n const output = document.createElement('div');\n const size = query.size.split('x');\n const width = parseInt(size[0], 10) || null;\n const height = parseInt(size[1], 10) || null;\n const centerLatLng = query.center.split(',');\n const markerCollections: MarkerCollection[] = [];\n const googleInfoWindow = new google.maps.InfoWindow();\n const googleMap = new google.maps.Map(output, {\n center: { lat: parseFloat(centerLatLng[0]), lng: parseFloat(centerLatLng[1]) },\n zoom: parseInt(query.zoom, 10),\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n scrollwheel: false,\n styles: ACMS.Config.s2dStyle,\n });\n\n output.className = elment.className;\n output.style.aspectRatio = `${width} / ${height}`;\n output.style.overflow = 'hidden';\n elment.parentNode.replaceChild(output, elment);\n\n const markers = isString(query.markers) ? [query.markers] : isStringArray(query.markers) ? query.markers : [];\n\n markers.forEach((marker) => {\n const params = marker.split('|');\n const markerCollection: MarkerCollection = {\n icon: undefined,\n options: [],\n };\n if (!params.length) {\n return;\n }\n for (let i = 0; i < params.length; i += 1) {\n if (params[i].indexOf('icon:') === 0) {\n // icon\n markerCollection.icon = params[i].slice(5);\n } else {\n // markers's latlng\n const latLng = params[i].split(',');\n if (!latLng[0].length) {\n continue;\n } // latlngの不正なマーカー\n markerCollection.options.push({\n position: new google.maps.LatLng(parseFloat(latLng[0]), parseFloat(latLng[1])),\n map: googleMap,\n });\n }\n }\n markerCollections.push(markerCollection);\n });\n\n // marker collectionを展開してプロット\n let msgI = 0;\n markerCollections.forEach((markerCollection) => {\n for (let i = 0; i < markerCollection.options.length; i += 1) {\n const markerOption = markerCollection.options[i];\n const marker = new google.maps.Marker({ ...markerOption, icon: markerCollection.icon });\n\n // info windowのコンテンツがあれば表示(不正なマーカーがあった場合はズレる)\n if (msgs[msgI] !== undefined && width !== null && width >= 180) {\n ((gMarker, msg) => {\n if (msg) {\n google.maps.event.addListener(gMarker, 'click', () => {\n googleInfoWindow.setOptions({\n content: msg,\n });\n googleInfoWindow.open(googleMap, gMarker);\n });\n }\n })(\n marker,\n msgs[msgI]\n .replace(/\\[\\[:quot:\\]\\]/gim, '\"')\n .replace(/\\[\\[:lt:\\]\\]/gim, '<')\n .replace(/\\[\\[:gt:\\]\\]/gim, '>')\n .replace(/\\[\\[:amp:\\]\\]/gim, '&')\n );\n }\n msgI += 1;\n }\n });\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type google, type LoaderOptions } from 'google-maps';
|
|
2
|
+
/**
|
|
3
|
+
* Google Maps APIを読み込む
|
|
4
|
+
* @param {string} apiKey
|
|
5
|
+
* @param {LoaderOptions} options
|
|
6
|
+
* @return {Promise<google>}
|
|
7
|
+
*/
|
|
8
|
+
declare const loadGoogleMap: (apiKey: string, options?: LoaderOptions) => Promise<google>;
|
|
9
|
+
export default loadGoogleMap;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export interface GoogleMapsValue {
|
|
2
|
+
type: 'ROADMAP' | 'STREETVIEW';
|
|
3
|
+
lat: number;
|
|
4
|
+
lng: number;
|
|
5
|
+
zoom: number;
|
|
6
|
+
streetView: {
|
|
7
|
+
heading: number;
|
|
8
|
+
pitch: number;
|
|
9
|
+
zoomView: number;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export interface GoogleMapsPickerOptions {
|
|
13
|
+
latInput: string | HTMLInputElement;
|
|
14
|
+
lngInput: string | HTMLInputElement;
|
|
15
|
+
zoomInput: string | HTMLInputElement;
|
|
16
|
+
pitchInput?: string | HTMLInputElement;
|
|
17
|
+
zoomViewInput?: string | HTMLInputElement;
|
|
18
|
+
headingInput?: string | HTMLInputElement;
|
|
19
|
+
modeSwitcher?: string | HTMLInputElement;
|
|
20
|
+
searchInput?: string | HTMLInputElement;
|
|
21
|
+
searchButton?: string | HTMLButtonElement;
|
|
22
|
+
mapRoot?: string | HTMLElement;
|
|
23
|
+
onChange?: (value: GoogleMapsValue | null) => void;
|
|
24
|
+
apiKey: string;
|
|
25
|
+
defaultValue?: Partial<GoogleMapsValue>;
|
|
26
|
+
mapOptions?: google.maps.MapOptions;
|
|
27
|
+
}
|
|
28
|
+
export default class GoogleMapsPicker {
|
|
29
|
+
private options;
|
|
30
|
+
private google;
|
|
31
|
+
private googleMap;
|
|
32
|
+
private googleMapMarker;
|
|
33
|
+
private value;
|
|
34
|
+
private container;
|
|
35
|
+
private mapRoot;
|
|
36
|
+
private latInput;
|
|
37
|
+
private lngInput;
|
|
38
|
+
private zoomInput;
|
|
39
|
+
private pitchInput;
|
|
40
|
+
private zoomViewInput;
|
|
41
|
+
private headingInput;
|
|
42
|
+
private modeSwitcher;
|
|
43
|
+
private searchInput;
|
|
44
|
+
private searchButton;
|
|
45
|
+
private eventRegistry;
|
|
46
|
+
constructor(elementOrSelector: string | HTMLElement, options: Partial<GoogleMapsPickerOptions>);
|
|
47
|
+
init(): Promise<GoogleMapsPicker>;
|
|
48
|
+
private getElement;
|
|
49
|
+
private getInputElement;
|
|
50
|
+
private getButtonElement;
|
|
51
|
+
private setupEventListeners;
|
|
52
|
+
private createMap;
|
|
53
|
+
private registerMapEvents;
|
|
54
|
+
private unregisterMapEvents;
|
|
55
|
+
private createMarker;
|
|
56
|
+
private createPanorama;
|
|
57
|
+
private registerStreetViewEvents;
|
|
58
|
+
private unregisterStreetViewEvents;
|
|
59
|
+
private updateStreetViewInputs;
|
|
60
|
+
private toggleStreetView;
|
|
61
|
+
private activateStreetView;
|
|
62
|
+
private deactivateStreetView;
|
|
63
|
+
private resetStreetViewInputs;
|
|
64
|
+
private toggleUIElements;
|
|
65
|
+
private setupSearch;
|
|
66
|
+
private performSearch;
|
|
67
|
+
private setPosition;
|
|
68
|
+
private setValue;
|
|
69
|
+
private emitChange;
|
|
70
|
+
getMap(): google.maps.Map | null;
|
|
71
|
+
destroy(): void;
|
|
72
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { GoogleMapsPickerOptions } from './google-maps-picker.js';
|
|
2
|
+
import GoogleMapsPicker from './google-maps-picker.js';
|
|
3
|
+
export default function setupGoogleMapsPicker(element: HTMLElement & {
|
|
4
|
+
googleMapsPicker?: GoogleMapsPicker;
|
|
5
|
+
}, options?: Partial<GoogleMapsPickerOptions>): GoogleMapsPicker;
|