ide-assi 0.373.0 → 0.375.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/dist/bundle.cjs.js +7 -376
- package/dist/bundle.esm.js +7 -376
- package/dist/components/ideAssi.js +4 -1
- package/dist/components/ideDiff.js +4 -31
- package/package.json +1 -1
- package/src/components/ideAssi.js +4 -1
- package/src/components/ideDiff.js +4 -31
package/dist/bundle.cjs.js
CHANGED
|
@@ -201852,352 +201852,10 @@ class IdeAssi extends HTMLElement
|
|
|
201852
201852
|
|
|
201853
201853
|
this.shadowRoot.appendChild(document.createElement('ide-diff-popup'));
|
|
201854
201854
|
|
|
201855
|
-
|
|
201856
|
-
const
|
|
201857
|
-
import React, { useRef, useEffect } from "react";
|
|
201858
|
-
import { api, ai } from "ide-assi";
|
|
201859
|
-
import ninegrid from "ninegrid2";
|
|
201860
|
-
|
|
201861
|
-
const DocManager = () => {
|
|
201862
|
-
const tabRef = useRef(null);
|
|
201863
|
-
const gridRef = useRef(null);
|
|
201864
|
-
|
|
201865
|
-
const selectList = async (params) => {
|
|
201866
|
-
if (!gridRef.current) return;
|
|
201867
|
-
gridRef.current.classList.add("loading");
|
|
201868
|
-
api.post(\`/api/tmpl-a/doc-manager/selectList\`, params).then((res) => {
|
|
201869
|
-
gridRef.current.data.source = res.list;
|
|
201870
|
-
});
|
|
201871
|
-
};
|
|
201872
|
-
|
|
201873
|
-
const handleNaturalLanguageSearch = async () => {
|
|
201874
|
-
const searchTextElement = ninegrid.querySelector("#searchText", tabRef.current);
|
|
201875
|
-
const searchText = searchTextElement ? searchTextElement.value : "";
|
|
201876
|
-
|
|
201877
|
-
if (!gridRef.current) return;
|
|
201878
|
-
gridRef.current.classList.add("loading");
|
|
201879
|
-
|
|
201880
|
-
let params = {};
|
|
201881
|
-
if (searchText) {
|
|
201882
|
-
params = {
|
|
201883
|
-
_whereClause: await ai.generateWhereCause(
|
|
201884
|
-
"tmpla/DocManagerMapper.xml",
|
|
201885
|
-
"selectList",
|
|
201886
|
-
searchText,
|
|
201887
|
-
import.meta.env.VITE_GEMINI_API_KEY
|
|
201888
|
-
),
|
|
201889
|
-
};
|
|
201890
|
-
}
|
|
201891
|
-
selectList(params);
|
|
201892
|
-
};
|
|
201893
|
-
|
|
201894
|
-
const handleClassicSearch = () => {
|
|
201895
|
-
if (!gridRef.current) return;
|
|
201896
|
-
gridRef.current.classList.add("loading");
|
|
201897
|
-
|
|
201898
|
-
const form2Element = ninegrid.querySelector(".form2", tabRef.current);
|
|
201899
|
-
const params = form2Element ? form2Element.getData() : {};
|
|
201900
|
-
selectList(params);
|
|
201901
|
-
};
|
|
201902
|
-
|
|
201903
|
-
useEffect(() => {
|
|
201904
|
-
selectList({});
|
|
201905
|
-
|
|
201906
|
-
const searchTextElement = ninegrid.querySelector("#searchText", tabRef.current);
|
|
201907
|
-
const searchButton = ninegrid.querySelector(".search", tabRef.current);
|
|
201908
|
-
|
|
201909
|
-
const handleKeyDown = (e) => {
|
|
201910
|
-
if (e.key === "Enter" && !e.isComposing) {
|
|
201911
|
-
handleNaturalLanguageSearch();
|
|
201912
|
-
}
|
|
201913
|
-
};
|
|
201914
|
-
|
|
201915
|
-
const handleClick = () => {
|
|
201916
|
-
handleClassicSearch();
|
|
201917
|
-
};
|
|
201918
|
-
|
|
201919
|
-
if (searchTextElement) {
|
|
201920
|
-
searchTextElement.addEventListener("keydown", handleKeyDown);
|
|
201921
|
-
}
|
|
201922
|
-
if (searchButton) {
|
|
201923
|
-
searchButton.addEventListener("click", handleClick);
|
|
201924
|
-
}
|
|
201925
|
-
|
|
201926
|
-
return () => {
|
|
201927
|
-
if (searchTextElement) {
|
|
201928
|
-
searchTextElement.removeEventListener("keydown", handleKeyDown);
|
|
201929
|
-
}
|
|
201930
|
-
if (searchButton) {
|
|
201931
|
-
searchButton.removeEventListener("click", handleClick);
|
|
201932
|
-
}
|
|
201933
|
-
};
|
|
201934
|
-
}, []);
|
|
201935
|
-
|
|
201936
|
-
return (
|
|
201937
|
-
<div className="wrapper">
|
|
201938
|
-
<nx-collapse target="nx-tab" className="search-collapse"></nx-collapse>
|
|
201939
|
-
<div className="list-wrapper">
|
|
201940
|
-
<nx-tab theme="theme-3" ref={tabRef}>
|
|
201941
|
-
<nx-tab-page caption="자연어 검색">
|
|
201942
|
-
<nx-form className="form1">
|
|
201943
|
-
<input
|
|
201944
|
-
type="text"
|
|
201945
|
-
id="searchText"
|
|
201946
|
-
name="searchText"
|
|
201947
|
-
placeholder="자연어 검색어를 입력하세요 (ex: 작성자가 홍길동인 데이타를 찾아줘)"
|
|
201948
|
-
/>
|
|
201949
|
-
</nx-form>
|
|
201950
|
-
</nx-tab-page>
|
|
201951
|
-
<nx-tab-page caption="클래식 검색">
|
|
201952
|
-
<nx-form className="form2">
|
|
201953
|
-
<label>문서명: <input type="text" name="docNm" /></label>
|
|
201954
|
-
<label>매출액:
|
|
201955
|
-
<input type="number" name="minAmt" placeholder="최소" /> ~
|
|
201956
|
-
<input type="number" name="maxAmt" placeholder="최대" />
|
|
201957
|
-
</label>
|
|
201958
|
-
</nx-form>
|
|
201959
|
-
<button className="search">검색</button>
|
|
201960
|
-
</nx-tab-page>
|
|
201961
|
-
</nx-tab>
|
|
201962
|
-
|
|
201963
|
-
<div className="grid-wrapper">
|
|
201964
|
-
<nine-grid
|
|
201965
|
-
ref={gridRef}
|
|
201966
|
-
caption="문서관리"
|
|
201967
|
-
select-type="row"
|
|
201968
|
-
show-title-bar="true"
|
|
201969
|
-
show-menu-icon="true"
|
|
201970
|
-
show-status-bar="true"
|
|
201971
|
-
enable-fixed-col="true"
|
|
201972
|
-
row-resizable="false"
|
|
201973
|
-
col-movable="true"
|
|
201974
|
-
>
|
|
201975
|
-
<table>
|
|
201976
|
-
<colgroup>
|
|
201977
|
-
<col width="50" fixed="left" background-color="gray" />
|
|
201978
|
-
<col width="100" />
|
|
201979
|
-
<col width="100" />
|
|
201980
|
-
<col width="200" />
|
|
201981
|
-
<col width="120" />
|
|
201982
|
-
<col width="100" />
|
|
201983
|
-
<col width="150" />
|
|
201984
|
-
<col width="150" />
|
|
201985
|
-
</colgroup>
|
|
201986
|
-
<thead>
|
|
201987
|
-
<tr>
|
|
201988
|
-
<th>No.</th>
|
|
201989
|
-
<th>최종수정자</th>
|
|
201990
|
-
<th>문서ID</th>
|
|
201991
|
-
<th>문서명</th>
|
|
201992
|
-
<th>매출액</th>
|
|
201993
|
-
<th>최초등록자</th>
|
|
201994
|
-
<th>최초등록일</th>
|
|
201995
|
-
<th>최종수정일</th>
|
|
201996
|
-
</tr>
|
|
201997
|
-
</thead>
|
|
201998
|
-
<tbody>
|
|
201999
|
-
<tr>
|
|
202000
|
-
<th><ng-row-indicator /></th>
|
|
202001
|
-
<td data-bind="updateUser" text-align="center"></td>
|
|
202002
|
-
<td data-bind="docId" text-align="center"></td>
|
|
202003
|
-
<td data-bind="docNm" text-align="left"></td>
|
|
202004
|
-
<td
|
|
202005
|
-
data-bind="amt"
|
|
202006
|
-
data-expr="data.amt.toLocaleString()"
|
|
202007
|
-
text-align="right"
|
|
202008
|
-
show-icon="true"
|
|
202009
|
-
icon-type="sphere"
|
|
202010
|
-
icon-color="data.amt >= 2000 ? 'red' : 'gray'"
|
|
202011
|
-
></td>
|
|
202012
|
-
<td data-bind="insertUser" text-align="center"></td>
|
|
202013
|
-
<td data-bind="insertDt" text-align="center"></td>
|
|
202014
|
-
<td data-bind="updateDt" text-align="center"></td>
|
|
202015
|
-
</tr>
|
|
202016
|
-
</tbody>
|
|
202017
|
-
</table>
|
|
202018
|
-
</nine-grid>
|
|
202019
|
-
</div>
|
|
202020
|
-
</div>
|
|
202021
|
-
</div>
|
|
202022
|
-
);
|
|
202023
|
-
};
|
|
202024
|
-
|
|
202025
|
-
export default DocManager;
|
|
202026
|
-
`;
|
|
202027
|
-
|
|
202028
|
-
const src2 = `
|
|
202029
|
-
import React, { useRef, useEffect } from "react";
|
|
202030
|
-
import { api, ai } from "ide-assi";
|
|
202031
|
-
import ninegrid from "ninegrid2";
|
|
202032
|
-
|
|
202033
|
-
const DocManager = () => {
|
|
202034
|
-
const tabRef = useRef(null);
|
|
202035
|
-
const gridRef = useRef(null);
|
|
202036
|
-
|
|
202037
|
-
const selectList = async (params) => {
|
|
202038
|
-
if (!gridRef.current) return;
|
|
202039
|
-
gridRef.current.classList.add("loading");
|
|
202040
|
-
api.post(\`/api/tmpl-a/doc-manager/selectList\`, params).then((res) => {
|
|
202041
|
-
gridRef.current.data.source = res.list;
|
|
202042
|
-
});
|
|
202043
|
-
};
|
|
202044
|
-
|
|
202045
|
-
const handleNaturalLanguageSearch = async () => {
|
|
202046
|
-
const searchTextElement = ninegrid.querySelector("#searchText", tabRef.current);
|
|
202047
|
-
const searchText = searchTextElement ? searchTextElement.value : "";
|
|
202048
|
-
|
|
202049
|
-
if (!gridRef.current) return;
|
|
202050
|
-
gridRef.current.classList.add("loading");
|
|
202051
|
-
|
|
202052
|
-
let params = {};
|
|
202053
|
-
if (searchText) {
|
|
202054
|
-
params = {
|
|
202055
|
-
_whereClause: await ai.generateWhereCause(
|
|
202056
|
-
"tmpla/DocManagerMapper.xml",
|
|
202057
|
-
"selectList",
|
|
202058
|
-
searchText,
|
|
202059
|
-
import.meta.env.VITE_GEMINI_API_KEY
|
|
202060
|
-
),
|
|
202061
|
-
};
|
|
202062
|
-
}
|
|
202063
|
-
selectList(params);
|
|
202064
|
-
};
|
|
202065
|
-
|
|
202066
|
-
const handleClassicSearch = () => {
|
|
202067
|
-
if (!gridRef.current) return;
|
|
202068
|
-
gridRef.current.classList.add("loading");
|
|
202069
|
-
|
|
202070
|
-
const form2Element = ninegrid.querySelector(".form2", tabRef.current);
|
|
202071
|
-
const params = form2Element ? form2Element.getData() : {};
|
|
202072
|
-
selectList(params);
|
|
202073
|
-
};
|
|
201855
|
+
const src3 = 'asdfa asdfadf\nasdfa asdfadf\n';
|
|
201856
|
+
const src4 = '111 asdfadf\nasdfa asdfadf\n';
|
|
202074
201857
|
|
|
202075
|
-
|
|
202076
|
-
selectList({});
|
|
202077
|
-
|
|
202078
|
-
const searchTextElement = ninegrid.querySelector("#searchText", tabRef.current);
|
|
202079
|
-
const searchButton = ninegrid.querySelector(".search", tabRef.current);
|
|
202080
|
-
|
|
202081
|
-
const handleKeyDown = (e) => {
|
|
202082
|
-
if (e.key === "Enter" && !e.isComposing) {
|
|
202083
|
-
handleNaturalLanguageSearch();
|
|
202084
|
-
}
|
|
202085
|
-
};
|
|
202086
|
-
|
|
202087
|
-
const handleClick = () => {
|
|
202088
|
-
handleClassicSearch();
|
|
202089
|
-
};
|
|
202090
|
-
|
|
202091
|
-
if (searchTextElement) {
|
|
202092
|
-
searchTextElement.addEventListener("keydown", handleKeyDown);
|
|
202093
|
-
}
|
|
202094
|
-
if (searchButton) {
|
|
202095
|
-
searchButton.addEventListener("click", handleClick);
|
|
202096
|
-
}
|
|
202097
|
-
|
|
202098
|
-
return () => {
|
|
202099
|
-
if (searchTextElement) {
|
|
202100
|
-
searchTextElement.removeEventListener("keydown", handleKeyDown);
|
|
202101
|
-
}
|
|
202102
|
-
if (searchButton) {
|
|
202103
|
-
searchButton.removeEventListener("click", handleClick);
|
|
202104
|
-
}
|
|
202105
|
-
};
|
|
202106
|
-
}, []);
|
|
202107
|
-
|
|
202108
|
-
return (
|
|
202109
|
-
<div className="wrapper">
|
|
202110
|
-
<nx-collapse target="nx-tab" className="search-collapse"></nx-collapse>
|
|
202111
|
-
<div className="list-wrapper">
|
|
202112
|
-
<nx-tab theme="theme-3" ref={tabRef}>
|
|
202113
|
-
<nx-tab-page caption="자연어 검색">
|
|
202114
|
-
<nx-form className="form1">
|
|
202115
|
-
<input
|
|
202116
|
-
type="text"
|
|
202117
|
-
id="searchText"
|
|
202118
|
-
name="searchText"
|
|
202119
|
-
placeholder="자연어 검색어를 입력하세요 (ex: 작성자가 홍길동인 데이타를 찾아줘)"
|
|
202120
|
-
/>
|
|
202121
|
-
</nx-form>
|
|
202122
|
-
</nx-tab-page>
|
|
202123
|
-
<nx-tab-page caption="클래식 검색">
|
|
202124
|
-
<nx-form className="form2">
|
|
202125
|
-
<label>문서명: <input type="text" name="docNm" /></label>
|
|
202126
|
-
<label>매출액:
|
|
202127
|
-
<input type="number" name="minAmt" placeholder="최소" /> ~
|
|
202128
|
-
<input type="number" name="maxAmt" placeholder="최대" />
|
|
202129
|
-
</label>
|
|
202130
|
-
</nx-form>
|
|
202131
|
-
<button className="search">검색</button>
|
|
202132
|
-
</nx-tab-page>
|
|
202133
|
-
</nx-tab>
|
|
202134
|
-
|
|
202135
|
-
<div className="grid-wrapper">
|
|
202136
|
-
<nine-grid
|
|
202137
|
-
ref={gridRef}
|
|
202138
|
-
caption="매출 문서 관리"
|
|
202139
|
-
select-type="row"
|
|
202140
|
-
show-title-bar="true"
|
|
202141
|
-
show-menu-icon="true"
|
|
202142
|
-
show-status-bar="true"
|
|
202143
|
-
enable-fixed-col="true"
|
|
202144
|
-
row-resizable="false"
|
|
202145
|
-
col-movable="true"
|
|
202146
|
-
>
|
|
202147
|
-
<table>
|
|
202148
|
-
<colgroup>
|
|
202149
|
-
<col width="50" fixed="left" background-color="gray" />
|
|
202150
|
-
<col width="100" />
|
|
202151
|
-
<col width="120" />
|
|
202152
|
-
<col width="100" />
|
|
202153
|
-
<col width="200" />
|
|
202154
|
-
<col width="100" />
|
|
202155
|
-
<col width="150" />
|
|
202156
|
-
<col width="150" />
|
|
202157
|
-
</colgroup>
|
|
202158
|
-
<thead>
|
|
202159
|
-
<tr>
|
|
202160
|
-
<th>No.</th>
|
|
202161
|
-
<th>문서ID</th>
|
|
202162
|
-
<th>매출액</th>
|
|
202163
|
-
<th>최종수정자</th>
|
|
202164
|
-
<th>문서명</th>
|
|
202165
|
-
<th>최초등록자</th>
|
|
202166
|
-
<th>최초등록일</th>
|
|
202167
|
-
<th>최종수정일</th>
|
|
202168
|
-
</tr>
|
|
202169
|
-
</thead>
|
|
202170
|
-
<tbody>
|
|
202171
|
-
<tr>
|
|
202172
|
-
<th><ng-row-indicator /></th>
|
|
202173
|
-
<td data-bind="docId" text-align="center"></td>
|
|
202174
|
-
<td
|
|
202175
|
-
data-bind="amt"
|
|
202176
|
-
data-expr="data.amt.toLocaleString()"
|
|
202177
|
-
text-align="right"
|
|
202178
|
-
show-icon="true"
|
|
202179
|
-
icon-type="sphere"
|
|
202180
|
-
icon-color="data.amt >= 2000 ? 'red' : 'gray'"
|
|
202181
|
-
></td>
|
|
202182
|
-
<td data-bind="updateUser" text-align="center"></td>
|
|
202183
|
-
<td data-bind="docNm" text-align="left"></td>
|
|
202184
|
-
<td data-bind="insertUser" text-align="center"></td>
|
|
202185
|
-
<td data-bind="insertDt" text-align="center"></td>
|
|
202186
|
-
<td data-bind="updateDt" text-align="center"></td>
|
|
202187
|
-
</tr>
|
|
202188
|
-
</tbody>
|
|
202189
|
-
</table>
|
|
202190
|
-
</nine-grid>
|
|
202191
|
-
</div>
|
|
202192
|
-
</div>
|
|
202193
|
-
</div>
|
|
202194
|
-
);
|
|
202195
|
-
};
|
|
202196
|
-
|
|
202197
|
-
export default DocManager;
|
|
202198
|
-
`;
|
|
202199
|
-
|
|
202200
|
-
this.shadowRoot.querySelector("ide-diff-popup").popup(src1, src2);
|
|
201858
|
+
this.shadowRoot.querySelector("ide-diff-popup").popup(src3, src4);
|
|
202201
201859
|
|
|
202202
201860
|
return;
|
|
202203
201861
|
}
|
|
@@ -234831,35 +234489,6 @@ class IdeDiff extends HTMLElement {
|
|
|
234831
234489
|
/* ninegrid CSS 및 필요한 기본 스타일 (변동 없음) */
|
|
234832
234490
|
@import "https://cdn.jsdelivr.net/npm/ninegrid@${ninegrid.version}/dist/css/ideDiff.css";
|
|
234833
234491
|
${ninegrid.getCustomPath(this, "ideDiff.css")}
|
|
234834
|
-
|
|
234835
|
-
/* CodeMirror를 위한 기본적인 Flexbox 레이아웃 (변동 없음) */
|
|
234836
|
-
.wrapper {
|
|
234837
|
-
display: flex;
|
|
234838
|
-
width: 100%;
|
|
234839
|
-
height: 100%;
|
|
234840
|
-
overflow: hidden;
|
|
234841
|
-
}
|
|
234842
|
-
.panel {
|
|
234843
|
-
flex: 1;
|
|
234844
|
-
overflow: hidden;
|
|
234845
|
-
min-width: 0;
|
|
234846
|
-
}
|
|
234847
|
-
.cm-editor {
|
|
234848
|
-
height: 100%;
|
|
234849
|
-
}
|
|
234850
|
-
|
|
234851
|
-
/* Diff 시각화를 위한 CSS 클래스 (변동 없음) */
|
|
234852
|
-
.cm-inserted-line-bg { background-color: #e6ffe6; }
|
|
234853
|
-
.cm-deleted-line-bg { background-color: #ffe6e6; }
|
|
234854
|
-
.cm-inserted-inline {
|
|
234855
|
-
background-color: #90ee90;
|
|
234856
|
-
font-weight: bold;
|
|
234857
|
-
}
|
|
234858
|
-
.cm-deleted-inline {
|
|
234859
|
-
background-color: #ff9999;
|
|
234860
|
-
text-decoration: line-through;
|
|
234861
|
-
font-weight: bold;
|
|
234862
|
-
}
|
|
234863
234492
|
</style>
|
|
234864
234493
|
|
|
234865
234494
|
<div class="wrapper">
|
|
@@ -235012,11 +234641,12 @@ class IdeDiff extends HTMLElement {
|
|
|
235012
234641
|
|
|
235013
234642
|
switch (op) {
|
|
235014
234643
|
case diffMatchPatchExports.diff_match_patch.DIFF_INSERT: // Added text
|
|
234644
|
+
/**
|
|
235015
234645
|
tobeMarkDecos.push({
|
|
235016
234646
|
from: tobeCursor,
|
|
235017
234647
|
to: tobeCursor + len,
|
|
235018
234648
|
deco: Decoration.mark({ class: "cm-inserted-inline" })
|
|
235019
|
-
});
|
|
234649
|
+
}); */
|
|
235020
234650
|
|
|
235021
234651
|
let currentTobeLineOffset = tobeCursor;
|
|
235022
234652
|
const tobeLines = text.split('\n');
|
|
@@ -235039,11 +234669,12 @@ class IdeDiff extends HTMLElement {
|
|
|
235039
234669
|
break;
|
|
235040
234670
|
|
|
235041
234671
|
case diffMatchPatchExports.diff_match_patch.DIFF_DELETE: // Deleted text
|
|
234672
|
+
/**
|
|
235042
234673
|
asisMarkDecos.push({
|
|
235043
234674
|
from: asisCursor,
|
|
235044
234675
|
to: asisCursor + len,
|
|
235045
234676
|
deco: Decoration.mark({ class: "cm-deleted-inline" })
|
|
235046
|
-
});
|
|
234677
|
+
}); */
|
|
235047
234678
|
|
|
235048
234679
|
let currentAsisLineOffset = asisCursor;
|
|
235049
234680
|
const asisLines = text.split('\n');
|
package/dist/bundle.esm.js
CHANGED
|
@@ -201848,352 +201848,10 @@ class IdeAssi extends HTMLElement
|
|
|
201848
201848
|
|
|
201849
201849
|
this.shadowRoot.appendChild(document.createElement('ide-diff-popup'));
|
|
201850
201850
|
|
|
201851
|
-
|
|
201852
|
-
const
|
|
201853
|
-
import React, { useRef, useEffect } from "react";
|
|
201854
|
-
import { api, ai } from "ide-assi";
|
|
201855
|
-
import ninegrid from "ninegrid2";
|
|
201856
|
-
|
|
201857
|
-
const DocManager = () => {
|
|
201858
|
-
const tabRef = useRef(null);
|
|
201859
|
-
const gridRef = useRef(null);
|
|
201860
|
-
|
|
201861
|
-
const selectList = async (params) => {
|
|
201862
|
-
if (!gridRef.current) return;
|
|
201863
|
-
gridRef.current.classList.add("loading");
|
|
201864
|
-
api.post(\`/api/tmpl-a/doc-manager/selectList\`, params).then((res) => {
|
|
201865
|
-
gridRef.current.data.source = res.list;
|
|
201866
|
-
});
|
|
201867
|
-
};
|
|
201868
|
-
|
|
201869
|
-
const handleNaturalLanguageSearch = async () => {
|
|
201870
|
-
const searchTextElement = ninegrid.querySelector("#searchText", tabRef.current);
|
|
201871
|
-
const searchText = searchTextElement ? searchTextElement.value : "";
|
|
201872
|
-
|
|
201873
|
-
if (!gridRef.current) return;
|
|
201874
|
-
gridRef.current.classList.add("loading");
|
|
201875
|
-
|
|
201876
|
-
let params = {};
|
|
201877
|
-
if (searchText) {
|
|
201878
|
-
params = {
|
|
201879
|
-
_whereClause: await ai.generateWhereCause(
|
|
201880
|
-
"tmpla/DocManagerMapper.xml",
|
|
201881
|
-
"selectList",
|
|
201882
|
-
searchText,
|
|
201883
|
-
import.meta.env.VITE_GEMINI_API_KEY
|
|
201884
|
-
),
|
|
201885
|
-
};
|
|
201886
|
-
}
|
|
201887
|
-
selectList(params);
|
|
201888
|
-
};
|
|
201889
|
-
|
|
201890
|
-
const handleClassicSearch = () => {
|
|
201891
|
-
if (!gridRef.current) return;
|
|
201892
|
-
gridRef.current.classList.add("loading");
|
|
201893
|
-
|
|
201894
|
-
const form2Element = ninegrid.querySelector(".form2", tabRef.current);
|
|
201895
|
-
const params = form2Element ? form2Element.getData() : {};
|
|
201896
|
-
selectList(params);
|
|
201897
|
-
};
|
|
201898
|
-
|
|
201899
|
-
useEffect(() => {
|
|
201900
|
-
selectList({});
|
|
201901
|
-
|
|
201902
|
-
const searchTextElement = ninegrid.querySelector("#searchText", tabRef.current);
|
|
201903
|
-
const searchButton = ninegrid.querySelector(".search", tabRef.current);
|
|
201904
|
-
|
|
201905
|
-
const handleKeyDown = (e) => {
|
|
201906
|
-
if (e.key === "Enter" && !e.isComposing) {
|
|
201907
|
-
handleNaturalLanguageSearch();
|
|
201908
|
-
}
|
|
201909
|
-
};
|
|
201910
|
-
|
|
201911
|
-
const handleClick = () => {
|
|
201912
|
-
handleClassicSearch();
|
|
201913
|
-
};
|
|
201914
|
-
|
|
201915
|
-
if (searchTextElement) {
|
|
201916
|
-
searchTextElement.addEventListener("keydown", handleKeyDown);
|
|
201917
|
-
}
|
|
201918
|
-
if (searchButton) {
|
|
201919
|
-
searchButton.addEventListener("click", handleClick);
|
|
201920
|
-
}
|
|
201921
|
-
|
|
201922
|
-
return () => {
|
|
201923
|
-
if (searchTextElement) {
|
|
201924
|
-
searchTextElement.removeEventListener("keydown", handleKeyDown);
|
|
201925
|
-
}
|
|
201926
|
-
if (searchButton) {
|
|
201927
|
-
searchButton.removeEventListener("click", handleClick);
|
|
201928
|
-
}
|
|
201929
|
-
};
|
|
201930
|
-
}, []);
|
|
201931
|
-
|
|
201932
|
-
return (
|
|
201933
|
-
<div className="wrapper">
|
|
201934
|
-
<nx-collapse target="nx-tab" className="search-collapse"></nx-collapse>
|
|
201935
|
-
<div className="list-wrapper">
|
|
201936
|
-
<nx-tab theme="theme-3" ref={tabRef}>
|
|
201937
|
-
<nx-tab-page caption="자연어 검색">
|
|
201938
|
-
<nx-form className="form1">
|
|
201939
|
-
<input
|
|
201940
|
-
type="text"
|
|
201941
|
-
id="searchText"
|
|
201942
|
-
name="searchText"
|
|
201943
|
-
placeholder="자연어 검색어를 입력하세요 (ex: 작성자가 홍길동인 데이타를 찾아줘)"
|
|
201944
|
-
/>
|
|
201945
|
-
</nx-form>
|
|
201946
|
-
</nx-tab-page>
|
|
201947
|
-
<nx-tab-page caption="클래식 검색">
|
|
201948
|
-
<nx-form className="form2">
|
|
201949
|
-
<label>문서명: <input type="text" name="docNm" /></label>
|
|
201950
|
-
<label>매출액:
|
|
201951
|
-
<input type="number" name="minAmt" placeholder="최소" /> ~
|
|
201952
|
-
<input type="number" name="maxAmt" placeholder="최대" />
|
|
201953
|
-
</label>
|
|
201954
|
-
</nx-form>
|
|
201955
|
-
<button className="search">검색</button>
|
|
201956
|
-
</nx-tab-page>
|
|
201957
|
-
</nx-tab>
|
|
201958
|
-
|
|
201959
|
-
<div className="grid-wrapper">
|
|
201960
|
-
<nine-grid
|
|
201961
|
-
ref={gridRef}
|
|
201962
|
-
caption="문서관리"
|
|
201963
|
-
select-type="row"
|
|
201964
|
-
show-title-bar="true"
|
|
201965
|
-
show-menu-icon="true"
|
|
201966
|
-
show-status-bar="true"
|
|
201967
|
-
enable-fixed-col="true"
|
|
201968
|
-
row-resizable="false"
|
|
201969
|
-
col-movable="true"
|
|
201970
|
-
>
|
|
201971
|
-
<table>
|
|
201972
|
-
<colgroup>
|
|
201973
|
-
<col width="50" fixed="left" background-color="gray" />
|
|
201974
|
-
<col width="100" />
|
|
201975
|
-
<col width="100" />
|
|
201976
|
-
<col width="200" />
|
|
201977
|
-
<col width="120" />
|
|
201978
|
-
<col width="100" />
|
|
201979
|
-
<col width="150" />
|
|
201980
|
-
<col width="150" />
|
|
201981
|
-
</colgroup>
|
|
201982
|
-
<thead>
|
|
201983
|
-
<tr>
|
|
201984
|
-
<th>No.</th>
|
|
201985
|
-
<th>최종수정자</th>
|
|
201986
|
-
<th>문서ID</th>
|
|
201987
|
-
<th>문서명</th>
|
|
201988
|
-
<th>매출액</th>
|
|
201989
|
-
<th>최초등록자</th>
|
|
201990
|
-
<th>최초등록일</th>
|
|
201991
|
-
<th>최종수정일</th>
|
|
201992
|
-
</tr>
|
|
201993
|
-
</thead>
|
|
201994
|
-
<tbody>
|
|
201995
|
-
<tr>
|
|
201996
|
-
<th><ng-row-indicator /></th>
|
|
201997
|
-
<td data-bind="updateUser" text-align="center"></td>
|
|
201998
|
-
<td data-bind="docId" text-align="center"></td>
|
|
201999
|
-
<td data-bind="docNm" text-align="left"></td>
|
|
202000
|
-
<td
|
|
202001
|
-
data-bind="amt"
|
|
202002
|
-
data-expr="data.amt.toLocaleString()"
|
|
202003
|
-
text-align="right"
|
|
202004
|
-
show-icon="true"
|
|
202005
|
-
icon-type="sphere"
|
|
202006
|
-
icon-color="data.amt >= 2000 ? 'red' : 'gray'"
|
|
202007
|
-
></td>
|
|
202008
|
-
<td data-bind="insertUser" text-align="center"></td>
|
|
202009
|
-
<td data-bind="insertDt" text-align="center"></td>
|
|
202010
|
-
<td data-bind="updateDt" text-align="center"></td>
|
|
202011
|
-
</tr>
|
|
202012
|
-
</tbody>
|
|
202013
|
-
</table>
|
|
202014
|
-
</nine-grid>
|
|
202015
|
-
</div>
|
|
202016
|
-
</div>
|
|
202017
|
-
</div>
|
|
202018
|
-
);
|
|
202019
|
-
};
|
|
202020
|
-
|
|
202021
|
-
export default DocManager;
|
|
202022
|
-
`;
|
|
202023
|
-
|
|
202024
|
-
const src2 = `
|
|
202025
|
-
import React, { useRef, useEffect } from "react";
|
|
202026
|
-
import { api, ai } from "ide-assi";
|
|
202027
|
-
import ninegrid from "ninegrid2";
|
|
202028
|
-
|
|
202029
|
-
const DocManager = () => {
|
|
202030
|
-
const tabRef = useRef(null);
|
|
202031
|
-
const gridRef = useRef(null);
|
|
202032
|
-
|
|
202033
|
-
const selectList = async (params) => {
|
|
202034
|
-
if (!gridRef.current) return;
|
|
202035
|
-
gridRef.current.classList.add("loading");
|
|
202036
|
-
api.post(\`/api/tmpl-a/doc-manager/selectList\`, params).then((res) => {
|
|
202037
|
-
gridRef.current.data.source = res.list;
|
|
202038
|
-
});
|
|
202039
|
-
};
|
|
202040
|
-
|
|
202041
|
-
const handleNaturalLanguageSearch = async () => {
|
|
202042
|
-
const searchTextElement = ninegrid.querySelector("#searchText", tabRef.current);
|
|
202043
|
-
const searchText = searchTextElement ? searchTextElement.value : "";
|
|
202044
|
-
|
|
202045
|
-
if (!gridRef.current) return;
|
|
202046
|
-
gridRef.current.classList.add("loading");
|
|
202047
|
-
|
|
202048
|
-
let params = {};
|
|
202049
|
-
if (searchText) {
|
|
202050
|
-
params = {
|
|
202051
|
-
_whereClause: await ai.generateWhereCause(
|
|
202052
|
-
"tmpla/DocManagerMapper.xml",
|
|
202053
|
-
"selectList",
|
|
202054
|
-
searchText,
|
|
202055
|
-
import.meta.env.VITE_GEMINI_API_KEY
|
|
202056
|
-
),
|
|
202057
|
-
};
|
|
202058
|
-
}
|
|
202059
|
-
selectList(params);
|
|
202060
|
-
};
|
|
202061
|
-
|
|
202062
|
-
const handleClassicSearch = () => {
|
|
202063
|
-
if (!gridRef.current) return;
|
|
202064
|
-
gridRef.current.classList.add("loading");
|
|
202065
|
-
|
|
202066
|
-
const form2Element = ninegrid.querySelector(".form2", tabRef.current);
|
|
202067
|
-
const params = form2Element ? form2Element.getData() : {};
|
|
202068
|
-
selectList(params);
|
|
202069
|
-
};
|
|
201851
|
+
const src3 = 'asdfa asdfadf\nasdfa asdfadf\n';
|
|
201852
|
+
const src4 = '111 asdfadf\nasdfa asdfadf\n';
|
|
202070
201853
|
|
|
202071
|
-
|
|
202072
|
-
selectList({});
|
|
202073
|
-
|
|
202074
|
-
const searchTextElement = ninegrid.querySelector("#searchText", tabRef.current);
|
|
202075
|
-
const searchButton = ninegrid.querySelector(".search", tabRef.current);
|
|
202076
|
-
|
|
202077
|
-
const handleKeyDown = (e) => {
|
|
202078
|
-
if (e.key === "Enter" && !e.isComposing) {
|
|
202079
|
-
handleNaturalLanguageSearch();
|
|
202080
|
-
}
|
|
202081
|
-
};
|
|
202082
|
-
|
|
202083
|
-
const handleClick = () => {
|
|
202084
|
-
handleClassicSearch();
|
|
202085
|
-
};
|
|
202086
|
-
|
|
202087
|
-
if (searchTextElement) {
|
|
202088
|
-
searchTextElement.addEventListener("keydown", handleKeyDown);
|
|
202089
|
-
}
|
|
202090
|
-
if (searchButton) {
|
|
202091
|
-
searchButton.addEventListener("click", handleClick);
|
|
202092
|
-
}
|
|
202093
|
-
|
|
202094
|
-
return () => {
|
|
202095
|
-
if (searchTextElement) {
|
|
202096
|
-
searchTextElement.removeEventListener("keydown", handleKeyDown);
|
|
202097
|
-
}
|
|
202098
|
-
if (searchButton) {
|
|
202099
|
-
searchButton.removeEventListener("click", handleClick);
|
|
202100
|
-
}
|
|
202101
|
-
};
|
|
202102
|
-
}, []);
|
|
202103
|
-
|
|
202104
|
-
return (
|
|
202105
|
-
<div className="wrapper">
|
|
202106
|
-
<nx-collapse target="nx-tab" className="search-collapse"></nx-collapse>
|
|
202107
|
-
<div className="list-wrapper">
|
|
202108
|
-
<nx-tab theme="theme-3" ref={tabRef}>
|
|
202109
|
-
<nx-tab-page caption="자연어 검색">
|
|
202110
|
-
<nx-form className="form1">
|
|
202111
|
-
<input
|
|
202112
|
-
type="text"
|
|
202113
|
-
id="searchText"
|
|
202114
|
-
name="searchText"
|
|
202115
|
-
placeholder="자연어 검색어를 입력하세요 (ex: 작성자가 홍길동인 데이타를 찾아줘)"
|
|
202116
|
-
/>
|
|
202117
|
-
</nx-form>
|
|
202118
|
-
</nx-tab-page>
|
|
202119
|
-
<nx-tab-page caption="클래식 검색">
|
|
202120
|
-
<nx-form className="form2">
|
|
202121
|
-
<label>문서명: <input type="text" name="docNm" /></label>
|
|
202122
|
-
<label>매출액:
|
|
202123
|
-
<input type="number" name="minAmt" placeholder="최소" /> ~
|
|
202124
|
-
<input type="number" name="maxAmt" placeholder="최대" />
|
|
202125
|
-
</label>
|
|
202126
|
-
</nx-form>
|
|
202127
|
-
<button className="search">검색</button>
|
|
202128
|
-
</nx-tab-page>
|
|
202129
|
-
</nx-tab>
|
|
202130
|
-
|
|
202131
|
-
<div className="grid-wrapper">
|
|
202132
|
-
<nine-grid
|
|
202133
|
-
ref={gridRef}
|
|
202134
|
-
caption="매출 문서 관리"
|
|
202135
|
-
select-type="row"
|
|
202136
|
-
show-title-bar="true"
|
|
202137
|
-
show-menu-icon="true"
|
|
202138
|
-
show-status-bar="true"
|
|
202139
|
-
enable-fixed-col="true"
|
|
202140
|
-
row-resizable="false"
|
|
202141
|
-
col-movable="true"
|
|
202142
|
-
>
|
|
202143
|
-
<table>
|
|
202144
|
-
<colgroup>
|
|
202145
|
-
<col width="50" fixed="left" background-color="gray" />
|
|
202146
|
-
<col width="100" />
|
|
202147
|
-
<col width="120" />
|
|
202148
|
-
<col width="100" />
|
|
202149
|
-
<col width="200" />
|
|
202150
|
-
<col width="100" />
|
|
202151
|
-
<col width="150" />
|
|
202152
|
-
<col width="150" />
|
|
202153
|
-
</colgroup>
|
|
202154
|
-
<thead>
|
|
202155
|
-
<tr>
|
|
202156
|
-
<th>No.</th>
|
|
202157
|
-
<th>문서ID</th>
|
|
202158
|
-
<th>매출액</th>
|
|
202159
|
-
<th>최종수정자</th>
|
|
202160
|
-
<th>문서명</th>
|
|
202161
|
-
<th>최초등록자</th>
|
|
202162
|
-
<th>최초등록일</th>
|
|
202163
|
-
<th>최종수정일</th>
|
|
202164
|
-
</tr>
|
|
202165
|
-
</thead>
|
|
202166
|
-
<tbody>
|
|
202167
|
-
<tr>
|
|
202168
|
-
<th><ng-row-indicator /></th>
|
|
202169
|
-
<td data-bind="docId" text-align="center"></td>
|
|
202170
|
-
<td
|
|
202171
|
-
data-bind="amt"
|
|
202172
|
-
data-expr="data.amt.toLocaleString()"
|
|
202173
|
-
text-align="right"
|
|
202174
|
-
show-icon="true"
|
|
202175
|
-
icon-type="sphere"
|
|
202176
|
-
icon-color="data.amt >= 2000 ? 'red' : 'gray'"
|
|
202177
|
-
></td>
|
|
202178
|
-
<td data-bind="updateUser" text-align="center"></td>
|
|
202179
|
-
<td data-bind="docNm" text-align="left"></td>
|
|
202180
|
-
<td data-bind="insertUser" text-align="center"></td>
|
|
202181
|
-
<td data-bind="insertDt" text-align="center"></td>
|
|
202182
|
-
<td data-bind="updateDt" text-align="center"></td>
|
|
202183
|
-
</tr>
|
|
202184
|
-
</tbody>
|
|
202185
|
-
</table>
|
|
202186
|
-
</nine-grid>
|
|
202187
|
-
</div>
|
|
202188
|
-
</div>
|
|
202189
|
-
</div>
|
|
202190
|
-
);
|
|
202191
|
-
};
|
|
202192
|
-
|
|
202193
|
-
export default DocManager;
|
|
202194
|
-
`;
|
|
202195
|
-
|
|
202196
|
-
this.shadowRoot.querySelector("ide-diff-popup").popup(src1, src2);
|
|
201854
|
+
this.shadowRoot.querySelector("ide-diff-popup").popup(src3, src4);
|
|
202197
201855
|
|
|
202198
201856
|
return;
|
|
202199
201857
|
}
|
|
@@ -234827,35 +234485,6 @@ class IdeDiff extends HTMLElement {
|
|
|
234827
234485
|
/* ninegrid CSS 및 필요한 기본 스타일 (변동 없음) */
|
|
234828
234486
|
@import "https://cdn.jsdelivr.net/npm/ninegrid@${ninegrid.version}/dist/css/ideDiff.css";
|
|
234829
234487
|
${ninegrid.getCustomPath(this, "ideDiff.css")}
|
|
234830
|
-
|
|
234831
|
-
/* CodeMirror를 위한 기본적인 Flexbox 레이아웃 (변동 없음) */
|
|
234832
|
-
.wrapper {
|
|
234833
|
-
display: flex;
|
|
234834
|
-
width: 100%;
|
|
234835
|
-
height: 100%;
|
|
234836
|
-
overflow: hidden;
|
|
234837
|
-
}
|
|
234838
|
-
.panel {
|
|
234839
|
-
flex: 1;
|
|
234840
|
-
overflow: hidden;
|
|
234841
|
-
min-width: 0;
|
|
234842
|
-
}
|
|
234843
|
-
.cm-editor {
|
|
234844
|
-
height: 100%;
|
|
234845
|
-
}
|
|
234846
|
-
|
|
234847
|
-
/* Diff 시각화를 위한 CSS 클래스 (변동 없음) */
|
|
234848
|
-
.cm-inserted-line-bg { background-color: #e6ffe6; }
|
|
234849
|
-
.cm-deleted-line-bg { background-color: #ffe6e6; }
|
|
234850
|
-
.cm-inserted-inline {
|
|
234851
|
-
background-color: #90ee90;
|
|
234852
|
-
font-weight: bold;
|
|
234853
|
-
}
|
|
234854
|
-
.cm-deleted-inline {
|
|
234855
|
-
background-color: #ff9999;
|
|
234856
|
-
text-decoration: line-through;
|
|
234857
|
-
font-weight: bold;
|
|
234858
|
-
}
|
|
234859
234488
|
</style>
|
|
234860
234489
|
|
|
234861
234490
|
<div class="wrapper">
|
|
@@ -235008,11 +234637,12 @@ class IdeDiff extends HTMLElement {
|
|
|
235008
234637
|
|
|
235009
234638
|
switch (op) {
|
|
235010
234639
|
case diffMatchPatchExports.diff_match_patch.DIFF_INSERT: // Added text
|
|
234640
|
+
/**
|
|
235011
234641
|
tobeMarkDecos.push({
|
|
235012
234642
|
from: tobeCursor,
|
|
235013
234643
|
to: tobeCursor + len,
|
|
235014
234644
|
deco: Decoration.mark({ class: "cm-inserted-inline" })
|
|
235015
|
-
});
|
|
234645
|
+
}); */
|
|
235016
234646
|
|
|
235017
234647
|
let currentTobeLineOffset = tobeCursor;
|
|
235018
234648
|
const tobeLines = text.split('\n');
|
|
@@ -235035,11 +234665,12 @@ class IdeDiff extends HTMLElement {
|
|
|
235035
234665
|
break;
|
|
235036
234666
|
|
|
235037
234667
|
case diffMatchPatchExports.diff_match_patch.DIFF_DELETE: // Deleted text
|
|
234668
|
+
/**
|
|
235038
234669
|
asisMarkDecos.push({
|
|
235039
234670
|
from: asisCursor,
|
|
235040
234671
|
to: asisCursor + len,
|
|
235041
234672
|
deco: Decoration.mark({ class: "cm-deleted-inline" })
|
|
235042
|
-
});
|
|
234673
|
+
}); */
|
|
235043
234674
|
|
|
235044
234675
|
let currentAsisLineOffset = asisCursor;
|
|
235045
234676
|
const asisLines = text.split('\n');
|
|
@@ -467,7 +467,10 @@ const DocManager = () => {
|
|
|
467
467
|
export default DocManager;
|
|
468
468
|
`;
|
|
469
469
|
|
|
470
|
-
|
|
470
|
+
const src3 = 'asdfa asdfadf\nasdfa asdfadf\n';
|
|
471
|
+
const src4 = '111 asdfadf\nasdfa asdfadf\n';
|
|
472
|
+
|
|
473
|
+
this.shadowRoot.querySelector("ide-diff-popup").popup(src3, src4);
|
|
471
474
|
|
|
472
475
|
return;
|
|
473
476
|
|
|
@@ -79,35 +79,6 @@ export class IdeDiff extends HTMLElement {
|
|
|
79
79
|
/* ninegrid CSS 및 필요한 기본 스타일 (변동 없음) */
|
|
80
80
|
@import "https://cdn.jsdelivr.net/npm/ninegrid@${ninegrid.version}/dist/css/ideDiff.css";
|
|
81
81
|
${ninegrid.getCustomPath(this, "ideDiff.css")}
|
|
82
|
-
|
|
83
|
-
/* CodeMirror를 위한 기본적인 Flexbox 레이아웃 (변동 없음) */
|
|
84
|
-
.wrapper {
|
|
85
|
-
display: flex;
|
|
86
|
-
width: 100%;
|
|
87
|
-
height: 100%;
|
|
88
|
-
overflow: hidden;
|
|
89
|
-
}
|
|
90
|
-
.panel {
|
|
91
|
-
flex: 1;
|
|
92
|
-
overflow: hidden;
|
|
93
|
-
min-width: 0;
|
|
94
|
-
}
|
|
95
|
-
.cm-editor {
|
|
96
|
-
height: 100%;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/* Diff 시각화를 위한 CSS 클래스 (변동 없음) */
|
|
100
|
-
.cm-inserted-line-bg { background-color: #e6ffe6; }
|
|
101
|
-
.cm-deleted-line-bg { background-color: #ffe6e6; }
|
|
102
|
-
.cm-inserted-inline {
|
|
103
|
-
background-color: #90ee90;
|
|
104
|
-
font-weight: bold;
|
|
105
|
-
}
|
|
106
|
-
.cm-deleted-inline {
|
|
107
|
-
background-color: #ff9999;
|
|
108
|
-
text-decoration: line-through;
|
|
109
|
-
font-weight: bold;
|
|
110
|
-
}
|
|
111
82
|
</style>
|
|
112
83
|
|
|
113
84
|
<div class="wrapper">
|
|
@@ -260,11 +231,12 @@ export class IdeDiff extends HTMLElement {
|
|
|
260
231
|
|
|
261
232
|
switch (op) {
|
|
262
233
|
case diff_match_patch.DIFF_INSERT: // Added text
|
|
234
|
+
/**
|
|
263
235
|
tobeMarkDecos.push({
|
|
264
236
|
from: tobeCursor,
|
|
265
237
|
to: tobeCursor + len,
|
|
266
238
|
deco: Decoration.mark({ class: "cm-inserted-inline" })
|
|
267
|
-
});
|
|
239
|
+
}); */
|
|
268
240
|
|
|
269
241
|
let currentTobeLineOffset = tobeCursor;
|
|
270
242
|
const tobeLines = text.split('\n');
|
|
@@ -287,11 +259,12 @@ export class IdeDiff extends HTMLElement {
|
|
|
287
259
|
break;
|
|
288
260
|
|
|
289
261
|
case diff_match_patch.DIFF_DELETE: // Deleted text
|
|
262
|
+
/**
|
|
290
263
|
asisMarkDecos.push({
|
|
291
264
|
from: asisCursor,
|
|
292
265
|
to: asisCursor + len,
|
|
293
266
|
deco: Decoration.mark({ class: "cm-deleted-inline" })
|
|
294
|
-
});
|
|
267
|
+
}); */
|
|
295
268
|
|
|
296
269
|
let currentAsisLineOffset = asisCursor;
|
|
297
270
|
const asisLines = text.split('\n');
|
package/package.json
CHANGED
|
@@ -467,7 +467,10 @@ const DocManager = () => {
|
|
|
467
467
|
export default DocManager;
|
|
468
468
|
`;
|
|
469
469
|
|
|
470
|
-
|
|
470
|
+
const src3 = 'asdfa asdfadf\nasdfa asdfadf\n';
|
|
471
|
+
const src4 = '111 asdfadf\nasdfa asdfadf\n';
|
|
472
|
+
|
|
473
|
+
this.shadowRoot.querySelector("ide-diff-popup").popup(src3, src4);
|
|
471
474
|
|
|
472
475
|
return;
|
|
473
476
|
|
|
@@ -79,35 +79,6 @@ export class IdeDiff extends HTMLElement {
|
|
|
79
79
|
/* ninegrid CSS 및 필요한 기본 스타일 (변동 없음) */
|
|
80
80
|
@import "https://cdn.jsdelivr.net/npm/ninegrid@${ninegrid.version}/dist/css/ideDiff.css";
|
|
81
81
|
${ninegrid.getCustomPath(this, "ideDiff.css")}
|
|
82
|
-
|
|
83
|
-
/* CodeMirror를 위한 기본적인 Flexbox 레이아웃 (변동 없음) */
|
|
84
|
-
.wrapper {
|
|
85
|
-
display: flex;
|
|
86
|
-
width: 100%;
|
|
87
|
-
height: 100%;
|
|
88
|
-
overflow: hidden;
|
|
89
|
-
}
|
|
90
|
-
.panel {
|
|
91
|
-
flex: 1;
|
|
92
|
-
overflow: hidden;
|
|
93
|
-
min-width: 0;
|
|
94
|
-
}
|
|
95
|
-
.cm-editor {
|
|
96
|
-
height: 100%;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/* Diff 시각화를 위한 CSS 클래스 (변동 없음) */
|
|
100
|
-
.cm-inserted-line-bg { background-color: #e6ffe6; }
|
|
101
|
-
.cm-deleted-line-bg { background-color: #ffe6e6; }
|
|
102
|
-
.cm-inserted-inline {
|
|
103
|
-
background-color: #90ee90;
|
|
104
|
-
font-weight: bold;
|
|
105
|
-
}
|
|
106
|
-
.cm-deleted-inline {
|
|
107
|
-
background-color: #ff9999;
|
|
108
|
-
text-decoration: line-through;
|
|
109
|
-
font-weight: bold;
|
|
110
|
-
}
|
|
111
82
|
</style>
|
|
112
83
|
|
|
113
84
|
<div class="wrapper">
|
|
@@ -260,11 +231,12 @@ export class IdeDiff extends HTMLElement {
|
|
|
260
231
|
|
|
261
232
|
switch (op) {
|
|
262
233
|
case diff_match_patch.DIFF_INSERT: // Added text
|
|
234
|
+
/**
|
|
263
235
|
tobeMarkDecos.push({
|
|
264
236
|
from: tobeCursor,
|
|
265
237
|
to: tobeCursor + len,
|
|
266
238
|
deco: Decoration.mark({ class: "cm-inserted-inline" })
|
|
267
|
-
});
|
|
239
|
+
}); */
|
|
268
240
|
|
|
269
241
|
let currentTobeLineOffset = tobeCursor;
|
|
270
242
|
const tobeLines = text.split('\n');
|
|
@@ -287,11 +259,12 @@ export class IdeDiff extends HTMLElement {
|
|
|
287
259
|
break;
|
|
288
260
|
|
|
289
261
|
case diff_match_patch.DIFF_DELETE: // Deleted text
|
|
262
|
+
/**
|
|
290
263
|
asisMarkDecos.push({
|
|
291
264
|
from: asisCursor,
|
|
292
265
|
to: asisCursor + len,
|
|
293
266
|
deco: Decoration.mark({ class: "cm-deleted-inline" })
|
|
294
|
-
});
|
|
267
|
+
}); */
|
|
295
268
|
|
|
296
269
|
let currentAsisLineOffset = asisCursor;
|
|
297
270
|
const asisLines = text.split('\n');
|