@qxs-bns/components-wc 0.0.29 → 0.0.31

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.
Files changed (53) hide show
  1. package/es/editor/blocksuite-editor.mjs +166 -357
  2. package/es/editor/blocksuite-editor.mjs.map +1 -1
  3. package/es/editor/toolbar.mjs +2 -0
  4. package/es/editor/toolbar.mjs.map +1 -0
  5. package/es/subject/action.mjs +7 -8
  6. package/es/subject/action.mjs.map +1 -1
  7. package/es/subject/blank-fill.mjs +243 -132
  8. package/es/subject/blank-fill.mjs.map +1 -1
  9. package/es/subject/layout.mjs +4 -4
  10. package/es/subject/layout.mjs.map +1 -1
  11. package/es/subject/page-end.mjs +1 -1
  12. package/es/subject/page-end.mjs.map +1 -1
  13. package/es/subject/scale.mjs +165 -126
  14. package/es/subject/scale.mjs.map +1 -1
  15. package/es/subject/shared-methods.mjs +2 -0
  16. package/es/subject/shared-methods.mjs.map +1 -0
  17. package/es/subject/shared-styles.mjs +75 -0
  18. package/es/subject/shared-styles.mjs.map +1 -0
  19. package/es/subject/single.mjs +243 -187
  20. package/es/subject/single.mjs.map +1 -1
  21. package/es/subject/sortable.mjs +7 -7
  22. package/es/subject/sortable.mjs.map +1 -1
  23. package/es/subject/text-fill.mjs +273 -138
  24. package/es/subject/text-fill.mjs.map +1 -1
  25. package/es/subject/title-prefix.mjs +2 -0
  26. package/es/subject/title-prefix.mjs.map +1 -0
  27. package/lib/editor/blocksuite-editor.cjs +166 -357
  28. package/lib/editor/blocksuite-editor.cjs.map +1 -1
  29. package/lib/editor/toolbar.cjs +2 -0
  30. package/lib/editor/toolbar.cjs.map +1 -0
  31. package/lib/subject/action.cjs +33 -34
  32. package/lib/subject/action.cjs.map +1 -1
  33. package/lib/subject/blank-fill.cjs +247 -136
  34. package/lib/subject/blank-fill.cjs.map +1 -1
  35. package/lib/subject/layout.cjs +2 -2
  36. package/lib/subject/layout.cjs.map +1 -1
  37. package/lib/subject/page-end.cjs +2 -2
  38. package/lib/subject/page-end.cjs.map +1 -1
  39. package/lib/subject/scale.cjs +165 -126
  40. package/lib/subject/scale.cjs.map +1 -1
  41. package/lib/subject/shared-methods.cjs +2 -0
  42. package/lib/subject/shared-methods.cjs.map +1 -0
  43. package/lib/subject/shared-styles.cjs +75 -0
  44. package/lib/subject/shared-styles.cjs.map +1 -0
  45. package/lib/subject/single.cjs +243 -187
  46. package/lib/subject/single.cjs.map +1 -1
  47. package/lib/subject/sortable.cjs +1 -1
  48. package/lib/subject/sortable.cjs.map +1 -1
  49. package/lib/subject/text-fill.cjs +273 -138
  50. package/lib/subject/text-fill.cjs.map +1 -1
  51. package/lib/subject/title-prefix.cjs +2 -0
  52. package/lib/subject/title-prefix.cjs.map +1 -0
  53. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ "use strict";const t=["format","heading","align","code","link","image","list","blockquote","table"],e=[...t],r=e.filter(t=>"table"!==t),i=new Set(t);exports.DEFAULT_EDITOR_TOOLBAR=e,exports.EDITOR_TOOLBAR_ITEMS=t,exports.SUB_TEXT_EDITOR_TOOLBAR=r,exports.parseEditorToolbarItems=function(t){return Array.isArray(t)?t.filter(t=>i.has(t)):"string"!=typeof t?[...e]:t.split(/[\s,|]+/).map(t=>t.trim()).filter(Boolean).filter(t=>i.has(t))};
