@g1cloud/bluesea 5.0.0-beta.27 → 5.0.0-beta.28
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 +21 -0
- package/bin/install-claude-skill.mjs +74 -0
- package/dist/{BSAlertModal-DT2Wai4R.js → BSAlertModal-BpbJuAe1.js} +1 -1
- package/dist/{BSGridColumnSettingModal-CUMe_yWj.js → BSGridColumnSettingModal-8MqhRWkU.js} +1 -1
- package/dist/{BSRichTextMaximizedModal-CaaSAgmI.js → BSRichTextMaximizedModal-C86Skc5v.js} +1 -1
- package/dist/{BSYesNoModal-C91E2MSF.js → BSYesNoModal-CHbktVAj.js} +1 -1
- package/dist/{BSYoutubeInputModal-DSI-NoGb.js → BSYoutubeInputModal-JKnr4hGE.js} +1 -1
- package/dist/{ImageInsertModal-7u7YeHsI.js → ImageInsertModal-DQwkQJ8b.js} +2 -2
- package/dist/{ImageProperties.vue_vue_type_script_setup_true_lang-CSHlFWfd.js → ImageProperties.vue_vue_type_script_setup_true_lang-BsMcsXdh.js} +1 -1
- package/dist/{ImagePropertiesModal-HRPdVJRK.js → ImagePropertiesModal-X7blKqTy.js} +2 -2
- package/dist/{LinkPropertiesModal-x73isyqI.js → LinkPropertiesModal-DGiiTivW.js} +1 -1
- package/dist/{TableInsertModal-BfWLdDCa.js → TableInsertModal-CupFfnOG.js} +1 -1
- package/dist/{TablePropertiesModal-D1wSXQ3C.js → TablePropertiesModal-CfK9i7Q5.js} +1 -1
- package/dist/{VideoInsertModal-DQ-wO6_P.js → VideoInsertModal-BwRRgibx.js} +2 -2
- package/dist/{VideoProperties.vue_vue_type_script_setup_true_lang-D73f1tdh.js → VideoProperties.vue_vue_type_script_setup_true_lang-zEMpmzTZ.js} +1 -1
- package/dist/{VideoPropertiesModal-BYADjPfV.js → VideoPropertiesModal-Dn6AzhPy.js} +2 -2
- package/dist/{YoutubeInsertModal-DNq4v5Ll.js → YoutubeInsertModal-DCn5bhN5.js} +2 -2
- package/dist/{YoutubeProperties.vue_vue_type_script_setup_true_lang-CWIVZP3H.js → YoutubeProperties.vue_vue_type_script_setup_true_lang-B-YVlp4Y.js} +1 -1
- package/dist/{YoutubePropertiesModal-D2-7I2sg.js → YoutubePropertiesModal-Dg-n8cTv.js} +2 -2
- package/dist/bluesea.js +1 -1
- package/dist/bluesea.umd.cjs +9 -2
- package/dist/{index-BIvcVEog.js → index-e3O4IL4V.js} +25 -18
- package/dist/text/i18n.d.ts +2 -1
- package/package.json +6 -1
- package/skills/bluesea-ui/SKILL.md +312 -0
- package/skills/bluesea-ui/references/components.md +189 -0
- package/skills/bluesea-ui/references/grid.md +159 -0
- package/skills/bluesea-ui/references/i18n.md +126 -0
- package/skills/bluesea-ui/references/validation.md +176 -0
- package/text/bluesea_text_en.json +248 -964
- package/text/bluesea_text_fr.json +248 -964
- package/text/bluesea_text_ja.json +248 -964
- package/text/bluesea_text_ko.json +248 -964
- package/text/bluesea_text_zh.json +248 -964
package/README.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# @g1cloud/bluesea
|
|
2
|
+
|
|
3
|
+
Vue 3 UI library for g1cloud BackOffice applications. See the root
|
|
4
|
+
[README](../../README.md) and the demo app at `packages/bluesea-demo/` for a
|
|
5
|
+
guided tour of the components.
|
|
6
|
+
|
|
7
|
+
## Claude Code skill (optional)
|
|
8
|
+
|
|
9
|
+
This package ships a `bluesea-ui` skill that teaches Claude Code how to use
|
|
10
|
+
its components, validation system, and i18n conventions. Install it into
|
|
11
|
+
your project with:
|
|
12
|
+
|
|
13
|
+
npx -p @g1cloud/bluesea bluesea-install-skill
|
|
14
|
+
|
|
15
|
+
This writes `.claude/skills/bluesea-ui/` in the current working directory.
|
|
16
|
+
Re-run after upgrading `@g1cloud/bluesea` to pick up skill updates.
|
|
17
|
+
|
|
18
|
+
Supported flags:
|
|
19
|
+
|
|
20
|
+
- `--path <dir>` — install into `<dir>/.claude/skills/` instead of `cwd`.
|
|
21
|
+
- `--help` — usage.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { cp, readFile, rm, stat, writeFile, mkdir } from 'node:fs/promises'
|
|
3
|
+
import { dirname, resolve } from 'node:path'
|
|
4
|
+
import { fileURLToPath } from 'node:url'
|
|
5
|
+
|
|
6
|
+
const SKILL_NAME = 'bluesea-ui'
|
|
7
|
+
|
|
8
|
+
const here = dirname(fileURLToPath(import.meta.url))
|
|
9
|
+
const packageRoot = resolve(here, '..')
|
|
10
|
+
const skillSource = resolve(packageRoot, 'skills', SKILL_NAME)
|
|
11
|
+
const packageJsonPath = resolve(packageRoot, 'package.json')
|
|
12
|
+
|
|
13
|
+
function parseArgs(argv) {
|
|
14
|
+
const out = { path: null }
|
|
15
|
+
for (let i = 0; i < argv.length; i++) {
|
|
16
|
+
const a = argv[i]
|
|
17
|
+
if (a === '--path' || a === '-p') {
|
|
18
|
+
out.path = argv[++i]
|
|
19
|
+
} else if (a === '--help' || a === '-h') {
|
|
20
|
+
out.help = true
|
|
21
|
+
} else {
|
|
22
|
+
console.error(`Unknown argument: ${a}`)
|
|
23
|
+
process.exit(2)
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return out
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function printHelp() {
|
|
30
|
+
console.log(`Usage: bluesea-install-skill [--path <dir>]
|
|
31
|
+
|
|
32
|
+
Installs the @g1cloud/bluesea Claude Code skill into <dir>/.claude/skills/${SKILL_NAME}/.
|
|
33
|
+
Defaults to the current working directory. Re-running overwrites the existing copy.`)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async function exists(p) {
|
|
37
|
+
try { await stat(p); return true } catch { return false }
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async function main() {
|
|
41
|
+
const args = parseArgs(process.argv.slice(2))
|
|
42
|
+
if (args.help) { printHelp(); return }
|
|
43
|
+
|
|
44
|
+
if (!(await exists(skillSource))) {
|
|
45
|
+
console.error(`Skill source not found at ${skillSource}. This package appears to be incomplete.`)
|
|
46
|
+
process.exit(1)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const targetRoot = resolve(args.path ?? process.cwd())
|
|
50
|
+
if (!(await exists(resolve(targetRoot, 'package.json')))) {
|
|
51
|
+
console.warn(`Note: no package.json at ${targetRoot} — installing anyway.`)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const targetSkillDir = resolve(targetRoot, '.claude', 'skills', SKILL_NAME)
|
|
55
|
+
|
|
56
|
+
if (await exists(targetSkillDir)) {
|
|
57
|
+
await rm(targetSkillDir, { recursive: true, force: true })
|
|
58
|
+
}
|
|
59
|
+
await mkdir(dirname(targetSkillDir), { recursive: true })
|
|
60
|
+
await cp(skillSource, targetSkillDir, { recursive: true })
|
|
61
|
+
|
|
62
|
+
let version = 'unknown'
|
|
63
|
+
try {
|
|
64
|
+
version = JSON.parse(await readFile(packageJsonPath, 'utf8')).version ?? 'unknown'
|
|
65
|
+
} catch { /* fall through with 'unknown' */ }
|
|
66
|
+
await writeFile(resolve(targetSkillDir, '.installed-version'), `${version}\n`, 'utf8')
|
|
67
|
+
|
|
68
|
+
console.log(`Installed @g1cloud/bluesea skill v${version} → ${targetSkillDir.replace(targetRoot + '/', '')}/`)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
main().catch((err) => {
|
|
72
|
+
console.error(err.message ?? err)
|
|
73
|
+
process.exit(1)
|
|
74
|
+
})
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, createBlock, openBlock, withCtx, withDirectives, createElementVNode, unref, createVNode } from "vue";
|
|
2
|
-
import { u as useModalHandle, _ as _sfc_main$1, v as vT, B as BSButton, l as vFocusOnLoad } from "./index-
|
|
2
|
+
import { u as useModalHandle, _ as _sfc_main$1, v as vT, B as BSButton, l as vFocusOnLoad } from "./index-e3O4IL4V.js";
|
|
3
3
|
const _hoisted_1 = { class: "text-right" };
|
|
4
4
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
5
5
|
__name: "BSAlertModal",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, ref, onMounted, createBlock, openBlock, withCtx, createElementVNode, createVNode, mergeProps, unref, toHandlers, nextTick } from "vue";
|
|
2
|
-
import { g as createInputGridHandler, u as useModalHandle, _ as _sfc_main$1, B as BSButton, h as _sfc_main$2, j as _sfc_main$3, k as _sfc_main$4, n as notNull } from "./index-
|
|
2
|
+
import { g as createInputGridHandler, u as useModalHandle, _ as _sfc_main$1, B as BSButton, h as _sfc_main$2, j as _sfc_main$3, k as _sfc_main$4, n as notNull } from "./index-e3O4IL4V.js";
|
|
3
3
|
const _hoisted_1 = { class: "text-center" };
|
|
4
4
|
const _hoisted_2 = { class: "text-center" };
|
|
5
5
|
const _hoisted_3 = { class: "bs-layout-horizontal" };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, mergeModels, useModel, useTemplateRef, createBlock, openBlock } from "vue";
|
|
2
|
-
import { u as useModalHandle, d as _sfc_main$1 } from "./index-
|
|
2
|
+
import { u as useModalHandle, d as _sfc_main$1 } from "./index-e3O4IL4V.js";
|
|
3
3
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
4
4
|
__name: "BSRichTextMaximizedModal",
|
|
5
5
|
props: /* @__PURE__ */ mergeModels({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, createBlock, openBlock, withCtx, withDirectives, createElementVNode, unref, createVNode } from "vue";
|
|
2
|
-
import { u as useModalHandle, _ as _sfc_main$1, v as vT, B as BSButton } from "./index-
|
|
2
|
+
import { u as useModalHandle, _ as _sfc_main$1, v as vT, B as BSButton } from "./index-e3O4IL4V.js";
|
|
3
3
|
const _hoisted_1 = { class: "text-right" };
|
|
4
4
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
5
5
|
__name: "BSYesNoModal",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, useModel, ref, createBlock, openBlock, withCtx, createElementVNode, createVNode, createCommentVNode, unref } from "vue";
|
|
2
|
-
import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, c as _sfc_main$3, e as extractYoutubeVideoId, i as isYoutubeNocookieUrl, f as buildYoutubeUrl } from "./index-
|
|
2
|
+
import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, c as _sfc_main$3, e as extractYoutubeVideoId, i as isYoutubeNocookieUrl, f as buildYoutubeUrl } from "./index-e3O4IL4V.js";
|
|
3
3
|
import YouTube from "vue3-youtube";
|
|
4
4
|
const _hoisted_1 = { class: "bs-layout-vertical gap-16" };
|
|
5
5
|
const _hoisted_2 = { class: "bs-layout-horizontal align-items-center" };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, computed, ref, createBlock, openBlock, withCtx, createElementVNode, createVNode, withDirectives, vShow } from "vue";
|
|
2
|
-
import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, a as _sfc_main$2, b as _sfc_main$3, c as _sfc_main$4 } from "./index-
|
|
3
|
-
import { _ as _sfc_main$5 } from "./ImageProperties.vue_vue_type_script_setup_true_lang-
|
|
2
|
+
import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, a as _sfc_main$2, b as _sfc_main$3, c as _sfc_main$4 } from "./index-e3O4IL4V.js";
|
|
3
|
+
import { _ as _sfc_main$5 } from "./ImageProperties.vue_vue_type_script_setup_true_lang-BsMcsXdh.js";
|
|
4
4
|
const _hoisted_1 = { class: "bs-layout-form title-w-8" };
|
|
5
5
|
const _hoisted_2 = { class: "title" };
|
|
6
6
|
const _hoisted_3 = { class: "bs-layout-horizontal justify-content-end gap-8" };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, createElementBlock, openBlock, Fragment, createElementVNode, createVNode, withDirectives, createTextVNode, unref } from "vue";
|
|
2
|
-
import { b as _sfc_main$1, c as _sfc_main$2, v as vT } from "./index-
|
|
2
|
+
import { b as _sfc_main$1, c as _sfc_main$2, v as vT } from "./index-e3O4IL4V.js";
|
|
3
3
|
const _hoisted_1 = { class: "title" };
|
|
4
4
|
const _hoisted_2 = { class: "title" };
|
|
5
5
|
const _hoisted_3 = { class: "title" };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, computed, ref, onMounted, useTemplateRef, createBlock, openBlock, withCtx, createElementVNode, createVNode, createElementBlock, createCommentVNode } from "vue";
|
|
2
|
-
import { q as findImageNode, u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, c as _sfc_main$3, p as formValidator, r as imageInfoNumberToPixel } from "./index-
|
|
3
|
-
import { _ as _sfc_main$4 } from "./ImageProperties.vue_vue_type_script_setup_true_lang-
|
|
2
|
+
import { q as findImageNode, u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, c as _sfc_main$3, p as formValidator, r as imageInfoNumberToPixel } from "./index-e3O4IL4V.js";
|
|
3
|
+
import { _ as _sfc_main$4 } from "./ImageProperties.vue_vue_type_script_setup_true_lang-BsMcsXdh.js";
|
|
4
4
|
const _hoisted_1 = { class: "title" };
|
|
5
5
|
const _hoisted_2 = { class: "bs-layout-horizontal justify-content-end gap-8" };
|
|
6
6
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, ref, onMounted, createBlock, openBlock, withCtx, createElementVNode, createVNode, createTextVNode, withModifiers } from "vue";
|
|
2
|
-
import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, c as _sfc_main$3 } from "./index-
|
|
2
|
+
import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, c as _sfc_main$3 } from "./index-e3O4IL4V.js";
|
|
3
3
|
const _hoisted_1 = { class: "bs-layout-form title-w-8" };
|
|
4
4
|
const _hoisted_2 = { class: "title" };
|
|
5
5
|
const _hoisted_3 = { class: "title" };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, ref, createBlock, openBlock, withCtx, createElementVNode, createVNode } from "vue";
|
|
2
|
-
import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, j as _sfc_main$3 } from "./index-
|
|
2
|
+
import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, j as _sfc_main$3 } from "./index-e3O4IL4V.js";
|
|
3
3
|
const _hoisted_1 = { class: "bs-layout-form" };
|
|
4
4
|
const _hoisted_2 = { class: "bs-form-label" };
|
|
5
5
|
const _hoisted_3 = { class: "bs-form-label" };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, computed, ref, onMounted, useTemplateRef, createBlock, openBlock, withCtx, createElementVNode, createVNode, createElementBlock, createCommentVNode, withDirectives, createTextVNode, unref, Fragment, renderList, toDisplayString } from "vue";
|
|
2
|
-
import { m as componentUtil, u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, c as _sfc_main$3, v as vT, o as _sfc_main$4, p as formValidator } from "./index-
|
|
2
|
+
import { m as componentUtil, u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, c as _sfc_main$3, v as vT, o as _sfc_main$4, p as formValidator } from "./index-e3O4IL4V.js";
|
|
3
3
|
const findTableNode = (selection, type) => {
|
|
4
4
|
const head = selection.$head;
|
|
5
5
|
let depth = head.depth;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, computed, ref, createBlock, openBlock, withCtx, createElementVNode, createVNode, withDirectives, vShow } from "vue";
|
|
2
|
-
import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, a as _sfc_main$2, b as _sfc_main$3, c as _sfc_main$4 } from "./index-
|
|
3
|
-
import { _ as _sfc_main$5 } from "./VideoProperties.vue_vue_type_script_setup_true_lang-
|
|
2
|
+
import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, a as _sfc_main$2, b as _sfc_main$3, c as _sfc_main$4 } from "./index-e3O4IL4V.js";
|
|
3
|
+
import { _ as _sfc_main$5 } from "./VideoProperties.vue_vue_type_script_setup_true_lang-zEMpmzTZ.js";
|
|
4
4
|
const _hoisted_1 = { class: "bs-layout-form title-w-8" };
|
|
5
5
|
const _hoisted_2 = { class: "title" };
|
|
6
6
|
const _hoisted_3 = { class: "bs-layout-horizontal justify-content-end gap-8" };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, createElementBlock, openBlock, Fragment, createElementVNode, createVNode, withDirectives, createTextVNode, unref } from "vue";
|
|
2
|
-
import { k as _sfc_main$1, b as _sfc_main$2, c as _sfc_main$3, v as vT } from "./index-
|
|
2
|
+
import { k as _sfc_main$1, b as _sfc_main$2, c as _sfc_main$3, v as vT } from "./index-e3O4IL4V.js";
|
|
3
3
|
const _hoisted_1 = { class: "bs-layout-horizontal gap-8" };
|
|
4
4
|
const _hoisted_2 = { class: "title" };
|
|
5
5
|
const _hoisted_3 = { class: "title" };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, computed, ref, onMounted, useTemplateRef, createBlock, openBlock, withCtx, createElementVNode, createVNode, createElementBlock, createCommentVNode } from "vue";
|
|
2
|
-
import { w as findVideoNode, u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, c as _sfc_main$3, p as formValidator, x as videoInfoNumberToPixel } from "./index-
|
|
3
|
-
import { _ as _sfc_main$4 } from "./VideoProperties.vue_vue_type_script_setup_true_lang-
|
|
2
|
+
import { w as findVideoNode, u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, c as _sfc_main$3, p as formValidator, x as videoInfoNumberToPixel } from "./index-e3O4IL4V.js";
|
|
3
|
+
import { _ as _sfc_main$4 } from "./VideoProperties.vue_vue_type_script_setup_true_lang-zEMpmzTZ.js";
|
|
4
4
|
const _hoisted_1 = { class: "title" };
|
|
5
5
|
const _hoisted_2 = { class: "bs-layout-horizontal justify-content-end gap-8" };
|
|
6
6
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, computed, ref, createBlock, openBlock, withCtx, createElementVNode, createVNode } from "vue";
|
|
2
|
-
import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, c as _sfc_main$3, y as youtubeInfoNumberToPixel } from "./index-
|
|
3
|
-
import { _ as _sfc_main$4 } from "./YoutubeProperties.vue_vue_type_script_setup_true_lang-
|
|
2
|
+
import { u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, c as _sfc_main$3, y as youtubeInfoNumberToPixel } from "./index-e3O4IL4V.js";
|
|
3
|
+
import { _ as _sfc_main$4 } from "./YoutubeProperties.vue_vue_type_script_setup_true_lang-B-YVlp4Y.js";
|
|
4
4
|
const _hoisted_1 = { class: "bs-layout-form" };
|
|
5
5
|
const _hoisted_2 = { class: "title" };
|
|
6
6
|
const _hoisted_3 = { class: "bs-layout-horizontal justify-content-end gap-8" };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, createElementBlock, openBlock, Fragment, createElementVNode, createVNode, withDirectives, createTextVNode, unref } from "vue";
|
|
2
|
-
import { b as _sfc_main$1, c as _sfc_main$2, v as vT } from "./index-
|
|
2
|
+
import { b as _sfc_main$1, c as _sfc_main$2, v as vT } from "./index-e3O4IL4V.js";
|
|
3
3
|
const _hoisted_1 = { class: "title" };
|
|
4
4
|
const _hoisted_2 = { class: "title" };
|
|
5
5
|
const _hoisted_3 = { class: "title" };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, computed, ref, onMounted, createBlock, openBlock, withCtx, createElementVNode, createVNode, createElementBlock, createCommentVNode } from "vue";
|
|
2
|
-
import { s as findYoutubeNode, t as normalizeYoutubeInfoData, u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, c as _sfc_main$3, y as youtubeInfoNumberToPixel } from "./index-
|
|
3
|
-
import { _ as _sfc_main$4 } from "./YoutubeProperties.vue_vue_type_script_setup_true_lang-
|
|
2
|
+
import { s as findYoutubeNode, t as normalizeYoutubeInfoData, u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, c as _sfc_main$3, y as youtubeInfoNumberToPixel } from "./index-e3O4IL4V.js";
|
|
3
|
+
import { _ as _sfc_main$4 } from "./YoutubeProperties.vue_vue_type_script_setup_true_lang-B-YVlp4Y.js";
|
|
4
4
|
const _hoisted_1 = {
|
|
5
5
|
key: 0,
|
|
6
6
|
class: "bs-layout-form"
|
package/dist/bluesea.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { aN, aO, bL, bM, z, ap, az, B, J, K, a9, k, R, ar, N, F, aA, ct, H, O, av, P, a7, a8, aw, Q, a3, b, h, a5, a4, ac, as, aq, a0, D, ab, aa, G, am, cb, ax, _, a1, aj, al, ak, ai, ah, ag, V, an, ay, j, I, M, at, C, Y, a2, L, E, S, o, d, U, au, a, ao, Z, a6, c, ae, af, X, W, ad, T, A, bT, bb, bS, aX, aC, cy, aB, b2, b0, aZ, $, bR, b4, b3, cD, bJ, bP, b1, bV, bU, bQ, cx, b5, aW, aK, aL, aJ, aM, bO, bN, a$, bK, bA, c5, cC, bf, bm, c4, cM, ch, bW, c1, c0, aT, f, bD, cj, aU, cs, ba, cw, cz, g, ce, a_, bi, cQ, aP, b7, bj, aQ, aS, aR, b9, b$, bx, by, bz, bu, bw, bv, e, bt, bq, p, cF, aV, b8, cq, cm, cE, bZ, aF, cN, cK, cO, bE, cL, bF, c3, c2, cn, bn, i, b_, bp, bl, cP, b6, ca, c9, aY, bY, n, cf, bX, cJ, cA, c6, cd, bB, bc, bg, bI, c8, bG, bH, ci, cp, co, cg, cl, bo, aE, bk, ck, cI, cu, cv, cB, c7, cc, u, bC, bd, be, bh, aD, aH, aI, l, v, aG, br, bs, cH, cG, cr } from "./index-
|
|
1
|
+
import { aN, aO, bL, bM, z, ap, az, B, J, K, a9, k, R, ar, N, F, aA, ct, H, O, av, P, a7, a8, aw, Q, a3, b, h, a5, a4, ac, as, aq, a0, D, ab, aa, G, am, cb, ax, _, a1, aj, al, ak, ai, ah, ag, V, an, ay, j, I, M, at, C, Y, a2, L, E, S, o, d, U, au, a, ao, Z, a6, c, ae, af, X, W, ad, T, A, bT, bb, bS, aX, aC, cy, aB, b2, b0, aZ, $, bR, b4, b3, cD, bJ, bP, b1, bV, bU, bQ, cx, b5, aW, aK, aL, aJ, aM, bO, bN, a$, bK, bA, c5, cC, bf, bm, c4, cM, ch, bW, c1, c0, aT, f, bD, cj, aU, cs, ba, cw, cz, g, ce, a_, bi, cQ, aP, b7, bj, aQ, aS, aR, b9, b$, bx, by, bz, bu, bw, bv, e, bt, bq, p, cF, aV, b8, cq, cm, cE, bZ, aF, cN, cK, cO, bE, cL, bF, c3, c2, cn, bn, i, b_, bp, bl, cP, b6, ca, c9, aY, bY, n, cf, bX, cJ, cA, c6, cd, bB, bc, bg, bI, c8, bG, bH, ci, cp, co, cg, cl, bo, aE, bk, ck, cI, cu, cv, cB, c7, cc, u, bC, bd, be, bh, aD, aH, aI, l, v, aG, br, bs, cH, cG, cr } from "./index-e3O4IL4V.js";
|
|
2
2
|
export {
|
|
3
3
|
aN as ADDRESS_COUNTRY_CONFIGS,
|
|
4
4
|
aO as ADDRESS_COUNTRY_CONFIG_DEFAULT,
|
package/dist/bluesea.umd.cjs
CHANGED
|
@@ -528,9 +528,16 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
528
528
|
constructor() {
|
|
529
529
|
__publicField(this, "localeTexts", {});
|
|
530
530
|
}
|
|
531
|
-
addTexts(locale,
|
|
531
|
+
addTexts(locale, input) {
|
|
532
532
|
const text = this.ensureAddLocale(locale);
|
|
533
|
-
|
|
533
|
+
if (Array.isArray(input)) {
|
|
534
|
+
input.forEach((t2) => text[t2.key] = t2);
|
|
535
|
+
} else {
|
|
536
|
+
for (const key in input) {
|
|
537
|
+
const v = input[key];
|
|
538
|
+
text[key] = Array.isArray(v) ? { key, text: String(v[0]), html: !!v[1] } : { key, text: v };
|
|
539
|
+
}
|
|
540
|
+
}
|
|
534
541
|
}
|
|
535
542
|
/**
|
|
536
543
|
* 현재 언어코드에서 `key` 에 해당하는 `TextRecord` 를 리턴한다.
|
|
@@ -368,8 +368,8 @@ const defaultAddressInputComponentConfig = {
|
|
|
368
368
|
countryConfigs: ADDRESS_COUNTRY_CONFIGS
|
|
369
369
|
};
|
|
370
370
|
const defaultRichTextComponentConfig = {
|
|
371
|
-
imageInsertModal: defineAsyncComponent(() => import("./ImageInsertModal-
|
|
372
|
-
videoInsertModal: defineAsyncComponent(() => import("./VideoInsertModal-
|
|
371
|
+
imageInsertModal: defineAsyncComponent(() => import("./ImageInsertModal-DQwkQJ8b.js")),
|
|
372
|
+
videoInsertModal: defineAsyncComponent(() => import("./VideoInsertModal-BwRRgibx.js")),
|
|
373
373
|
toolButtons: [
|
|
374
374
|
"Heading",
|
|
375
375
|
"FontSize",
|
|
@@ -528,9 +528,16 @@ class I18NTexts {
|
|
|
528
528
|
constructor() {
|
|
529
529
|
__publicField(this, "localeTexts", {});
|
|
530
530
|
}
|
|
531
|
-
addTexts(locale,
|
|
531
|
+
addTexts(locale, input) {
|
|
532
532
|
const text = this.ensureAddLocale(locale);
|
|
533
|
-
|
|
533
|
+
if (Array.isArray(input)) {
|
|
534
|
+
input.forEach((t2) => text[t2.key] = t2);
|
|
535
|
+
} else {
|
|
536
|
+
for (const key in input) {
|
|
537
|
+
const v = input[key];
|
|
538
|
+
text[key] = Array.isArray(v) ? { key, text: String(v[0]), html: !!v[1] } : { key, text: v };
|
|
539
|
+
}
|
|
540
|
+
}
|
|
534
541
|
}
|
|
535
542
|
/**
|
|
536
543
|
* 현재 언어코드에서 `key` 에 해당하는 `TextRecord` 를 리턴한다.
|
|
@@ -6336,7 +6343,7 @@ class BSModal {
|
|
|
6336
6343
|
}
|
|
6337
6344
|
openAlert(title, message, clickHandler2) {
|
|
6338
6345
|
const option = {
|
|
6339
|
-
component: defineAsyncComponent(() => import("./BSAlertModal-
|
|
6346
|
+
component: defineAsyncComponent(() => import("./BSAlertModal-BpbJuAe1.js")),
|
|
6340
6347
|
bind: {
|
|
6341
6348
|
title,
|
|
6342
6349
|
message
|
|
@@ -6349,7 +6356,7 @@ class BSModal {
|
|
|
6349
6356
|
}
|
|
6350
6357
|
openYesNo(title, message, yesHandler, noHandler) {
|
|
6351
6358
|
const option = {
|
|
6352
|
-
component: defineAsyncComponent(() => import("./BSYesNoModal-
|
|
6359
|
+
component: defineAsyncComponent(() => import("./BSYesNoModal-CHbktVAj.js")),
|
|
6353
6360
|
bind: {
|
|
6354
6361
|
title,
|
|
6355
6362
|
message
|
|
@@ -31483,13 +31490,13 @@ const tableContextMenus = (modal, editor) => {
|
|
|
31483
31490
|
};
|
|
31484
31491
|
const showTableProperties = (modal, editor) => {
|
|
31485
31492
|
modal.openModal({
|
|
31486
|
-
component: defineAsyncComponent(() => import("./TablePropertiesModal-
|
|
31493
|
+
component: defineAsyncComponent(() => import("./TablePropertiesModal-CfK9i7Q5.js")),
|
|
31487
31494
|
bind: { editor }
|
|
31488
31495
|
});
|
|
31489
31496
|
};
|
|
31490
31497
|
const insertTable = (modal, editor) => {
|
|
31491
31498
|
modal.openModal({
|
|
31492
|
-
component: defineAsyncComponent(() => import("./TableInsertModal-
|
|
31499
|
+
component: defineAsyncComponent(() => import("./TableInsertModal-CupFfnOG.js")),
|
|
31493
31500
|
bind: { editor }
|
|
31494
31501
|
});
|
|
31495
31502
|
};
|
|
@@ -31654,7 +31661,7 @@ const insertImage = (modal, editor) => {
|
|
|
31654
31661
|
const component = (_a2 = blueseaConfig.componentConfig.richText) == null ? void 0 : _a2.imageInsertModal;
|
|
31655
31662
|
if (component) {
|
|
31656
31663
|
modal.openModal({
|
|
31657
|
-
component: defineAsyncComponent(() => import("./ImageInsertModal-
|
|
31664
|
+
component: defineAsyncComponent(() => import("./ImageInsertModal-DQwkQJ8b.js")),
|
|
31658
31665
|
bind: { editor },
|
|
31659
31666
|
on: {
|
|
31660
31667
|
insertImage: (image) => {
|
|
@@ -31672,7 +31679,7 @@ const insertImage = (modal, editor) => {
|
|
|
31672
31679
|
};
|
|
31673
31680
|
const showImageProperties = (modal, editor) => {
|
|
31674
31681
|
modal.openModal({
|
|
31675
|
-
component: defineAsyncComponent(() => import("./ImagePropertiesModal-
|
|
31682
|
+
component: defineAsyncComponent(() => import("./ImagePropertiesModal-X7blKqTy.js")),
|
|
31676
31683
|
bind: { editor }
|
|
31677
31684
|
});
|
|
31678
31685
|
};
|
|
@@ -32033,13 +32040,13 @@ const youtubeContextMenu = (modal, editor) => {
|
|
|
32033
32040
|
};
|
|
32034
32041
|
const insertYoutube = (modal, editor) => {
|
|
32035
32042
|
modal.openModal({
|
|
32036
|
-
component: defineAsyncComponent(() => import("./YoutubeInsertModal-
|
|
32043
|
+
component: defineAsyncComponent(() => import("./YoutubeInsertModal-DCn5bhN5.js")),
|
|
32037
32044
|
bind: { editor }
|
|
32038
32045
|
});
|
|
32039
32046
|
};
|
|
32040
32047
|
const showYoutubeProperties = (modal, editor) => {
|
|
32041
32048
|
modal.openModal({
|
|
32042
|
-
component: defineAsyncComponent(() => import("./YoutubePropertiesModal-
|
|
32049
|
+
component: defineAsyncComponent(() => import("./YoutubePropertiesModal-Dg-n8cTv.js")),
|
|
32043
32050
|
bind: { editor }
|
|
32044
32051
|
});
|
|
32045
32052
|
};
|
|
@@ -32083,7 +32090,7 @@ const _sfc_main$15 = /* @__PURE__ */ defineComponent({
|
|
|
32083
32090
|
const showLinkProperties = () => {
|
|
32084
32091
|
if (!props.disabled) {
|
|
32085
32092
|
modal.openModal({
|
|
32086
|
-
component: defineAsyncComponent(() => import("./LinkPropertiesModal-
|
|
32093
|
+
component: defineAsyncComponent(() => import("./LinkPropertiesModal-DGiiTivW.js")),
|
|
32087
32094
|
bind: {
|
|
32088
32095
|
editor: props.editor
|
|
32089
32096
|
}
|
|
@@ -32448,7 +32455,7 @@ const insertVideo = (modal, editor) => {
|
|
|
32448
32455
|
const component = (_a2 = blueseaConfig.componentConfig.richText) == null ? void 0 : _a2.videoInsertModal;
|
|
32449
32456
|
if (component) {
|
|
32450
32457
|
modal.openModal({
|
|
32451
|
-
component: defineAsyncComponent(() => import("./VideoInsertModal-
|
|
32458
|
+
component: defineAsyncComponent(() => import("./VideoInsertModal-BwRRgibx.js")),
|
|
32452
32459
|
bind: { editor },
|
|
32453
32460
|
on: {
|
|
32454
32461
|
insertVideo: (video) => {
|
|
@@ -32466,7 +32473,7 @@ const insertVideo = (modal, editor) => {
|
|
|
32466
32473
|
};
|
|
32467
32474
|
const showVideoProperties = (modal, editor) => {
|
|
32468
32475
|
modal.openModal({
|
|
32469
|
-
component: defineAsyncComponent(() => import("./VideoPropertiesModal-
|
|
32476
|
+
component: defineAsyncComponent(() => import("./VideoPropertiesModal-Dn6AzhPy.js")),
|
|
32470
32477
|
bind: { editor }
|
|
32471
32478
|
});
|
|
32472
32479
|
};
|
|
@@ -34644,7 +34651,7 @@ const _sfc_main$Z = /* @__PURE__ */ defineComponent({
|
|
|
34644
34651
|
emit("maximized");
|
|
34645
34652
|
if (!props.internalMaximized) {
|
|
34646
34653
|
modal.openModal({
|
|
34647
|
-
component: defineAsyncComponent(() => import("./BSRichTextMaximizedModal-
|
|
34654
|
+
component: defineAsyncComponent(() => import("./BSRichTextMaximizedModal-C86Skc5v.js")),
|
|
34648
34655
|
bind: {
|
|
34649
34656
|
modelValue: getEditorValue(),
|
|
34650
34657
|
contentMaxWidth: props.contentMaxWidth,
|
|
@@ -35301,7 +35308,7 @@ const _sfc_main$W = /* @__PURE__ */ defineComponent({
|
|
|
35301
35308
|
const modal = useModal();
|
|
35302
35309
|
const enterYoutubeUrl = () => {
|
|
35303
35310
|
modal.openModal({
|
|
35304
|
-
component: defineAsyncComponent(() => import("./BSYoutubeInputModal-
|
|
35311
|
+
component: defineAsyncComponent(() => import("./BSYoutubeInputModal-JKnr4hGE.js")),
|
|
35305
35312
|
on: {
|
|
35306
35313
|
"update:modelValue": (url) => {
|
|
35307
35314
|
emit("update:modelValue", {
|
|
@@ -39007,7 +39014,7 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
|
|
|
39007
39014
|
const modal = useModal();
|
|
39008
39015
|
const openSettingModal = () => {
|
|
39009
39016
|
modal.openModal({
|
|
39010
|
-
component: defineAsyncComponent(() => import("./BSGridColumnSettingModal-
|
|
39017
|
+
component: defineAsyncComponent(() => import("./BSGridColumnSettingModal-8MqhRWkU.js")),
|
|
39011
39018
|
bind: {
|
|
39012
39019
|
columns: props.columns,
|
|
39013
39020
|
columnSettings: props.columnSettings,
|
package/dist/text/i18n.d.ts
CHANGED
|
@@ -6,9 +6,10 @@ export type TextRecord = {
|
|
|
6
6
|
export type ResolvedTextRecord = TextRecord & {
|
|
7
7
|
resolved: boolean;
|
|
8
8
|
};
|
|
9
|
+
export type CompactTexts = Record<string, string | (string | number)[]>;
|
|
9
10
|
export declare class I18NTexts {
|
|
10
11
|
private localeTexts;
|
|
11
|
-
addTexts(locale: string,
|
|
12
|
+
addTexts(locale: string, input: TextRecord[] | CompactTexts): void;
|
|
12
13
|
/**
|
|
13
14
|
* 현재 언어코드에서 `key` 에 해당하는 `TextRecord` 를 리턴한다.
|
|
14
15
|
* @param key
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@g1cloud/bluesea",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "5.0.0-beta.
|
|
4
|
+
"version": "5.0.0-beta.28",
|
|
5
5
|
"description": "Ui Library for g1cloud BackOffice.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"engines": {
|
|
@@ -14,11 +14,16 @@
|
|
|
14
14
|
"css",
|
|
15
15
|
"scss",
|
|
16
16
|
"text",
|
|
17
|
+
"skills",
|
|
18
|
+
"bin",
|
|
17
19
|
"!dist/tests"
|
|
18
20
|
],
|
|
19
21
|
"module": "dist/bluesea.js",
|
|
20
22
|
"main": "dist/bluesea.js",
|
|
21
23
|
"types": "dist/index.d.ts",
|
|
24
|
+
"bin": {
|
|
25
|
+
"bluesea-install-skill": "./bin/install-claude-skill.mjs"
|
|
26
|
+
},
|
|
22
27
|
"dependencies": {
|
|
23
28
|
"@codemirror/lang-css": "^6.2.1",
|
|
24
29
|
"@codemirror/lang-html": "^6.4.9",
|