Skip to content

Commit 429abcc

Browse files
feat: remove unused traits css, methods and data
These were replaced a long time ago by specifying them in the template
1 parent d7bae3e commit 429abcc

File tree

2 files changed

+24
-92
lines changed

2 files changed

+24
-92
lines changed

ipyvue/VueTemplateWidget.py

+24-3
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,18 @@ def to_ref_structure(obj, path):
8787
return to_ref_structure(data, [])
8888

8989

90+
class TraitNotAvailable(Any):
91+
def __init__(self, on_use_msg):
92+
self.on_use_msg = on_use_msg
93+
super().__init__()
94+
95+
def get(self, *ignored):
96+
raise AttributeError(self.on_use_msg(self.name))
97+
98+
def set(self, *ignored):
99+
raise AttributeError(AttributeError(self.on_use_msg(self.name)))
100+
101+
90102
class VueTemplate(DOMWidget, Events):
91103

92104
class_component_serialization = {
@@ -116,11 +128,20 @@ class VueTemplate(DOMWidget, Events):
116128
sync=True, **widget_serialization
117129
)
118130

119-
css = Unicode(None, allow_none=True).tag(sync=True)
131+
css = TraitNotAvailable(
132+
lambda name: "The css trait is no longer available in v3, please use the \
133+
template <style> tag instead"
134+
)
120135

121-
methods = Unicode(None, allow_none=True).tag(sync=True)
136+
methods = TraitNotAvailable(
137+
lambda name: "The methods trait is no longer available in v3, please use \
138+
{ methods: ...} in the template <script> tag instead"
139+
)
122140

123-
data = Unicode(None, allow_none=True).tag(sync=True)
141+
data = TraitNotAvailable(
142+
lambda name: "The data trait is no longer available in v3, please use \
143+
{ data(): ...} in the template <script> tag instead"
144+
)
124145

125146
events = List(Unicode(), allow_none=True).tag(sync=True)
126147

js/src/VueTemplateRenderer.js

-89
Original file line numberDiff line numberDiff line change
@@ -27,101 +27,12 @@ function createComponentObject(model, parentView) {
2727
const isTemplateModel = model.get('template') instanceof TemplateModel;
2828
const templateModel = isTemplateModel ? model.get('template') : model;
2929
const template = templateModel.get('template');
30-
// const vuefile = readVueFile(template);
31-
//
32-
// const css = model.get('css') || (vuefile.STYLE && vuefile.STYLE.content);
33-
// const cssId = (vuefile.STYLE && vuefile.STYLE.id);
34-
//
35-
// if (css) {
36-
// if (cssId) {
37-
// const prefixedCssId = `ipyvue-${cssId}`;
38-
// let style = document.getElementById(prefixedCssId);
39-
// if (!style) {
40-
// style = document.createElement('style');
41-
// style.id = prefixedCssId;
42-
// document.head.appendChild(style);
43-
// }
44-
// if (style.innerHTML !== css) {
45-
// style.innerHTML = css;
46-
// }
47-
// } else {
48-
// const style = document.createElement('style');
49-
// style.id = model.cid;
50-
// style.innerHTML = css;
51-
// document.head.appendChild(style);
52-
// parentView.once('remove', () => {
53-
// document.head.removeChild(style);
54-
// });
55-
// }
56-
// }
57-
58-
// eslint-disable-next-line no-new-func
59-
// const methods = model.get('methods') ? Function(`return ${model.get('methods').replace('\n', ' ')}`)() : {};
60-
// eslint-disable-next-line no-new-func
61-
// const data = model.get('data') ? Function(`return ${model.get('data').replace('\n', ' ')}`)() : {};
6230

6331
const componentEntries = Object.entries(model.get('components') || {});
6432
const instanceComponents = componentEntries.filter(([, v]) => v instanceof WidgetModel);
6533
const classComponents = componentEntries.filter(([, v]) => !(v instanceof WidgetModel) && !(typeof v === 'string'));
6634
const fullVueComponents = componentEntries.filter(([, v]) => typeof v === 'string');
6735

68-
// function callVueFn(name, this_) {
69-
// if (vuefile.SCRIPT && vuefile.SCRIPT[name]) {
70-
// vuefile.SCRIPT[name].bind(this_)();
71-
// }
72-
// }
73-
//
74-
// return {
75-
// inject: ['viewCtx'],
76-
// data() {
77-
// // data that is only used in the template, and not synced with the backend/model
78-
// const dataTemplate = (vuefile.SCRIPT && vuefile.SCRIPT.data && vuefile.SCRIPT.data()) || {};
79-
// return { ...data, ...dataTemplate, ...createDataMapping(model) };
80-
// },
81-
// beforeCreate() {
82-
// callVueFn('beforeCreate', this);
83-
// },
84-
// created() {
85-
// this.__onTemplateChange = () => {
86-
// this.$root.$forceUpdate();
87-
// };
88-
// templateModel.on('change:template', this.__onTemplateChange);
89-
// addModelListeners(model, this);
90-
// callVueFn('created', this);
91-
// },
92-
// watch: createWatches(model, parentView, vuefile.SCRIPT && vuefile.SCRIPT.watch),
93-
// methods: {
94-
// ...vuefile.SCRIPT && vuefile.SCRIPT.methods,
95-
// ...methods,
96-
// ...createMethods(model, parentView),
97-
// },
98-
// components: {
99-
// ...createInstanceComponents(instanceComponents, parentView),
100-
// ...createClassComponents(classComponents, model, parentView),
101-
// ...createFullVueComponents(fullVueComponents),
102-
// },
103-
// computed: { ...vuefile.SCRIPT && vuefile.SCRIPT.computed, ...aliasRefProps(model) },
104-
// template: vuefile.TEMPLATE || template,
105-
// beforeMount() {
106-
// callVueFn('beforeMount', this);
107-
// },
108-
// mounted() {
109-
// callVueFn('mounted', this);
110-
// },
111-
// beforeUpdate() {
112-
// callVueFn('beforeUpdate', this);
113-
// },
114-
// updated() {
115-
// callVueFn('updated', this);
116-
// },
117-
// beforeDestroy() {
118-
// templateModel.off('change:template', this.__onTemplateChange);
119-
// callVueFn('beforeDestroy', this);
120-
// },
121-
// destroyed() {
122-
// callVueFn('destroyed', this);
123-
// },
124-
// };
12536
return getAsyncComponent(
12637
template,
12738
{

0 commit comments

Comments
 (0)