2
+ //# sourceMappingURL=toolbar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar.cjs","sources":["../../../../packages/components-wc/src/editor/toolbar.ts"],"sourcesContent":["export const EDITOR_TOOLBAR_ITEMS = [\n 'format',\n 'heading',\n 'align',\n 'code',\n 'link',\n 'image',\n 'list',\n 'blockquote',\n 'table',\n] as const\n\nexport type EditorToolbarItem = (typeof EDITOR_TOOLBAR_ITEMS)[number]\n\nexport const DEFAULT_EDITOR_TOOLBAR: EditorToolbarItem[] = [...EDITOR_TOOLBAR_ITEMS]\n\nexport const SUB_TEXT_EDITOR_TOOLBAR: EditorToolbarItem[] = DEFAULT_EDITOR_TOOLBAR.filter(\n item => item !== 'table',\n)\n\nconst EDITOR_TOOLBAR_ITEM_SET = new Set<string>(EDITOR_TOOLBAR_ITEMS)\n\nexport function parseEditorToolbarItems(\n value: string | readonly string[] | null | undefined,\n): EditorToolbarItem[] {\n if (Array.isArray(value)) {\n return value.filter((item): item is EditorToolbarItem => EDITOR_TOOLBAR_ITEM_SET.has(item))\n }\n\n if (typeof value !== 'string') {\n return [...DEFAULT_EDITOR_TOOLBAR]\n }\n\n const tokens = value\n .split(/[\\s,|]+/)\n .map(token => token.trim())\n .filter(Boolean)\n\n return tokens.filter((item): item is EditorToolbarItem => EDITOR_TOOLBAR_ITEM_SET.has(item))\n}\n"],"names":["EDITOR_TOOLBAR_ITEMS","DEFAULT_EDITOR_TOOLBAR","SUB_TEXT_EDITOR_TOOLBAR","filter","item","EDITOR_TOOLBAR_ITEM_SET","Set","value","Array","isArray","has","split","map","token","trim","Boolean"],"mappings":"aAAO,MAAMA,EAAuB,CAClC,SACA,UACA,QACA,OACA,OACA,QACA,OACA,aACA,SAKWC,EAA8C,IAAID,GAElDE,EAA+CD,EAAuBE,UAChE,UAATC,GAGJC,EAA0B,IAAIC,IAAYN,qIAEzC,SACLO,GAEA,OAAIC,MAAMC,QAAQF,GACTA,EAAMJ,OAAQC,GAAoCC,EAAwBK,IAAIN,IAGlE,iBAAVG,EACF,IAAIN,GAGEM,EACZI,MAAM,WACNC,IAAIC,GAASA,EAAMC,QACnBX,OAAOY,SAEIZ,OAAQC,GAAoCC,EAAwBK,IAAIN,GACxF"}
@@ -1,81 +1,81 @@
1
- "use strict";var e=require("lit"),t=require("lit/decorators.js"),o=require("../base/define.cjs"),s=Object.defineProperty,i=Object.getOwnPropertyDescriptor,n=(e,t,o,n)=>{for(var r,a=n>1?void 0:n?i(t,o):t,l=e.length-1;l>=0;l--)(r=e[l])&&(a=(n?r(t,o,a):r(a))||a);return n&&a&&s(t,o,a),a};const r=[{value:2,label:"必须全部都是支持选项,方可下一步"},{value:1,label:"无需判断是否是支持选项"},{value:3,label:"包含全部支持选项,即可下一步"}],a=[{type:"single",label:"单选题"},{type:"multiple",label:"多选题"},{type:"blank_fill",label:"填空题"},{type:"text_fill",label:"问答题"},{type:"scale",label:"量表题"},{type:"sort",label:"排序题"},{type:"page_end",label:"分页符"}];exports.QxsSubjectAction=class extends e.LitElement{constructor(){super(...arguments),this["is-edit"]=!1,this["is-set"]=!1,this["is-key"]=!1,this["answer-check-type"]=1,this["show-other-option"]=!1,this["show-answer-setting"]=!1,this["show-key"]=!1,this["show-rich-text"]=!1,this["hide-add-rich-text"]=!1,this["show-delete-action"]=!0,this["show-save-action"]=!0,this["page-end"]=!1,this["show-move"]=!1,this["show-add"]=!0,this["show-jump"]=!1,this["exam-answer-relation-type"]=0,this._modalOpen=!1,this._currentCheckType=1,this._addMenuOpen=!1,this._handleDocumentClick=e=>{const t=e.composedPath(),o=this.shadowRoot?.querySelector(".add-menu-wrap");o&&!t.includes(o)&&(this._addMenuOpen=!1)}}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this._handleDocumentClick)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("click",this._handleDocumentClick)}updated(e){e.has("answer-check-type")&&(this._currentCheckType=this["answer-check-type"])}_emit(e,t){this.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:t??null}))}get _answerText(){return r.find(e=>e.value===this["answer-check-type"])?.label??""}get _showAnswerSetting(){return this["show-other-option"]||this["show-answer-setting"]}get _showKey(){return this["show-other-option"]||this["show-key"]}_renderEditMode(){return e.html`
1
+ "use strict";var t=require("lit"),e=require("lit/decorators.js"),o=require("../base/define.cjs"),s=require("./shared-styles.cjs"),i=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=(t,e,o,s)=>{for(var r,a=s>1?void 0:s?n(e,o):e,l=t.length-1;l>=0;l--)(r=t[l])&&(a=(s?r(e,o,a):r(a))||a);return s&&a&&i(e,o,a),a};const a=[{value:2,label:"必须全部都是支持选项,方可下一步"},{value:1,label:"无需判断是否是支持选项"},{value:3,label:"包含全部支持选项,即可下一步"}],l=[{type:"single",label:"单选题"},{type:"multiple",label:"多选题"},{type:"blank_fill",label:"填空题"},{type:"text_fill",label:"问答题"},{type:"scale",label:"量表题"},{type:"sort",label:"排序题"},{type:"page_end",label:"分页符"}];exports.QxsSubjectAction=class extends t.LitElement{constructor(){super(...arguments),this["is-edit"]=!1,this["is-set"]=!1,this["is-key"]=!1,this["answer-check-type"]=1,this["show-other-option"]=!1,this["show-answer-setting"]=!1,this["show-key"]=!1,this["show-rich-text"]=!1,this["hide-add-rich-text"]=!1,this["show-delete-action"]=!0,this["show-save-action"]=!0,this["page-end"]=!1,this["show-move"]=!1,this["show-add"]=!0,this["show-jump"]=!1,this["exam-answer-relation-type"]=0,this._modalOpen=!1,this._currentCheckType=1,this._addMenuOpen=!1,this._handleDocumentClick=t=>{const e=t.composedPath(),o=this.shadowRoot?.querySelector(".add-menu-wrap");o&&!e.includes(o)&&(this._addMenuOpen=!1)}}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this._handleDocumentClick)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("click",this._handleDocumentClick)}updated(t){t.has("answer-check-type")&&(this._currentCheckType=this["answer-check-type"])}_emit(t,e){this.dispatchEvent(new CustomEvent(t,{bubbles:!0,composed:!0,detail:e??null}))}get _answerText(){return a.find(t=>t.value===this["answer-check-type"])?.label??""}get _showAnswerSetting(){return this["show-other-option"]||this["show-answer-setting"]}get _showKey(){return this["show-other-option"]||this["show-key"]}_renderEditMode(){return t.html`
2
2
  <div class="left">
3
3
  <span class="inline-actions">
4
- ${this["show-add"]?e.html`
4
+ ${this["show-add"]?t.html`
5
5
  <span class="add-menu-wrap">
6
6
  <span class="link-btn" @click=${()=>{this._addMenuOpen=!this._addMenuOpen}}>在此题后加入新题</span>
7
7
  ${this._renderAddMenu()}
8
8
  </span>
9
9
  `:""}
10
- ${this["hide-add-rich-text"]?"":e.html`
10
+ ${this["hide-add-rich-text"]?"":t.html`
11
11
  <span class="link-btn" @click=${()=>this._emit("on-show-rich-text")}>
12
12
  ${this["show-rich-text"]?"删除题目描述(图文)":"+添加题目描述(图文)"}
13
13
  </span>
14
14
  `}
15
- ${this["show-jump"]?e.html`
15
+ ${this["show-jump"]?t.html`
16
16
  <span class="link-btn" @click=${()=>this._emit("jump")}>${this["is-set"]?"编辑跳题逻辑":"设置跳题逻辑"}</span>
17
17
  `:""}
18
- ${this._showAnswerSetting?e.html`
18
+ ${this._showAnswerSetting?t.html`
19
19
  <span class="link-btn" @click=${()=>{this._modalOpen=!0}}>答题设置</span>
20
20
  `:""}
21
- ${this._showKey?e.html`
21
+ ${this._showKey?t.html`
22
22
  <label class="checkbox-label">
23
- <input type="checkbox" .checked=${this["is-key"]} @change=${e=>this._emit("set-key",{value:e.target.checked})} />
23
+ <input type="checkbox" .checked=${this["is-key"]} @change=${t=>this._emit("set-key",{value:t.target.checked})} />
24
24
  核心题
25
25
  </label>
26
26
  `:""}
27
27
  </span>
28
28
  </div>
29
29
  <div class="right">
30
- ${this["show-delete-action"]?e.html`<button class="text-btn text-btn--danger btn-margin" @click=${()=>this._emit("delete")}>删除</button>`:""}
31
- ${this["show-save-action"]?e.html`<button class="text-btn text-btn--primary" @click=${()=>this._emit("save")}>完成编辑</button>`:""}
30
+ ${this["show-delete-action"]?t.html`<button class="text-btn text-btn--danger btn-margin" @click=${()=>this._emit("delete")}>删除</button>`:""}
31
+ ${this["show-save-action"]?t.html`<button class="text-btn text-btn--primary" @click=${()=>this._emit("save")}>完成编辑</button>`:""}
32
32
  </div>
33
- `}_renderViewMode(){return e.html`
33
+ `}_renderViewMode(){return t.html`
34
34
  <div class="left">
35
35
  <span class="inline-actions">
36
- ${this._showKey?e.html`
36
+ ${this._showKey?t.html`
37
37
  <label class="checkbox-label disabled">
38
38
  <input type="checkbox" disabled .checked=${this["is-key"]} /> 核心题
39
39
  </label>
40
40
  `:""}
41
- ${this._showAnswerSetting?e.html`
41
+ ${this._showAnswerSetting?t.html`
42
42
  <span class="answer-text">${this._answerText}</span>
43
43
  `:""}
44
- ${this["show-add"]?e.html`
44
+ ${this["show-add"]?t.html`
45
45
  <span class="add-menu-wrap">
46
46
  <span class="link-btn" @click=${()=>{this._addMenuOpen=!this._addMenuOpen}}>在此题后加入新题</span>
47
47
  ${this._renderAddMenu()}
48
48
  </span>
49
49
  `:""}
50
- ${this["show-jump"]?e.html`
50
+ ${this["show-jump"]?t.html`
51
51
  <span class="link-btn" @click=${()=>this._emit("jump")}>${this["is-set"]?"编辑跳题逻辑":"设置跳题逻辑"}</span>
52
52
  `:""}
53
53
  </span>
54
54
  </div>
55
55
  <div class="right">
56
- ${!this["is-set"]&&this["show-move"]?e.html`
56
+ ${!this["is-set"]&&this["show-move"]?t.html`
57
57
  <button class="text-btn text-btn--default" @click=${()=>this._emit("move","up")}>上移</button>
58
58
  <button class="text-btn text-btn--default btn-margin" @click=${()=>this._emit("move","down")}>下移</button>
59
59
  `:""}
60
- ${!this["is-set"]&&this["show-delete-action"]?e.html`<button class="text-btn text-btn--danger btn-margin" @click=${()=>this._emit("delete")}>删除</button>`:""}
61
- ${this["page-end"]||this["is-set"]?"":e.html`
60
+ ${!this["is-set"]&&this["show-delete-action"]?t.html`<button class="text-btn text-btn--danger btn-margin" @click=${()=>this._emit("delete")}>删除</button>`:""}
61
+ ${this["page-end"]||this["is-set"]?"":t.html`
62
62
  <button class="text-btn text-btn--default" @click=${()=>this._emit("edit")}>编辑</button>
63
63
  `}
64
64
  </div>
65
- `}_renderModal(){return this._modalOpen?e.html`
65
+ `}_renderModal(){return this._modalOpen?t.html`
66
66
  <div class="modal-backdrop" @click=${()=>{this._modalOpen=!1}}>
67
- <div class="modal" @click=${e=>e.stopPropagation()}>
67
+ <div class="modal" @click=${t=>t.stopPropagation()}>
68
68
  <div class="modal-header">
69
69
  <span class="modal-title">答题设置</span>
70
70
  <button class="modal-close" @click=${()=>{this._modalOpen=!1}}>&#x2715;</button>
71
71
  </div>
72
72
  <div class="modal-body">
73
- ${r.map(t=>e.html`
73
+ ${a.map(e=>t.html`
74
74
  <label class="radio-item">
75
- <input type="radio" name="answer-check-type" .value=${String(t.value)}
76
- .checked=${this._currentCheckType===t.value}
77
- @change=${()=>{this._currentCheckType=t.value}} />
78
- ${t.label}
75
+ <input type="radio" name="answer-check-type" .value=${String(e.value)}
76
+ .checked=${this._currentCheckType===e.value}
77
+ @change=${()=>{this._currentCheckType=e.value}} />
78
+ ${e.label}
79
79
  </label>
80
80
  `)}
81
81
  </div>
@@ -85,23 +85,22 @@
85
85
  </div>
86
86
  </div>
87
87
  </div>
88
- `:""}_renderAddMenu(){return this._addMenuOpen?e.html`
88
+ `:""}_renderAddMenu(){return this._addMenuOpen?t.html`
89
89
  <div class="add-menu">
90
- ${a.map(t=>e.html`
91
- <button class="add-item" @click=${()=>{this._addMenuOpen=!1,this._emit("add",t.type)}}>${t.label}</button>
90
+ ${l.map(e=>t.html`
91
+ <button class="add-item" @click=${()=>{this._addMenuOpen=!1,this._emit("add",e.type)}}>${e.label}</button>
92
92
  `)}
93
93
  </div>
94
- `:""}render(){return e.html`
94
+ `:""}render(){return t.html`
95
95
  <div class="action ${this["is-edit"]?"active":""}">
96
96
  ${this["is-edit"]?this._renderEditMode():this._renderViewMode()}
97
- ${this["is-set"]?e.html`<div class="has-set">*此题设置了跳题逻辑</div>`:""}
97
+ ${this["is-set"]?t.html`<div class="has-set">*此题设置了跳题逻辑</div>`:""}
98
98
  </div>
99
99
  ${this._renderModal()}
100
- `}},exports.QxsSubjectAction.styles=e.css`
101
- :host { display: block; font-family: system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif; font-size: 12px; }
102
- *, ::before, ::after { box-sizing: border-box; }
100
+ `}},exports.QxsSubjectAction.styles=[s.subjectControlResetStyles,t.css`
101
+ :host { display: block; font-family: inherit; font-size: 12px; }
103
102
 
104
- .action { display: flex; justify-content: space-between; align-items: center; padding: 10px 12px; flex-wrap: wrap; gap: 8px; }
103
+ .action { display: flex; justify-content: space-between; align-items: center; padding: 10px 0; flex-wrap: wrap; gap: 8px; }
105
104
  .action.active { background: transparent; }
106
105
  .left { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
107
106
  .right { display: flex; align-items: center; gap: 4px; }
@@ -168,5 +167,5 @@
168
167
  background: #fff; color: #606266; font-size: 12px; cursor: pointer; transition: all .2s;
169
168
  }
170
169
  .add-item:hover { color: #3D61E3; border-color: #3D61E3; background: #ecf5ff; }
171
- `,n([t.property({type:Boolean,attribute:"is-edit"})],exports.QxsSubjectAction.prototype,"is-edit",2),n([t.property({type:Boolean,attribute:"is-set"})],exports.QxsSubjectAction.prototype,"is-set",2),n([t.property({type:Boolean,attribute:"is-key"})],exports.QxsSubjectAction.prototype,"is-key",2),n([t.property({type:Number,attribute:"answer-check-type"})],exports.QxsSubjectAction.prototype,"answer-check-type",2),n([t.property({type:Boolean,attribute:"show-other-option"})],exports.QxsSubjectAction.prototype,"show-other-option",2),n([t.property({type:Boolean,attribute:"show-answer-setting"})],exports.QxsSubjectAction.prototype,"show-answer-setting",2),n([t.property({type:Boolean,attribute:"show-key"})],exports.QxsSubjectAction.prototype,"show-key",2),n([t.property({type:Boolean,attribute:"show-rich-text"})],exports.QxsSubjectAction.prototype,"show-rich-text",2),n([t.property({type:Boolean,attribute:"hide-add-rich-text"})],exports.QxsSubjectAction.prototype,"hide-add-rich-text",2),n([t.property({type:Boolean,attribute:"show-delete-action"})],exports.QxsSubjectAction.prototype,"show-delete-action",2),n([t.property({type:Boolean,attribute:"show-save-action"})],exports.QxsSubjectAction.prototype,"show-save-action",2),n([t.property({type:Boolean,attribute:"page-end"})],exports.QxsSubjectAction.prototype,"page-end",2),n([t.property({type:Boolean,attribute:"show-move"})],exports.QxsSubjectAction.prototype,"show-move",2),n([t.property({type:Boolean,attribute:"show-add"})],exports.QxsSubjectAction.prototype,"show-add",2),n([t.property({type:Boolean,attribute:"show-jump"})],exports.QxsSubjectAction.prototype,"show-jump",2),n([t.property({type:Number,attribute:"exam-answer-relation-type"})],exports.QxsSubjectAction.prototype,"exam-answer-relation-type",2),n([t.state()],exports.QxsSubjectAction.prototype,"_modalOpen",2),n([t.state()],exports.QxsSubjectAction.prototype,"_currentCheckType",2),n([t.state()],exports.QxsSubjectAction.prototype,"_addMenuOpen",2),exports.QxsSubjectAction=n([o.safeCustomElement("qxs-subject-action")],exports.QxsSubjectAction);
170
+ `],r([e.property({type:Boolean,attribute:"is-edit"})],exports.QxsSubjectAction.prototype,"is-edit",2),r([e.property({type:Boolean,attribute:"is-set"})],exports.QxsSubjectAction.prototype,"is-set",2),r([e.property({type:Boolean,attribute:"is-key"})],exports.QxsSubjectAction.prototype,"is-key",2),r([e.property({type:Number,attribute:"answer-check-type"})],exports.QxsSubjectAction.prototype,"answer-check-type",2),r([e.property({type:Boolean,attribute:"show-other-option"})],exports.QxsSubjectAction.prototype,"show-other-option",2),r([e.property({type:Boolean,attribute:"show-answer-setting"})],exports.QxsSubjectAction.prototype,"show-answer-setting",2),r([e.property({type:Boolean,attribute:"show-key"})],exports.QxsSubjectAction.prototype,"show-key",2),r([e.property({type:Boolean,attribute:"show-rich-text"})],exports.QxsSubjectAction.prototype,"show-rich-text",2),r([e.property({type:Boolean,attribute:"hide-add-rich-text"})],exports.QxsSubjectAction.prototype,"hide-add-rich-text",2),r([e.property({type:Boolean,attribute:"show-delete-action"})],exports.QxsSubjectAction.prototype,"show-delete-action",2),r([e.property({type:Boolean,attribute:"show-save-action"})],exports.QxsSubjectAction.prototype,"show-save-action",2),r([e.property({type:Boolean,attribute:"page-end"})],exports.QxsSubjectAction.prototype,"page-end",2),r([e.property({type:Boolean,attribute:"show-move"})],exports.QxsSubjectAction.prototype,"show-move",2),r([e.property({type:Boolean,attribute:"show-add"})],exports.QxsSubjectAction.prototype,"show-add",2),r([e.property({type:Boolean,attribute:"show-jump"})],exports.QxsSubjectAction.prototype,"show-jump",2),r([e.property({type:Number,attribute:"exam-answer-relation-type"})],exports.QxsSubjectAction.prototype,"exam-answer-relation-type",2),r([e.state()],exports.QxsSubjectAction.prototype,"_modalOpen",2),r([e.state()],exports.QxsSubjectAction.prototype,"_currentCheckType",2),r([e.state()],exports.QxsSubjectAction.prototype,"_addMenuOpen",2),exports.QxsSubjectAction=r([o.safeCustomElement("qxs-subject-action")],exports.QxsSubjectAction);
172
171
  //# sourceMappingURL=action.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"action.cjs","sources":["../../../../packages/components-wc/src/subject/action.ts"],"sourcesContent":["import { css, html, LitElement } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { safeCustomElement } from '../base/define'\n\nconst answerTextList = [\n { value: 2, label: '必须全部都是支持选项,方可下一步' },\n { value: 1, label: '无需判断是否是支持选项' },\n { value: 3, label: '包含全部支持选项,即可下一步' },\n]\n\nconst addSubjectOptions = [\n { type: 'single', label: '单选题' },\n { type: 'multiple', label: '多选题' },\n { type: 'blank_fill', label: '填空题' },\n { type: 'text_fill', label: '问答题' },\n { type: 'scale', label: '量表题' },\n { type: 'sort', label: '排序题' },\n { type: 'page_end', label: '分页符' },\n]\n\n@safeCustomElement('qxs-subject-action')\nexport class QxsSubjectAction extends LitElement {\n static styles = css`\n :host { display: block; font-family: system-ui, -apple-system, \"PingFang SC\", \"Microsoft YaHei\", sans-serif; font-size: 12px; }\n *, ::before, ::after { box-sizing: border-box; }\n\n .action { display: flex; justify-content: space-between; align-items: center; padding: 10px 12px; flex-wrap: wrap; gap: 8px; }\n .action.active { background: transparent; }\n .left { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }\n .right { display: flex; align-items: center; gap: 4px; }\n\n .action-icon {\n display: inline-flex; align-items: center; justify-content: center;\n width: 32px; height: 32px; font-size: 18px; color: #303133;\n cursor: pointer; border-radius: 6px; border: 1px solid #dcdfe6;\n background: #fff; transition: all 0.2s;\n }\n .action-icon:hover { color: #3D61E3; border-color: #3D61E3; background: #ecf5ff; }\n .action-icon--danger:hover { color: #f56c6c; border-color: #f56c6c; background: #fef0f0; }\n .action-icon:disabled { color: #c0c4cc; cursor: not-allowed; opacity: 0.6; }\n\n .text-btn {\n display: inline-flex; align-items: center; gap: 4px;\n padding: 6px 12px; font-size: 12px; border-radius: 3px;\n cursor: pointer; border: 1px solid; transition: all 0.2s;\n }\n .text-btn--primary { background: #3D61E3; border-color: #3D61E3; color: #fff; }\n .text-btn--primary:hover { background: #2D4CB8; border-color: #2D4CB8; }\n .text-btn--default { background: #fff; border-color: #dcdfe6; color: #606266; }\n .text-btn--default:hover { color: #3D61E3; border-color: #a0cfff; }\n .text-btn--danger { background: #f56c6c; border-color: #f56c6c; color: #fff; }\n .text-btn--danger:hover { background: #e05252; border-color: #e05252; }\n\n .link-btn { background: none; border: none; color: #3D61E3; cursor: pointer; font-size: 12px; }\n .link-btn:hover { color: #2D4CB8; }\n\n .checkbox-label { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; color: #606266; user-select: none; font-size: 12px; }\n .checkbox-label.disabled { cursor: not-allowed; opacity: 0.6; }\n .has-set { display: flex; align-items: center; font-size: 12px; color: #bbb; }\n .answer-text { font-size: 11px; color: #909399; max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\n .btn-margin { margin-right: 10px; }\n\n .modal-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.5); z-index: 2000; display: flex; align-items: center; justify-content: center; }\n .modal { background: #fff; border-radius: 4px; min-width: 360px; max-width: 460px; box-shadow: 0 12px 32px rgba(0,0,0,.1); }\n .modal-header { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px 12px; border-bottom: 1px solid #e4e7ed; }\n .modal-title { font-size: 14px; font-weight: 600; color: #303133; }\n .modal-close { background: none; border: none; font-size: 16px; cursor: pointer; color: #909399; padding: 0; line-height: 1; }\n .modal-close:hover { color: #3D61E3; }\n .modal-body { padding: 20px; }\n .modal-footer { display: flex; justify-content: flex-end; gap: 8px; padding: 12px 20px; border-top: 1px solid #e4e7ed; }\n .modal-footer button { padding: 6px 16px; font-size: 12px; border-radius: 3px; cursor: pointer; border: 1px solid #dcdfe6; background: #fff; color: #606266; }\n .modal-footer button:hover { color: #3D61E3; border-color: #a0cfff; }\n .modal-footer button.primary { background: #3D61E3; border-color: #3D61E3; color: #fff; }\n .modal-footer button.primary:hover { background: #2D4CB8; border-color: #2D4CB8; }\n\n .radio-item { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; cursor: pointer; font-size: 13px; color: #606266; }\n .radio-item:last-child { margin-bottom: 0; }\n\n .inline-actions { display: inline-flex; align-items: center; gap: 12px; flex-wrap: wrap; }\n .add-menu-wrap { position: relative; display: inline-flex; }\n .add-menu {\n position: absolute; top: calc(100% + 6px); left: 0; z-index: 50;\n display: grid; grid-template-columns: repeat(2, minmax(84px, 1fr)); gap: 8px;\n min-width: 196px; padding: 10px; background: #fff; border: 1px solid #e4e7ed;\n border-radius: 6px; box-shadow: 0 8px 20px rgba(0,0,0,.12);\n }\n .add-item {\n display: inline-flex; align-items: center; justify-content: center;\n min-height: 30px; padding: 0 10px; border: 1px solid #dcdfe6; border-radius: 4px;\n background: #fff; color: #606266; font-size: 12px; cursor: pointer; transition: all .2s;\n }\n .add-item:hover { color: #3D61E3; border-color: #3D61E3; background: #ecf5ff; }\n `\n\n @property({ type: Boolean, attribute: 'is-edit' }) 'is-edit' = false\n @property({ type: Boolean, attribute: 'is-set' }) 'is-set' = false\n @property({ type: Boolean, attribute: 'is-key' }) 'is-key' = false\n @property({ type: Number, attribute: 'answer-check-type' }) 'answer-check-type' = 1\n @property({ type: Boolean, attribute: 'show-other-option' }) 'show-other-option' = false\n @property({ type: Boolean, attribute: 'show-answer-setting' }) 'show-answer-setting' = false\n @property({ type: Boolean, attribute: 'show-key' }) 'show-key' = false\n @property({ type: Boolean, attribute: 'show-rich-text' }) 'show-rich-text' = false\n @property({ type: Boolean, attribute: 'hide-add-rich-text' }) 'hide-add-rich-text' = false\n @property({ type: Boolean, attribute: 'show-delete-action' }) 'show-delete-action' = true\n @property({ type: Boolean, attribute: 'show-save-action' }) 'show-save-action' = true\n @property({ type: Boolean, attribute: 'page-end' }) 'page-end' = false\n @property({ type: Boolean, attribute: 'show-move' }) 'show-move' = false\n @property({ type: Boolean, attribute: 'show-add' }) 'show-add' = true\n @property({ type: Boolean, attribute: 'show-jump' }) 'show-jump' = false\n @property({ type: Number, attribute: 'exam-answer-relation-type' }) 'exam-answer-relation-type' = 0\n\n @state() private _modalOpen = false\n @state() private _currentCheckType = 1\n @state() private _addMenuOpen = false\n\n connectedCallback() {\n super.connectedCallback()\n document.addEventListener('click', this._handleDocumentClick)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n document.removeEventListener('click', this._handleDocumentClick)\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has('answer-check-type')) {\n this._currentCheckType = this['answer-check-type']\n }\n }\n\n private _handleDocumentClick = (e: MouseEvent) => {\n const path = e.composedPath()\n const wrap = this.shadowRoot?.querySelector('.add-menu-wrap')\n if (wrap && !path.includes(wrap)) {\n this._addMenuOpen = false\n }\n }\n\n private _emit(name: string, detail?: unknown) {\n this.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, detail: detail ?? null }))\n }\n\n private get _answerText() {\n return answerTextList.find(i => i.value === this['answer-check-type'])?.label ?? ''\n }\n\n private get _showAnswerSetting() {\n return this['show-other-option'] || this['show-answer-setting']\n }\n\n private get _showKey() {\n return this['show-other-option'] || this['show-key']\n }\n\n private _renderEditMode() {\n return html`\n <div class=\"left\">\n <span class=\"inline-actions\">\n ${this['show-add']\n ? html`\n <span class=\"add-menu-wrap\">\n <span class=\"link-btn\" @click=${() => { this._addMenuOpen = !this._addMenuOpen }}>在此题后加入新题</span>\n ${this._renderAddMenu()}\n </span>\n `\n : ''}\n ${!this['hide-add-rich-text']\n ? html`\n <span class=\"link-btn\" @click=${() => this._emit('on-show-rich-text')}>\n ${this['show-rich-text'] ? '删除题目描述(图文)' : '+添加题目描述(图文)'}\n </span>\n `\n : ''}\n ${this['show-jump']\n ? html`\n <span class=\"link-btn\" @click=${() => this._emit('jump')}>${this['is-set'] ? '编辑跳题逻辑' : '设置跳题逻辑'}</span>\n `\n : ''}\n ${this._showAnswerSetting\n ? html`\n <span class=\"link-btn\" @click=${() => { this._modalOpen = true }}>答题设置</span>\n `\n : ''}\n ${this._showKey\n ? html`\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" .checked=${this['is-key']} @change=${(e: Event) => this._emit('set-key', { value: (e.target as HTMLInputElement).checked })} />\n 核心题\n </label>\n `\n : ''}\n </span>\n </div>\n <div class=\"right\">\n ${this['show-delete-action']\n ? html`<button class=\"text-btn text-btn--danger btn-margin\" @click=${() => this._emit('delete')}>删除</button>`\n : ''}\n ${this['show-save-action']\n ? html`<button class=\"text-btn text-btn--primary\" @click=${() => this._emit('save')}>完成编辑</button>`\n : ''}\n </div>\n `\n }\n\n private _renderViewMode() {\n return html`\n <div class=\"left\">\n <span class=\"inline-actions\">\n ${this._showKey\n ? html`\n <label class=\"checkbox-label disabled\">\n <input type=\"checkbox\" disabled .checked=${this['is-key']} /> 核心题\n </label>\n `\n : ''}\n ${this._showAnswerSetting\n ? html`\n <span class=\"answer-text\">${this._answerText}</span>\n `\n : ''}\n ${this['show-add']\n ? html`\n <span class=\"add-menu-wrap\">\n <span class=\"link-btn\" @click=${() => { this._addMenuOpen = !this._addMenuOpen }}>在此题后加入新题</span>\n ${this._renderAddMenu()}\n </span>\n `\n : ''}\n ${this['show-jump']\n ? html`\n <span class=\"link-btn\" @click=${() => this._emit('jump')}>${this['is-set'] ? '编辑跳题逻辑' : '设置跳题逻辑'}</span>\n `\n : ''}\n </span>\n </div>\n <div class=\"right\">\n ${!this['is-set'] && this['show-move']\n ? html`\n <button class=\"text-btn text-btn--default\" @click=${() => this._emit('move', 'up')}>上移</button>\n <button class=\"text-btn text-btn--default btn-margin\" @click=${() => this._emit('move', 'down')}>下移</button>\n `\n : ''}\n ${!this['is-set'] && this['show-delete-action']\n ? html`<button class=\"text-btn text-btn--danger btn-margin\" @click=${() => this._emit('delete')}>删除</button>`\n : ''}\n ${!this['page-end'] && !this['is-set']\n ? html`\n <button class=\"text-btn text-btn--default\" @click=${() => this._emit('edit')}>编辑</button>\n `\n : ''}\n </div>\n `\n }\n\n private _renderModal() {\n if (!this._modalOpen) { return '' }\n return html`\n <div class=\"modal-backdrop\" @click=${() => { this._modalOpen = false }}>\n <div class=\"modal\" @click=${(e: Event) => e.stopPropagation()}>\n <div class=\"modal-header\">\n <span class=\"modal-title\">答题设置</span>\n <button class=\"modal-close\" @click=${() => { this._modalOpen = false }}>&#x2715;</button>\n </div>\n <div class=\"modal-body\">\n ${answerTextList.map(item => html`\n <label class=\"radio-item\">\n <input type=\"radio\" name=\"answer-check-type\" .value=${String(item.value)}\n .checked=${this._currentCheckType === item.value}\n @change=${() => { this._currentCheckType = item.value }} />\n ${item.label}\n </label>\n `)}\n </div>\n <div class=\"modal-footer\">\n <button @click=${() => { this._modalOpen = false }}>取消</button>\n <button class=\"primary\" @click=${() => {\n this._emit('set-answer-setting', { value: this._currentCheckType })\n this._modalOpen = false\n }}>保存</button>\n </div>\n </div>\n </div>\n `\n }\n\n private _renderAddMenu() {\n if (!this._addMenuOpen) { return '' }\n return html`\n <div class=\"add-menu\">\n ${addSubjectOptions.map(item => html`\n <button class=\"add-item\" @click=${() => {\n this._addMenuOpen = false\n this._emit('add', item.type)\n }}>${item.label}</button>\n `)}\n </div>\n `\n }\n\n render() {\n return html`\n <div class=\"action ${this['is-edit'] ? 'active' : ''}\">\n ${this['is-edit'] ? this._renderEditMode() : this._renderViewMode()}\n ${this['is-set'] ? html`<div class=\"has-set\">*此题设置了跳题逻辑</div>` : ''}\n </div>\n ${this._renderModal()}\n `\n }\n}\n\nexport function register() {}\n"],"names":["answerTextList","value","label","addSubjectOptions","type","QxsSubjectAction","LitElement","constructor","super","arguments","this","_modalOpen","_currentCheckType","_addMenuOpen","_handleDocumentClick","e","path","composedPath","wrap","shadowRoot","querySelector","includes","connectedCallback","document","addEventListener","disconnectedCallback","removeEventListener","updated","changed","has","_emit","name","detail","dispatchEvent","CustomEvent","bubbles","composed","_answerText","find","i","_showAnswerSetting","_showKey","_renderEditMode","html","_renderAddMenu","target","checked","_renderViewMode","_renderModal","stopPropagation","map","item","String","render","styles","css","__decorateClass","property","Boolean","attribute","prototype","Number","state","safeCustomElement"],"mappings":"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"}
1
+ {"version":3,"file":"action.cjs","sources":["../../../../packages/components-wc/src/subject/action.ts"],"sourcesContent":["import { css, html, LitElement } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { safeCustomElement } from '../base/define'\nimport { subjectControlResetStyles } from './shared-styles'\n\nconst answerTextList = [\n { value: 2, label: '必须全部都是支持选项,方可下一步' },\n { value: 1, label: '无需判断是否是支持选项' },\n { value: 3, label: '包含全部支持选项,即可下一步' },\n]\n\nconst addSubjectOptions = [\n { type: 'single', label: '单选题' },\n { type: 'multiple', label: '多选题' },\n { type: 'blank_fill', label: '填空题' },\n { type: 'text_fill', label: '问答题' },\n { type: 'scale', label: '量表题' },\n { type: 'sort', label: '排序题' },\n { type: 'page_end', label: '分页符' },\n]\n\n@safeCustomElement('qxs-subject-action')\nexport class QxsSubjectAction extends LitElement {\n static styles = [subjectControlResetStyles, css`\n :host { display: block; font-family: inherit; font-size: 12px; }\n\n .action { display: flex; justify-content: space-between; align-items: center; padding: 10px 0; flex-wrap: wrap; gap: 8px; }\n .action.active { background: transparent; }\n .left { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }\n .right { display: flex; align-items: center; gap: 4px; }\n\n .action-icon {\n display: inline-flex; align-items: center; justify-content: center;\n width: 32px; height: 32px; font-size: 18px; color: #303133;\n cursor: pointer; border-radius: 6px; border: 1px solid #dcdfe6;\n background: #fff; transition: all 0.2s;\n }\n .action-icon:hover { color: #3D61E3; border-color: #3D61E3; background: #ecf5ff; }\n .action-icon--danger:hover { color: #f56c6c; border-color: #f56c6c; background: #fef0f0; }\n .action-icon:disabled { color: #c0c4cc; cursor: not-allowed; opacity: 0.6; }\n\n .text-btn {\n display: inline-flex; align-items: center; gap: 4px;\n padding: 6px 12px; font-size: 12px; border-radius: 3px;\n cursor: pointer; border: 1px solid; transition: all 0.2s;\n }\n .text-btn--primary { background: #3D61E3; border-color: #3D61E3; color: #fff; }\n .text-btn--primary:hover { background: #2D4CB8; border-color: #2D4CB8; }\n .text-btn--default { background: #fff; border-color: #dcdfe6; color: #606266; }\n .text-btn--default:hover { color: #3D61E3; border-color: #a0cfff; }\n .text-btn--danger { background: #f56c6c; border-color: #f56c6c; color: #fff; }\n .text-btn--danger:hover { background: #e05252; border-color: #e05252; }\n\n .link-btn { background: none; border: none; color: #3D61E3; cursor: pointer; font-size: 12px; }\n .link-btn:hover { color: #2D4CB8; }\n\n .checkbox-label { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; color: #606266; user-select: none; font-size: 12px; }\n .checkbox-label.disabled { cursor: not-allowed; opacity: 0.6; }\n .has-set { display: flex; align-items: center; font-size: 12px; color: #bbb; }\n .answer-text { font-size: 11px; color: #909399; max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\n .btn-margin { margin-right: 10px; }\n\n .modal-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.5); z-index: 2000; display: flex; align-items: center; justify-content: center; }\n .modal { background: #fff; border-radius: 4px; min-width: 360px; max-width: 460px; box-shadow: 0 12px 32px rgba(0,0,0,.1); }\n .modal-header { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px 12px; border-bottom: 1px solid #e4e7ed; }\n .modal-title { font-size: 14px; font-weight: 600; color: #303133; }\n .modal-close { background: none; border: none; font-size: 16px; cursor: pointer; color: #909399; padding: 0; line-height: 1; }\n .modal-close:hover { color: #3D61E3; }\n .modal-body { padding: 20px; }\n .modal-footer { display: flex; justify-content: flex-end; gap: 8px; padding: 12px 20px; border-top: 1px solid #e4e7ed; }\n .modal-footer button { padding: 6px 16px; font-size: 12px; border-radius: 3px; cursor: pointer; border: 1px solid #dcdfe6; background: #fff; color: #606266; }\n .modal-footer button:hover { color: #3D61E3; border-color: #a0cfff; }\n .modal-footer button.primary { background: #3D61E3; border-color: #3D61E3; color: #fff; }\n .modal-footer button.primary:hover { background: #2D4CB8; border-color: #2D4CB8; }\n\n .radio-item { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; cursor: pointer; font-size: 13px; color: #606266; }\n .radio-item:last-child { margin-bottom: 0; }\n\n .inline-actions { display: inline-flex; align-items: center; gap: 12px; flex-wrap: wrap; }\n .add-menu-wrap { position: relative; display: inline-flex; }\n .add-menu {\n position: absolute; top: calc(100% + 6px); left: 0; z-index: 50;\n display: grid; grid-template-columns: repeat(2, minmax(84px, 1fr)); gap: 8px;\n min-width: 196px; padding: 10px; background: #fff; border: 1px solid #e4e7ed;\n border-radius: 6px; box-shadow: 0 8px 20px rgba(0,0,0,.12);\n }\n .add-item {\n display: inline-flex; align-items: center; justify-content: center;\n min-height: 30px; padding: 0 10px; border: 1px solid #dcdfe6; border-radius: 4px;\n background: #fff; color: #606266; font-size: 12px; cursor: pointer; transition: all .2s;\n }\n .add-item:hover { color: #3D61E3; border-color: #3D61E3; background: #ecf5ff; }\n `]\n\n @property({ type: Boolean, attribute: 'is-edit' }) 'is-edit' = false\n @property({ type: Boolean, attribute: 'is-set' }) 'is-set' = false\n @property({ type: Boolean, attribute: 'is-key' }) 'is-key' = false\n @property({ type: Number, attribute: 'answer-check-type' }) 'answer-check-type' = 1\n @property({ type: Boolean, attribute: 'show-other-option' }) 'show-other-option' = false\n @property({ type: Boolean, attribute: 'show-answer-setting' }) 'show-answer-setting' = false\n @property({ type: Boolean, attribute: 'show-key' }) 'show-key' = false\n @property({ type: Boolean, attribute: 'show-rich-text' }) 'show-rich-text' = false\n @property({ type: Boolean, attribute: 'hide-add-rich-text' }) 'hide-add-rich-text' = false\n @property({ type: Boolean, attribute: 'show-delete-action' }) 'show-delete-action' = true\n @property({ type: Boolean, attribute: 'show-save-action' }) 'show-save-action' = true\n @property({ type: Boolean, attribute: 'page-end' }) 'page-end' = false\n @property({ type: Boolean, attribute: 'show-move' }) 'show-move' = false\n @property({ type: Boolean, attribute: 'show-add' }) 'show-add' = true\n @property({ type: Boolean, attribute: 'show-jump' }) 'show-jump' = false\n @property({ type: Number, attribute: 'exam-answer-relation-type' }) 'exam-answer-relation-type' = 0\n\n @state() private _modalOpen = false\n @state() private _currentCheckType = 1\n @state() private _addMenuOpen = false\n\n connectedCallback() {\n super.connectedCallback()\n document.addEventListener('click', this._handleDocumentClick)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n document.removeEventListener('click', this._handleDocumentClick)\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has('answer-check-type')) {\n this._currentCheckType = this['answer-check-type']\n }\n }\n\n private _handleDocumentClick = (e: MouseEvent) => {\n const path = e.composedPath()\n const wrap = this.shadowRoot?.querySelector('.add-menu-wrap')\n if (wrap && !path.includes(wrap)) {\n this._addMenuOpen = false\n }\n }\n\n private _emit(name: string, detail?: unknown) {\n this.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, detail: detail ?? null }))\n }\n\n private get _answerText() {\n return answerTextList.find(i => i.value === this['answer-check-type'])?.label ?? ''\n }\n\n private get _showAnswerSetting() {\n return this['show-other-option'] || this['show-answer-setting']\n }\n\n private get _showKey() {\n return this['show-other-option'] || this['show-key']\n }\n\n private _renderEditMode() {\n return html`\n <div class=\"left\">\n <span class=\"inline-actions\">\n ${this['show-add']\n ? html`\n <span class=\"add-menu-wrap\">\n <span class=\"link-btn\" @click=${() => { this._addMenuOpen = !this._addMenuOpen }}>在此题后加入新题</span>\n ${this._renderAddMenu()}\n </span>\n `\n : ''}\n ${!this['hide-add-rich-text']\n ? html`\n <span class=\"link-btn\" @click=${() => this._emit('on-show-rich-text')}>\n ${this['show-rich-text'] ? '删除题目描述(图文)' : '+添加题目描述(图文)'}\n </span>\n `\n : ''}\n ${this['show-jump']\n ? html`\n <span class=\"link-btn\" @click=${() => this._emit('jump')}>${this['is-set'] ? '编辑跳题逻辑' : '设置跳题逻辑'}</span>\n `\n : ''}\n ${this._showAnswerSetting\n ? html`\n <span class=\"link-btn\" @click=${() => { this._modalOpen = true }}>答题设置</span>\n `\n : ''}\n ${this._showKey\n ? html`\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" .checked=${this['is-key']} @change=${(e: Event) => this._emit('set-key', { value: (e.target as HTMLInputElement).checked })} />\n 核心题\n </label>\n `\n : ''}\n </span>\n </div>\n <div class=\"right\">\n ${this['show-delete-action']\n ? html`<button class=\"text-btn text-btn--danger btn-margin\" @click=${() => this._emit('delete')}>删除</button>`\n : ''}\n ${this['show-save-action']\n ? html`<button class=\"text-btn text-btn--primary\" @click=${() => this._emit('save')}>完成编辑</button>`\n : ''}\n </div>\n `\n }\n\n private _renderViewMode() {\n return html`\n <div class=\"left\">\n <span class=\"inline-actions\">\n ${this._showKey\n ? html`\n <label class=\"checkbox-label disabled\">\n <input type=\"checkbox\" disabled .checked=${this['is-key']} /> 核心题\n </label>\n `\n : ''}\n ${this._showAnswerSetting\n ? html`\n <span class=\"answer-text\">${this._answerText}</span>\n `\n : ''}\n ${this['show-add']\n ? html`\n <span class=\"add-menu-wrap\">\n <span class=\"link-btn\" @click=${() => { this._addMenuOpen = !this._addMenuOpen }}>在此题后加入新题</span>\n ${this._renderAddMenu()}\n </span>\n `\n : ''}\n ${this['show-jump']\n ? html`\n <span class=\"link-btn\" @click=${() => this._emit('jump')}>${this['is-set'] ? '编辑跳题逻辑' : '设置跳题逻辑'}</span>\n `\n : ''}\n </span>\n </div>\n <div class=\"right\">\n ${!this['is-set'] && this['show-move']\n ? html`\n <button class=\"text-btn text-btn--default\" @click=${() => this._emit('move', 'up')}>上移</button>\n <button class=\"text-btn text-btn--default btn-margin\" @click=${() => this._emit('move', 'down')}>下移</button>\n `\n : ''}\n ${!this['is-set'] && this['show-delete-action']\n ? html`<button class=\"text-btn text-btn--danger btn-margin\" @click=${() => this._emit('delete')}>删除</button>`\n : ''}\n ${!this['page-end'] && !this['is-set']\n ? html`\n <button class=\"text-btn text-btn--default\" @click=${() => this._emit('edit')}>编辑</button>\n `\n : ''}\n </div>\n `\n }\n\n private _renderModal() {\n if (!this._modalOpen) { return '' }\n return html`\n <div class=\"modal-backdrop\" @click=${() => { this._modalOpen = false }}>\n <div class=\"modal\" @click=${(e: Event) => e.stopPropagation()}>\n <div class=\"modal-header\">\n <span class=\"modal-title\">答题设置</span>\n <button class=\"modal-close\" @click=${() => { this._modalOpen = false }}>&#x2715;</button>\n </div>\n <div class=\"modal-body\">\n ${answerTextList.map(item => html`\n <label class=\"radio-item\">\n <input type=\"radio\" name=\"answer-check-type\" .value=${String(item.value)}\n .checked=${this._currentCheckType === item.value}\n @change=${() => { this._currentCheckType = item.value }} />\n ${item.label}\n </label>\n `)}\n </div>\n <div class=\"modal-footer\">\n <button @click=${() => { this._modalOpen = false }}>取消</button>\n <button class=\"primary\" @click=${() => {\n this._emit('set-answer-setting', { value: this._currentCheckType })\n this._modalOpen = false\n }}>保存</button>\n </div>\n </div>\n </div>\n `\n }\n\n private _renderAddMenu() {\n if (!this._addMenuOpen) { return '' }\n return html`\n <div class=\"add-menu\">\n ${addSubjectOptions.map(item => html`\n <button class=\"add-item\" @click=${() => {\n this._addMenuOpen = false\n this._emit('add', item.type)\n }}>${item.label}</button>\n `)}\n </div>\n `\n }\n\n render() {\n return html`\n <div class=\"action ${this['is-edit'] ? 'active' : ''}\">\n ${this['is-edit'] ? this._renderEditMode() : this._renderViewMode()}\n ${this['is-set'] ? html`<div class=\"has-set\">*此题设置了跳题逻辑</div>` : ''}\n </div>\n ${this._renderModal()}\n `\n }\n}\n\nexport function register() {}\n"],"names":["answerTextList","value","label","addSubjectOptions","type","QxsSubjectAction","LitElement","constructor","super","arguments","this","_modalOpen","_currentCheckType","_addMenuOpen","_handleDocumentClick","e","path","composedPath","wrap","shadowRoot","querySelector","includes","connectedCallback","document","addEventListener","disconnectedCallback","removeEventListener","updated","changed","has","_emit","name","detail","dispatchEvent","CustomEvent","bubbles","composed","_answerText","find","i","_showAnswerSetting","_showKey","_renderEditMode","html","_renderAddMenu","target","checked","_renderViewMode","_renderModal","stopPropagation","map","item","String","render","styles","subjectControlResetStyles","css","__decorateClass","property","Boolean","attribute","prototype","Number","state","safeCustomElement"],"mappings":"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"}